From 29eaa06ff96b388769e389f015b085bbb37f7a5d Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Thu, 6 Nov 2025 15:17:18 +0530 Subject: [PATCH 01/21] fix: emandate issue --- src/app/eMandate/login/route.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index d1e41db..ff094f3 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -15,11 +15,15 @@ export async function POST(req: Request) { return NextResponse.json({ error: "Missing data" }, { status: 400 }); } const encodedData = String(data); - // Redirect browser to page UI with data - console.log ("Return to the Urls."); - return NextResponse.redirect( - new URL(`/eMandate/login/page?data=${encodedData}`, req.url) - ); + const forwardedHost = + req.headers.get("x-forwarded-host") || "netbankingtest.kccb.in"; + const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; + + const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; + + console.log("Redirecting to:", redirectUrl); + return NextResponse.redirect(redirectUrl); + } catch (error) { console.error("Error handling POST:", error); return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); From dca5c940301b8595c9460d122bdfd9a67fd2c3f6 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Thu, 6 Nov 2025 17:08:30 +0530 Subject: [PATCH 02/21] fix :eMandate --- src/app/eMandate/login/route.ts | 71 ++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index ff094f3..83f4dad 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -1,31 +1,72 @@ +// import { NextResponse } from "next/server"; +// export async function POST(req: Request) { +// try { +// const formData = await req.formData(); +// const data = formData.get("data"); +// const mandateReqDoc = formData.get("mandateReqDoc"); +// const mndtType = formData.get("mndtType"); +// // const { searchParams } = new URL(req.url); +// // const data = searchParams.get("data"); +// // const mandateReqDoc = searchParams.get("mandateReqDoc"); +// // const mndtType = searchParams.get("mndtType"); + +// console.log("Received from SoftTech:", { data, mandateReqDoc, mndtType }); +// if (!data) { +// return NextResponse.json({ error: "Missing data" }, { status: 400 }); +// } +// const encodedData = String(data); +// const forwardedHost = +// req.headers.get("x-forwarded-host") || "netbankingtest.kccb.in"; +// const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; + +// const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; + +// console.log("Redirecting to:", redirectUrl); +// return NextResponse.redirect(redirectUrl); + +// } catch (error) { +// console.error("Error handling POST:", error); +// return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); +// } +// } + import { NextResponse } from "next/server"; + export async function POST(req: Request) { try { const formData = await req.formData(); const data = formData.get("data"); const mandateReqDoc = formData.get("mandateReqDoc"); const mndtType = formData.get("mndtType"); - // const { searchParams } = new URL(req.url); - // const data = searchParams.get("data"); - // const mandateReqDoc = searchParams.get("mandateReqDoc"); - // const mndtType = searchParams.get("mndtType"); - console.log("Received from SoftTech:", { data, mandateReqDoc, mndtType }); - if (!data) { - return NextResponse.json({ error: "Missing data" }, { status: 400 }); - } - const encodedData = String(data); - const forwardedHost = - req.headers.get("x-forwarded-host") || "netbankingtest.kccb.in"; + const forwardedHost = req.headers.get("x-forwarded-host") || req.headers.get("host"); const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; - const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; + const params = new URLSearchParams({ + data: String(data), + mandateReqDoc: mandateReqDoc ? String(mandateReqDoc) : "", + mndtType: mndtType ? String(mndtType) : "", + }); - console.log("Redirecting to:", redirectUrl); - return NextResponse.redirect(redirectUrl); - + const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?${params.toString()}`; + + const response = NextResponse.redirect(redirectUrl, 303); // use 303 instead of 302 + + response.headers.set("Access-Control-Allow-Origin", "*"); + response.headers.set("Access-Control-Allow-Methods", "POST, OPTIONS"); + response.headers.set("Access-Control-Allow-Headers", "Content-Type, Origin"); + + return response; } catch (error) { console.error("Error handling POST:", error); return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); } } + +export async function OPTIONS() { + const res = new NextResponse(null, { status: 204 }); + res.headers.set("Access-Control-Allow-Origin", "*"); + res.headers.set("Access-Control-Allow-Methods", "POST, OPTIONS"); + res.headers.set("Access-Control-Allow-Headers", "Content-Type, Origin"); + return res; +} From 7b23ec532f0e5f5b92be53cf32180536dd4a22ac Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Thu, 6 Nov 2025 17:18:17 +0530 Subject: [PATCH 03/21] fix: eMandate --- src/app/eMandate/login/route.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index 83f4dad..cfb5af0 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -39,16 +39,12 @@ export async function POST(req: Request) { const mandateReqDoc = formData.get("mandateReqDoc"); const mndtType = formData.get("mndtType"); + console.log("Received from SoftTech:", { data, mandateReqDoc, mndtType }); const forwardedHost = req.headers.get("x-forwarded-host") || req.headers.get("host"); const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; + const encodedData = String(data); - const params = new URLSearchParams({ - data: String(data), - mandateReqDoc: mandateReqDoc ? String(mandateReqDoc) : "", - mndtType: mndtType ? String(mndtType) : "", - }); - - const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?${params.toString()}`; + const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; const response = NextResponse.redirect(redirectUrl, 303); // use 303 instead of 302 From eb8f5a7931b8dd60773cb46ade776a5503084390 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Thu, 6 Nov 2025 17:21:28 +0530 Subject: [PATCH 04/21] fix: EMandate --- src/app/eMandate/login/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index cfb5af0..ee427f7 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -45,7 +45,7 @@ export async function POST(req: Request) { const encodedData = String(data); const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; - + console.log("redirect urls:", redirectUrl); const response = NextResponse.redirect(redirectUrl, 303); // use 303 instead of 302 response.headers.set("Access-Control-Allow-Origin", "*"); From 6de3508021aba992e84021bbf0456ff44443be4c Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Wed, 12 Nov 2025 12:59:33 +0530 Subject: [PATCH 05/21] feat : connect api for e mandate validation --- src/app/eMandate/login/page/page.tsx | 20 +++++++++++++++++++- src/app/eMandate/login/route.ts | 11 ++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/app/eMandate/login/page/page.tsx b/src/app/eMandate/login/page/page.tsx index a20cff9..651c6be 100644 --- a/src/app/eMandate/login/page/page.tsx +++ b/src/app/eMandate/login/page/page.tsx @@ -21,7 +21,9 @@ function LoginEmandate() { const [isLogging, setIsLogging] = useState(false); const searchParams = useSearchParams(); const data = searchParams.get("data"); - const payload = searchParams.get("payload"); + const mandateReqDoc= searchParams.get("mandateReqDoc"); + const mndtType = searchParams.get("mndtType"); + // const payload = searchParams.get("payload"); // useEffect(() => { // if (payload) { @@ -39,6 +41,8 @@ function LoginEmandate() { if (data) { console.log("URL parameter 'data':", data); localStorage.setItem("Emendate_data", data); + localStorage.setItem("Emendate_req_doc", mandateReqDoc || ""); + localStorage.setItem("Emendate_type", mndtType || ""); } }, [data]); @@ -149,6 +153,20 @@ function LoginEmandate() { }); } else { + const response = await fetch('/api/e-mandate/validation', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Login-Type': 'eMandate', + }, + body: JSON.stringify({ + data: localStorage.getItem("Emendate_data"), + mandateRequest:localStorage.getItem("Emendate_req_doc"), + mandateType: localStorage.getItem("Emendate_type"), + }), + }); + const result = await response.json(); + console.log("Validate Result : ",result); router.push("/eMandate/mandate_page"); } } diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index ee427f7..a21ffd6 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -42,9 +42,14 @@ export async function POST(req: Request) { console.log("Received from SoftTech:", { data, mandateReqDoc, mndtType }); const forwardedHost = req.headers.get("x-forwarded-host") || req.headers.get("host"); const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; - const encodedData = String(data); - - const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; + // const encodedData = String(data); + // const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; + + const redirectUrl =`${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodeURIComponent( + String(data) + )}&mandateReqDoc=${encodeURIComponent(String(mandateReqDoc))}&mndtType=${encodeURIComponent( + String(mndtType) + )}`; console.log("redirect urls:", redirectUrl); const response = NextResponse.redirect(redirectUrl, 303); // use 303 instead of 302 From f1ff27ccf0b4ae406c2e7b13c6a3f5033f0acdc9 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Wed, 12 Nov 2025 13:49:54 +0530 Subject: [PATCH 06/21] fix: E mandate validation --- src/app/eMandate/login/page/page.tsx | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/app/eMandate/login/page/page.tsx b/src/app/eMandate/login/page/page.tsx index 651c6be..44254a4 100644 --- a/src/app/eMandate/login/page/page.tsx +++ b/src/app/eMandate/login/page/page.tsx @@ -21,7 +21,7 @@ function LoginEmandate() { const [isLogging, setIsLogging] = useState(false); const searchParams = useSearchParams(); const data = searchParams.get("data"); - const mandateReqDoc= searchParams.get("mandateReqDoc"); + const mandateReqDoc = searchParams.get("mandateReqDoc"); const mndtType = searchParams.get("mndtType"); // const payload = searchParams.get("payload"); @@ -153,21 +153,35 @@ function LoginEmandate() { }); } else { + console.log("Start to validate soft tech data"); const response = await fetch('/api/e-mandate/validation', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Login-Type': 'eMandate', + 'Authorization': `Bearer ${localStorage.getItem("mandate_token")}` }, body: JSON.stringify({ data: localStorage.getItem("Emendate_data"), - mandateRequest:localStorage.getItem("Emendate_req_doc"), + mandateRequest: localStorage.getItem("Emendate_req_doc"), mandateType: localStorage.getItem("Emendate_type"), }), }); const result = await response.json(); - console.log("Validate Result : ",result); - router.push("/eMandate/mandate_page"); + console.log("Validate Result : ", result); + if (response.ok) { + router.push("/eMandate/mandate_page"); + } + else { + console.log(result); + notifications.show({ + withBorder: true, + color: "red", + title: "Validation failed", + message: "Failed to validate.Please try again later.", + autoClose: 5000, + }); + } } } else { From c2c87f8c7175bfb3b8e0252f4479d59d9a23a237 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Wed, 12 Nov 2025 15:15:48 +0530 Subject: [PATCH 07/21] fix: E mandate Login and logout page --- src/app/eMandate/login/page/page.tsx | 370 +++++++++++++----------- src/app/eMandate/login/route.ts | 32 -- src/app/eMandate/logout/page.module.css | 30 ++ src/app/eMandate/logout/page.tsx | 92 ++++++ src/app/eMandate/mandate_page/page.tsx | 5 +- 5 files changed, 322 insertions(+), 207 deletions(-) create mode 100644 src/app/eMandate/logout/page.module.css create mode 100644 src/app/eMandate/logout/page.tsx diff --git a/src/app/eMandate/login/page/page.tsx b/src/app/eMandate/login/page/page.tsx index 44254a4..f6f564c 100644 --- a/src/app/eMandate/login/page/page.tsx +++ b/src/app/eMandate/login/page/page.tsx @@ -23,28 +23,28 @@ function LoginEmandate() { const data = searchParams.get("data"); const mandateReqDoc = searchParams.get("mandateReqDoc"); const mndtType = searchParams.get("mndtType"); - // const payload = searchParams.get("payload"); // useEffect(() => { - // if (payload) { - // try { - // const parsed = JSON.parse(decodeURIComponent(payload)); - // console.log("Received payload from SoftTech:", parsed); - // localStorage.setItem("Emandate_data", JSON.stringify(parsed)); - // } catch (e) { - // console.error("Failed to parse payload:", e); - // } + // if (data) { + // console.log("URL parameter 'data':", data); + // localStorage.setItem("Emendate_data", data); + // localStorage.setItem("Emendate_req_doc", mandateReqDoc || ""); + // localStorage.setItem("Emendate_type", mndtType || ""); // } - // }, [payload]); - + // }, [data]); useEffect(() => { - if (data) { - console.log("URL parameter 'data':", data); + if (data && mandateReqDoc && mndtType) { + console.log("eMandate parameters found"); localStorage.setItem("Emendate_data", data); - localStorage.setItem("Emendate_req_doc", mandateReqDoc || ""); - localStorage.setItem("Emendate_type", mndtType || ""); + localStorage.setItem("Emendate_req_doc", mandateReqDoc); + localStorage.setItem("Emendate_type", mndtType); + } else { + console.log("eMandate parameters missing — clearing localStorage"); + localStorage.removeItem("Emendate_data"); + localStorage.removeItem("Emendate_req_doc"); + localStorage.removeItem("Emendate_type"); } - }, [data]); + }, [data, mandateReqDoc, mndtType]); useEffect(() => { const loadCaptcha = async () => { @@ -54,7 +54,6 @@ function LoginEmandate() { loadCaptcha(); }, []); - const regenerateCaptcha = () => { // setCaptcha(generateCaptcha()); const loadCaptcha = async () => { @@ -208,47 +207,48 @@ function LoginEmandate() { } } - return ( - - {/* Main Screen */} -
- {/* Header */} + if (data && mandateReqDoc && mndtType) { + return ( + + {/* Main Screen */} +
+ {/* Header */} - - ebanking - - THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. - Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 - THE KANGRA CENTRAL - CO-OPERATIVE BANK LTD. + + ebanking + + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + THE KANGRA CENTRAL + CO-OPERATIVE BANK LTD. + - -
- {/* Movable text */} - - + {/* Movable text */} + - ⚠️ Always login to our Net Banking site directly or through Banks website. - ⚠️ Do not disclose your User Id and Password to any third party and keep Your User Id and Password strictly confidential. - ⚠️ KCC Bank never asks for User Id,Passwords and Pins through email or phone. - ⚠️ Be ware of Phishing mails with links to fake bank's websites asking for personal information are in circulation. - ⚠️ Please DO NOT Click on the links given in the emails asking for personal details like bank account number, user ID and password. - ⚠️ If you had shared your User Id and Password through such mails or links, please change your Password immediately. - ⚠️ Inform the Bank/branch in which your account is maintained for resetting your password. - - - + + - {/* Main */} - -
- ebanking -
- - + {/* Main */} + +
+ ebanking +
+ + +
+ + E-Mandate Login + + + { + const input = e.currentTarget.value.replace(/\D/g, ""); + if (input.length <= 11) SetCIF(input); + }} + withAsterisk + /> + SetPsw(e.currentTarget.value)} + withAsterisk + mt="sm" + /> + + + {captcha} + + + setInputCaptcha(e.currentTarget.value)} + withAsterisk + mt="sm" + /> + + +
+
+
+ + {/* Mobile layout */} + +
- + E-Mandate Login @@ -295,7 +353,9 @@ function LoginEmandate() { if (input.length <= 11) SetCIF(input); }} withAsterisk + mt="sm" /> + - - {captcha} - + + + {captcha} + + + +
-
- {/* Mobile layout */} - - -
- - E-Mandate Login - - - { - const input = e.currentTarget.value.replace(/\D/g, ""); - if (input.length <= 11) SetCIF(input); - }} - withAsterisk - mt="sm" - /> - - SetPsw(e.currentTarget.value)} - withAsterisk - mt="sm" - /> - - - - {captcha} - - - - - setInputCaptcha(e.currentTarget.value)} - withAsterisk - mt="sm" - /> - - - -
-
- - {/* Footer */} - - - © 2025 KCC Bank. All rights reserved. - - + {/* Footer */} + + + © 2025 KCC Bank. All rights reserved. + + +
+
+ ); + } + else { + return ( +
+ + ⚠️ Required data not found + + + Please access this page through the correct eMandate link. +
- - ); + ); + } } export default function Login() { diff --git a/src/app/eMandate/login/route.ts b/src/app/eMandate/login/route.ts index a21ffd6..aa69347 100644 --- a/src/app/eMandate/login/route.ts +++ b/src/app/eMandate/login/route.ts @@ -1,35 +1,3 @@ -// import { NextResponse } from "next/server"; -// export async function POST(req: Request) { -// try { -// const formData = await req.formData(); -// const data = formData.get("data"); -// const mandateReqDoc = formData.get("mandateReqDoc"); -// const mndtType = formData.get("mndtType"); -// // const { searchParams } = new URL(req.url); -// // const data = searchParams.get("data"); -// // const mandateReqDoc = searchParams.get("mandateReqDoc"); -// // const mndtType = searchParams.get("mndtType"); - -// console.log("Received from SoftTech:", { data, mandateReqDoc, mndtType }); -// if (!data) { -// return NextResponse.json({ error: "Missing data" }, { status: 400 }); -// } -// const encodedData = String(data); -// const forwardedHost = -// req.headers.get("x-forwarded-host") || "netbankingtest.kccb.in"; -// const forwardedProto = req.headers.get("x-forwarded-proto") || "https"; - -// const redirectUrl = `${forwardedProto}://${forwardedHost}/eMandate/login/page?data=${encodedData}`; - -// console.log("Redirecting to:", redirectUrl); -// return NextResponse.redirect(redirectUrl); - -// } catch (error) { -// console.error("Error handling POST:", error); -// return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }); -// } -// } - import { NextResponse } from "next/server"; export async function POST(req: Request) { diff --git a/src/app/eMandate/logout/page.module.css b/src/app/eMandate/logout/page.module.css new file mode 100644 index 0000000..d809df9 --- /dev/null +++ b/src/app/eMandate/logout/page.module.css @@ -0,0 +1,30 @@ +/* Header */ +.header { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 100; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; + background: linear-gradient(15deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%); +} + +.header-text { + flex: 1; +} + +/* Desktop header text */ +.desktop-text { + color: white; +} + +.mobile-text { + color: white; + display: none; +} + + + diff --git a/src/app/eMandate/logout/page.tsx b/src/app/eMandate/logout/page.tsx new file mode 100644 index 0000000..2976dac --- /dev/null +++ b/src/app/eMandate/logout/page.tsx @@ -0,0 +1,92 @@ +"use client"; +import { Text, Title, Box, Image } from "@mantine/core"; +import NextImage from "next/image"; +import logo from "@/app/image/logo1.jpg"; +import { Providers } from "@/app/providers"; +import styles from "./page.module.css"; +import { useEffect } from "react"; + +export default function Logout() { + useEffect(() => { + localStorage.removeItem("mandate_token"); + localStorage.removeItem("user_name"); + localStorage.removeItem("userMobNo"); + localStorage.removeItem("Emendate_data"); + localStorage.removeItem("Emendate_req_doc"); + localStorage.removeItem("Emendate_type"); + }, []); + + return ( + +
+ {/* Header */} + + ebanking + + + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + + THE KANGRA CENTRAL + + + CO-OPERATIVE BANK LTD. + + + + + {/* Centered Message */} +
+ + ✅ You have successfully logged out + + + Please access this eMandate login page through the correct eMandate link. + +
+ + {/* Footer */} + + © 2025 KCC Bank. All rights reserved. + +
+
+ ); +} diff --git a/src/app/eMandate/mandate_page/page.tsx b/src/app/eMandate/mandate_page/page.tsx index 0da4938..60b5b82 100644 --- a/src/app/eMandate/mandate_page/page.tsx +++ b/src/app/eMandate/mandate_page/page.tsx @@ -117,7 +117,10 @@ export default function MandatePage() { localStorage.removeItem("mandate_token"); localStorage.removeItem("user_name"); localStorage.removeItem("userMobNo"); - router.push("/eMandate/login"); + localStorage.removeItem("Emendate_data"); + localStorage.removeItem("Emendate_req_doc"); + localStorage.removeItem("Emendate_type"); + router.push("/eMandate/logout"); }; const handleFetchUserName = async () => { From e3c9458ace1baab80e225da21ebca3ffc8d3f468 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Tue, 18 Nov 2025 15:42:19 +0530 Subject: [PATCH 08/21] feat : add beneficiary api for inside bank --- .../add_beneficiary/addBeneficiaryOthers.tsx | 69 ++++++++++++------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx b/src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx index 02afe0d..9f75d19 100644 --- a/src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx +++ b/src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx @@ -145,20 +145,18 @@ export default function AddBeneficiaryOthers() { }); return; } - const trimmedIfsc = ifsccode.trim().toUpperCase(); - const isValidIfscCode = (code: string) => { - return /^[A-Z]{4}0[0-9]{6}$/.test(code); - }; - - if (!isValidIfscCode(trimmedIfsc)) { - notifications.show({ - title: "Invalid IFSC Code", - message: "Must be 11 characters: 4 uppercase letters, 0, then 6 digits (e.g., HDFC0123456)", - color: "red", - }); - return; - } + // const isValidIfscCode = (code: string) => { + // return /^[A-Z]{4}0[0-9]{6}$/.test(code); + // }; + // if (!isValidIfscCode(trimmedIfsc)) { + // notifications.show({ + // title: "Invalid IFSC Code", + // message: "Must be 11 characters: 4 uppercase letters, 0, then 6 digits (e.g., HDFC0123456)", + // color: "red", + // }); + // return; + // } if (accountNo.length < 10 || accountNo.length > 17) { notifications.show({ @@ -185,23 +183,46 @@ export default function AddBeneficiaryOthers() { try { setLoading(true); const token = localStorage.getItem("access_token"); - const response = await fetch(`/api/beneficiary/validate/outside-bank?accountNo=${accountNo}&ifscCode=${ifsccode}&remitterName=""`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - "X-Login-Type": "IB", - Authorization: `Bearer ${token}`, - }, - } - ); + let response; + // IF IFSC starts with "KACE" (within bank) + if (ifsccode.startsWith("KACE")) { + response = await fetch( + `/api/beneficiary/validate/within-bank?accountNumber=${accountNo}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + Authorization: `Bearer ${token}`, + }, + } + ); + } + // ELSE: other banks → keep your old API + else { + response = await fetch( + `/api/beneficiary/validate/outside-bank?accountNo=${accountNo}&ifscCode=${ifsccode}&remitterName=""`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + Authorization: `Bearer ${token}`, + }, + } + ); + } + const data = await response.json(); + if (response.ok && data?.name) { setBeneficiaryName(data.name); setValidationStatus("success"); setIsVisibilityLocked(true); setOtpSent(true); - const otp = await handleSendOtp(); + + await handleSendOtp(); + notifications.show({ withBorder: true, color: "green", From 6258080848a1e116a75943eff7d489f7a7ca2ea9 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Tue, 18 Nov 2025 16:13:23 +0530 Subject: [PATCH 09/21] fix: Change bank name fix: otp filled null after complete the process --- src/app/(main)/accounts/page.tsx | 2 +- .../funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx | 1 + src/app/(main)/funds_transfer/add_beneficiary/page.tsx | 2 +- src/app/(main)/layout.tsx | 2 +- src/app/SetPassword/page.tsx | 2 +- src/app/_components/statement_download/PdfGenerator.tsx | 2 +- src/app/administrator/home/page.tsx | 2 +- src/app/eMandate/mandate_page/page.tsx | 2 +- 8 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/app/(main)/accounts/page.tsx b/src/app/(main)/accounts/page.tsx index 16ca7bf..26aa2cd 100644 --- a/src/app/(main)/accounts/page.tsx +++ b/src/app/(main)/accounts/page.tsx @@ -124,7 +124,7 @@ export default function AccountSummary() { if (!authorized) return null; return ( - + { diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index ad2df94..3ea0134 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -331,7 +331,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) }} > <Text c="dimmed" size={isMobile ? "xs" : "sm"}> - © 2025 The Kangra Central Co-Operative Bank + © 2025 The Kangra Central Co-Operative Bank Ltd. </Text> </Box> </Box> diff --git a/src/app/SetPassword/page.tsx b/src/app/SetPassword/page.tsx index e1e79df..a7859fd 100644 --- a/src/app/SetPassword/page.tsx +++ b/src/app/SetPassword/page.tsx @@ -396,7 +396,7 @@ export default function SetLoginPwd() { }} > <Text c="dimmed" size="xs"> - © 2025 The Kangra Central Co-Operative Bank + © 2025 The Kangra Central Co-Operative Bank Ltd. </Text> </Box> </div> diff --git a/src/app/_components/statement_download/PdfGenerator.tsx b/src/app/_components/statement_download/PdfGenerator.tsx index 761b8a0..dfa2dae 100644 --- a/src/app/_components/statement_download/PdfGenerator.tsx +++ b/src/app/_components/statement_download/PdfGenerator.tsx @@ -34,7 +34,7 @@ export const generatePDF = ( <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;"> <div style="display:flex;align-items:center;gap:10px;"> <img src="/logo.jpg" alt="Bank Logo" style="height:50px;" /> - <h2 style="margin:0;">The Kangra Central Co Operative Bank</h2> + <h2 style="margin:0;">The Kangra Central Co-Operative Bank Ltd.</h2> </div> <div style="font-size:12px;color:#555;"> Report generated: ${dayjs().format("DD/MM/YYYY HH:mm")} diff --git a/src/app/administrator/home/page.tsx b/src/app/administrator/home/page.tsx index fcab96f..ec9644d 100644 --- a/src/app/administrator/home/page.tsx +++ b/src/app/administrator/home/page.tsx @@ -404,7 +404,7 @@ export default function Login() { <Divider size="xs" color="#99c2ff" /> <Text size="xs" style={{ textAlign: "center" }}> - © 2025 The Kangra Central Co-Operative Bank + © 2025 The Kangra Central Co-Operative Bank Ltd. </Text> </div> </Providers> diff --git a/src/app/eMandate/mandate_page/page.tsx b/src/app/eMandate/mandate_page/page.tsx index 60b5b82..099ba75 100644 --- a/src/app/eMandate/mandate_page/page.tsx +++ b/src/app/eMandate/mandate_page/page.tsx @@ -433,7 +433,7 @@ export default function MandatePage() { }} > <Text c="dimmed" size="xs"> - © 2025 The Kangra Central Co-Operative Bank + © 2025 The Kangra Central Co-Operative Bank Ltd. </Text> </Box> From f4b1752fe2cc87792b48ce2873c2f15b335c9340 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" <tomosa.sarkar@tcs.com> Date: Thu, 20 Nov 2025 13:45:55 +0530 Subject: [PATCH 10/21] fix: Design : add recommended header. --- src/app/(main)/home/page.tsx | 50 +++++------ src/app/(main)/layout.tsx | 159 +++++++++++++++++++++++---------- src/app/(main)/page.module.css | 74 +++++++++++++++ src/app/_util/otp.ts | 4 +- src/app/login/page.module.css | 5 +- src/app/login/page.tsx | 73 ++++++++------- 6 files changed, 256 insertions(+), 109 deletions(-) create mode 100644 src/app/(main)/page.module.css diff --git a/src/app/(main)/home/page.tsx b/src/app/(main)/home/page.tsx index 92aef9a..f29818f 100644 --- a/src/app/(main)/home/page.tsx +++ b/src/app/(main)/home/page.tsx @@ -33,31 +33,31 @@ export default function Home() { const [loadingAccountNo, setLoadingAccountNo] = useState<string | null>(null); // If back and forward button is clicked - useEffect(() => { - window.history.pushState(null, "", window.location.href); - const handlePopState = () => { - localStorage.removeItem("access_token"); - sessionStorage.removeItem("access_token"); - localStorage.removeItem("remitter_name"); - localStorage.removeItem("pswExpiryDate"); - localStorage.clear(); - sessionStorage.clear(); - router.push("/login"); - }; - const handleBeforeUnload = () => { - // logout on tab close / refresh - localStorage.removeItem("access_token"); - sessionStorage.removeItem("access_token"); - localStorage.clear(); - sessionStorage.clear(); - }; - window.addEventListener("popstate", handlePopState); - window.addEventListener("beforeunload", handleBeforeUnload); - return () => { - window.removeEventListener("popstate", handlePopState); - window.addEventListener("beforeunload", handleBeforeUnload); - }; - }, []); + // useEffect(() => { + // window.history.pushState(null, "", window.location.href); + // const handlePopState = () => { + // localStorage.removeItem("access_token"); + // sessionStorage.removeItem("access_token"); + // localStorage.removeItem("remitter_name"); + // localStorage.removeItem("pswExpiryDate"); + // localStorage.clear(); + // sessionStorage.clear(); + // router.push("/login"); + // }; + // const handleBeforeUnload = () => { + // // logout on tab close / refresh + // localStorage.removeItem("access_token"); + // sessionStorage.removeItem("access_token"); + // localStorage.clear(); + // sessionStorage.clear(); + // }; + // window.addEventListener("popstate", handlePopState); + // window.addEventListener("beforeunload", handleBeforeUnload); + // return () => { + // window.removeEventListener("popstate", handlePopState); + // window.addEventListener("beforeunload", handleBeforeUnload); + // }; + // }, []); async function handleFetchUserDetails() { try { diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 3ea0134..f8f4dce 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useEffect, useState } from 'react'; -import { Box, Button, Divider, Group, Image, Modal, Popover, Stack, Text, Title } from '@mantine/core'; -import { IconBook, IconCurrencyRupee, IconHome, IconLogout, IconPhoneFilled, IconSettings } from '@tabler/icons-react'; +import { Box, Button, Divider, Group, Image, Modal, Popover, Stack, Switch, Text, Title } from '@mantine/core'; +import { IconBook, IconCurrencyRupee, IconHome, IconLogout, IconMoon, IconPhoneFilled, IconSettings, IconSun, IconUserCircle } from '@tabler/icons-react'; import Link from 'next/link'; import { useRouter, usePathname } from "next/navigation"; import { Providers } from '../providers'; @@ -10,6 +10,7 @@ import NextImage from 'next/image'; import { notifications } from '@mantine/notifications'; import { useDisclosure, useMediaQuery } from '@mantine/hooks'; import { fetchAndStoreUserName } from '../_util/userdetails'; +import styles from './page.module.css'; export default function RootLayout({ children }: { children: React.ReactNode }) { const router = useRouter(); @@ -20,6 +21,9 @@ export default function RootLayout({ children }: { children: React.ReactNode }) const isMobile = useMediaQuery("(max-width: 768px)"); const [sessionModal, setSessionModal] = useState(false); const [countdown, setCountdown] = useState(30); // 30 sec countdown before auto logout + const [darkMode, setDarkMode] = useState(false); + const firstName = custname ? custname.split(" ")[0] : ""; + const [userOpened, setUserOpened] = useState(false); // Manage dropdown visibility const [opened, { open, close }] = useDisclosure(false); @@ -38,28 +42,32 @@ export default function RootLayout({ children }: { children: React.ReactNode }) doLogout() router.push("/login"); } + // Toggle Dark/Light Mode + const toggleDarkMode = () => { + setDarkMode((prevMode) => !prevMode); + }; // When reload and click on back then logout - useEffect(() => { - // Push fake history state to trap navigation - window.history.pushState(null, "", window.location.href); - const handlePopState = () => { - doLogout(); // logout when back/forward pressed - }; - const handleBeforeUnload = (e: BeforeUnloadEvent) => { - // logout on tab close / refresh - localStorage.removeItem("access_token"); - sessionStorage.removeItem("access_token"); - localStorage.clear(); - sessionStorage.clear(); - }; - window.addEventListener("popstate", handlePopState); - window.addEventListener("beforeunload", handleBeforeUnload); - return () => { - window.removeEventListener("popstate", handlePopState); - window.addEventListener("beforeunload", handleBeforeUnload); - }; - }, []); + // useEffect(() => { + // // Push fake history state to trap navigation + // window.history.pushState(null, "", window.location.href); + // const handlePopState = () => { + // doLogout(); // logout when back/forward pressed + // }; + // const handleBeforeUnload = (e: BeforeUnloadEvent) => { + // // logout on tab close / refresh + // localStorage.removeItem("access_token"); + // sessionStorage.removeItem("access_token"); + // localStorage.clear(); + // sessionStorage.clear(); + // }; + // window.addEventListener("popstate", handlePopState); + // window.addEventListener("beforeunload", handleBeforeUnload); + // return () => { + // window.removeEventListener("popstate", handlePopState); + // window.addEventListener("beforeunload", handleBeforeUnload); + // }; + // }, []); useEffect(() => { const token = localStorage.getItem("access_token"); @@ -187,33 +195,92 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {/* HEADER */} <Box + component="header" + className={styles.header} style={{ width: "100%", - display: "flex", - height: "60px", - // flexDirection: "row", + padding: "0.8rem 2rem", + background: darkMode + ? "linear-gradient(15deg, rgba(229, 101, 22, 1) 55%, rgba(28, 28, 30, 1) 100%)" // Dark Mode Gradient + : "linear-gradient(15deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%)", // Light Mode Gradient alignItems: "center", - justifyContent: "flex-start", - // padding: isMobile ? "0.5rem" : "0.5rem 1rem", - background: "linear-gradient(15deg,rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%)", - position: "relative", - // position: "fixed", + justifyContent: "space-between", + color: "white", + boxShadow: "0 2px 6px rgba(0,0,0,0.15)", + position: "sticky", + top: 0, + zIndex: 100, }} > - {/* Logo */} - <Box style={{ width: isMobile ? "48px" : "65px", height: isMobile ? "50px" : "60px" }}> - <Image src={logo} component={NextImage} alt="ebanking" style={{ width: "100%", height: "100%" }} /> - </Box> + <Group gap="md"> + <Image + src={logo} + component={NextImage} + fit="contain" + alt="ebanking" + style={{ width: "60px", height: "auto" }} + /> + <div> + <Title order={3} style={{ fontFamily: "Roboto", color: "white", marginBottom: 2 }}> + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + +
+ + + {/* Dark/Light Mode Toggle using Moon and Sun Icons */} + + {/* */} + + + + + + + + + {custname} + Full Name + + + + {userLastLoginDetails + ? new Date(userLastLoginDetails).toLocaleString() + : "N/A"} + + Last Login + + + + + + + + + - {/* Title & Phone */} - - - THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. - - - Toll Free No : 1800-180-8008 - - {/* WELCOME + NAV */} @@ -255,7 +322,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) ); })} - + {/* - + */} @@ -331,7 +398,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) }} > - © 2025 The Kangra Central Co-Operative Bank Ltd. + © 2025 The Kangra Central Co-Operative Bank Ltd. diff --git a/src/app/(main)/page.module.css b/src/app/(main)/page.module.css new file mode 100644 index 0000000..a7a87ba --- /dev/null +++ b/src/app/(main)/page.module.css @@ -0,0 +1,74 @@ +.header { + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 100; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.8rem 2rem; + background: linear-gradient(15deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%); + flex-wrap: wrap; /* Allow wrapping on mobile */ +} + +.header-text { + display: flex; + flex-direction: column; + justify-content: center; + flex: 1; + text-align: left; +} + +.desktop-text { + color: white; + font-family: Roboto, sans-serif; + font-size: 1.5rem; + line-height: 1.2; +} + +.desktop-address { + font-family: Roboto, sans-serif; + color: white; + font-size: 0.9rem; + text-shadow: 1px 1px 2px blue; + margin-top: 0.25rem; +} + +/* Mobile styles */ +.mobile-text { + color: white; + font-family: Roboto, sans-serif; + font-size: 1rem; + line-height: 1.2; + display: none; + text-align: center; +} + +/* Media query for mobile */ +@media screen and (max-width: 768px) { + .header { + justify-content: center; + padding: 0.5rem 0.75rem; + } + + .header-logo { + width: 50px; + margin-bottom: 0.5rem; + } + + .header-text { + text-align: center; + flex-direction: column; + } + + .desktop-text, + .desktop-address { + display: none; + } + + .mobile-text { + display: block; + font-size: 0.9rem; + } +} diff --git a/src/app/_util/otp.ts b/src/app/_util/otp.ts index 7a70463..0e1fc67 100644 --- a/src/app/_util/otp.ts +++ b/src/app/_util/otp.ts @@ -14,8 +14,8 @@ interface SendOtpPayload { } function getStoredMobileNumber(): string { - const mobileNumber = localStorage.getItem('remitter_mobile_no'); - // const mobileNumber = "7890544527"; + // const mobileNumber = localStorage.getItem('remitter_mobile_no'); + const mobileNumber = "7890544527"; if (!mobileNumber) throw new Error('Mobile number not found.'); return mobileNumber; } diff --git a/src/app/login/page.module.css b/src/app/login/page.module.css index 8255e0f..a7a87ba 100644 --- a/src/app/login/page.module.css +++ b/src/app/login/page.module.css @@ -7,9 +7,9 @@ display: flex; align-items: center; justify-content: space-between; - padding: 0.5rem 1rem; + padding: 0.8rem 2rem; background: linear-gradient(15deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%); - flex-wrap: wrap; /* allow wrapping on mobile */ + flex-wrap: wrap; /* Allow wrapping on mobile */ } .header-text { @@ -20,7 +20,6 @@ text-align: left; } -/* Desktop text */ .desktop-text { color: white; font-family: Roboto, sans-serif; diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 3f4d0c5..4a10d08 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -45,8 +45,8 @@ export default function Login() { } try { - await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: mobile }); - // await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: "7890544527" }); + // await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: mobile }); + await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: "7890544527" }); notifications.show({ color: 'orange', title: 'OTP Required', @@ -67,8 +67,8 @@ export default function Login() { async function handleVerifyOtp(mobile?: string) { try { if (mobile) { - await verifyLoginOtp(otp, mobile); - // await verifyLoginOtp(otp, '7890544527'); + // await verifyLoginOtp(otp, mobile); + await verifyLoginOtp(otp, '7890544527'); return true; } } @@ -440,38 +440,45 @@ export default function Login() { )} {/* Main Screen */} -
+
{/* Header */} - - ebanking - - {/* Desktop */} - - THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. - - - Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 - - - {/* Mobile */} - - THE KANGRA CENTRAL - - - CO-OPERATIVE BANK LTD. - - - Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 - - + + + ebanking +
+ + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + +
+
+
{/* Movable text */} Date: Mon, 24 Nov 2025 18:07:06 +0530 Subject: [PATCH 11/21] changes : Changes the design of IB --- src/app/(main)/accounts/layout.tsx | 154 +++++----- .../add_beneficiary/addBeneficiaryOthers.tsx | 0 .../add_beneficiary/page.tsx | 0 src/app/(main)/beneficiary/layout.tsx | 182 +++++++++++ .../view_beneficiary/page.tsx | 0 src/app/(main)/funds_transfer/layout.tsx | 274 ++++++++--------- src/app/(main)/layout.tsx | 245 ++++++++++----- .../settings/change_login_password/page.tsx | 6 +- src/app/(main)/settings/layout.tsx | 282 +++++++++--------- src/app/_themes/KccbTheme.ts | 5 + src/app/login/page.tsx | 3 +- 11 files changed, 724 insertions(+), 427 deletions(-) rename src/app/(main)/{funds_transfer => beneficiary}/add_beneficiary/addBeneficiaryOthers.tsx (100%) rename src/app/(main)/{funds_transfer => beneficiary}/add_beneficiary/page.tsx (100%) create mode 100644 src/app/(main)/beneficiary/layout.tsx rename src/app/(main)/{funds_transfer => beneficiary}/view_beneficiary/page.tsx (100%) diff --git a/src/app/(main)/accounts/layout.tsx b/src/app/(main)/accounts/layout.tsx index b662b48..4f03efe 100644 --- a/src/app/(main)/accounts/layout.tsx +++ b/src/app/(main)/accounts/layout.tsx @@ -1,5 +1,5 @@ "use client"; -import { Box, Burger, Button, Divider, Drawer, Stack, Text } from '@mantine/core'; +import { Box, Burger, Button, Divider, Drawer, ScrollArea, SegmentedControl, Stack, Text } from '@mantine/core'; import { usePathname } from 'next/navigation'; import Link from 'next/link'; import React, { useEffect, useState } from 'react'; @@ -33,55 +33,62 @@ export default function Layout({ children }: { children: React.ReactNode }) { if (authorized) { return ( - - {/* Desktop Sidebar */} + + {/* ---------------- DESKTOP SIDEBAR ---------------- */} {!isMobile && ( - - - - My Accounts - - + <> + {/* Segmented Tabs */} + + + router.push(value)} + data={links.map((link) => ({ + label: link.label, + value: link.href, + }))} + styles={{ + root: { + backgroundColor: "#e9ecef", + borderRadius: 999, + padding: 4, + }, + control: { + borderRadius: 999, + transition: "0.3s", + }, - - {links.map((link) => { - const isActive = pathname === link.href; - return ( - - {link.label} - - ); - })} - - + indicator: { + borderRadius: 999, + background: "linear-gradient(90deg, #02a355 0%, #5483c9ff 100%)", + boxShadow: "0 3px 8px rgba(0,0,0,0.15)", + }, + + label: { + fontSize: 13, + padding: "6px 10px", + textAlign: "center", + fontWeight: 600, + color: "#000", + }, + }} + /> + + + )} - {/* Mobile: Burger & Drawer */} + {/* ---------------- MOBILE TOP BAR ---------------- */} {isMobile && ( <> - {/* Top header with burger and title */} - - My Accounts + + Send Money + {/* MOBILE DRAWER */} setDrawerOpened(false)} @@ -103,27 +111,31 @@ export default function Layout({ children }: { children: React.ReactNode }) { overlayProps={{ color: "black", opacity: 0.55, blur: 3 }} styles={{ root: { - backgroundColor: "#e6f5ff", // soft background for drawer - // borderLeft: "4px solid #228be6", - // borderRadius: "8px", + backgroundColor: "#eaf4ff", }, }} > - {/* Logo and Drawer Header */} - - <> - KCCB Logo - - My Accounts - - + {/* Drawer Header */} + + KCCB Logo + + Send Money + - {/* Menu Items */} + {/* Drawer Items */} {links.map((link) => { const isActive = pathname === link.href; @@ -138,22 +150,11 @@ export default function Layout({ children }: { children: React.ReactNode }) { style={{ justifyContent: "flex-start", fontWeight: isActive ? 600 : 400, - textDecoration: isActive ? "underline" : "none", - color: isActive ? "#fff" : "#228be6", - backgroundColor: isActive ? "#228be6" : "#dceeff", + color: isActive ? "#fff" : "#1565c0", + backgroundColor: isActive ? "#1565c0" : "#dceeff", borderRadius: "8px", padding: "10px 12px", - transition: "0.3s", - }} - onMouseEnter={(e) => { - const target = e.currentTarget as unknown as HTMLElement; - target.style.backgroundColor = "#228be6"; - target.style.color = "#fff"; - }} - onMouseLeave={(e) => { - const target = e.currentTarget as unknown as HTMLElement; - target.style.backgroundColor = isActive ? "#228be6" : "#dceeff"; - target.style.color = isActive ? "#fff" : "#228be6"; + transition: "0.2s", }} onClick={() => setDrawerOpened(false)} > @@ -166,9 +167,14 @@ export default function Layout({ children }: { children: React.ReactNode }) { )} - - {/* Content Area */} - + {/* ---------------- CONTENT AREA ---------------- */} + {children} diff --git a/src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx b/src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx similarity index 100% rename from src/app/(main)/funds_transfer/add_beneficiary/addBeneficiaryOthers.tsx rename to src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx diff --git a/src/app/(main)/funds_transfer/add_beneficiary/page.tsx b/src/app/(main)/beneficiary/add_beneficiary/page.tsx similarity index 100% rename from src/app/(main)/funds_transfer/add_beneficiary/page.tsx rename to src/app/(main)/beneficiary/add_beneficiary/page.tsx diff --git a/src/app/(main)/beneficiary/layout.tsx b/src/app/(main)/beneficiary/layout.tsx new file mode 100644 index 0000000..2d1a54e --- /dev/null +++ b/src/app/(main)/beneficiary/layout.tsx @@ -0,0 +1,182 @@ +"use client"; + +import { + Box, + Stack, + Text, + SegmentedControl, + ScrollArea, + Burger, + Drawer, + Button, +} from "@mantine/core"; + +import Link from "next/link"; +import { usePathname, useRouter } from "next/navigation"; +import React, { useEffect, useState } from "react"; +import { useMediaQuery } from "@mantine/hooks"; +import Image from "next/image"; +import logo from "@/app/image/logo1.jpg"; + +export default function Layout({ children }: { children: React.ReactNode }) { + const [authorized, SetAuthorized] = useState(null); + const router = useRouter(); + const pathname = usePathname(); + const isMobile = useMediaQuery("(max-width: 768px)"); + const [drawerOpened, setDrawerOpened] = useState(false); + + /* Beneficiary Options */ + const links = [ + { label: "Add Beneficiary", href: "/beneficiary/add_beneficiary" }, + { label: "View Beneficiary", href: "/beneficiary/view_beneficiary" }, + ]; + + useEffect(() => { + const token = localStorage.getItem("access_token"); + if (!token) { + SetAuthorized(false); + router.push("/login"); + } else { + SetAuthorized(true); + } + }, []); + + if (!authorized) return null; + + return ( + + + {/* ---------------- DESKTOP HEADER ---------------- */} + {!isMobile && ( + <> + {/* Segmented Tabs */} + + + router.push(value)} + data={links.map((link) => ({ + label: link.label, + value: link.href, + }))} + styles={{ + root: { + backgroundColor: "#e9ecef", + borderRadius: 999, + padding: 4, + }, + control: { + borderRadius: 999, + transition: "0.3s", + }, + + indicator: { + borderRadius: 999, + background: "linear-gradient(90deg, #02a355 0%, #5483c9ff 100%)", + boxShadow: "0 3px 8px rgba(0,0,0,0.15)", + }, + + label: { + fontSize: 13, + padding: "6px 10px", + textAlign: "center", + fontWeight: 600, + color: "#000", + }, + }} + /> + + + + )} + + {/* ---------------- MOBILE HEADER ---------------- */} + {isMobile && ( + <> + + setDrawerOpened(true)} + size="sm" + color="white" + /> + + Beneficiary + + + + {/* Drawer for Mobile */} + setDrawerOpened(false)} + padding="md" + size="75%" + overlayProps={{ color: "black", opacity: 0.55, blur: 3 }} + > + {/* Drawer Header */} + + KCCB Logo + + Beneficiary + + + + {/* Drawer Menu Items */} + + {links.map((link) => { + const isActive = pathname === link.href; + + return ( + + ); + })} + + + + )} + + {/* ---------------- CONTENT BODY ---------------- */} + + {children} + + + ); +} diff --git a/src/app/(main)/funds_transfer/view_beneficiary/page.tsx b/src/app/(main)/beneficiary/view_beneficiary/page.tsx similarity index 100% rename from src/app/(main)/funds_transfer/view_beneficiary/page.tsx rename to src/app/(main)/beneficiary/view_beneficiary/page.tsx diff --git a/src/app/(main)/funds_transfer/layout.tsx b/src/app/(main)/funds_transfer/layout.tsx index 115c329..090099c 100644 --- a/src/app/(main)/funds_transfer/layout.tsx +++ b/src/app/(main)/funds_transfer/layout.tsx @@ -1,12 +1,12 @@ "use client"; -import { Box, Burger, Button, Divider, Drawer, Stack, Text } from '@mantine/core'; -import { usePathname } from 'next/navigation'; -import Link from 'next/link'; -import React, { useEffect, useState } from 'react'; +import { Box, Burger, Button, Drawer, ScrollArea, SegmentedControl, Stack, Text } from "@mantine/core"; +import { usePathname } from "next/navigation"; +import Link from "next/link"; +import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import Image from "next/image"; import logo from "@/app/image/logo1.jpg"; -import { useMediaQuery } from '@mantine/hooks'; +import { useMediaQuery } from "@mantine/hooks"; export default function Layout({ children }: { children: React.ReactNode }) { const [authorized, SetAuthorized] = useState(null); @@ -16,163 +16,167 @@ export default function Layout({ children }: { children: React.ReactNode }) { const [drawerOpened, setDrawerOpened] = useState(false); const links = [ - { label: " Quick Pay", href: "/funds_transfer" }, - { label: "Add Beneficiary", href: "/funds_transfer/add_beneficiary" }, - { label: "View Beneficiary ", href: "/funds_transfer/view_beneficiary" }, - { label: "Send to Beneficiary", href: "/funds_transfer/send_beneficiary" }, + { label: "Quick Pay", href: "/funds_transfer" }, + { label: "Bank Transfer", href: "/funds_transfer/send_beneficiary" }, ]; + useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { SetAuthorized(false); router.push("/login"); - } - else { + } else { SetAuthorized(true); } }, []); - if (authorized) { - return ( - - {/* Desktop Sidebar */} - {!isMobile && ( + if (!authorized) return null; + + return ( + + {/* ---------------- DESKTOP SIDEBAR ---------------- */} + {!isMobile && ( + <> + {/* Segmented Tabs */} + + + router.push(value)} + data={links.map((link) => ({ + label: link.label, + value: link.href, + }))} + styles={{ + root: { + backgroundColor: "#e9ecef", + borderRadius: 999, + padding: 4, + }, + control: { + borderRadius: 999, + transition: "0.3s", + }, + + indicator: { + borderRadius: 999, + background: "linear-gradient(90deg, #02a355 0%, #5483c9ff 100%)", + boxShadow: "0 3px 8px rgba(0,0,0,0.15)", + }, + + label: { + fontSize: 13, + padding: "6px 10px", + textAlign: "center", + fontWeight: 600, + color: "#000", + }, + }} + /> + + + + )} + + {/* ---------------- MOBILE TOP BAR ---------------- */} + {isMobile && ( + <> - - - Send Money - - - - - {links.map((link) => { - const isActive = pathname === link.href; - return ( - - {link.label} - - ); - })} - + setDrawerOpened(!drawerOpened)} + size="sm" + color="white" + /> + + Send Money + - )} - {/* Mobile: Burger & Drawer */} - {isMobile && ( - <> - {/* Top header with burger and title */} + {/* MOBILE DRAWER */} + setDrawerOpened(false)} + padding="md" + size="75%" + overlayProps={{ color: "black", opacity: 0.55, blur: 3 }} + styles={{ + root: { + backgroundColor: "#eaf4ff", + }, + }} + > + {/* Drawer Header */} - setDrawerOpened(!drawerOpened)} - size="sm" - color="white" + KCCB Logo - - Send Money + + Send Money - setDrawerOpened(false)} - padding="md" - size="75%" - overlayProps={{ color: "black", opacity: 0.55, blur: 3 }} - styles={{ - root: { - backgroundColor: "#e6f5ff", // soft background for drawer - // borderLeft: "4px solid #228be6", - // borderRadius: "8px", - }, - }} - > - {/* Logo and Drawer Header */} - - <> - KCCB Logo - + {links.map((link) => { + const isActive = pathname === link.href; + + return ( + + ); + })} + + + + )} - {/* Menu Items */} - - {links.map((link) => { - const isActive = pathname === link.href; - - return ( - - ); - })} - - - - )} - - - {/* Content Area */} - - {children} - + {/* ---------------- CONTENT AREA ---------------- */} + + {children} - ); - } + + ); } diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index f8f4dce..53a7b21 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useEffect, useState } from 'react'; -import { Box, Button, Divider, Group, Image, Modal, Popover, Stack, Switch, Text, Title } from '@mantine/core'; -import { IconBook, IconCurrencyRupee, IconHome, IconLogout, IconMoon, IconPhoneFilled, IconSettings, IconSun, IconUserCircle } from '@tabler/icons-react'; +import { Anchor, Box, Button, Container, Divider, Group, Image, Modal, Popover, Stack, Switch, Text, Title, Grid } from '@mantine/core'; +import { IconHome, IconLogout, IconMoon, IconSend, IconSettings, IconSun, IconUserCircle, IconUsers, IconWallet } from '@tabler/icons-react'; import Link from 'next/link'; import { useRouter, usePathname } from "next/navigation"; import { Providers } from '../providers'; @@ -181,8 +181,9 @@ export default function RootLayout({ children }: { children: React.ReactNode }) const navItems = [ { href: "/home", label: "Home", icon: IconHome }, - { href: "/accounts", label: "Accounts", icon: IconBook }, - { href: "/funds_transfer", label: "Send Money", icon: IconCurrencyRupee }, + { href: "/accounts", label: "Accounts", icon: IconWallet }, + { href: "/funds_transfer", label: "Fund Transfer", icon: IconSend }, + { href: "/beneficiary/add_beneficiary", label: "Beneficiaries", icon: IconUsers }, { href: "/settings", label: "Settings", icon: IconSettings }, ]; @@ -191,7 +192,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) - + {/* HEADER */} } - onClick={doLogout} + onClick={handleLogout} > Logout @@ -284,79 +285,78 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {/* WELCOME + NAV */} - - - - Welcome, {custname ?? null} - - - Last logged in at {userLastLoginDetails ? new Date(userLastLoginDetails).toLocaleString() : "N/A"} - - - - {navItems.map((item) => { - const isActive = pathname.startsWith(item.href); - const Icon = item.icon; - return ( - - - - ); - })} - - {/* - - - - - - Are you sure you want to logout? - - - - + - - */} - - + - + ); + })} + {/* CHILDREN */} - {children} + + {children} + + {/* this model for session logout */} - - {/* FOOTER */} ({ + borderTop: `1px solid `, + backgroundColor: 'rgba(60, 54, 74, 1)', + paddingTop: '2rem', + paddingBottom: '2rem', + })} > - - © 2025 The Kangra Central Co-Operative Bank Ltd. - + + + + + + ebanking + + +
+ + The Kangra Central + + Co-operative Bank Ltd +
+
+ + Serving the community since inception. We are committed to providing quality + banking services with personalized care and customer satisfaction. + +
+ + + + Quick Links + + + + About Us + + + Products & Services + + + Help & Support + + + Terms & Conditions + + + + + + + Contact Us + + + + Phone: +91-1800-1808008 + + + Hours: Mon-Fri 10:00 AM - 4:00 PM + + + Sat 10:00 AM - 2:00 PM + + + +
+ + ({ + borderTop: `1px solid ` + })} + > + © 2025 The Kangra Central Co-operative Bank Ltd. All rights reserved. | Privacy Policy | + Security + +
diff --git a/src/app/(main)/settings/change_login_password/page.tsx b/src/app/(main)/settings/change_login_password/page.tsx index b21343b..4df88aa 100644 --- a/src/app/(main)/settings/change_login_password/page.tsx +++ b/src/app/(main)/settings/change_login_password/page.tsx @@ -58,10 +58,6 @@ export default function ChangePassword() { } } - - - - useEffect(() => { regenerateCaptcha(); }, []); @@ -232,7 +228,7 @@ export default function ChangePassword() { }; return ( - + Change Login Password diff --git a/src/app/(main)/settings/layout.tsx b/src/app/(main)/settings/layout.tsx index 780ab76..41ef6eb 100644 --- a/src/app/(main)/settings/layout.tsx +++ b/src/app/(main)/settings/layout.tsx @@ -1,15 +1,24 @@ "use client"; -import { Box, Burger, Button, Divider, Drawer, Stack, Text } from '@mantine/core'; -import { usePathname } from 'next/navigation'; -import Link from 'next/link'; -import React, { useEffect, useState } from 'react'; -import { useRouter } from "next/navigation"; -import { useMediaQuery } from '@mantine/hooks'; + +import { + Box, + Stack, + Text, + SegmentedControl, + ScrollArea, + Burger, + Drawer, + Button, +} from "@mantine/core"; +import { usePathname, useRouter } from "next/navigation"; +import React, { useEffect, useState } from "react"; +import { useMediaQuery } from "@mantine/hooks"; import Image from "next/image"; import logo from "@/app/image/logo1.jpg"; +import Link from "next/link"; export default function Layout({ children }: { children: React.ReactNode }) { - const [authorized, SetAuthorized] = useState(null); + const [authorized, setAuthorized] = useState(null); const router = useRouter(); const pathname = usePathname(); const isMobile = useMediaQuery("(max-width: 768px)"); @@ -21,159 +30,164 @@ export default function Layout({ children }: { children: React.ReactNode }) { { label: "Change transaction Password", href: "/settings/change_txn_password" }, { label: "Set transaction Password", href: "/settings/set_txn_password" }, { label: "Preferred Name", href: "/settings/user_name" }, - { label: "Set Transaction Limit ", href: "/settings/set_txn_limit" }, - + { label: "Set Transaction Limit", href: "/settings/set_txn_limit" }, ]; + useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { - SetAuthorized(false); + setAuthorized(false); router.push("/login"); - } - else { - SetAuthorized(true); + } else { + setAuthorized(true); } }, []); - if (authorized) { - return ( - - {/* Desktop Sidebar */} - {!isMobile && ( + if (!authorized) return null; + + return ( + + {/* ---------------- DESKTOP HEADER ---------------- */} + {!isMobile && ( + <> + + + router.push(value)} + data={links.map((link) => ({ + label: link.label, + value: link.href, + }))} + styles={{ + root: { + backgroundColor: "#e9ecef", + borderRadius: 999, + padding: 4, + }, + control: { + borderRadius: 999, + transition: "0.3s", + }, + + indicator: { + borderRadius: 999, + background: "linear-gradient(90deg, #02a355 0%, #5483c9ff 100%)", + boxShadow: "0 3px 8px rgba(0,0,0,0.15)", + }, + + label: { + fontSize: 13, + padding: "6px 10px", + textAlign: "center", + fontWeight: 600, + color: "#000", + }, + }} + /> + + + + )} + + {/* ---------------- MOBILE HEADER ---------------- */} + {isMobile && ( + <> + {/* Mobile Header */} - - - Settings - - - - - {links.map((link) => { - const isActive = pathname === link.href; - return ( - - {link.label} - - ); - })} - + setDrawerOpened(true)} + size="sm" + color="white" + /> + + Settings + - )} - {/* Mobile: Burger & Drawer */} - {isMobile && ( - <> - {/* Top header with burger and title */} + {/* Mobile Drawer */} + setDrawerOpened(false)} + padding="md" + size="75%" + overlayProps={{ color: "black", opacity: 0.55, blur: 2 }} + > - setDrawerOpened(!drawerOpened)} - size="sm" - color="white" + Logo - + Settings - setDrawerOpened(false)} - padding="md" - size="75%" - overlayProps={{ color: "black", opacity: 0.55, blur: 3 }} - styles={{ - root: { - backgroundColor: "#e6f5ff", // soft background for drawer - }, - }} - > - {/* Logo and Drawer Header */} - - <> - KCCB Logo - + {links.map((link) => { + const isActive = pathname === link.href; + + return ( + + ); + })} + + + + )} - {/* Menu Items */} - - {links.map((link) => { - const isActive = pathname === link.href; - - return ( - - ); - })} - - - - )} - - - {/* Content Area */} - - {children} - + {/* ---------------- CONTENT AREA ---------------- */} + + {children} - ); - } + + ); } diff --git a/src/app/_themes/KccbTheme.ts b/src/app/_themes/KccbTheme.ts index cbf4c29..7d2c0e7 100644 --- a/src/app/_themes/KccbTheme.ts +++ b/src/app/_themes/KccbTheme.ts @@ -6,6 +6,11 @@ const KccbColors: MantineColorsTuple = [ "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0d47a1" ]; +// const KccbColors: MantineColorsTuple = [ +// "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", // Lighter greens +// "#4caf50", "#43a047", "#388e3c", "#2c6f2c", "#1b5e20" // Darker greens +// ]; + export const KccbTheme = createTheme({ /* Put your mantine theme override here */ diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 4a10d08..4c51977 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -46,7 +46,8 @@ export default function Login() { try { // await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: mobile }); - await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: "7890544527" }); + const maskedCIF = CIF?.replace(/.(?=.{3})/g, '*'); + await sendOtp({ type: 'LOGIN_OTP', username: maskedCIF, mobileNumber: "7890544527" }); notifications.show({ color: 'orange', title: 'OTP Required', From c1d0519c09e8ee8273361e078d3fe0091c896c62 Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Thu, 27 Nov 2025 18:13:06 +0530 Subject: [PATCH 12/21] Fix: design and few function --- .../(main)/accounts/account_details/page.tsx | 2 +- .../account_statement/accountStatement.tsx | 73 +++- src/app/(main)/accounts/layout.tsx | 6 +- src/app/(main)/accounts/page.tsx | 6 +- .../add_beneficiary/addBeneficiaryOthers.tsx | 6 +- src/app/(main)/beneficiary/layout.tsx | 2 +- .../{add_beneficiary => }/page.tsx | 2 +- .../beneficiary/view_beneficiary/page.tsx | 37 +- src/app/(main)/funds_transfer/page.tsx | 6 +- .../funds_transfer/send_beneficiary/page.tsx | 2 +- .../sendBeneficiaryOthers.tsx | 2 +- src/app/(main)/home/page.tsx | 382 +++++++++--------- src/app/(main)/layout.tsx | 300 +++++++------- .../settings/change_txn_password/page.tsx | 2 +- src/app/(main)/settings/page.tsx | 2 +- .../(main)/settings/set_txn_limit/page.tsx | 11 +- .../(main)/settings/set_txn_password/page.tsx | 2 +- src/app/(main)/settings/user_name/page.tsx | 2 +- src/app/ATMLocator/page.tsx | 232 +++++++++++ src/app/BranchLocator/page.tsx | 254 ++++++++++++ src/app/CustomerCare/page.tsx | 243 +++++++++++ src/app/FAQs/page.tsx | 243 +++++++++++ src/app/_themes/KccbTheme.ts | 12 +- src/app/_util/otp.ts | 4 +- src/app/login/page.tsx | 8 +- 25 files changed, 1446 insertions(+), 395 deletions(-) rename src/app/(main)/beneficiary/{add_beneficiary => }/page.tsx (99%) create mode 100644 src/app/ATMLocator/page.tsx create mode 100644 src/app/BranchLocator/page.tsx create mode 100644 src/app/CustomerCare/page.tsx create mode 100644 src/app/FAQs/page.tsx diff --git a/src/app/(main)/accounts/account_details/page.tsx b/src/app/(main)/accounts/account_details/page.tsx index e6d84bc..e7f0795 100644 --- a/src/app/(main)/accounts/account_details/page.tsx +++ b/src/app/(main)/accounts/account_details/page.tsx @@ -108,7 +108,7 @@ export default function AccountDetails() { if (!authorized) return null; return ( - + Account Details diff --git a/src/app/(main)/accounts/account_statement/accountStatement.tsx b/src/app/(main)/accounts/account_statement/accountStatement.tsx index 89e502b..745b085 100644 --- a/src/app/(main)/accounts/account_statement/accountStatement.tsx +++ b/src/app/(main)/accounts/account_statement/accountStatement.tsx @@ -168,7 +168,7 @@ export default function AccountStatementPage() { {/* Left side – form */} - + Account Transactions ['SA', 'SB'].includes(acc.stAccountType)); + const filterSAaccount = data.filter((acc) => ['SA', 'SB','CC','OD','CA'].includes(acc.stAccountType)); setAccountData(filterSAaccount); } } catch { diff --git a/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx b/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx index 6082b0f..b020eec 100644 --- a/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx +++ b/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx @@ -200,7 +200,7 @@ export default function SendToBeneficiaryOthers() { }); const data = await response.json(); if (response.ok && Array.isArray(data)) { - const filterSAaccount = data.filter((acc) => ['SA', 'SB'].includes(acc.stAccountType)); + const filterSAaccount = data.filter((acc) => ['SA', 'SB','CC','OD','CA'].includes(acc.stAccountType)); setAccountData(filterSAaccount); } } catch { diff --git a/src/app/(main)/home/page.tsx b/src/app/(main)/home/page.tsx index f29818f..da3d576 100644 --- a/src/app/(main)/home/page.tsx +++ b/src/app/(main)/home/page.tsx @@ -21,6 +21,7 @@ export default function Home() { const [authorized, SetAuthorized] = useState(null); const router = useRouter(); const isMobile = useMediaQuery("(max-width: 768px)"); + const [userName, setUserName] = useState(""); const [accountData, SetAccountData] = useState([]); const depositAccounts = accountData.filter(acc => acc.stAccountType !== "LN"); const [selectedDA, setSelectedDA] = useState(depositAccounts[0]?.stAccountNo || ""); @@ -33,31 +34,31 @@ export default function Home() { const [loadingAccountNo, setLoadingAccountNo] = useState(null); // If back and forward button is clicked - // useEffect(() => { - // window.history.pushState(null, "", window.location.href); - // const handlePopState = () => { - // localStorage.removeItem("access_token"); - // sessionStorage.removeItem("access_token"); - // localStorage.removeItem("remitter_name"); - // localStorage.removeItem("pswExpiryDate"); - // localStorage.clear(); - // sessionStorage.clear(); - // router.push("/login"); - // }; - // const handleBeforeUnload = () => { - // // logout on tab close / refresh - // localStorage.removeItem("access_token"); - // sessionStorage.removeItem("access_token"); - // localStorage.clear(); - // sessionStorage.clear(); - // }; - // window.addEventListener("popstate", handlePopState); - // window.addEventListener("beforeunload", handleBeforeUnload); - // return () => { - // window.removeEventListener("popstate", handlePopState); - // window.addEventListener("beforeunload", handleBeforeUnload); - // }; - // }, []); + useEffect(() => { + window.history.pushState(null, "", window.location.href); + const handlePopState = () => { + localStorage.removeItem("access_token"); + sessionStorage.removeItem("access_token"); + localStorage.removeItem("remitter_name"); + localStorage.removeItem("pswExpiryDate"); + localStorage.clear(); + sessionStorage.clear(); + router.push("/login"); + }; + const handleBeforeUnload = () => { + // logout on tab close / refresh + localStorage.removeItem("access_token"); + sessionStorage.removeItem("access_token"); + localStorage.clear(); + sessionStorage.clear(); + }; + window.addEventListener("popstate", handlePopState); + window.addEventListener("beforeunload", handleBeforeUnload); + return () => { + window.removeEventListener("popstate", handlePopState); + window.addEventListener("beforeunload", handleBeforeUnload); + }; + }, []); async function handleFetchUserDetails() { try { @@ -66,7 +67,7 @@ export default function Home() { method: 'GET', headers: { 'Content-Type': 'application/json', - "X-Login-Type": "IB", + "X-Login-Type": "IB", 'Authorization': `Bearer ${token}` }, }); @@ -117,6 +118,9 @@ export default function Home() { useEffect(() => { if (authorized) { handleFetchUserDetails(); + const fullName = localStorage.getItem("remitter_name") || "User"; + // const first = fullName.split(" ")[0]; + setUserName(fullName); } }, [authorized]); @@ -124,38 +128,188 @@ export default function Home() { return ( - + + {/* ---------------------- WELCOME CARD ---------------------- */} + <Title + order={2} + style={{ + marginTop: "4px", + fontSize: isMobile ? "20px" : "28px", + fontWeight: 800, + background: "linear-gradient(56deg, rgba(16,114,152,1) 0%, rgba(62,230,132,1) 86%)", + WebkitBackgroundClip: "text", + WebkitTextFillColor: "transparent", + }} + > + Welcome, {userName} + + + {/* -------------------- ACCOUNT OVERVIEW HEADER -------------------- */} + Accounts Overview - {/* Show Balance Switch */} + + + Your accounts at a glance + + + {/* --------------------- SHOW BALANCE TOGGLE ---------------------- */} - + Show Balance + setShowBalance(event.currentTarget.checked)} /> - {/* Cards Section */} - {isMobile ? ( + {/* ----------------------- DESKTOP VIEW ------------------------ */} + {!isMobile && ( + + + {/* ----------------------- DEPOSIT CARD ----------------------- */} + + + + Deposit Account + + ({ + value: acc.stAccountNo, + label: `${acc.stAccountType}- ${acc.stAccountNo}`, + }))} + value={selectedLN} + // @ts-ignore + onChange={setSelectedLN} + size="xs" + styles={{ + input: { backgroundColor: "white", color: "black", marginLeft: 30, width: 140 } + }} + /> + + + {selectedLNData?.stAccountNo} + + + {showBalance + ? `₹${Number(selectedLNData?.stAvailableBalance || 0).toLocaleString("en-IN")}` + : "****"} + + + + + + {/* ----------------------- QUICK LINKS ----------------------- */} + + Quick Links + + + + + + + + + + + + )} + + {/* ----------------------- MOBILE VERSION STAYS SAME ----------------------- */} + {isMobile && ( {/* Deposit Account Card */} @@ -262,7 +416,7 @@ export default function Home() { backgroundColor: "white", color: "black", marginLeft: 5, - width: "120px", + width: "150px", }, }} /> @@ -333,157 +487,19 @@ export default function Home() { - ) : ( - - {/* Desktop Cards */} - {/* Deposit Account Card */} - - - - Deposit Account - {depositAccounts.length > 0 ? ( - ({ - value: acc.stAccountNo, - label: `${acc.stAccountType}- ${acc.stAccountNo}`, - }))} - value={selectedLN} - // @ts-ignore - onChange={setSelectedLN} - size="xs" - styles={{ - input: { - backgroundColor: "white", - color: "black", - marginLeft: 30, - width: 140, - }, - }} - /> - ) : ( - - No loan account available - - )} - - - {loanAccounts.length > 0 ? ( - <> - {Number(selectedLNData?.stAccountNo || 0)} - - {showBalance ? `₹${Number(selectedLNData?.stAvailableBalance || 0).toLocaleString("en-IN")}` : "****"} - - - - ) : ( - <> - - Apply for a loan account to get started - - - - )} - - - {/* Important Links Card */} - - - Quick Links - - - - - - - - - )} - {/* Notes Section */} - + {/* -------------------- NOTES SECTION (BOTTOM) --------------------- */} + ** Book Balance includes uncleared effect. - ** Click on the "Show Balance" to display balance for the Deposit and Loan account. + ** Click "Show Balance" to display account balances. ** Your Password will expire in {PassExpiryRemains} days. + ); diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 53a7b21..1ab12d8 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -48,26 +48,26 @@ export default function RootLayout({ children }: { children: React.ReactNode }) }; // When reload and click on back then logout - // useEffect(() => { - // // Push fake history state to trap navigation - // window.history.pushState(null, "", window.location.href); - // const handlePopState = () => { - // doLogout(); // logout when back/forward pressed - // }; - // const handleBeforeUnload = (e: BeforeUnloadEvent) => { - // // logout on tab close / refresh - // localStorage.removeItem("access_token"); - // sessionStorage.removeItem("access_token"); - // localStorage.clear(); - // sessionStorage.clear(); - // }; - // window.addEventListener("popstate", handlePopState); - // window.addEventListener("beforeunload", handleBeforeUnload); - // return () => { - // window.removeEventListener("popstate", handlePopState); - // window.addEventListener("beforeunload", handleBeforeUnload); - // }; - // }, []); + useEffect(() => { + // Push fake history state to trap navigation + window.history.pushState(null, "", window.location.href); + const handlePopState = () => { + doLogout(); // logout when back/forward pressed + }; + const handleBeforeUnload = (e: BeforeUnloadEvent) => { + // logout on tab close / refresh + localStorage.removeItem("access_token"); + sessionStorage.removeItem("access_token"); + localStorage.clear(); + sessionStorage.clear(); + }; + window.addEventListener("popstate", handlePopState); + window.addEventListener("beforeunload", handleBeforeUnload); + return () => { + window.removeEventListener("popstate", handlePopState); + window.addEventListener("beforeunload", handleBeforeUnload); + }; + }, []); useEffect(() => { const token = localStorage.getItem("access_token"); @@ -183,7 +183,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) { href: "/home", label: "Home", icon: IconHome }, { href: "/accounts", label: "Accounts", icon: IconWallet }, { href: "/funds_transfer", label: "Fund Transfer", icon: IconSend }, - { href: "/beneficiary/add_beneficiary", label: "Beneficiaries", icon: IconUsers }, + { href: "/beneficiary", label: "Beneficiaries", icon: IconUsers }, { href: "/settings", label: "Settings", icon: IconSettings }, ]; @@ -200,154 +200,165 @@ export default function RootLayout({ children }: { children: React.ReactNode }) className={styles.header} style={{ width: "100%", - padding: "0.8rem 2rem", + padding: isMobile ? "0.6rem 1rem" : "0.8rem 2rem", background: darkMode - ? "linear-gradient(15deg, rgba(229, 101, 22, 1) 55%, rgba(28, 28, 30, 1) 100%)" // Dark Mode Gradient - : "linear-gradient(deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%)", // Light Mode Gradient + ? "linear-gradient(15deg, rgba(229, 101, 22, 1) 55%, rgba(28, 28, 30, 1) 100%)" + : "linear-gradient(15deg, rgba(10, 114, 40, 1) 55%, rgba(101, 101, 184, 1) 100%)", alignItems: "center", justifyContent: "space-between", color: "white", boxShadow: "0 2px 6px rgba(0,0,0,0.15)", position: "sticky", top: 0, - zIndex: 100, + zIndex: 200, // ↑ Increased for stability }} > - + ebanking +
- + <Title + order={isMobile ? 4 : 3} + style={{ + fontFamily: "Roboto", + color: "white", + marginBottom: 2, + fontSize: isMobile ? "14px" : "22px", + lineHeight: 1.2, + }} + > THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. - - Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 - + + {!isMobile && ( + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + )}
- {/* Dark/Light Mode Toggle using Moon and Sun Icons */} - - {/* */} - - + {/* USER BUTTON */} + + + + + + + + + {custname} + Full Name + + + + + {userLastLoginDetails + ? new Date(userLastLoginDetails).toLocaleString() + : "N/A"} + + Last Login + + + + - - - - - - {custname} - Full Name - - - - {userLastLoginDetails - ? new Date(userLastLoginDetails).toLocaleString() - : "N/A"} - - Last Login - - - - - - - - - - + + +
- {/* WELCOME + NAV */} + {/* NAVBAR — desktop unchanged, mobile scrollable */} - {navItems.map((item) => { const isActive = pathname.startsWith(item.href); const Icon = item.icon; return ( - + - - + {item.label} - ); })} - {/* CHILDREN */} + {/* CONTENT */} - {/* FOOTER */} + {/* FOOTER (desktop same, mobile stacked) */} ({ - borderTop: `1px solid `, - backgroundColor: 'rgba(60, 54, 74, 1)', - paddingTop: '2rem', - paddingBottom: '2rem', - })} + style={{ + backgroundColor: "rgba(60, 54, 74, 1)", + paddingTop: "2rem", + paddingBottom: "2rem", + color: "white", + }} > - + + ebanking
- - The Kangra Central - + The Kangra Central Co-operative Bank Ltd
- Serving the community since inception. We are committed to providing quality - banking services with personalized care and customer satisfaction. + Serving the community since inception.
- - Quick Links - + Quick Links - - About Us - - - Products & Services - - - Help & Support - - - Terms & Conditions - + About Us + Products & Services + Help & Support - - Contact Us - + Contact Us - - Phone: +91-1800-1808008 - - - Hours: Mon-Fri 10:00 AM - 4:00 PM - - - Sat 10:00 AM - 2:00 PM - + Phone: +91-1800-1808008 + Mon–Fri 10 AM – 4 PM + Sat 10 AM – 2 PM +
({ - borderTop: `1px solid ` - })} + style={{ borderTop: "1px solid rgba(255,255,255,0.2)", marginTop: 20, paddingTop: 20 }} > - © 2025 The Kangra Central Co-operative Bank Ltd. All rights reserved. | Privacy Policy | - Security + © 2025 The Kangra Central Co-operative Bank Ltd. All rights reserved.
+
- + ); + } } diff --git a/src/app/(main)/settings/change_txn_password/page.tsx b/src/app/(main)/settings/change_txn_password/page.tsx index 1c06225..d3d8ad6 100644 --- a/src/app/(main)/settings/change_txn_password/page.tsx +++ b/src/app/(main)/settings/change_txn_password/page.tsx @@ -240,7 +240,7 @@ export default function ChangePassword() { }; return ( - + Change Transaction Password diff --git a/src/app/(main)/settings/page.tsx b/src/app/(main)/settings/page.tsx index b69377e..cbc1453 100644 --- a/src/app/(main)/settings/page.tsx +++ b/src/app/(main)/settings/page.tsx @@ -107,7 +107,7 @@ export default function ViewProfile() { ); return ( - + View Profile diff --git a/src/app/(main)/settings/set_txn_limit/page.tsx b/src/app/(main)/settings/set_txn_limit/page.tsx index b9a2d0b..a13f241 100644 --- a/src/app/(main)/settings/set_txn_limit/page.tsx +++ b/src/app/(main)/settings/set_txn_limit/page.tsx @@ -224,7 +224,7 @@ export default function SetTransactionLimit() { }; return ( - + Set Transaction Limit @@ -237,9 +237,13 @@ export default function SetTransactionLimit() { value={limit} onChange={(e) => { const val = e.currentTarget.value; - // Only allow digits + + // Allow only digits AND max value 500000 if (/^\d*$/.test(val)) { - setLimit(val); + const num = Number(val); + if (num <= 500000) { + setLimit(val); + } } }} leftSection={icon} @@ -247,6 +251,7 @@ export default function SetTransactionLimit() { mb="sm" readOnly={step !== "form"} /> + {dailyLimit !== null ? ( diff --git a/src/app/(main)/settings/set_txn_password/page.tsx b/src/app/(main)/settings/set_txn_password/page.tsx index 5b67132..99cda88 100644 --- a/src/app/(main)/settings/set_txn_password/page.tsx +++ b/src/app/(main)/settings/set_txn_password/page.tsx @@ -240,7 +240,7 @@ export default function ChangePassword() { }; return ( - + Set Transaction Password diff --git a/src/app/(main)/settings/user_name/page.tsx b/src/app/(main)/settings/user_name/page.tsx index 6dfc317..fc29b2c 100644 --- a/src/app/(main)/settings/user_name/page.tsx +++ b/src/app/(main)/settings/user_name/page.tsx @@ -261,7 +261,7 @@ export default function SetPreferredNameSimple() { if (loading) return Loading...; return ( - + Set Preferred Name diff --git a/src/app/ATMLocator/page.tsx b/src/app/ATMLocator/page.tsx new file mode 100644 index 0000000..dda8328 --- /dev/null +++ b/src/app/ATMLocator/page.tsx @@ -0,0 +1,232 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { Box, Button, Group, Stack, Text, Paper, Collapse, Title, Image } from "@mantine/core"; +import { IconChevronDown, IconChevronUp } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useMediaQuery } from "@mantine/hooks"; +import NextImage from "next/image"; +import logo from "@/app/image/logo1.jpg"; + +export default function ATMListPage() { + const [atms, setAtms] = useState([]); + const [openedIndex, setOpenedIndex] = useState(null); + const [authorized, setAuthorized] = useState(null); + + const isMobile = useMediaQuery("(max-width: 768px)"); + const router = useRouter(); + + // ✔ Authorization Check + useEffect(() => { + const token = localStorage.getItem("access_token"); + if (!token) { + setAuthorized(false); + router.push("/login"); + } else { + setAuthorized(true); + } + }, []); + + // ✔ Fetch ATM Data + useEffect(() => { + async function fetchData() { + try { + const token = localStorage.getItem("access_token"); + const response = await fetch("/api/atm", { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + Authorization: `Bearer ${token}`, + }, + }); + + const result = await response.json(); + + const list = Array.isArray(result) + ? result + : Array.isArray(result.data) + ? result.data + : []; + + setAtms(list); + } catch (error) { + console.error("ATM list API error:", error); + setAtms([]); + } + } + + if (authorized) fetchData(); + }, [authorized]); + + // Wait until auth is checked + if (authorized === null) return null; + + const toggleRow = (index: number) => { + setOpenedIndex((prev) => (prev === index ? null : index)); + }; + + return ( + + {/* HEADER */} + + + ebanking +
+ + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + {!isMobile && ( + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + )} +
+
+
+ + {/* SECOND FIXED BAR */} + + + List of Available ATMs + + + + + + {/* SCROLLABLE CONTENT */} + + + {atms.map((atm: any, index: number) => { + const isOpen = openedIndex === index; + + return ( + + + + {atm.name} + + + + + + {/* ATM Extra Info */} + + + + ATM Name: {atm.name} + + + + Availability: 24x7 + + + + Type: Cash Withdrawal Only + + + + Status:{" "} + Active + + + + + ); + })} + + + + {/* FOOTER */} + + + © 2025 KCC Bank. All rights reserved. + + +
+ ); +} diff --git a/src/app/BranchLocator/page.tsx b/src/app/BranchLocator/page.tsx new file mode 100644 index 0000000..b4dcd74 --- /dev/null +++ b/src/app/BranchLocator/page.tsx @@ -0,0 +1,254 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { Box, Button, Group, Stack, Text, Paper, Collapse, Title, Image } from "@mantine/core"; +import { IconChevronDown, IconChevronUp } from "@tabler/icons-react"; +import NextImage from 'next/image'; +import logo from '@/app/image/logo1.jpg'; +import { useRouter } from "next/navigation"; +import { useMediaQuery } from "@mantine/hooks"; + +export default function BranchListPage() { + const [branches, setBranches] = useState([]); + const [openedIndex, setOpenedIndex] = useState(null); + const [authorized, SetAuthorized] = useState(null); + const isMobile = useMediaQuery("(max-width: 768px)"); + const router = useRouter(); + + // Fetch branch API + useEffect(() => { + async function fetchData() { + try { + const token = localStorage.getItem("access_token"); + const response = await fetch('api/branch', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + "X-Login-Type": "IB", + 'Authorization': `Bearer ${token}` + }, + }); + const result = await response.json(); + + // Handle any response shape + const list = + Array.isArray(result) ? result : + Array.isArray(result.data) ? result.data : + Array.isArray(result.branches) ? result.branches : + []; + + setBranches(list); + } catch (error) { + console.error("Error fetching branches:", error); + setBranches([]); + } + } + + fetchData(); + }, []); + + useEffect(() => { + const token = localStorage.getItem("access_token"); + if (!token) { + SetAuthorized(false); + router.push("/login"); + } + else { + SetAuthorized(true); + } + }, []); + + + const toggleRow = (index: number) => { + setOpenedIndex((prev) => (prev === index ? null : index)); + }; + + if (authorized === null) { + return null; // Prevent rendering until check is done + } + return ( + + {/* HEADER */} + + + ebanking +
+ + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + {!isMobile && ( + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + )} +
+
+
+ + {/* SECOND FIXED BAR */} + + + List of Branches + + + + + + {/* SCROLLABLE CONTENT */} + + + {branches.map((branch: any, index: number) => { + const isOpen = openedIndex === index; + + return ( + + + + {branch.branch_name} + + + + + + + + + Branch Code: {branch.branch_code} + + + + Zone: {branch.zone} + + + + Tehsil: {branch.tehsil} + + + + Block: {branch.block} + + + + District: {branch.distt_name} + + + + Pincode: {branch.pincode} + + + + + Telephone: + {" "} + + {branch.telephone_no} + + + + + + ); + })} + + + + {/* FOOTER */} + + + © 2025 KCC Bank. All rights reserved. + + +
+ ); + +} diff --git a/src/app/CustomerCare/page.tsx b/src/app/CustomerCare/page.tsx new file mode 100644 index 0000000..13a1fa8 --- /dev/null +++ b/src/app/CustomerCare/page.tsx @@ -0,0 +1,243 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { + Box, + Button, + Group, + Stack, + Text, + Paper, + Title, + Image, +} from "@mantine/core"; +import { IconMail, IconPhone, IconChevronLeft } from "@tabler/icons-react"; +import { useMediaQuery } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import NextImage from "next/image"; +import logo from "@/app/image/logo1.jpg"; + +export default function EnquiryPage() { + const isMobile = useMediaQuery("(max-width: 768px)"); + const router = useRouter(); + + // FAKE CONTACT LIST — replace with your API if needed + const contacts = [ + { + title: "Chairman", + email: "chairman@kccb.in", + phone: "01892-222677", + }, + { + title: "Managing Director", + email: "md@kccb.in", + phone: "01892-224960", + }, + { + title: "General Manager (West)", + email: "gmw@kccb.in", + phone: "01892-223280", + }, + { + title: "General Manager (North)", + email: "gmn@kccb.in", + phone: "01892-224607", + }, + ]; + + return ( + + {/* HEADER */} + + router.back()} + /> + + + ebanking + +
+ + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + {!isMobile && ( + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + )} +
+
+
+ + {/* SECOND BAR */} + + + Customer Care + + + + + + {/* BODY CONTENT */} + + + {/* Complaint Form */} + + Complaint Form + + + + {/* Key Contacts Title */} + + Key Contacts + + + {/* 2-COLUMN GRID */} + + {contacts.map((contact, index) => ( + + + {contact.title} + + + + + {contact.email} + + + + + {contact.phone} + + + ))} + + + + + {/* FOOTER */} + + + © 2025 KCC Bank. All rights reserved. + + +
+ ); +} diff --git a/src/app/FAQs/page.tsx b/src/app/FAQs/page.tsx new file mode 100644 index 0000000..61f2a69 --- /dev/null +++ b/src/app/FAQs/page.tsx @@ -0,0 +1,243 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { + Box, + Button, + Group, + Stack, + Text, + Paper, + Collapse, + Title, + Image, +} from "@mantine/core"; +import { IconChevronLeft, IconChevronDown, IconChevronUp } from "@tabler/icons-react"; +import { useMediaQuery } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import NextImage from "next/image"; +import logo from "@/app/image/logo1.jpg"; + +export default function FAQPage() { + const isMobile = useMediaQuery("(max-width: 768px)"); + const router = useRouter(); + const [openedIndex, setOpenedIndex] = useState(null); + + const toggleRow = (index: number) => { + setOpenedIndex((prev) => (prev === index ? null : index)); + }; + + // FAQ DATA + const faqs = [ + { + question: "How do I log in to the Internet Banking portal?", + answer: + "Open the login page and enter your User ID and Password. You may also be required to verify using an OTP sent to your registered mobile number.", + }, + { + question: "Is my banking information secure on this app?", + answer: + "Yes. All transactions are fully encrypted. We use multi-factor authentication, secure session management, and industry-standard protection mechanisms.", + }, + { + question: "How can I check my account balance?", + answer: + "Go to the Accounts section after logging in. All your linked accounts and available balances will be displayed instantly.", + }, + { + question: "Can I transfer money to other bank accounts?", + answer: + "Yes. You can transfer funds using NEFT, RTGS, IMPS, or within-bank transfers. Add a beneficiary before initiating a transfer.", + }, + { + question: "How do I view my transaction history?", + answer: + "Open the 'Account Statement' or 'Transactions' tab. You can filter by date, download a PDF.", + }, + // { + // question: "What should I do if I forget my Internet Banking password?", + // answer: + // "Use the 'Forgot Password' option on the login page and follow the steps to reset your password using OTP verification.", + // }, + { + question: "How do I update my mobile number or email ID?", + answer: + "You can update your contact details by visiting your nearest branch.", + }, + { + question: "What should I do if my account gets locked?", + answer: + "Your account may lock after multiple incorrect login attempts. To unlock your Internet Banking access, please visit your nearest KCC Bank branch or contact customer care.", + }, + ]; + + return ( + + {/* HEADER */} + + router.back()} + /> + + + ebanking + +
+ + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. + + {!isMobile && ( + + Head Office: Dharmshala, District Kangra (H.P), Pin: 176215 + + )} +
+
+
+ + {/* SECOND BAR */} + + + Frequently Asked Questions + + + + + + {/* BODY CONTENT */} + + + + {faqs.map((item, index) => { + const isOpen = openedIndex === index; + + return ( + + {/* QUESTION */} + toggleRow(index)} + > + + {item.question} + + + {isOpen ? ( + + ) : ( + + )} + + + {/* ANSWER */} + + + {item.answer} + + + + ); + })} + + + + + {/* FOOTER */} + + + © 2025 KCC Bank. All rights reserved. + + +
+ ); +} diff --git a/src/app/_themes/KccbTheme.ts b/src/app/_themes/KccbTheme.ts index 7d2c0e7..35f5c92 100644 --- a/src/app/_themes/KccbTheme.ts +++ b/src/app/_themes/KccbTheme.ts @@ -2,14 +2,14 @@ import { MantineColorsTuple, createTheme } from "@mantine/core"; -const KccbColors: MantineColorsTuple = [ - "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", - "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0d47a1" -]; // const KccbColors: MantineColorsTuple = [ -// "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", // Lighter greens -// "#4caf50", "#43a047", "#388e3c", "#2c6f2c", "#1b5e20" // Darker greens +// "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", +// "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0d47a1" // ]; +const KccbColors: MantineColorsTuple = [ + "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", // Lighter greens + "#4caf50", "#43a047", "#388e3c", "#2c6f2c", "#1b5e20" // Darker greens +]; export const KccbTheme = createTheme({ diff --git a/src/app/_util/otp.ts b/src/app/_util/otp.ts index 0e1fc67..7a70463 100644 --- a/src/app/_util/otp.ts +++ b/src/app/_util/otp.ts @@ -14,8 +14,8 @@ interface SendOtpPayload { } function getStoredMobileNumber(): string { - // const mobileNumber = localStorage.getItem('remitter_mobile_no'); - const mobileNumber = "7890544527"; + const mobileNumber = localStorage.getItem('remitter_mobile_no'); + // const mobileNumber = "7890544527"; if (!mobileNumber) throw new Error('Mobile number not found.'); return mobileNumber; } diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 4c51977..46fa1fc 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -45,9 +45,9 @@ export default function Login() { } try { - // await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: mobile }); const maskedCIF = CIF?.replace(/.(?=.{3})/g, '*'); - await sendOtp({ type: 'LOGIN_OTP', username: maskedCIF, mobileNumber: "7890544527" }); + await sendOtp({ type: 'LOGIN_OTP', username: CIF, mobileNumber: mobile }); + // await sendOtp({ type: 'LOGIN_OTP', username: maskedCIF, mobileNumber: "7890544527" }); notifications.show({ color: 'orange', title: 'OTP Required', @@ -68,8 +68,8 @@ export default function Login() { async function handleVerifyOtp(mobile?: string) { try { if (mobile) { - // await verifyLoginOtp(otp, mobile); - await verifyLoginOtp(otp, '7890544527'); + await verifyLoginOtp(otp, mobile); + // await verifyLoginOtp(otp, '7890544527'); return true; } } From cf9faf2e82c363f7cae2845d4df50aaa2936de7e Mon Sep 17 00:00:00 2001 From: "tomosa.sarkar" Date: Fri, 28 Nov 2025 17:14:59 +0530 Subject: [PATCH 13/21] fix: Create report for pdf and excel feat: Change design the Application --- package-lock.json | 934 +++++++++++++++++- package.json | 1 + public/kccb_watermark.png | Bin 0 -> 78237 bytes .../account_statement/accountStatement.tsx | 25 +- .../add_beneficiary/addBeneficiaryOthers.tsx | 27 +- .../beneficiary/add_beneficiary/page.tsx | 322 ++++++ src/app/(main)/beneficiary/layout.tsx | 4 +- src/app/(main)/beneficiary/page.tsx | 320 +----- .../beneficiary/view_beneficiary/page.tsx | 11 +- .../funds_transfer/send_beneficiary/page.tsx | 4 +- .../sendBeneficiaryOthers.tsx | 2 +- src/app/(main)/home/page.tsx | 2 +- .../statement_download/CsvGenerator.tsx | 659 +++++++++++- .../statement_download/PdfGenerator.tsx | 410 ++++++-- src/app/_util/userdetails.ts | 10 +- src/app/image/ib_front_2.jpg | Bin 0 -> 176535 bytes src/app/login/page.tsx | 3 +- 17 files changed, 2252 insertions(+), 482 deletions(-) create mode 100644 public/kccb_watermark.png create mode 100644 src/app/(main)/beneficiary/add_beneficiary/page.tsx create mode 100644 src/app/image/ib_front_2.jpg diff --git a/package-lock.json b/package-lock.json index 013e48a..b3be1b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "date-fns": "^3.6.0", "dayjs": "^1.11.11", "embla-carousel-react": "^8.6.0", + "exceljs": "^4.4.0", "html2pdf.js": "^0.12.0", "ib": "file:", "IB": "file:", @@ -208,6 +209,47 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "license": "MIT", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "license": "MIT" + }, "node_modules/@floating-ui/core": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", @@ -1805,6 +1847,124 @@ "node": ">=0.2.6" } }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2093,6 +2253,69 @@ "node": ">=10.0.0" } }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -2144,6 +2367,32 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -2278,6 +2527,18 @@ "casbin": "^5.1.2" } }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2454,11 +2715,25 @@ "node": ">=14" } }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/cookie": { "version": "0.7.2", @@ -2479,6 +2754,37 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2924,6 +3230,51 @@ "node": ">= 0.4" } }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2964,6 +3315,15 @@ "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", @@ -3694,6 +4054,48 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "peer": true }, + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "license": "MIT", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/exceljs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "license": "MIT", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3905,11 +4307,88 @@ "node": ">= 6" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fstream/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, "node_modules/function-bind": { "version": "1.1.2", @@ -4332,6 +4811,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -4362,7 +4847,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4967,6 +5451,60 @@ "node": ">=4.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/kareem": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", @@ -5094,6 +5632,54 @@ "node": ">=0.10" } }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5107,6 +5693,21 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", + "license": "ISC" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5127,12 +5728,91 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "license": "MIT" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "license": "MIT" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, "node_modules/logform": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", @@ -5253,7 +5933,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5266,6 +5945,18 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mongodb": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.18.0.tgz", @@ -5503,6 +6194,15 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5621,7 +6321,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5742,7 +6441,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -6112,6 +6810,12 @@ "node": ">= 0.8.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -6363,6 +7067,27 @@ "node": ">= 6" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/recharts": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", @@ -6703,6 +7428,18 @@ "node": ">=10" } }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -6767,6 +7504,12 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/sha.js": { "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", @@ -7347,6 +8090,22 @@ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tarn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", @@ -7433,6 +8192,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tmp": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/to-buffer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", @@ -7469,6 +8237,15 @@ "node": ">=18" } }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -7843,6 +8620,60 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "license": "MIT", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -8249,8 +9080,13 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", @@ -8327,6 +9163,84 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "license": "MIT", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/zip-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/zip-stream/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } } } } diff --git a/package.json b/package.json index 8f40dfc..a2b951c 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "date-fns": "^3.6.0", "dayjs": "^1.11.11", "embla-carousel-react": "^8.6.0", + "exceljs": "^4.4.0", "html2pdf.js": "^0.12.0", "ib": "file:", "IB": "file:", diff --git a/public/kccb_watermark.png b/public/kccb_watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa529c7cf70ce5cbe6051aa5fea70f8712554de GIT binary patch literal 78237 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

    (^#k{ zo$wWx{zMq2k6JUU8N3cY+mCoUzQg(Tb&3@kIHPn7UR%zSQQ`-1`J=Vro0*Z9NSzSt zs0HN#!V2MzbLKP1KmM~!+w83UUl6Yl{wt_GgUuZ9x5+Bti!58>Hv~;o34(xULKwX?YsC=#a$tNsdCN)*^vH_z>e*iQ%6u?{rfxI zc)H}9!i7h#r!ZP?YlAV>SXj~-_t=N}#ox1(?>;SbHGHRV7IzV}HzcDWQNJ>2-5A|x zqL$ZQ_Do8&<9ilX@o*_D32%cvkAXE#kp{9Jf0o(2WPDTKXib^ehw4Bd3MJ4JTa`*3 zI+VbQJwJ{0G+}~W@ws3$wx75+(x2OIep#@A=%2 z)!=T}eswGHhX4a$!%}eqc3B;FM`~BR_>&RzWtW!XG6-PIMdk|3uNov=Fzy9c`bB!T z9hSxI?+}X@)qMpegKy<}404$BP2-~n!zh9A%piw@4iZnCME`dWomt>XE9wOiz{+4b zBQX&;I|I_ALHtElzn;o~xt`yJHxs#g*y^kCc8hN~%*`uIQ9yQ4ML(=eot5+RyNq9t)j}rEhK_5!Wtn_`6+A`FUK`os7LQ!Bjybw<&D5vz%^Z0e$$v{SK-x{afuRV0yCHXH);lhCSXS z*O?rRxL%=Y1-c6FKLjhFk8bB@KWrOc8zcM#jsyKD2jyNVkykRlE6!(C0Jc9RN&2w` z5Vt~zrPW9QKw1Kcw1jsoXo8cZ?3WBVMTuNaRrB+a@ zVKiUrI1)1#g#j^ho+4k#V50PLCkK7__$EYxBWFzYD!H`3t{w0)oQoqyut5y3@hLIq zL+G3{UsQJ!Lkx{|Zj&X%`M3ell>5~`pMmeRXmFdh+9AW&(M#b(DnelSNk zIfZ!;vOMJ)|iC*cKkWIbEyXW@W7ZIr;eV4#gx zO3roQuff)gI&qSz!ZhVI1KvD1(wZuRO%$p@ch@r(?({_%eWyWLexQ{)zAV0cxI+E~ zV?`g6Ssp|Cc3ygpneSM00vkD|wgj~j=f@PB?!?`{c}D7vPSdG9sTO$+K2;@?I6hvb zFGig0aC_va!!00M^b+PWAn^CoCu+QN_ukmcO=Q`(OPO|WT`-*wzJqN9a0e-;;#Z0d zzny$%p!8MQ(AgdMkNofXvg`~DbF2<7v#rfkx^vJbD&1z8toQ2Phh`O2o1=Akr?1t1 zk?z`i-6dTrs%aFtZ+!oP-qM$}C%6EqPJT;)k4lI6Ztmkta6`@E%*g59rLQ&3rbcIf*2~nUP9qo)j5rC`)#K^;XZ7NV`pgI?Uv*Z`ugQo$X}wql1p7|uk<|_W7Jl1f-@|tKbhcY zQR{|}s1?!L(4Foqsm*hD_Ua_n`q5F44VTL=JS8ewzr=n@+fOy@lav>o^j}yv+J4o+E^P!!8K7NNizZ>4~>@<5a5BuQ6 zj#;4sLOhOTZiAQQupLp9HnBQ`!t(u$(AT2E@-!K_I=L+MO+425aLtNrs}h##H+*29 z1G~QX@d2`;UUC4IK0a;p(=r_uGMMnd=Zr60Gv43}Eaqu-B=~d+(?)75ukexpVKoG( zWFX)(oeH#Y09t_v7zpoZ0Jun|_ig0pK)LoxTW4$<(6oV88#$;5oTQ`mr+DWiZ;**j z+&urq-w9ZCqCYaeF+EZ}XlKbODQQyb^E9MC3TDT)&dGvi<39E6Q{rOM?5!tG9N(Dk zX)1gt&<1aTO*6%RK}dtifaL}rKHDRH_u&xrjmpu7MTe_Zp$o%*8iORb2_dL)CoqAA z;3gEicuO@X|4Y`l&xs6|Cd1A zccOpaQc5t&6_;N3SeZ`Tlsh#qhS3z3n#aK(-E83b0(JCiEy$)Q+Dvg`rB`9`WL)Rvde<&}u~xIj z&Vsv>bK`R(Oc$otpWK&`T;sn7>IV29t=l3eTBSs)yE(3FM{OzdDM3i1`<=5}{4$P- z|CdIhtnshzaulD+OVS@b7}_5ZN(X9GGqWwp(fi!dn+$ervZ{g((|47GxZWNjZA7(Z z#74gnTr#b7=B{se!+T8gmL!E6sv`^c&0#jR%V3Z#!7_{0!< z`SWvo5mB0!eV>gi8Dzj+MPbtOp0r4;N_8BVol#0wUwYGWRjS300o6!Df&Fj~BlJWZ zWXanyJ*>X}&WvDP)35S!=NKEK7HC`GcMyt$JJ98qqrs8{&t{Hinj6+pmWS8Xsj#4> z%(rODcR$aA3rO~v5wAd?r_^esUO!I`u0TCMDFI!~;L;F#Zh}E>3+&M4_J2G`t9tT& zJEu$T)GFdQ0XWu^KTKf{>-1$8&738I&P<4*m%<*991Kl>HBvS|?)Pd0&2>TU z?#I1#h(=s1zx7(I!}w~3O$bbs+UOWc8ahMUpf`>d=9GrQ3Fr#r+N;Cq$1kr)$Q zB4w=jsUSDy&U~K(v}*3r-_3-%KqL)_qnS&1iQx{%v&D60Lm~YUkw7GgerTYAS#1cx zqyiyG>tkWHm8AG{F)CIz%w65=mRP36)$cUJT8-#2V9~04oXyWDJ{C~4OSQ)MLPXXpXpl^V)n8t`IOx zp}skv6%SSHuPEQjeP-@r%@p(6dTVUsYayIs>)nogDyvMobh-r_jQq06II~8^ea7r;AXL+M)I}P#p+wi(+gcOcjxKwY{$sV+H)c+|&qYF=)o_x0 z(=qb+nWptSsb7y%v^8Srw-a%4TaCY0eQgv@m zBfw;v&Fv2PU9_%mUjpo#mYfs~8+7o=UR5~G4nDI~%epol1f+eWX2e*PZ2&YDl&AJW z`1@9O4pR}U=Op(N$Ace&PC_o<{ch9uyn)Leii3V`s%&WOMQ(66j3xuK&2|>uvu=it zI1nf(?HN#m>HzEjYGR1U)N(YC7H9rwFcMC0RTI5_1Z! zhLX2|lo`U2C!}@@Z10xTzNrLsP=LRH5Fc3^jBA8|VDX|DN>_n*SOW~I3C1XA=P-k& z8e??MX3qU+ewcjoJ()V+a@o=R&3J%of%{mwjS`b+)15oh<(9$pI6jc};leNmgnr(O zMpeqoU}cXJN0*qI+n$P9@czEC8=@FZLLkKkfGTa#Q)b&V8f^1pRq>pC(zwU9wk&lE$jOJUQ+iHdP)-31T5e zlxH14Y$}!%S4wHLaxhTj{y591!T%g#%ioH|aH+&loU@a&tJTtO+D<0UDjlqOOD4Ps zn$~(e`s`BCD=!oGfww&e_0CgM>@&%4+gRp@8qD=2?r6UiBD4F#yRG*F&PGnffIQiK z`D*=op9POr4TcJ*^WX&oVdZGirD zh!huun~sSW^6MK72QihAwzj#lu`3K8M0J!1xyHA z)YLt0-gzlqP(PBjgWg5p3&dTJX-u?j-OH1LMDVXpt;N_1(7#BUe0OSg`pe{rgxhtr z%nYDlH^?795og}_?6hd!8=JW1r#nvTYt8w)Ru>U#^+hD8)lQjlU-|;? znKOW_?Z(~ZC8fAHMyb^=XUpO?KLlN&VJISM)k|WRM4Fp*3i0y+ZTk^+q-l7*3qd_a z?jBvY?z{wql|d||Gp>?V#shJJC~-?3*9e*WNpcsOdX)W9i0j>Rc%rh0-H#7izu7)p zyS?NF%~86fV0miJ1>73m7AZ^2b#R6=6N5#TJ7M8pCT%A6Kh#mSD>PQYQ5A|LC%Uek z*hSS4M~5|~Ooy#$khfEw*TIro*7sK9K6V*k3?nEi`bF5NQVte=PEmNgWKoQ5JXQ-) za6s)h_W;^%kcruvkNrDZglbHUcU+bQsjXzTCl_`C%x7~zyFMn!>6Jsg_=TQ{mte@w zAaC)@p$jYUxlKAWIEB%05+BFe53Rp@;qpe*`3L2=QrONuRbbpQ!Xczy_+`k9#Ksn_ zBqgOhdT-NlX%q3K8so6Hq0()ot=ro741Rs~FNi+h_P}A;%Hi4F=pDfQJU^|mrwU&x z4;BsXIfz?@l|h@-UsEqKEi@S+vsJ!m@3W&u+N+LvH-n9+-jxoB7{qByb1+IcNwtq# z@`k;kpIuCERB3Y4Ba|@vNGbSsnQoWa$n_xPf=wHUTTh7^OAUGAR;8;HGTPOTmTykj zvNjWU%9I@~?bhgj)g>-zNOqev63qJmn2hs+5aaeB+Ssk`khH02GSvQG5Y7$Y=~ih- zKOJbjky8m!q|>5_>Xw!pJH9jJUVV}-zGvVLey*WI?L~-`0JXr+tVRdI=QE4I- zn4yTZs6=RL_)px;1>RaH0Eiu5y1) zWclFF+di5~=e8O*tyKr734{VR{Yv!tR5y+@Q}$xKTR$(hPK8{BKRS{Wq1n|=5=WkxpGdECNaxc8QuNn3;0R9fyp4=0q6eq%jd+xQ|9F5zb9EE zxr=6mfF&wro=N6m_F?^O2rbZF3msBm9;BK0QnB_V;5;8FfFzQnUf$8+bbZ zM2TD0OT3#Dunos^GLHACDRD!94Iiivj;;Z>0k-(>OVvNi*6*)L{^)eUr{uR9m$b;d zYT1xLzu{amjW|8LN`UoW?2|}7za>~|0r%VkV9y8;2n;N+K!5)D6szoLqM7EXNHy*n z9TllbX5lXueSt>i3^Fl^=qMYuz-XK4sU3O36iSiX0fsARpokihXIC&arWH z3oZ6}B{Rx(1iV5DtYot>5?Klc7R#X>%Uu(Eewho9;ySUU>A#*GW2o;JuUP_BD(#ll z+{8%=kE0^R$kY*QlwM?2^;P7>9eZ>T8%DvISfqHLRw|ct$!&^gp>7>Clyx)ul3#`L z2*mY)A(y6X z3ch`@=@#>tGkptetSaX3iT2%WnIp?CvLy_kLzN zoZ9_{k21OqQbcP>-ijj3^9HtM@3dD#6Vk}Z6kGtwj=;J$Eloc%=a0}~ki16ikp}8r zSNe5enu>b6^~Y$_4~#a%J6>vI@X8+;7bSTd77s@t;RXin9S znQH08S=`loh0NMde;JHs!hvG(ATdxPcFY)48DkzDUH08GU`V@xw&kYQER!3S#MD_K zy)5T@VC89TueZS~!`Q%$?aUb0lhe;n(is3J2p9w1B8}v`wm!|~mcEg3F4Js@VW|=g z2-dG#Nqa!V=di2qGJ376>AcRWhwYUltG5mBTWvo)O&xeWv}pc-PNna#p=KszI&n8b zf^(L&FU5<=I0R?n-B&-DU;1L3Au#Uz)6BvK85kLU@-xVjTCBx_?YnEW!U`NFAZ)i4 zEW7PL6H*Tbw@c|wst^z;l_VN>a0~v@pdY{%zRCl1G(mTU_2X^3^NVIs9as6)bxW|g z;8QL2HJl34#c7nWYuUq8_fR>wr7yTE_{6g&Nd+OKk=Ue?IekVS6Xag_m9@zL&l3}$ z^mQ5xBHi7jSLQ!f(|Yl%+z6Z^_*+EYQ`oO>>w=EPR?!>-DRDW#a&N}iO6Lq#X^@N& z?-R|u84%ryjTEFJ5jy5qEmdl5En|len93Q%lUfn%x3NZ3<_}w?IRHM!J#o6wMkSsH z^91nG58U#3e#LI|BwWbM)39&C>S5BG5CC#I&7i3b{f2a?`i$YUqe>}^Iq)Mt#II2% zybeJVcpT#>b2*weY4#d-Z9g~AbKQbYc?{Fcm`2L@h^LbVlN|8?GXP=Us1&sT9I_sf zL$(ZHYb+&>J9QlTvUKt#E!jg()S-$R%=J!88l{(5Gu{xst(&y>DEgiy$y=k^7k;IQ$(js~n z`wjoE@-(b&csJW=svHTKAi2V4E&gz92K9i7{8(x-#?S3 zvikVPr$ZfEH0-n3f?D@-t>9ZCf}Cm*Ln>U_wB%vSIXMdIXh7jtR(CRzs7+x9Oh-fT zrNKbxEET+o4Tg@>7+MYLq{rh|mGHB3^t3K%~zX?`Im|!f&?1 zWV#vj`TKi!OD?1rk6jmeZTiWmXzLEau7OR*MTU?3dM3F@AN_GL75U}!i?{6@`V`(q z*dB|b=@?2ug3`J&TT74sfVT9m0Ya{zX<3-){)@apadq2G=g0bKv@+^160{%SUVKwL zL<1%AtV(+wD|Tt?s2)pjJ_b=3(b+TFu!kaq{p;)#AGe`gak#E-|BZSQimm$NwOC># zmt;Rtdp0cy@2oKc1`O`^xFND4kQp8LHR^o~A|-GHI{ng|_Y}jGts&`lc-Q9qQ8rys zkFVcm8!kY&qtMJ=s@+xvWE+U$TEgzicd-D#&PV5zaSZfT68s|{I2q11ojO?9SF*|d z3w!0e{#nU0l1gFik)T!t&x7mzj6u1AMhP3u+!QC2bEEKK6+a(m?jwY?&Y2(U!I;L2 zKs2W{E@Kc4Zp&vMH*19{FbvqFs29{j-l3NScb_N^@=S!%Y`dAZ0n5puq5I;47l+Lh zg*Chb5no-UbF%5m-+b(KcnqBKty)+#X6qiN0)%G=o#T9Us_aa`1k1DaQWBiVIfHOeUXaWc3OI!KGZR%PCcv#~ih7SN)&Fu?<_NV-1Sn-h-PNyejF0gHvVIg< zy(`R{A-wzv7M8RBA?oZlV<~f9!Pc&=CN{67gsZ3Ng?JZdVYbMFP7WRhh)1j%M0Sac zE7XMi^N_C6G1||2XRownK5_9gI?T^Xa50ZV1P8am-+4_%NXWw2d^d*`3lyK0bu!jj zI=6<2Pi=RTdgsZC#YN2c=bJB?+6f|U1Um}n9Jmr5*Am)6%8oTw3}bV%SIAOtaJ|Ex z>CHIxWvhC=7xlxWJS^q{BQL$T$>@d+9L*q*ACTE>Dg@$$yON?O+~$pv`Lc4nx1tJL zd_-iHo5HTL!1PZn-%@0JUMNmH?o`-f{aXQv?F2T+!k1b=U*1eHcheRHXzL_5!Cf+_LR!o`j1okz9Cnk z8D!g;FTX8W$ec}5+qdq<`8s%I=Qx*HygI2Kd8IcJLeBgcRk^>7vom0h&;-PT5g;Dm zjB?fvGblhjl;$$$5s3$>4`1J>B`bahuDHv;1DhnXl)Z8b>P_A$&;<%?(6k6K5`{C~ zEe<0f28h^f06mP{BMN7d!DR71_AKUnBbo#UV|$i$gS$HM3}Qtme+$LkLMfRszXlqI zm$X(WP+-Xsd53qlqjJGc;~#;KN9QFp)lbsfMTz)LG*w-BO(kz#*wNl(;Rx+V^(_zm za;gp{wc;De$oWBT)3stw<|p^pRn$Vnvq07;P3~`YSYX`fCV=V?6T27Uyc1xzB+06 zp1)D~BJV0ggUMnurG-RRk=zLk#}BOC5+slMK_O?8 zH2QTU4VyN-X?y?X4SpeYuuO}{C;V?e7972n4JXfUc%!C6PTzHyg!SL=-3b6#f8Csu zKi~lk`Q0-V&lQhtv={sH5j}Ty6tQ_n;+dI4!QlQR$<{8aSKK0Ylc1f1*e-{C?I zc%cXxa2fH~&F(?l(ohp$HSH4dRqc|ooMA_lMBD0@xU#s$zxiVzp=ktbCxL|Kr$7Q@ z2H(#cPA{R*B=40Snv!>h4sM(wG^XzGuD>A0ZV0O2k@R;d)enaz6)@ya<8Hh5*&lEh zk~({I5bOS=f;9^oGxH(+)0O$82M*dCPzvd#3soxsa%4d9xohJ4tU z;$lNgYaX)$L0r29ZwJj~eE=t{2V5mstd8~sgc#bOU9=?WzX_ZWD>O(gd$4drZAjsv#<0p4U)>T%RZc;=r*3Y{k!Z$vk zcz?uX%e+q!eS4VA*2LzqLLOWk+yeMyPXzO4@?ClT6*yLX+wASi3D*)gHsM5ef641H zQ74uk1czU4x>%Ef?EUBu-A^0)*V-3Wq@vYqB*3d}9Tu!6sI;*G zzV?AV7OM9#!Q`y*P@tU2d-i)evvh3X{y$p>I<0J{Ft-qtjlwdOQ9DK7;Y+E-!eene z7NsGV3`YB3mAVx65_G>LXobaBrE+_8D9{Ig1%l0BYRU8&G)+Bqrh$XK4_B9WBSY(} zeSY~w(i$b&{1ylZBAyhE@{E+{zhl>f6qFh{HSe{m9(f{%{(fV?Y$WqfCX`PARg{om z(=(Qvl(Nzdg<-L(^7*|(XYB+k{Cw6VHvDNGOr7*93HhqjKcdi)TQs-y>A8hS%#7RT zLk?8yl~`5E46fH(vnvbabqR-UF^4Cmi$uzTD82Do-@9i(5BsP1NpSXCx&7RE_0 z4-+{V3W#}}$>WBpN3|SaL??hag|#2+ta;^}HiPaTX-*OUz?S^G2IuGf2K+DW3SA8x z73gpRKo9~yD%<)k4($=k>qfum;sD+sG*fWi&fxbrD3&}UkQ`$V3bKRzHa78g|2&{$ zl8@*Zic~sRnUr)A0_2ELw(QyV#jRGo<0j;YB4svji&WJ>mh880`>uE_cNbl<^dk?Q zk9oNxWqjccGcX7gr}ITnP~<56q&y?j@}}*6E0=DaxX{F6s>xEH>8$grcDw7lpdVpT zOO;DE`YuTe?x4caj$LEYYwJQdD29NKolzxLYsB%h0Kc2}Y8gNm7{?;!%|TvC%cdO8 z`AQnak-x)d?NztQ3L6PFB(TH%VSS;4cUSo7?}HfOWuD^jm-S>+ZCEMc2oW%)KdyHT z`8?=+`Nb(gZ=o-A=GUSw!~k$6>5@_R{kR8$$FQtO?FTME1Te<=OFVgsQxVWyk4R!% z_l37|FAQ=3TSx~~A}5u=j<%~O|2Ue}m|`O#RKFFCf0T{?8_$%HYJlVkr8k194S}10 zgbNuqwh_@Sl-uWZRJJYT-mDAz@+-0z9HZ4@NovhZau(H5KDq@=|L8fGI=n>a9|dKb zIw;LWKx4xxl4gxcSn?R)Xrzf_KbCkNJDvy^AN`5pp_#{zK5G~G@*qHxncy`iNrQKB zUn{B~;(F5Npbtu7DN-JsoQp#gPQ9O6Q_ltq8}~+*PTQpkzE|8`lMJDj@#~(Cwd9JS z;nnPWQJzf9#Tz8%;u&#&vwRkrbMLTiuX+A9$Oic7H)~{B4G4JD{)XVufWb zYMJrx(Uv@e7i%|uhJwy3rY{SK6C+RP+UtefFi=|Y^Qyqe@2j+2Fl&tf zMOl_9%lji0$rqxEgz!^x$@r~he@d+C-ikYoe49KrTcMS6u$Dl)OIk{MwF}__re#?V zT9|?m$`x0GhiL@G1pqJPyWbyD(#jB0gE`Z_cv(dj=@F~S6XVCjzBL{`6}iu}ZT&d? z639TYOuSRq@8+Nx&Rjy0?_Bm0soTn`ezS(p7E+ox)77NmF=G$~=A~zS{pXEVyqy}_ z#8`ULYtF`epE%rO;85GTqo=G1-k!3RZ&C5!?K$MeKzAQvrdp9urGjPAXF-~@XK(jf zx!x~}>jv4!G&<#z z_`c5xbO?(qkQmXM@@(!5I)<0E6M!$RjGb%E8`{RE6ZM3IOx9~4uq6X0z zpQCfm9|^ULbvWC?Ce!_y?2Yj%6QRHXq_541j+@-1H;92&$%nSf7h3guIeyccQhjy51yeHxe|B=VpOxg*=4UUh7Qac;|S|}meF*{`Pm#4eW7!4NQ8@rrYWNb z4$;wnK(QLkfCGy@g?+ztHKs9@+o3M*=Y5pB?m)}VXf1!`R20n|7w8~6AT)Gt(g;mQ~A30IAvOp9ODNT_|>nam_4|9GO9IHAPXl`6~3r}tOnH8q^r%zEA zTO?uY`Rx>;Gs;)zV}sPVIj+h_NTCYqXXK+?z6{d{SYe;dik;#7HmfYN(e01t<4y%%2b-2-($|s??|0@+03qEBenY+NBCCN> zMI4p0zr<&1g&!Z~J}&ryviWB|*D_~kRv`0|0qC-HcUv4z3gJkm1=bQHZ!uL=I?gi# zdIeDC*V6$kj;=GWwZ<|(Gg@JIr9z94!zswk@4m#rROs`C4Jt z?ep)X`fbT0TR)s?0I>L*mS*^SNQ=l?%50o#ZqHpd6>XrNpt@-ny4K$Z!0-a#U9N&+ zNcN}d{{Q?;mQWrjHXChFZ_55|$dhtee8Qp`*LFE;CEHt}&|OjYxuW#9o5eXG+=3{y zAkOaiT9uK5=_59~`8@;$U!Na|3Z}_(lnkw7Wed(Mo?CC)+oR^Kyso*rU-=L)dXt7_ zX%bBtC@~vkbo49A1oq3oHEOg-1&hz1l+B_} zo@3?>H(h@7(Tl|oGe6&=%E)>f+I%L9v$%R2HJsmNa{{ zi|h7$Z_b(tGq8;hN`PHjejt)U*mEO({35cx=XLx|^p&5wv8n_c)KR$|!$#ssiIj`9 z#Ighpn=f^%_uK1QMYg-kasI?&JM?XCNt;l~VoumwI#69~{TMg~imj#=TQ(;6qx|Z; z!_hu~UqTBq?dB4h6Cm?uTbeamqIytXi^b4TX<7X$`6)7Yf4nptY0sNg(xav!ThbMR zl|6I}ypFy3_MWjx`Z-&X8Ksy40Y*#X?HK2KzSGCYGh894irRC82{dIbhYESkWHI5~ z0Bpg*#O;RqCq}7PuuI5WZ+W^sQD01IHti0>jA5@VnYFI}Q1a1f>Ced;fT=v_dUsbj zF0kV(ezm>GawmER2Ut z+|Y84*D9MksCIh%$65*gFfalPbXxcPgdj-XHVqz4XF_G#jJXE9?S}F}AuT$`4SspiLbP)rnfu*x+|N#r4l%;bG%sg? zn0~wTz(9Qf>ElPQ*}TX4WpwzlbBC0BW!q-L*0|VzniDp(a)5>B>}=vQg-Z@(x*Mid z9>vB53Oa4xO3pO4S;qW9SH}b5jM0>Pn$SFZtsK9XZW024xAs{~og!P{!G_+{Qgy8h zcu2Oicv*7M^G(TqjWWQED~X&e>y2rwTHfB-rCXQ@mDf^STiq^2&7?O9(FU4sKsv4hHk{t*>J*((GUW}7Df^XV|$t1@?om;sRWfK&{9;n?IAOx zp6653Sy8KUqru?7<|nbfJNoO#KbR#rs^;6fU*!Ju%4SjFiRiVA8AYiT)g7t+!s#8d z@*w@Q&_9wl-|07N{6fBW`-{z7wJOzoyZn{Fw0K)9cS`$HRr3|q1cj>XB;t9^MZgX&Ib71ootI z(#o5Lth&bK&m%&&9ei1WMx+-NiA08Z;&k~K1I6*)Dw3=F(9-i2L3Z>v_-Rj(ALB)Q z6dR%(jobHLlG;VZml*2hc>jYCKdUgz`qZ=!Gs@|-K*(KFH+fNv}o&Ng7+Ik)rz4WoODf5x|+xP^y zeF@LpZrH8>n&;L=bi7|pUpVf)kd^{V%Byxx&cd_dM7Zqg+csbvJC4`l`j+)9G7G@v zgJXe>^1Sug%3ltWd<=KA-u|lGI5Dh2V|sLwOin~JtMOg#^&8X8 zjReHLT~sMdw)Q)y+~!*++FNJRl`|X`lDl_hxH||XS(qyFCtLVVQF$4x79WU z>cTNH@z%pupD}uRQ(HQFLpN7;x~SKDwo^UgvjSr%$3= zzAtnJzjd-7sHVIJ_8)>1&fxicoA^UVBQJkkWFhs$YYIB5&;TL(tC`{_GI+Ji@6bG_ z#+vrK4V!s0ev>Z(CW)7R9%36mT7}aTvQpAg$#5XxJ)ih?H5Sb8N37Uo^jv)alqRIa z$I%=b@;m11f19lQhnVWu-Gg}W!3>6|)%n*iC-I2kod5w0s#j_Be;S&?HZJB(SF>MU8boyEmq}jx_&*Y=Boekr)AqI?xB(Pd~H#1F=nXUPK&=0B4qq zkavXGG7edghKFFAM+ZJCXUG)zEo#Z$O%zoumpd_mMVRAJW!)%UNtjHG^&IhjOwqpB zx+wIOIc1552k1fl))jv?2gY28db_z`3s{q*Nm+TGB5wx4Q=cbBJW?$P&{-rz5`(zP z2?hS`kK!_}QmWqsx8~dzn!w}-$+Ei-ITiO!7H{`OMR&9s9f3Zz15lE183rA(7Tgo$ zDmTIv_{8ZAIJHe=n|yL4d+ijWH``D|s_ROYnpYven}MSX2wRFU1UJU6^Y^eo8;Q29 zt=`Xh{ud;_@*ypg9nwn2myx-hf~2i$Rk98?a(ERBojKN97JvTy-ZAz36>!`?zdGeC zbyx_xwUl;WY*QZiuC1$Bn(2Yw?XvSs(JkElUedHDUAXHRr4I9}IA~q7^0=Sw+>9>_ zy*dp%u?XGp`a+RELiUWpJEoYzoZHm7DH(e?h)?RKFSf^4F4`eQTl<+*bAb(Nu$Bgp z9*&C8na=q16Qz9GB;JI*rm0f|32-sN2k3PoOXVZ5MZ0)n*nJi z&`_61&FuOjhlH-LCP|~mS-GV5v!VQ==cytP4+yiz5b?aDh0wOFZXuUjy3WPC)7>Xny)G7v9dbEA>G#WXx6EtQ69`m3ry zp#fB^|McyC%>GpX{uF|Ldj|HIKmGVWKC2Ty50H4BIl10{`^MiE;G@d&Z!gH30c^q7 z_=p}YlCs;jM|Fp|jsU2vR~)=D$W7xP>HwnvM5#?8XJ+cGeK7UV53d?(LXa3Bu{tZN zE1gQ1EukyfR`hbTH|5R<$RsH-tEw_x%Pwfwyxa*ZM!Zj7Gs(tzW3YXwz*J%laQ@ua zKf`_1ZK*+2v%&49+#4xr=6kgdCq7ly1fTN_XktP=lqh0#xq(i+HSojg%$SK{XwO?< z<_~K>#wH9dZISp}_;`@sMkO%U@(7=r|H`wA>27oFX0zrwD=3kC<5h)(e|cBm#t({s zoRxj4>UwZN?2>kKvvx6lKIjZubVHfyf`~xeeqYgmLLHcw=PlO5G+%B&*AfpIYiqcP z-T9>XCj*Y7?%Xx@0o>Yl#N4)c7mZJW%hh;lr_!Yhj>jQkE5z1+M3a4#@g3DXGFu&V zy|P+|H-X;2vm{6C+|M_DA~N7W8*h8Cg~0CBRmhe{iH}ww9bZd=w*QFO_WOUg{jGhg zExJmsckAw;hWxtqp5=!SjWum$A@8h3_yDIgWEL zb9k%zov(Bh*neO@Yx;$RIYwaxfc=vvWZdtj>&FO3Ld_A{;SKzhNdf64^ZPekg>~~$ z7cZ33l0>?PPsZyE!3sb`3)78aYFz$1Z5r;Eg1Xf14o+`0di zgo*P2#*8zfGVHOcJW#b*33dLVUBZ8B4w3jWxMQOWc+6Sgcflx0qw#Is51F~q-!>LO zWUB{D(5;3d(B{eKz+e5=9fr+60})8Sc2-mUJ%s$#k9o5%BzpZhhyOUG|0oX>OwW7% zAKuB|Ru~Wh@IRbzz5y%U|D*?yrqmp*B00WdmvbQ&m}M@nI1y#s&bd8Tsj0RC^drJ& z1=Sn;*J8>u5$d`2gQ6!()@SN$heN(!oqs^Xz{CDP>3)yOsE+dU0)BVhm}por>^*V~ zkrU|K{TJjzIgCehBQ?sr^oRD_4=62}ODQkst+n_ysTK8IGLMDl1k+=Enwat)di^>4 z#a3HRr5Sa$Q@KIRoSe|8v(FVTpmqL&Si?sf)v+6y(L&n7%eCU~kzSpVDS{2*Na9OM zGskac&mH0ZyUq99wLJfM_URPNUno;?IjTMI`n5L*BJb*(kwLER&_~;Aqo_eT00;-S=An3kgE7AF z3IF5<&M(jJ1}=`0I3Pc?1{)kvMAR=wY5D0c5%mXnw%2q4(x$(&^=sDa03v7e7vz;y z`-+ykyL-s%)h>6MV1aozI_t-Y0!NgM0SS?^IR)?_58bOSiKlZ<0bEPA1A$j`3oP61 zt7TpXbLbfpl}1EF^utR<}* zvxN*R#?nJ6PPSfB-Fa2tnoAy}O!I5s=^rR>ig{O{2h0S0--(U=_4cHtkFHg!<>3g6 zO&(qBEzWO>&4GMGqq0+8XTUTK31Y2Q$9%x+lg;8-l*H#tGHQzZDJ&V|$C(#R{RgtH z$pI(q$5CPs$1u9$@ml;Pt6C81>qS*rB@E7a(U!|d2B-};SEg}U9InHFT(#As5WX_c ztG!8+xtp^nvXFlwizqD~vfs@nm=w(y>HmT71+VUS#PwyQO+8=L0D_R0Pv^(~T+)F< z=wAl3qp!j725PpPW?*0VmCW&Le)a$C^uMnG|0o0hsd@k3fA)`3@hd`}=(#m1i--Ju z#Xq{{e;ISQetl?1h;mimur@m2a%#bd8c#)a=$h|53t8G6<1w}qT(pW8J^(9kbar+$ zht8e(JXR*SKH3WGV(C!FE@$S(6*3gdIax9|6iLYHFOamR({>5;x$o$>5z)5=dT0<$ zQ6?Xtjj2Fc7JuJ+zkE;(pTF`5=?67fMId6Zrv*PhCX-$gGLV?Cy>NtK>wTc^6g*emwR zrL2N3={&Ne9pu{!v8Oo$>+c4{ILrV-U0_!vWV5)+{bwWPfcJ>pxk%0F3SyEhfo?quRzG_2Xw*lHd->I zA-TiD1m2kb*zjkw*7>{OV2*o(lZx&ONW!|~>Ga*(HWcBH7}xJ61a~1mtcPQm>)n>C?Mo)}yegbj?sx%0 z4#Ellk-1QjF>{^8y(#@(w0Azl{EiuoB0>w`a)BhH^kQP8_8d@qHfaH(bV#HX$~Mxr zg}_bx)@k9X5?dY|$57Q&oQTd&!RPmKLljU?-5waI>~H%_E!=b?ojX+IO4yva}o@n`vu~{ zWp6r);!b>g>V5gnsVFb)w2y3rGV;w(#m!@FdMp`T#zOX53u8DCSTOj~&s1fuD#9F? zO~H61G=#;wlTQ0?nt@TYb6I@JU~JfbH)Q_ZgTWG}zuig13;Izn{Wnw&(72}UznsOO zJRDgI{=4V@0jURAzsyipz~TV9?*F3dNM}K|J<%}*4cINAqD1t67Am=CKPvyD+B?sh zJ!y1he9bq-r^~J145P^Y;3RztQ^LPa_WAqB0n`Y5_idkojIBfViW3zwy4Z5U<9?p~ zc!t#0?6J)nNg+KR;v7Wzr0iBCjvr**sy7@A#JtNk?Z{h65Zxaf(qD3DnIP#3#{DWC zXu}XIbc|#OTkW~r%KUpdxp~%}qh2FOym9XZPDVN#c403md1@7QE4%^?UD0I~kc*&_ zjQ3V($!kJ7ua42Z66c{HzYO$8r5s5jJd=>HzL=N$REIWp6{CnXu{mES_Q+8&!Ovfx zXXsttefz2MlbD!@d^=A~aIIt~;sv^5E2Kr+cRXMOiHm#iIi&-un$FyOGDut2OHMKk z@34lzUX;&IZcdXAyuAJ49pvRsY~a>+S2%l+$cA1J2oXD0_ZQ?v-YgXF4}z|~x34zW zgLqfi`R9it56^DF73cJaMcsom8N|zV_1TQEYIH8qzK>KbQdns7q|TS?b7|r z3^JM}8c`u2q~Y5Y$@7zB81jAffs0hS#uXt+!`rs(=D?j5gn;w58B20bmt;zu_)Jnq zwvIFwa_r9P&_jGGqor4At6Cx5%}v04GH5p_;on*efJK9AsBw^{pFH`2=h`>7wIkcJ zFL`c)$inx}Kl|TRXaDmI{fCR|pC0#X zMM{=S@+evjJ^dQJdBdygkii+gtyB|iFJy=Z@`DHWL8SWWL6Gri{t>Khq&3J(Ts3SR z#7rIT;E*VTbz%U3V36X$aLcs8yun)KR&als9lVQNorP4%muni(8dg6wfWQ*2*V!>?!7X{4ST6mee zG`OeozQgdjtT}g@eFokA^f&5zN`e>gqlO1tyCPA3sE#Qt@ASmsbwi{UjUf^j?S;q} z>>pa#!_k2N#+DmKU}HNe$O2R`F?jt-R=aBRvnm0^N1E_#thpYv+<5GnjYJzHpG~W##A{JDK^wq0o&&x53Ygx;~wDOSK;&J{6m&!hePI5BJ`KyLnb&^d@E#v1lDP=+}OV$k#Vy$czF$AYXP372AogY`t|smlw9Dx`sw>W1n&Q7(ZT=MLAU-(?$x@5 z=Jjjq;_DB(wf{*mvH!-f6_`M_hdzB~f50xh<3Gcly7bdiAYJ*N#h(O$l|lld-RRxL z-~}Ak7YFV|TFHwNY|!>3=-PI8D-)_3yk7#gZvqDmJOKe%3l)6<4)3r5Cy<~?MiP{- zA$b^k+Cc4gVs zsz1+n>{H_ZRRS6}dYAq1*YEm&oVCE5Dt`ocuBhKM`CqbUD<$+FD?k1O&67;iCInr- zK7ZrH?Z8L_4%HrX`&6IN0kmiV>-v9vJLRwK51763*Y&6Gp}7)R8ze}_|CKL{i%b5) z{M4fV@9}3f+h;kuFBSdt{E4HhNHBbxGx%f)J>#<|NAn@KEx4qnmzp81aRZiXz~T6L znVOcsJ8E#Z|4*Vw0t-dUD&Uf5aJnIs5`gLIDQNd9I{87~R-pGMHa&*K>Z&XnxzRw!U5L-)2q@ z-LVt6$L!R>PYWctpU$(FdVk=o)8ff?i`!Qnnr1vJN?U$O*PW`Mck8FQzg?*ZJRFpx z>GSzNE&G3m%73_ZssHB`ao}>o_`j?6^}iN5e|i5Fjq*SID^e^?e|-NP%X@#z@&5k| zuYcM9RqxvO05~*#ZQ_#KKqIP}-0%In^y@#vWvw65-&#H@d@MiCFOl`=_M7>cdxD?L zG=FizV>`>(!P7Z`Xa&XzF>`u#M8AphW{CA z?_57p`7`?^|BdyJ#s6sj4L&B$y@WS(z2YX8+67MGY>)RHJ6l;{S#;HRzV@V$kdGVZ z%w1ErN}Ell*n8K$Q2*PRcOB*UfSaic?f+f&1G@A2(56g8PX=``OZ|luvk literal 0 HcmV?d00001 diff --git a/src/app/(main)/accounts/account_statement/accountStatement.tsx b/src/app/(main)/accounts/account_statement/accountStatement.tsx index 745b085..a857460 100644 --- a/src/app/(main)/accounts/account_statement/accountStatement.tsx +++ b/src/app/(main)/accounts/account_statement/accountStatement.tsx @@ -7,7 +7,7 @@ import { notifications } from "@mantine/notifications"; import dayjs from 'dayjs'; import { IconFileSpreadsheet, IconFileText, IconFileTypePdf } from "@tabler/icons-react"; import { generatePDF } from "@/app/_components/statement_download/PdfGenerator"; -import { generateCSV } from "@/app/_components/statement_download/CsvGenerator"; +import { generateExcel } from "@/app/_components/statement_download/CsvGenerator"; import { useMediaQuery } from "@mantine/hooks"; export default function AccountStatementPage() { @@ -223,17 +223,34 @@ export default function AccountStatementPage() { size={22} style={{ cursor: "pointer" }} onClick={() => - generatePDF(selectedAccNo || "", availableBalance || "0", transactions, + generatePDF( + selectedAccNo || "", + availableBalance || "0", + transactions, localStorage.getItem("remitter_name") || "", startDate ? dayjs(startDate).format("DD/MM/YYYY") : "", - endDate ? dayjs(endDate).format("DD/MM/YYYY") : "") + endDate ? dayjs(endDate).format("DD/MM/YYYY") : "", + localStorage.getItem("remitter_branch_no") || "", + localStorage.getItem("remitter_cif_no") || "", + localStorage.getItem("remitter_address") || "" + ) } /> - generateCSV(selectedAccNo || "NA", availableBalance || "0.00", transactions) + generateExcel( + selectedAccNo || "", + availableBalance || "0", + transactions, + localStorage.getItem("remitter_name") || "", + startDate ? dayjs(startDate).format("DD/MM/YYYY") : "", + endDate ? dayjs(endDate).format("DD/MM/YYYY") : "", + localStorage.getItem("remitter_branch_no") || "", + localStorage.getItem("remitter_cif_no") || "", + localStorage.getItem("remitter_address") || "" + ) } /> diff --git a/src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx b/src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx index abe0ec3..97395e9 100644 --- a/src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx +++ b/src/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers.tsx @@ -135,7 +135,7 @@ export default function AddBeneficiaryOthers() { }, [ifsccode]); const validateAndSendOtp = async () => { - if (!bankName || !ifsccode || !branchName || !accountNo || !confirmAccountNo || !beneficiaryType) { + if (!bankName || !ifsccode || !branchName || !accountNo || !confirmAccountNo || !beneficiaryType || !nickName) { notifications.show({ withBorder: true, color: "red", @@ -430,6 +430,16 @@ export default function AddBeneficiaryOthers() { withAsterisk /> + + setNickName(e.currentTarget.value)} + + /> + - - setNickName(e.currentTarget.value)} - - /> - {!otpSent && ( - + {loading && ( <> @@ -493,9 +494,9 @@ export default function AddBeneficiaryOthers() { {!otpVerified ? ( - + ) : ( - )} diff --git a/src/app/(main)/beneficiary/add_beneficiary/page.tsx b/src/app/(main)/beneficiary/add_beneficiary/page.tsx new file mode 100644 index 0000000..d661352 --- /dev/null +++ b/src/app/(main)/beneficiary/add_beneficiary/page.tsx @@ -0,0 +1,322 @@ +"use client"; + +import React, { useEffect, useState } from 'react'; +import {TextInput,Button,Select,Title,Paper,Grid,Group,Radio,Text,PasswordInput} from '@mantine/core'; +import { useRouter } from "next/navigation"; +import { notifications } from '@mantine/notifications'; +import AddBeneficiaryOthers from '@/app/(main)/beneficiary/add_beneficiary/addBeneficiaryOthers'; + + +const bankOptions = [ + { value: 'KCCB', label: 'KCCB - The Kangra Central Co-Operative Bank Ltd.' }, +]; + +const AddBeneficiary: React.FC = () => { + const router = useRouter(); + const [bankName, setBankName] = useState(''); + const [authorized, setAuthorized] = useState(null); + const [bankType, setBankType] = useState('own'); + const [accountNo, setAccountNo] = useState(''); + const [confirmAccountNo, setConfirmAccountNo] = useState(''); + const [nickName, setNickName] = useState(''); + const [otp, setOtp] = useState(''); + const [generatedOtp, setGeneratedOtp] = useState(''); + const [otpSent, setOtpSent] = useState(false); + const [otpVerified, setOtpVerified] = useState(false); + const [validationStatus, setValidationStatus] = useState<'success' | 'error' | null>(null); + const [beneficiaryName, setBeneficiaryName] = useState(null); + const [isVisibilityLocked, setIsVisibilityLocked] = useState(false); + const [showPayeeAcc, setShowPayeeAcc] = useState(true); + const getFullMaskedAccount = (acc: string) => { return "X".repeat(acc.length); }; + + const handleGenerateOtp = async () => { + const value = "123456"; // Or generate a random OTP + setGeneratedOtp(value); + return value; + }; + useEffect(() => { + const token = localStorage.getItem("access_token"); + if (!token) { + setAuthorized(false); + router.push("/login"); + } else { + setAuthorized(true); + } + }, []); + // const isValidBankName = (name: string) => { + // const regex = /^[A-Za-z\s]{3,5}$/; + // return regex.test(name.trim()); + // }; + + // const isValidIfscCode = (code: string) => { + // return /^[A-Z]{4}0[0-9]{6}$/.test(code); + // }; + + const validateAndSendOtp = async () => { + if (!bankName || !accountNo || !confirmAccountNo) { + notifications.show({ + withBorder: true, + color: "red", + title: "Missing Field", + message: "All fields must be completed.", + autoClose: 5000, + }); + return; + } + + + // if (bankType === "outside" && !/^[A-Za-z ]{1,5}$/.test(bankName)) { + // notifications.show({ + // color: "red", + // title: "Invalid Bank Name", + // message: "Use only alphabets/spaces, max 100 characters.", + // }); + // return; + // } + + // const trimmedIfsc = ifsccode.trim().toUpperCase(); + + // if (!isValidIfscCode(trimmedIfsc)) { + // notifications.show({ + // title: "Invalid IFSC Code", + // message: "Must be 11 characters: 4 uppercase letters, 0, then 6 digits (e.g., HDFC0123456)", + // color: "red", + // }); + // return; + // } + + if (accountNo.length < 10 || accountNo.length > 17) { + notifications.show({ + withBorder: true, + color: "red", + title: "Invalid Account Number", + message: "Enter a valid account number (10–17 digits).", + autoClose: 5000, + }); + return; + } + + if (accountNo !== confirmAccountNo) { + notifications.show({ + withBorder: true, + color: "red", + title: "Mismatch", + message: "Account numbers do not match.", + autoClose: 5000, + }); + return; + } + + try { + const token = localStorage.getItem("access_token"); + const response = await fetch(`/api/beneficiary/validate/within-bank?accountNumber=${accountNo}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-Login-Type": "IB", + Authorization: `Bearer ${token}`, + }, + }); + + const data = await response.json(); + + if (response.ok && data?.name) { + setBeneficiaryName(data.name); + setValidationStatus("success"); + setIsVisibilityLocked(true); + setOtpSent(true); + await handleGenerateOtp(); + + notifications.show({ + withBorder: true, + color: "green", + title: "OTP Sent", + message: "OTP has been sent to your registered mobile number.", + autoClose: 5000, + }); + } else { + setBeneficiaryName("Invalid beneficiary account number"); + setValidationStatus("error"); + setAccountNo(""); + setConfirmAccountNo(""); + } + } catch (error) { + setBeneficiaryName("Invalid beneficiary account number"); + setValidationStatus("error"); + + + notifications.show({ + withBorder: true, + color: "red", + title: "Error", + message: "Could not validate account number.", + autoClose: 5000, + }); + } + }; + + const verifyOtp = () => { + if (otp === generatedOtp) { + setOtpVerified(true); + notifications.show({ + withBorder: true, + color: "green", + title: "OTP Verified", + message: "OTP validated successfully.", + autoClose: 5000, + }); + } else { + notifications.show({ + withBorder: true, + color: "red", + title: "OTP Error", + message: "OTP does not match.", + autoClose: 5000, + }); + } + }; + + const AddBen = () => { + notifications.show({ + withBorder: true, + color: "green", + title: "Beneficiary Added", + message: "Beneficiary added successfully.", + autoClose: 5000, + }); + }; + + if (!authorized) return null; + + return ( + + Add Beneficiary + + {/* + + + + + */} + + {/* {bankType === "own" ? ( + + + setBankName(value || '')} - required - /> - - - - { - const value = e.currentTarget.value; - if (/^\d*$/.test(value) && value.length <= 17) { - setAccountNo(value); - setShowPayeeAcc(true); - } - }} - onBlur={() => setShowPayeeAcc(false)} - onFocus={() => setShowPayeeAcc(true)} - readOnly={isVisibilityLocked} - maxLength={17} - // disabled={isVisibilityLocked} - required - /> - - - - { - const value = e.currentTarget.value; - if (/^\d*$/.test(value) && value.length <= 17) { - setConfirmAccountNo(value); - } - }} - maxLength={17} - // disabled={isVisibilityLocked} - readOnly={isVisibilityLocked} - required - onCopy={(e) => e.preventDefault()} - onPaste={(e) => e.preventDefault()} - onCut={(e) => e.preventDefault()} - /> - - {validationStatus === "error" && ( - - {beneficiaryName} - - )} - - - - setNickName(e.currentTarget.value)} - /> - - - - - - - - {!otpSent && ( - - - - )} - - {otpSent && ( - <> - - setOtp(e.currentTarget.value)} - maxLength={6} - disabled={otpVerified} // ✅ Disable after verified - /> - - - {!otpVerified ? ( - - ) : ( - - )} - - - )} - - ) : ( */} - - - - {/* )} */} - + ); -}; - -export default AddBeneficiary; +} diff --git a/src/app/(main)/beneficiary/view_beneficiary/page.tsx b/src/app/(main)/beneficiary/view_beneficiary/page.tsx index d1cdafd..3d717c4 100644 --- a/src/app/(main)/beneficiary/view_beneficiary/page.tsx +++ b/src/app/(main)/beneficiary/view_beneficiary/page.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useEffect, useState } from "react"; -import { Center, Group, Loader, Paper, ScrollArea, Table, Text, Title, TextInput, Button, Modal } from "@mantine/core"; +import { Center, Group, Loader, Paper, ScrollArea, Table, Text, Title, TextInput, Button, Modal, PasswordInput } from "@mantine/core"; import { notifications } from "@mantine/notifications"; import { useRouter } from "next/navigation"; import Image from "next/image"; @@ -215,7 +215,7 @@ export default function ViewBeneficiary() { return ( - + My Beneficiaries @@ -223,8 +223,7 @@ export default function ViewBeneficiary() { color="green" variant="filled" size="sm" - component="a" - href="/beneficiary" + onClick={() => router.push("/beneficiary/add_beneficiary")} style={{ minWidth: "150px" }} > + Add Beneficiary @@ -235,7 +234,7 @@ export default function ViewBeneficiary() { No beneficiaries found. ) : ( <> - + Enter OTP sent to your registered number: - setOtp(e.currentTarget.value)} placeholder="Enter OTP" diff --git a/src/app/(main)/funds_transfer/send_beneficiary/page.tsx b/src/app/(main)/funds_transfer/send_beneficiary/page.tsx index 21aca05..41c5177 100644 --- a/src/app/(main)/funds_transfer/send_beneficiary/page.tsx +++ b/src/app/(main)/funds_transfer/send_beneficiary/page.tsx @@ -395,10 +395,8 @@ export default function SendToBeneficiaryOwn() { - - {/* main content */} - + Send To Beneficiary diff --git a/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx b/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx index b020eec..4b70074 100644 --- a/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx +++ b/src/app/(main)/funds_transfer/send_beneficiary/sendBeneficiaryOthers.tsx @@ -546,7 +546,7 @@ export default function SendToBeneficiaryOthers() { {/* main content */} {!showIntroModal && ( -
    +
    - - - - - - ` - ); + /* --------------------------------------------------------- + * 1) BUILD TRANSACTION ROWS + * --------------------------------------------------------- */ - // Content for first page - const content = ` -
    -
    -
    - Bank Logo -

    The Kangra Central Co-Operative Bank Ltd.

    -
    -
    - Report generated: ${dayjs().format("DD/MM/YYYY HH:mm")} + const rows = txns + .map((t: any) => { + return ` +
    + + + + + + `; + }) + .join(""); + + /* --------------------------------------------------------- + * 2) MAIN PAGE CONTENT + * --------------------------------------------------------- */ + const firstPage = ` +
    + + + + +
    + +
    +

    + THE KANGRA CENTRAL CO-OPERATIVE BANK LTD. +

    +

    Head Office: Dharmsala, District Kangra (H.P.), Pin. 176215

    +
    +
    +
    e-Statement Service
    +
    + Generated: ${dayjs().format("DD/MM/YYYY HH:mm")}
    -
    - -

    Account Statement

    -

    Account No: ${accountNo}

    -

    Account Holder: ${customerName}

    -

    Statement Period: ${periodFrom} to ${periodTo}

    -

    Available Balance: ₹ ${parseFloat(balance).toLocaleString( - "en-IN", - { minimumFractionDigits: 2 } - )}

    - -
    ${t.date}${t.name} - ${parseFloat(t.amount).toLocaleString("en-IN", { - minimumFractionDigits: 2, - })} ${t.type === "DR" ? "dr." : "cr."} - ${t.balance}
    ${t.date}${t.name} + ${parseFloat(t.amount).toLocaleString("en-IN", { + minimumFractionDigits: 2, + })} ${t.type} + ${t.balance}
    - - - - - - - - - - ${rows.join("")} - -
    DateDescriptionAmount (₹)Available Amount (₹)

+ + + + + + + + + + + + + + + + + + +
+ Account Name + ${customerName} + + Branch Name + ${branchCode} +
+ Account Number + ${accountNo} + + Branch Code + ${branchCode} +
+ CIF Number + ${cifNumber} + + Branch Address + DHARAMSHALA, KANGRA +
+ Address + ${address} +
+ + +
+
+
+
+ NEVER SHARE your Card number, CVV, PIN, OTP, Internet Banking User ID, Password or URB with + anyone even if the caller claims to be a bank employee. Sharing these details can lead to unauthorized + access to your account. +
+
+
+ + +
+

+ Account statement from ${periodFrom} to ${periodTo} +

+
+ + + + + + + + + + + + + ${rows} +
DateMode / ParticularsWithdrawals / DepositsBalance
+ + +
+

+ *** END OF STATEMENT *** +

+
+
`; + /* --------------------------------------------------------- + * 3) LAST PAGE + * --------------------------------------------------------- */ + const lastPage = ` +
+
+

IMPORTANT INFORMATION:

+ +
+

+ + The Kangra Central Cooperative Bank Officials or representatives will NEVER ask you for your personal information i.e. your card details, passwords, PIN, CVV, OTP etc. Do not share such details with anyone over phone, SMS or email. +

+ +

+ + Always stay vigilant to suspicious emails. Do not open any suspicious emails. +

+ +

+ + Always stay vigilant when giving out sensitive personal or account information. +

+ +

+ + Beware of messages that instill a sense of urgency (e.g., account will expire unless you "verify" your information). Contact the Bank directly if unsure. +

+ +

+ + Always log out of secondary devices and reset your passwords frequently. +

+ +

+ + Use strong passwords: Create strong passwords that are difficult for hackers to guess. +

+ +

+ + Use public Wi-Fi with caution: Be careful when using public Wi-Fi networks. +

+ +

+ + Back up your data regularly to a secure, encrypted, off-site location. +

+ +

+ + Follow corporate security policies: Adhere to your company's security guidelines. +

+ +

+ + Assess third-party app permissions carefully before granting access. +

+ +

+ + Lock your computer and mobile phone when not in use. +

+ +

+ + Don't leave devices unattended. Keep all mobile devices, such as laptops and cell phones, physically secured. +

+ +

+ + Don't leave Bluetooth / Wireless turned on when not in use. Enable them only when needed and in a safe environment. +

+
+
+
+ `; + + /* --------------------------------------------------------- + * 4) PDF GENERATION + * --------------------------------------------------------- */ const opt = { - margin: [20, 10, 20, 10], - filename: `AccountStatement_${accountNo}_${dayjs().format("DD/MM/YYYY HH:mm")}.pdf`, + margin: [15, 10, 20, 10], + filename: `Statement_${accountNo}_${dayjs().format("DDMMYYYY_HHmm")}.pdf`, image: { type: "jpeg", quality: 0.98 }, - html2canvas: { scale: 2 }, - jsPDF: { unit: "mm", format: "a4", orientation: "portrait" }, - pagebreak: { mode: ["avoid-all", "css", "legacy"] }, + html2canvas: { + scale: 2, + useCORS: true, + letterRendering: true, + }, + jsPDF: { + unit: "mm", + format: "a4", + orientation: "portrait", + compress: true, + }, + pagebreak: { + mode: ["css", "legacy"], + before: '.page-break-before', + after: '.page-break-after', + avoid: ['tr', '.txn-row'] + }, }; html2pdf() .set(opt) - .from(content) + .from(firstPage + lastPage) .toPdf() .get("pdf") .then((pdf: any) => { - const totalPages = pdf.internal.getNumberOfPages(); - const pageWidth = pdf.internal.pageSize.getWidth(); + const total = pdf.internal.getNumberOfPages(); + const w = pdf.internal.pageSize.getWidth(); + const h = pdf.internal.pageSize.getHeight(); - for (let i = 2; i <= totalPages; i++) { + const hasGState = + typeof pdf.GState === "function" && typeof pdf.setGState === "function"; + + for (let i = 1; i <= total; i++) { pdf.setPage(i); - pdf.setFontSize(10); - // ✅ Left side Account No - pdf.setFont("helvetica", "bold"); - // pdf.text(`Account No: ${accountNo}`, 15, 18); + /* LIGHT WATERMARK */ + try { + if (hasGState) { + const light = pdf.GState({ opacity: 0.03 }); + pdf.setGState(light); + pdf.addImage("/kccb_watermark.png", "PNG", 35, 70, 140, 140); + pdf.setGState(pdf.GState({ opacity: 1 })); + } else { + pdf.addImage("/kccb_watermark.png", "PNG", 35, 70, 140, 140); + } + } catch { } - // ✅ Centered Statement Period + /* FOOTER */ + pdf.setFont("times", "italic"); + pdf.setFontSize(9); + pdf.setTextColor(100, 100, 100); pdf.text( - `Statement Period: ${periodFrom} to ${periodTo}`, - pageWidth / 2, - 18, + "** This is only for information purpose and not for legal use **", + w / 2, + h - 12, { align: "center" } ); - // Footer page numbers + /* PAGE NUMBER */ + pdf.setFont("times", "normal"); pdf.setFontSize(9); - pdf.text( - `Page ${i} of ${totalPages}`, - pageWidth - 40, - pdf.internal.pageSize.getHeight() - 10 - ); + pdf.setTextColor(0, 0, 0); + pdf.text(`Page ${i} of ${total}`, w - 15, h - 12, { + align: "right", + }); } }) .save(); diff --git a/src/app/_util/userdetails.ts b/src/app/_util/userdetails.ts index 5f86ae7..3facbea 100644 --- a/src/app/_util/userdetails.ts +++ b/src/app/_util/userdetails.ts @@ -8,7 +8,7 @@ export async function fetchAndStoreUserName(token: string) { method: "GET", headers: { "Content-Type": "application/json", - "X-Login-Type": "IB", + "X-Login-Type": "IB", "Authorization": `Bearer ${token}`, }, }); @@ -28,14 +28,20 @@ export async function fetchAndStoreUserName(token: string) { const data = await response.json(); if (Array.isArray(data) && data.length > 0) { - const { custname, mobileno } = data[0]; + const { custname, mobileno, cifNumber, stBranchNo,custaddress } = data[0]; localStorage.setItem("remitter_name", custname); localStorage.setItem("remitter_mobile_no", mobileno); + localStorage.setItem("remitter_cif_no", cifNumber); + localStorage.setItem("remitter_branch_no", stBranchNo); + localStorage.setItem("remitter_address", custaddress); } return true; } catch (error: any) { localStorage.removeItem("remitter_name"); localStorage.removeItem("remitter_mobile_no"); + localStorage.removeItem("remitter_cif_no"); + localStorage.removeItem("remitter_branch_no"); + localStorage.removeItem("remitter_address"); console.error('Error sending OTP:', error.response?.data || error.message); notifications.show({ withBorder: true, diff --git a/src/app/image/ib_front_2.jpg b/src/app/image/ib_front_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b680ab3fec1756020933ce576e140461763efb9 GIT binary patch literal 176535 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�xKK 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 M0Yw$T%+7=V* Date: Sat, 6 Dec 2025 13:54:20 +0530 Subject: [PATCH 14/21] fix: design in view profile and account overview feat : page add for e mandate otp --- .../(main)/accounts/account_details/page.tsx | 353 ++++++++++++---- .../account_statement/accountStatement.tsx | 35 +- src/app/(main)/accounts/page.tsx | 2 +- .../beneficiary/add_beneficiary/page.tsx | 2 +- .../beneficiary/view_beneficiary/page.tsx | 2 +- src/app/(main)/funds_transfer/page.tsx | 2 +- .../funds_transfer/send_beneficiary/page.tsx | 2 +- src/app/(main)/home/page.tsx | 18 +- src/app/(main)/layout.tsx | 46 +- .../settings/change_login_password/page.tsx | 2 +- .../settings/change_txn_password/page.tsx | 2 +- src/app/(main)/settings/page.tsx | 139 ++++-- .../(main)/settings/set_txn_limit/page.tsx | 2 +- .../(main)/settings/set_txn_password/page.tsx | 2 +- src/app/(main)/settings/user_name/page.tsx | 2 +- src/app/eMandate/authUtils.ts | 40 ++ src/app/eMandate/login/page/page.tsx | 5 +- src/app/eMandate/otpUtils.ts | 65 +++ src/app/eMandate/otp_page/page.tsx | 394 ++++++++++++++++++ src/app/image/DICGC_image - Copy.jpg | Bin 0 -> 136805 bytes src/app/image/DICGC_image.jpg | Bin 136805 -> 93231 bytes src/app/image/ib_front_3.jpg | Bin 0 -> 139452 bytes src/app/image/objective.jpg | Bin 99503 -> 103309 bytes src/app/login/clientCarousel.tsx | 47 ++- src/app/login/page.tsx | 40 +- 25 files changed, 1027 insertions(+), 175 deletions(-) create mode 100644 src/app/eMandate/authUtils.ts create mode 100644 src/app/eMandate/otpUtils.ts create mode 100644 src/app/eMandate/otp_page/page.tsx create mode 100644 src/app/image/DICGC_image - Copy.jpg create mode 100644 src/app/image/ib_front_3.jpg diff --git a/src/app/(main)/accounts/account_details/page.tsx b/src/app/(main)/accounts/account_details/page.tsx index e7f0795..cf639d6 100644 --- a/src/app/(main)/accounts/account_details/page.tsx +++ b/src/app/(main)/accounts/account_details/page.tsx @@ -2,16 +2,36 @@ import React, { useEffect, useState } from "react"; import { - Group, + Container, Paper, Select, Stack, Text, Title, + Group, + Badge, + Divider, + Loader, + Center, + Card, + SimpleGrid, + ThemeIcon, + Box, + rem, + Grid, } from "@mantine/core"; import { notifications } from "@mantine/notifications"; -import { useRouter } from "next/navigation"; -import { useSearchParams } from "next/navigation"; +import { + IconCreditCard, + IconWallet, + IconTrendingUp, + IconBuilding, + IconCircleCheck, + IconAlertCircle, + IconUser, + IconFileText, + IconCircleDot, +} from "@tabler/icons-react"; interface accountData { stAccountNo: string; @@ -19,23 +39,21 @@ interface accountData { stAvailableBalance: string; custname: string; stBookingNumber: string; - stApprovedAmount?: string; // optional for loan accounts + stApprovedAmount?: string; } -export default function AccountDetails() { - const router = useRouter(); +export default function App() { const [accountOptions, setAccountOptions] = useState<{ value: string; label: string }[]>([]); const [selectedAccNo, setSelectedAccNo] = useState(null); const [authorized, setAuthorized] = useState(null); const [accountDetails, setAccountDetails] = useState(null); - const searchParams = useSearchParams(); - const passedAccNo = searchParams.get("accNo"); + const [loading, setLoading] = useState(false); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { setAuthorized(false); - router.push("/login"); + // router.push("/login"); } else { setAuthorized(true); } @@ -51,9 +69,6 @@ export default function AccountDetails() { value: acc.stAccountNo, })); setAccountOptions(options); - if (passedAccNo) { - handleAccountSelection(passedAccNo); - } } } }, [authorized]); @@ -62,6 +77,8 @@ export default function AccountDetails() { setSelectedAccNo(accNo); setAccountDetails(null); if (!accNo) return; + + setLoading(true); try { const token = localStorage.getItem("access_token"); const response = await fetch("/api/customer", { @@ -77,11 +94,10 @@ export default function AccountDetails() { if (response.ok && Array.isArray(data)) { const matched = data.find((acc) => acc.stAccountNo === accNo); if (matched) { - // Simulate approvedBalance for loan accounts if (matched.stAccountType.toUpperCase().includes("LN")) { matched.stApprovedAmount = ( parseFloat(matched.stAvailableBalance) + 20000 - ).toFixed(2); // dummy logic + ).toFixed(2); } setAccountDetails(matched); } else { @@ -102,79 +118,270 @@ export default function AccountDetails() { title: "Fetch failed", message: "Could not fetch account details. Try again.", }); + } finally { + setLoading(false); } }; + const getAccountIcon = (accountType: string) => { + const type = accountType.toUpperCase(); + if (type.includes("LN")) return IconTrendingUp; + if (type.includes("SA") || type.includes("SB") || type.includes("CC") || type.includes("OD") || type.includes("CA")) return IconWallet; + return IconBuilding; + }; + + const getAccountColor = (accountType: string) => { + const type = accountType.toUpperCase(); + if (type.includes("LN")) return "violet"; + if (type.includes("SA") || type.includes("SB") || type.includes("CC") || type.includes("OD") || type.includes("CA")) return "blue"; + return "cyan"; + }; + + const isLoanAccount = accountDetails?.stAccountType.toUpperCase().includes("LN"); + const AccountIcon = accountDetails ? getAccountIcon(accountDetails.stAccountType) : IconCreditCard; + const accountColor = accountDetails ? getAccountColor(accountDetails.stAccountType) : "blue"; + if (!authorized) return null; return ( - - - Account Details - - - } + styles={{ + input: { + borderRadius: rem(12), + }, + }} + /> + + - {accountDetails && ( - - - - Account Number - {accountDetails.stAccountNo} - + {/* Right side – Account Details */} + + + + Account Details + - - Account Type - {accountDetails.stAccountType} - + {/* Loading State */} + {loading && ( +
+ + + Loading account details... + +
+ )} - - Description - {accountDetails.stBookingNumber} - - - {/* Show Loan-specific fields */} - {accountDetails.stAccountType.toUpperCase().includes("LN") ? ( - <> - - Approved Balance - - ₹{parseFloat(accountDetails.stApprovedAmount || "0").toLocaleString("en-IN", { - minimumFractionDigits: 2, - })} - + {/* Account Details */} + {!loading && accountDetails && ( + + {/* Account Header Card */} + + + + + + + + + Account Number + + + {accountDetails.stAccountNo} + + - - Available Balance - - – ₹{parseFloat(accountDetails.stAvailableBalance).toLocaleString("en-IN", { - minimumFractionDigits: 2, - })} - - - + + {accountDetails.stAccountType} + + + + + + + + Description + + {accountDetails.stBookingNumber} + + + + {/* Balance Cards */} + {isLoanAccount ? ( + + {/* Approved Balance */} + + + + + + + Approved Balance + + + + ₹ + {parseFloat(accountDetails.stApprovedAmount || "0").toLocaleString( + "en-IN", + { + minimumFractionDigits: 2, + } + )} + + + + {/* Outstanding Amount */} + + + + + + + Outstanding Amount + + + + – ₹ + {parseFloat(accountDetails.stAvailableBalance).toLocaleString( + "en-IN", + { + minimumFractionDigits: 2, + } + )} + + + ) : ( - - Available Balance - - ₹{parseFloat(accountDetails.stAvailableBalance).toLocaleString("en-IN", { + + + + + + + Available Balance + + + + ₹ + {parseFloat(accountDetails.stAvailableBalance).toLocaleString("en-IN", { minimumFractionDigits: 2, })} - </Text> - </Group> + + )} + + {/* Account Information */} + + + Account Information + + + + + + + + + Account Holder + + + {accountDetails.custname} + + + + + + + + + Account Type + + + {accountDetails.stAccountType} + + + + + + + + + Booking Number + + + {accountDetails.stBookingNumber} + + + + + + + + + Status + + + } + > + Active + + + + -
- )} -
-
+ )} + + {/* Empty State */} + {!loading && !accountDetails && ( +
+ + + + + + {selectedAccNo + ? "No account details available" + : "Please select an account to view details"} + + +
+ )} + + + + ); -} +} \ No newline at end of file diff --git a/src/app/(main)/accounts/account_statement/accountStatement.tsx b/src/app/(main)/accounts/account_statement/accountStatement.tsx index a857460..a8565a5 100644 --- a/src/app/(main)/accounts/account_statement/accountStatement.tsx +++ b/src/app/(main)/accounts/account_statement/accountStatement.tsx @@ -1,11 +1,11 @@ "use client"; -import { Paper, Select, Title, Button, Text, Grid, ScrollArea, Table, Divider, Center, Loader, Stack, Group, Card } from "@mantine/core"; +import { Paper, Select, Title, Button, Text, Grid, ScrollArea, Table, Divider, Center, Loader, Stack, Group, Card, ThemeIcon } from "@mantine/core"; import { DateInput } from '@mantine/dates'; import { useEffect, useRef, useState } from "react"; import { useSearchParams } from "next/navigation"; import { notifications } from "@mantine/notifications"; import dayjs from 'dayjs'; -import { IconFileSpreadsheet, IconFileText, IconFileTypePdf } from "@tabler/icons-react"; +import { IconCopy, IconFileSpreadsheet, IconFileText, IconFileTypePdf } from "@tabler/icons-react"; import { generatePDF } from "@/app/_components/statement_download/PdfGenerator"; import { generateExcel } from "@/app/_components/statement_download/CsvGenerator"; import { useMediaQuery } from "@mantine/hooks"; @@ -169,7 +169,7 @@ export default function AccountStatementPage() { {/* Left side – form */} - Account Transactions + Transaction Filters