1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1475],{22328:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var a=r(37876),n=r(14232);function s(e){let{open:t,title:r,message:s,confirmLabel:l="Confirm",cancelLabel:i="Cancel",tone:o="default",busy:d=!1,busyLabel:c="Workingâ¦",onConfirm:m,onCancel:u,"data-testid":x="admin-confirm-modal"}=e,b=(0,n.useRef)(null);return((0,n.useEffect)(()=>{var e;t&&(null==(e=b.current)||e.focus())},[t]),(0,n.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"!==e.key||d||u()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t,d,u]),t)?(0,a.jsx)("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50 p-4",onClick:()=>{d||u()},role:"dialog","aria-modal":"true","aria-label":r,"data-testid":x,children:(0,a.jsxs)("div",{className:"w-full max-w-md bg-white rounded-lg shadow-2xl flex flex-col",onClick:e=>e.stopPropagation(),children:[(0,a.jsx)("div",{className:"px-5 py-3 border-b border-gray-200",children:(0,a.jsx)("h3",{className:"text-base font-semibold text-gray-900",children:r})}),(0,a.jsx)("div",{className:"px-5 py-4 text-sm text-gray-800",children:s}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2 px-5 py-3 border-t border-gray-200 bg-gray-50",children:[(0,a.jsx)("button",{ref:b,onClick:u,disabled:d,className:"px-3 py-1.5 text-xs font-medium rounded-md border border-gray-300 bg-white text-gray-700 hover:bg-gray-100 disabled:opacity-50","data-testid":"".concat(x,"-cancel"),children:i}),(0,a.jsx)("button",{onClick:m,disabled:d,className:"px-3 py-1.5 text-xs font-semibold rounded-md text-white disabled:opacity-50 disabled:cursor-not-allowed ".concat("danger"===o?"bg-red-600 hover:bg-red-700":"bg-emerald-600 hover:bg-emerald-700"),"data-testid":"".concat(x,"-confirm"),children:d?c:l})]})]})}):null}},26660:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var a=r(37876),n=r(14232);function s(e){var t;let{file:r,onFileSelect:s,format:l="pdf",onFormatChange:i,error:o}=e,[d,c]=(0,n.useState)(!1),[m,u]=(0,n.useState)(""),x=(0,n.useRef)(null),b=(0,n.useCallback)(e=>"pdf"===l&&"application/pdf"!==e.type?(u("PDF mode is selected â please choose a .pdf file or switch to CSV."),!1):"csv"!==l||"text/csv"===e.type||e.name.toLowerCase().endsWith(".csv")?e.size>0xa00000?(u("File size must be less than 10MB"),!1):(u(""),!0):(u("CSV mode is selected â please choose a .csv file or switch to PDF."),!1),[l]),h=(0,n.useCallback)(e=>{b(e)&&s(e)},[b,s]),p=(0,n.useCallback)(e=>{e.preventDefault(),c(!1);let t=e.dataTransfer.files[0];t&&h(t)},[h]),g=(0,n.useCallback)(e=>{e.preventDefault(),c(!0)},[]),f=(0,n.useCallback)(e=>{e.preventDefault(),c(!1)},[]),y=(0,n.useCallback)(e=>{var t;let r=null==(t=e.target.files)?void 0:t[0];r&&h(r),x.current&&(x.current.value="")},[h]),v=m||o;return(0,a.jsxs)("div",{children:[i&&(0,a.jsx)("div",{role:"radiogroup","aria-label":"Statement format","data-testid":"statement-format-toggle",className:"flex gap-2 mb-4 p-1 bg-gray-100 rounded-xl w-fit",children:[{value:"pdf",label:"PDF",sub:"Bank statement export"},{value:"csv",label:"CSV",sub:"Transaction list"}].map(e=>(0,a.jsxs)("button",{role:"radio","aria-checked":l===e.value,"data-testid":"statement-format-".concat(e.value),onClick:()=>{i(e.value),s(null),u("")},className:"px-4 py-2 rounded-lg text-sm font-medium transition-colors ".concat(l===e.value?"bg-white text-[#22252B] shadow-sm":"text-[#6C6F7C] hover:text-[#22252B]"),children:[(0,a.jsx)("span",{className:"block",children:e.label}),(0,a.jsx)("span",{className:"block text-[10px] font-normal text-[#9CA3AF]",children:e.sub})]},e.value))}),r?(0,a.jsxs)("div",{"data-testid":"statement-file-info",className:"flex items-center justify-between bg-white border border-gray-200 rounded-2xl p-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"w-10 h-10 ".concat("pdf"===l?"bg-red-50":"bg-emerald-50"," rounded-lg flex items-center justify-center"),children:(0,a.jsx)("svg",{className:"w-5 h-5 ".concat("pdf"===l?"text-red-500":"text-emerald-600"),fill:"currentColor",viewBox:"0 0 20 20","aria-hidden":"true",children:(0,a.jsx)("path",{fillRule:"evenodd",d:"M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",clipRule:"evenodd"})})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-[14px] font-medium text-[#22252B]",style:{fontFamily:"Inter, sans-serif"},children:r.name}),(0,a.jsxs)("p",{className:"text-[12px] text-[#9CA3AF]",style:{fontFamily:"Barlow, sans-serif"},children:[(t=r.size)<1024?"".concat(t," B"):t<1048576?"".concat((t/1024).toFixed(1)," KB"):"".concat((t/1048576).toFixed(1)," MB")," \xb7 ",l.toUpperCase()]})]})]}),(0,a.jsx)("button",{onClick:()=>s(null),className:"p-2 hover:bg-gray-100 rounded-lg transition-colors","aria-label":"Remove selected file","data-testid":"statement-remove-file",children:(0,a.jsx)("svg",{className:"w-5 h-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]}):(0,a.jsxs)("div",{"data-testid":"statement-drop-zone",role:"button",tabIndex:0,"aria-label":"Upload bank statement ".concat(l.toUpperCase(),". Drag and drop or click to select file."),onDrop:p,onDragOver:g,onDragLeave:f,onClick:()=>{var e;return null==(e=x.current)?void 0:e.click()},onKeyDown:e=>{if("Enter"===e.key||" "===e.key){var t;e.preventDefault(),null==(t=x.current)||t.click()}},className:"border-2 border-dashed rounded-2xl p-10 text-center cursor-pointer transition-all ".concat(d?"border-[#01C38D] bg-[#01C38D]/5":"border-gray-300 hover:border-[#01C38D] hover:bg-gray-50"),children:[(0,a.jsx)("div",{className:"flex justify-center mb-4",children:(0,a.jsx)("svg",{className:"w-12 h-12 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})})}),(0,a.jsx)("p",{className:"text-[15px] font-medium text-[#22252B] mb-1",style:{fontFamily:"Inter, sans-serif"},children:"Drag and drop your bank statement"}),(0,a.jsx)("p",{className:"text-[13px] text-[#4E5159]",style:{fontFamily:"Barlow, sans-serif"},children:"or click to select file"}),(0,a.jsx)("p",{className:"text-[12px] text-[#9CA3AF] mt-2",style:{fontFamily:"Barlow, sans-serif"},children:"pdf"===l?"PDF only, max 10MB":"CSV only, max 10MB \xb7 Capitec, FNB, Standard Bank, Absa"}),(0,a.jsx)("input",{ref:x,type:"file",accept:"pdf"===l?".pdf":".csv",onChange:y,className:"hidden","aria-label":"Select bank statement ".concat(l.toUpperCase()," file"),"data-testid":"statement-file-input"})]}),v&&(0,a.jsx)("p",{className:"mt-2 text-sm text-red-500",role:"alert","data-testid":"statement-upload-error",children:v})]})}},53284:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var a=r(37876),n=r(14232),s=r(37497),l=r(62842),i=r(26660),o=r(22328),d=r(29498);async function c(e,t,r,a,n){let s=new FormData;return t&&s.append("It3bFile",t),r&&s.append("It3cFile",r),s.append("TaxYear",String(a)),s.append("SkipUnmatchedCustomers",String(n)),(await d.fr.post(d.h_?"/admin/tax-certificates/".concat(e):"/v1/tax-certificates/".concat(e),s,{headers:{"Content-Type":"multipart/form-data",...(0,d.F3)()},..."import"===e?{timeout:3e5}:{}})).data}let m=function(e,t,r){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return c("validate",e,t,r,a)},u=function(e,t,r){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return c("import",e,t,r,a)};function x(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return!1;
1let r=[e.it3b,e.it3c].filter(Boolean);return 0!==r.length&&r.every(e=>{var r,a;return 0===e.invalidRows&&0===e.errors.length&&(t||(null!=(a=null==(r=e.unmatchedCustomers)?void 0:r.length)?a:0)===0)})}let b=["Admin","Compliance Officer","Wealth Manager"],h=[{key:"rowNumber",header:"Row",render:e=>e.rowNumber,width:"80px"},{key:"reason",header:"Reason",render:e=>e.reason}];function p(e){var t,r;return(null==e||null==(r=e.response)||null==(t=r.data)?void 0:t.title)||(null==e?void 0:e.message)||"Request failed â check the file and try again."}function g(e){var t,r,n;let{label:s,summary:i}=e;if(!i)return(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold mb-1",children:s}),(0,a.jsx)("p",{className:"text-sm text-gray-400",children:"Not supplied."})]});let o=null!=(t=i.unmatchedCustomers)?t:[],d=0===i.invalidRows&&0===i.errors.length&&0===o.length;return(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"text-sm font-semibold mb-1",children:s}),(0,a.jsxs)("div",{className:"flex items-center gap-4 mb-2 text-sm",children:[(0,a.jsxs)("span",{children:["Total rows: ",(0,a.jsx)("strong",{children:i.totalRows})]}),(0,a.jsxs)("span",{children:["Matched: ",(0,a.jsx)("strong",{children:null!=(r=i.matchedCount)?r:"â"})]}),(0,a.jsxs)("span",{children:["Unmatched: ",(0,a.jsx)("strong",{children:null!=(n=i.unmatchedCount)?n:"â"})]}),d?(0,a.jsx)(l.qs,{tone:"success",children:"Clean"}):i.errors.length>0?(0,a.jsxs)(l.qs,{tone:"danger",children:[i.errors.length," error(s)"]}):(0,a.jsxs)(l.qs,{tone:"warning",children:[o.length," unmatched"]})]}),i.errors.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{className:"text-xs font-semibold text-red-700 mb-1",children:"Errors â these always block the import"}),(0,a.jsx)(l.bQ,{rows:i.errors,columns:h,rowKey:e=>String(e.rowNumber)})]}),o.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("p",{className:"text-xs font-semibold text-amber-700 mb-1 mt-3",children:["Customers not found in this environment","number"==typeof i.unmatchedCount&&i.unmatchedCount>o.length?" â showing ".concat(o.length," of ").concat(i.unmatchedCount):""]}),(0,a.jsx)(l.bQ,{rows:o,columns:h,rowKey:e=>"u-".concat(e.rowNumber)})]})]})}function f(){let[e,t]=(0,n.useState)(null),[r,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(2026),[f,y]=(0,n.useState)(null),[v,j]=(0,n.useState)("idle"),[N,w]=(0,n.useState)(""),[k,C]=(0,n.useState)(!1),[S,F]=(0,n.useState)(!1),D=()=>{y(null),j("idle"),w("")},B=!!e||!!r,T=x(f,S),A=!T&&x(f,!0),I=async()=>{if(B){j("validating"),w("");try{let t=await m(e,r,c,S);y(t),j("validated")}catch(e){y(null),w(p(e)),j("idle")}}},L=async()=>{j("importing"),w("");try{let t=await u(e,r,c,S);y(t),j("imported")}catch(e){w(p(e)),j("validated")}finally{C(!1)}};return(0,a.jsx)(s.A,{requireRoles:b,children:(0,a.jsxs)("div",{className:"p-6 max-w-3xl mx-auto",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsx)("h1",{className:"text-xl font-semibold",children:"IT3 feed upload"}),(0,a.jsx)(l.Mw,{backend:"live-saasport"})]}),(0,a.jsx)("label",{className:"block text-sm font-medium mb-1",children:"Tax year"}),(0,a.jsx)("input",{type:"number",value:c,min:2e3,max:3e3,onChange:e=>{h(Number(e.target.value)),D()},className:"border rounded px-2 py-1 mb-4 w-32"}),(0,a.jsx)("label",{className:"block text-sm font-medium mb-1",children:"IT3(b) Income feed"}),(0,a.jsx)(i.A,{file:e,onFileSelect:e=>{t(e),D()},format:"csv",error:""}),(0,a.jsx)("label",{className:"block text-sm font-medium mb-1 mt-4",children:"IT3(c) Capital-Gains feed"}),(0,a.jsx)(i.A,{file:r,onFileSelect:e=>{d(e),D()},format:"csv",error:""}),N&&(0,a.jsx)("p",{className:"text-sm text-red-600 mt-2",children:N}),(0,a.jsxs)("label",{className:"flex items-start gap-2 mt-4 text-sm",children:[(0,a.jsx)("input",{type:"checkbox",checked:S,onChange:e=>{F(e.target.checked),D()},className:"mt-1"}),(0,a.jsxs)("span",{children:["Skip customers that don't exist in this environment",(0,a.jsx)("span",{className:"block text-xs text-gray-500",children:"They will be listed below and no certificate is created for them. Rows with any other problem still block the import."})]})]}),(0,a.jsxs)("div",{className:"flex gap-3 mt-4",children:[(0,a.jsx)("button",{onClick:I,disabled:!B||"validating"===v||"importing"===v,className:"bg-gray-800 text-white px-4 py-2 rounded disabled:opacity-50",children:"val
1idating"===v?"Validatingâ¦":"Validate"}),(0,a.jsx)("button",{onClick:()=>{B&&T&&C(!0)},disabled:!T||"importing"===v,className:"bg-emerald-600 text-white px-4 py-2 rounded disabled:opacity-50",children:"importing"===v?"Importingâ¦":"Import"})]}),f&&(0,a.jsxs)("div",{className:"mt-6",children:[(0,a.jsx)("div",{className:"mb-3",children:"imported"===v?(0,a.jsx)(l.qs,{tone:"success",children:"Imported"}):T?(0,a.jsx)(l.qs,{tone:"success",children:"Clean â ready to import"}):A?(0,a.jsx)(l.qs,{tone:"warning",children:"Blocked by customers not in this environment â tick the box above to skip them"}):(0,a.jsx)(l.qs,{tone:"danger",children:"Fix errors and re-validate"})}),(0,a.jsx)(g,{label:"IT3(b) Income feed",summary:f.it3b}),(0,a.jsx)(g,{label:"IT3(c) Capital-Gains feed",summary:f.it3c})]}),(0,a.jsx)(o.A,{open:k,title:"Import IT3 feed?",tone:"danger",confirmLabel:"Import",busyLabel:"Importingâ¦",busy:"importing"===v,onConfirm:L,onCancel:()=>{"importing"!==v&&C(!1)},message:(0,a.jsxs)(a.Fragment,{children:["Re-importing ",(0,a.jsx)("strong",{children:c})," overwrites existing certificates and"," ",(0,a.jsx)("strong",{children:"clears their generated PDFs"}),". This cannot be undone.",S&&(0,a.jsxs)(a.Fragment,{children:[" ","You have chosen to"," ",(0,a.jsx)("strong",{children:"skip customers not found in this environment"})," â they will receive no certificate."]})]})})]})})}},62842:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>m,Ip:()=>g,Jt:()=>b,Mw:()=>i,Qn:()=>u,Te:()=>x,bQ:()=>h,qs:()=>c,qw:()=>v,v7:()=>j});var a=r(37876),n=r(14232),s=r(37497);let l={"live-core":{label:"Live \xb7 core",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from core / Briteblue."},"live-saasport":{label:"Live \xb7 saasport",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from saasport."},"live-gtn":{label:"Live \xb7 GTN/DWM",color:"bg-emerald-100 text-emerald-700 border-emerald-200",description:"Reading real production data from GTN/DWM."},"wire-pending":{label:"Wire pending",color:"bg-amber-100 text-amber-700 border-amber-200",description:"UI is in place; data source identified â adapter still to be wired."},scoping:{label:"Scoping",color:"bg-gray-100 text-gray-700 border-gray-200",description:"Awaiting product-ops scope before backend work begins."},mock:{label:"Mock data",color:"bg-blue-100 text-blue-700 border-blue-200",description:"Illustrative numbers only â do not act on them."}};function i(e){let{backend:t}=e,r=l[t];return(0,a.jsx)("span",{title:r.description,className:"inline-flex items-center gap-1.5 text-xs font-semibold px-2.5 py-1 rounded-full border ".concat(r.color),children:r.label})}function o(e){let{note:t}=e;return(0,a.jsxs)("div",{className:"mb-4 bg-amber-50 border-l-4 border-amber-400 px-4 py-3 rounded-r text-sm text-amber-900",children:[(0,a.jsx)("strong",{className:"font-semibold",children:"Mock data."})," ",null!=t?t:"Numbers below are illustrative â they show the page structure ahead of the adapter being wired to the live source."]})}let d={success:"bg-emerald-100 text-emerald-700",warning:"bg-amber-100 text-amber-700",danger:"bg-red-100 text-red-700",info:"bg-blue-100 text-blue-700",neutral:"bg-gray-100 text-gray-700",pending:"bg-indigo-100 text-indigo-700"};function c(e){let{tone:t,children:r}=e;return(0,a.jsx)("span",{className:"inline-flex items-center text-xs font-medium px-2 py-0.5 rounded-full ".concat(d[t]),children:r})}function m(e){let{title:t,owner:r,backend:n,description:l,workflowRef:d,mockNote:c,showMockBanner:m=!0,actions:u,children:x}=e;return(0,a.jsx)(s.A,{children:(0,a.jsxs)("div",{className:"max-w-7xl",children:[(0,a.jsxs)("header",{className:"mb-6",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4 mb-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:t}),(0,a.jsxs)("div",{className:"text-sm text-gray-500 mt-1",children:["Owner: ",r,d&&(0,a.jsxs)(a.Fragment,{children:[" \xb7 ",(0,a.jsx)("span",{className:"font-mono text-xs",children:d})]})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(i,{backend:n}),u]})]}),l&&(0,a.jsx)("p",{className:"text-sm text-gray-600 leading-relaxed mt-2 max-w-3xl",children:l})]}),m&&("mock"===n||"wire-pending"===n||"scoping"===n)&&(0,a.jsx)(o,{note:c}),(0,a.jsx)("main",{children:x})]})})}function u(e){let{children:t}=e;return(0,a.jsx)("div",{className:"flex flex-wrap items-end gap-3 bg-white border border-gray-200 rounded-lg p-3 mb-4",children:t})}function x(e){let{value:t,onChange:r,placeholder:n="Searchâ¦",width:s=240}=e;return(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-medium text-gray-600",children:["Search",(0,a.jsx)("input",{type:"search",value:t,onChange:e=>r(e.target.value),placeholder:n,style:{width:s},className:"border border-gray-300 rounded-md px-2.5 py-1.5 text-sm font-normal text-gray-900 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500"})]})}function b(e){let{label:t,value:r,onChange:n,options:s}=e;return(0,a.jsxs)("label",{className:"flex flex-col gap-1 text-xs font-medium text-gray-600",children:[t,(0,a.jsx)("select",{value:r,onChange:e=>n(e.target.value),className:"border border-gray-300 rounded-md px-2.5 py-1.5 text-sm font-normal text-gray-900 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 bg-white",children:s.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]})}function h(e){let{rows:t,columns:r,rowKey:s,emptyLabel:l="No matching rows.",onRowClick:i}
1=e,[o,d]=(0,n.useState)(null),[c,m]=(0,n.useState)("desc"),u=(0,n.useMemo)(()=>{if(!o)return t;let e=r.find(e=>e.key===o);if(!e||!e.sortBy)return t;let a=e.sortBy,n=[...t];return n.sort((e,t)=>{let r=a(e),n=a(t);if(r===n)return 0;if(r instanceof Date&&n instanceof Date)return"asc"===c?r.getTime()-n.getTime():n.getTime()-r.getTime();if("number"==typeof r&&"number"==typeof n)return"asc"===c?r-n:n-r;let s=String(r),l=String(n);return"asc"===c?s.localeCompare(l):l.localeCompare(s)}),n},[t,r,o,c]);return 0===t.length?(0,a.jsx)(p,{label:l}):(0,a.jsxs)("div",{className:"overflow-x-auto bg-white border border-gray-200 rounded-lg shadow-sm",children:[(0,a.jsxs)("table",{className:"min-w-full text-sm",children:[(0,a.jsx)("thead",{className:"bg-gray-50 border-b border-gray-200",children:(0,a.jsx)("tr",{children:r.map(e=>{var t;return(0,a.jsx)("th",{style:{width:e.width,textAlign:null!=(t=e.align)?t:"left"},className:"px-3 py-2.5 text-xs font-semibold text-gray-700 uppercase tracking-wider",children:e.sortBy?(0,a.jsxs)("button",{onClick:()=>{var t;o===(t=e.key)?m(e=>"asc"===e?"desc":"asc"):(d(t),m("desc"))},className:"inline-flex items-center gap-1 hover:text-gray-900",children:[e.header,o===e.key&&(0,a.jsx)("span",{className:"text-gray-400",children:"asc"===c?"â²":"â¼"})]}):e.header},e.key)})})}),(0,a.jsx)("tbody",{className:"divide-y divide-gray-100",children:u.map(e=>(0,a.jsx)("tr",{onClick:i?()=>i(e):void 0,className:i?"hover:bg-blue-50 cursor-pointer":"hover:bg-gray-50",children:r.map(t=>{var r;return(0,a.jsx)("td",{style:{textAlign:null!=(r=t.align)?r:"left"},className:"px-3 py-2.5 text-gray-800 whitespace-nowrap",children:t.render(e)},t.key)})},s(e)))})]}),(0,a.jsxs)("div",{className:"border-t border-gray-100 px-3 py-2 text-xs text-gray-500 bg-gray-50",children:[u.length," row",1===u.length?"":"s"]})]})}function p(e){let{label:t}=e;return(0,a.jsx)("div",{className:"bg-white border border-gray-200 rounded-lg p-12 text-center text-gray-500 text-sm",children:t})}function g(e){return new Intl.NumberFormat("en-ZA",{style:"currency",currency:"ZAR",maximumFractionDigits:2}).format(e)}let f=/^(\d{2})\/(\d{2})\/(\d{4})(?:[ T](\d{2}):(\d{2})(?::(\d{2}))?)?$/;function y(e){if(e instanceof Date)return e;if("number"==typeof e)return new Date(e);let t=f.exec(e.trim());if(t){var r,a,n;return new Date(Number(t[3]),Number(t[2])-1,Number(t[1]),Number(null!=(r=t[4])?r:0),Number(null!=(a=t[5])?a:0),Number(null!=(n=t[6])?n:0))}return new Date(e)}function v(e){let t=y(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleDateString("en-GB",{day:"2-digit",month:"short",year:"numeric"})}function j(e){let t=y(e);return Number.isNaN(t.getTime())?String(e):"".concat(v(t)," ").concat(t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit"}))}},95472:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/regulatory-reports/it3-upload",function(){return r(53284)}])}},e=>{e.O(0,[7497,636,6593,8792],()=>e(e.s=95472)),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.