@realtek/core-theme-live 0.0.365 → 0.0.366
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/{Breadcrumb-CSZ-3RYH.cjs → Breadcrumb-Bt428IJg.cjs} +2 -2
- package/dist-lib/Breadcrumb-Bt428IJg.cjs.map +1 -0
- package/dist-lib/{Breadcrumb-D2bA-UEn.js → Breadcrumb-EnaK7Uue.js} +2 -2
- package/dist-lib/Breadcrumb-EnaK7Uue.js.map +1 -0
- package/dist-lib/index.cjs +2 -2
- package/dist-lib/index.js +2 -2
- package/package.json +1 -1
- package/dist-lib/Breadcrumb-CSZ-3RYH.cjs.map +0 -1
- package/dist-lib/Breadcrumb-D2bA-UEn.js.map +0 -1
package/dist-lib/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./authApi-B362jHOs.cjs"),n=require("./Breadcrumb-CSZ-3RYH.cjs"),r=require("./diceCandidateMapper-BjMhHno3.cjs"),i=require("./formGroupsCache-Bbz-28ws.cjs"),a=require("./addFormApi-D7d0MQiG.cjs");let o=require("react");o=e.n(o,1);let s=require("antd"),c=require("@ant-design/icons"),l=require("react/jsx-runtime"),u=require("dayjs");u=e.n(u,1);let d=require("react-router-dom"),f=require("prop-types");f=e.n(f,1);async function p(e,{method:n=`POST`,params:r={},body:i={}}={}){let a={"Content-Type":`application/json`,Authorization:`Bearer ${await t.a()}`},o=new URLSearchParams({moduleName:e});Object.entries(r).forEach(([e,t])=>{t!=null&&t!==``&&o.append(e,String(t))});let s={method:n,headers:a};(n===`POST`||n===`PUT`)&&(s.body=JSON.stringify(i??{}));let c=await fetch(`${t.x}/dashboard/cards?${o.toString()}`,s);if(!c.ok)throw Error(`API ${c.status}: ${c.statusText}`);return c.json()}async function m(e={}){let n=await t.a(),r=await fetch(`${t.x}/dynamic-common-count`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`},body:JSON.stringify(e)});if(!r.ok)throw Error(`API ${r.status}: ${r.statusText}`);return r.json()}async function h(e={}){let n=await t.a(),r=await fetch(`${t.x}/dashboard-calendar`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`},body:JSON.stringify(e)});if(!r.ok)throw Error(`API ${r.status}: ${r.statusText}`);return r.json()}async function g(){return t.t(t.x,`/users/hierarchy-tree`)}var{Title:_,Text:v}=s.Typography,y=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],b=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],x=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],S={green:`#22c55e`,red:`#ef4444`,orange:`#f97316`,blue:`#3b82f6`};function C(e){return S[e]||e||`#586888`}function w(e){return String(e).padStart(2,`0`)}function T(e,t,n=`Sun`){let r=new Date(e,t,1).getDay(),i=n===`Mon`?r===0?6:r-1:r,a=new Date(e,t+1,0).getDate(),o=[];for(let e=0;e<i;e++)o.push({day:null,cur:!1});for(let e=1;e<=a;e++)o.push({day:e,cur:!0});for(;o.length%7!=0;)o.push({day:null,cur:!1});return o}function E(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function D(e){if(!e)return{text:``,author:null};let t=e.match(/\n\s*-\s*([^\n]+)\s*$/);return t?{text:e.slice(0,t.index).trim(),author:t[1].trim()}:{text:e.trim(),author:null}}function O(e=[]){let t={};return e.forEach(e=>{t[e.date]=(e.events||[]).map(e=>{let{text:t,author:n}=D(e.description);return{color:e.color,label:e.label,title:e.title,text:t,author:n}})}),t}function k({events:e}){return(0,l.jsx)(`div`,{style:{maxWidth:280,maxHeight:260,overflowY:`auto`},children:e.map((t,n)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8,padding:`6px 0`,borderBottom:n<e.length-1?`1px solid #f0f0f0`:`none`},children:[(0,l.jsx)(`span`,{className:`calendar-dot`,style:{background:C(t.color),marginTop:6,flexShrink:0}}),(0,l.jsxs)(`div`,{style:{minWidth:0},children:[(0,l.jsx)(v,{strong:!0,style:{fontSize:13,display:`block`},children:t.title||t.label}),t.text&&(0,l.jsx)(v,{style:{fontSize:12,color:`#555`,whiteSpace:`pre-line`,wordBreak:`break-word`},children:t.text}),t.author&&(0,l.jsxs)(v,{style:{fontSize:11,color:`#999`,display:`block`,marginTop:2},children:[`— `,t.author]})]})]},n))})}function A({userIds:e=[],days:t=void 0,startDay:n=`Sun`,renderDayContent:r=void 0,onDayClick:i=void 0,headerExtra:a=void 0,legend:u=void 0,readonly:d=!1,className:f=``,monthLabel:p=void 0,year:m=void 0,month:g=void 0,onPrevMonth:S=void 0,onNextMonth:D=void 0,prevDisabled:A=!1,nextDisabled:j=!1}){let M=t!==void 0||r!==void 0||i!==void 0,N=new Date,[P,F]=(0,o.useState)({year:N.getFullYear(),month:N.getMonth()}),I=m!=null&&g!=null?{year:Number(m),month:Number(g)-1}:P,[L,R]=(0,o.useState)({}),[z,B]=(0,o.useState)([]),[V,ee]=(0,o.useState)(!1),[te,ne]=(0,o.useState)(null),re=JSON.stringify(e),ie=n===`Mon`?b:y,H=(0,o.useCallback)(async()=>{ee(!0);try{let t=await h({userIds:e});t?.status&&t?.data?(B(t.data.legend||[]),R(O(t.data.days||[]))):(B([]),R({}))}catch(e){console.error(`CalendarCard fetch error:`,e)}finally{ee(!1)}},[re]);(0,o.useEffect)(()=>{M||H()},[M,H]),(0,o.useEffect)(()=>(window.addEventListener(`dashboard-calendar:refresh`,H),()=>window.removeEventListener(`dashboard-calendar:refresh`,H)),[H]);let ae=S??(()=>F(e=>e.month===0?{year:e.year-1,month:11}:{...e,month:e.month-1})),oe=D??(()=>F(e=>e.month===11?{year:e.year+1,month:0}:{...e,month:e.month+1})),se=E(T(I.year,I.month,n),7),ce={};t!==void 0&&(t||[]).forEach(e=>{e?.date&&(ce[e.date]=e)});let U=u??z,le=p??`${x[I.month]} ${I.year}`;return(0,l.jsx)(s.Card,{className:`calendar-card${f?` ${f}`:``}`,title:(0,l.jsxs)(`div`,{className:`calendar-header-title`,children:[(0,l.jsx)(c.CalendarOutlined,{}),(0,l.jsx)(_,{level:5,style:{margin:0},children:le}),a]}),extra:(0,l.jsxs)(`div`,{className:`calendar-nav`,style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,l.jsx)(s.Tooltip,{title:`Previous month`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.LeftOutlined,{}),size:`small`,onClick:ae,disabled:A})}),(0,l.jsx)(s.Tooltip,{title:`Next month`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.RightOutlined,{}),size:`small`,onClick:oe,disabled:j})})]}),children:(0,l.jsxs)(s.Spin,{spinning:V,children:[(0,l.jsx)(s.Row,{gutter:[6,0],className:`calendar-day-names`,children:ie.map(e=>(0,l.jsx)(s.Col,{flex:`1`,className:`calendar-day-name`,children:e},e))}),(0,l.jsx)(`div`,{className:`calendar-weeks`,children:se.map((e,t)=>(0,l.jsx)(s.Row,{gutter:[6,6],align:`top`,className:`calendar-week-row`,children:e.map((e,t)=>{if(!e.cur||e.day===null)return(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:`calendar-cell calendar-cell--filler`})},t);let n=`${I.year}-${w(I.month+1)}-${w(e.day)}`,a=e.day===N.getDate()&&I.month===N.getMonth()&&I.year===N.getFullYear();if(M){let o=ce[n]??null;return r?(0,l.jsx)(s.Col,{flex:`1`,children:r(n,o,{isToday:a,readonly:d})},t):(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:[`calendar-cell`,a?`today`:``,d?`calendar-cell--readonly`:``].filter(Boolean).join(` `),onClick:()=>!d&&i?.(n,o),style:{cursor:d?`default`:`pointer`},children:(0,l.jsx)(`div`,{className:`calendar-cell-inner`,children:(0,l.jsx)(v,{className:`calendar-cell-number`,children:e.day})})})},t)}let o=L[n]||[],c=[...new Set(o.map(e=>e.color))].slice(0,3);return(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:`calendar-cell${a?` today`:``}`,children:(0,l.jsxs)(`div`,{className:`calendar-cell-inner`,children:[(0,l.jsx)(v,{className:`calendar-cell-number`,children:e.day}),o.length>0&&(0,l.jsx)(s.Popover,{open:te===n,trigger:`click`,content:(0,l.jsx)(k,{events:o}),placement:`topRight`,destroyTooltipOnHide:!0,onOpenChange:e=>ne(e?n:null),children:(0,l.jsx)(`div`,{className:`calendar-cell-dots`,children:c.map((e,t)=>(0,l.jsx)(`span`,{className:`calendar-dot`,style:{background:C(e)}},t))})})]})})},t)})},t))}),U.length>0&&(0,l.jsx)(`div`,{className:`calendar-legend`,children:U.map(({label:e,color:t,icon:n})=>(0,l.jsxs)(`div`,{className:`calendar-legend-item`,children:[n?(0,l.jsx)(`span`,{className:`calendar-legend-badge`,style:{background:C(t)},children:n}):(0,l.jsx)(`span`,{className:`calendar-legend-dot`,style:{background:C(t)}}),(0,l.jsx)(v,{children:e})]},e))})]})})}function j(e){return e!=null}function M(e){let t=String(e);return t.charAt(0).toUpperCase()+t.slice(1)}function N(e,t){if(!e||typeof e!=`object`)return null;let n=e.key??e.value??e.id??String(t),r=e.title??e.tabTitle??e.label??e.name,i=e.count??e.countValue;return!n||!r?null:{...e,key:String(n),label:(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(`span`,{children:M(r)}),j(i)&&(0,l.jsx)(s.Badge,{className:`dynamic-tabs-count`,count:i,showZero:!0,overflowCount:2**53-1})]})}}function P({tabs:e=[],activeKey:t,onChange:n,className:r,extra:i}){let a=e.map(N).filter(Boolean);if(!a.length)return null;let o=a.some(e=>e.key===t)?t:a[0].key;return(0,l.jsx)(s.Tabs,{activeKey:o,className:r,items:a,onChange:n,tabBarExtraContent:i})}function F(){return{tenantId:localStorage.getItem(`tenantId`)||``,businessId:localStorage.getItem(`businessId`)||``,businessUnitId:localStorage.getItem(`businessUnitId`)||``}}function I(){return Number(localStorage.getItem(`userId`))||0}var L=e=>e?.data??e,R=new Map;function z(e){return e?.recruiterId??e?.legacyUserId??e?.user_id??e?.userId??e?.USER_ID??e?.id??e?._id}function B(e){return!e||typeof e!=`object`?``:[e.first_name??e.firstName??e.FIRST_NAME,e.last_name??e.lastName??e.LAST_NAME].filter(Boolean).join(` `).trim()||e.recruiterName||e.name||e.user_name||e.userName||e.USER_NAME||e.email||``}async function V(e){let n=String(e??``).trim();return n?(R.has(n)||R.set(n,t.o(t.x,`/get-detailed-view?userId=${encodeURIComponent(n)}`).then(e=>B(e?.data??e??null)).catch(()=>``)),R.get(n)):``}var ee=null;function te(e){let t=new Map;return(Array.isArray(e)?e:[]).forEach(e=>{let n={name:B(e),role_name:e?.roleName??e?.role_name??``,reporting_name:e?.reportingName??e?.reporting_name??``};[e?.userId,e?.user_id,e?.legacyUserId,e?.id,e?._id].forEach(e=>{let r=String(e??``).trim();r&&t.set(r,n)})}),t}function ne(){return ee||=t.o(t.x,`/get-all-users?limit=500&offset=0`).then(e=>{let t=e?.data??e??{};return te(t.users??t??[])}).catch(()=>new Map),ee}async function re(e){let t=z(e),n=(await ne()).get(String(t??``).trim())??{},r=n.name||await V(t)||B(e);return{...e,name:r,role_name:n.role_name||e?.role_name||e?.roleName||``,reporting_name:n.reporting_name||e?.reporting_name||e?.reportingName||``}}async function ie(e,n,r){return L(await t.o(t.x,`/module-data-update`,{method:`PUT`,body:JSON.stringify({module:e,ids:n,updates:{status:r}})}))}async function H(e,n){let r=Array.isArray(n)?n:[n],i=await Promise.all(r.filter(Boolean).map(n=>t.o(t.x,`/module/delete/${encodeURIComponent(n)}?module=${encodeURIComponent(e)}`,{method:`DELETE`})));return i[i.length-1]??{}}async function ae(e){return L(await t.o(t.T,`/joblist`,{method:`POST`,body:JSON.stringify({...F(),searchQuery:e,userId:I()})}))}async function oe(e=``){let n=e?`?search=${encodeURIComponent(e)}`:``;return t.t(t.T,`/users/any${n}`)}async function se({relatedIds:e,module:n,title:r,targetDate:i,notes:a}){return t.o(t.T,`/notes`,{method:`POST`,body:JSON.stringify({schemaVersion:1,...F(),title:r,notes:a,notesFor:n||`general`,notesRelatedId:Array.isArray(e)&&e.length?e:null,reminder:i?{type:`single`,time:i,interval:``}:null,targetDate:i||null})})}async function ce(e,{title:n,targetDate:r,notes:i}){return t.o(t.T,`/notes/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({title:n,notes:i,reminder:r?{type:`single`,time:r,interval:``}:null,targetDate:r||null})})}async function U(e){return t.o(t.T,`/notes/${encodeURIComponent(e)}/resolve`,{method:`PUT`})}async function le({jobId:e,candidateIds:n,hiringStage:r}){return t.o(t.T,`/source/hiringStgUpdate`,{method:`PUT`,body:JSON.stringify({...F(),multiJobId:Array.isArray(e)?e:[e],applicantId:Array.isArray(n)?n:[n],updateStatus:String(r??``).toLowerCase(),updateStatusType:`call`,responseType:`responded`,hiriringStatusChangeType:`tagToJobs`,comments:``,userId:I()})})}async function ue(){return L(await t.o(t.x,`/masters/dropdown?masterName=candidateGroups&offset=0&limit=50`))}async function de({candidateIds:e,groupId:n,groupName:r}){return L(await t.o(t.S,`/actions/update-group`,{method:`PUT`,body:JSON.stringify({candidateIds:e,groupId:n,groupName:r})}))}async function fe({jobIds:e,rate:n,priority:r}){return t.o(t.T,`/assign?type=self`,{method:`PUT`,body:JSON.stringify({multiJobId:Array.isArray(e)?e:[e],userId:I(),schemaVersion:1,...F(),priority:r==null?`false`:String(r),priorityFrom:null,recruitersData:[]})})}async function pe(e){if(!e)return{assignedUsers:[],totalSubmissions:0,targetSubmissions:0,message:``};let n=await t.o(t.T,`/self-assign?jobId=${encodeURIComponent(e)}`),r=n?.data,i=n?.message??``;return Array.isArray(r)?{assignedUsers:await Promise.all(r.map(re)),totalSubmissions:0,targetSubmissions:0,message:i}:!r||typeof r!=`object`?{assignedUsers:[],totalSubmissions:0,targetSubmissions:0,message:i}:{assignedUsers:await Promise.all((Array.isArray(r.assignedUsers)?r.assignedUsers:[]).map(re)),totalSubmissions:r.totalSubmissions??0,targetSubmissions:r.targetSubmissions??0,message:i}}function W(e){let t=e?.user_id??e?.userId??e?.USER_ID??e?.legacyUserId??e?.id??e?._id,n=t==null?``:String(t).trim();if(!n)return null;let r=[e?.first_name??e?.firstName,e?.last_name??e?.lastName].filter(Boolean).join(` `).trim(),i=e?.name||e?.user_name||e?.userName||e?.USER_NAME||r||e?.email||n;return{...e,label:String(i),value:n}}async function me(){let e=await t.t(t.T,`/users/manager`);return(Array.isArray(e)?e:e?[e]:[]).map(W).filter(Boolean)}async function he(e){if(!e)return{recruitersData:[]};let n=await t.t(t.T,`/pay-details/${encodeURIComponent(e)}`),r=n&&typeof n==`object`&&Array.isArray(n.recruiters)?n.recruiters:[],i=(await Promise.all(r.map(async e=>{let t=e?.recruiterId??e?.user_id??e?.userId??e?.id;if(t==null||t===``)return null;let n=await re({...e,recruiterId:t});return{recruiterId:t,id:t,user_id:t,name:n.name,role_name:n.role_name??n.roleName??``,reporting_name:n.reporting_name??n.reportingName??``}}))).filter(Boolean);return{...n&&typeof n==`object`?n:{},recruitersData:i}}function ge(e){let t=typeof e==`object`?e?.recruiterId??e?.user_id??e?.userId??e?.id:e,n=Number(t);return Number.isInteger(n)&&n>0?n:null}function _e({jobIds:e,userId:t,rate:n,priority:r,removedIds:i,existingRecruiters:a}){let o=new Set((i??[]).map(String)),s=(a??[]).map(ge).filter(e=>e!==null&&!o.has(String(e))),c=(Array.isArray(t)?t:[t]).map(ge).filter(e=>e!==null);if(c.length===0)throw Error(`A valid user must be selected before assigning the job`);let l=Array.from(new Set([...s,...c]));return{multiJobId:Array.isArray(e)?e:[e],userId:c[0],schemaVersion:1,...F(),priority:String(r??!1),priorityFrom:``,recruitersData:l}}async function G(e,n){let r=new Set((n??[]).map(String));r.size&&await Promise.all((e??[]).map(async e=>{let n=await t.o(t.x,`/module/list?module=jobs&id=${encodeURIComponent(e)}`),i=n?.data?.data??n?.data??n,a=Array.isArray(i)?i[0]:i,o=Array.isArray(a?.recruiters)?a.recruiters:[],s=o.filter(e=>!r.has(String(ge(e)??``)));s.length!==o.length&&await t.o(t.x,`/module/update/${encodeURIComponent(e)}?module=jobs`,{method:`PATCH`,body:JSON.stringify({recruiters:s})})}))}async function K(e){let n=Array.isArray(e?.jobIds)?e.jobIds:[e?.jobIds].filter(Boolean),r=e?.removedIds??[],i=(Array.isArray(e?.userId)?e.userId:[e?.userId]).map(ge).filter(e=>e!==null),a;return i.length>0&&(a=await t.o(t.T,`/assign?type=other`,{method:`PUT`,body:JSON.stringify(_e(e))})),await G(n,r),a}async function ve({submissionId:e,isMail:n=!1}){return L(await t.o(t.x,`/submissions/move-to-onboarding`,{method:`POST`,body:JSON.stringify({submissionId:e,isMail:!!n})}))}async function ye(e,n){return L(await t.o(t.x,`/submissions/approve`,{method:`POST`,body:JSON.stringify({submissionId:e,...n})}))}async function be(e){return L(await t.o(t.x,`/submissions/vms-approve?submissionId=${encodeURIComponent(e)}`))}async function xe(e,{submissionId:n=``,billRate:r,payRate:i,currency:a=`$`,rateUnit:o=`hr`,referralId:s,referralRate:c,referralType:l,referralEnabled:u,vmsPercent:d=0,documentIds:f=[],remarks:p=null}={}){let m=e?`/workforce-engagements/${encodeURIComponent(e)}/cfo-approval/send`:`/submissions/${encodeURIComponent(n)}/cfo-approval/send`;if(!e&&!n)throw Error(`Submission is required to send for approval.`);let h=typeof window<`u`?window.location.origin:``,g=e||n;return L(await t.o(t.D,m,{method:`POST`,body:JSON.stringify({proposedRate:{candidateProposedRate:Number(r)||0,candidateProposedRateCurrency:a,candidateProposedRateCurrencySymbol:``,candidateProposedRateUnit:o},candidateRate:{candidateAcceptedRate:Number(i)||0,candidateAcceptedCurrency:a,candidateAcceptedCurrencySymbol:``,candidateAcceptedPayUnit:o,candidateAcceptedRateNegotiable:!1},...s!=null&&s!==``?{referralId:s}:{},...c==null?{}:{referralRate:Number(c)||0},...l!=null&&l!==``?{referralType:l}:{},...u==null?{}:{referralEnabled:!!u},vmsPercent:Number(d)||0,documentIds:f,remarks:p,approvalUrl:`${h}/cfo-approval/${encodeURIComponent(g)}`})}))}async function Se({submissionId:e,rejectReasonId:n,rejectReason:r,rejectReasonComments:i}){return L(await t.o(t.x,`/submissions/reject`,{method:`POST`,body:JSON.stringify({submissionId:e,rejectReasonId:n,rejectReason:r,rejectReasonComments:i})}))}async function Ce({jobId:e,applicantId:n}){let r=new URLSearchParams({jobId:String(e??``),applicantId:String(n??``)});return L(await t.o(t.x,`/submissions/exists?${r.toString()}`))??{exists:!1}}async function we({searchQuery:e,candidateId:n}){let r=L(await t.o(t.x,`/quick-submit/job-search`,{method:`POST`,body:JSON.stringify({searchQuery:e??``,candidateId:n?String(n):``})}));return Array.isArray(r)?r:[]}async function Te({search:e,jobId:n}){let r=L(await t.o(t.x,`/quick-submit/candidate-search`,{method:`POST`,body:JSON.stringify({search:e??``,jobId:n?String(n):``})}));return Array.isArray(r)?r:[]}async function Ee({jobId:e,applicantId:n,jobIds:r,applicantIds:i}){let a=!!e,o={};if(e&&(o.jobId=String(e)),n&&(o.applicantId=String(n)),Array.isArray(r)&&(o.jobIds=r.filter(Boolean).map(String)),Array.isArray(i)&&(o.applicantIds=i.filter(Boolean).map(String)),!(a?o.applicantIds:o.jobIds)?.length)return new Map;let s=L(await t.o(t.x,`/submissions/exists-bulk`,{method:`POST`,body:JSON.stringify(o)}))?.pairs??[];return new Map(s.map(e=>[String(a?e.applicantId:e.jobId),{submissionId:e.submissionId??``,submittedAt:e.submittedAt??null}]))}async function De({jobId:e,candidateIds:n}){return t.o(t.T,`/source/hiringStgUpdate`,{method:`PUT`,body:JSON.stringify({...F(),multiJobId:Array.isArray(e)?e:[e],applicantId:Array.isArray(n)?n:[n],updateStatus:`pipeline`,updateStatusType:`call`,responseType:`responded`,hiriringStatusChangeType:`tagToJobs`,comments:``,userId:I()})})}var Oe={jobsCount:[`total`,`Total Jobs`,`active`,`Active Jobs`,`myAssignedCount`,`My Jobs`],submissionCount:[`Selected`,`Submitted to client`,`Submitted to Client`,`Not Submitted`,`Approved`]};function ke(e){return Oe[e]??null}var Ae={stickyNotes:{title:`Sticky Notes`,variant:`sticky`,request:{method:`GET`,params:{limit:20,offset:0}},listPath:`data.data`,maxCount:4,viewAllUrl:`/viewall-sticky`,refreshEvent:`sticky-notes:refresh`,pillKey:`status`,headingKey:`title`,bodyKey:`notes`,bodyLines:3,footerLeftKey:`createdByName`,footerRightKey:`createdAt`,dateKey:`reminder.time`,colorBy:`status`,colorMap:{Note:`green`,Tagged:`red`},color:`auto`},jobsCount:{variant:`counts`,dynamicCommonCount:{module:`jobs`,keys:[`jobRecruitmentStatus`,`jobStatus`]},listPath:``,layout:`4x2`,groupSeparator:``,labelMap:{total:`Total Jobs`,active:`Active Jobs`,myAssignedCount:`My Jobs`},color:`#f1f3f8`,show:ke(`jobsCount`),hide:[`inactive`,`submitted`,`noSubmissions`]},submissionCount:{title:`Total Client Submission`,tooltipText:`Includes all submissions that are pending and submitted to the client.`,variant:`submission`,dynamicCommonCount:{module:`submissions`,keys:[`clientSubmissionStatus.clientSubmissionStatusText`]},listPath:``,totalKey:`total`,labelMap:{Selected:`Selected`,"Submitted to client":`Submitted to Client`,"Not Submitted":`Not Submitted`,Approved:`Approved`},colorMap:{Selected:`rgb(234, 175, 12)`,"Submitted to client":`green`,"Not Submitted":`red`,Approved:`#1d4ed8`},show:ke(`submissionCount`)},leadAptitude:{title:`Aptitude Test Results`,variant:`assessment`,request:{method:`GET`,params:{}},listPath:`data`,totalKey:`totalScore`,maxKey:`maximumScore`,statusKey:`status`,attemptDateKey:`attemptDate`,timeTakenKey:`timeTaken`,rankKey:`rank`,labelMap:{logicalReasoning:`Logical Reasoning`,quantitativeAptitude:`Quantitative Aptitude`,verbalAbility:`Verbal Ability`},colorMap:{logicalReasoning:`#7c3aed`,quantitativeAptitude:`#0891b2`,verbalAbility:`#16a34a`},hide:[`status`,`attemptDate`,`timeTaken`,`rank`,`maximumScore`]},onboardingCount:{variant:`counts`,dynamicCommonCount:{module:`onboarding`,keys:[`onboardingObStage`]},listPath:``,frame:!0,frameTitle:`Onboarding`,frameClassName:`onboarding-card`,viewAll:!0,footer:!0,columns:4,valueMap:{inProgress:`Under Review`,hired:`Onboarded`,projectCompleted:`Project cycle closed`,archive:`No longer active`},labelMap:{inProgress:`In Progress`,hired:`Hired`,projectCompleted:`Project Completed`,archive:`Archive`},aggregateMap:{inProgress:[`inProgress`,`In Progress`],hired:[`hired`,`Hired`,`Active`],projectCompleted:[`projectCompleted`,`Project Completed`,`Completed`],archive:[`archive`,`Archive`,`Not Hired`,`Candidate Backout`]},show:ke(`onboardingCount`),hide:[`total`,`totalGrossMargin`,`totalNetMargin`]},timesheetMonthlySummary:{variant:`metrics`,title:`Monthly Summary`,valueSuffix:` hrs`,rows:[{key:`unapprovedPayableHours`,label:`Unapproved Payable hours`,sublabel:`(S + O)`},{key:`nonPayableHours`,label:`Non-payable hours`,sublabel:`(Leave/Holidays)`},{key:`approvedPayableHours`,label:`Approved Payable hours`,valueColor:`#15803d`}]},timesheetWeeklyTotals:{variant:`metrics`,title:`Weekly Totals (S + O)`,plainHeader:!0,valueSuffix:` hrs`,listRows:{itemValueKey:`weeklyTotals.payable`,itemLabel:(e,t)=>{let n=e.weekStart?(0,u.default)(e.weekStart).format(`MMM D`):``,r=e.weekEnd?(0,u.default)(e.weekEnd).format(`MMM D`):``,i=`Week ${e.weekNumber??t+1}`;return n&&r?`${i} (${n} - ${r})`:i}}},timesheetHourBreakdown:{variant:`bars`,valueSuffix:` hrs`,rows:[{key:`totalSTHours`,label:`Standard`,color:`#1d4ed8`,bg:`#D0E6FF`},{key:`totalOTHours`,label:`Overtime`,color:`#15803d`,bg:`#d9f7e3`},{key:`leaveHours`,label:`Leaves`,color:`#b45309`,bg:`#FFECBA`},{key:`holidayHours`,label:`Holidays`,color:`#6d28d9`,bg:`#ede9fe`,fallback:0}]},financeKpiRow:{variant:`kpi`}},je=[`blue`,`green`,`purple`,`peach`,`red`,`gray`],Me=[`purple`,`peach`,`green`],Ne=[`#1d4ed8`,`#ef4444`,`#16a34a`,`#9333ea`,`#f59e0b`,`#0891b2`],Pe={blue:`#1d4ed8`,green:`#16a34a`,purple:`#9333ea`,peach:`#f97316`,red:`#ef4444`,gray:`#6b7280`};function Fe(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.cardConfig)??{};return{...Ae,...e}}var Ie={timesheet:{currentLabel:`Standard`,currentColor:`blue`,pastLabel:`Supplementary`,pastColor:`gold`,thresholdMonths:0}};function Le(e){let t=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.periodBadgeConfig)??{};return{...Ie[e],...t[e]}}var Re=[10,25,50,100].map(e=>({value:e,label:String(e)}));function ze({current:e,pageSize:t,total:r,onChange:i,onPageSizeChange:a}){let o=Math.min((e-1)*t+1,r),c=Math.min(e*t,r);return(0,l.jsxs)(s.Flex,{align:`center`,justify:`space-between`,className:`custom-pagination`,style:{color:n.Dn.textSecondary},children:[(0,l.jsxs)(s.Space,{size:5,align:`center`,children:[(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`Show`}),(0,l.jsx)(s.Select,{value:t,size:`small`,style:{width:72},popupMatchSelectWidth:72,onChange:e=>{a(e),i(1)},options:Re}),(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`/ page`})]}),(0,l.jsxs)(s.Space,{size:16,align:`center`,children:[(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`Showing ${o} - ${c} of ${r}`}),(0,l.jsx)(s.Pagination,{current:e,pageSize:t,total:r,showSizeChanger:!1,showQuickJumper:!1,showLessItems:!0,onChange:i})]})]})}var{Title:Be,Text:Ve}=s.Typography;function q(e,t){return Array.isArray(t)?t.map(t=>q(e,t)).filter(J).join(` `):typeof t==`string`&&t.includes(`.`)?t.split(`.`).reduce((e,t)=>e==null?e:e[t],e):e[t]}var J=e=>e!=null&&e!==``;function Y(e,t,n={}){return{...n,...e.styles?.[t]||{}}}function X(e){return J(e.title)?(0,l.jsx)(Be,{level:5,style:Y(e,`headerTitle`),children:e.title}):void 0}function He(e,t){return J(e.title)?t:void 0}function Ue(e){return[`blue`,`green`,`purple`,`peach`,`red`,`gray`].includes(rt(e))}function We(e,t){let n=t||``,r=Y(e,`card`);return J(n)?Ue(n)?{className:n,style:r}:{className:``,style:{...r,background:n,borderColor:e.styles?.card?.borderColor||n}}:{className:``,style:r}}function Ge(e,t){return t?t.split(`.`).reduce((e,t)=>e==null?e:e[t],e):e}function Ke(e){return String(e).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).replace(/\s+/g,` `).trim().replace(/\b\w/g,e=>e.toUpperCase())}function qe(e){if(!J(e))return null;let t=new Date(e);return isNaN(t)||t.getFullYear()<=1?null:n.An(t,n.Bn().dateFormat)}function Je(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function Ye(e){return String(e??``).replace(/(?:\s*\(\d+[\d,]*\))+\s*$/,``).trim()}function Xe(e,t){let n=[e?.data?.total,e?.data?.count,e?.data?.totalCount,e?.data?.pagination?.total,e?.data?.data?.total,e?.data?.data?.count,e?.data?.data?.totalCount,e?.total,e?.count,e?.totalCount,e?.pagination?.total],r=[e?.data?.todoCount,e?.data?.toDoCount,e?.data?.pendingCount,e?.data?.data?.todoCount,e?.data?.data?.toDoCount,e?.todoCount,e?.toDoCount,e?.pendingCount],i=[e?.data?.resolvedCount,e?.data?.data?.resolvedCount,e?.resolvedCount],a=r.map(Je).find(e=>e!==null),o=i.map(Je).find(e=>e!==null),s=n.map(Je).find(e=>e!==null),c=a!==null&&o!==null?a+o:null,l=Array.isArray(t)?t.length:null;return{totalCount:s??c??l,todoCount:a,resolvedCount:o}}function Ze(e,t){let n=RegExp(`^${t}\\d+$`);return Object.keys(e).filter(e=>e===t||n.test(e)).map(n=>({field:e[n],n:n===t?1:Number(n.slice(t.length))})).sort((e,t)=>t.n-e.n).map(e=>e.field)}function Qe(e){return Math.max(1,Math.floor(24/(e||4)))}function $e(e){if(typeof e!=`string`)return{};let t=e.toLowerCase().replace(/\s/g,``).match(/^(\d+)x(\d+)$/);if(!t)return{};let n=Number(t[1]);return{columns:n,maxCount:n*Number(t[2])}}function et(e,t){let n=$e(e.layout),r=e.columns??n.columns??t,i=e.maxCount??n.maxCount;return{columns:r,span:Qe(r),maxCount:i}}function tt(e,t){return t?e.slice(0,t):e}function nt(e,t){return e.color?e.color===`auto`?je[t%je.length]:e.color:``}var rt=e=>String(e??``).trim().toLowerCase(),it=e=>String(e??``).trim().toLowerCase().replace(/[\s._-]+/g,``);function at(e,t){let n=[],r=new Map;for(let i of e){let e=it(t(i)),a=r.get(e);if(a){typeof a.value==`number`&&typeof i.value==`number`&&(a.value+=i.value);continue}let o={...i};r.set(e,o),n.push(o)}return n}function ot(e,t){return(Array.isArray(t)?t:[t]).some(t=>J(t)&&it(t)===it(e))}function st(e,t){if(!e.colorMap)return null;let n=Object.keys(e.colorMap).find(e=>ot(e,t));return n?e.colorMap[n]:null}function ct(e,t,n){if(!e.labelMap)return n;let r=Object.keys(e.labelMap).find(e=>ot(e,t));return r?e.labelMap[r]:n}function lt(e,t){if(!e.valueMap)return null;let n=Object.keys(e.valueMap).find(e=>ot(e,t));return n?e.valueMap[n]:null}function ut(e,t){return!Array.isArray(e.show)||e.show.length===0||e.show.some(e=>ot(e,t))}function dt(e,t,n){return ut(e,t)?Array.isArray(e.hide)?e.hide.some(e=>typeof e==`number`?e===n:ot(e,t)):!1:!0}function ft(e,t){for(let n of Ze(e,`titleKey`)){let e=q(t,n);if(J(e))return e}return null}function pt(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.entries(e).filter(([,e])=>typeof e==`number`||typeof e==`string`&&e!==``&&!isNaN(e)).map(([e,t])=>({key:e,label:Ke(e),value:Number(t)}))}function mt(e,t){let n=e?.data??e,r=Array.isArray(n?.fields)?n.fields:null,i=t.dynamicCommonCount?.keys?.[0],a=r?[...r.find(e=>e.key===i)?[r.find(e=>e.key===i)]:[],...r.filter(e=>e.key!==i)]:[n];return a.some(e=>Array.isArray(e?.counts))?a.reduce((e,t)=>!t||!Array.isArray(t.counts)?e:(e.total=Math.max(Number(e.total)||0,Number(t.total)||0),t.counts.forEach(({key:t,count:n})=>{e[t]=Number(n)||0}),e),{total:0}):n}function ht(e,t){let n=pt(e),r=t.totalKey,i=r?q(e||{},r):void 0,a=r&&J(i)&&!isNaN(i),o=at(n.map((e,t)=>({...e,_i:t})).filter(e=>!(a&&ot(r,[e.key,e.label]))).filter(e=>!dt(t,[e.key,e.label],e._i)).map((e,n)=>{let r=st(t,[e.key,e.label]),i=r?Pe[rt(r)]||r:Ne[e._i%Ne.length];return{label:ct(t,[e.key,e.label],e.label),value:e.value,barColor:i,accentColor:n===0?`#f97316`:null,showInfo:n===0}}),e=>e.label);return{total:a?Number(i):o.reduce((e,t)=>e+t.value,0),rows:tt(o,et(t,1).maxCount)}}function gt({item:e,group:t,color:n}){let r=n=>Ze(t,n).map(t=>q(e,t)).filter(J),i=r(`titleKey`),a=r(`countKey`),o=r(`nameKey`),c=r(`valueKey`),u=We(t,n);return(0,l.jsxs)(s.Card,{className:`dyn-card-item ${u.className}`.trim(),style:u.style,children:[i.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-title`,style:Y(t,`cardTitle`),children:e},`t${n}`)),a.map((e,n)=>(0,l.jsx)(s.Statistic,{value:e,className:`dyn-card-stat`,styles:{content:Y(t,`cardValue`)}},`c${n}`)),o.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-name`,style:Y(t,`cardName`),children:e},`n${n}`)),c.length>0&&(0,l.jsx)(`div`,{className:`dyn-card-footer`,style:Y(t,`cardFooter`),children:c.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-sub`,style:Y(t,`cardSub`),children:e},`v${n}`))})]})}function _t({group:e}){let{span:t,maxCount:n}=et(e,4),r=tt((Array.isArray(e.list)?e.list:[]).map((t,n)=>({item:t,name:ft(e,t),_i:n})).filter(t=>!dt(e,t.name,t._i)),n);return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(Ve,{type:`secondary`,style:Y(e,`headerExtra`),children:[r.length,` cards`]})),children:(0,l.jsx)(s.Row,{gutter:[16,16],children:r.map(n=>{let r=st(e,n.name)||nt(e,n._i);return(0,l.jsx)(s.Col,{xs:24,sm:12,md:t>=12?12:t*2,lg:t,xl:t,children:(0,l.jsx)(gt,{item:n.item,group:e,color:r})},n._i)})})})}function vt({group:e,items:t}){let{span:n,maxCount:r}=et(e,4),i=tt(at(t.map((e,t)=>({...e,_i:t})).filter(t=>!dt(e,[t.key,t.label],t._i)),t=>ct(e,[t.key,t.label],t.label)),r);return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(Ve,{type:`secondary`,style:Y(e,`headerExtra`),children:[i.length,` cards`]})),children:(0,l.jsx)(s.Row,{gutter:[16,16],children:i.map(t=>{let r=We(e,st(e,[t.key,t.label])||nt(e,t._i));return(0,l.jsx)(s.Col,{xs:24,sm:12,md:n>=12?12:n*2,lg:n,xl:n,children:(0,l.jsxs)(s.Card,{className:`dyn-card-item ${r.className}`.trim(),style:r.style,children:[(0,l.jsx)(Ve,{className:`dyn-card-title`,style:Y(e,`cardTitle`),children:ct(e,[t.key,t.label],t.label)}),(0,l.jsx)(s.Statistic,{value:t.value,groupSeparator:e.groupSeparator??`,`,className:`dyn-card-stat`,styles:{content:Y(e,`cardValue`)}}),J(lt(e,[t.key,t.label]))&&(0,l.jsx)(Ve,{className:`dyn-card-sub`,style:Y(e,`cardSub`),children:lt(e,[t.key,t.label])})]})},t._i)})})})}function yt({group:e,data:t}){let{total:n,rows:r}=ht(t,e),i=e.tooltipText;return(0,l.jsxs)(s.Card,{className:`submission-card`,style:Y(e,`card`),children:[J(e.title)&&(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-header`,style:Y(e,`submissionHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(Ve,{className:`submission-title`,style:Y(e,`submissionTitle`),children:[e.title,` `,i&&(0,l.jsx)(s.Tooltip,{title:i,children:(0,l.jsx)(c.InfoCircleOutlined,{className:`submission-info-icon`,style:Y(e,`infoIcon`)})})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-total`,style:Y(e,`submissionTotal`),children:Number(n||0).toLocaleString()})})]}),(0,l.jsx)(`div`,{className:`submission-rows`,style:Y(e,`submissionRows`),children:r.map((t,r)=>(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-row-header`,style:Y(e,`submissionRowHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Row,{align:`middle`,gutter:6,children:(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-label`,style:Y(e,`submissionRowLabel`),children:t.label})})})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-value`,style:Y(e,`submissionRowValue`),children:t.value})})]}),(0,l.jsx)(`div`,{className:`submission-bar-track`,style:Y(e,`submissionBarTrack`),children:(0,l.jsx)(`div`,{className:`submission-bar-fill`,style:{width:`${t.value/(n||1)*100}%`,background:t.barColor}})})]},`${t.label}-${r}`))})]})}function bt(e){if(!J(e))return`-`;let t=new Date(e);return!Number.isNaN(t.getTime())&&/date|time/i.test(String(e))?n.jn(t):String(e)}function xt({group:e,data:t}){let n=e.totalKey??`totalScore`,r=e.maxKey??`maximumScore`,i=e.statusKey??`status`,a=e.attemptDateKey??`attemptDate`,o=e.timeTakenKey??`timeTaken`,c=e.rankKey??`rank`,u=Number(q(t||{},n)??0),d=Number(q(t||{},r)??100)||100,f=Math.max(0,Math.min(100,Math.round(u/d*100))),p=ht(t,{...e,totalKey:n,hide:[...Array.isArray(e.hide)?e.hide:[],r,i,a,o,c]}).rows,m=[{key:i,label:e.statusLabel??`Status`},{key:a,label:e.attemptDateLabel??`Attempt Date`},{key:o,label:e.timeTakenLabel??`Time Taken`},{key:c,label:e.rankLabel??`Rank`}].filter(e=>J(q(t||{},e.key)));return(0,l.jsxs)(s.Card,{className:`assessment-card`,style:Y(e,`card`),title:X(e),children:[(0,l.jsxs)(`div`,{className:`assessment-card__top`,children:[(0,l.jsx)(s.Progress,{type:`circle`,percent:f,format:()=>`${Number(u||0).toLocaleString()}/${d.toLocaleString()}`,strokeColor:e.scoreColor??`#6d4aff`,trailColor:e.trailColor??`#edf0f5`}),(0,l.jsx)(`dl`,{className:`assessment-card__meta`,children:m.map(e=>(0,l.jsxs)(`div`,{className:`assessment-card__meta-row`,children:[(0,l.jsx)(`dt`,{children:e.label}),(0,l.jsx)(`dd`,{children:bt(q(t||{},e.key))})]},e.key))})]}),(0,l.jsx)(`div`,{className:`submission-rows assessment-card__rows`,style:Y(e,`submissionRows`),children:p.map(t=>(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-row-header`,style:Y(e,`submissionRowHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-label`,style:Y(e,`submissionRowLabel`),children:t.label})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-value`,style:Y(e,`submissionRowValue`),children:t.value})})]}),(0,l.jsx)(`div`,{className:`submission-bar-track`,style:Y(e,`submissionBarTrack`),children:(0,l.jsx)(`div`,{className:`submission-bar-fill`,style:{width:`${Math.max(0,Math.min(100,Number(t.value)/d*100))}%`,background:t.barColor}})})]},t.label))})]})}function St(e,t={},n={}){let r=J(e)?e:t.fallback;if(!J(r))return`-`;let i=Number(r);if(!Number.isFinite(i))return String(r);let a=t.suffix??n.valueSuffix??``;return`${i.toFixed(1).replace(/\.0$/,``)}${a}`}function Ct({group:e,data:t}){let n=Array.isArray(t);return(0,l.jsxs)(s.Card,{className:`timesheet-summary-card`,size:`small`,children:[J(e.title)&&(e.plainHeader?(0,l.jsx)(Ve,{type:`secondary`,style:{fontSize:12,fontWeight:600},children:e.title}):(0,l.jsxs)(`div`,{className:`timesheet-summary-card__head`,children:[(0,l.jsx)(Be,{level:5,style:{margin:0},children:e.title}),e.headerExtra]})),!n&&(0,l.jsx)(`div`,{className:`timesheet-summary-card__metrics`,children:(e.rows??[]).map(n=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__metric-row`,children:[(0,l.jsxs)(Ve,{type:`secondary`,style:{fontSize:12},children:[n.label,` `,n.sublabel&&(0,l.jsx)(`span`,{style:{fontSize:11},children:n.sublabel})]}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:13,whiteSpace:`nowrap`,color:n.valueColor},children:St(q(t??{},n.key),n,e)})]},n.key))}),n&&t.length>0&&(0,l.jsx)(`div`,{className:`timesheet-summary-card__weekly`,children:t.map((t,n)=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__week-row`,children:[(0,l.jsx)(Ve,{type:`secondary`,style:{fontSize:12},children:e.listRows?.itemLabel?e.listRows.itemLabel(t,n):`Row ${n+1}`}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:12},children:St(q(t,e.listRows?.itemValueKey),e.listRows,e)})]},n))})]})}function wt({group:e,data:t}){return(0,l.jsxs)(s.Card,{className:`timesheet-summary-card`,size:`small`,children:[(J(e.title)||e.headerExtra)&&(0,l.jsxs)(`div`,{className:`timesheet-summary-card__head`,children:[J(e.title)&&(0,l.jsx)(Be,{level:5,style:{margin:0},children:e.title}),e.headerExtra]}),(0,l.jsx)(`div`,{className:`timesheet-summary-card__bars`,children:(e.rows??[]).map(n=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__bar`,style:{background:n.bg},children:[(0,l.jsx)(Ve,{style:{fontSize:12,color:n.color,fontWeight:500},children:n.label}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:13,color:n.color},children:St(q(t??{},n.key),n,e)})]},n.key))})]})}function Tt({group:e,data:t}){let n=Array.isArray(t)?t:[],r=`finance-kpi-row${e.compact?` finance-kpi-row--compact`:``}`;if(e.loading){let e=n.length||4;return(0,l.jsx)(`div`,{className:r,children:Array.from({length:e},(e,t)=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--skeleton`,children:[(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--label`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--value`})]},t))})}return(0,l.jsx)(`div`,{className:r,children:n.map(e=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--${e.tone??`neutral`}`,children:[e.icon?(0,l.jsx)(`span`,{className:`fin-kpi__icon`,children:e.icon}):null,(0,l.jsxs)(`span`,{className:`fin-kpi__body`,children:[(0,l.jsx)(`span`,{className:`finance-kpi__label`,children:e.label}),(0,l.jsx)(`strong`,{className:`finance-kpi__value`,children:e.value}),e.sub??e.hint?(0,l.jsx)(`span`,{className:`finance-kpi__hint`,children:e.sub??e.hint}):null]})]},e.key??e.label))})}function Et(e,t){return rt(q(t,e.pillKey||`status`))===`resolved`}function Dt(e,t){return J(e.dateKey?qe(q(t,e.dateKey)):null)}function Ot(e,t){let n=rt(q(t,e.pillKey||`status`));if(n===`tagged`||n===`tag user`||n===`tagged user`)return!0;let r=t?.receiver??t?.receivers??t?.receiverId??t?.receiverName??t?.taggedUser;if(Array.isArray(r))return r.length>0;if(r&&typeof r==`object`)return Object.keys(r).length>0;if(J(r))return!0;let i=`${q(t,e.headingKey||`title`)??``} ${q(t,e.bodyKey||`notes`)??``}`;return/(^|\s)@[^\s]+/.test(i)}function kt(e,t,n){return Et(e,t)?`gray`:Ot(e,t)?`blue`:Dt(e,t)?`peach`:st(e,e.colorBy?q(t,e.colorBy):null)||(e.color&&e.color!==`auto`?e.color:Me[n%Me.length])}function At(e,t){let{start:n,end:r}=e.dateRange||{};if(!n||!r)return!0;let i=q(t,e.footerRightKey||`createdAt`);if(!J(i))return!0;let a=new Date(i);return isNaN(a)?!0:a>=n&&a<=r}function jt(e,t,n){let r=t.dateKey?qe(q(e,t.dateKey)):null;return{type:kt(t,e,n),pill:t.pillKey?q(e,t.pillKey):null,heading:t.headingKey?q(e,t.headingKey):null,body:t.bodyKey?q(e,t.bodyKey):null,footerLeft:t.footerLeftKey?q(e,t.footerLeftKey):null,footerRight:t.footerRightKey?qe(q(e,t.footerRightKey)):null,dot:r?`#f97316`:null,date:r}}function Mt({text:e,lines:t,style:n}){let r=(0,o.useRef)(null),[i,a]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=r.current;if(!e)return;let t=0,n=()=>{t=requestAnimationFrame(()=>{let t=e.scrollHeight-e.clientHeight>1;a(e=>e===t?e:t)})};n();let i=new ResizeObserver(n);return i.observe(e),()=>{cancelAnimationFrame(t),i.disconnect()}},[e,t]);let c=`sticky-note-body${t?` clamp-${t}`:``}`;return(0,l.jsx)(s.Popover,{trigger:`hover`,placement:`topLeft`,classNames:{root:`sticky-note-popover`},content:i?(0,l.jsx)(`div`,{className:`sticky-note-popover-content`,children:e}):null,open:i?void 0:!1,children:(0,l.jsx)(`div`,{ref:r,className:c,style:n,children:e})})}function Nt({group:e}){let t=(0,d.useNavigate)(),n=(0,d.useLocation)(),r=()=>t(`/popup/sticky-notes`,{state:{background:n,selectedIds:[],selectedRecords:[],moduleName:`general`,popupContext:{}}}),i=e=>t(`/popup/sticky-notes`,{state:{background:n,selectedIds:[],selectedRecords:[],moduleName:`general`,popupContext:{editingNoteId:e._id??e.id,editingHeading:e.title,editingComments:e.notes,editingTargetDate:e.reminder?.time||void 0}}}),[a,u]=(0,o.useState)(new Set),f=async e=>{let t=e._id??e.id;u(e=>new Set(e).add(t));try{await U(t),s.message.success(`Note resolved`)}catch{s.message.error(`Failed to resolve note`),u(e=>{let n=new Set(e);return n.delete(t),n})}},{span:p,maxCount:m}=et(e,2),h=t=>e.colorBy?q(t,e.colorBy):e.headingKey?q(t,e.headingKey):null,g=(Array.isArray(e.list)?e.list:[]).filter(e=>!a.has(e._id??e.id)).map((e,t)=>({item:e,_i:t})).filter(({item:t,_i:n})=>!dt(e,h(t),n)).filter(({item:t})=>At(e,t)),[_,v]=(0,o.useState)(`todo`),y=g.filter(({item:t})=>!Et(e,t)),b=g.filter(({item:t})=>Et(e,t)),x=e.showTabs,S=x?_===`resolved`?b:y:g,[C,w]=(0,o.useState)(e.pageSize||12),[T,E]=(0,o.useState)(1);(0,o.useEffect)(()=>{E(1)},[_,e.dateRange]);let D=Math.max(1,Math.ceil(S.length/C));(0,o.useEffect)(()=>{E(e=>Math.min(e,D))},[D]);let O=x?S.slice((T-1)*C,T*C):tt(g,m);return(0,l.jsxs)(s.Card,{className:`sticky-card`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(`div`,{className:`sticky-card-actions`,children:[e.headerExtra,(0,l.jsx)(s.Tooltip,{title:`Add note`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.PlusOutlined,{}),size:`small`,onClick:r})}),J(e.viewAllUrl)&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:()=>t(e.viewAllUrl,{state:{moduleName:e.moduleName,title:e.title,request:e.request}}),children:`View all`})]})),children:[x&&(0,l.jsx)(P,{activeKey:_,onChange:v,tabs:[{key:`todo`,title:`To-do`,count:y.length},{key:`resolved`,title:`Resolved Notes`,count:b.length}]}),O.length===0?(0,l.jsx)(s.Empty,{description:`No notes found`}):(0,l.jsx)(`div`,{className:x?`sticky-notes-scroll`:void 0,children:(0,l.jsx)(s.Row,{gutter:[12,12],children:O.map(({item:t,_i:n})=>{let r=jt(t,e,n),a=We(e,r.type);return(0,l.jsx)(s.Col,{xs:24,sm:24,md:p>=12?12:p*2,lg:p,xl:p,children:(0,l.jsxs)(`div`,{className:`sticky-note ${a.className}`.trim(),style:a.style,children:[(0,l.jsxs)(s.Space,{size:4,className:`sticky-note-hover-actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>i(t)})}),(0,l.jsx)(s.Tooltip,{title:`Resolve`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),onClick:()=>f(t)})})]}),(0,l.jsxs)(s.Space,{size:8,align:`center`,className:`sticky-note-pill-row`,children:[J(r.pill)&&(0,l.jsxs)(s.Tag,{style:Y(e,`stickyPill`),children:[r.dot&&(0,l.jsx)(`span`,{className:`sticky-note-dot`,style:{background:r.dot}}),r.pill]}),r.date&&(0,l.jsx)(Ve,{className:`sticky-note-date`,style:Y(e,`stickyDate`),children:r.date})]}),J(r.heading)&&(0,l.jsx)(Ve,{strong:!0,className:`sticky-note-heading`,style:Y(e,`stickyHeading`),children:r.heading}),J(r.body)&&(0,l.jsx)(Mt,{text:r.body,lines:e.bodyLines,style:Y(e,`stickyBody`)}),(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`sticky-note-footer`,style:Y(e,`stickyFooter`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{style:Y(e,`stickyFooterText`),children:r.footerLeft})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{style:Y(e,`stickyFooterText`),children:r.footerRight})})]})]})},n)})})}),x&&S.length>0&&(0,l.jsx)(`div`,{className:`sticky-notes-pagination`,children:(0,l.jsx)(ze,{current:T,pageSize:C,total:S.length,onChange:E,onPageSizeChange:w})})]})}function Pt({group:e,children:t}){let n=e.frameClassName||`dyn-frame`,r=e.viewAll?(0,l.jsx)(`a`,{className:`dyn-frame-view-all`,children:typeof e.viewAll==`string`?e.viewAll:`View all`}):void 0;return(0,l.jsxs)(s.Card,{className:n,title:e.frameTitle,extra:r,children:[t,e.footer&&(0,l.jsx)(`div`,{className:`${n}-footer`})]})}function Ft({group:e,data:t}){let n=e.variant===`sticky`?Ye(e.title):e.title,r=e.variant===`sticky`&&J(e.totalCount)?`${n} (${Number(e.totalCount).toLocaleString()})`:n,i=r===e.title?e:{...e,title:r},a=i.frame?{...i,title:void 0}:i,o=a.variant===`sticky`?(0,l.jsx)(Nt,{group:{...a,list:Array.isArray(t)?t:[]}}):a.variant===`counts`?(0,l.jsx)(vt,{group:a,items:pt(t)}):a.variant===`submission`?(0,l.jsx)(yt,{group:a,data:t}):a.variant===`assessment`?(0,l.jsx)(xt,{group:a,data:t}):a.variant===`metrics`?(0,l.jsx)(Ct,{group:a,data:t}):a.variant===`bars`?(0,l.jsx)(wt,{group:a,data:t}):a.variant===`kpi`?(0,l.jsx)(Tt,{group:a,data:t}):(0,l.jsx)(_t,{group:{...a,list:Array.isArray(t)?t:[]}});return i.frame?(0,l.jsx)(Pt,{group:i,children:o}):o}function It({moduleName:e,title:t,maxCount:n,layout:r,columns:i,request:a,viewAll:c=!0,staticData:u,showTabs:d,dateRange:f,headerExtra:h,rows:g,loading:_}){let v=Fe()[e],y=a?JSON.stringify(a):``,b=g?JSON.stringify(g):``,x=(0,o.useMemo)(()=>{if(!v)return v;let o={title:t,maxCount:n,layout:r,columns:i,showTabs:d,dateRange:f,headerExtra:h,rows:g,loading:_},s={...v,moduleName:e};for(let e in o)J(o[e])&&(s[e]=o[e]);return a&&(s.request={...v.request,...a,params:{...v.request?.params,...a.params},body:{...v.request?.body,...a.body}}),c||(s.viewAllUrl=void 0),s},[v,t,n,r,i,y,c,d,f,h,b,_]),[S,C]=(0,o.useState)({moduleName:null,resp:null,error:null}),[w,T]=(0,o.useState)(0);(0,o.useEffect)(()=>{if(!x?.refreshEvent)return;let e=()=>T(e=>e+1);return window.addEventListener(x.refreshEvent,e),()=>window.removeEventListener(x.refreshEvent,e)},[x?.refreshEvent]),(0,o.useEffect)(()=>{if(!x)return;if(u!==void 0){let t=mt(u,x);C({moduleName:e,resp:t,error:null});return}if(x.dynamicCommonCount){let t=!0;return m(x.dynamicCommonCount).then(n=>{t&&C({moduleName:e,resp:mt(n,x),error:null})}).catch(n=>{t&&C({moduleName:e,resp:null,error:n})}),()=>{t=!1}}if(!x.request)return;let t=!0;return p(e,x.request).then(n=>{t&&C({moduleName:e,resp:n,error:null})}).catch(n=>{t&&C({moduleName:e,resp:null,error:n})}),()=>{t=!1}},[e,x,u,w]);let E=S.moduleName!==e,D=E?null:S.error,O=E?null:S.resp;if(!x)return(0,l.jsx)(s.Empty,{description:`Unknown dashboard module: ${e}`});if(E)return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(x,`section`),title:X(x),children:(0,l.jsx)(`div`,{style:{textAlign:`center`,padding:24},children:(0,l.jsx)(s.Spin,{})})});if(D)return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(x,`section`),title:X(x),children:(0,l.jsx)(s.Empty,{description:`Failed to load: ${D.message}`})});let k=Ge(O,x.listPath),A=x.variant===`sticky`?Xe(O,k):null,j=x.variant===`sticky`?{...x,...A}:x;return(0,l.jsx)(Ft,{group:j,data:k})}function Lt({moduleName:e,title:t,layout:n,columns:r,maxCount:i,request:a,viewAll:o,staticData:c,showTabs:u,dateRange:d,headerExtra:f,rows:p,loading:m}){return e?(0,l.jsx)(`div`,{className:`dyn-cards`,children:(0,l.jsx)(It,{moduleName:e,title:t,layout:n,columns:r,maxCount:i,request:a,viewAll:o,staticData:c,showTabs:u,dateRange:d,headerExtra:f,rows:p,loading:m})}):(0,l.jsx)(s.Empty,{description:`DynamicCards: a moduleName prop is required`})}var{Text:Rt}=s.Typography;function zt(e){return(e??[]).map(e=>({key:e.userId,title:e.isSelf?`${e.name} (You)`:e.name,searchText:`${e.name} ${e.email??``}`.toLowerCase(),children:zt(e.children)}))}function Bt(e,t){let n=[];for(let r of e){let e=Bt(r.children??[],t);(r.searchText.includes(t)||e.length>0)&&n.push({...r,children:e})}return n}function Vt(e,t=[]){for(let n of e)t.push(n.key),Vt(n.children??[],t);return t}function Ht({value:e=[],onChange:t}){let[n,r]=(0,o.useState)(null),[i,a]=(0,o.useState)(!0),[u,d]=(0,o.useState)(null),[f,p]=(0,o.useState)(``),[m,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=!0;return g().then(t=>{e&&r(zt(t?.users))}).catch(t=>{e&&d(t)}).finally(()=>{e&&a(!1)}),()=>{e=!1}},[]);let _=f.trim().toLowerCase(),v=(0,o.useMemo)(()=>_&&n?Bt(n,_):n,[n,_]),y=_?{expandedKeys:Vt(v??[])}:{},b=(0,l.jsxs)(`div`,{style:{width:280},children:[(0,l.jsx)(s.Input.Search,{placeholder:`Search users`,allowClear:!0,value:f,onChange:e=>p(e.target.value),style:{marginBottom:8}}),i&&(0,l.jsx)(`div`,{style:{padding:24,textAlign:`center`},children:(0,l.jsx)(s.Spin,{size:`small`})}),u&&(0,l.jsx)(s.Empty,{description:`Could not load users`}),!i&&!u&&(v?.length?(0,l.jsx)(`div`,{style:{maxHeight:280,overflow:`auto`},children:(0,l.jsx)(s.Tree,{checkable:!0,selectable:!1,defaultExpandAll:!0,treeData:v,checkedKeys:e,onCheck:(e,n)=>t(n.checkedNodes.map(e=>e.key)),...y})}):(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No users`})),e.length>0&&(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginTop:8,paddingTop:8,borderTop:`1px solid #f0f0f0`},children:[(0,l.jsxs)(Rt,{type:`secondary`,children:[e.length,` selected`]}),(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:()=>t([]),children:`Clear`})]})]});return(0,l.jsx)(s.Popover,{content:b,trigger:`click`,placement:`bottomRight`,open:m,onOpenChange:h,children:(0,l.jsx)(s.Badge,{count:e.length,size:`small`,offset:[-4,4],children:(0,l.jsxs)(s.Button,{icon:(0,l.jsx)(c.FilterOutlined,{}),children:[`Filter by `,(0,l.jsx)(c.DownOutlined,{style:{fontSize:10}})]})})})}function Ut(e,t={}){let n=Array.isArray(e?.autoValueRules)?e.autoValueRules:[];for(let e of n){let n=Array.isArray(e?.whenRoleId)?e.whenRoleId.map(Number):[],r=Array.isArray(e?.whenUserId)?e.whenUserId.map(Number):[],i=t.roleId!==void 0&&n.includes(t.roleId),a=t.userId!==void 0&&r.includes(t.userId);if(i||a)return{matched:!0,value:e.value}}return{matched:!1,value:void 0}}function Wt(e){if(e==null||e===``)return``;let t=Number(e);if(!Number.isFinite(t)||t<0)return``;if(t===0)return`today`;if(t===1)return`yesterday`;if(t<30)return`${t} days ago`;if(t<60)return`about a month ago`;if(t<365)return`about ${Math.round(t/30)} months ago`;let n=Math.floor(t/365);return n===1?`over a year ago`:`over ${n} years ago`}function Gt(e,t){return(Array.isArray(t)&&t.length?t:Object.keys(e??{})).map(t=>e?.[t]).map(e=>e==null?``:String(e).trim()).filter(Boolean).join(` · `)}function Kt(e,t={}){return e?String(e).replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])):``}function qt(e,t){let n=Gt(e?.record,t),r=Wt(e?.updatedDaysAgo);return{name:n||`an existing record`,age:r||`previously`,days:Number.isFinite(Number(e?.updatedDaysAgo))?String(e.updatedDaysAgo):``,updatedOn:e?.updatedAt?String(e.updatedAt).slice(0,10):``,stage:e?.stage??``,weight:e?.weight??``}}function Jt(e,t={}){let n=qt(e,t.displayFields),r=(e?.policy??t.policy)===`block`;return Kt(e?.message||t.message||(r?`We already have {name} on file — last updated {age}. Please open that record and update it, rather than adding a second copy.`:`We already have {name} on file — last updated {age}. You can carry on and update that record with what you’ve just entered, or go back and check first.`),n)}function Yt(e,t={}){return e?.duplicate?(e.policy??t.policy??`prompt`)===`block`:!1}function Xt(e,t){let n=e?.record??{},r=(Array.isArray(t)&&t.length?t:Object.keys(n)).map(e=>({label:Zt(e),value:n[e]})).filter(e=>e.label&&e.value!==void 0&&e.value!==null&&String(e.value).trim()!==``),i=Wt(e?.updatedDaysAgo);return i&&r.push({label:`Last updated`,value:i}),r}function Zt(e){let t=String(e??``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_\-.]+/g,` `).trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):``}function Qt({form:e,moduleName:t,recordId:r,config:i={},onUseExisting:a}={}){let[s,c]=(0,o.useState)(!1),l=(0,o.useRef)(null),u=(0,o.useCallback)(async i=>{if(!t)return{duplicate:!1};c(!0);try{return await n.ht({module:t,payload:i??e.getFieldsValue(!0)??{},excludeId:r})}finally{c(!1)}},[e,t,r]);return{prompt:(0,o.useCallback)(async({reason:e,payload:t,carry:r}={})=>{let o=await u(t);if(!o?.duplicate)return l.current=null,`clear`;if(l.current&&l.current===o.id)return`existing`;let s=Jt(o,i),c=Xt(o,i.displayFields),d=o.weight===`weak`?`This might be someone you already have`:`You already have this person on file`;return Yt(o,i)?(await n.Ht({tone:`duplicate`,title:d,facts:c,body:s}),`blocked`):await n.Vt({tone:`duplicate`,title:d,facts:c,body:s,okText:`Open their record`,cancelText:`Let me check first`,footnote:r?.files?`We’ll take you to their record with the résumé you just uploaded already attached — save there to keep it. The one already on file is kept too, as an earlier version. Nothing on this form has been filled in.`:`Everything already on their record is kept. Nothing on this form has been filled in.`})?(l.current=o.id??!0,a?.(o.id,o,e,r),`existing`):`blocked`},[u,i,a]),check:u,checking:s,acknowledgedId:l}}var $t=[[`uploadname`,`uploadedfilename`,`originalname`,`filename`],[`uniquename`]],en=`copyuniquename`;function tn(e,t,{excludeSanitised:n=!1}={}){let r=String(e).toLowerCase();return n&&r.endsWith(en)?!1:t.some(e=>r.endsWith(e))}function nn(e){if(!e||typeof e!=`object`)return``;let t=e.uploadedFileName??e.name;if(typeof t==`string`&&t.trim())return t.trim();let n=Object.entries(e).filter(([,e])=>typeof e==`string`&&e.trim());for(let e of $t){let t=n.find(([t])=>tn(t,e,{excludeSanitised:!0}));if(t)return t[1].trim()}let r=n.find(([e])=>String(e).toLowerCase().endsWith(en));return r?r[1].trim():``}function rn(e){if(!e||typeof e!=`object`)return``;let t=e.location??e.url;if(typeof t==`string`&&t.trim())return t.trim();let n=Object.entries(e).find(([e,t])=>typeof t==`string`&&t.trim()&&String(e).toLowerCase().endsWith(`copylocation`));return n?n[1].trim():``}var an=`authToken`,on=`authUser`,sn=`authLoginSession`,cn=[`access_token`,`refresh_token`,`id_token`,`token_type`,`expires_in`,`refresh_expires_in`,`menu`,`footermenu`,`menuPermission`,`default_values`,`roleId`,`companyName`,`preferred_Username`,`user_Email`,`userName`,`userId`,`tenantId`,`businessId`,`businessUnitId`,`activeKey`,`ct_project_id`,`ct_project_name`],ln=`test-flows`,un=[{value:`module`,label:`Module`,isVisible:!0,type:`text`},{value:`flow`,label:`Flow`,isVisible:!0,type:`text`},{value:`step_order`,label:`Step Order`,isVisible:!0,type:`number`},{value:`keyword`,label:`Action`,isVisible:!0,type:`text`},{value:`description`,label:`Description`,isVisible:!0,type:`text`},{value:`target`,label:`Key`,isVisible:!0,type:`text`},{value:`tags`,label:`Tags`,isVisible:!0,type:`text`},{value:`value`,label:`Value`,isVisible:!0,type:`text`},{value:`expected`,label:`Expected`,isVisible:!0,type:`text`}],dn=`lms-flows`,fn=[{value:`module`,label:`Module`,isVisible:!0,type:`text`},{value:`flow`,label:`Flow`,isVisible:!0,type:`text`},{value:`step_order`,label:`Step Order`,isVisible:!0,type:`number`},{value:`keyword`,label:`Action`,isVisible:!0,type:`text`},{value:`description`,label:`Description`,isVisible:!0,type:`text`},{value:`target`,label:`Key`,isVisible:!0,type:`text`},{value:`tags`,label:`Tags`,isVisible:!0,type:`text`},{value:`value`,label:`Value`,isVisible:!0,type:`text`},{value:`expected`,label:`Expected`,isVisible:!0,type:`text`}],pn=null;function mn(e){return e?.token??e?.access_token??e?.accessToken??e?.jwt??e?.data?.token??e?.data?.access_token??e?.data?.accessToken??e?.data?.jwt}function hn(e){if(!e||typeof e!=`string`)return null;try{let t=e.split(`.`)[1];if(!t)return null;let n=t.replace(/-/g,`+`).replace(/_/g,`/`),r=atob(n.padEnd(Math.ceil(n.length/4)*4,`=`));return JSON.parse(r)}catch(e){return console.error(`Unable to decode login token:`,e),null}}function gn(){return localStorage.getItem(an)}async function _n({jobId:e,limit:n=10,offset:r=0,sortBy:i=`new`,type:a=`myVendor`}){return await On(t.T,`/vendor/hotlist`,{method:`POST`,body:JSON.stringify({jobId:e,limit:n,offset:r,sortBy:i,type:a})})}async function vn(e){let n=await On(t.S,`/get-bulkmail-details?jobId=${encodeURIComponent(e)}`);return n.data??n}async function yn(e,n=``){let r=String(e??``).trim();if(!r)return``;let i=await On(t.E,`/format-mail-content`,{method:`POST`,body:JSON.stringify({contents:r,subject:String(n??``)})});if(i?.status===!1)throw Error(i?.error||`Unable to format mail content`);return String(i?.html??i?.contents??i?.data?.html??i?.data?.contents??``).trim()}async function bn({jobId:e,toMail:n,ccMail:r,bccMail:i,subject:a,contents:o,attachments:s=[]}){let c=localStorage.getItem(`tenantId`)||`93c782a4aa626175e5d11afa`,l=localStorage.getItem(`businessId`)||`83c782a4aa626175e5d11afa`,u=localStorage.getItem(`businessUnitId`)||`63b57588fd768a839dbc0f63`,d=new FormData;d.append(`json`,JSON.stringify({schemaVersion:1,tenantId:c,businessId:l,businessUnitId:u,jobId:e,toMail:n,ccMail:r,bccMail:i,contents:o,subject:a})),(s??[]).forEach(e=>{e instanceof File&&d.append(`attachments`,e,e.name)});let{"Content-Type":f,...p}=await Dn(),m=await fetch(`${t.S}/send-bulkmail`,{method:`POST`,headers:p,body:d});if(m.status===401&&xn(),!m.ok)throw Error(`API ${m.status}: ${m.statusText}`);let h=await m.text();return h?JSON.parse(h):{}}function xn(){localStorage.removeItem(an),localStorage.removeItem(on),cn.forEach(e=>localStorage.removeItem(e)),sessionStorage.removeItem(sn),window.dispatchEvent(new Event(`auth:logout`))}function Sn(e=``){let t=String(e??``).trim();return t===`myJobs`||t===`allJobs`||t===`fulfilled`?t:``}function Cn(e){let t=String(n.Sn(e)??``).trim().toLowerCase();return t===`job`||t===`jobs`}function wn(e,t=30){let n=hn(e),r=Number(n?.exp);return!Number.isFinite(r)||r<=0?!1:r*1e3<=Date.now()+t*1e3}async function Tn(){if(pn)return pn;let e=String(localStorage.getItem(`refresh_token`)??``).trim();if(!e)throw Object.assign(Error(`Session expired`),{status:401});return pn=fetch(`${t.x}/generate-refresh-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({refresh_token:e})}).then(async e=>{let t=await e.text(),n={};if(t)try{n=JSON.parse(t)}catch{n={error:t}}if(!e.ok)throw Object.assign(Error(n?.error??n?.message??`Token refresh failed: ${e.status}`),{status:e.status});let r=mn(n);if(!r)throw Object.assign(Error(`Token refresh response did not contain an access token`),{status:401});return localStorage.setItem(an,r),localStorage.setItem(`access_token`,r),r}).finally(()=>{pn=null}),pn}async function En(){let e=gn();if(e&&!wn(e))return e;if(localStorage.getItem(`refresh_token`))try{return await Tn()}catch{}if(e)return e;let t=Error(`Authentication required`);throw t.status=401,t}async function Dn(){return{"Content-Type":`application/json`,Authorization:`Bearer ${await En()}`}}async function On(e,t,n={}){let r=async()=>{let r=await Dn();return fetch(`${e}${t}`,{...n,headers:{...r,...n.headers}})},i=await r();if(i.status===401&&localStorage.getItem(`refresh_token`))try{await Tn(),i=await r()}catch{}i.status===401&&xn();let a=await i.text(),o={};if(a)try{o=JSON.parse(a)}catch{o={error:a}}if(!i.ok){let e=Error(o?.error??o?.message??`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return o}async function kn(e,t){let n=await On(e,t);return n.data??n}async function An(e){return kn(t.D,e)}async function jn(e){return kn(t.x,e)}async function Mn(e){return e===ln?un:e===dn?fn:An(`/filter-dropdown-fields?module=${encodeURIComponent(n.Sn(e))}`)}async function Nn(e,{configType:t,userId:r,roleId:i}={}){if(e===ln)return un;if(e===dn)return fn;let a=new URLSearchParams({module:n.Sn(e)});return t&&a.set(`configType`,t),r!=null&&a.set(`userId`,String(r)),i!=null&&a.set(`roleId`,String(i)),jn(`/admin/field-config?${a}`)}async function Pn({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),jn(`/test-flows?${s.toString()}`)}async function Fn({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),jn(`/lms-flows?${s.toString()}`)}async function In(e,r=10,i=0,a={}){let{scope:o=``,sort:s=``,sortDir:c=``,search:l=``,filters:u=[],queryParams:d={}}=a;if(e===ln){let e=await Pn({limit:r,offset:i}),t=Array.isArray(e?.items)?e.items:[],n=Number(e?.total)||0;return{items:t,total:n,limit:r,offset:i,tabs:[{key:`all`,title:`Test Cases`,count:n}]}}if(e===dn){let e=await Fn({limit:r,offset:i}),t=Array.isArray(e?.items)?e.items:[],n=Number(e?.total)||0;return{items:t,total:n,limit:r,offset:i,tabs:[{key:`all`,title:`LMS Cases`,count:n}]}}let f=new URLSearchParams({module:n.Sn(e),limit:String(r),offset:String(i)}),p=Cn(e)?Sn(o):String(o??``).trim();p&&f.set(`scope`,p),s&&f.set(`sort`,s),c&&f.set(`sortDir`,c),String(l??``).trim()&&f.set(`search`,String(l).trim());let m=Hn(u.filter(e=>e?.field));m.length&&f.set(`filters`,JSON.stringify(m)),Object.entries(d??{}).forEach(([e,t])=>{t!=null&&String(t).trim()!==``&&f.set(e,String(t))});let h=await On(t.x,`/module-data-list?${f.toString()}`),g=Ln(h),_=g.some(e=>Bn(e)),v=g.some(e=>Vn(e));if(_||v)try{let{transformDiceResponseToInternalFormat:e}=await Promise.resolve().then(()=>require("./diceCandidateMapper-BjMhHno3.cjs")).then(e=>e.t),t=e(h,h),n=t?.data?.data??[];return{items:n,total:zn(h,p)||zn(t,p)||n.length,limit:r,offset:i,tabs:t?.data?.tabs??h?.tabs??h?.data?.tabs??[],fields:t?.data?.fields??h?.fields??h?.data?.fields??[],tabField:t?.data?.tabField??h?.tabField??h?.data?.tabField??``,actionRules:t?.data?.actionRules??h?.data?.actionRules??[],actions:t?.data?.actions??h?.data?.actions??[],columnActions:t?.data?.columnActions??h?.data?.columnActions??[]}}catch(e){console.error(`[getModuleDataList] Dice transformation failed:`,e)}return h}function Ln(e){let t=e?.data??e,n=Array.isArray(t)?t:t?.rows??t?.records??t?.items??t?.list??t?.data??e?.items??e?.records??[];return Array.isArray(n)?n:[]}function Rn(...e){for(let t of e){let e=Number(t);if(Number.isFinite(e))return e}}function zn(e,t=``){let n=e?.data??e,r=Ln(e),i=e?.count,a=n?.count,o=String(t??``).trim().toLowerCase();if(i&&typeof i==`object`){let e=Rn(o?i[o]:void 0,i.total,i.searchCount,i.count);if(e!==void 0)return e}if(a&&typeof a==`object`){let e=Rn(o?a[o]:void 0,a.total,a.searchCount,a.count);if(e!==void 0)return e}return Rn(e?.total,typeof i==`object`?void 0:i,e?.totalCount,n?.total,typeof a==`object`?void 0:a,n?.totalCount,r.length)??0}function Bn(e){let t=e?.skills??e?.technicalSkills??e?.primarySkills;return!Array.isArray(t)||t.length===0?!1:t.some(e=>e&&typeof e==`object`&&(`skill`in e||`lastUsed`in e))}function Vn(e){return[e?.sourceType,e?.profileSource,e?.selectedSource,e?.customFields?.sourceType,e?.customFields?.profileSource].flat().some(e=>String(e??``).trim().toLowerCase()===`dice`)||!!e?.customFields?.diceProfileData}function Hn(e){let t=[];for(let n of e){if(!n.field)continue;let e=n.operator===`or`?`or`:`and`;if(n.operator===`isEmpty`){t.push({field:n.field,op:`isEmpty`,operator:`and`});continue}if(n.operator===`notEmpty`){t.push({field:n.field,op:`notEmpty`,operator:`and`});continue}if(n.filterInputType===`text`){let r=typeof n.value==`string`?n.value.trim():``;r&&t.push({field:n.field,op:`contains`,value:r,operator:e});continue}if(n.from||n.to){n.from&&t.push({field:n.field,op:`gte`,value:String(n.from),operator:e}),n.to&&t.push({field:n.field,op:`lte`,value:String(n.to),operator:`and`});continue}Array.isArray(n.values)&&n.values.length>0&&t.push({field:n.field,op:`in`,values:n.values.map(String),operator:e,...Array.isArray(n.groupFields)&&n.groupFields.length>1?{groupFields:n.groupFields}:{}})}return t}async function Un(e,t,r=``,i={}){let{limit:a=50,offset:o=0,dataSource:s,groupName:c,lookup:l,groupFields:u=[],groupSeparator:d=` `}=i,f=new URLSearchParams({module:n.Sn(e),field:t,value:r,limit:String(a),offset:String(o)});return s&&f.set(`dataSource`,s),Array.isArray(u)&&u.length>1&&(f.set(`groupFields`,u.join(`,`)),f.set(`groupSeparator`,d??` `)),s===`group`&&c&&f.set(`groupName`,c),s===`lookup`&&l?.collection&&(f.set(`lookupCollection`,l.collection),l.displayField&&f.set(`lookupField`,l.displayField)),An(`/filter-dropdown-values?${f}`)}function Wn(e){let t=e?.data??e,n=Array.isArray(t)?t:Array.isArray(t?.groups)?t.groups:Array.isArray(e?.groups)?e.groups:[],r=t?.recordMeta??e?.recordMeta;return r&&typeof r==`object`&&(n.recordMeta=r),n}async function Gn({module:e,id:n,view:r}={}){if(!e)throw Error(`module is required to fetch form groups`);let a=await Dn(),o=new URLSearchParams({module:e});n&&o.set(`id`,String(n)),r&&o.set(`view`,String(r));let s=`${t.x}/admin/form-groups?${o.toString()}`;return Wn(await i.t(s,async()=>{let e=await fetch(s,{method:`GET`,headers:a});if(!e.ok)throw Error(`API ${e.status}: ${e.statusText}`);return e.json()}))}async function Kn({searchQuery:e,candidateId:n}){let r=localStorage.getItem(`tenantId`)||`93c782a4aa626175e5d11afa`,i=localStorage.getItem(`businessId`)||`83c782a4aa626175e5d11afa`,a=localStorage.getItem(`businessUnitId`)||`63b57588fd768a839dbc0f63`,o=Number(localStorage.getItem(`userId`))||1;return On(t.T,`/joblist`,{method:`POST`,body:JSON.stringify({tenantId:r,businessId:i,businessUnitId:a,searchQuery:e,userId:o,candidateId:Array.isArray(n)?n:[n]})})}async function qn(e=``){let n=e?`?search=${encodeURIComponent(e)}`:``;return kn(t.T,`/users/any${n}`)}function Jn(e){if(!e||typeof e!=`string`)return null;try{let t=e.split(`.`)[1];if(!t)return null;let n=t.replace(/-/g,`+`).replace(/_/g,`/`),r=n.padEnd(Math.ceil(n.length/4)*4,`=`);return JSON.parse(atob(r))}catch{return null}}function Yn(){return Jn(localStorage.getItem(`access_token`)||localStorage.getItem(`authToken`))??{}}function Xn(){let e=Yn();return{userId:e.userId??e.user_id??e.USER_ID,roleId:e.roleId??e.role_id??e.ROLE_ID}}function Zn(){let e=Xn();return{userId:e.userId??localStorage.getItem(`userId`)??void 0,roleId:e.roleId??localStorage.getItem(`roleId`)??void 0}}function Qn(e){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return i(!0),s(null),Mn(e).then(e=>{t||n(Array.isArray(e)?e:[])}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{fields:t,loading:r,error:a}}function $n(e){let[t,n]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return i(!0),s(null),Nn(e).then(e=>{t||n(Array.isArray(e)?e:null)}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{config:t,loading:r,error:a}}function er(e){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;i(!0),s(null);let{userId:r,roleId:a}=Zn(),o=e=>{let t=e?.isVisible??e?.is_visible??e?.visible;return t==null?!0:typeof t==`boolean`?t:typeof t==`string`?![`false`,`0`,`no`,`hide`,`hidden`].includes(t.toLowerCase()):!!t};return Nn(e,{configType:`filter`,userId:r,roleId:a}).then(async t=>{let n=(Array.isArray(t)?t:t?.visibleFields??[]).filter(o);if(n.length>0)return n;let r=await Mn(e);return Array.isArray(r)?r.filter(o):[]}).then(e=>{t||n(Array.isArray(e)?e:[])}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{fields:t,loading:r,error:a}}var tr={campaign:`campaingns`,campaigns:`campaingns`};function nr(e,t){return e===t||`${e}s`===t||`${t}s`===e}function rr(e){try{let t=localStorage.getItem(`menu`);if(!t)return null;let n=JSON.parse(t);if(!Array.isArray(n))return null;let r=n.find(t=>{let n=String(t?.key??``).trim().toLowerCase();return n&&nr(e,n)});return r?String(r.key).trim().toLowerCase():null}catch{return null}}function ir(e){try{let t=localStorage.getItem(`menuPermission`);if(!t||!e)return{};let n=JSON.parse(t);if(!n||typeof n!=`object`)return{};let r=String(e).trim().toLowerCase(),i=tr[r]??rr(r)??r,a=Object.keys(n),o=e=>e.trim().toLowerCase(),s=a.find(e=>o(e)===i)??a.find(e=>nr(i,o(e)))??a.find(e=>nr(r,o(e)));return(s?n[s]:null)??{}}catch{return{}}}function ar(e){return e&&typeof e==`object`&&Object.prototype.hasOwnProperty.call(e,`value`)?e.value:e}function or(e){let t=ar(e);return t==null||Number(t)!==0&&t!==!1&&t!==`0`}function sr(e){let t=ar(e);return t==null?!1:t===!0||t===1||t===`1`}function cr(e,t){if(!e||typeof e!=`object`)return;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let n=String(t).trim().toLowerCase(),r=Object.keys(e).find(e=>String(e).trim().toLowerCase()===n);return r?e[r]:void 0}function lr(e){return(0,o.useMemo)(()=>{let t=ir(e);return{canView:or(cr(t,`view`)),canAdd:or(cr(t,`add`)),canEdit:or(cr(t,`edit`)),canDelete:or(cr(t,`delete`)),canApprove:or(cr(t,`approve`)),canReject:or(cr(t,`reject`)),canReApprove:sr(cr(t,`reApprove`)),canSendApprove:sr(cr(t,`sendApprove`))}},[e])}function ur(e){return[e?.key,e?.label,e?.name].filter(Boolean).join(` `).trim().toLowerCase()}function dr(e){let t=String(e?.permissionKey??``).trim().toLowerCase();if([`add`,`edit`,`delete`].includes(t))return t;if(e?.danger)return`delete`;let n=ur(e);return/(^|[\s_-])edit([\s_-]|$)/.test(n)?`edit`:/(^|[\s_-])(add|create)([\s_-]|$)/.test(n)?`add`:null}function fr(e,t){if(e!=null)return t.length===0?e:Array.isArray(e)?e.map(e=>fr(e,t)).filter(e=>e!=null).flat():fr(e[t[0]],t.slice(1))}function pr(e,t){if(!t||typeof t!=`string`||!e)return;if(t in e)return e[t];let n=fr(e,t.split(`.`));if(n!==void 0&&!(Array.isArray(n)&&n.length===0))return n;let r=t.split(`.`).pop();return r===t?void 0:e[r]}function mr(){try{return typeof localStorage<`u`?localStorage.getItem(`userId`)??``:``}catch{return``}}var hr={"{currentuserid}":mr,"{currentuser}":mr,"{me}":mr};function gr(e){let t=hr[String(e??``).trim().toLowerCase()];return t?t():e}function _r(e){return String(e??``).trim().toLowerCase()}function vr(e){return _r(e).replace(/[^a-z0-9]/g,``)}function yr(e,t){return e===t||vr(e)===vr(t)}function br(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function xr(e,t,n){let r=e?.operator,i=r===`scope`?n:pr(t,e?.field),a=gr(e?.value),o=_r(i),s=_r(a);if(r===`eq`||r===`scope`)return yr(o,s);if(r===`ne`)return!yr(o,s);if(r===`isEmpty`)return br(i);if(r===`notEmpty`)return!br(i);if(r===`fieldEq`)return yr(o,_r(pr(t,e?.compareField)));if(r===`includes`||r===`notIncludes`){let e=(Array.isArray(i)?i:[i]).some(e=>yr(_r(e),s))&&s!==``;return r===`includes`?e:!e}return r===`contains`?Array.isArray(i)?i.some(e=>_r(e).includes(s)):o.includes(s):!1}function Sr(e,t,n){if(!e||e.isActive===!1)return!1;let r=e.conditions??[];return r.length?r.every(e=>xr(e,t,n)):!1}function Cr(e){let t=e?.allowedActions;return!Array.isArray(t)||t.length===0?null:t.map(String)}function wr(e,t,n,r){let i=Array.isArray(n)?n:[];if(!i.length)return!1;let a=String(e);return i.some(e=>{if(!Sr(e,t,r))return!1;let n=Cr(e);return n&&!n.some(e=>yr(e,a))?!0:(e?.blockedActions??[]).map(String).includes(a)})}function Tr(e,t,n,r){let i=(Array.isArray(n)?n:[]).find(n=>(n?.disabledActions??[]).map(String).includes(String(e))&&Sr(n,t,r));return i?i.description||`${e} is temporarily unavailable`:null}function Er(e,t,n){let r=e?.doneWhen;return!r||!r.field||!xr(r,t,n)?null:{label:e.doneLabel||e.label,tone:e.doneTone||`success`}}function Dr(e,t,n,r){let i=Array.isArray(t)?t:[];return i.length?i.some(t=>wr(e,t,n,r)):!1}var Or=e.t({actionRules:()=>Pr,actions:()=>Fr,columnActions:()=>Ir,default:()=>Lr,fields:()=>Mr,rows:()=>kr,synthesizeFieldsFromRows:()=>!0,tabField:()=>Nr,tabs:()=>jr,total:()=>Ar,visibilityFlag:()=>null}),kr={sources:[`payload`],paths:[`rows`,`records`,`items`,`list`,`data`]},Ar={sources:[`response`,`payload`],paths:[`total`,`count`,`totalCount`]},jr={sources:[`response`,`payload`],paths:[`tabs`,`tabList`]},Mr={sources:[`response`,`payload`],paths:[`fields`,`fieldConfig`]},Nr={sources:[`payload`],paths:[`tabField`]},Pr={sources:[`payload`],paths:[`actionRules`]},Fr={sources:[`payload`],paths:[`actions`]},Ir={sources:[`payload`],paths:[`columnActions`]},Lr={rows:kr,total:Ar,tabs:jr,fields:Mr,tabField:Nr,actionRules:Pr,actions:Fr,columnActions:Ir,synthesizeFieldsFromRows:!0,visibilityFlag:null},Rr=Object.assign({"../../config/responseMappings/default.json":Or});function zr(e){if(!e)return null;for(let t of Object.keys(Rr))if(t.split(`/`).pop().replace(/\.json$/,``)===e){let e=Rr[t];return e.default??e}return null}function Br(e){let t=zr(e);return t?{...Lr,...t}:Lr}function Vr(e,t){return String(t).split(`.`).reduce((e,t)=>e?.[t],e)}function Hr(e,t,n){if(!n)return;let r={response:e,payload:t};for(let e of n.sources)for(let t of n.paths){let n=Vr(r[e],t);if(n!==void 0)return n}}function Ur(...e){for(let t of e){let e=Number(t);if(Number.isFinite(e))return e}}function Wr(e){return e.replace(/([A-Z])/g,` $1`).replace(/^./,e=>e.toUpperCase())}var Gr=/token|password|passwd|secret|apikey|api_key|auth|credential|salary|ssn|ein\b/i;function Kr(e){return Gr.test(e)}function qr(e){let t=e[0];return t?Object.keys(t).filter(e=>!e.startsWith(`_`)&&!Kr(e)&&typeof t[e]!=`object`).map(e=>({value:e,field:e,label:Wr(e),isVisible:!0})):[]}function Jr(e,t){return t?e.filter(e=>e[t]===1||e[t]===!0||e[t]===void 0).map(e=>({...e,isVisible:!0})):e}var Yr=5e3,Xr=300,Zr=100,Qr=100,$r=300,ei=100;function ti(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ni(e,t){return Array.isArray(e)?e.slice(0,t):[]}function ri(e,t){return ni(e,t).filter(ti)}function ii(e,t){return ri(e,t).filter(e=>typeof e.value==`string`||typeof e.field==`string`)}var ai=/^\s*(javascript|data|vbscript|file):/i,oi=[`url`,`href`,`routeUrl`,`routeURL`];function si(e){let t={...e};for(let e of oi)typeof t[e]==`string`&&ai.test(t[e])&&delete t[e];return t}function ci(e,t){return ri(e,t).map(si)}function li(e,t){return e.flatMap(e=>{let n=Vr(e,t);return n==null?[]:(Array.isArray(n)?n:[n]).filter(e=>e!=null).map(e=>ti(e)?e:{value:e})})}function ui(e,t){if(!Array.isArray(t)||Array.isArray(e)||!ti(e))return;let n=[`actions`,`actionRules`,`columnActions`,`tabField`].filter(t=>e[t]!==void 0);n.length!==0&&console.warn(`[mapListResponse] response.data is an array, so ${n.join(`, `)} cannot be resolved from it. Send rows under "items" instead of "data", or pass the full envelope rather than the unwrapped payload.`)}function di(e,t){let{baseModule:r,nestedPath:i}=n.Cn(t),a=Br(r),o=e?.data??e;ui(e,o);let s=ni(Array.isArray(o)?o:Hr(e,o,a.rows),Yr);i&&(s=ni(li(s,i),Yr),console.log(`[mapListResponse] module "${r}" → nested path "${i}": ${s.length} row(s)`));let c=Hr(e,o,a.total),l=ti(c)?Ur(c.total,c.searchCount,c.count):c,u=Number(l??s.length)||0,d=ri(Hr(e,o,a.tabs),Zr),f=i?[]:Hr(e,o,a.fields),p=Array.isArray(f)?f:[];p.length===0&&(i||a.synthesizeFieldsFromRows)&&(p=qr(s)),p=ii(p,Xr),a.visibilityFlag&&(p=Jr(p,a.visibilityFlag));let m=Hr(e,o,a.tabField);return{rows:s,total:u,tabs:d,fields:p,tabField:typeof m==`string`?m:``,actionRules:ci(Hr(e,o,a.actionRules),$r),actions:ci(Hr(e,o,a.actions),Qr),columnActions:ci(Hr(e,o,a.columnActions),ei)}}var fi={jobs:{module:`jobs`,keys:[`jobRecruitmentStatus`,`jobStatus`],dateField:`createdAt`},candidates:{module:`candidates`,keys:[`candidateSummary`],items:[{key:`created`,label:`Created`,collection:`candidates`,countType:`documents`,dateField:`createdAt`},{key:`submitted`,label:`Submitted`,collection:`submissions`,countType:`distinct`,distinctField:`applicantId`,dateField:`submittedAt`},{key:`onboarded`,label:`Onboarded`,collection:`onboarding`,countType:`distinct`,distinctField:`candidateId`,dateField:`onboardingActivity.activityTime`,filters:{onboardingObStage:[`Completed`]}}]},submissions:{module:`submission`,keys:[`internalSubmissionStatus.internalSubmissionStatusText`,`clientSubmissionStatus.clientSubmissionStatusText`],dateField:`createdAt`}},pi={jobSummary:[{label:`Open`,field:`jobStatus`,keys:[`open`,`active`]},{label:`Partially Fulfilled`,field:`jobRecruitmentStatus`,keys:[`partially fulfilled`,`partiallyFulfilled`]},{label:`Fulfilled`,field:`jobRecruitmentStatus`,keys:[`fulfilled`]},{label:`In-active / Closed`,field:`jobStatus`,keys:[`closed`,`inactive`,`in-active`]}]};function mi(e){return String(e??``).trim().toLowerCase()}function hi(e,t){return{label:e,count:Number.isFinite(Number(t))?Number(t):0}}function gi(e){return Array.isArray(e?.counts)?e.counts:[]}function _i(e,t){return e?.key===t?e:(Array.isArray(e?.fields)?e.fields:[]).find(e=>e?.key===t)??{}}function vi(e,t){let n=Array.isArray(t)?t:[t],r=Array.isArray(e?.counts)?e.counts:[],i=n.filter(Boolean).map(mi),a=r.find(e=>[e?.key,e?.label].map(mi).some(e=>i.includes(e)));if(a)return Number(a.count)||0;for(let t of n){let n=e?.[t];if(Number.isFinite(Number(n)))return Number(n)}return 0}function yi(e,t){let n=(Array.isArray(t)?t:[t].filter(Boolean)).map(mi);return gi(e).reduce((e,t)=>{let r=mi(t?.key??t?.label);return n.includes(r)?e+(Number(t?.count)||0):e},0)}function bi(e){let t=mi(e);return t.includes(`candidate`)?fi.candidates:t.includes(`submission`)?fi.submissions:t.includes(`job`)?fi.jobs:null}function xi(e){return pi[e]??null}function Si(e){return Array.isArray(e?.counts)||e?.openCount!==void 0||e?.myAssignedCount!==void 0?[hi(`Open`,vi(e,[`openCount`,`open`])),hi(`Partially Fulfilled`,vi(e,[`partiallyFulfilledCount`,`partially fulfilled`])),hi(`Fulfilled`,vi(e,[`fulfilledCount`,`fulfilled`])),hi(`In-active / Closed`,vi(e,[`closedCount`,`closed`,`inactive`,`in active`]))]:(xi(`jobSummary`)??[]).map(t=>{let n=_i(e,t.field);return hi(t.label,yi(n,t.keys??[]))})}function Ci(e){return gi(e).map(({label:e,key:t,count:n})=>hi(e||t,n))}function wi(e){let t=Array.isArray(e?.fields)?e.fields:[],n=t.find(e=>e.key===`clientSubmissionStatus.clientSubmissionStatusText`)??{},r=t.find(e=>e.key===`internalSubmissionStatus.internalSubmissionStatusText`)??{},i=e=>Array.isArray(e.counts)?e.counts.map(({label:e,count:t})=>hi(e,t)):[],a=Number(n.total)||0,o=Number(r.total)||0;return{total:a+o,clientCount:a,internalCount:o,clientBreakdown:i(n),internalBreakdown:i(r)}}var{RangePicker:Ti}=s.DatePicker,Ei=[{value:`today`,label:`Today`},{value:`yesterday`,label:`Yesterday`},{value:`last-7-days`,label:`Last 7 Days`},{value:`last-30-days`,label:`Last 30 Days`},{value:`this-month`,label:`This Month`},{value:`last-month`,label:`Last Month`},{value:`custom-range`,label:`Custom Range`}];function Di(e){return e.closest(`.view-summary-card`)??document.body}function Oi(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ki(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function Ai(e){let t=new Date,n=new Date(t.getFullYear(),t.getMonth(),1),r=new Date(t.getFullYear(),t.getMonth()-1,1),i=new Date(t.getFullYear(),t.getMonth(),0);if(e===`today`)return{startDate:t,endDate:t};if(e===`yesterday`){let e=ki(t,-1);return{startDate:e,endDate:e}}return e===`last-30-days`?{startDate:ki(t,-29),endDate:t}:e===`this-month`?{startDate:n,endDate:t}:e===`last-month`?{startDate:r,endDate:i}:{startDate:ki(t,-6),endDate:t}}function ji(e,t){if(e===`custom-range`){let[e,n]=t??[];return!e||!n?null:{startDate:e.format(`YYYY-MM-DD`),endDate:n.format(`YYYY-MM-DD`)}}let n=Ai(e);return{startDate:Oi(n.startDate),endDate:Oi(n.endDate)}}function Mi(e){return String(e??``).trim().toLowerCase()}function Ni(e){return String(e??``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim().replace(/\b\w/g,e=>e.toUpperCase())}function Pi(e){let t=Mi(e);return t.includes(`candidate`)?`Candidate`:t.includes(`submission`)?`Submission`:t.includes(`job`)?`Job`:Ni(e||`List`)}function Fi(e){return e?.data??e}function Ii(e,t){let n={module:e.module,dateRange:{startDate:t.startDate,endDate:t.endDate}};return e.summary&&(n.summary=e.summary),Array.isArray(e.items)&&e.items.length>0&&(n.items=e.items),Array.isArray(e.keys)&&e.keys.length>0&&(n.keys=e.keys),e.dateField&&(n.dateRange.key=e.dateField),n}function Li({moduleName:e,open:t,onClose:r}){let i=Pi(e),a=Mi(e),u=a.includes(`submission`),d=a.includes(`job`),f=a.includes(`candidate`),p=bi(e),h=u?`last-30-days`:`last-7-days`,[g,_]=(0,o.useState)(h),[v,y]=(0,o.useState)(null),[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(null),[E,D]=(0,o.useState)(``),O=Si(b),k=Ci(S),A=wi(w),j=Math.max(A.total,1),M=Math.round(A.internalCount/j*100),N=Math.max(0,100-M),P=g===`custom-range`;return(0,o.useEffect)(()=>{t&&(_(h),y(null))},[h,t]),(0,o.useEffect)(()=>{if(!t||!p)return;let e=ji(g,v);if(!e)return;let n=!1;return D(``),m(Ii(p,e)).then(e=>{if(n)return;let t=Fi(e);if(d){x(t),C(null),T(null);return}if(f){C(t),x(null),T(null);return}T(t),x(null),C(null)}).catch(e=>{n||(x(null),C(null),T(null),D(e.message||`Could not load summary`))}),()=>{n=!0}},[v,f,d,u,t,g,p]),t?(0,l.jsxs)(`div`,{className:`view-summary-layer`,role:`presentation`,children:[(0,l.jsx)(`div`,{className:`view-summary-scrim`}),(0,l.jsxs)(s.Card,{"aria-label":`${i} summary`,variant:`borderless`,className:`view-summary-card view-summary-card--${u?`submission`:`simple`}`,children:[(0,l.jsx)(s.Button,{"aria-label":`Close summary`,className:`view-summary-close`,icon:(0,l.jsx)(c.CloseOutlined,{}),type:`text`,onClick:r}),(0,l.jsxs)(`header`,{className:`view-summary-header`,children:[(0,l.jsxs)(n.En,{className:`view-summary-title`,color:`primary`,size:`md`,tag:`h2`,variant:`h2`,weight:`medium`,children:[i,` Summary`]}),(0,l.jsx)(s.Select,{"aria-label":`Summary date range`,className:`view-summary-range`,popupClassName:`view-summary-range-dropdown`,getPopupContainer:Di,popupMatchSelectWidth:!1,value:g,options:Ei,onChange:e=>{_(e),e!==`custom-range`&&y(null)}})]}),u?(0,l.jsxs)(l.Fragment,{children:[P&&(0,l.jsx)(Ti,{allowClear:!0,className:`view-summary-custom-range view-summary-custom-range--full`,format:`MMM DD, YYYY`,getPopupContainer:Di,placeholder:[`Start date`,`End date`],value:v,onChange:y}),(0,l.jsxs)(`section`,{className:`view-summary-submission-top`,"aria-label":`Submission totals`,children:[(0,l.jsxs)(`div`,{className:`view-summary-donut`,style:{"--summary-internal":`${M}%`,"--summary-client":`${N}%`},children:[(0,l.jsx)(n.En,{color:`success`,size:`2xl`,tag:`span`,variant:`metric`,weight:`semibold`,children:A.total}),(0,l.jsx)(n.En,{color:`success`,size:`xs`,tag:`span`,variant:`caption`,weight:`semibold`,children:`Total`})]}),(0,l.jsxs)(`div`,{className:`view-summary-legend`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--internal`}),`Internal`,(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:A.internalCount})]}),(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--client`}),`Client`,(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:A.clientCount})]})]})]}),(0,l.jsx)(`div`,{className:`view-summary-divider`}),(0,l.jsxs)(`section`,{className:`view-summary-breakdown`,children:[(0,l.jsx)(n.En,{className:`view-summary-subtitle`,color:`primary`,size:`md`,tag:`h3`,variant:`h4`,weight:`medium`,children:`Internal Breakdown`}),A.internalBreakdown.length>0?A.internalBreakdown.map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row view-summary-row--bullet`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--internal`}),e.label]}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:e.count})]},`internal-${e.label}`)):(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`p`,variant:`body`,weight:`regular`,children:`No internal data found`}),(0,l.jsx)(n.En,{className:`view-summary-subtitle`,color:`primary`,size:`md`,tag:`h3`,variant:`h4`,weight:`medium`,children:`Client Breakdown`}),A.clientBreakdown.length>0?A.clientBreakdown.map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row view-summary-row--bullet`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--client`}),e.label]}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:e.count})]},`client-${e.label}`)):(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`p`,variant:`body`,weight:`regular`,children:`No client data found`}),E&&(0,l.jsx)(n.En,{color:`danger`,size:`xs`,tag:`p`,variant:`caption`,children:E})]})]}):(0,l.jsxs)(`section`,{className:`view-summary-breakdown`,children:[(0,l.jsxs)(`div`,{className:`view-summary-section-head`,children:[(0,l.jsxs)(n.En,{className:`view-summary-section-title`,color:`primary`,size:`md`,tag:`h3`,variant:`h3`,weight:`medium`,children:[`All `,i]}),P&&(0,l.jsx)(Ti,{allowClear:!0,className:`view-summary-custom-range`,format:`MMM DD, YYYY`,getPopupContainer:Di,placeholder:[`Start date`,`End date`],value:v,onChange:y})]}),(0,l.jsx)(`div`,{className:`view-summary-divider`}),a.includes(`job`)&&(0,l.jsx)(n.En,{className:`view-summary-breakdown-title`,color:`primary`,size:`sm`,tag:`h4`,variant:`h4`,weight:`regular`,children:`Breakdown`}),(f?k:O).map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row`,children:[(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,children:e.label}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,children:e.count})]},e.label)),E&&(0,l.jsx)(n.En,{color:`danger`,size:`xs`,tag:`p`,variant:`caption`,children:E})]})]})]}):null}function Ri(e){let[t,n]=(0,o.useState)({}),[r,i]=(0,o.useState)(new Set),a=(0,o.useRef)({}),s=(e,t)=>{i(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})};return{valuesByField:t,loadingFields:r,fetchValues:(0,o.useCallback)((t,r=``,i={})=>{if(!t||!e)return;a.current[t]&&clearTimeout(a.current[t]);let o=r?300:0;a.current[t]=setTimeout(async()=>{s(t,!0);try{let a=await Un(e,t,r,i),o=Array.isArray(a)?a.map(e=>({label:String(e.label),value:e.value})):[];n(e=>({...e,[t]:o}))}catch{}finally{s(t,!1)}},o)},[e])}}var zi=[{label:`Last 7 days`,getDates:()=>[(0,u.default)().subtract(6,`day`),(0,u.default)()]},{label:`This month`,getDates:()=>[(0,u.default)().startOf(`month`),(0,u.default)()]},{label:`Overdue`,getDates:()=>[null,(0,u.default)().subtract(1,`day`)]}];function Bi({value:e,onChange:t,disabled:n}){return(0,l.jsxs)(s.Flex,{vertical:!0,gap:4,children:[(0,l.jsx)(s.DatePicker.RangePicker,{value:e,onChange:t,disabled:n,style:{width:`100%`},allowEmpty:[!0,!0],disabledDate:e=>e&&e.isAfter((0,u.default)(),`day`)}),!n&&(0,l.jsx)(s.Space,{size:4,wrap:!0,children:zi.map(({label:e,getDates:n})=>(0,l.jsx)(s.Tag,{className:`filter-date-shortcut`,onClick:()=>t?.(n()),children:e},e))})]})}var Vi=[{label:`AND`,value:`and`},{label:`OR`,value:`or`},{label:`Is Empty`,value:`isEmpty`},{label:`Not Empty`,value:`notEmpty`}],Hi=[{label:`Yes`,value:`true`},{label:`No`,value:`false`}];function Ui({value:e,onChange:t,disabled:n}){let[r,i]=Array.isArray(e)?e:[void 0,void 0];return(0,l.jsxs)(s.Flex,{gap:8,children:[(0,l.jsx)(s.InputNumber,{disabled:n,placeholder:`Min`,value:r,onChange:e=>t?.([e,i]),style:{flex:1}}),(0,l.jsx)(s.InputNumber,{disabled:n,placeholder:`Max`,value:i,onChange:e=>t?.([r,e]),style:{flex:1}})]})}var Wi={operator:`and`,field:void 0,values:[]};function Gi({filterInputType:e,fieldType:t,disabled:n,loading:r,valueOptions:i,onSearch:a,onOpen:o}){let c=e||(t===`boolean`?`boolean`:null)||(t===`date`?`datepicker`:null)||(t===`number`?`number-range`:null)||`dropdown`;return c===`boolean`?(0,l.jsx)(s.Select,{allowClear:!0,disabled:n,mode:`multiple`,options:Hi,placeholder:`Select value`}):c===`text`?(0,l.jsx)(s.Input,{disabled:n,placeholder:`Type keyword...`,allowClear:!0}):c===`datepicker`?(0,l.jsx)(Bi,{disabled:n}):c===`number-range`?(0,l.jsx)(Ui,{disabled:n}):c===`checkbox`?(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Checkbox.Group,{disabled:n,options:i,style:{display:`flex`,flexWrap:`wrap`,gap:`4px 16px`}})}):c===`radio`?(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Radio.Group,{disabled:n,options:i,style:{display:`flex`,flexWrap:`wrap`,gap:`4px 16px`}})}):(0,l.jsx)(s.Select,{allowClear:!0,disabled:n,loading:r,mode:`multiple`,options:i,placeholder:n?`Select field first`:`Select values`,showSearch:!0,filterOption:!1,onSearch:a,onDropdownVisibleChange:o})}function Ki(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function qi(e){return e.value??e.field??e.fieldName??e.name??e.label}function Ji(e,t){let n=t.find(t=>t.value===e.field),r=e.filterInputType??n?.filterInputType,i=r===`datepicker`||!r&&n?.type===`date`,a=r===`text`,o=e.values??[];return a?o=e.value??``:i&&(o=[e.from?(0,u.default)(e.from):null,e.to?(0,u.default)(e.to):null]),{field:e.field,operator:e.operator??`and`,values:o,locked:n?.isDefaultFilter??!1}}function Yi({moduleName:e,open:t=!1,filters:r=[],onClose:i,onApply:a,onReset:u}){let[d]=s.Form.useForm(),f=s.Form.useWatch(`filters`,d)??[],{fields:p,loading:m,error:h}=er(t?e:null),g=(0,o.useMemo)(()=>(p??[]).map(e=>({label:Ki(e),value:qi(e),type:e.type,filterInputType:e.filterInputType,dataSource:e.dataSource,groupName:e.groupName,filterGroupFields:Array.isArray(e.filterGroupFields)?e.filterGroupFields:[],filterGroupSeparator:e.filterGroupSeparator??` `,lookup:e.lookup??null,isDefaultFilter:e.isDefaultFilter===1||e.isDefaultFilter===`1`||e.isDefaultFilter===!0})).filter(e=>e.label&&e.value),[p]),_=(0,o.useMemo)(()=>g.filter(e=>e.isDefaultFilter),[g]),v=(0,o.useMemo)(()=>_.map(e=>String(e.value)).sort().join(`|`),[_]),y=g,{valuesByField:b,loadingFields:x,fetchValues:S}=Ri(e);function C(e){let t=g.find(t=>t.value===e),n=t?.filterInputType;if(!(!e||n===`datepicker`||n===`number-range`||n===`text`||!n&&[`boolean`,`date`,`number`].includes(t?.type))){let n=!!t?.lookup?.collection;S(e,``,{dataSource:n?`lookup`:t?.dataSource,groupName:t?.groupName,lookup:t?.lookup,groupFields:t?.filterGroupFields,groupSeparator:t?.filterGroupSeparator})}}function w(){return _.length>0?_.map(e=>({operator:`and`,field:e.value,values:[],locked:e.isDefaultFilter})):[Wi]}function T(e=[]){let t=e.filter(e=>e?.field),n=new Set(t.map(e=>String(e.field))),r=[..._.filter(e=>!n.has(String(e.value))).map(e=>({operator:`and`,field:e.value,values:[],locked:!0})),...t].map(e=>({...e,locked:_.some(t=>String(t.value)===String(e.field))}));return r.length>0?r:[Wi]}let E=(0,o.useRef)(!1),D=(0,o.useRef)(r);(0,o.useEffect)(()=>{if(r===D.current)return;if(D.current=r,E.current){E.current=!1;return}let e=T((r??[]).filter(e=>e.field).map(e=>Ji(e,g)));d.setFieldsValue({filters:e}),e.forEach(e=>C(e.field))},[r,g]);let O=(0,o.useRef)(!1),k=(0,o.useRef)(``),A=(0,o.useRef)(e),j=(0,o.useRef)(!1);(0,o.useEffect)(()=>{e!==A.current&&(A.current=e,O.current=!1,k.current=``,j.current=!1)},[e]),(0,o.useEffect)(()=>{if(!t)return;let e=k.current!==v;if(O.current&&!e)return;let n=j.current&&!m,r=!m&&g.length>0;if(j.current=m,!n&&!r)return;let i=O.current;O.current=!0,k.current=v;let a=d.getFieldValue(`filters`)??[],o=T(i||a.length>0?a:w());d.setFieldsValue({filters:o}),o.forEach(e=>C(e.field))},[t,m,g,v]);function M(){E.current=!0;let t=w();d.setFieldsValue({filters:t}),t.forEach(e=>C(e.field)),a?.({moduleName:e,filters:[]}),u?.(),i?.()}function N(){E.current=!0;let t=(d.getFieldsValue().filters??[]).filter(e=>!P(e)).map(e=>{let t={...e};delete t.locked;let n=g.find(e=>e.value===t.field),r=n?.label??t.field,i=n?.filterInputType,a=i===`datepicker`||n?.type===`date`,o=i===`number-range`||!i&&n?.type===`number`,s=i===`text`;if(a){let[e,n]=Array.isArray(t.values)?t.values:[],a=e=>e?typeof e.format==`function`?e.format(`YYYY-MM-DD`):typeof e.toISOString==`function`||e instanceof Date?e.toISOString().substring(0,10):null:null,o=a(e),s=a(n);return{...t,values:[o,s].filter(Boolean),from:o??void 0,to:s??void 0,fieldLabel:r,filterInputType:i}}if(o){let[e,n]=Array.isArray(t.values)?t.values:[];return{...t,values:[e,n].filter(e=>e!=null),from:e==null?void 0:String(e),to:n==null?void 0:String(n),fieldLabel:r,filterInputType:i}}if(s){let e=typeof t.values==`string`?t.values.trim():``;return{...t,value:e,values:[],fieldLabel:r,filterInputType:i}}return{...t,values:t.values??[],fieldLabel:r,filterInputType:i,groupFields:n?.filterGroupFields??[]}});a?.({moduleName:e,filters:t}),i?.()}function P(e){if(!e?.field)return!0;if(e.operator===`isEmpty`||e.operator===`notEmpty`)return!1;let{values:t}=e;return typeof t==`string`?t.trim()===``:!Array.isArray(t)||t.length===0||t.every(e=>e==null||e===``)}let F=f.length===0||f.every(P);function I(e,t){let n=d.getFieldValue(`filters`)??[];d.setFieldValue(`filters`,n.map((t,n)=>n===e?{...t,values:[]}:t));let r=g.find(e=>e.value===t),i=r?.filterInputType;if(!(!t||i===`datepicker`||i===`number-range`||i===`text`||!i&&[`boolean`,`date`,`number`].includes(r?.type))){let e=!!r?.lookup?.collection;S(t,``,{dataSource:e?`lookup`:r?.dataSource,groupName:r?.groupName,lookup:r?.lookup,groupFields:r?.filterGroupFields,groupSeparator:r?.filterGroupSeparator})}}return(0,l.jsxs)(s.Drawer,{title:(0,l.jsx)(n.En,{variant:`card-title`,color:`primary`,children:`Filters`}),placement:`right`,width:720,open:t,onClose:i,rootClassName:`dynamic-field-filter`,maskClosable:!1,footer:(0,l.jsxs)(s.Space,{className:`dynamic-field-filter__footer`,children:[(0,l.jsx)(n.ut,{onClick:M,children:`Reset`}),(0,l.jsx)(n.ut,{variant:`primary`,onClick:N,disabled:F,children:`Apply`})]}),children:[h&&(0,l.jsx)(s.Alert,{type:`error`,message:`Could not load filter fields`,description:h,style:{marginBottom:16},showIcon:!0}),(0,l.jsx)(s.Spin,{spinning:m,description:`Loading fields…`,children:(0,l.jsx)(s.Form,{form:d,layout:`vertical`,className:`dynamic-field-filter__form`,initialValues:{filters:[Wi]},children:(0,l.jsx)(s.Form.List,{name:`filters`,children:(e,{add:t,remove:r})=>(0,l.jsxs)(s.Space,{direction:`vertical`,className:`dynamic-field-filter__rows`,children:[e.map((t,i)=>{let a=f[i]?.field,o=f[i]?.operator,u=g.find(e=>e.value===a),d=u?.isDefaultFilter===!0,p=!a||o===`isEmpty`||o===`notEmpty`,h=u?.type??`text`,_=u?.filterInputType,v=b[a]??[],C=x.has(a),w=new Set(f.filter((e,t)=>t!==i).map(e=>e?.field).filter(Boolean).map(String)),T=d?g.filter(e=>e.value===a):y.filter(e=>!w.has(String(e.value)));return(0,l.jsxs)(s.Space,{direction:`vertical`,className:`dynamic-field-filter__row`,children:[e.length>1&&!d&&(0,l.jsx)(n.ut,{variant:`danger`,htmlType:`button`,icon:(0,l.jsx)(c.DeleteOutlined,{}),"aria-label":`Remove filter row`,className:`dynamic-field-filter__remove`,onClick:()=>r(t.name)}),i>0&&(0,l.jsx)(s.Flex,{justify:`center`,children:(0,l.jsx)(s.Form.Item,{name:[t.name,`operator`],rules:[{required:!0,message:`Select condition`}],className:`dynamic-field-filter__operator`,children:(0,l.jsx)(s.Select,{options:Vi,placeholder:`Condition`})})}),(0,l.jsxs)(s.Flex,{align:`end`,gap:`middle`,wrap:!0,children:[(0,l.jsx)(s.Form.Item,{label:(0,l.jsx)(n.En,{variant:`label`,color:`secondary`,children:`Field`}),style:{flex:1,minWidth:220},children:d?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.En,{variant:`body`,className:`dynamic-field-filter__locked-field`,children:u?.label??a}),(0,l.jsx)(s.Form.Item,{name:[t.name,`field`],noStyle:!0,children:(0,l.jsx)(s.Input,{type:`hidden`})})]}):(0,l.jsx)(s.Form.Item,{name:[t.name,`field`],rules:[{required:!0,message:`Select field`}],noStyle:!0,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,placeholder:`Select field`,options:T,optionFilterProp:`label`,loading:m,onChange:e=>I(t.name,e)})})}),(0,l.jsx)(s.Form.Item,{label:(0,l.jsx)(n.En,{variant:`label`,color:`secondary`,children:`Values`}),name:[t.name,`values`],style:{flex:1,minWidth:220},children:Gi({filterInputType:_,fieldType:h,disabled:p,loading:C,valueOptions:v,onSearch:e=>{if(a){let t=!!u?.lookup?.collection;S(a,e,{dataSource:t?`lookup`:u?.dataSource,groupName:u?.groupName,lookup:u?.lookup,groupFields:u?.filterGroupFields,groupSeparator:u?.filterGroupSeparator})}},onOpen:e=>{if(e&&a){let e=!!u?.lookup?.collection;S(a,``,{dataSource:e?`lookup`:u?.dataSource,groupName:u?.groupName,lookup:u?.lookup,groupFields:u?.filterGroupFields,groupSeparator:u?.filterGroupSeparator})}}})})]})]},t.key)}),(0,l.jsx)(n.ut,{htmlType:`button`,variant:`soft`,icon:(0,l.jsx)(c.PlusOutlined,{}),disabled:y.length>0&&f.filter(e=>e?.field).length>=y.length,onClick:()=>t(Wi),children:`Add Row`})]})})})})]})}var Xi=`data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.00035%204.69941C4.74567%204.69941%203.72701%205.71807%203.72701%206.97275C3.72701%208.22745%204.74567%209.24609%206.00035%209.24609C7.25503%209.24609%208.2737%208.22745%208.2737%206.97275C8.2737%205.71807%207.25503%204.69941%206.00035%204.69941ZM6.00035%205.87128C6.60827%205.87128%207.10182%206.36485%207.10182%206.97275C7.10182%207.58067%206.60827%208.07422%206.00035%208.07422C5.39243%208.07422%204.89888%207.58067%204.89888%206.97275C4.89888%206.36485%205.39243%205.87128%206.00035%205.87128ZM2.06843%206.41445C2.85434%204.9331%204.16742%203.92578%206.00035%203.92578C7.83328%203.92578%209.14637%204.9331%209.93227%206.41445C10.0838%206.70013%2010.4388%206.80902%2010.7245%206.65745C11.0102%206.50587%2011.1191%206.15091%2010.9675%205.86523C9.97758%203.9994%208.30902%202.75391%206.00035%202.75391C3.69169%202.75391%202.02312%203.9994%201.03322%205.86523C0.881648%206.15091%200.990538%206.50587%201.27619%206.65745C1.56187%206.80902%201.91686%206.70013%202.06843%206.41445Z'%20fill='%23586888'/%3e%3c/svg%3e`,Zi=`data:image/svg+xml,%3csvg%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cmask%20id='path-1-inside-1_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-1-inside-1_8856_23533)'/%3e%3cmask%20id='path-2-inside-2_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-2-inside-2_8856_23533)'/%3e%3cline%20x1='7.375'%20y1='2.93555'%20x2='12.225'%20y2='2.93555'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='5.83398'%20x2='12.225'%20y2='5.83398'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='8.87305'%20x2='12.225'%20y2='8.87305'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='11.7227'%20x2='12.225'%20y2='11.7227'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3c/svg%3e`,{Text:Qi}=s.Typography;function $i(e){return ta(e?.label,e?.fieldLabel,e?.name,e?.fieldName,e?.value,e?.field)}function ea(e){return ta(e?.value,e?.field,e?.fieldName,e?.name,e?.label)}function ta(...e){return e.find(e=>e!=null&&String(e).trim()!==``)}function na(e){return String(e??``).replace(/\[(\-?\d+)\]/g,`.$1`).split(`.`).filter(Boolean)}function ra(e,t){if(!(!t||typeof t!=`string`))return na(t).reduce((e,t)=>{if(e!=null){if(/^-?\d+$/.test(t)){if(!Array.isArray(e))return;let n=Number(t);return e[n<0?e.length+n:n]}return e?.[t]}},e)}function ia(e,t){return t===`id`?e?.id??e?._id:e?.[t]??ra(e,t)}function aa(e,t){if(!Array.isArray(e)||e.length===0||!t)return;let n=e[e.length-1];if(n!=null)return typeof n==`object`?ra(n,t):n}function oa(e){if(Array.isArray(e))return e.some(oa);if(e==null)return!1;let t=String(e).trim().toLowerCase();return t?![`all`,`internal`].includes(t):!1}function sa(e){let t=Object.keys(e??{}).find(e=>/^customFields\.[^.]*profiledata\./i.test(e)&&!/^customFields\.internalprofiledata\./i.test(e));if(t)return t.replace(/^customFields\./i,``).replace(/profiledata\..*$/i,``);let n=e?.customFields;if(!n||typeof n!=`object`)return``;let r=Object.keys(n).find(e=>/profiledata$/i.test(e)&&!/^internalprofiledata$/i.test(e)&&n[e]&&typeof n[e]==`object`);return r?r.replace(/profiledata$/i,``):``}function ca(e){if(typeof e?.isVisible==`boolean`&&!e.isVisible||typeof e?.isVisible==`string`&&e.isVisible.toLowerCase()===`false`)return!1;let t=ea(e);return!t||typeof t!=`string`?!1:/^customFields\.[^.]*profiledata\./i.test(t)&&!/^customFields\.internalprofiledata\./i.test(t)}function la(e){return[e?.sourceType,e?.profileSource,e?.selectedSource,e?.customFields?.sourceType,e?.customFields?.profileSource].some(oa)||!!sa(e)}function ua(e,t){let n=ia(e,t);return n==null||n===``?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}function da(e){let t=e?.defaultValue;return t==null?``:String(t).trim()}function fa(e){return!!e?.renderConfig?.treatZeroAsEmpty}function pa(e,t=null){return e==null||e===``||e===`-`||fa(t)&&(e===0||e===`0`)?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.keys(e).length===0}function ma(e,t){let n=da(e);return n&&pa(t,e)?n:t}function ha(e){if(!e)return``;let t=e instanceof Date?e:new Date(e);if(Number.isNaN(t.getTime()))return String(e);let n=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!0}).formatToParts(t),r=e=>n.find(t=>t.type===e)?.value??``;return`${`${r(`month`)} ${r(`day`)},${r(`year`)}`} | ${`${r(`hour`)}:${r(`minute`)} ${r(`dayPeriod`)}`}`}function ga(e){return String(e||`U`).trim().charAt(0).toUpperCase()||`U`}function _a(e,t){let n=t.find(t=>{let n=ia(e,t);return n!=null&&n!==``});return n?ua(e,n):``}function va(e,t){let n=ia(t,e.key),r=Array.isArray(n)?n:n?[n]:[],i=e.renderConfig??{},a=[i.nameField,i.labelField,`recruiterName`,`name`,`fullName`,`displayName`,`userName`,`email`,`recruiterEmail`].filter(Boolean),o=[i.metaField,i.dateField,i.assignedDateField,`assignedDateTime`,`assignedDate`,`createdAt`].filter(Boolean);return r.map((e,t)=>{let n=typeof e==`object`&&e?e:{value:e},r=_a(n,a)||String(e||`User`),i=_a(n,o);return{key:_a(n,[`recruiterId`,`id`,`_id`,`email`,`recruiterEmail`])||`${r}-${t}`,name:r,initial:ga(r),meta:ha(i)}})}function ya({item:e}){return(0,l.jsxs)(`div`,{className:`job-avatar-tooltip`,children:[(0,l.jsx)(`div`,{className:`job-avatar-tooltip-name`,children:e.name}),e.meta&&(0,l.jsx)(`div`,{className:`job-avatar-tooltip-meta`,children:e.meta})]})}function ba({items:e}){return(0,l.jsx)(`div`,{className:`job-avatar-more-tooltip`,children:e.map(e=>(0,l.jsx)(ya,{item:e},e.key))})}function xa(e){return typeof e==`boolean`?e:typeof e==`string`?e.toLowerCase()===`true`:!!e}function Sa(e){return e==null?``:Array.isArray(e)?e.join(`,`):typeof e==`object`?Object.values(e).join(` `):String(e)}function Ca(e,t){return e?String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(Sa(ia(t,n)))).replace(/:([A-Za-z_][\w.]*)/g,(e,n)=>encodeURIComponent(Sa(ia(t,n)))):``}function wa(e){return/^(https?:\/\/|\/)/i.test(String(e))}function Ta(e,t){let n=String(e??``).trim().toLowerCase();if(n===`blank`||n===`_blank`)return`_blank`;if(n===`self`||n===`_self`)return`_self`;if(n)return e;if(/^https?:\/\//i.test(String(t)))return`_blank`}function Ea(e){return/^https?:\/\//i.test(String(e))}function Da(e,t,n){let r=e.routeUrl??e.routeURL??e.linkTemplate??e.linkUrl??e.href??e.url??e.action;return r?Ca(r,t):wa(n)?String(n):``}function Oa(e,t){if(!t||t.length<3||!e||typeof e!=`string`||e===`-`)return e;let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0;for(;a<=e.length;){let o=n.indexOf(r,a);if(o===-1){i.push(e.slice(a));break}o>a&&i.push(e.slice(a,o)),i.push((0,l.jsx)(`mark`,{className:`search-highlight`,style:{backgroundColor:`#ffff00`,color:`inherit`,padding:0,borderRadius:2},children:e.slice(o,o+t.length)},o)),a=o+t.length}return i}function ka(e,t,n,r=``){let i=Da(e,t,n),a=Ta(e.linkTarget,i),o=Oa(n,r);return Ea(i)?(0,l.jsx)(s.Tooltip,{title:n===`-`?void 0:n,children:(0,l.jsx)(`a`,{className:`job-cell-link job-cell-value`,href:i,rel:a===`_blank`?`noreferrer`:void 0,target:a,children:o})}):(0,l.jsx)(s.Tooltip,{title:n===`-`?void 0:n,children:(0,l.jsx)(d.Link,{className:`job-cell-link job-cell-value`,target:a,to:i||`#`,children:o})})}function Aa(e){let t=[e?.props,e?.props?.format,e?.props?.display,e?.props?.dateDisplay,e?.renderConfig?.format,e?.renderConfig?.display,e?.renderConfig?.dateDisplay,e?.dateDisplay].map(e=>typeof e==`string`?e.trim().toLowerCase():``).find(Boolean);return t===`datetime`||t===`time`?t:`date`}function ja(e,t){if(e==null||e===``)return`-`;let n=e instanceof Date?e:new Date(e);if(Number.isNaN(n.getTime()))return ua({value:e},`value`);let r=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!0,timeZone:`UTC`}).formatToParts(n),i=e=>r.find(t=>t.type===e)?.value??``,a=`${i(`month`)}, ${i(`day`)}, ${i(`year`)}`,o=`${i(`hour`)}:${i(`minute`)} ${i(`dayPeriod`)}`,s=Aa(t);return s===`time`?o:s===`datetime`?`${a} | ${o}`:a}function Ma(e){return/date/i.test(`${e.key??``} ${e.label??``} ${e.type??``}`)}function Na(e){return e==null||e===``?`-`:Array.isArray(e)?e.join(`, `):typeof e==`object`?Object.values(e).join(` `):e}function Pa(e,t,n){let r=String(t??``).trim();if(!r)return`-`;let i=r.replace(/^record\./,``);if(n?.renderConfig?.lastItemField??n?.renderConfig?.arrayDisplayField){let t=na(i);for(let n=t.length-1;n>=1;--n){let r=ia(e,t.slice(0,n).join(`.`));if(!Array.isArray(r))continue;let i=r[r.length-1];return i==null?`-`:Na(ra(i,t.slice(n).join(`.`)))}let r=n?.key,a=r?ia(e,r):void 0;if(r&&Array.isArray(a)){let e=a[a.length-1];if(i===r)return Na(e);let t=`${r}.`;if(i.startsWith(t))return Na(ra(e,i.slice(t.length)))}}return ua(e,i)}function Fa(e){return String(e??``).replace(/\s+/g,` `).replace(/^\s*[-–—/:|·,]+\s*/,``).replace(/\s*[-–—/:|·,]+\s*$/,``).replace(/\s*([-–—/:|·,])\s*([-–—/:|·,])\s*/g,` $2 `).replace(/\s+[-–—]\s+(?=[A-Za-z$€£₹])/g,` `).replace(/\s+/g,` `).trim()}function Ia(e,t,n){if(typeof e!=`string`||e.trim()===``)return``;let r=!1,i=e.replace(/\{\{\s*([^}]+?)\s*\}\}/g,(e,i)=>{let a=Pa(t,i,n);return pa(a,n)?``:(r=!0,String(a))});if(!r)return``;let a=i.replace(/\s+/g,` `).trim();return n?.renderConfig?.cleanEmptyTemplateSeparators?Fa(a):a}function La(e,t){let n=ia(t,e.key),r=Ia(e.displayTemplate,t,e),i=e.renderConfig?.lastItemField??e.renderConfig?.arrayDisplayField;if(r)return r;if(i){let t=aa(n,i);return pa(t,e)?ma(e,`-`):Array.isArray(t)?ma(e,t.join(`, `)):typeof t==`object`?ma(e,Object.values(t).join(` `)):t}return Ma(e)?ma(e,ja(n,e)):ma(e,ua(t,e.key))}function Ra(e,t){if(!da(e)||Ia(e.displayTemplate,t,e))return!1;let n=ia(t,e.key),r=e.renderConfig?.lastItemField??e.renderConfig?.arrayDisplayField;return r?pa(aa(n,r),e):Ma(e)?pa(ja(n,e),e):pa(ua(t,e.key),e)}function za(e){return e===`-`||typeof e!=`string`||!e.trim()?e:e.replace(/\b([A-Za-z])([A-Za-z]*)\b/g,(e,t,n)=>e.length>1&&e===e.toUpperCase()?e:`${t.toUpperCase()}${n.toLowerCase()}`)}function Ba(e){return typeof e!=`string`||!e.includes(`-`)?e:e.replace(/(^|\s)-\s*(\d+)(?=\s*[A-Za-z])/,`$10-$2`).replace(/(\d+)\s*-\s*(?=[A-Za-z])/,`$1-0 `)}function Va(e){let t=e.map((e,t)=>({field:e,index:t}));return t.some(({field:e})=>e.order!==void 0&&e.order!==null&&e.order!==``)?[...t].sort((e,t)=>{let n=Number(e.field.order),r=Number(t.field.order),i=Number.isFinite(n),a=Number.isFinite(r);return i&&a&&n!==r?n-r:i===a?e.index-t.index:i?-1:1}).map(({field:e})=>e):e}function Ha(e){return e.iconUrl??e.iconURL??e.icon??e.iconPath}function Ua(e){return Array.isArray(e)?e.map((e,t)=>({...e,key:e.key??e.name??e.label??e.routeUrl??e.type??String(t),label:e.label??e.name??e.title??e.type??`Action`,iconUrl:Ha(e)})).filter(e=>e.iconUrl):[]}function Wa(e,t,n=[],r){if(wr(e.key,t,n,r)||Array.isArray(e.conditions)&&e.conditions.length>0&&!e.conditions.every(e=>xr(e,t,r)))return!1;let i=e?.showIfField??e?.visibleWhenField;return!i||xr({field:i,operator:e?.showIfOperator||`eq`,value:e?.showIfValue??e?.visibleWhenValue??``},t,r)}function Ga(e,t={}){let n=dr(e);return n===`add`?t.canAdd!==!1:n===`edit`?t.canEdit!==!1:n!==`delete`||t.canDelete!==!1}function Ka(e,t,n){let r=Ca(e.routeUrl??e.routeURL??e.route??e.url??e.href,t),i=uo(e.type??e.actionType),a=typeof e.label==`function`?e.label(t):e.label,o=(0,l.jsx)(`img`,{src:e.iconUrl,alt:a,className:`job-field-action-icon`}),c=`job-field-action-button`,u=e.__done,f=e.__disabledReason;return u||f?(0,l.jsx)(s.Tooltip,{title:u?u.label:f,children:(0,l.jsx)(`button`,{"aria-label":u?u.label:`${a} (unavailable)`,className:`${c} job-field-action-button--done`,type:`button`,disabled:!0,children:o})},e.key):typeof e.onClick==`function`?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,onClick:n=>{n.stopPropagation(),e.onClick(t)},children:o})},e.key):(i===`popup`||i===`modal`||e.popupKey)&&r?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,onClick:i=>{i.stopPropagation(),n?.(r,t,e)},children:o})},e.key):r&&(i===`page`||r.startsWith(`/`))?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(d.Link,{"aria-label":a,className:c,to:r,children:o})},e.key):r?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`a`,{"aria-label":a,className:c,href:r,rel:`noreferrer`,target:`_blank`,children:o})},e.key):(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,children:o})},e.key)}function qa(e){let t=Array.isArray(e.secondaryFields)?e.secondaryFields:[],n=e.secondaryField?[e.secondaryField]:[];return[...t,...n].filter((e,t,n)=>e&&n.indexOf(e)===t)}function Ja(e,t){let n=e.secondarySeparator??` `,r=qa(e).map(e=>ua(t,e)).filter(e=>e!==`-`);return r.length?r.join(` ${n} `):``}function Ya(e){return za(Ba(e))}function Xa(e,t){if(!Array.isArray(e.valueStyles))return null;let n=uo(t);return e.valueStyles.find(e=>uo(e?.value)===n||uo(e?.label)===n)??null}function Za(e){let t=e?.color,n=e?.bg??e?.background??e?.backgroundColor;return{...t?{"--job-cell-badge-color":t}:{},...n?{"--job-cell-badge-bg":n}:{}}}function Qa(e){return uo(e?.varient??e?.variant).replace(/[^a-z0-9-]/g,`-`)}function $a(e,t){let n=Xa(e,t),r=n??e.commonStyle??{},i=n?.label??t,a=(typeof i==`string`?i.trim():i)||`-`,o=Qa(r),c=[`job-cell-badge`,`job-cell-value`,o?`job-cell-badge--${o}`:``].filter(Boolean).join(` `),u=!n&&typeof a==`string`&&a.includes(`,`)?a.split(`,`).map(e=>e.trim()).filter(Boolean):null,d=u&&u.length>1?`${u.slice(0,1).join(`, `)} +${u.length-1}`:a,f=Za(r);return(0,l.jsx)(s.Tooltip,{title:a===`-`?void 0:a,children:(0,l.jsx)(s.Tag,{className:c,style:f,children:d})})}function eo(e,t){let n=va(e,t),r=n.slice(0,2),i=n.slice(2);if(!n.length){let t=da(e)||`-`;return(0,l.jsx)(Qi,{className:`job-cell-primary job-cell-value`,children:t})}return(0,l.jsxs)(`span`,{className:`job-avatar-group`,children:[r.map((e,t)=>(0,l.jsx)(s.Tooltip,{classNames:{root:`job-avatar-tooltip-overlay`},title:(0,l.jsx)(ya,{item:e}),children:(0,l.jsx)(s.Avatar,{className:`job-avatar job-avatar--${t+1}`,children:e.initial})},e.key)),i.length>0&&(0,l.jsx)(s.Tooltip,{classNames:{root:`job-avatar-tooltip-overlay job-avatar-more-tooltip-overlay`},title:(0,l.jsx)(ba,{items:i}),children:(0,l.jsxs)(s.Avatar,{className:`job-avatar job-avatar--more`,children:[`+`,i.length]})})]})}function to(e,t,n=``,r,i={},a=[],o){if(uo(e.renderType)===`avatar`)return eo(e,t);let c=Ra(e,t),u=Ya(La(e,t)),d=Ua(e.actionButtons).filter(e=>Wa(e,t,a,o)).filter(e=>Ga(e,i)).map(e=>({...e,__done:Er(e,t,o),__disabledReason:Tr(e.key,t,a,o)})),f=Ya(Ja(e,t)),p=uo(e.renderType)===`badge`&&u!==`-`?$a(e,u):!xa(e.isLink)||u===`-`||c?(0,l.jsx)(s.Tooltip,{title:u===`-`?void 0:u,children:(0,l.jsx)(Qi,{className:`job-cell-primary job-cell-value`,children:Oa(u,n)})}):ka(e,t,u,n);return(0,l.jsxs)(`span`,{className:`job-cell-content`,children:[(0,l.jsxs)(`span`,{className:`job-cell-main-line`,children:[p,d.length>0&&(0,l.jsx)(`span`,{className:`job-field-actions`,children:d.filter(e=>typeof e.hiddenIf!=`function`||!e.hiddenIf(t)).map(e=>Ka(e,t,r))})]}),f&&(0,l.jsx)(s.Tooltip,{title:f,children:(0,l.jsx)(`span`,{className:`job-cell-secondary`,children:Oa(f,n)})})]})}var no=130,ro=230,io=7.2,ao=26,oo=8,so=44,co=20;function lo(e,t){let n=String(e.label??``).length*oo+so;if(uo(e.renderType)===`avatar`)return Math.max(Math.round(n),120);let r=0;for(let n of t){let t=String(Ya(La(e,n))??``),i=String(Ya(Ja(e,n))??``);r=Math.max(r,t.length,i.length)}let i=uo(e.renderType)===`badge`?24:0,a=r*io+ao+i;return Math.round(Math.min(Math.max(n,a,no),ro))}function uo(e){return String(e??``).trim().toLowerCase()}function fo(e,t){return e?.key??e?.value??e?.id??(t===void 0?void 0:String(t))}function po(e){return uo(e)}function mo(e){return[`all`,``].includes(po(e))}function ho(e,t,n,r,i){if(mo(t))return!0;let a=uo(n?.filterValue??n?.status??n?.title??n?.tabTitle??n?.name??(typeof n?.label==`string`?n.label:void 0)??n?.value??n?.key??t),o=n?.field??n?.fieldName??n?.filterField??n?.dataIndex??i;if(o)return uo(ua(e,o))===a;let s=r.filter(e=>{let t=uo(e.key),n=uo(e.label);return t.includes(`status`)||n.includes(`status`)});return(s.length?s:r).some(t=>uo(ua(e,t.key))===a)}function go(e,t,n){return typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]:e.id??e._id??e.key??t}function _o(e){return!!e?.closest?.(`a,button,input,textarea,select,label,[role="button"],[role="menuitem"],.ant-checkbox,.ant-radio,.ant-dropdown,.ant-dropdown-trigger,.ant-table-selection-column,.job-field-actions,.job-row-eye-button`)}function vo(e){return e.label??e.name??e.title??e.value}function yo(e,t){return e.key??e.value??e.route??e.name??String(t)}var bo={delete:(0,l.jsx)(c.DeleteOutlined,{}),edit:(0,l.jsx)(c.EditOutlined,{}),mail:(0,l.jsx)(c.MailOutlined,{}),shareAlt:(0,l.jsx)(c.ShareAltOutlined,{}),swap:(0,l.jsx)(c.RightOutlined,{}),thunderbolt:(0,l.jsx)(c.ThunderboltOutlined,{}),userAdd:(0,l.jsx)(c.UserAddOutlined,{}),userSwitch:(0,l.jsx)(c.UserSwitchOutlined,{})};function xo(e,t){let n={key:e.key,label:t?t.label:e.label,icon:bo[e.icon]??void 0,danger:t?void 0:e.danger||void 0,disabled:!!t||void 0,title:t?t.label:void 0};return e.children?.length&&(n.children=e.children.map(e=>xo(e))),n}function So(e,t,n){return!e?.doneWhen?.field||!t?.length?null:t.every(t=>Er(e,t,n))?Er(e,t[0],n):null}function Co(e,t){return e.filter(t).map(e=>e.children?.length?{...e,children:Co(e.children,t)}:e)}function wo(e){let t=[];for(let n of e)t.push(n),n.children?.length&&t.push(...wo(n.children));return t}function To(e){return Array.isArray(e)?e.map((e,t)=>{let n=vo(e),r=yo(e,t);return!n||!r?null:{...e,key:String(r),label:n,route:e.route||e.routeTemplate||(e.actionType===`modal`&&(e.popupKey||r)?`/popup/${e.popupKey||r}`:``),children:e.children?.length?To(e.children):void 0}}).filter(Boolean):[]}function Eo(e){let t=String(e?.key??``).trim().toLowerCase(),n=String(e?.label??``).trim().toLowerCase(),r=String(e?.popupKey??``).trim().toLowerCase(),i=String(e?.route??e?.routeTemplate??``).trim().toLowerCase();return t===`change-status`||t===`changestatus`||n===`change status`||r===`change-status`||i.includes(`/popup/change-status`)}function Do(e){let t=e?.clientSubmissionStatus,n=t&&typeof t==`object`?t:null;return{id:Number(n?.clientSubmissionStatusId??n?.id??n?.uniqueId??e?.clientSubmissionStatusId??e?.clientStatusId??e?.[`clientSubmissionStatus.clientSubmissionStatusId`]??0)||0,text:uo(String(n?.clientSubmissionStatusText??n?.name??(typeof t==`string`?t:void 0)??e?.clientSubmissionStatusText??e?.clientStatusText??e?.clientStatus??e?.[`clientSubmissionStatus.clientSubmissionStatusText`]??``).trim())}}function Oo(e,t,n){let r=Do(e);return r.id>0&&t.has(r.id)?!0:!!(r.text&&n.has(r.text))}function ko(e,t,n){return e?.length?e.some(e=>Oo(e,t,n)):!1}function Ao(e,t){return!e.permissionKey||!t.length||t.every(t=>n.P(ra(t,`actionPermission.${e.permissionKey}`)))}function jo(e,t){return t?e===`asc`?`desc`:e===`desc`?``:`asc`:`asc`}function Mo(e){return e===`asc`?`Ascending`:e===`desc`?`Descending`:`Neutral`}function No({label:e,sortDir:t,sortable:n,onSort:r}){if(!n)return(0,l.jsx)(`span`,{className:`job-table-header-label`,children:e});let i=Mo(t);return(0,l.jsxs)(`div`,{className:`job-table-header-content`,children:[(0,l.jsx)(`span`,{className:`job-table-header-label`,title:typeof e==`string`?e:void 0,children:e}),(0,l.jsx)(s.Tooltip,{title:i,mouseEnterDelay:.08,classNames:{root:`job-sort-tooltip`},children:(0,l.jsx)(`button`,{type:`button`,className:`job-table-sort-trigger${t?` job-table-sort-trigger--active`:``}`,"aria-label":`Sort ${typeof e==`string`?e:`column`}, ${i}`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r?.()},children:(0,l.jsxs)(`span`,{className:`job-table-sort-icon-stack`,children:[(0,l.jsx)(c.CaretUpOutlined,{className:`job-table-sort-icon job-table-sort-icon--up${t===`asc`?` job-table-sort-icon--active`:``}`}),(0,l.jsx)(c.CaretDownOutlined,{className:`job-table-sort-icon job-table-sort-icon--down${t===`desc`?` job-table-sort-icon--active`:``}`})]})})})]})}function Po({moduleName:e,activeTabScope:t,pageSize:n,sort:r,sortDir:i,queryParams:a}){return[e??``,t??``,n,r??``,i??``,a?JSON.stringify(a):``].join(`|`)}function Fo(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function Io(e){for(let t of e.keys()){let e=/^p(\d+)$/.exec(t);if(e)return Fo(e[1])}return 1}function Lo(e){[...e.keys()].forEach(t=>{(/^p\d+$/.test(t)||t===`page`)&&e.delete(t)})}var Ro=[],zo={};function Bo({record:e,fields:t,selected:n,onSelect:r,onPreview:i,onRecordClick:a,isControlled:o,selectionMode:c=`checkbox`,onPopupAction:u,permissions:d}){let f=t.find(e=>e.cardRole===`name`),p=t.find(e=>e.cardRole===`action`),m=t.find(e=>e.cardRole===`headerAction`),h=t.filter(e=>e!==f&&e!==p&&e!==m),g=f?ua(e,ea(f)):``,_=p?.render?p.render(ia(e,ea(p)),e):null,v=m?.render?m.render(ia(e,ea(m)),e):null;return(0,l.jsxs)(`div`,{className:`param-card${n?` param-card--selected`:``}`,"aria-selected":n,onClick:e=>{_o(e.target)||a?.()},role:a?`button`:void 0,tabIndex:a?0:void 0,onKeyDown:e=>{!a||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),a())},children:[(0,l.jsx)(`div`,{className:`param-card__header`,children:(0,l.jsxs)(`div`,{className:`param-card__name-row`,children:[c===`checkbox`&&(0,l.jsx)(s.Checkbox,{checked:n,onChange:r,onClick:e=>e.stopPropagation(),className:`param-card__checkbox`}),i&&(0,l.jsx)(`button`,{type:`button`,className:`job-row-eye-button`,"aria-label":`Preview`,onClick:e=>{e.stopPropagation(),i()},children:(0,l.jsx)(`img`,{src:`data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.00035%204.69941C4.74567%204.69941%203.72701%205.71807%203.72701%206.97275C3.72701%208.22745%204.74567%209.24609%206.00035%209.24609C7.25503%209.24609%208.2737%208.22745%208.2737%206.97275C8.2737%205.71807%207.25503%204.69941%206.00035%204.69941ZM6.00035%205.87128C6.60827%205.87128%207.10182%206.36485%207.10182%206.97275C7.10182%207.58067%206.60827%208.07422%206.00035%208.07422C5.39243%208.07422%204.89888%207.58067%204.89888%206.97275C4.89888%206.36485%205.39243%205.87128%206.00035%205.87128ZM2.06843%206.41445C2.85434%204.9331%204.16742%203.92578%206.00035%203.92578C7.83328%203.92578%209.14637%204.9331%209.93227%206.41445C10.0838%206.70013%2010.4388%206.80902%2010.7245%206.65745C11.0102%206.50587%2011.1191%206.15091%2010.9675%205.86523C9.97758%203.9994%208.30902%202.75391%206.00035%202.75391C3.69169%202.75391%202.02312%203.9994%201.03322%205.86523C0.881648%206.15091%200.990538%206.50587%201.27619%206.65745C1.56187%206.80902%201.91686%206.70013%202.06843%206.41445Z'%20fill='%23586888'/%3e%3c/svg%3e`,alt:``,className:`job-row-eye-icon`})}),(0,l.jsx)(Qi,{className:`param-card__name`,children:g}),v&&(0,l.jsx)(`div`,{className:`param-card__header-actions`,children:v})]})}),h.length>0&&(0,l.jsx)(`div`,{className:`param-card__body-fields`,children:h.map(t=>{let n=ea(t),r=ia(e,n),i=o&&typeof t.render==`function`?t.render(r,e):to(t,e,``,u,d);return(0,l.jsxs)(`div`,{className:`param-card__field-row`,children:[(0,l.jsx)(Qi,{className:`param-card__field-label`,children:$i(t)}),(0,l.jsx)(`div`,{className:`param-card__field-value`,children:i})]},n)})}),(0,l.jsx)(`div`,{className:`param-card__divider`}),(0,l.jsxs)(`div`,{className:`param-card__footer`,children:[(0,l.jsx)(`div`,{className:`param-card__footer-left`}),(0,l.jsx)(`div`,{className:`param-card__footer-right`,children:_})]})]})}function Vo(e){return!!(e.operator===`isEmpty`||e.operator===`notEmpty`||e.value||e.from||e.to||Array.isArray(e.values)&&e.values.length>0)}function Ho(e){return e.fieldLabel?e.fieldLabel:(e.field??``).replace(/([A-Z])/g,` $1`).replace(/^(.)/,e=>e.toUpperCase()).trim()}function Uo(e){if(e.operator===`isEmpty`)return`Is Empty`;if(e.operator===`notEmpty`)return`Not Empty`;if(e.value)return`"${e.value}"`;if(e.from&&e.to)return`${e.from} to ${e.to}`;if(e.from)return`from ${e.from}`;if(e.to)return`to ${e.to}`;if(Array.isArray(e.values)&&e.values.length>0){let t=e.values.slice(0,2).join(`, `);return e.values.length>2?`${t} +${e.values.length-2}`:t}return``}function Wo({filters:e,onRemove:t,onClearAll:n}){let r=(e??[]).map((e,t)=>({row:e,originalIdx:t})).filter(({row:e})=>e.field&&Vo(e));return r.length===0?null:(0,l.jsxs)(s.Flex,{gap:6,wrap:`wrap`,align:`center`,className:`filter-chips-bar`,children:[(0,l.jsx)(Qi,{className:`filter-chips-bar__label`,children:`Filters:`}),r.map(({row:e,originalIdx:n})=>(0,l.jsxs)(s.Tag,{closable:!0,onClose:()=>t(n),className:`filter-chip`,children:[(0,l.jsx)(`span`,{className:`filter-chip__field`,children:Ho(e)}),(0,l.jsx)(`span`,{className:`filter-chip__sep`,children:`: `}),(0,l.jsx)(`span`,{className:`filter-chip__value`,children:Uo(e)})]},`${e.field}-${n}`)),r.length>1&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:n,className:`filter-chips-clear`,children:`Clear all`})]})}function Go({moduleName:e,authToken:r,actions:i=[],actionRules:a=[],breadcrumbItems:u=[],dataSource:f=[],className:p=``,initialPageSize:m=10,onAction:h,onSummaryClick:g,rowKey:_,showSummaryButton:v=!1,summaryButtonLabel:y=`View Summary`,summaryRoute:b,showFieldButton:x=!0,showFilterButton:S=!0,fieldButtonLabel:C=`View Field`,fieldButtonRoute:w,tabs:T,tabTitleOverrides:E=null,tableClassName:D=`job-list-table`,fields:O=Ro,fieldOverrides:k=null,extraFields:A=Ro,listName:j=``,loading:M=!1,total:N,current:F,pageSize:I,onPageChange:L,onPageSizeChange:R,onSearch:z,toolbarExtra:B=null,showSearch:V=!0,searchPlaceholder:ee=`Min 3 Chars, press Enter to search`,searchFields:te=Ro,showViewToggle:ne=!1,activeView:re=`list`,onViewChange:ie,autoCardForExternalRows:H=!0,createAction:ae,onRecordClick:oe,selectedRecordId:se,selectionMode:ce=`checkbox`,compact:U=!1,onSelectionChange:le,selectedSource:ue,onTabChange:de,fetchData:fe=In,responseMapper:pe=di,queryParams:W=zo,defaultVisibleColumnCount:me=6,showAdd:he=!0,lockOuterPageScroll:ge=!1}){let _e=(0,d.useNavigate)(),G=(0,d.useLocation)(),K=n.Sn(e),[ve,ye]=(0,o.useState)(()=>new Set),[be,xe]=(0,o.useState)(()=>new Set);(0,o.useEffect)(()=>{if(uo(K)!==`submissions`){ye(new Set),xe(new Set);return}let e=!1,n=new URLSearchParams({masterName:`clientSubmissions`,offset:`0`,limit:`100`});return t.b&&n.set(`app_id`,t.b),t.o(t.x,`/masters/dropdown?${n.toString()}`).then(t=>{if(e)return;let n=(Array.isArray(t?.data)?t.data:[]).filter(e=>e?.isTerminalStatus===!0);ye(new Set(n.map(e=>Number(e?.id??e?.uniqueId??0)).filter(e=>e>0))),xe(new Set(n.map(e=>uo(e?.name)).filter(Boolean)))}).catch(()=>{e||(ye(new Set),xe(new Set))}),()=>{e=!0}},[K]);let Se=!!ge,{canView:Ce,canAdd:we,canEdit:Te,canDelete:Ee}=lr(K),De=JSON.stringify(W??zo),Oe=(0,o.useMemo)(()=>W??zo,[De]),[ke]=(0,d.useSearchParams)(),Ae=Io(ke),[je,Me]=(0,o.useState)(()=>String(ue??``).trim()||`all`),[Ne,Pe]=(0,o.useState)(``),[Fe,Ie]=(0,o.useState)(``),[Le,Re]=(0,o.useState)(!1),[Be,Ve]=(0,o.useState)([]),[q,J]=(0,o.useState)([]),[Y,X]=(0,o.useState)([]),[He,Ue]=(0,o.useState)(0),[We,Ge]=(0,o.useState)({current:Ae,pageSize:m}),[Ke,qe]=(0,o.useState)({sort:``,sortDir:``}),[Je,Ye]=(0,o.useState)([]),[Xe,Ze]=(0,o.useState)(!1),[Qe,$e]=(0,o.useState)([]);(0,o.useEffect)(()=>(r&&t.g(r),()=>{r&&t.r()}),[r]),(0,o.useEffect)(()=>{if(Se)return document.documentElement.classList.add(`listview-page-scroll-lock`),document.body.classList.add(`listview-page-scroll-lock`),()=>{document.documentElement.classList.remove(`listview-page-scroll-lock`),document.body.classList.remove(`listview-page-scroll-lock`)}},[Se]);let et=(0,o.useRef)(null),[tt,nt]=(0,o.useState)(0),rt=(0,o.useRef)(),it=(0,o.useRef)(``);(0,o.useEffect)(()=>{let e=et.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&nt(t)});return t.observe(e),()=>t.disconnect()},[]);let at=(e,t)=>String(go(e,t,_)),ot=(e,t)=>String(at(e,t))===String(se??``),st=(e,t)=>{let n=at(e,t);n&&oe?.(e,n)},ct=(e,t)=>{J(e),X(t),le?.(e,t)},[lt,ut]=(0,o.useState)(f),[dt,ft]=(0,o.useState)(f.length),[pt,mt]=(0,o.useState)([]),[ht,gt]=(0,o.useState)([]),[_t,vt]=(0,o.useState)(``),[yt,bt]=(0,o.useState)([]),[xt,St]=(0,o.useState)([]),[Ct,wt]=(0,o.useState)(!1),[Tt,Et]=(0,o.useState)(!1),[Dt,Ot]=(0,o.useState)(null),[kt,At]=(0,o.useState)(null),[jt,Mt]=(0,o.useState)(!1),Nt=!!(L||R||z),Pt=Nt?f:lt,Ft=Nt?N??0:dt,It=Nt?O:ht,Lt=(0,o.useMemo)(()=>Pt.some(e=>la(e)),[Pt]),Rt=(0,o.useMemo)(()=>It.some(e=>ca(e)),[It]),zt=H&&(Lt||Rt)?`card`:re,Bt=i.length>0?i:yt,Vt=a.length>0?a:xt,Ht=(0,o.useMemo)(()=>To(Bt),[Bt]),Ut=(0,o.useMemo)(()=>new Map(wo(Ht).map(e=>[e.key,e])),[Ht]),Wt=(0,o.useMemo)(()=>Co(Ht,e=>{let t=dr(e);return t===`add`&&!we||t===`edit`&&!Te||t===`delete`&&!Ee||!n.F(e.permission,K)||e.showInList===!1?!1:!e.allowedTabs||e.allowedTabs.some(e=>uo(e)===uo(je))}),[Ht,je,we,Te,Ee,K]),Gt=(0,o.useMemo)(()=>Co(Wt,e=>(q.length===1||e.allowMultiple||e.danger)&&Ao(e,Y)&&!(uo(K)===`submissions`&&Eo(e)&&ko(Y,ve,be))&&!Dr(e.key,Y,Vt,je)),[je,K,Vt,q.length,Y,ve,be,Wt]),Kt=typeof e==`string`?e.trim().length>0:!!e,qt=Kt?`/${K}-create${ae?`?action=${encodeURIComponent(ae)}`:``}`:``;(0,o.useEffect)(()=>{Kt&&!Ce&&_e(`/`,{replace:!0})},[Ce,Kt,_e]);let Jt=(e,{replace:t=!1}={})=>{let n=new URLSearchParams(ke);Lo(n);let r=[n.toString(),e>1?`p${e}`:``].filter(Boolean).join(`&`);r!==G.search.replace(/^\?/,``)&&_e({pathname:G.pathname,search:r?`?${r}`:``},{replace:t})},Yt=(e,t)=>{Ge(t=>({...t,current:e})),Jt(e,t)},Xt=()=>{Yt(1,{replace:!0})},{config:Zt,loading:Qt,error:$t}=$n(!Nt&&Kt?e:null),en=(0,o.useCallback)(e=>{let t=Ke.sort===e,n=jo(Ke.sortDir,t),r=n?String(e):``;qe({sort:r,sortDir:n}),typeof z==`function`&&z(r,n),Xt()},[z,Xt,Ke.sort,Ke.sortDir]);(0,o.useEffect)(()=>{Ge(e=>e.current===Ae?e:{...e,current:Ae})},[Ae]),(0,o.useEffect)(()=>{Nt&&Ge(e=>{let t=Fo(F??e.current),n=Number(I)>0?Number(I):e.pageSize;return e.current===t&&e.pageSize===n?e:{current:t,pageSize:n}})},[F,I,Nt]);let tn=G.state?.refreshTimestamp;(0,o.useEffect)(()=>{tn&&(ct([],[]),Ue(e=>e+1))},[tn]);let nn=(0,o.useMemo)(()=>{let e=[...Array.isArray(T)?T:[],...pt],t=po(je);return e.find((e,n)=>po(fo(e,n))===t)},[je,pt,T]),rn=nn?.field??nn?.fieldName??nn?.filterField??nn?.dataIndex??_t,an=mo(je)?``:je,on=!an&&!mo(je)&&uo(rn).length>0,sn=Fe.trim().length>=3,cn=sn?Fe.trim():``,ln=Be.some(e=>e.field),un=Po({moduleName:e,activeTabScope:an,pageSize:We.pageSize,sort:Ke.sort,sortDir:Ke.sortDir,queryParams:Oe}),dn=We.current===1&&kt?.key===un,fn=Number(kt?.total),pn=sn?Number.isFinite(fn)&&fn>0?fn:dt:0;(0,o.useEffect)(()=>{if(Nt)return;if(!Kt){ut([]),ft(0),mt([]),gt([]),vt(``),bt([]),St([]),Ot(null);return}let t=po(an);if(it.current&&it.current===t){it.current=``;return}let n=!1,r=sn&&pn>We.pageSize,i=r?pn:We.pageSize,a=r?0:(We.current-1)*We.pageSize;return wt(!(!sn&&!ln&&We.current===1&&dn)),Ot(null),fe(e,i,a,{scope:an,sort:Ke.sort,sortDir:Ke.sortDir,search:cn,filters:Be,queryParams:Oe}).then(t=>{if(n)return;let{rows:r,total:i,tabs:a,fields:o,tabField:s,actions:c,actionRules:l}=pe(t,e),u=!ue&&mo(je)&&Array.isArray(a)&&a.length>0&&!a.some((e,t)=>mo(fo(e,t)))?fo(a[0],0):``,d=Po({moduleName:e,activeTabScope:u?String(u):an,pageSize:We.pageSize,sort:Ke.sort,sortDir:Ke.sortDir,queryParams:Oe});ut(r),ft(i),mt(a),gt(o),vt(s),bt(c),St(l),u&&(it.current=po(u),Me(e=>po(e)===po(u)?e:String(u))),!sn&&!ln&&We.current===1&&At({key:d,rows:r,total:i,tabs:a,fields:o,tabField:s,actions:c,actionRules:l})}).catch(e=>{n||(ut([]),ft(0),mt([]),gt([]),vt(``),bt([]),St([]),Ot(e.message),Kt&&s.message.error(`Invalid module name or data could not be loaded.`))}).finally(()=>{n||(wt(!1),Et(!0))}),()=>{n=!0}},[cn,je,an,Be,fe,ln,sn,Kt,Nt,e,We.current,We.pageSize,He,pe,pn,ue,Ke.sort,Ke.sortDir,Oe]);let mn=(0,o.useMemo)(()=>{let e=Nt&&Array.isArray(O)&&O.length,t=!Nt&&Array.isArray(ht)&&ht.length,n=!$t&&Array.isArray(Zt)&&Zt.length,r=e?O:t?ht:n?Zt:[],i=new Map(ht.map(e=>[ea(e),e]).filter(([e])=>e)),a=r.map(e=>{let t=ea(e),n=i.get(t)??{},r=t&&k&&typeof k==`object`?k[t]:null,a=r?.renderConfig?{...n.renderConfig??e.renderConfig??{},...r.renderConfig}:e.renderConfig??n.renderConfig??null;return{...n,...e,...r??{},...a?{renderConfig:a}:{},key:t,label:$i(r??e)??$i(e)??$i(n)}}).filter(e=>e.key&&e.label),o=(Array.isArray(A)?A:[]).map((e,t)=>{let n=ea(e);return n?{...e,key:n,label:$i(e)??`Field ${t+1}`,isVirtual:e.isVirtual??!0,isVisible:typeof e.isVisible!=`boolean`||e.isVisible}:null}).filter(Boolean);return Va([...a,...o])},[Zt,$t,O,A,k,Nt,ht]),hn=(0,o.useMemo)(()=>mn.filter(e=>typeof e.isVisible==`boolean`?e.isVisible:typeof e.isVisible!=`string`||e.isVisible.toLowerCase()===`true`).map(e=>({key:e.key,label:e.label})),[mn]),gn=hn.map(e=>e.key),_n=Je.filter(e=>gn.includes(e)),vn=_n.length?_n:hn.slice(0,me).map(e=>e.key),yn=Math.min(me,hn.length),bn=vn.length>me,xn=(0,o.useMemo)(()=>mn.filter(e=>!e.cardHidden&&(e.tableHidden||vn.includes(e.key))),[mn,vn]),Sn=(0,o.useMemo)(()=>{let e=Ne.toLowerCase(),t=Pt,n=on?t.filter(e=>ho(e,je,nn,mn,rn)):t,r=te.length?mn.filter(e=>te.includes(e.key)):mn;return!e||e.length<3?n:n.filter(t=>r.some(n=>String(ua(t,n.key)).toLowerCase().includes(e)||qa(n).some(n=>String(ua(t,n)).toLowerCase().includes(e))))},[je,nn,rn,on,Pt,mn,Ne,te]),Cn=(0,o.useMemo)(()=>{if(!sn)return Sn;let e=(We.current-1)*We.pageSize;return Sn.slice(e,e+We.pageSize)},[Sn,sn,We.current,We.pageSize]),wn=sn?Sn.length:Ft,Tn=Fe.trim().length>=3,En=String(Sn.length).padStart(2,`0`),Dn=Ft>0||Pt.length>0,On=Dn||Ne.trim().length>0||Fe.trim().length>0,kn=Kt?Dt?`Invalid module name or data could not be loaded.`:$t?`Field configuration failed to load.`:`No data found.`:`Please provide a module name to view data.`,An=(0,o.useMemo)(()=>!E||typeof E!=`object`?null:Object.entries(E).reduce((e,[t,n])=>(n==null||(e[String(t)]=String(n)),e),{}),[E]),jn=(0,o.useMemo)(()=>{let t=Array.isArray(T)?T:[],n=!t.length,r=t.length?t:pt.length?pt:[{key:`all`,title:e??`List`,count:wn}],i=!!(An&&Object.keys(An).length);return!n&&!i?r:r.map((e,t)=>{if(!e||typeof e!=`object`)return e;let r=i?An[String(fo(e,t))]:void 0;if(!r&&!n)return e;let a={...e};if(r&&(a.title=r),n){if(Tt){let t=Number(e.count??e.countValue);a.count=Number.isFinite(t)?t:0}else delete a.count,delete a.countValue}return a})},[Tt,e,pt,An,wn,T]);(0,o.useEffect)(()=>{if(!jn.length||!((pt?.length??0)>0||Array.isArray(T)&&T.length>0))return;let e=po(je);if(!jn.some((t,n)=>po(fo(t,n))===e)){let e=fo(jn[0],0);e&&Me(String(e))}},[je,jn,pt,T]),(0,o.useEffect)(()=>{if(ue===void 0||!jn.length)return;let e=jn.find((e,t)=>po(fo(e,t))===po(ue));if(!e)return;let t=String(fo(e,jn.indexOf(e)));(ue!==rt.current||po(je)!==po(t))&&(rt.current=ue,Me(e=>po(e)===po(t)?e:t))},[je,jn,ue]);let Mn=e=>{let t=mn.map(e=>{let t={};return Object.entries(e).forEach(([e,n])=>{typeof n!=`function`&&(t[e]=n)}),t});_e(`/popup/preview`,{state:{background:G,moduleName:K,record:e,fields:t}})},Nn=(e,t,n={})=>{let r=Ca(e,t),i=r.startsWith(`/`)?r:`/${r}`,a=t?._id??t?.id;_e(i,{state:{background:G,selectedIds:a===void 0?[]:[a],selectedRecords:[t],moduleName:K,popupContext:n.popupState??{},popupAction:{key:n.key,apiMethod:n.apiMethod,apiPath:n.apiPath,defaultTemplateId:n.defaultTemplateId,requireJobId:n.requireJobId,popupKey:n.popupKey,actionType:n.actionType??n.type,popupFieldOverrides:n.popupFieldOverrides},requireJobId:n.requireJobId,...n.popupState}})},Pn=(0,o.useMemo)(()=>{let e={dataIndex:`icons`,key:`icons`,visibilityKey:`jobsGroup`,fixed:`left`,width:25,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,className:`job-row-icons`,children:[(0,l.jsx)(`button`,{type:`button`,className:`job-row-eye-button`,"aria-label":`Preview job`,onClick:()=>Mn(t),children:(0,l.jsx)(`img`,{src:Xi,alt:``,className:`job-row-eye-icon`})}),t.hasLinkedIn&&(0,l.jsx)(s.Tooltip,{title:`LinkedIn`,children:(0,l.jsx)(c.LinkedinFilled,{className:`job-row-linkedin-icon`})})]})},t=mn.filter(e=>vn.includes(e.key)).map((e,t)=>{let n=Ke.sort===e.key?Ke.sortDir:``;return{title:No({label:e.label,sortDir:n,sortable:Dn,onSort:()=>en(e.key)}),dataIndex:e.key,key:e.key,fixed:t===0?`left`:void 0,ellipsis:{showTitle:!1},width:lo(e,Cn),render:(t,n)=>to(e,n,Fe,Nn,{canAdd:we,canEdit:Te,canDelete:Ee},Vt,an)}});if(!(bn||Nt)&&tt>0&&t.length>0){let n=e.width+(Dn&&ce===`checkbox`?48:0)+co,r=t.reduce((e,t)=>e+t.width,0),i=tt-n-r;i>0&&r>0&&t.forEach(e=>{e.width=Math.floor(e.width+i*(e.width/r))})}return[e,...t]},[je,we,Ee,Te,Fe,Vt,en,bn,Dn,Nt,G,e,_e,mn,Cn,ce,Ke.sort,Ke.sortDir,tt,Wt,vn]),Fn=(0,o.useCallback)(e=>{let t=jn.find((t,n)=>po(fo(t,n))===po(e)),n=String(t?fo(t,jn.indexOf(t)):e);if(Me(n),J([]),X([]),Xt(),typeof de==`function`){let e=t?.key??t?.value??t?.id??n;rt.current=e,de(e)}},[de,jn,Xt]);function Ln(e,n,r){let i=Ut.get(String(e));if(i&&i.actionType!==`group`){if(typeof h==`function`&&h({key:i.key,label:i.label,selectedIds:n,selectedRecords:r}),typeof i.onClick==`function`){i.onClick({action:i,selectedIds:n,selectedRecords:r});return}if(i.actionType===`copy`){let e=r.map(e=>ra(e,i.copyField||`id`)??e?._id).filter(e=>e!=null);navigator.clipboard.writeText(e.join(`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./authApi-B362jHOs.cjs"),n=require("./Breadcrumb-Bt428IJg.cjs"),r=require("./diceCandidateMapper-BjMhHno3.cjs"),i=require("./formGroupsCache-Bbz-28ws.cjs"),a=require("./addFormApi-D7d0MQiG.cjs");let o=require("react");o=e.n(o,1);let s=require("antd"),c=require("@ant-design/icons"),l=require("react/jsx-runtime"),u=require("dayjs");u=e.n(u,1);let d=require("react-router-dom"),f=require("prop-types");f=e.n(f,1);async function p(e,{method:n=`POST`,params:r={},body:i={}}={}){let a={"Content-Type":`application/json`,Authorization:`Bearer ${await t.a()}`},o=new URLSearchParams({moduleName:e});Object.entries(r).forEach(([e,t])=>{t!=null&&t!==``&&o.append(e,String(t))});let s={method:n,headers:a};(n===`POST`||n===`PUT`)&&(s.body=JSON.stringify(i??{}));let c=await fetch(`${t.x}/dashboard/cards?${o.toString()}`,s);if(!c.ok)throw Error(`API ${c.status}: ${c.statusText}`);return c.json()}async function m(e={}){let n=await t.a(),r=await fetch(`${t.x}/dynamic-common-count`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`},body:JSON.stringify(e)});if(!r.ok)throw Error(`API ${r.status}: ${r.statusText}`);return r.json()}async function h(e={}){let n=await t.a(),r=await fetch(`${t.x}/dashboard-calendar`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`},body:JSON.stringify(e)});if(!r.ok)throw Error(`API ${r.status}: ${r.statusText}`);return r.json()}async function g(){return t.t(t.x,`/users/hierarchy-tree`)}var{Title:_,Text:v}=s.Typography,y=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],b=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],x=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],S={green:`#22c55e`,red:`#ef4444`,orange:`#f97316`,blue:`#3b82f6`};function C(e){return S[e]||e||`#586888`}function w(e){return String(e).padStart(2,`0`)}function T(e,t,n=`Sun`){let r=new Date(e,t,1).getDay(),i=n===`Mon`?r===0?6:r-1:r,a=new Date(e,t+1,0).getDate(),o=[];for(let e=0;e<i;e++)o.push({day:null,cur:!1});for(let e=1;e<=a;e++)o.push({day:e,cur:!0});for(;o.length%7!=0;)o.push({day:null,cur:!1});return o}function E(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function D(e){if(!e)return{text:``,author:null};let t=e.match(/\n\s*-\s*([^\n]+)\s*$/);return t?{text:e.slice(0,t.index).trim(),author:t[1].trim()}:{text:e.trim(),author:null}}function O(e=[]){let t={};return e.forEach(e=>{t[e.date]=(e.events||[]).map(e=>{let{text:t,author:n}=D(e.description);return{color:e.color,label:e.label,title:e.title,text:t,author:n}})}),t}function k({events:e}){return(0,l.jsx)(`div`,{style:{maxWidth:280,maxHeight:260,overflowY:`auto`},children:e.map((t,n)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8,padding:`6px 0`,borderBottom:n<e.length-1?`1px solid #f0f0f0`:`none`},children:[(0,l.jsx)(`span`,{className:`calendar-dot`,style:{background:C(t.color),marginTop:6,flexShrink:0}}),(0,l.jsxs)(`div`,{style:{minWidth:0},children:[(0,l.jsx)(v,{strong:!0,style:{fontSize:13,display:`block`},children:t.title||t.label}),t.text&&(0,l.jsx)(v,{style:{fontSize:12,color:`#555`,whiteSpace:`pre-line`,wordBreak:`break-word`},children:t.text}),t.author&&(0,l.jsxs)(v,{style:{fontSize:11,color:`#999`,display:`block`,marginTop:2},children:[`— `,t.author]})]})]},n))})}function A({userIds:e=[],days:t=void 0,startDay:n=`Sun`,renderDayContent:r=void 0,onDayClick:i=void 0,headerExtra:a=void 0,legend:u=void 0,readonly:d=!1,className:f=``,monthLabel:p=void 0,year:m=void 0,month:g=void 0,onPrevMonth:S=void 0,onNextMonth:D=void 0,prevDisabled:A=!1,nextDisabled:j=!1}){let M=t!==void 0||r!==void 0||i!==void 0,N=new Date,[P,F]=(0,o.useState)({year:N.getFullYear(),month:N.getMonth()}),I=m!=null&&g!=null?{year:Number(m),month:Number(g)-1}:P,[L,R]=(0,o.useState)({}),[z,B]=(0,o.useState)([]),[V,ee]=(0,o.useState)(!1),[te,ne]=(0,o.useState)(null),re=JSON.stringify(e),ie=n===`Mon`?b:y,H=(0,o.useCallback)(async()=>{ee(!0);try{let t=await h({userIds:e});t?.status&&t?.data?(B(t.data.legend||[]),R(O(t.data.days||[]))):(B([]),R({}))}catch(e){console.error(`CalendarCard fetch error:`,e)}finally{ee(!1)}},[re]);(0,o.useEffect)(()=>{M||H()},[M,H]),(0,o.useEffect)(()=>(window.addEventListener(`dashboard-calendar:refresh`,H),()=>window.removeEventListener(`dashboard-calendar:refresh`,H)),[H]);let ae=S??(()=>F(e=>e.month===0?{year:e.year-1,month:11}:{...e,month:e.month-1})),oe=D??(()=>F(e=>e.month===11?{year:e.year+1,month:0}:{...e,month:e.month+1})),se=E(T(I.year,I.month,n),7),ce={};t!==void 0&&(t||[]).forEach(e=>{e?.date&&(ce[e.date]=e)});let U=u??z,le=p??`${x[I.month]} ${I.year}`;return(0,l.jsx)(s.Card,{className:`calendar-card${f?` ${f}`:``}`,title:(0,l.jsxs)(`div`,{className:`calendar-header-title`,children:[(0,l.jsx)(c.CalendarOutlined,{}),(0,l.jsx)(_,{level:5,style:{margin:0},children:le}),a]}),extra:(0,l.jsxs)(`div`,{className:`calendar-nav`,style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,l.jsx)(s.Tooltip,{title:`Previous month`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.LeftOutlined,{}),size:`small`,onClick:ae,disabled:A})}),(0,l.jsx)(s.Tooltip,{title:`Next month`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.RightOutlined,{}),size:`small`,onClick:oe,disabled:j})})]}),children:(0,l.jsxs)(s.Spin,{spinning:V,children:[(0,l.jsx)(s.Row,{gutter:[6,0],className:`calendar-day-names`,children:ie.map(e=>(0,l.jsx)(s.Col,{flex:`1`,className:`calendar-day-name`,children:e},e))}),(0,l.jsx)(`div`,{className:`calendar-weeks`,children:se.map((e,t)=>(0,l.jsx)(s.Row,{gutter:[6,6],align:`top`,className:`calendar-week-row`,children:e.map((e,t)=>{if(!e.cur||e.day===null)return(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:`calendar-cell calendar-cell--filler`})},t);let n=`${I.year}-${w(I.month+1)}-${w(e.day)}`,a=e.day===N.getDate()&&I.month===N.getMonth()&&I.year===N.getFullYear();if(M){let o=ce[n]??null;return r?(0,l.jsx)(s.Col,{flex:`1`,children:r(n,o,{isToday:a,readonly:d})},t):(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:[`calendar-cell`,a?`today`:``,d?`calendar-cell--readonly`:``].filter(Boolean).join(` `),onClick:()=>!d&&i?.(n,o),style:{cursor:d?`default`:`pointer`},children:(0,l.jsx)(`div`,{className:`calendar-cell-inner`,children:(0,l.jsx)(v,{className:`calendar-cell-number`,children:e.day})})})},t)}let o=L[n]||[],c=[...new Set(o.map(e=>e.color))].slice(0,3);return(0,l.jsx)(s.Col,{flex:`1`,children:(0,l.jsx)(`div`,{className:`calendar-cell${a?` today`:``}`,children:(0,l.jsxs)(`div`,{className:`calendar-cell-inner`,children:[(0,l.jsx)(v,{className:`calendar-cell-number`,children:e.day}),o.length>0&&(0,l.jsx)(s.Popover,{open:te===n,trigger:`click`,content:(0,l.jsx)(k,{events:o}),placement:`topRight`,destroyTooltipOnHide:!0,onOpenChange:e=>ne(e?n:null),children:(0,l.jsx)(`div`,{className:`calendar-cell-dots`,children:c.map((e,t)=>(0,l.jsx)(`span`,{className:`calendar-dot`,style:{background:C(e)}},t))})})]})})},t)})},t))}),U.length>0&&(0,l.jsx)(`div`,{className:`calendar-legend`,children:U.map(({label:e,color:t,icon:n})=>(0,l.jsxs)(`div`,{className:`calendar-legend-item`,children:[n?(0,l.jsx)(`span`,{className:`calendar-legend-badge`,style:{background:C(t)},children:n}):(0,l.jsx)(`span`,{className:`calendar-legend-dot`,style:{background:C(t)}}),(0,l.jsx)(v,{children:e})]},e))})]})})}function j(e){return e!=null}function M(e){let t=String(e);return t.charAt(0).toUpperCase()+t.slice(1)}function N(e,t){if(!e||typeof e!=`object`)return null;let n=e.key??e.value??e.id??String(t),r=e.title??e.tabTitle??e.label??e.name,i=e.count??e.countValue;return!n||!r?null:{...e,key:String(n),label:(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(`span`,{children:M(r)}),j(i)&&(0,l.jsx)(s.Badge,{className:`dynamic-tabs-count`,count:i,showZero:!0,overflowCount:2**53-1})]})}}function P({tabs:e=[],activeKey:t,onChange:n,className:r,extra:i}){let a=e.map(N).filter(Boolean);if(!a.length)return null;let o=a.some(e=>e.key===t)?t:a[0].key;return(0,l.jsx)(s.Tabs,{activeKey:o,className:r,items:a,onChange:n,tabBarExtraContent:i})}function F(){return{tenantId:localStorage.getItem(`tenantId`)||``,businessId:localStorage.getItem(`businessId`)||``,businessUnitId:localStorage.getItem(`businessUnitId`)||``}}function I(){return Number(localStorage.getItem(`userId`))||0}var L=e=>e?.data??e,R=new Map;function z(e){return e?.recruiterId??e?.legacyUserId??e?.user_id??e?.userId??e?.USER_ID??e?.id??e?._id}function B(e){return!e||typeof e!=`object`?``:[e.first_name??e.firstName??e.FIRST_NAME,e.last_name??e.lastName??e.LAST_NAME].filter(Boolean).join(` `).trim()||e.recruiterName||e.name||e.user_name||e.userName||e.USER_NAME||e.email||``}async function V(e){let n=String(e??``).trim();return n?(R.has(n)||R.set(n,t.o(t.x,`/get-detailed-view?userId=${encodeURIComponent(n)}`).then(e=>B(e?.data??e??null)).catch(()=>``)),R.get(n)):``}var ee=null;function te(e){let t=new Map;return(Array.isArray(e)?e:[]).forEach(e=>{let n={name:B(e),role_name:e?.roleName??e?.role_name??``,reporting_name:e?.reportingName??e?.reporting_name??``};[e?.userId,e?.user_id,e?.legacyUserId,e?.id,e?._id].forEach(e=>{let r=String(e??``).trim();r&&t.set(r,n)})}),t}function ne(){return ee||=t.o(t.x,`/get-all-users?limit=500&offset=0`).then(e=>{let t=e?.data??e??{};return te(t.users??t??[])}).catch(()=>new Map),ee}async function re(e){let t=z(e),n=(await ne()).get(String(t??``).trim())??{},r=n.name||await V(t)||B(e);return{...e,name:r,role_name:n.role_name||e?.role_name||e?.roleName||``,reporting_name:n.reporting_name||e?.reporting_name||e?.reportingName||``}}async function ie(e,n,r){return L(await t.o(t.x,`/module-data-update`,{method:`PUT`,body:JSON.stringify({module:e,ids:n,updates:{status:r}})}))}async function H(e,n){let r=Array.isArray(n)?n:[n],i=await Promise.all(r.filter(Boolean).map(n=>t.o(t.x,`/module/delete/${encodeURIComponent(n)}?module=${encodeURIComponent(e)}`,{method:`DELETE`})));return i[i.length-1]??{}}async function ae(e){return L(await t.o(t.T,`/joblist`,{method:`POST`,body:JSON.stringify({...F(),searchQuery:e,userId:I()})}))}async function oe(e=``){let n=e?`?search=${encodeURIComponent(e)}`:``;return t.t(t.T,`/users/any${n}`)}async function se({relatedIds:e,module:n,title:r,targetDate:i,notes:a}){return t.o(t.T,`/notes`,{method:`POST`,body:JSON.stringify({schemaVersion:1,...F(),title:r,notes:a,notesFor:n||`general`,notesRelatedId:Array.isArray(e)&&e.length?e:null,reminder:i?{type:`single`,time:i,interval:``}:null,targetDate:i||null})})}async function ce(e,{title:n,targetDate:r,notes:i}){return t.o(t.T,`/notes/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({title:n,notes:i,reminder:r?{type:`single`,time:r,interval:``}:null,targetDate:r||null})})}async function U(e){return t.o(t.T,`/notes/${encodeURIComponent(e)}/resolve`,{method:`PUT`})}async function le({jobId:e,candidateIds:n,hiringStage:r}){return t.o(t.T,`/source/hiringStgUpdate`,{method:`PUT`,body:JSON.stringify({...F(),multiJobId:Array.isArray(e)?e:[e],applicantId:Array.isArray(n)?n:[n],updateStatus:String(r??``).toLowerCase(),updateStatusType:`call`,responseType:`responded`,hiriringStatusChangeType:`tagToJobs`,comments:``,userId:I()})})}async function ue(){return L(await t.o(t.x,`/masters/dropdown?masterName=candidateGroups&offset=0&limit=50`))}async function de({candidateIds:e,groupId:n,groupName:r}){return L(await t.o(t.S,`/actions/update-group`,{method:`PUT`,body:JSON.stringify({candidateIds:e,groupId:n,groupName:r})}))}async function fe({jobIds:e,rate:n,priority:r}){return t.o(t.T,`/assign?type=self`,{method:`PUT`,body:JSON.stringify({multiJobId:Array.isArray(e)?e:[e],userId:I(),schemaVersion:1,...F(),priority:r==null?`false`:String(r),priorityFrom:null,recruitersData:[]})})}async function pe(e){if(!e)return{assignedUsers:[],totalSubmissions:0,targetSubmissions:0,message:``};let n=await t.o(t.T,`/self-assign?jobId=${encodeURIComponent(e)}`),r=n?.data,i=n?.message??``;return Array.isArray(r)?{assignedUsers:await Promise.all(r.map(re)),totalSubmissions:0,targetSubmissions:0,message:i}:!r||typeof r!=`object`?{assignedUsers:[],totalSubmissions:0,targetSubmissions:0,message:i}:{assignedUsers:await Promise.all((Array.isArray(r.assignedUsers)?r.assignedUsers:[]).map(re)),totalSubmissions:r.totalSubmissions??0,targetSubmissions:r.targetSubmissions??0,message:i}}function W(e){let t=e?.user_id??e?.userId??e?.USER_ID??e?.legacyUserId??e?.id??e?._id,n=t==null?``:String(t).trim();if(!n)return null;let r=[e?.first_name??e?.firstName,e?.last_name??e?.lastName].filter(Boolean).join(` `).trim(),i=e?.name||e?.user_name||e?.userName||e?.USER_NAME||r||e?.email||n;return{...e,label:String(i),value:n}}async function me(){let e=await t.t(t.T,`/users/manager`);return(Array.isArray(e)?e:e?[e]:[]).map(W).filter(Boolean)}async function he(e){if(!e)return{recruitersData:[]};let n=await t.t(t.T,`/pay-details/${encodeURIComponent(e)}`),r=n&&typeof n==`object`&&Array.isArray(n.recruiters)?n.recruiters:[],i=(await Promise.all(r.map(async e=>{let t=e?.recruiterId??e?.user_id??e?.userId??e?.id;if(t==null||t===``)return null;let n=await re({...e,recruiterId:t});return{recruiterId:t,id:t,user_id:t,name:n.name,role_name:n.role_name??n.roleName??``,reporting_name:n.reporting_name??n.reportingName??``}}))).filter(Boolean);return{...n&&typeof n==`object`?n:{},recruitersData:i}}function ge(e){let t=typeof e==`object`?e?.recruiterId??e?.user_id??e?.userId??e?.id:e,n=Number(t);return Number.isInteger(n)&&n>0?n:null}function _e({jobIds:e,userId:t,rate:n,priority:r,removedIds:i,existingRecruiters:a}){let o=new Set((i??[]).map(String)),s=(a??[]).map(ge).filter(e=>e!==null&&!o.has(String(e))),c=(Array.isArray(t)?t:[t]).map(ge).filter(e=>e!==null);if(c.length===0)throw Error(`A valid user must be selected before assigning the job`);let l=Array.from(new Set([...s,...c]));return{multiJobId:Array.isArray(e)?e:[e],userId:c[0],schemaVersion:1,...F(),priority:String(r??!1),priorityFrom:``,recruitersData:l}}async function G(e,n){let r=new Set((n??[]).map(String));r.size&&await Promise.all((e??[]).map(async e=>{let n=await t.o(t.x,`/module/list?module=jobs&id=${encodeURIComponent(e)}`),i=n?.data?.data??n?.data??n,a=Array.isArray(i)?i[0]:i,o=Array.isArray(a?.recruiters)?a.recruiters:[],s=o.filter(e=>!r.has(String(ge(e)??``)));s.length!==o.length&&await t.o(t.x,`/module/update/${encodeURIComponent(e)}?module=jobs`,{method:`PATCH`,body:JSON.stringify({recruiters:s})})}))}async function K(e){let n=Array.isArray(e?.jobIds)?e.jobIds:[e?.jobIds].filter(Boolean),r=e?.removedIds??[],i=(Array.isArray(e?.userId)?e.userId:[e?.userId]).map(ge).filter(e=>e!==null),a;return i.length>0&&(a=await t.o(t.T,`/assign?type=other`,{method:`PUT`,body:JSON.stringify(_e(e))})),await G(n,r),a}async function ve({submissionId:e,isMail:n=!1}){return L(await t.o(t.x,`/submissions/move-to-onboarding`,{method:`POST`,body:JSON.stringify({submissionId:e,isMail:!!n})}))}async function ye(e,n){return L(await t.o(t.x,`/submissions/approve`,{method:`POST`,body:JSON.stringify({submissionId:e,...n})}))}async function be(e){return L(await t.o(t.x,`/submissions/vms-approve?submissionId=${encodeURIComponent(e)}`))}async function xe(e,{submissionId:n=``,billRate:r,payRate:i,currency:a=`$`,rateUnit:o=`hr`,referralId:s,referralRate:c,referralType:l,referralEnabled:u,vmsPercent:d=0,documentIds:f=[],remarks:p=null}={}){let m=e?`/workforce-engagements/${encodeURIComponent(e)}/cfo-approval/send`:`/submissions/${encodeURIComponent(n)}/cfo-approval/send`;if(!e&&!n)throw Error(`Submission is required to send for approval.`);let h=typeof window<`u`?window.location.origin:``,g=e||n;return L(await t.o(t.D,m,{method:`POST`,body:JSON.stringify({proposedRate:{candidateProposedRate:Number(r)||0,candidateProposedRateCurrency:a,candidateProposedRateCurrencySymbol:``,candidateProposedRateUnit:o},candidateRate:{candidateAcceptedRate:Number(i)||0,candidateAcceptedCurrency:a,candidateAcceptedCurrencySymbol:``,candidateAcceptedPayUnit:o,candidateAcceptedRateNegotiable:!1},...s!=null&&s!==``?{referralId:s}:{},...c==null?{}:{referralRate:Number(c)||0},...l!=null&&l!==``?{referralType:l}:{},...u==null?{}:{referralEnabled:!!u},vmsPercent:Number(d)||0,documentIds:f,remarks:p,approvalUrl:`${h}/cfo-approval/${encodeURIComponent(g)}`})}))}async function Se({submissionId:e,rejectReasonId:n,rejectReason:r,rejectReasonComments:i}){return L(await t.o(t.x,`/submissions/reject`,{method:`POST`,body:JSON.stringify({submissionId:e,rejectReasonId:n,rejectReason:r,rejectReasonComments:i})}))}async function Ce({jobId:e,applicantId:n}){let r=new URLSearchParams({jobId:String(e??``),applicantId:String(n??``)});return L(await t.o(t.x,`/submissions/exists?${r.toString()}`))??{exists:!1}}async function we({searchQuery:e,candidateId:n}){let r=L(await t.o(t.x,`/quick-submit/job-search`,{method:`POST`,body:JSON.stringify({searchQuery:e??``,candidateId:n?String(n):``})}));return Array.isArray(r)?r:[]}async function Te({search:e,jobId:n}){let r=L(await t.o(t.x,`/quick-submit/candidate-search`,{method:`POST`,body:JSON.stringify({search:e??``,jobId:n?String(n):``})}));return Array.isArray(r)?r:[]}async function Ee({jobId:e,applicantId:n,jobIds:r,applicantIds:i}){let a=!!e,o={};if(e&&(o.jobId=String(e)),n&&(o.applicantId=String(n)),Array.isArray(r)&&(o.jobIds=r.filter(Boolean).map(String)),Array.isArray(i)&&(o.applicantIds=i.filter(Boolean).map(String)),!(a?o.applicantIds:o.jobIds)?.length)return new Map;let s=L(await t.o(t.x,`/submissions/exists-bulk`,{method:`POST`,body:JSON.stringify(o)}))?.pairs??[];return new Map(s.map(e=>[String(a?e.applicantId:e.jobId),{submissionId:e.submissionId??``,submittedAt:e.submittedAt??null}]))}async function De({jobId:e,candidateIds:n}){return t.o(t.T,`/source/hiringStgUpdate`,{method:`PUT`,body:JSON.stringify({...F(),multiJobId:Array.isArray(e)?e:[e],applicantId:Array.isArray(n)?n:[n],updateStatus:`pipeline`,updateStatusType:`call`,responseType:`responded`,hiriringStatusChangeType:`tagToJobs`,comments:``,userId:I()})})}var Oe={jobsCount:[`total`,`Total Jobs`,`active`,`Active Jobs`,`myAssignedCount`,`My Jobs`],submissionCount:[`Selected`,`Submitted to client`,`Submitted to Client`,`Not Submitted`,`Approved`]};function ke(e){return Oe[e]??null}var Ae={stickyNotes:{title:`Sticky Notes`,variant:`sticky`,request:{method:`GET`,params:{limit:20,offset:0}},listPath:`data.data`,maxCount:4,viewAllUrl:`/viewall-sticky`,refreshEvent:`sticky-notes:refresh`,pillKey:`status`,headingKey:`title`,bodyKey:`notes`,bodyLines:3,footerLeftKey:`createdByName`,footerRightKey:`createdAt`,dateKey:`reminder.time`,colorBy:`status`,colorMap:{Note:`green`,Tagged:`red`},color:`auto`},jobsCount:{variant:`counts`,dynamicCommonCount:{module:`jobs`,keys:[`jobRecruitmentStatus`,`jobStatus`]},listPath:``,layout:`4x2`,groupSeparator:``,labelMap:{total:`Total Jobs`,active:`Active Jobs`,myAssignedCount:`My Jobs`},color:`#f1f3f8`,show:ke(`jobsCount`),hide:[`inactive`,`submitted`,`noSubmissions`]},submissionCount:{title:`Total Client Submission`,tooltipText:`Includes all submissions that are pending and submitted to the client.`,variant:`submission`,dynamicCommonCount:{module:`submissions`,keys:[`clientSubmissionStatus.clientSubmissionStatusText`]},listPath:``,totalKey:`total`,labelMap:{Selected:`Selected`,"Submitted to client":`Submitted to Client`,"Not Submitted":`Not Submitted`,Approved:`Approved`},colorMap:{Selected:`rgb(234, 175, 12)`,"Submitted to client":`green`,"Not Submitted":`red`,Approved:`#1d4ed8`},show:ke(`submissionCount`)},leadAptitude:{title:`Aptitude Test Results`,variant:`assessment`,request:{method:`GET`,params:{}},listPath:`data`,totalKey:`totalScore`,maxKey:`maximumScore`,statusKey:`status`,attemptDateKey:`attemptDate`,timeTakenKey:`timeTaken`,rankKey:`rank`,labelMap:{logicalReasoning:`Logical Reasoning`,quantitativeAptitude:`Quantitative Aptitude`,verbalAbility:`Verbal Ability`},colorMap:{logicalReasoning:`#7c3aed`,quantitativeAptitude:`#0891b2`,verbalAbility:`#16a34a`},hide:[`status`,`attemptDate`,`timeTaken`,`rank`,`maximumScore`]},onboardingCount:{variant:`counts`,dynamicCommonCount:{module:`onboarding`,keys:[`onboardingObStage`]},listPath:``,frame:!0,frameTitle:`Onboarding`,frameClassName:`onboarding-card`,viewAll:!0,footer:!0,columns:4,valueMap:{inProgress:`Under Review`,hired:`Onboarded`,projectCompleted:`Project cycle closed`,archive:`No longer active`},labelMap:{inProgress:`In Progress`,hired:`Hired`,projectCompleted:`Project Completed`,archive:`Archive`},aggregateMap:{inProgress:[`inProgress`,`In Progress`],hired:[`hired`,`Hired`,`Active`],projectCompleted:[`projectCompleted`,`Project Completed`,`Completed`],archive:[`archive`,`Archive`,`Not Hired`,`Candidate Backout`]},show:ke(`onboardingCount`),hide:[`total`,`totalGrossMargin`,`totalNetMargin`]},timesheetMonthlySummary:{variant:`metrics`,title:`Monthly Summary`,valueSuffix:` hrs`,rows:[{key:`unapprovedPayableHours`,label:`Unapproved Payable hours`,sublabel:`(S + O)`},{key:`nonPayableHours`,label:`Non-payable hours`,sublabel:`(Leave/Holidays)`},{key:`approvedPayableHours`,label:`Approved Payable hours`,valueColor:`#15803d`}]},timesheetWeeklyTotals:{variant:`metrics`,title:`Weekly Totals (S + O)`,plainHeader:!0,valueSuffix:` hrs`,listRows:{itemValueKey:`weeklyTotals.payable`,itemLabel:(e,t)=>{let n=e.weekStart?(0,u.default)(e.weekStart).format(`MMM D`):``,r=e.weekEnd?(0,u.default)(e.weekEnd).format(`MMM D`):``,i=`Week ${e.weekNumber??t+1}`;return n&&r?`${i} (${n} - ${r})`:i}}},timesheetHourBreakdown:{variant:`bars`,valueSuffix:` hrs`,rows:[{key:`totalSTHours`,label:`Standard`,color:`#1d4ed8`,bg:`#D0E6FF`},{key:`totalOTHours`,label:`Overtime`,color:`#15803d`,bg:`#d9f7e3`},{key:`leaveHours`,label:`Leaves`,color:`#b45309`,bg:`#FFECBA`},{key:`holidayHours`,label:`Holidays`,color:`#6d28d9`,bg:`#ede9fe`,fallback:0}]},financeKpiRow:{variant:`kpi`}},je=[`blue`,`green`,`purple`,`peach`,`red`,`gray`],Me=[`purple`,`peach`,`green`],Ne=[`#1d4ed8`,`#ef4444`,`#16a34a`,`#9333ea`,`#f59e0b`,`#0891b2`],Pe={blue:`#1d4ed8`,green:`#16a34a`,purple:`#9333ea`,peach:`#f97316`,red:`#ef4444`,gray:`#6b7280`};function Fe(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.cardConfig)??{};return{...Ae,...e}}var Ie={timesheet:{currentLabel:`Standard`,currentColor:`blue`,pastLabel:`Supplementary`,pastColor:`gold`,thresholdMonths:0}};function Le(e){let t=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.periodBadgeConfig)??{};return{...Ie[e],...t[e]}}var Re=[10,25,50,100].map(e=>({value:e,label:String(e)}));function ze({current:e,pageSize:t,total:r,onChange:i,onPageSizeChange:a}){let o=Math.min((e-1)*t+1,r),c=Math.min(e*t,r);return(0,l.jsxs)(s.Flex,{align:`center`,justify:`space-between`,className:`custom-pagination`,style:{color:n.Dn.textSecondary},children:[(0,l.jsxs)(s.Space,{size:5,align:`center`,children:[(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`Show`}),(0,l.jsx)(s.Select,{value:t,size:`small`,style:{width:72},popupMatchSelectWidth:72,onChange:e=>{a(e),i(1)},options:Re}),(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`/ page`})]}),(0,l.jsxs)(s.Space,{size:16,align:`center`,children:[(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,children:`Showing ${o} - ${c} of ${r}`}),(0,l.jsx)(s.Pagination,{current:e,pageSize:t,total:r,showSizeChanger:!1,showQuickJumper:!1,showLessItems:!0,onChange:i})]})]})}var{Title:Be,Text:Ve}=s.Typography;function q(e,t){return Array.isArray(t)?t.map(t=>q(e,t)).filter(J).join(` `):typeof t==`string`&&t.includes(`.`)?t.split(`.`).reduce((e,t)=>e==null?e:e[t],e):e[t]}var J=e=>e!=null&&e!==``;function Y(e,t,n={}){return{...n,...e.styles?.[t]||{}}}function X(e){return J(e.title)?(0,l.jsx)(Be,{level:5,style:Y(e,`headerTitle`),children:e.title}):void 0}function He(e,t){return J(e.title)?t:void 0}function Ue(e){return[`blue`,`green`,`purple`,`peach`,`red`,`gray`].includes(rt(e))}function We(e,t){let n=t||``,r=Y(e,`card`);return J(n)?Ue(n)?{className:n,style:r}:{className:``,style:{...r,background:n,borderColor:e.styles?.card?.borderColor||n}}:{className:``,style:r}}function Ge(e,t){return t?t.split(`.`).reduce((e,t)=>e==null?e:e[t],e):e}function Ke(e){return String(e).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_-]+/g,` `).replace(/\s+/g,` `).trim().replace(/\b\w/g,e=>e.toUpperCase())}function qe(e){if(!J(e))return null;let t=new Date(e);return isNaN(t)||t.getFullYear()<=1?null:n.An(t,n.Bn().dateFormat)}function Je(e){let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function Ye(e){return String(e??``).replace(/(?:\s*\(\d+[\d,]*\))+\s*$/,``).trim()}function Xe(e,t){let n=[e?.data?.total,e?.data?.count,e?.data?.totalCount,e?.data?.pagination?.total,e?.data?.data?.total,e?.data?.data?.count,e?.data?.data?.totalCount,e?.total,e?.count,e?.totalCount,e?.pagination?.total],r=[e?.data?.todoCount,e?.data?.toDoCount,e?.data?.pendingCount,e?.data?.data?.todoCount,e?.data?.data?.toDoCount,e?.todoCount,e?.toDoCount,e?.pendingCount],i=[e?.data?.resolvedCount,e?.data?.data?.resolvedCount,e?.resolvedCount],a=r.map(Je).find(e=>e!==null),o=i.map(Je).find(e=>e!==null),s=n.map(Je).find(e=>e!==null),c=a!==null&&o!==null?a+o:null,l=Array.isArray(t)?t.length:null;return{totalCount:s??c??l,todoCount:a,resolvedCount:o}}function Ze(e,t){let n=RegExp(`^${t}\\d+$`);return Object.keys(e).filter(e=>e===t||n.test(e)).map(n=>({field:e[n],n:n===t?1:Number(n.slice(t.length))})).sort((e,t)=>t.n-e.n).map(e=>e.field)}function Qe(e){return Math.max(1,Math.floor(24/(e||4)))}function $e(e){if(typeof e!=`string`)return{};let t=e.toLowerCase().replace(/\s/g,``).match(/^(\d+)x(\d+)$/);if(!t)return{};let n=Number(t[1]);return{columns:n,maxCount:n*Number(t[2])}}function et(e,t){let n=$e(e.layout),r=e.columns??n.columns??t,i=e.maxCount??n.maxCount;return{columns:r,span:Qe(r),maxCount:i}}function tt(e,t){return t?e.slice(0,t):e}function nt(e,t){return e.color?e.color===`auto`?je[t%je.length]:e.color:``}var rt=e=>String(e??``).trim().toLowerCase(),it=e=>String(e??``).trim().toLowerCase().replace(/[\s._-]+/g,``);function at(e,t){let n=[],r=new Map;for(let i of e){let e=it(t(i)),a=r.get(e);if(a){typeof a.value==`number`&&typeof i.value==`number`&&(a.value+=i.value);continue}let o={...i};r.set(e,o),n.push(o)}return n}function ot(e,t){return(Array.isArray(t)?t:[t]).some(t=>J(t)&&it(t)===it(e))}function st(e,t){if(!e.colorMap)return null;let n=Object.keys(e.colorMap).find(e=>ot(e,t));return n?e.colorMap[n]:null}function ct(e,t,n){if(!e.labelMap)return n;let r=Object.keys(e.labelMap).find(e=>ot(e,t));return r?e.labelMap[r]:n}function lt(e,t){if(!e.valueMap)return null;let n=Object.keys(e.valueMap).find(e=>ot(e,t));return n?e.valueMap[n]:null}function ut(e,t){return!Array.isArray(e.show)||e.show.length===0||e.show.some(e=>ot(e,t))}function dt(e,t,n){return ut(e,t)?Array.isArray(e.hide)?e.hide.some(e=>typeof e==`number`?e===n:ot(e,t)):!1:!0}function ft(e,t){for(let n of Ze(e,`titleKey`)){let e=q(t,n);if(J(e))return e}return null}function pt(e){return!e||typeof e!=`object`||Array.isArray(e)?[]:Object.entries(e).filter(([,e])=>typeof e==`number`||typeof e==`string`&&e!==``&&!isNaN(e)).map(([e,t])=>({key:e,label:Ke(e),value:Number(t)}))}function mt(e,t){let n=e?.data??e,r=Array.isArray(n?.fields)?n.fields:null,i=t.dynamicCommonCount?.keys?.[0],a=r?[...r.find(e=>e.key===i)?[r.find(e=>e.key===i)]:[],...r.filter(e=>e.key!==i)]:[n];return a.some(e=>Array.isArray(e?.counts))?a.reduce((e,t)=>!t||!Array.isArray(t.counts)?e:(e.total=Math.max(Number(e.total)||0,Number(t.total)||0),t.counts.forEach(({key:t,count:n})=>{e[t]=Number(n)||0}),e),{total:0}):n}function ht(e,t){let n=pt(e),r=t.totalKey,i=r?q(e||{},r):void 0,a=r&&J(i)&&!isNaN(i),o=at(n.map((e,t)=>({...e,_i:t})).filter(e=>!(a&&ot(r,[e.key,e.label]))).filter(e=>!dt(t,[e.key,e.label],e._i)).map((e,n)=>{let r=st(t,[e.key,e.label]),i=r?Pe[rt(r)]||r:Ne[e._i%Ne.length];return{label:ct(t,[e.key,e.label],e.label),value:e.value,barColor:i,accentColor:n===0?`#f97316`:null,showInfo:n===0}}),e=>e.label);return{total:a?Number(i):o.reduce((e,t)=>e+t.value,0),rows:tt(o,et(t,1).maxCount)}}function gt({item:e,group:t,color:n}){let r=n=>Ze(t,n).map(t=>q(e,t)).filter(J),i=r(`titleKey`),a=r(`countKey`),o=r(`nameKey`),c=r(`valueKey`),u=We(t,n);return(0,l.jsxs)(s.Card,{className:`dyn-card-item ${u.className}`.trim(),style:u.style,children:[i.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-title`,style:Y(t,`cardTitle`),children:e},`t${n}`)),a.map((e,n)=>(0,l.jsx)(s.Statistic,{value:e,className:`dyn-card-stat`,styles:{content:Y(t,`cardValue`)}},`c${n}`)),o.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-name`,style:Y(t,`cardName`),children:e},`n${n}`)),c.length>0&&(0,l.jsx)(`div`,{className:`dyn-card-footer`,style:Y(t,`cardFooter`),children:c.map((e,n)=>(0,l.jsx)(Ve,{className:`dyn-card-sub`,style:Y(t,`cardSub`),children:e},`v${n}`))})]})}function _t({group:e}){let{span:t,maxCount:n}=et(e,4),r=tt((Array.isArray(e.list)?e.list:[]).map((t,n)=>({item:t,name:ft(e,t),_i:n})).filter(t=>!dt(e,t.name,t._i)),n);return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(Ve,{type:`secondary`,style:Y(e,`headerExtra`),children:[r.length,` cards`]})),children:(0,l.jsx)(s.Row,{gutter:[16,16],children:r.map(n=>{let r=st(e,n.name)||nt(e,n._i);return(0,l.jsx)(s.Col,{xs:24,sm:12,md:t>=12?12:t*2,lg:t,xl:t,children:(0,l.jsx)(gt,{item:n.item,group:e,color:r})},n._i)})})})}function vt({group:e,items:t}){let{span:n,maxCount:r}=et(e,4),i=tt(at(t.map((e,t)=>({...e,_i:t})).filter(t=>!dt(e,[t.key,t.label],t._i)),t=>ct(e,[t.key,t.label],t.label)),r);return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(Ve,{type:`secondary`,style:Y(e,`headerExtra`),children:[i.length,` cards`]})),children:(0,l.jsx)(s.Row,{gutter:[16,16],children:i.map(t=>{let r=We(e,st(e,[t.key,t.label])||nt(e,t._i));return(0,l.jsx)(s.Col,{xs:24,sm:12,md:n>=12?12:n*2,lg:n,xl:n,children:(0,l.jsxs)(s.Card,{className:`dyn-card-item ${r.className}`.trim(),style:r.style,children:[(0,l.jsx)(Ve,{className:`dyn-card-title`,style:Y(e,`cardTitle`),children:ct(e,[t.key,t.label],t.label)}),(0,l.jsx)(s.Statistic,{value:t.value,groupSeparator:e.groupSeparator??`,`,className:`dyn-card-stat`,styles:{content:Y(e,`cardValue`)}}),J(lt(e,[t.key,t.label]))&&(0,l.jsx)(Ve,{className:`dyn-card-sub`,style:Y(e,`cardSub`),children:lt(e,[t.key,t.label])})]})},t._i)})})})}function yt({group:e,data:t}){let{total:n,rows:r}=ht(t,e),i=e.tooltipText;return(0,l.jsxs)(s.Card,{className:`submission-card`,style:Y(e,`card`),children:[J(e.title)&&(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-header`,style:Y(e,`submissionHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(Ve,{className:`submission-title`,style:Y(e,`submissionTitle`),children:[e.title,` `,i&&(0,l.jsx)(s.Tooltip,{title:i,children:(0,l.jsx)(c.InfoCircleOutlined,{className:`submission-info-icon`,style:Y(e,`infoIcon`)})})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-total`,style:Y(e,`submissionTotal`),children:Number(n||0).toLocaleString()})})]}),(0,l.jsx)(`div`,{className:`submission-rows`,style:Y(e,`submissionRows`),children:r.map((t,r)=>(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-row-header`,style:Y(e,`submissionRowHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Row,{align:`middle`,gutter:6,children:(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-label`,style:Y(e,`submissionRowLabel`),children:t.label})})})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-value`,style:Y(e,`submissionRowValue`),children:t.value})})]}),(0,l.jsx)(`div`,{className:`submission-bar-track`,style:Y(e,`submissionBarTrack`),children:(0,l.jsx)(`div`,{className:`submission-bar-fill`,style:{width:`${t.value/(n||1)*100}%`,background:t.barColor}})})]},`${t.label}-${r}`))})]})}function bt(e){if(!J(e))return`-`;let t=new Date(e);return!Number.isNaN(t.getTime())&&/date|time/i.test(String(e))?n.jn(t):String(e)}function xt({group:e,data:t}){let n=e.totalKey??`totalScore`,r=e.maxKey??`maximumScore`,i=e.statusKey??`status`,a=e.attemptDateKey??`attemptDate`,o=e.timeTakenKey??`timeTaken`,c=e.rankKey??`rank`,u=Number(q(t||{},n)??0),d=Number(q(t||{},r)??100)||100,f=Math.max(0,Math.min(100,Math.round(u/d*100))),p=ht(t,{...e,totalKey:n,hide:[...Array.isArray(e.hide)?e.hide:[],r,i,a,o,c]}).rows,m=[{key:i,label:e.statusLabel??`Status`},{key:a,label:e.attemptDateLabel??`Attempt Date`},{key:o,label:e.timeTakenLabel??`Time Taken`},{key:c,label:e.rankLabel??`Rank`}].filter(e=>J(q(t||{},e.key)));return(0,l.jsxs)(s.Card,{className:`assessment-card`,style:Y(e,`card`),title:X(e),children:[(0,l.jsxs)(`div`,{className:`assessment-card__top`,children:[(0,l.jsx)(s.Progress,{type:`circle`,percent:f,format:()=>`${Number(u||0).toLocaleString()}/${d.toLocaleString()}`,strokeColor:e.scoreColor??`#6d4aff`,trailColor:e.trailColor??`#edf0f5`}),(0,l.jsx)(`dl`,{className:`assessment-card__meta`,children:m.map(e=>(0,l.jsxs)(`div`,{className:`assessment-card__meta-row`,children:[(0,l.jsx)(`dt`,{children:e.label}),(0,l.jsx)(`dd`,{children:bt(q(t||{},e.key))})]},e.key))})]}),(0,l.jsx)(`div`,{className:`submission-rows assessment-card__rows`,style:Y(e,`submissionRows`),children:p.map(t=>(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`submission-row-header`,style:Y(e,`submissionRowHeader`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-label`,style:Y(e,`submissionRowLabel`),children:t.label})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{className:`submission-row-value`,style:Y(e,`submissionRowValue`),children:t.value})})]}),(0,l.jsx)(`div`,{className:`submission-bar-track`,style:Y(e,`submissionBarTrack`),children:(0,l.jsx)(`div`,{className:`submission-bar-fill`,style:{width:`${Math.max(0,Math.min(100,Number(t.value)/d*100))}%`,background:t.barColor}})})]},t.label))})]})}function St(e,t={},n={}){let r=J(e)?e:t.fallback;if(!J(r))return`-`;let i=Number(r);if(!Number.isFinite(i))return String(r);let a=t.suffix??n.valueSuffix??``;return`${i.toFixed(1).replace(/\.0$/,``)}${a}`}function Ct({group:e,data:t}){let n=Array.isArray(t);return(0,l.jsxs)(s.Card,{className:`timesheet-summary-card`,size:`small`,children:[J(e.title)&&(e.plainHeader?(0,l.jsx)(Ve,{type:`secondary`,style:{fontSize:12,fontWeight:600},children:e.title}):(0,l.jsxs)(`div`,{className:`timesheet-summary-card__head`,children:[(0,l.jsx)(Be,{level:5,style:{margin:0},children:e.title}),e.headerExtra]})),!n&&(0,l.jsx)(`div`,{className:`timesheet-summary-card__metrics`,children:(e.rows??[]).map(n=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__metric-row`,children:[(0,l.jsxs)(Ve,{type:`secondary`,style:{fontSize:12},children:[n.label,` `,n.sublabel&&(0,l.jsx)(`span`,{style:{fontSize:11},children:n.sublabel})]}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:13,whiteSpace:`nowrap`,color:n.valueColor},children:St(q(t??{},n.key),n,e)})]},n.key))}),n&&t.length>0&&(0,l.jsx)(`div`,{className:`timesheet-summary-card__weekly`,children:t.map((t,n)=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__week-row`,children:[(0,l.jsx)(Ve,{type:`secondary`,style:{fontSize:12},children:e.listRows?.itemLabel?e.listRows.itemLabel(t,n):`Row ${n+1}`}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:12},children:St(q(t,e.listRows?.itemValueKey),e.listRows,e)})]},n))})]})}function wt({group:e,data:t}){return(0,l.jsxs)(s.Card,{className:`timesheet-summary-card`,size:`small`,children:[(J(e.title)||e.headerExtra)&&(0,l.jsxs)(`div`,{className:`timesheet-summary-card__head`,children:[J(e.title)&&(0,l.jsx)(Be,{level:5,style:{margin:0},children:e.title}),e.headerExtra]}),(0,l.jsx)(`div`,{className:`timesheet-summary-card__bars`,children:(e.rows??[]).map(n=>(0,l.jsxs)(`div`,{className:`timesheet-summary-card__bar`,style:{background:n.bg},children:[(0,l.jsx)(Ve,{style:{fontSize:12,color:n.color,fontWeight:500},children:n.label}),(0,l.jsx)(Ve,{strong:!0,style:{fontSize:13,color:n.color},children:St(q(t??{},n.key),n,e)})]},n.key))})]})}function Tt({group:e,data:t}){let n=Array.isArray(t)?t:[],r=`finance-kpi-row${e.compact?` finance-kpi-row--compact`:``}`;if(e.loading){let e=n.length||4;return(0,l.jsx)(`div`,{className:r,children:Array.from({length:e},(e,t)=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--skeleton`,children:[(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--label`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--value`})]},t))})}return(0,l.jsx)(`div`,{className:r,children:n.map(e=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--${e.tone??`neutral`}`,children:[e.icon?(0,l.jsx)(`span`,{className:`fin-kpi__icon`,children:e.icon}):null,(0,l.jsxs)(`span`,{className:`fin-kpi__body`,children:[(0,l.jsx)(`span`,{className:`finance-kpi__label`,children:e.label}),(0,l.jsx)(`strong`,{className:`finance-kpi__value`,children:e.value}),e.sub??e.hint?(0,l.jsx)(`span`,{className:`finance-kpi__hint`,children:e.sub??e.hint}):null]})]},e.key??e.label))})}function Et(e,t){return rt(q(t,e.pillKey||`status`))===`resolved`}function Dt(e,t){return J(e.dateKey?qe(q(t,e.dateKey)):null)}function Ot(e,t){let n=rt(q(t,e.pillKey||`status`));if(n===`tagged`||n===`tag user`||n===`tagged user`)return!0;let r=t?.receiver??t?.receivers??t?.receiverId??t?.receiverName??t?.taggedUser;if(Array.isArray(r))return r.length>0;if(r&&typeof r==`object`)return Object.keys(r).length>0;if(J(r))return!0;let i=`${q(t,e.headingKey||`title`)??``} ${q(t,e.bodyKey||`notes`)??``}`;return/(^|\s)@[^\s]+/.test(i)}function kt(e,t,n){return Et(e,t)?`gray`:Ot(e,t)?`blue`:Dt(e,t)?`peach`:st(e,e.colorBy?q(t,e.colorBy):null)||(e.color&&e.color!==`auto`?e.color:Me[n%Me.length])}function At(e,t){let{start:n,end:r}=e.dateRange||{};if(!n||!r)return!0;let i=q(t,e.footerRightKey||`createdAt`);if(!J(i))return!0;let a=new Date(i);return isNaN(a)?!0:a>=n&&a<=r}function jt(e,t,n){let r=t.dateKey?qe(q(e,t.dateKey)):null;return{type:kt(t,e,n),pill:t.pillKey?q(e,t.pillKey):null,heading:t.headingKey?q(e,t.headingKey):null,body:t.bodyKey?q(e,t.bodyKey):null,footerLeft:t.footerLeftKey?q(e,t.footerLeftKey):null,footerRight:t.footerRightKey?qe(q(e,t.footerRightKey)):null,dot:r?`#f97316`:null,date:r}}function Mt({text:e,lines:t,style:n}){let r=(0,o.useRef)(null),[i,a]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=r.current;if(!e)return;let t=0,n=()=>{t=requestAnimationFrame(()=>{let t=e.scrollHeight-e.clientHeight>1;a(e=>e===t?e:t)})};n();let i=new ResizeObserver(n);return i.observe(e),()=>{cancelAnimationFrame(t),i.disconnect()}},[e,t]);let c=`sticky-note-body${t?` clamp-${t}`:``}`;return(0,l.jsx)(s.Popover,{trigger:`hover`,placement:`topLeft`,classNames:{root:`sticky-note-popover`},content:i?(0,l.jsx)(`div`,{className:`sticky-note-popover-content`,children:e}):null,open:i?void 0:!1,children:(0,l.jsx)(`div`,{ref:r,className:c,style:n,children:e})})}function Nt({group:e}){let t=(0,d.useNavigate)(),n=(0,d.useLocation)(),r=()=>t(`/popup/sticky-notes`,{state:{background:n,selectedIds:[],selectedRecords:[],moduleName:`general`,popupContext:{}}}),i=e=>t(`/popup/sticky-notes`,{state:{background:n,selectedIds:[],selectedRecords:[],moduleName:`general`,popupContext:{editingNoteId:e._id??e.id,editingHeading:e.title,editingComments:e.notes,editingTargetDate:e.reminder?.time||void 0}}}),[a,u]=(0,o.useState)(new Set),f=async e=>{let t=e._id??e.id;u(e=>new Set(e).add(t));try{await U(t),s.message.success(`Note resolved`)}catch{s.message.error(`Failed to resolve note`),u(e=>{let n=new Set(e);return n.delete(t),n})}},{span:p,maxCount:m}=et(e,2),h=t=>e.colorBy?q(t,e.colorBy):e.headingKey?q(t,e.headingKey):null,g=(Array.isArray(e.list)?e.list:[]).filter(e=>!a.has(e._id??e.id)).map((e,t)=>({item:e,_i:t})).filter(({item:t,_i:n})=>!dt(e,h(t),n)).filter(({item:t})=>At(e,t)),[_,v]=(0,o.useState)(`todo`),y=g.filter(({item:t})=>!Et(e,t)),b=g.filter(({item:t})=>Et(e,t)),x=e.showTabs,S=x?_===`resolved`?b:y:g,[C,w]=(0,o.useState)(e.pageSize||12),[T,E]=(0,o.useState)(1);(0,o.useEffect)(()=>{E(1)},[_,e.dateRange]);let D=Math.max(1,Math.ceil(S.length/C));(0,o.useEffect)(()=>{E(e=>Math.min(e,D))},[D]);let O=x?S.slice((T-1)*C,T*C):tt(g,m);return(0,l.jsxs)(s.Card,{className:`sticky-card`,style:Y(e,`section`),title:X(e),extra:He(e,(0,l.jsxs)(`div`,{className:`sticky-card-actions`,children:[e.headerExtra,(0,l.jsx)(s.Tooltip,{title:`Add note`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.PlusOutlined,{}),size:`small`,onClick:r})}),J(e.viewAllUrl)&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:()=>t(e.viewAllUrl,{state:{moduleName:e.moduleName,title:e.title,request:e.request}}),children:`View all`})]})),children:[x&&(0,l.jsx)(P,{activeKey:_,onChange:v,tabs:[{key:`todo`,title:`To-do`,count:y.length},{key:`resolved`,title:`Resolved Notes`,count:b.length}]}),O.length===0?(0,l.jsx)(s.Empty,{description:`No notes found`}):(0,l.jsx)(`div`,{className:x?`sticky-notes-scroll`:void 0,children:(0,l.jsx)(s.Row,{gutter:[12,12],children:O.map(({item:t,_i:n})=>{let r=jt(t,e,n),a=We(e,r.type);return(0,l.jsx)(s.Col,{xs:24,sm:24,md:p>=12?12:p*2,lg:p,xl:p,children:(0,l.jsxs)(`div`,{className:`sticky-note ${a.className}`.trim(),style:a.style,children:[(0,l.jsxs)(s.Space,{size:4,className:`sticky-note-hover-actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>i(t)})}),(0,l.jsx)(s.Tooltip,{title:`Resolve`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),onClick:()=>f(t)})})]}),(0,l.jsxs)(s.Space,{size:8,align:`center`,className:`sticky-note-pill-row`,children:[J(r.pill)&&(0,l.jsxs)(s.Tag,{style:Y(e,`stickyPill`),children:[r.dot&&(0,l.jsx)(`span`,{className:`sticky-note-dot`,style:{background:r.dot}}),r.pill]}),r.date&&(0,l.jsx)(Ve,{className:`sticky-note-date`,style:Y(e,`stickyDate`),children:r.date})]}),J(r.heading)&&(0,l.jsx)(Ve,{strong:!0,className:`sticky-note-heading`,style:Y(e,`stickyHeading`),children:r.heading}),J(r.body)&&(0,l.jsx)(Mt,{text:r.body,lines:e.bodyLines,style:Y(e,`stickyBody`)}),(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,className:`sticky-note-footer`,style:Y(e,`stickyFooter`),children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{style:Y(e,`stickyFooterText`),children:r.footerLeft})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(Ve,{style:Y(e,`stickyFooterText`),children:r.footerRight})})]})]})},n)})})}),x&&S.length>0&&(0,l.jsx)(`div`,{className:`sticky-notes-pagination`,children:(0,l.jsx)(ze,{current:T,pageSize:C,total:S.length,onChange:E,onPageSizeChange:w})})]})}function Pt({group:e,children:t}){let n=e.frameClassName||`dyn-frame`,r=e.viewAll?(0,l.jsx)(`a`,{className:`dyn-frame-view-all`,children:typeof e.viewAll==`string`?e.viewAll:`View all`}):void 0;return(0,l.jsxs)(s.Card,{className:n,title:e.frameTitle,extra:r,children:[t,e.footer&&(0,l.jsx)(`div`,{className:`${n}-footer`})]})}function Ft({group:e,data:t}){let n=e.variant===`sticky`?Ye(e.title):e.title,r=e.variant===`sticky`&&J(e.totalCount)?`${n} (${Number(e.totalCount).toLocaleString()})`:n,i=r===e.title?e:{...e,title:r},a=i.frame?{...i,title:void 0}:i,o=a.variant===`sticky`?(0,l.jsx)(Nt,{group:{...a,list:Array.isArray(t)?t:[]}}):a.variant===`counts`?(0,l.jsx)(vt,{group:a,items:pt(t)}):a.variant===`submission`?(0,l.jsx)(yt,{group:a,data:t}):a.variant===`assessment`?(0,l.jsx)(xt,{group:a,data:t}):a.variant===`metrics`?(0,l.jsx)(Ct,{group:a,data:t}):a.variant===`bars`?(0,l.jsx)(wt,{group:a,data:t}):a.variant===`kpi`?(0,l.jsx)(Tt,{group:a,data:t}):(0,l.jsx)(_t,{group:{...a,list:Array.isArray(t)?t:[]}});return i.frame?(0,l.jsx)(Pt,{group:i,children:o}):o}function It({moduleName:e,title:t,maxCount:n,layout:r,columns:i,request:a,viewAll:c=!0,staticData:u,showTabs:d,dateRange:f,headerExtra:h,rows:g,loading:_}){let v=Fe()[e],y=a?JSON.stringify(a):``,b=g?JSON.stringify(g):``,x=(0,o.useMemo)(()=>{if(!v)return v;let o={title:t,maxCount:n,layout:r,columns:i,showTabs:d,dateRange:f,headerExtra:h,rows:g,loading:_},s={...v,moduleName:e};for(let e in o)J(o[e])&&(s[e]=o[e]);return a&&(s.request={...v.request,...a,params:{...v.request?.params,...a.params},body:{...v.request?.body,...a.body}}),c||(s.viewAllUrl=void 0),s},[v,t,n,r,i,y,c,d,f,h,b,_]),[S,C]=(0,o.useState)({moduleName:null,resp:null,error:null}),[w,T]=(0,o.useState)(0);(0,o.useEffect)(()=>{if(!x?.refreshEvent)return;let e=()=>T(e=>e+1);return window.addEventListener(x.refreshEvent,e),()=>window.removeEventListener(x.refreshEvent,e)},[x?.refreshEvent]),(0,o.useEffect)(()=>{if(!x)return;if(u!==void 0){let t=mt(u,x);C({moduleName:e,resp:t,error:null});return}if(x.dynamicCommonCount){let t=!0;return m(x.dynamicCommonCount).then(n=>{t&&C({moduleName:e,resp:mt(n,x),error:null})}).catch(n=>{t&&C({moduleName:e,resp:null,error:n})}),()=>{t=!1}}if(!x.request)return;let t=!0;return p(e,x.request).then(n=>{t&&C({moduleName:e,resp:n,error:null})}).catch(n=>{t&&C({moduleName:e,resp:null,error:n})}),()=>{t=!1}},[e,x,u,w]);let E=S.moduleName!==e,D=E?null:S.error,O=E?null:S.resp;if(!x)return(0,l.jsx)(s.Empty,{description:`Unknown dashboard module: ${e}`});if(E)return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(x,`section`),title:X(x),children:(0,l.jsx)(`div`,{style:{textAlign:`center`,padding:24},children:(0,l.jsx)(s.Spin,{})})});if(D)return(0,l.jsx)(s.Card,{className:`dyn-card-section`,style:Y(x,`section`),title:X(x),children:(0,l.jsx)(s.Empty,{description:`Failed to load: ${D.message}`})});let k=Ge(O,x.listPath),A=x.variant===`sticky`?Xe(O,k):null,j=x.variant===`sticky`?{...x,...A}:x;return(0,l.jsx)(Ft,{group:j,data:k})}function Lt({moduleName:e,title:t,layout:n,columns:r,maxCount:i,request:a,viewAll:o,staticData:c,showTabs:u,dateRange:d,headerExtra:f,rows:p,loading:m}){return e?(0,l.jsx)(`div`,{className:`dyn-cards`,children:(0,l.jsx)(It,{moduleName:e,title:t,layout:n,columns:r,maxCount:i,request:a,viewAll:o,staticData:c,showTabs:u,dateRange:d,headerExtra:f,rows:p,loading:m})}):(0,l.jsx)(s.Empty,{description:`DynamicCards: a moduleName prop is required`})}var{Text:Rt}=s.Typography;function zt(e){return(e??[]).map(e=>({key:e.userId,title:e.isSelf?`${e.name} (You)`:e.name,searchText:`${e.name} ${e.email??``}`.toLowerCase(),children:zt(e.children)}))}function Bt(e,t){let n=[];for(let r of e){let e=Bt(r.children??[],t);(r.searchText.includes(t)||e.length>0)&&n.push({...r,children:e})}return n}function Vt(e,t=[]){for(let n of e)t.push(n.key),Vt(n.children??[],t);return t}function Ht({value:e=[],onChange:t}){let[n,r]=(0,o.useState)(null),[i,a]=(0,o.useState)(!0),[u,d]=(0,o.useState)(null),[f,p]=(0,o.useState)(``),[m,h]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=!0;return g().then(t=>{e&&r(zt(t?.users))}).catch(t=>{e&&d(t)}).finally(()=>{e&&a(!1)}),()=>{e=!1}},[]);let _=f.trim().toLowerCase(),v=(0,o.useMemo)(()=>_&&n?Bt(n,_):n,[n,_]),y=_?{expandedKeys:Vt(v??[])}:{},b=(0,l.jsxs)(`div`,{style:{width:280},children:[(0,l.jsx)(s.Input.Search,{placeholder:`Search users`,allowClear:!0,value:f,onChange:e=>p(e.target.value),style:{marginBottom:8}}),i&&(0,l.jsx)(`div`,{style:{padding:24,textAlign:`center`},children:(0,l.jsx)(s.Spin,{size:`small`})}),u&&(0,l.jsx)(s.Empty,{description:`Could not load users`}),!i&&!u&&(v?.length?(0,l.jsx)(`div`,{style:{maxHeight:280,overflow:`auto`},children:(0,l.jsx)(s.Tree,{checkable:!0,selectable:!1,defaultExpandAll:!0,treeData:v,checkedKeys:e,onCheck:(e,n)=>t(n.checkedNodes.map(e=>e.key)),...y})}):(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No users`})),e.length>0&&(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginTop:8,paddingTop:8,borderTop:`1px solid #f0f0f0`},children:[(0,l.jsxs)(Rt,{type:`secondary`,children:[e.length,` selected`]}),(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:()=>t([]),children:`Clear`})]})]});return(0,l.jsx)(s.Popover,{content:b,trigger:`click`,placement:`bottomRight`,open:m,onOpenChange:h,children:(0,l.jsx)(s.Badge,{count:e.length,size:`small`,offset:[-4,4],children:(0,l.jsxs)(s.Button,{icon:(0,l.jsx)(c.FilterOutlined,{}),children:[`Filter by `,(0,l.jsx)(c.DownOutlined,{style:{fontSize:10}})]})})})}function Ut(e,t={}){let n=Array.isArray(e?.autoValueRules)?e.autoValueRules:[];for(let e of n){let n=Array.isArray(e?.whenRoleId)?e.whenRoleId.map(Number):[],r=Array.isArray(e?.whenUserId)?e.whenUserId.map(Number):[],i=t.roleId!==void 0&&n.includes(t.roleId),a=t.userId!==void 0&&r.includes(t.userId);if(i||a)return{matched:!0,value:e.value}}return{matched:!1,value:void 0}}function Wt(e){if(e==null||e===``)return``;let t=Number(e);if(!Number.isFinite(t)||t<0)return``;if(t===0)return`today`;if(t===1)return`yesterday`;if(t<30)return`${t} days ago`;if(t<60)return`about a month ago`;if(t<365)return`about ${Math.round(t/30)} months ago`;let n=Math.floor(t/365);return n===1?`over a year ago`:`over ${n} years ago`}function Gt(e,t){return(Array.isArray(t)&&t.length?t:Object.keys(e??{})).map(t=>e?.[t]).map(e=>e==null?``:String(e).trim()).filter(Boolean).join(` · `)}function Kt(e,t={}){return e?String(e).replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])):``}function qt(e,t){let n=Gt(e?.record,t),r=Wt(e?.updatedDaysAgo);return{name:n||`an existing record`,age:r||`previously`,days:Number.isFinite(Number(e?.updatedDaysAgo))?String(e.updatedDaysAgo):``,updatedOn:e?.updatedAt?String(e.updatedAt).slice(0,10):``,stage:e?.stage??``,weight:e?.weight??``}}function Jt(e,t={}){let n=qt(e,t.displayFields),r=(e?.policy??t.policy)===`block`;return Kt(e?.message||t.message||(r?`We already have {name} on file — last updated {age}. Please open that record and update it, rather than adding a second copy.`:`We already have {name} on file — last updated {age}. You can carry on and update that record with what you’ve just entered, or go back and check first.`),n)}function Yt(e,t={}){return e?.duplicate?(e.policy??t.policy??`prompt`)===`block`:!1}function Xt(e,t){let n=e?.record??{},r=(Array.isArray(t)&&t.length?t:Object.keys(n)).map(e=>({label:Zt(e),value:n[e]})).filter(e=>e.label&&e.value!==void 0&&e.value!==null&&String(e.value).trim()!==``),i=Wt(e?.updatedDaysAgo);return i&&r.push({label:`Last updated`,value:i}),r}function Zt(e){let t=String(e??``).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/[_\-.]+/g,` `).trim().toLowerCase();return t?t.charAt(0).toUpperCase()+t.slice(1):``}function Qt({form:e,moduleName:t,recordId:r,config:i={},onUseExisting:a}={}){let[s,c]=(0,o.useState)(!1),l=(0,o.useRef)(null),u=(0,o.useCallback)(async i=>{if(!t)return{duplicate:!1};c(!0);try{return await n.ht({module:t,payload:i??e.getFieldsValue(!0)??{},excludeId:r})}finally{c(!1)}},[e,t,r]);return{prompt:(0,o.useCallback)(async({reason:e,payload:t,carry:r}={})=>{let o=await u(t);if(!o?.duplicate)return l.current=null,`clear`;if(l.current&&l.current===o.id)return`existing`;let s=Jt(o,i),c=Xt(o,i.displayFields),d=o.weight===`weak`?`This might be someone you already have`:`You already have this person on file`;return Yt(o,i)?(await n.Ht({tone:`duplicate`,title:d,facts:c,body:s}),`blocked`):await n.Vt({tone:`duplicate`,title:d,facts:c,body:s,okText:`Open their record`,cancelText:`Let me check first`,footnote:r?.files?`We’ll take you to their record with the résumé you just uploaded already attached — save there to keep it. The one already on file is kept too, as an earlier version. Nothing on this form has been filled in.`:`Everything already on their record is kept. Nothing on this form has been filled in.`})?(l.current=o.id??!0,a?.(o.id,o,e,r),`existing`):`blocked`},[u,i,a]),check:u,checking:s,acknowledgedId:l}}var $t=[[`uploadname`,`uploadedfilename`,`originalname`,`filename`],[`uniquename`]],en=`copyuniquename`;function tn(e,t,{excludeSanitised:n=!1}={}){let r=String(e).toLowerCase();return n&&r.endsWith(en)?!1:t.some(e=>r.endsWith(e))}function nn(e){if(!e||typeof e!=`object`)return``;let t=e.uploadedFileName??e.name;if(typeof t==`string`&&t.trim())return t.trim();let n=Object.entries(e).filter(([,e])=>typeof e==`string`&&e.trim());for(let e of $t){let t=n.find(([t])=>tn(t,e,{excludeSanitised:!0}));if(t)return t[1].trim()}let r=n.find(([e])=>String(e).toLowerCase().endsWith(en));return r?r[1].trim():``}function rn(e){if(!e||typeof e!=`object`)return``;let t=e.location??e.url;if(typeof t==`string`&&t.trim())return t.trim();let n=Object.entries(e).find(([e,t])=>typeof t==`string`&&t.trim()&&String(e).toLowerCase().endsWith(`copylocation`));return n?n[1].trim():``}var an=`authToken`,on=`authUser`,sn=`authLoginSession`,cn=[`access_token`,`refresh_token`,`id_token`,`token_type`,`expires_in`,`refresh_expires_in`,`menu`,`footermenu`,`menuPermission`,`default_values`,`roleId`,`companyName`,`preferred_Username`,`user_Email`,`userName`,`userId`,`tenantId`,`businessId`,`businessUnitId`,`activeKey`,`ct_project_id`,`ct_project_name`],ln=`test-flows`,un=[{value:`module`,label:`Module`,isVisible:!0,type:`text`},{value:`flow`,label:`Flow`,isVisible:!0,type:`text`},{value:`step_order`,label:`Step Order`,isVisible:!0,type:`number`},{value:`keyword`,label:`Action`,isVisible:!0,type:`text`},{value:`description`,label:`Description`,isVisible:!0,type:`text`},{value:`target`,label:`Key`,isVisible:!0,type:`text`},{value:`tags`,label:`Tags`,isVisible:!0,type:`text`},{value:`value`,label:`Value`,isVisible:!0,type:`text`},{value:`expected`,label:`Expected`,isVisible:!0,type:`text`}],dn=`lms-flows`,fn=[{value:`module`,label:`Module`,isVisible:!0,type:`text`},{value:`flow`,label:`Flow`,isVisible:!0,type:`text`},{value:`step_order`,label:`Step Order`,isVisible:!0,type:`number`},{value:`keyword`,label:`Action`,isVisible:!0,type:`text`},{value:`description`,label:`Description`,isVisible:!0,type:`text`},{value:`target`,label:`Key`,isVisible:!0,type:`text`},{value:`tags`,label:`Tags`,isVisible:!0,type:`text`},{value:`value`,label:`Value`,isVisible:!0,type:`text`},{value:`expected`,label:`Expected`,isVisible:!0,type:`text`}],pn=null;function mn(e){return e?.token??e?.access_token??e?.accessToken??e?.jwt??e?.data?.token??e?.data?.access_token??e?.data?.accessToken??e?.data?.jwt}function hn(e){if(!e||typeof e!=`string`)return null;try{let t=e.split(`.`)[1];if(!t)return null;let n=t.replace(/-/g,`+`).replace(/_/g,`/`),r=atob(n.padEnd(Math.ceil(n.length/4)*4,`=`));return JSON.parse(r)}catch(e){return console.error(`Unable to decode login token:`,e),null}}function gn(){return localStorage.getItem(an)}async function _n({jobId:e,limit:n=10,offset:r=0,sortBy:i=`new`,type:a=`myVendor`}){return await On(t.T,`/vendor/hotlist`,{method:`POST`,body:JSON.stringify({jobId:e,limit:n,offset:r,sortBy:i,type:a})})}async function vn(e){let n=await On(t.S,`/get-bulkmail-details?jobId=${encodeURIComponent(e)}`);return n.data??n}async function yn(e,n=``){let r=String(e??``).trim();if(!r)return``;let i=await On(t.E,`/format-mail-content`,{method:`POST`,body:JSON.stringify({contents:r,subject:String(n??``)})});if(i?.status===!1)throw Error(i?.error||`Unable to format mail content`);return String(i?.html??i?.contents??i?.data?.html??i?.data?.contents??``).trim()}async function bn({jobId:e,toMail:n,ccMail:r,bccMail:i,subject:a,contents:o,attachments:s=[]}){let c=localStorage.getItem(`tenantId`)||`93c782a4aa626175e5d11afa`,l=localStorage.getItem(`businessId`)||`83c782a4aa626175e5d11afa`,u=localStorage.getItem(`businessUnitId`)||`63b57588fd768a839dbc0f63`,d=new FormData;d.append(`json`,JSON.stringify({schemaVersion:1,tenantId:c,businessId:l,businessUnitId:u,jobId:e,toMail:n,ccMail:r,bccMail:i,contents:o,subject:a})),(s??[]).forEach(e=>{e instanceof File&&d.append(`attachments`,e,e.name)});let{"Content-Type":f,...p}=await Dn(),m=await fetch(`${t.S}/send-bulkmail`,{method:`POST`,headers:p,body:d});if(m.status===401&&xn(),!m.ok)throw Error(`API ${m.status}: ${m.statusText}`);let h=await m.text();return h?JSON.parse(h):{}}function xn(){localStorage.removeItem(an),localStorage.removeItem(on),cn.forEach(e=>localStorage.removeItem(e)),sessionStorage.removeItem(sn),window.dispatchEvent(new Event(`auth:logout`))}function Sn(e=``){let t=String(e??``).trim();return t===`myJobs`||t===`allJobs`||t===`fulfilled`?t:``}function Cn(e){let t=String(n.Sn(e)??``).trim().toLowerCase();return t===`job`||t===`jobs`}function wn(e,t=30){let n=hn(e),r=Number(n?.exp);return!Number.isFinite(r)||r<=0?!1:r*1e3<=Date.now()+t*1e3}async function Tn(){if(pn)return pn;let e=String(localStorage.getItem(`refresh_token`)??``).trim();if(!e)throw Object.assign(Error(`Session expired`),{status:401});return pn=fetch(`${t.x}/generate-refresh-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({refresh_token:e})}).then(async e=>{let t=await e.text(),n={};if(t)try{n=JSON.parse(t)}catch{n={error:t}}if(!e.ok)throw Object.assign(Error(n?.error??n?.message??`Token refresh failed: ${e.status}`),{status:e.status});let r=mn(n);if(!r)throw Object.assign(Error(`Token refresh response did not contain an access token`),{status:401});return localStorage.setItem(an,r),localStorage.setItem(`access_token`,r),r}).finally(()=>{pn=null}),pn}async function En(){let e=gn();if(e&&!wn(e))return e;if(localStorage.getItem(`refresh_token`))try{return await Tn()}catch{}if(e)return e;let t=Error(`Authentication required`);throw t.status=401,t}async function Dn(){return{"Content-Type":`application/json`,Authorization:`Bearer ${await En()}`}}async function On(e,t,n={}){let r=async()=>{let r=await Dn();return fetch(`${e}${t}`,{...n,headers:{...r,...n.headers}})},i=await r();if(i.status===401&&localStorage.getItem(`refresh_token`))try{await Tn(),i=await r()}catch{}i.status===401&&xn();let a=await i.text(),o={};if(a)try{o=JSON.parse(a)}catch{o={error:a}}if(!i.ok){let e=Error(o?.error??o?.message??`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return o}async function kn(e,t){let n=await On(e,t);return n.data??n}async function An(e){return kn(t.D,e)}async function jn(e){return kn(t.x,e)}async function Mn(e){return e===ln?un:e===dn?fn:An(`/filter-dropdown-fields?module=${encodeURIComponent(n.Sn(e))}`)}async function Nn(e,{configType:t,userId:r,roleId:i}={}){if(e===ln)return un;if(e===dn)return fn;let a=new URLSearchParams({module:n.Sn(e)});return t&&a.set(`configType`,t),r!=null&&a.set(`userId`,String(r)),i!=null&&a.set(`roleId`,String(i)),jn(`/admin/field-config?${a}`)}async function Pn({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),jn(`/test-flows?${s.toString()}`)}async function Fn({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),jn(`/lms-flows?${s.toString()}`)}async function In(e,r=10,i=0,a={}){let{scope:o=``,sort:s=``,sortDir:c=``,search:l=``,filters:u=[],queryParams:d={}}=a;if(e===ln){let e=await Pn({limit:r,offset:i}),t=Array.isArray(e?.items)?e.items:[],n=Number(e?.total)||0;return{items:t,total:n,limit:r,offset:i,tabs:[{key:`all`,title:`Test Cases`,count:n}]}}if(e===dn){let e=await Fn({limit:r,offset:i}),t=Array.isArray(e?.items)?e.items:[],n=Number(e?.total)||0;return{items:t,total:n,limit:r,offset:i,tabs:[{key:`all`,title:`LMS Cases`,count:n}]}}let f=new URLSearchParams({module:n.Sn(e),limit:String(r),offset:String(i)}),p=Cn(e)?Sn(o):String(o??``).trim();p&&f.set(`scope`,p),s&&f.set(`sort`,s),c&&f.set(`sortDir`,c),String(l??``).trim()&&f.set(`search`,String(l).trim());let m=Hn(u.filter(e=>e?.field));m.length&&f.set(`filters`,JSON.stringify(m)),Object.entries(d??{}).forEach(([e,t])=>{t!=null&&String(t).trim()!==``&&f.set(e,String(t))});let h=await On(t.x,`/module-data-list?${f.toString()}`),g=Ln(h),_=g.some(e=>Bn(e)),v=g.some(e=>Vn(e));if(_||v)try{let{transformDiceResponseToInternalFormat:e}=await Promise.resolve().then(()=>require("./diceCandidateMapper-BjMhHno3.cjs")).then(e=>e.t),t=e(h,h),n=t?.data?.data??[];return{items:n,total:zn(h,p)||zn(t,p)||n.length,limit:r,offset:i,tabs:t?.data?.tabs??h?.tabs??h?.data?.tabs??[],fields:t?.data?.fields??h?.fields??h?.data?.fields??[],tabField:t?.data?.tabField??h?.tabField??h?.data?.tabField??``,actionRules:t?.data?.actionRules??h?.data?.actionRules??[],actions:t?.data?.actions??h?.data?.actions??[],columnActions:t?.data?.columnActions??h?.data?.columnActions??[]}}catch(e){console.error(`[getModuleDataList] Dice transformation failed:`,e)}return h}function Ln(e){let t=e?.data??e,n=Array.isArray(t)?t:t?.rows??t?.records??t?.items??t?.list??t?.data??e?.items??e?.records??[];return Array.isArray(n)?n:[]}function Rn(...e){for(let t of e){let e=Number(t);if(Number.isFinite(e))return e}}function zn(e,t=``){let n=e?.data??e,r=Ln(e),i=e?.count,a=n?.count,o=String(t??``).trim().toLowerCase();if(i&&typeof i==`object`){let e=Rn(o?i[o]:void 0,i.total,i.searchCount,i.count);if(e!==void 0)return e}if(a&&typeof a==`object`){let e=Rn(o?a[o]:void 0,a.total,a.searchCount,a.count);if(e!==void 0)return e}return Rn(e?.total,typeof i==`object`?void 0:i,e?.totalCount,n?.total,typeof a==`object`?void 0:a,n?.totalCount,r.length)??0}function Bn(e){let t=e?.skills??e?.technicalSkills??e?.primarySkills;return!Array.isArray(t)||t.length===0?!1:t.some(e=>e&&typeof e==`object`&&(`skill`in e||`lastUsed`in e))}function Vn(e){return[e?.sourceType,e?.profileSource,e?.selectedSource,e?.customFields?.sourceType,e?.customFields?.profileSource].flat().some(e=>String(e??``).trim().toLowerCase()===`dice`)||!!e?.customFields?.diceProfileData}function Hn(e){let t=[];for(let n of e){if(!n.field)continue;let e=n.operator===`or`?`or`:`and`;if(n.operator===`isEmpty`){t.push({field:n.field,op:`isEmpty`,operator:`and`});continue}if(n.operator===`notEmpty`){t.push({field:n.field,op:`notEmpty`,operator:`and`});continue}if(n.filterInputType===`text`){let r=typeof n.value==`string`?n.value.trim():``;r&&t.push({field:n.field,op:`contains`,value:r,operator:e});continue}if(n.from||n.to){n.from&&t.push({field:n.field,op:`gte`,value:String(n.from),operator:e}),n.to&&t.push({field:n.field,op:`lte`,value:String(n.to),operator:`and`});continue}Array.isArray(n.values)&&n.values.length>0&&t.push({field:n.field,op:`in`,values:n.values.map(String),operator:e,...Array.isArray(n.groupFields)&&n.groupFields.length>1?{groupFields:n.groupFields}:{}})}return t}async function Un(e,t,r=``,i={}){let{limit:a=50,offset:o=0,dataSource:s,groupName:c,lookup:l,groupFields:u=[],groupSeparator:d=` `}=i,f=new URLSearchParams({module:n.Sn(e),field:t,value:r,limit:String(a),offset:String(o)});return s&&f.set(`dataSource`,s),Array.isArray(u)&&u.length>1&&(f.set(`groupFields`,u.join(`,`)),f.set(`groupSeparator`,d??` `)),s===`group`&&c&&f.set(`groupName`,c),s===`lookup`&&l?.collection&&(f.set(`lookupCollection`,l.collection),l.displayField&&f.set(`lookupField`,l.displayField)),An(`/filter-dropdown-values?${f}`)}function Wn(e){let t=e?.data??e,n=Array.isArray(t)?t:Array.isArray(t?.groups)?t.groups:Array.isArray(e?.groups)?e.groups:[],r=t?.recordMeta??e?.recordMeta;return r&&typeof r==`object`&&(n.recordMeta=r),n}async function Gn({module:e,id:n,view:r}={}){if(!e)throw Error(`module is required to fetch form groups`);let a=await Dn(),o=new URLSearchParams({module:e});n&&o.set(`id`,String(n)),r&&o.set(`view`,String(r));let s=`${t.x}/admin/form-groups?${o.toString()}`;return Wn(await i.t(s,async()=>{let e=await fetch(s,{method:`GET`,headers:a});if(!e.ok)throw Error(`API ${e.status}: ${e.statusText}`);return e.json()}))}async function Kn({searchQuery:e,candidateId:n}){let r=localStorage.getItem(`tenantId`)||`93c782a4aa626175e5d11afa`,i=localStorage.getItem(`businessId`)||`83c782a4aa626175e5d11afa`,a=localStorage.getItem(`businessUnitId`)||`63b57588fd768a839dbc0f63`,o=Number(localStorage.getItem(`userId`))||1;return On(t.T,`/joblist`,{method:`POST`,body:JSON.stringify({tenantId:r,businessId:i,businessUnitId:a,searchQuery:e,userId:o,candidateId:Array.isArray(n)?n:[n]})})}async function qn(e=``){let n=e?`?search=${encodeURIComponent(e)}`:``;return kn(t.T,`/users/any${n}`)}function Jn(e){if(!e||typeof e!=`string`)return null;try{let t=e.split(`.`)[1];if(!t)return null;let n=t.replace(/-/g,`+`).replace(/_/g,`/`),r=n.padEnd(Math.ceil(n.length/4)*4,`=`);return JSON.parse(atob(r))}catch{return null}}function Yn(){return Jn(localStorage.getItem(`access_token`)||localStorage.getItem(`authToken`))??{}}function Xn(){let e=Yn();return{userId:e.userId??e.user_id??e.USER_ID,roleId:e.roleId??e.role_id??e.ROLE_ID}}function Zn(){let e=Xn();return{userId:e.userId??localStorage.getItem(`userId`)??void 0,roleId:e.roleId??localStorage.getItem(`roleId`)??void 0}}function Qn(e){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return i(!0),s(null),Mn(e).then(e=>{t||n(Array.isArray(e)?e:[])}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{fields:t,loading:r,error:a}}function $n(e){let[t,n]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return i(!0),s(null),Nn(e).then(e=>{t||n(Array.isArray(e)?e:null)}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{config:t,loading:r,error:a}}function er(e){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(null);return(0,o.useEffect)(()=>{if(!e)return;let t=!1;i(!0),s(null);let{userId:r,roleId:a}=Zn(),o=e=>{let t=e?.isVisible??e?.is_visible??e?.visible;return t==null?!0:typeof t==`boolean`?t:typeof t==`string`?![`false`,`0`,`no`,`hide`,`hidden`].includes(t.toLowerCase()):!!t};return Nn(e,{configType:`filter`,userId:r,roleId:a}).then(async t=>{let n=(Array.isArray(t)?t:t?.visibleFields??[]).filter(o);if(n.length>0)return n;let r=await Mn(e);return Array.isArray(r)?r.filter(o):[]}).then(e=>{t||n(Array.isArray(e)?e:[])}).catch(e=>{t||s(e.message)}).finally(()=>{t||i(!1)}),()=>{t=!0}},[e]),{fields:t,loading:r,error:a}}var tr={campaign:`campaingns`,campaigns:`campaingns`};function nr(e,t){return e===t||`${e}s`===t||`${t}s`===e}function rr(e){try{let t=localStorage.getItem(`menu`);if(!t)return null;let n=JSON.parse(t);if(!Array.isArray(n))return null;let r=n.find(t=>{let n=String(t?.key??``).trim().toLowerCase();return n&&nr(e,n)});return r?String(r.key).trim().toLowerCase():null}catch{return null}}function ir(e){try{let t=localStorage.getItem(`menuPermission`);if(!t||!e)return{};let n=JSON.parse(t);if(!n||typeof n!=`object`)return{};let r=String(e).trim().toLowerCase(),i=tr[r]??rr(r)??r,a=Object.keys(n),o=e=>e.trim().toLowerCase(),s=a.find(e=>o(e)===i)??a.find(e=>nr(i,o(e)))??a.find(e=>nr(r,o(e)));return(s?n[s]:null)??{}}catch{return{}}}function ar(e){return e&&typeof e==`object`&&Object.prototype.hasOwnProperty.call(e,`value`)?e.value:e}function or(e){let t=ar(e);return t==null||Number(t)!==0&&t!==!1&&t!==`0`}function sr(e){let t=ar(e);return t==null?!1:t===!0||t===1||t===`1`}function cr(e,t){if(!e||typeof e!=`object`)return;if(Object.prototype.hasOwnProperty.call(e,t))return e[t];let n=String(t).trim().toLowerCase(),r=Object.keys(e).find(e=>String(e).trim().toLowerCase()===n);return r?e[r]:void 0}function lr(e){return(0,o.useMemo)(()=>{let t=ir(e);return{canView:or(cr(t,`view`)),canAdd:or(cr(t,`add`)),canEdit:or(cr(t,`edit`)),canDelete:or(cr(t,`delete`)),canApprove:or(cr(t,`approve`)),canReject:or(cr(t,`reject`)),canReApprove:sr(cr(t,`reApprove`)),canSendApprove:sr(cr(t,`sendApprove`))}},[e])}function ur(e){return[e?.key,e?.label,e?.name].filter(Boolean).join(` `).trim().toLowerCase()}function dr(e){let t=String(e?.permissionKey??``).trim().toLowerCase();if([`add`,`edit`,`delete`].includes(t))return t;if(e?.danger)return`delete`;let n=ur(e);return/(^|[\s_-])edit([\s_-]|$)/.test(n)?`edit`:/(^|[\s_-])(add|create)([\s_-]|$)/.test(n)?`add`:null}function fr(e,t){if(e!=null)return t.length===0?e:Array.isArray(e)?e.map(e=>fr(e,t)).filter(e=>e!=null).flat():fr(e[t[0]],t.slice(1))}function pr(e,t){if(!t||typeof t!=`string`||!e)return;if(t in e)return e[t];let n=fr(e,t.split(`.`));if(n!==void 0&&!(Array.isArray(n)&&n.length===0))return n;let r=t.split(`.`).pop();return r===t?void 0:e[r]}function mr(){try{return typeof localStorage<`u`?localStorage.getItem(`userId`)??``:``}catch{return``}}var hr={"{currentuserid}":mr,"{currentuser}":mr,"{me}":mr};function gr(e){let t=hr[String(e??``).trim().toLowerCase()];return t?t():e}function _r(e){return String(e??``).trim().toLowerCase()}function vr(e){return _r(e).replace(/[^a-z0-9]/g,``)}function yr(e,t){return e===t||vr(e)===vr(t)}function br(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function xr(e,t,n){let r=e?.operator,i=r===`scope`?n:pr(t,e?.field),a=gr(e?.value),o=_r(i),s=_r(a);if(r===`eq`||r===`scope`)return yr(o,s);if(r===`ne`)return!yr(o,s);if(r===`isEmpty`)return br(i);if(r===`notEmpty`)return!br(i);if(r===`fieldEq`)return yr(o,_r(pr(t,e?.compareField)));if(r===`includes`||r===`notIncludes`){let e=(Array.isArray(i)?i:[i]).some(e=>yr(_r(e),s))&&s!==``;return r===`includes`?e:!e}return r===`contains`?Array.isArray(i)?i.some(e=>_r(e).includes(s)):o.includes(s):!1}function Sr(e,t,n){if(!e||e.isActive===!1)return!1;let r=e.conditions??[];return r.length?r.every(e=>xr(e,t,n)):!1}function Cr(e){let t=e?.allowedActions;return!Array.isArray(t)||t.length===0?null:t.map(String)}function wr(e,t,n,r){let i=Array.isArray(n)?n:[];if(!i.length)return!1;let a=String(e);return i.some(e=>{if(!Sr(e,t,r))return!1;let n=Cr(e);return n&&!n.some(e=>yr(e,a))?!0:(e?.blockedActions??[]).map(String).includes(a)})}function Tr(e,t,n,r){let i=(Array.isArray(n)?n:[]).find(n=>(n?.disabledActions??[]).map(String).includes(String(e))&&Sr(n,t,r));return i?i.description||`${e} is temporarily unavailable`:null}function Er(e,t,n){let r=e?.doneWhen;return!r||!r.field||!xr(r,t,n)?null:{label:e.doneLabel||e.label,tone:e.doneTone||`success`}}function Dr(e,t,n,r){let i=Array.isArray(t)?t:[];return i.length?i.some(t=>wr(e,t,n,r)):!1}var Or=e.t({actionRules:()=>Pr,actions:()=>Fr,columnActions:()=>Ir,default:()=>Lr,fields:()=>Mr,rows:()=>kr,synthesizeFieldsFromRows:()=>!0,tabField:()=>Nr,tabs:()=>jr,total:()=>Ar,visibilityFlag:()=>null}),kr={sources:[`payload`],paths:[`rows`,`records`,`items`,`list`,`data`]},Ar={sources:[`response`,`payload`],paths:[`total`,`count`,`totalCount`]},jr={sources:[`response`,`payload`],paths:[`tabs`,`tabList`]},Mr={sources:[`response`,`payload`],paths:[`fields`,`fieldConfig`]},Nr={sources:[`payload`],paths:[`tabField`]},Pr={sources:[`payload`],paths:[`actionRules`]},Fr={sources:[`payload`],paths:[`actions`]},Ir={sources:[`payload`],paths:[`columnActions`]},Lr={rows:kr,total:Ar,tabs:jr,fields:Mr,tabField:Nr,actionRules:Pr,actions:Fr,columnActions:Ir,synthesizeFieldsFromRows:!0,visibilityFlag:null},Rr=Object.assign({"../../config/responseMappings/default.json":Or});function zr(e){if(!e)return null;for(let t of Object.keys(Rr))if(t.split(`/`).pop().replace(/\.json$/,``)===e){let e=Rr[t];return e.default??e}return null}function Br(e){let t=zr(e);return t?{...Lr,...t}:Lr}function Vr(e,t){return String(t).split(`.`).reduce((e,t)=>e?.[t],e)}function Hr(e,t,n){if(!n)return;let r={response:e,payload:t};for(let e of n.sources)for(let t of n.paths){let n=Vr(r[e],t);if(n!==void 0)return n}}function Ur(...e){for(let t of e){let e=Number(t);if(Number.isFinite(e))return e}}function Wr(e){return e.replace(/([A-Z])/g,` $1`).replace(/^./,e=>e.toUpperCase())}var Gr=/token|password|passwd|secret|apikey|api_key|auth|credential|salary|ssn|ein\b/i;function Kr(e){return Gr.test(e)}function qr(e){let t=e[0];return t?Object.keys(t).filter(e=>!e.startsWith(`_`)&&!Kr(e)&&typeof t[e]!=`object`).map(e=>({value:e,field:e,label:Wr(e),isVisible:!0})):[]}function Jr(e,t){return t?e.filter(e=>e[t]===1||e[t]===!0||e[t]===void 0).map(e=>({...e,isVisible:!0})):e}var Yr=5e3,Xr=300,Zr=100,Qr=100,$r=300,ei=100;function ti(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ni(e,t){return Array.isArray(e)?e.slice(0,t):[]}function ri(e,t){return ni(e,t).filter(ti)}function ii(e,t){return ri(e,t).filter(e=>typeof e.value==`string`||typeof e.field==`string`)}var ai=/^\s*(javascript|data|vbscript|file):/i,oi=[`url`,`href`,`routeUrl`,`routeURL`];function si(e){let t={...e};for(let e of oi)typeof t[e]==`string`&&ai.test(t[e])&&delete t[e];return t}function ci(e,t){return ri(e,t).map(si)}function li(e,t){return e.flatMap(e=>{let n=Vr(e,t);return n==null?[]:(Array.isArray(n)?n:[n]).filter(e=>e!=null).map(e=>ti(e)?e:{value:e})})}function ui(e,t){if(!Array.isArray(t)||Array.isArray(e)||!ti(e))return;let n=[`actions`,`actionRules`,`columnActions`,`tabField`].filter(t=>e[t]!==void 0);n.length!==0&&console.warn(`[mapListResponse] response.data is an array, so ${n.join(`, `)} cannot be resolved from it. Send rows under "items" instead of "data", or pass the full envelope rather than the unwrapped payload.`)}function di(e,t){let{baseModule:r,nestedPath:i}=n.Cn(t),a=Br(r),o=e?.data??e;ui(e,o);let s=ni(Array.isArray(o)?o:Hr(e,o,a.rows),Yr);i&&(s=ni(li(s,i),Yr),console.log(`[mapListResponse] module "${r}" → nested path "${i}": ${s.length} row(s)`));let c=Hr(e,o,a.total),l=ti(c)?Ur(c.total,c.searchCount,c.count):c,u=Number(l??s.length)||0,d=ri(Hr(e,o,a.tabs),Zr),f=i?[]:Hr(e,o,a.fields),p=Array.isArray(f)?f:[];p.length===0&&(i||a.synthesizeFieldsFromRows)&&(p=qr(s)),p=ii(p,Xr),a.visibilityFlag&&(p=Jr(p,a.visibilityFlag));let m=Hr(e,o,a.tabField);return{rows:s,total:u,tabs:d,fields:p,tabField:typeof m==`string`?m:``,actionRules:ci(Hr(e,o,a.actionRules),$r),actions:ci(Hr(e,o,a.actions),Qr),columnActions:ci(Hr(e,o,a.columnActions),ei)}}var fi={jobs:{module:`jobs`,keys:[`jobRecruitmentStatus`,`jobStatus`],dateField:`createdAt`},candidates:{module:`candidates`,keys:[`candidateSummary`],items:[{key:`created`,label:`Created`,collection:`candidates`,countType:`documents`,dateField:`createdAt`},{key:`submitted`,label:`Submitted`,collection:`submissions`,countType:`distinct`,distinctField:`applicantId`,dateField:`submittedAt`},{key:`onboarded`,label:`Onboarded`,collection:`onboarding`,countType:`distinct`,distinctField:`candidateId`,dateField:`onboardingActivity.activityTime`,filters:{onboardingObStage:[`Completed`]}}]},submissions:{module:`submission`,keys:[`internalSubmissionStatus.internalSubmissionStatusText`,`clientSubmissionStatus.clientSubmissionStatusText`],dateField:`createdAt`}},pi={jobSummary:[{label:`Open`,field:`jobStatus`,keys:[`open`,`active`]},{label:`Partially Fulfilled`,field:`jobRecruitmentStatus`,keys:[`partially fulfilled`,`partiallyFulfilled`]},{label:`Fulfilled`,field:`jobRecruitmentStatus`,keys:[`fulfilled`]},{label:`In-active / Closed`,field:`jobStatus`,keys:[`closed`,`inactive`,`in-active`]}]};function mi(e){return String(e??``).trim().toLowerCase()}function hi(e,t){return{label:e,count:Number.isFinite(Number(t))?Number(t):0}}function gi(e){return Array.isArray(e?.counts)?e.counts:[]}function _i(e,t){return e?.key===t?e:(Array.isArray(e?.fields)?e.fields:[]).find(e=>e?.key===t)??{}}function vi(e,t){let n=Array.isArray(t)?t:[t],r=Array.isArray(e?.counts)?e.counts:[],i=n.filter(Boolean).map(mi),a=r.find(e=>[e?.key,e?.label].map(mi).some(e=>i.includes(e)));if(a)return Number(a.count)||0;for(let t of n){let n=e?.[t];if(Number.isFinite(Number(n)))return Number(n)}return 0}function yi(e,t){let n=(Array.isArray(t)?t:[t].filter(Boolean)).map(mi);return gi(e).reduce((e,t)=>{let r=mi(t?.key??t?.label);return n.includes(r)?e+(Number(t?.count)||0):e},0)}function bi(e){let t=mi(e);return t.includes(`candidate`)?fi.candidates:t.includes(`submission`)?fi.submissions:t.includes(`job`)?fi.jobs:null}function xi(e){return pi[e]??null}function Si(e){return Array.isArray(e?.counts)||e?.openCount!==void 0||e?.myAssignedCount!==void 0?[hi(`Open`,vi(e,[`openCount`,`open`])),hi(`Partially Fulfilled`,vi(e,[`partiallyFulfilledCount`,`partially fulfilled`])),hi(`Fulfilled`,vi(e,[`fulfilledCount`,`fulfilled`])),hi(`In-active / Closed`,vi(e,[`closedCount`,`closed`,`inactive`,`in active`]))]:(xi(`jobSummary`)??[]).map(t=>{let n=_i(e,t.field);return hi(t.label,yi(n,t.keys??[]))})}function Ci(e){return gi(e).map(({label:e,key:t,count:n})=>hi(e||t,n))}function wi(e){let t=Array.isArray(e?.fields)?e.fields:[],n=t.find(e=>e.key===`clientSubmissionStatus.clientSubmissionStatusText`)??{},r=t.find(e=>e.key===`internalSubmissionStatus.internalSubmissionStatusText`)??{},i=e=>Array.isArray(e.counts)?e.counts.map(({label:e,count:t})=>hi(e,t)):[],a=Number(n.total)||0,o=Number(r.total)||0;return{total:a+o,clientCount:a,internalCount:o,clientBreakdown:i(n),internalBreakdown:i(r)}}var{RangePicker:Ti}=s.DatePicker,Ei=[{value:`today`,label:`Today`},{value:`yesterday`,label:`Yesterday`},{value:`last-7-days`,label:`Last 7 Days`},{value:`last-30-days`,label:`Last 30 Days`},{value:`this-month`,label:`This Month`},{value:`last-month`,label:`Last Month`},{value:`custom-range`,label:`Custom Range`}];function Di(e){return e.closest(`.view-summary-card`)??document.body}function Oi(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ki(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function Ai(e){let t=new Date,n=new Date(t.getFullYear(),t.getMonth(),1),r=new Date(t.getFullYear(),t.getMonth()-1,1),i=new Date(t.getFullYear(),t.getMonth(),0);if(e===`today`)return{startDate:t,endDate:t};if(e===`yesterday`){let e=ki(t,-1);return{startDate:e,endDate:e}}return e===`last-30-days`?{startDate:ki(t,-29),endDate:t}:e===`this-month`?{startDate:n,endDate:t}:e===`last-month`?{startDate:r,endDate:i}:{startDate:ki(t,-6),endDate:t}}function ji(e,t){if(e===`custom-range`){let[e,n]=t??[];return!e||!n?null:{startDate:e.format(`YYYY-MM-DD`),endDate:n.format(`YYYY-MM-DD`)}}let n=Ai(e);return{startDate:Oi(n.startDate),endDate:Oi(n.endDate)}}function Mi(e){return String(e??``).trim().toLowerCase()}function Ni(e){return String(e??``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim().replace(/\b\w/g,e=>e.toUpperCase())}function Pi(e){let t=Mi(e);return t.includes(`candidate`)?`Candidate`:t.includes(`submission`)?`Submission`:t.includes(`job`)?`Job`:Ni(e||`List`)}function Fi(e){return e?.data??e}function Ii(e,t){let n={module:e.module,dateRange:{startDate:t.startDate,endDate:t.endDate}};return e.summary&&(n.summary=e.summary),Array.isArray(e.items)&&e.items.length>0&&(n.items=e.items),Array.isArray(e.keys)&&e.keys.length>0&&(n.keys=e.keys),e.dateField&&(n.dateRange.key=e.dateField),n}function Li({moduleName:e,open:t,onClose:r}){let i=Pi(e),a=Mi(e),u=a.includes(`submission`),d=a.includes(`job`),f=a.includes(`candidate`),p=bi(e),h=u?`last-30-days`:`last-7-days`,[g,_]=(0,o.useState)(h),[v,y]=(0,o.useState)(null),[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(null),[E,D]=(0,o.useState)(``),O=Si(b),k=Ci(S),A=wi(w),j=Math.max(A.total,1),M=Math.round(A.internalCount/j*100),N=Math.max(0,100-M),P=g===`custom-range`;return(0,o.useEffect)(()=>{t&&(_(h),y(null))},[h,t]),(0,o.useEffect)(()=>{if(!t||!p)return;let e=ji(g,v);if(!e)return;let n=!1;return D(``),m(Ii(p,e)).then(e=>{if(n)return;let t=Fi(e);if(d){x(t),C(null),T(null);return}if(f){C(t),x(null),T(null);return}T(t),x(null),C(null)}).catch(e=>{n||(x(null),C(null),T(null),D(e.message||`Could not load summary`))}),()=>{n=!0}},[v,f,d,u,t,g,p]),t?(0,l.jsxs)(`div`,{className:`view-summary-layer`,role:`presentation`,children:[(0,l.jsx)(`div`,{className:`view-summary-scrim`}),(0,l.jsxs)(s.Card,{"aria-label":`${i} summary`,variant:`borderless`,className:`view-summary-card view-summary-card--${u?`submission`:`simple`}`,children:[(0,l.jsx)(s.Button,{"aria-label":`Close summary`,className:`view-summary-close`,icon:(0,l.jsx)(c.CloseOutlined,{}),type:`text`,onClick:r}),(0,l.jsxs)(`header`,{className:`view-summary-header`,children:[(0,l.jsxs)(n.En,{className:`view-summary-title`,color:`primary`,size:`md`,tag:`h2`,variant:`h2`,weight:`medium`,children:[i,` Summary`]}),(0,l.jsx)(s.Select,{"aria-label":`Summary date range`,className:`view-summary-range`,popupClassName:`view-summary-range-dropdown`,getPopupContainer:Di,popupMatchSelectWidth:!1,value:g,options:Ei,onChange:e=>{_(e),e!==`custom-range`&&y(null)}})]}),u?(0,l.jsxs)(l.Fragment,{children:[P&&(0,l.jsx)(Ti,{allowClear:!0,className:`view-summary-custom-range view-summary-custom-range--full`,format:`MMM DD, YYYY`,getPopupContainer:Di,placeholder:[`Start date`,`End date`],value:v,onChange:y}),(0,l.jsxs)(`section`,{className:`view-summary-submission-top`,"aria-label":`Submission totals`,children:[(0,l.jsxs)(`div`,{className:`view-summary-donut`,style:{"--summary-internal":`${M}%`,"--summary-client":`${N}%`},children:[(0,l.jsx)(n.En,{color:`success`,size:`2xl`,tag:`span`,variant:`metric`,weight:`semibold`,children:A.total}),(0,l.jsx)(n.En,{color:`success`,size:`xs`,tag:`span`,variant:`caption`,weight:`semibold`,children:`Total`})]}),(0,l.jsxs)(`div`,{className:`view-summary-legend`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--internal`}),`Internal`,(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:A.internalCount})]}),(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--client`}),`Client`,(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:A.clientCount})]})]})]}),(0,l.jsx)(`div`,{className:`view-summary-divider`}),(0,l.jsxs)(`section`,{className:`view-summary-breakdown`,children:[(0,l.jsx)(n.En,{className:`view-summary-subtitle`,color:`primary`,size:`md`,tag:`h3`,variant:`h4`,weight:`medium`,children:`Internal Breakdown`}),A.internalBreakdown.length>0?A.internalBreakdown.map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row view-summary-row--bullet`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--internal`}),e.label]}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:e.count})]},`internal-${e.label}`)):(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`p`,variant:`body`,weight:`regular`,children:`No internal data found`}),(0,l.jsx)(n.En,{className:`view-summary-subtitle`,color:`primary`,size:`md`,tag:`h3`,variant:`h4`,weight:`medium`,children:`Client Breakdown`}),A.clientBreakdown.length>0?A.clientBreakdown.map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row view-summary-row--bullet`,children:[(0,l.jsxs)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,weight:`regular`,children:[(0,l.jsx)(`i`,{className:`view-summary-dot view-summary-dot--client`}),e.label]}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,weight:`regular`,children:e.count})]},`client-${e.label}`)):(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`p`,variant:`body`,weight:`regular`,children:`No client data found`}),E&&(0,l.jsx)(n.En,{color:`danger`,size:`xs`,tag:`p`,variant:`caption`,children:E})]})]}):(0,l.jsxs)(`section`,{className:`view-summary-breakdown`,children:[(0,l.jsxs)(`div`,{className:`view-summary-section-head`,children:[(0,l.jsxs)(n.En,{className:`view-summary-section-title`,color:`primary`,size:`md`,tag:`h3`,variant:`h3`,weight:`medium`,children:[`All `,i]}),P&&(0,l.jsx)(Ti,{allowClear:!0,className:`view-summary-custom-range`,format:`MMM DD, YYYY`,getPopupContainer:Di,placeholder:[`Start date`,`End date`],value:v,onChange:y})]}),(0,l.jsx)(`div`,{className:`view-summary-divider`}),a.includes(`job`)&&(0,l.jsx)(n.En,{className:`view-summary-breakdown-title`,color:`primary`,size:`sm`,tag:`h4`,variant:`h4`,weight:`regular`,children:`Breakdown`}),(f?k:O).map(e=>(0,l.jsxs)(`div`,{className:`view-summary-row`,children:[(0,l.jsx)(n.En,{color:`muted`,size:`sm`,tag:`span`,variant:`body`,children:e.label}),(0,l.jsx)(n.En,{color:`primary`,size:`sm`,tag:`b`,variant:`body`,children:e.count})]},e.label)),E&&(0,l.jsx)(n.En,{color:`danger`,size:`xs`,tag:`p`,variant:`caption`,children:E})]})]})]}):null}function Ri(e){let[t,n]=(0,o.useState)({}),[r,i]=(0,o.useState)(new Set),a=(0,o.useRef)({}),s=(e,t)=>{i(n=>{let r=new Set(n);return t?r.add(e):r.delete(e),r})};return{valuesByField:t,loadingFields:r,fetchValues:(0,o.useCallback)((t,r=``,i={})=>{if(!t||!e)return;a.current[t]&&clearTimeout(a.current[t]);let o=r?300:0;a.current[t]=setTimeout(async()=>{s(t,!0);try{let a=await Un(e,t,r,i),o=Array.isArray(a)?a.map(e=>({label:String(e.label),value:e.value})):[];n(e=>({...e,[t]:o}))}catch{}finally{s(t,!1)}},o)},[e])}}var zi=[{label:`Last 7 days`,getDates:()=>[(0,u.default)().subtract(6,`day`),(0,u.default)()]},{label:`This month`,getDates:()=>[(0,u.default)().startOf(`month`),(0,u.default)()]},{label:`Overdue`,getDates:()=>[null,(0,u.default)().subtract(1,`day`)]}];function Bi({value:e,onChange:t,disabled:n}){return(0,l.jsxs)(s.Flex,{vertical:!0,gap:4,children:[(0,l.jsx)(s.DatePicker.RangePicker,{value:e,onChange:t,disabled:n,style:{width:`100%`},allowEmpty:[!0,!0],disabledDate:e=>e&&e.isAfter((0,u.default)(),`day`)}),!n&&(0,l.jsx)(s.Space,{size:4,wrap:!0,children:zi.map(({label:e,getDates:n})=>(0,l.jsx)(s.Tag,{className:`filter-date-shortcut`,onClick:()=>t?.(n()),children:e},e))})]})}var Vi=[{label:`AND`,value:`and`},{label:`OR`,value:`or`},{label:`Is Empty`,value:`isEmpty`},{label:`Not Empty`,value:`notEmpty`}],Hi=[{label:`Yes`,value:`true`},{label:`No`,value:`false`}];function Ui({value:e,onChange:t,disabled:n}){let[r,i]=Array.isArray(e)?e:[void 0,void 0];return(0,l.jsxs)(s.Flex,{gap:8,children:[(0,l.jsx)(s.InputNumber,{disabled:n,placeholder:`Min`,value:r,onChange:e=>t?.([e,i]),style:{flex:1}}),(0,l.jsx)(s.InputNumber,{disabled:n,placeholder:`Max`,value:i,onChange:e=>t?.([r,e]),style:{flex:1}})]})}var Wi={operator:`and`,field:void 0,values:[]};function Gi({filterInputType:e,fieldType:t,disabled:n,loading:r,valueOptions:i,onSearch:a,onOpen:o}){let c=e||(t===`boolean`?`boolean`:null)||(t===`date`?`datepicker`:null)||(t===`number`?`number-range`:null)||`dropdown`;return c===`boolean`?(0,l.jsx)(s.Select,{allowClear:!0,disabled:n,mode:`multiple`,options:Hi,placeholder:`Select value`}):c===`text`?(0,l.jsx)(s.Input,{disabled:n,placeholder:`Type keyword...`,allowClear:!0}):c===`datepicker`?(0,l.jsx)(Bi,{disabled:n}):c===`number-range`?(0,l.jsx)(Ui,{disabled:n}):c===`checkbox`?(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Checkbox.Group,{disabled:n,options:i,style:{display:`flex`,flexWrap:`wrap`,gap:`4px 16px`}})}):c===`radio`?(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Radio.Group,{disabled:n,options:i,style:{display:`flex`,flexWrap:`wrap`,gap:`4px 16px`}})}):(0,l.jsx)(s.Select,{allowClear:!0,disabled:n,loading:r,mode:`multiple`,options:i,placeholder:n?`Select field first`:`Select values`,showSearch:!0,filterOption:!1,onSearch:a,onDropdownVisibleChange:o})}function Ki(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function qi(e){return e.value??e.field??e.fieldName??e.name??e.label}function Ji(e,t){let n=t.find(t=>t.value===e.field),r=e.filterInputType??n?.filterInputType,i=r===`datepicker`||!r&&n?.type===`date`,a=r===`text`,o=e.values??[];return a?o=e.value??``:i&&(o=[e.from?(0,u.default)(e.from):null,e.to?(0,u.default)(e.to):null]),{field:e.field,operator:e.operator??`and`,values:o,locked:n?.isDefaultFilter??!1}}function Yi({moduleName:e,open:t=!1,filters:r=[],onClose:i,onApply:a,onReset:u}){let[d]=s.Form.useForm(),f=s.Form.useWatch(`filters`,d)??[],{fields:p,loading:m,error:h}=er(t?e:null),g=(0,o.useMemo)(()=>(p??[]).map(e=>({label:Ki(e),value:qi(e),type:e.type,filterInputType:e.filterInputType,dataSource:e.dataSource,groupName:e.groupName,filterGroupFields:Array.isArray(e.filterGroupFields)?e.filterGroupFields:[],filterGroupSeparator:e.filterGroupSeparator??` `,lookup:e.lookup??null,isDefaultFilter:e.isDefaultFilter===1||e.isDefaultFilter===`1`||e.isDefaultFilter===!0})).filter(e=>e.label&&e.value),[p]),_=(0,o.useMemo)(()=>g.filter(e=>e.isDefaultFilter),[g]),v=(0,o.useMemo)(()=>_.map(e=>String(e.value)).sort().join(`|`),[_]),y=g,{valuesByField:b,loadingFields:x,fetchValues:S}=Ri(e);function C(e){let t=g.find(t=>t.value===e),n=t?.filterInputType;if(!(!e||n===`datepicker`||n===`number-range`||n===`text`||!n&&[`boolean`,`date`,`number`].includes(t?.type))){let n=!!t?.lookup?.collection;S(e,``,{dataSource:n?`lookup`:t?.dataSource,groupName:t?.groupName,lookup:t?.lookup,groupFields:t?.filterGroupFields,groupSeparator:t?.filterGroupSeparator})}}function w(){return _.length>0?_.map(e=>({operator:`and`,field:e.value,values:[],locked:e.isDefaultFilter})):[Wi]}function T(e=[]){let t=e.filter(e=>e?.field),n=new Set(t.map(e=>String(e.field))),r=[..._.filter(e=>!n.has(String(e.value))).map(e=>({operator:`and`,field:e.value,values:[],locked:!0})),...t].map(e=>({...e,locked:_.some(t=>String(t.value)===String(e.field))}));return r.length>0?r:[Wi]}let E=(0,o.useRef)(!1),D=(0,o.useRef)(r);(0,o.useEffect)(()=>{if(r===D.current)return;if(D.current=r,E.current){E.current=!1;return}let e=T((r??[]).filter(e=>e.field).map(e=>Ji(e,g)));d.setFieldsValue({filters:e}),e.forEach(e=>C(e.field))},[r,g]);let O=(0,o.useRef)(!1),k=(0,o.useRef)(``),A=(0,o.useRef)(e),j=(0,o.useRef)(!1);(0,o.useEffect)(()=>{e!==A.current&&(A.current=e,O.current=!1,k.current=``,j.current=!1)},[e]),(0,o.useEffect)(()=>{if(!t)return;let e=k.current!==v;if(O.current&&!e)return;let n=j.current&&!m,r=!m&&g.length>0;if(j.current=m,!n&&!r)return;let i=O.current;O.current=!0,k.current=v;let a=d.getFieldValue(`filters`)??[],o=T(i||a.length>0?a:w());d.setFieldsValue({filters:o}),o.forEach(e=>C(e.field))},[t,m,g,v]);function M(){E.current=!0;let t=w();d.setFieldsValue({filters:t}),t.forEach(e=>C(e.field)),a?.({moduleName:e,filters:[]}),u?.(),i?.()}function N(){E.current=!0;let t=(d.getFieldsValue().filters??[]).filter(e=>!P(e)).map(e=>{let t={...e};delete t.locked;let n=g.find(e=>e.value===t.field),r=n?.label??t.field,i=n?.filterInputType,a=i===`datepicker`||n?.type===`date`,o=i===`number-range`||!i&&n?.type===`number`,s=i===`text`;if(a){let[e,n]=Array.isArray(t.values)?t.values:[],a=e=>e?typeof e.format==`function`?e.format(`YYYY-MM-DD`):typeof e.toISOString==`function`||e instanceof Date?e.toISOString().substring(0,10):null:null,o=a(e),s=a(n);return{...t,values:[o,s].filter(Boolean),from:o??void 0,to:s??void 0,fieldLabel:r,filterInputType:i}}if(o){let[e,n]=Array.isArray(t.values)?t.values:[];return{...t,values:[e,n].filter(e=>e!=null),from:e==null?void 0:String(e),to:n==null?void 0:String(n),fieldLabel:r,filterInputType:i}}if(s){let e=typeof t.values==`string`?t.values.trim():``;return{...t,value:e,values:[],fieldLabel:r,filterInputType:i}}return{...t,values:t.values??[],fieldLabel:r,filterInputType:i,groupFields:n?.filterGroupFields??[]}});a?.({moduleName:e,filters:t}),i?.()}function P(e){if(!e?.field)return!0;if(e.operator===`isEmpty`||e.operator===`notEmpty`)return!1;let{values:t}=e;return typeof t==`string`?t.trim()===``:!Array.isArray(t)||t.length===0||t.every(e=>e==null||e===``)}let F=f.length===0||f.every(P);function I(e,t){let n=d.getFieldValue(`filters`)??[];d.setFieldValue(`filters`,n.map((t,n)=>n===e?{...t,values:[]}:t));let r=g.find(e=>e.value===t),i=r?.filterInputType;if(!(!t||i===`datepicker`||i===`number-range`||i===`text`||!i&&[`boolean`,`date`,`number`].includes(r?.type))){let e=!!r?.lookup?.collection;S(t,``,{dataSource:e?`lookup`:r?.dataSource,groupName:r?.groupName,lookup:r?.lookup,groupFields:r?.filterGroupFields,groupSeparator:r?.filterGroupSeparator})}}return(0,l.jsxs)(s.Drawer,{title:(0,l.jsx)(n.En,{variant:`card-title`,color:`primary`,children:`Filters`}),placement:`right`,width:720,open:t,onClose:i,rootClassName:`dynamic-field-filter`,maskClosable:!1,footer:(0,l.jsxs)(s.Space,{className:`dynamic-field-filter__footer`,children:[(0,l.jsx)(n.ut,{onClick:M,children:`Reset`}),(0,l.jsx)(n.ut,{variant:`primary`,onClick:N,disabled:F,children:`Apply`})]}),children:[h&&(0,l.jsx)(s.Alert,{type:`error`,message:`Could not load filter fields`,description:h,style:{marginBottom:16},showIcon:!0}),(0,l.jsx)(s.Spin,{spinning:m,description:`Loading fields…`,children:(0,l.jsx)(s.Form,{form:d,layout:`vertical`,className:`dynamic-field-filter__form`,initialValues:{filters:[Wi]},children:(0,l.jsx)(s.Form.List,{name:`filters`,children:(e,{add:t,remove:r})=>(0,l.jsxs)(s.Space,{direction:`vertical`,className:`dynamic-field-filter__rows`,children:[e.map((t,i)=>{let a=f[i]?.field,o=f[i]?.operator,u=g.find(e=>e.value===a),d=u?.isDefaultFilter===!0,p=!a||o===`isEmpty`||o===`notEmpty`,h=u?.type??`text`,_=u?.filterInputType,v=b[a]??[],C=x.has(a),w=new Set(f.filter((e,t)=>t!==i).map(e=>e?.field).filter(Boolean).map(String)),T=d?g.filter(e=>e.value===a):y.filter(e=>!w.has(String(e.value)));return(0,l.jsxs)(s.Space,{direction:`vertical`,className:`dynamic-field-filter__row`,children:[e.length>1&&!d&&(0,l.jsx)(n.ut,{variant:`danger`,htmlType:`button`,icon:(0,l.jsx)(c.DeleteOutlined,{}),"aria-label":`Remove filter row`,className:`dynamic-field-filter__remove`,onClick:()=>r(t.name)}),i>0&&(0,l.jsx)(s.Flex,{justify:`center`,children:(0,l.jsx)(s.Form.Item,{name:[t.name,`operator`],rules:[{required:!0,message:`Select condition`}],className:`dynamic-field-filter__operator`,children:(0,l.jsx)(s.Select,{options:Vi,placeholder:`Condition`})})}),(0,l.jsxs)(s.Flex,{align:`end`,gap:`middle`,wrap:!0,children:[(0,l.jsx)(s.Form.Item,{label:(0,l.jsx)(n.En,{variant:`label`,color:`secondary`,children:`Field`}),style:{flex:1,minWidth:220},children:d?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.En,{variant:`body`,className:`dynamic-field-filter__locked-field`,children:u?.label??a}),(0,l.jsx)(s.Form.Item,{name:[t.name,`field`],noStyle:!0,children:(0,l.jsx)(s.Input,{type:`hidden`})})]}):(0,l.jsx)(s.Form.Item,{name:[t.name,`field`],rules:[{required:!0,message:`Select field`}],noStyle:!0,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,placeholder:`Select field`,options:T,optionFilterProp:`label`,loading:m,onChange:e=>I(t.name,e)})})}),(0,l.jsx)(s.Form.Item,{label:(0,l.jsx)(n.En,{variant:`label`,color:`secondary`,children:`Values`}),name:[t.name,`values`],style:{flex:1,minWidth:220},children:Gi({filterInputType:_,fieldType:h,disabled:p,loading:C,valueOptions:v,onSearch:e=>{if(a){let t=!!u?.lookup?.collection;S(a,e,{dataSource:t?`lookup`:u?.dataSource,groupName:u?.groupName,lookup:u?.lookup,groupFields:u?.filterGroupFields,groupSeparator:u?.filterGroupSeparator})}},onOpen:e=>{if(e&&a){let e=!!u?.lookup?.collection;S(a,``,{dataSource:e?`lookup`:u?.dataSource,groupName:u?.groupName,lookup:u?.lookup,groupFields:u?.filterGroupFields,groupSeparator:u?.filterGroupSeparator})}}})})]})]},t.key)}),(0,l.jsx)(n.ut,{htmlType:`button`,variant:`soft`,icon:(0,l.jsx)(c.PlusOutlined,{}),disabled:y.length>0&&f.filter(e=>e?.field).length>=y.length,onClick:()=>t(Wi),children:`Add Row`})]})})})})]})}var Xi=`data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.00035%204.69941C4.74567%204.69941%203.72701%205.71807%203.72701%206.97275C3.72701%208.22745%204.74567%209.24609%206.00035%209.24609C7.25503%209.24609%208.2737%208.22745%208.2737%206.97275C8.2737%205.71807%207.25503%204.69941%206.00035%204.69941ZM6.00035%205.87128C6.60827%205.87128%207.10182%206.36485%207.10182%206.97275C7.10182%207.58067%206.60827%208.07422%206.00035%208.07422C5.39243%208.07422%204.89888%207.58067%204.89888%206.97275C4.89888%206.36485%205.39243%205.87128%206.00035%205.87128ZM2.06843%206.41445C2.85434%204.9331%204.16742%203.92578%206.00035%203.92578C7.83328%203.92578%209.14637%204.9331%209.93227%206.41445C10.0838%206.70013%2010.4388%206.80902%2010.7245%206.65745C11.0102%206.50587%2011.1191%206.15091%2010.9675%205.86523C9.97758%203.9994%208.30902%202.75391%206.00035%202.75391C3.69169%202.75391%202.02312%203.9994%201.03322%205.86523C0.881648%206.15091%200.990538%206.50587%201.27619%206.65745C1.56187%206.80902%201.91686%206.70013%202.06843%206.41445Z'%20fill='%23586888'/%3e%3c/svg%3e`,Zi=`data:image/svg+xml,%3csvg%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cmask%20id='path-1-inside-1_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-1-inside-1_8856_23533)'/%3e%3cmask%20id='path-2-inside-2_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-2-inside-2_8856_23533)'/%3e%3cline%20x1='7.375'%20y1='2.93555'%20x2='12.225'%20y2='2.93555'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='5.83398'%20x2='12.225'%20y2='5.83398'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='8.87305'%20x2='12.225'%20y2='8.87305'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='11.7227'%20x2='12.225'%20y2='11.7227'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3c/svg%3e`,{Text:Qi}=s.Typography;function $i(e){return ta(e?.label,e?.fieldLabel,e?.name,e?.fieldName,e?.value,e?.field)}function ea(e){return ta(e?.value,e?.field,e?.fieldName,e?.name,e?.label)}function ta(...e){return e.find(e=>e!=null&&String(e).trim()!==``)}function na(e){return String(e??``).replace(/\[(\-?\d+)\]/g,`.$1`).split(`.`).filter(Boolean)}function ra(e,t){if(!(!t||typeof t!=`string`))return na(t).reduce((e,t)=>{if(e!=null){if(/^-?\d+$/.test(t)){if(!Array.isArray(e))return;let n=Number(t);return e[n<0?e.length+n:n]}return e?.[t]}},e)}function ia(e,t){return t===`id`?e?.id??e?._id:e?.[t]??ra(e,t)}function aa(e,t){if(!Array.isArray(e)||e.length===0||!t)return;let n=e[e.length-1];if(n!=null)return typeof n==`object`?ra(n,t):n}function oa(e){if(Array.isArray(e))return e.some(oa);if(e==null)return!1;let t=String(e).trim().toLowerCase();return t?![`all`,`internal`].includes(t):!1}function sa(e){let t=Object.keys(e??{}).find(e=>/^customFields\.[^.]*profiledata\./i.test(e)&&!/^customFields\.internalprofiledata\./i.test(e));if(t)return t.replace(/^customFields\./i,``).replace(/profiledata\..*$/i,``);let n=e?.customFields;if(!n||typeof n!=`object`)return``;let r=Object.keys(n).find(e=>/profiledata$/i.test(e)&&!/^internalprofiledata$/i.test(e)&&n[e]&&typeof n[e]==`object`);return r?r.replace(/profiledata$/i,``):``}function ca(e){if(typeof e?.isVisible==`boolean`&&!e.isVisible||typeof e?.isVisible==`string`&&e.isVisible.toLowerCase()===`false`)return!1;let t=ea(e);return!t||typeof t!=`string`?!1:/^customFields\.[^.]*profiledata\./i.test(t)&&!/^customFields\.internalprofiledata\./i.test(t)}function la(e){return[e?.sourceType,e?.profileSource,e?.selectedSource,e?.customFields?.sourceType,e?.customFields?.profileSource].some(oa)||!!sa(e)}function ua(e,t){let n=ia(e,t);return n==null||n===``?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}function da(e){let t=e?.defaultValue;return t==null?``:String(t).trim()}function fa(e){return!!e?.renderConfig?.treatZeroAsEmpty}function pa(e,t=null){return e==null||e===``||e===`-`||fa(t)&&(e===0||e===`0`)?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.keys(e).length===0}function ma(e,t){let n=da(e);return n&&pa(t,e)?n:t}function ha(e){if(!e)return``;let t=e instanceof Date?e:new Date(e);if(Number.isNaN(t.getTime()))return String(e);let n=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!0}).formatToParts(t),r=e=>n.find(t=>t.type===e)?.value??``;return`${`${r(`month`)} ${r(`day`)},${r(`year`)}`} | ${`${r(`hour`)}:${r(`minute`)} ${r(`dayPeriod`)}`}`}function ga(e){return String(e||`U`).trim().charAt(0).toUpperCase()||`U`}function _a(e,t){let n=t.find(t=>{let n=ia(e,t);return n!=null&&n!==``});return n?ua(e,n):``}function va(e,t){let n=ia(t,e.key),r=Array.isArray(n)?n:n?[n]:[],i=e.renderConfig??{},a=[i.nameField,i.labelField,`recruiterName`,`name`,`fullName`,`displayName`,`userName`,`email`,`recruiterEmail`].filter(Boolean),o=[i.metaField,i.dateField,i.assignedDateField,`assignedDateTime`,`assignedDate`,`createdAt`].filter(Boolean);return r.map((e,t)=>{let n=typeof e==`object`&&e?e:{value:e},r=_a(n,a)||String(e||`User`),i=_a(n,o);return{key:_a(n,[`recruiterId`,`id`,`_id`,`email`,`recruiterEmail`])||`${r}-${t}`,name:r,initial:ga(r),meta:ha(i)}})}function ya({item:e}){return(0,l.jsxs)(`div`,{className:`job-avatar-tooltip`,children:[(0,l.jsx)(`div`,{className:`job-avatar-tooltip-name`,children:e.name}),e.meta&&(0,l.jsx)(`div`,{className:`job-avatar-tooltip-meta`,children:e.meta})]})}function ba({items:e}){return(0,l.jsx)(`div`,{className:`job-avatar-more-tooltip`,children:e.map(e=>(0,l.jsx)(ya,{item:e},e.key))})}function xa(e){return typeof e==`boolean`?e:typeof e==`string`?e.toLowerCase()===`true`:!!e}function Sa(e){return e==null?``:Array.isArray(e)?e.join(`,`):typeof e==`object`?Object.values(e).join(` `):String(e)}function Ca(e,t){return e?String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(Sa(ia(t,n)))).replace(/:([A-Za-z_][\w.]*)/g,(e,n)=>encodeURIComponent(Sa(ia(t,n)))):``}function wa(e){return/^(https?:\/\/|\/)/i.test(String(e))}function Ta(e,t){let n=String(e??``).trim().toLowerCase();if(n===`blank`||n===`_blank`)return`_blank`;if(n===`self`||n===`_self`)return`_self`;if(n)return e;if(/^https?:\/\//i.test(String(t)))return`_blank`}function Ea(e){return/^https?:\/\//i.test(String(e))}function Da(e,t,n){let r=e.routeUrl??e.routeURL??e.linkTemplate??e.linkUrl??e.href??e.url??e.action;return r?Ca(r,t):wa(n)?String(n):``}function Oa(e,t){if(!t||t.length<3||!e||typeof e!=`string`||e===`-`)return e;let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0;for(;a<=e.length;){let o=n.indexOf(r,a);if(o===-1){i.push(e.slice(a));break}o>a&&i.push(e.slice(a,o)),i.push((0,l.jsx)(`mark`,{className:`search-highlight`,style:{backgroundColor:`#ffff00`,color:`inherit`,padding:0,borderRadius:2},children:e.slice(o,o+t.length)},o)),a=o+t.length}return i}function ka(e,t,n,r=``){let i=Da(e,t,n),a=Ta(e.linkTarget,i),o=Oa(n,r);return Ea(i)?(0,l.jsx)(s.Tooltip,{title:n===`-`?void 0:n,children:(0,l.jsx)(`a`,{className:`job-cell-link job-cell-value`,href:i,rel:a===`_blank`?`noreferrer`:void 0,target:a,children:o})}):(0,l.jsx)(s.Tooltip,{title:n===`-`?void 0:n,children:(0,l.jsx)(d.Link,{className:`job-cell-link job-cell-value`,target:a,to:i||`#`,children:o})})}function Aa(e){let t=[e?.props,e?.props?.format,e?.props?.display,e?.props?.dateDisplay,e?.renderConfig?.format,e?.renderConfig?.display,e?.renderConfig?.dateDisplay,e?.dateDisplay].map(e=>typeof e==`string`?e.trim().toLowerCase():``).find(Boolean);return t===`datetime`||t===`time`?t:`date`}function ja(e,t){if(e==null||e===``)return`-`;let n=e instanceof Date?e:new Date(e);if(Number.isNaN(n.getTime()))return ua({value:e},`value`);let r=new Intl.DateTimeFormat(`en-US`,{month:`short`,day:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!0,timeZone:`UTC`}).formatToParts(n),i=e=>r.find(t=>t.type===e)?.value??``,a=`${i(`month`)}, ${i(`day`)}, ${i(`year`)}`,o=`${i(`hour`)}:${i(`minute`)} ${i(`dayPeriod`)}`,s=Aa(t);return s===`time`?o:s===`datetime`?`${a} | ${o}`:a}function Ma(e){return/date/i.test(`${e.key??``} ${e.label??``} ${e.type??``}`)}function Na(e){return e==null||e===``?`-`:Array.isArray(e)?e.join(`, `):typeof e==`object`?Object.values(e).join(` `):e}function Pa(e,t,n){let r=String(t??``).trim();if(!r)return`-`;let i=r.replace(/^record\./,``);if(n?.renderConfig?.lastItemField??n?.renderConfig?.arrayDisplayField){let t=na(i);for(let n=t.length-1;n>=1;--n){let r=ia(e,t.slice(0,n).join(`.`));if(!Array.isArray(r))continue;let i=r[r.length-1];return i==null?`-`:Na(ra(i,t.slice(n).join(`.`)))}let r=n?.key,a=r?ia(e,r):void 0;if(r&&Array.isArray(a)){let e=a[a.length-1];if(i===r)return Na(e);let t=`${r}.`;if(i.startsWith(t))return Na(ra(e,i.slice(t.length)))}}return ua(e,i)}function Fa(e){return String(e??``).replace(/\s+/g,` `).replace(/^\s*[-–—/:|·,]+\s*/,``).replace(/\s*[-–—/:|·,]+\s*$/,``).replace(/\s*([-–—/:|·,])\s*([-–—/:|·,])\s*/g,` $2 `).replace(/\s+[-–—]\s+(?=[A-Za-z$€£₹])/g,` `).replace(/\s+/g,` `).trim()}function Ia(e,t,n){if(typeof e!=`string`||e.trim()===``)return``;let r=!1,i=e.replace(/\{\{\s*([^}]+?)\s*\}\}/g,(e,i)=>{let a=Pa(t,i,n);return pa(a,n)?``:(r=!0,String(a))});if(!r)return``;let a=i.replace(/\s+/g,` `).trim();return n?.renderConfig?.cleanEmptyTemplateSeparators?Fa(a):a}function La(e,t){let n=ia(t,e.key),r=Ia(e.displayTemplate,t,e),i=e.renderConfig?.lastItemField??e.renderConfig?.arrayDisplayField;if(r)return r;if(i){let t=aa(n,i);return pa(t,e)?ma(e,`-`):Array.isArray(t)?ma(e,t.join(`, `)):typeof t==`object`?ma(e,Object.values(t).join(` `)):t}return Ma(e)?ma(e,ja(n,e)):ma(e,ua(t,e.key))}function Ra(e,t){if(!da(e)||Ia(e.displayTemplate,t,e))return!1;let n=ia(t,e.key),r=e.renderConfig?.lastItemField??e.renderConfig?.arrayDisplayField;return r?pa(aa(n,r),e):Ma(e)?pa(ja(n,e),e):pa(ua(t,e.key),e)}function za(e){return e===`-`||typeof e!=`string`||!e.trim()?e:e.replace(/\b([A-Za-z])([A-Za-z]*)\b/g,(e,t,n)=>e.length>1&&e===e.toUpperCase()?e:`${t.toUpperCase()}${n.toLowerCase()}`)}function Ba(e){return typeof e!=`string`||!e.includes(`-`)?e:e.replace(/(^|\s)-\s*(\d+)(?=\s*[A-Za-z])/,`$10-$2`).replace(/(\d+)\s*-\s*(?=[A-Za-z])/,`$1-0 `)}function Va(e){let t=e.map((e,t)=>({field:e,index:t}));return t.some(({field:e})=>e.order!==void 0&&e.order!==null&&e.order!==``)?[...t].sort((e,t)=>{let n=Number(e.field.order),r=Number(t.field.order),i=Number.isFinite(n),a=Number.isFinite(r);return i&&a&&n!==r?n-r:i===a?e.index-t.index:i?-1:1}).map(({field:e})=>e):e}function Ha(e){return e.iconUrl??e.iconURL??e.icon??e.iconPath}function Ua(e){return Array.isArray(e)?e.map((e,t)=>({...e,key:e.key??e.name??e.label??e.routeUrl??e.type??String(t),label:e.label??e.name??e.title??e.type??`Action`,iconUrl:Ha(e)})).filter(e=>e.iconUrl):[]}function Wa(e,t,n=[],r){if(wr(e.key,t,n,r)||Array.isArray(e.conditions)&&e.conditions.length>0&&!e.conditions.every(e=>xr(e,t,r)))return!1;let i=e?.showIfField??e?.visibleWhenField;return!i||xr({field:i,operator:e?.showIfOperator||`eq`,value:e?.showIfValue??e?.visibleWhenValue??``},t,r)}function Ga(e,t={}){let n=dr(e);return n===`add`?t.canAdd!==!1:n===`edit`?t.canEdit!==!1:n!==`delete`||t.canDelete!==!1}function Ka(e,t,n){let r=Ca(e.routeUrl??e.routeURL??e.route??e.url??e.href,t),i=uo(e.type??e.actionType),a=typeof e.label==`function`?e.label(t):e.label,o=(0,l.jsx)(`img`,{src:e.iconUrl,alt:a,className:`job-field-action-icon`}),c=`job-field-action-button`,u=e.__done,f=e.__disabledReason;return u||f?(0,l.jsx)(s.Tooltip,{title:u?u.label:f,children:(0,l.jsx)(`button`,{"aria-label":u?u.label:`${a} (unavailable)`,className:`${c} job-field-action-button--done`,type:`button`,disabled:!0,children:o})},e.key):typeof e.onClick==`function`?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,onClick:n=>{n.stopPropagation(),e.onClick(t)},children:o})},e.key):(i===`popup`||i===`modal`||e.popupKey)&&r?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,onClick:i=>{i.stopPropagation(),n?.(r,t,e)},children:o})},e.key):r&&(i===`page`||r.startsWith(`/`))?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(d.Link,{"aria-label":a,className:c,to:r,children:o})},e.key):r?(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`a`,{"aria-label":a,className:c,href:r,rel:`noreferrer`,target:`_blank`,children:o})},e.key):(0,l.jsx)(s.Tooltip,{title:a,children:(0,l.jsx)(`button`,{"aria-label":a,className:c,type:`button`,children:o})},e.key)}function qa(e){let t=Array.isArray(e.secondaryFields)?e.secondaryFields:[],n=e.secondaryField?[e.secondaryField]:[];return[...t,...n].filter((e,t,n)=>e&&n.indexOf(e)===t)}function Ja(e,t){let n=e.secondarySeparator??` `,r=qa(e).map(e=>ua(t,e)).filter(e=>e!==`-`);return r.length?r.join(` ${n} `):``}function Ya(e){return za(Ba(e))}function Xa(e,t){if(!Array.isArray(e.valueStyles))return null;let n=uo(t);return e.valueStyles.find(e=>uo(e?.value)===n||uo(e?.label)===n)??null}function Za(e){let t=e?.color,n=e?.bg??e?.background??e?.backgroundColor;return{...t?{"--job-cell-badge-color":t}:{},...n?{"--job-cell-badge-bg":n}:{}}}function Qa(e){return uo(e?.varient??e?.variant).replace(/[^a-z0-9-]/g,`-`)}function $a(e,t){let n=Xa(e,t),r=n??e.commonStyle??{},i=n?.label??t,a=(typeof i==`string`?i.trim():i)||`-`,o=Qa(r),c=[`job-cell-badge`,`job-cell-value`,o?`job-cell-badge--${o}`:``].filter(Boolean).join(` `),u=!n&&typeof a==`string`&&a.includes(`,`)?a.split(`,`).map(e=>e.trim()).filter(Boolean):null,d=u&&u.length>1?`${u.slice(0,1).join(`, `)} +${u.length-1}`:a,f=Za(r);return(0,l.jsx)(s.Tooltip,{title:a===`-`?void 0:a,children:(0,l.jsx)(s.Tag,{className:c,style:f,children:d})})}function eo(e,t){let n=va(e,t),r=n.slice(0,2),i=n.slice(2);if(!n.length){let t=da(e)||`-`;return(0,l.jsx)(Qi,{className:`job-cell-primary job-cell-value`,children:t})}return(0,l.jsxs)(`span`,{className:`job-avatar-group`,children:[r.map((e,t)=>(0,l.jsx)(s.Tooltip,{classNames:{root:`job-avatar-tooltip-overlay`},title:(0,l.jsx)(ya,{item:e}),children:(0,l.jsx)(s.Avatar,{className:`job-avatar job-avatar--${t+1}`,children:e.initial})},e.key)),i.length>0&&(0,l.jsx)(s.Tooltip,{classNames:{root:`job-avatar-tooltip-overlay job-avatar-more-tooltip-overlay`},title:(0,l.jsx)(ba,{items:i}),children:(0,l.jsxs)(s.Avatar,{className:`job-avatar job-avatar--more`,children:[`+`,i.length]})})]})}function to(e,t,n=``,r,i={},a=[],o){if(uo(e.renderType)===`avatar`)return eo(e,t);let c=Ra(e,t),u=Ya(La(e,t)),d=Ua(e.actionButtons).filter(e=>Wa(e,t,a,o)).filter(e=>Ga(e,i)).map(e=>({...e,__done:Er(e,t,o),__disabledReason:Tr(e.key,t,a,o)})),f=Ya(Ja(e,t)),p=uo(e.renderType)===`badge`&&u!==`-`?$a(e,u):!xa(e.isLink)||u===`-`||c?(0,l.jsx)(s.Tooltip,{title:u===`-`?void 0:u,children:(0,l.jsx)(Qi,{className:`job-cell-primary job-cell-value`,children:Oa(u,n)})}):ka(e,t,u,n);return(0,l.jsxs)(`span`,{className:`job-cell-content`,children:[(0,l.jsxs)(`span`,{className:`job-cell-main-line`,children:[p,d.length>0&&(0,l.jsx)(`span`,{className:`job-field-actions`,children:d.filter(e=>typeof e.hiddenIf!=`function`||!e.hiddenIf(t)).map(e=>Ka(e,t,r))})]}),f&&(0,l.jsx)(s.Tooltip,{title:f,children:(0,l.jsx)(`span`,{className:`job-cell-secondary`,children:Oa(f,n)})})]})}var no=130,ro=230,io=7.2,ao=26,oo=8,so=44,co=20;function lo(e,t){let n=String(e.label??``).length*oo+so;if(uo(e.renderType)===`avatar`)return Math.max(Math.round(n),120);let r=0;for(let n of t){let t=String(Ya(La(e,n))??``),i=String(Ya(Ja(e,n))??``);r=Math.max(r,t.length,i.length)}let i=uo(e.renderType)===`badge`?24:0,a=r*io+ao+i;return Math.round(Math.min(Math.max(n,a,no),ro))}function uo(e){return String(e??``).trim().toLowerCase()}function fo(e,t){return e?.key??e?.value??e?.id??(t===void 0?void 0:String(t))}function po(e){return uo(e)}function mo(e){return[`all`,``].includes(po(e))}function ho(e,t,n,r,i){if(mo(t))return!0;let a=uo(n?.filterValue??n?.status??n?.title??n?.tabTitle??n?.name??(typeof n?.label==`string`?n.label:void 0)??n?.value??n?.key??t),o=n?.field??n?.fieldName??n?.filterField??n?.dataIndex??i;if(o)return uo(ua(e,o))===a;let s=r.filter(e=>{let t=uo(e.key),n=uo(e.label);return t.includes(`status`)||n.includes(`status`)});return(s.length?s:r).some(t=>uo(ua(e,t.key))===a)}function go(e,t,n){return typeof n==`function`?n(e,t):typeof n==`string`?e?.[n]:e.id??e._id??e.key??t}function _o(e){return!!e?.closest?.(`a,button,input,textarea,select,label,[role="button"],[role="menuitem"],.ant-checkbox,.ant-radio,.ant-dropdown,.ant-dropdown-trigger,.ant-table-selection-column,.job-field-actions,.job-row-eye-button`)}function vo(e){return e.label??e.name??e.title??e.value}function yo(e,t){return e.key??e.value??e.route??e.name??String(t)}var bo={delete:(0,l.jsx)(c.DeleteOutlined,{}),edit:(0,l.jsx)(c.EditOutlined,{}),mail:(0,l.jsx)(c.MailOutlined,{}),shareAlt:(0,l.jsx)(c.ShareAltOutlined,{}),swap:(0,l.jsx)(c.RightOutlined,{}),thunderbolt:(0,l.jsx)(c.ThunderboltOutlined,{}),userAdd:(0,l.jsx)(c.UserAddOutlined,{}),userSwitch:(0,l.jsx)(c.UserSwitchOutlined,{})};function xo(e,t){let n={key:e.key,label:t?t.label:e.label,icon:bo[e.icon]??void 0,danger:t?void 0:e.danger||void 0,disabled:!!t||void 0,title:t?t.label:void 0};return e.children?.length&&(n.children=e.children.map(e=>xo(e))),n}function So(e,t,n){return!e?.doneWhen?.field||!t?.length?null:t.every(t=>Er(e,t,n))?Er(e,t[0],n):null}function Co(e,t){return e.filter(t).map(e=>e.children?.length?{...e,children:Co(e.children,t)}:e)}function wo(e){let t=[];for(let n of e)t.push(n),n.children?.length&&t.push(...wo(n.children));return t}function To(e){return Array.isArray(e)?e.map((e,t)=>{let n=vo(e),r=yo(e,t);return!n||!r?null:{...e,key:String(r),label:n,route:e.route||e.routeTemplate||(e.actionType===`modal`&&(e.popupKey||r)?`/popup/${e.popupKey||r}`:``),children:e.children?.length?To(e.children):void 0}}).filter(Boolean):[]}function Eo(e){let t=String(e?.key??``).trim().toLowerCase(),n=String(e?.label??``).trim().toLowerCase(),r=String(e?.popupKey??``).trim().toLowerCase(),i=String(e?.route??e?.routeTemplate??``).trim().toLowerCase();return t===`change-status`||t===`changestatus`||n===`change status`||r===`change-status`||i.includes(`/popup/change-status`)}function Do(e){let t=e?.clientSubmissionStatus,n=t&&typeof t==`object`?t:null;return{id:Number(n?.clientSubmissionStatusId??n?.id??n?.uniqueId??e?.clientSubmissionStatusId??e?.clientStatusId??e?.[`clientSubmissionStatus.clientSubmissionStatusId`]??0)||0,text:uo(String(n?.clientSubmissionStatusText??n?.name??(typeof t==`string`?t:void 0)??e?.clientSubmissionStatusText??e?.clientStatusText??e?.clientStatus??e?.[`clientSubmissionStatus.clientSubmissionStatusText`]??``).trim())}}function Oo(e,t,n){let r=Do(e);return r.id>0&&t.has(r.id)?!0:!!(r.text&&n.has(r.text))}function ko(e,t,n){return e?.length?e.some(e=>Oo(e,t,n)):!1}function Ao(e,t){return!e.permissionKey||!t.length||t.every(t=>n.P(ra(t,`actionPermission.${e.permissionKey}`)))}function jo(e,t){return t?e===`asc`?`desc`:e===`desc`?``:`asc`:`asc`}function Mo(e){return e===`asc`?`Ascending`:e===`desc`?`Descending`:`Neutral`}function No({label:e,sortDir:t,sortable:n,onSort:r}){if(!n)return(0,l.jsx)(`span`,{className:`job-table-header-label`,children:e});let i=Mo(t);return(0,l.jsxs)(`div`,{className:`job-table-header-content`,children:[(0,l.jsx)(`span`,{className:`job-table-header-label`,title:typeof e==`string`?e:void 0,children:e}),(0,l.jsx)(s.Tooltip,{title:i,mouseEnterDelay:.08,classNames:{root:`job-sort-tooltip`},children:(0,l.jsx)(`button`,{type:`button`,className:`job-table-sort-trigger${t?` job-table-sort-trigger--active`:``}`,"aria-label":`Sort ${typeof e==`string`?e:`column`}, ${i}`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r?.()},children:(0,l.jsxs)(`span`,{className:`job-table-sort-icon-stack`,children:[(0,l.jsx)(c.CaretUpOutlined,{className:`job-table-sort-icon job-table-sort-icon--up${t===`asc`?` job-table-sort-icon--active`:``}`}),(0,l.jsx)(c.CaretDownOutlined,{className:`job-table-sort-icon job-table-sort-icon--down${t===`desc`?` job-table-sort-icon--active`:``}`})]})})})]})}function Po({moduleName:e,activeTabScope:t,pageSize:n,sort:r,sortDir:i,queryParams:a}){return[e??``,t??``,n,r??``,i??``,a?JSON.stringify(a):``].join(`|`)}function Fo(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:1}function Io(e){for(let t of e.keys()){let e=/^p(\d+)$/.exec(t);if(e)return Fo(e[1])}return 1}function Lo(e){[...e.keys()].forEach(t=>{(/^p\d+$/.test(t)||t===`page`)&&e.delete(t)})}var Ro=[],zo={};function Bo({record:e,fields:t,selected:n,onSelect:r,onPreview:i,onRecordClick:a,isControlled:o,selectionMode:c=`checkbox`,onPopupAction:u,permissions:d}){let f=t.find(e=>e.cardRole===`name`),p=t.find(e=>e.cardRole===`action`),m=t.find(e=>e.cardRole===`headerAction`),h=t.filter(e=>e!==f&&e!==p&&e!==m),g=f?ua(e,ea(f)):``,_=p?.render?p.render(ia(e,ea(p)),e):null,v=m?.render?m.render(ia(e,ea(m)),e):null;return(0,l.jsxs)(`div`,{className:`param-card${n?` param-card--selected`:``}`,"aria-selected":n,onClick:e=>{_o(e.target)||a?.()},role:a?`button`:void 0,tabIndex:a?0:void 0,onKeyDown:e=>{!a||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),a())},children:[(0,l.jsx)(`div`,{className:`param-card__header`,children:(0,l.jsxs)(`div`,{className:`param-card__name-row`,children:[c===`checkbox`&&(0,l.jsx)(s.Checkbox,{checked:n,onChange:r,onClick:e=>e.stopPropagation(),className:`param-card__checkbox`}),i&&(0,l.jsx)(`button`,{type:`button`,className:`job-row-eye-button`,"aria-label":`Preview`,onClick:e=>{e.stopPropagation(),i()},children:(0,l.jsx)(`img`,{src:`data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.00035%204.69941C4.74567%204.69941%203.72701%205.71807%203.72701%206.97275C3.72701%208.22745%204.74567%209.24609%206.00035%209.24609C7.25503%209.24609%208.2737%208.22745%208.2737%206.97275C8.2737%205.71807%207.25503%204.69941%206.00035%204.69941ZM6.00035%205.87128C6.60827%205.87128%207.10182%206.36485%207.10182%206.97275C7.10182%207.58067%206.60827%208.07422%206.00035%208.07422C5.39243%208.07422%204.89888%207.58067%204.89888%206.97275C4.89888%206.36485%205.39243%205.87128%206.00035%205.87128ZM2.06843%206.41445C2.85434%204.9331%204.16742%203.92578%206.00035%203.92578C7.83328%203.92578%209.14637%204.9331%209.93227%206.41445C10.0838%206.70013%2010.4388%206.80902%2010.7245%206.65745C11.0102%206.50587%2011.1191%206.15091%2010.9675%205.86523C9.97758%203.9994%208.30902%202.75391%206.00035%202.75391C3.69169%202.75391%202.02312%203.9994%201.03322%205.86523C0.881648%206.15091%200.990538%206.50587%201.27619%206.65745C1.56187%206.80902%201.91686%206.70013%202.06843%206.41445Z'%20fill='%23586888'/%3e%3c/svg%3e`,alt:``,className:`job-row-eye-icon`})}),(0,l.jsx)(Qi,{className:`param-card__name`,children:g}),v&&(0,l.jsx)(`div`,{className:`param-card__header-actions`,children:v})]})}),h.length>0&&(0,l.jsx)(`div`,{className:`param-card__body-fields`,children:h.map(t=>{let n=ea(t),r=ia(e,n),i=o&&typeof t.render==`function`?t.render(r,e):to(t,e,``,u,d);return(0,l.jsxs)(`div`,{className:`param-card__field-row`,children:[(0,l.jsx)(Qi,{className:`param-card__field-label`,children:$i(t)}),(0,l.jsx)(`div`,{className:`param-card__field-value`,children:i})]},n)})}),(0,l.jsx)(`div`,{className:`param-card__divider`}),(0,l.jsxs)(`div`,{className:`param-card__footer`,children:[(0,l.jsx)(`div`,{className:`param-card__footer-left`}),(0,l.jsx)(`div`,{className:`param-card__footer-right`,children:_})]})]})}function Vo(e){return!!(e.operator===`isEmpty`||e.operator===`notEmpty`||e.value||e.from||e.to||Array.isArray(e.values)&&e.values.length>0)}function Ho(e){return e.fieldLabel?e.fieldLabel:(e.field??``).replace(/([A-Z])/g,` $1`).replace(/^(.)/,e=>e.toUpperCase()).trim()}function Uo(e){if(e.operator===`isEmpty`)return`Is Empty`;if(e.operator===`notEmpty`)return`Not Empty`;if(e.value)return`"${e.value}"`;if(e.from&&e.to)return`${e.from} to ${e.to}`;if(e.from)return`from ${e.from}`;if(e.to)return`to ${e.to}`;if(Array.isArray(e.values)&&e.values.length>0){let t=e.values.slice(0,2).join(`, `);return e.values.length>2?`${t} +${e.values.length-2}`:t}return``}function Wo({filters:e,onRemove:t,onClearAll:n}){let r=(e??[]).map((e,t)=>({row:e,originalIdx:t})).filter(({row:e})=>e.field&&Vo(e));return r.length===0?null:(0,l.jsxs)(s.Flex,{gap:6,wrap:`wrap`,align:`center`,className:`filter-chips-bar`,children:[(0,l.jsx)(Qi,{className:`filter-chips-bar__label`,children:`Filters:`}),r.map(({row:e,originalIdx:n})=>(0,l.jsxs)(s.Tag,{closable:!0,onClose:()=>t(n),className:`filter-chip`,children:[(0,l.jsx)(`span`,{className:`filter-chip__field`,children:Ho(e)}),(0,l.jsx)(`span`,{className:`filter-chip__sep`,children:`: `}),(0,l.jsx)(`span`,{className:`filter-chip__value`,children:Uo(e)})]},`${e.field}-${n}`)),r.length>1&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,onClick:n,className:`filter-chips-clear`,children:`Clear all`})]})}function Go({moduleName:e,authToken:r,actions:i=[],actionRules:a=[],breadcrumbItems:u=[],dataSource:f=[],className:p=``,initialPageSize:m=10,onAction:h,onSummaryClick:g,rowKey:_,showSummaryButton:v=!1,summaryButtonLabel:y=`View Summary`,summaryRoute:b,showFieldButton:x=!0,showFilterButton:S=!0,fieldButtonLabel:C=`View Field`,fieldButtonRoute:w,tabs:T,tabTitleOverrides:E=null,tableClassName:D=`job-list-table`,fields:O=Ro,fieldOverrides:k=null,extraFields:A=Ro,listName:j=``,loading:M=!1,total:N,current:F,pageSize:I,onPageChange:L,onPageSizeChange:R,onSearch:z,toolbarExtra:B=null,showSearch:V=!0,searchPlaceholder:ee=`Min 3 Chars, press Enter to search`,searchFields:te=Ro,showViewToggle:ne=!1,activeView:re=`list`,onViewChange:ie,autoCardForExternalRows:H=!0,createAction:ae,onRecordClick:oe,selectedRecordId:se,selectionMode:ce=`checkbox`,compact:U=!1,onSelectionChange:le,selectedSource:ue,onTabChange:de,fetchData:fe=In,responseMapper:pe=di,queryParams:W=zo,defaultVisibleColumnCount:me=6,showAdd:he=!0,lockOuterPageScroll:ge=!1}){let _e=(0,d.useNavigate)(),G=(0,d.useLocation)(),K=n.Sn(e),[ve,ye]=(0,o.useState)(()=>new Set),[be,xe]=(0,o.useState)(()=>new Set);(0,o.useEffect)(()=>{if(uo(K)!==`submissions`){ye(new Set),xe(new Set);return}let e=!1,n=new URLSearchParams({masterName:`clientSubmissions`,offset:`0`,limit:`100`});return t.b&&n.set(`app_id`,t.b),t.o(t.x,`/masters/dropdown?${n.toString()}`).then(t=>{if(e)return;let n=(Array.isArray(t?.data)?t.data:[]).filter(e=>e?.isTerminalStatus===!0);ye(new Set(n.map(e=>Number(e?.id??e?.uniqueId??0)).filter(e=>e>0))),xe(new Set(n.map(e=>uo(e?.name)).filter(Boolean)))}).catch(()=>{e||(ye(new Set),xe(new Set))}),()=>{e=!0}},[K]);let Se=!!ge,{canView:Ce,canAdd:we,canEdit:Te,canDelete:Ee}=lr(K),De=JSON.stringify(W??zo),Oe=(0,o.useMemo)(()=>W??zo,[De]),[ke]=(0,d.useSearchParams)(),Ae=Io(ke),[je,Me]=(0,o.useState)(()=>String(ue??``).trim()||`all`),[Ne,Pe]=(0,o.useState)(``),[Fe,Ie]=(0,o.useState)(``),[Le,Re]=(0,o.useState)(!1),[Be,Ve]=(0,o.useState)([]),[q,J]=(0,o.useState)([]),[Y,X]=(0,o.useState)([]),[He,Ue]=(0,o.useState)(0),[We,Ge]=(0,o.useState)({current:Ae,pageSize:m}),[Ke,qe]=(0,o.useState)({sort:``,sortDir:``}),[Je,Ye]=(0,o.useState)([]),[Xe,Ze]=(0,o.useState)(!1),[Qe,$e]=(0,o.useState)([]);(0,o.useEffect)(()=>(r&&t.g(r),()=>{r&&t.r()}),[r]),(0,o.useEffect)(()=>{if(Se)return document.documentElement.classList.add(`listview-page-scroll-lock`),document.body.classList.add(`listview-page-scroll-lock`),()=>{document.documentElement.classList.remove(`listview-page-scroll-lock`),document.body.classList.remove(`listview-page-scroll-lock`)}},[Se]);let et=(0,o.useRef)(null),[tt,nt]=(0,o.useState)(0),rt=(0,o.useRef)(),it=(0,o.useRef)(``);(0,o.useEffect)(()=>{let e=et.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&nt(t)});return t.observe(e),()=>t.disconnect()},[]);let at=(e,t)=>String(go(e,t,_)),ot=(e,t)=>String(at(e,t))===String(se??``),st=(e,t)=>{let n=at(e,t);n&&oe?.(e,n)},ct=(e,t)=>{J(e),X(t),le?.(e,t)},[lt,ut]=(0,o.useState)(f),[dt,ft]=(0,o.useState)(f.length),[pt,mt]=(0,o.useState)([]),[ht,gt]=(0,o.useState)([]),[_t,vt]=(0,o.useState)(``),[yt,bt]=(0,o.useState)([]),[xt,St]=(0,o.useState)([]),[Ct,wt]=(0,o.useState)(!1),[Tt,Et]=(0,o.useState)(!1),[Dt,Ot]=(0,o.useState)(null),[kt,At]=(0,o.useState)(null),[jt,Mt]=(0,o.useState)(!1),Nt=!!(L||R||z),Pt=Nt?f:lt,Ft=Nt?N??0:dt,It=Nt?O:ht,Lt=(0,o.useMemo)(()=>Pt.some(e=>la(e)),[Pt]),Rt=(0,o.useMemo)(()=>It.some(e=>ca(e)),[It]),zt=H&&(Lt||Rt)?`card`:re,Bt=i.length>0?i:yt,Vt=a.length>0?a:xt,Ht=(0,o.useMemo)(()=>To(Bt),[Bt]),Ut=(0,o.useMemo)(()=>new Map(wo(Ht).map(e=>[e.key,e])),[Ht]),Wt=(0,o.useMemo)(()=>Co(Ht,e=>{let t=dr(e);return t===`add`&&!we||t===`edit`&&!Te||t===`delete`&&!Ee||!n.F(e.permission,K)||e.showInList===!1?!1:!e.allowedTabs||e.allowedTabs.some(e=>uo(e)===uo(je))}),[Ht,je,we,Te,Ee,K]),Gt=(0,o.useMemo)(()=>Co(Wt,e=>(q.length===1||e.allowMultiple||e.danger)&&Ao(e,Y)&&!(uo(K)===`submissions`&&Eo(e)&&ko(Y,ve,be))&&!Dr(e.key,Y,Vt,je)),[je,K,Vt,q.length,Y,ve,be,Wt]),Kt=typeof e==`string`?e.trim().length>0:!!e,qt=Kt?`/${K}-create${ae?`?action=${encodeURIComponent(ae)}`:``}`:``;(0,o.useEffect)(()=>{Kt&&!Ce&&_e(`/`,{replace:!0})},[Ce,Kt,_e]);let Jt=(e,{replace:t=!1}={})=>{let n=new URLSearchParams(ke);Lo(n);let r=[n.toString(),e>1?`p${e}`:``].filter(Boolean).join(`&`);r!==G.search.replace(/^\?/,``)&&_e({pathname:G.pathname,search:r?`?${r}`:``},{replace:t})},Yt=(e,t)=>{Ge(t=>({...t,current:e})),Jt(e,t)},Xt=()=>{Yt(1,{replace:!0})},{config:Zt,loading:Qt,error:$t}=$n(!Nt&&Kt?e:null),en=(0,o.useCallback)(e=>{let t=Ke.sort===e,n=jo(Ke.sortDir,t),r=n?String(e):``;qe({sort:r,sortDir:n}),typeof z==`function`&&z(r,n),Xt()},[z,Xt,Ke.sort,Ke.sortDir]);(0,o.useEffect)(()=>{Ge(e=>e.current===Ae?e:{...e,current:Ae})},[Ae]),(0,o.useEffect)(()=>{Nt&&Ge(e=>{let t=Fo(F??e.current),n=Number(I)>0?Number(I):e.pageSize;return e.current===t&&e.pageSize===n?e:{current:t,pageSize:n}})},[F,I,Nt]);let tn=G.state?.refreshTimestamp;(0,o.useEffect)(()=>{tn&&(ct([],[]),Ue(e=>e+1))},[tn]);let nn=(0,o.useMemo)(()=>{let e=[...Array.isArray(T)?T:[],...pt],t=po(je);return e.find((e,n)=>po(fo(e,n))===t)},[je,pt,T]),rn=nn?.field??nn?.fieldName??nn?.filterField??nn?.dataIndex??_t,an=mo(je)?``:je,on=!an&&!mo(je)&&uo(rn).length>0,sn=Fe.trim().length>=3,cn=sn?Fe.trim():``,ln=Be.some(e=>e.field),un=Po({moduleName:e,activeTabScope:an,pageSize:We.pageSize,sort:Ke.sort,sortDir:Ke.sortDir,queryParams:Oe}),dn=We.current===1&&kt?.key===un,fn=Number(kt?.total),pn=sn?Number.isFinite(fn)&&fn>0?fn:dt:0;(0,o.useEffect)(()=>{if(Nt)return;if(!Kt){ut([]),ft(0),mt([]),gt([]),vt(``),bt([]),St([]),Ot(null);return}let t=po(an);if(it.current&&it.current===t){it.current=``;return}let n=!1,r=sn&&pn>We.pageSize,i=r?pn:We.pageSize,a=r?0:(We.current-1)*We.pageSize;return wt(!(!sn&&!ln&&We.current===1&&dn)),Ot(null),fe(e,i,a,{scope:an,sort:Ke.sort,sortDir:Ke.sortDir,search:cn,filters:Be,queryParams:Oe}).then(t=>{if(n)return;let{rows:r,total:i,tabs:a,fields:o,tabField:s,actions:c,actionRules:l}=pe(t,e),u=!ue&&mo(je)&&Array.isArray(a)&&a.length>0&&!a.some((e,t)=>mo(fo(e,t)))?fo(a[0],0):``,d=Po({moduleName:e,activeTabScope:u?String(u):an,pageSize:We.pageSize,sort:Ke.sort,sortDir:Ke.sortDir,queryParams:Oe});ut(r),ft(i),mt(a),gt(o),vt(s),bt(c),St(l),u&&(it.current=po(u),Me(e=>po(e)===po(u)?e:String(u))),!sn&&!ln&&We.current===1&&At({key:d,rows:r,total:i,tabs:a,fields:o,tabField:s,actions:c,actionRules:l})}).catch(e=>{n||(ut([]),ft(0),mt([]),gt([]),vt(``),bt([]),St([]),Ot(e.message),Kt&&s.message.error(`Invalid module name or data could not be loaded.`))}).finally(()=>{n||(wt(!1),Et(!0))}),()=>{n=!0}},[cn,je,an,Be,fe,ln,sn,Kt,Nt,e,We.current,We.pageSize,He,pe,pn,ue,Ke.sort,Ke.sortDir,Oe]);let mn=(0,o.useMemo)(()=>{let e=Nt&&Array.isArray(O)&&O.length,t=!Nt&&Array.isArray(ht)&&ht.length,n=!$t&&Array.isArray(Zt)&&Zt.length,r=e?O:t?ht:n?Zt:[],i=new Map(ht.map(e=>[ea(e),e]).filter(([e])=>e)),a=r.map(e=>{let t=ea(e),n=i.get(t)??{},r=t&&k&&typeof k==`object`?k[t]:null,a=r?.renderConfig?{...n.renderConfig??e.renderConfig??{},...r.renderConfig}:e.renderConfig??n.renderConfig??null;return{...n,...e,...r??{},...a?{renderConfig:a}:{},key:t,label:$i(r??e)??$i(e)??$i(n)}}).filter(e=>e.key&&e.label),o=(Array.isArray(A)?A:[]).map((e,t)=>{let n=ea(e);return n?{...e,key:n,label:$i(e)??`Field ${t+1}`,isVirtual:e.isVirtual??!0,isVisible:typeof e.isVisible!=`boolean`||e.isVisible}:null}).filter(Boolean);return Va([...a,...o])},[Zt,$t,O,A,k,Nt,ht]),hn=(0,o.useMemo)(()=>mn.filter(e=>typeof e.isVisible==`boolean`?e.isVisible:typeof e.isVisible!=`string`||e.isVisible.toLowerCase()===`true`).map(e=>({key:e.key,label:e.label})),[mn]),gn=hn.map(e=>e.key),_n=Je.filter(e=>gn.includes(e)),vn=_n.length?_n:hn.slice(0,me).map(e=>e.key),yn=Math.min(me,hn.length),bn=vn.length>me,xn=(0,o.useMemo)(()=>mn.filter(e=>!e.cardHidden&&(e.tableHidden||vn.includes(e.key))),[mn,vn]),Sn=(0,o.useMemo)(()=>{let e=Ne.toLowerCase(),t=Pt,n=on?t.filter(e=>ho(e,je,nn,mn,rn)):t,r=te.length?mn.filter(e=>te.includes(e.key)):mn;return!e||e.length<3?n:n.filter(t=>r.some(n=>String(ua(t,n.key)).toLowerCase().includes(e)||qa(n).some(n=>String(ua(t,n)).toLowerCase().includes(e))))},[je,nn,rn,on,Pt,mn,Ne,te]),Cn=(0,o.useMemo)(()=>{if(!sn)return Sn;let e=(We.current-1)*We.pageSize;return Sn.slice(e,e+We.pageSize)},[Sn,sn,We.current,We.pageSize]),wn=sn?Sn.length:Ft,Tn=Fe.trim().length>=3,En=String(Sn.length).padStart(2,`0`),Dn=Ft>0||Pt.length>0,On=Dn||Ne.trim().length>0||Fe.trim().length>0,kn=Kt?Dt?`Invalid module name or data could not be loaded.`:$t?`Field configuration failed to load.`:`No data found.`:`Please provide a module name to view data.`,An=(0,o.useMemo)(()=>!E||typeof E!=`object`?null:Object.entries(E).reduce((e,[t,n])=>(n==null||(e[String(t)]=String(n)),e),{}),[E]),jn=(0,o.useMemo)(()=>{let t=Array.isArray(T)?T:[],n=!t.length,r=t.length?t:pt.length?pt:[{key:`all`,title:e??`List`,count:wn}],i=!!(An&&Object.keys(An).length);return!n&&!i?r:r.map((e,t)=>{if(!e||typeof e!=`object`)return e;let r=i?An[String(fo(e,t))]:void 0;if(!r&&!n)return e;let a={...e};if(r&&(a.title=r),n){if(Tt){let t=Number(e.count??e.countValue);a.count=Number.isFinite(t)?t:0}else delete a.count,delete a.countValue}return a})},[Tt,e,pt,An,wn,T]);(0,o.useEffect)(()=>{if(!jn.length||!((pt?.length??0)>0||Array.isArray(T)&&T.length>0))return;let e=po(je);if(!jn.some((t,n)=>po(fo(t,n))===e)){let e=fo(jn[0],0);e&&Me(String(e))}},[je,jn,pt,T]),(0,o.useEffect)(()=>{if(ue===void 0||!jn.length)return;let e=jn.find((e,t)=>po(fo(e,t))===po(ue));if(!e)return;let t=String(fo(e,jn.indexOf(e)));(ue!==rt.current||po(je)!==po(t))&&(rt.current=ue,Me(e=>po(e)===po(t)?e:t))},[je,jn,ue]);let Mn=e=>{let t=mn.map(e=>{let t={};return Object.entries(e).forEach(([e,n])=>{typeof n!=`function`&&(t[e]=n)}),t});_e(`/popup/preview`,{state:{background:G,moduleName:K,record:e,fields:t}})},Nn=(e,t,n={})=>{let r=Ca(e,t),i=r.startsWith(`/`)?r:`/${r}`,a=t?._id??t?.id;_e(i,{state:{background:G,selectedIds:a===void 0?[]:[a],selectedRecords:[t],moduleName:K,popupContext:n.popupState??{},popupAction:{key:n.key,apiMethod:n.apiMethod,apiPath:n.apiPath,defaultTemplateId:n.defaultTemplateId,requireJobId:n.requireJobId,popupKey:n.popupKey,actionType:n.actionType??n.type,popupFieldOverrides:n.popupFieldOverrides},requireJobId:n.requireJobId,...n.popupState}})},Pn=(0,o.useMemo)(()=>{let e={dataIndex:`icons`,key:`icons`,visibilityKey:`jobsGroup`,fixed:`left`,width:25,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,className:`job-row-icons`,children:[(0,l.jsx)(`button`,{type:`button`,className:`job-row-eye-button`,"aria-label":`Preview job`,onClick:()=>Mn(t),children:(0,l.jsx)(`img`,{src:Xi,alt:``,className:`job-row-eye-icon`})}),t.hasLinkedIn&&(0,l.jsx)(s.Tooltip,{title:`LinkedIn`,children:(0,l.jsx)(c.LinkedinFilled,{className:`job-row-linkedin-icon`})})]})},t=mn.filter(e=>vn.includes(e.key)).map((e,t)=>{let n=Ke.sort===e.key?Ke.sortDir:``;return{title:No({label:e.label,sortDir:n,sortable:Dn,onSort:()=>en(e.key)}),dataIndex:e.key,key:e.key,fixed:t===0?`left`:void 0,ellipsis:{showTitle:!1},width:lo(e,Cn),render:(t,n)=>to(e,n,Fe,Nn,{canAdd:we,canEdit:Te,canDelete:Ee},Vt,an)}});if(!(bn||Nt)&&tt>0&&t.length>0){let n=e.width+(Dn&&ce===`checkbox`?48:0)+co,r=t.reduce((e,t)=>e+t.width,0),i=tt-n-r;i>0&&r>0&&t.forEach(e=>{e.width=Math.floor(e.width+i*(e.width/r))})}return[e,...t]},[je,we,Ee,Te,Fe,Vt,en,bn,Dn,Nt,G,e,_e,mn,Cn,ce,Ke.sort,Ke.sortDir,tt,Wt,vn]),Fn=(0,o.useCallback)(e=>{let t=jn.find((t,n)=>po(fo(t,n))===po(e)),n=String(t?fo(t,jn.indexOf(t)):e);if(Me(n),J([]),X([]),Xt(),typeof de==`function`){let e=t?.key??t?.value??t?.id??n;rt.current=e,de(e)}},[de,jn,Xt]);function Ln(e,n,r){let i=Ut.get(String(e));if(i&&i.actionType!==`group`){if(typeof h==`function`&&h({key:i.key,label:i.label,selectedIds:n,selectedRecords:r}),typeof i.onClick==`function`){i.onClick({action:i,selectedIds:n,selectedRecords:r});return}if(i.actionType===`copy`){let e=r.map(e=>ra(e,i.copyField||`id`)??e?._id).filter(e=>e!=null);navigator.clipboard.writeText(e.join(`
|
|
2
2
|
`)).then(()=>s.message.success(`Copied to clipboard`)).catch(()=>s.message.error(`Could not copy to clipboard`));return}if(i.actionType===`api`&&i.apiPath){let e=r[0]??{},a=Ca(i.apiPath,e);t.o(t.x,a.startsWith(`/`)?a:`/${a}`,{method:i.apiMethod||`POST`,body:[`GET`,`DELETE`].includes(String(i.apiMethod).toUpperCase())?void 0:JSON.stringify({ids:n,records:r})}).then(()=>{s.message.success(`${i.label} completed`),Ue(e=>e+1)}).catch(e=>s.message.error(e.message||`${i.label} failed`));return}if(i.route){let e=r[0]??{},t=Ca(i.route,e),a=t.startsWith(`/`)?t:`/${t}`;if(i.route.startsWith(`/popup/`)||i.route.startsWith(`popup/`)){let t=i.popupKey||i.route?.replace(/^\/popup\//i,``)||``,o=/(?:^|\/)(?:quick(?:-|_)?submit|submit)(?:$|\/)/i.test(t),s=new URLSearchParams(G.search).get(`jobId`),c=i.popupState?.jobId??i.popupState?.jobID??i.popupState?.jobId??e.jobId??e.job?.id??e.job?._id??s,l=i.popupState?.candidateId??i.popupState?.applicantId??e.id??e._id??e.applicantId??e.candidateId;if(o&&c&&l){let e=new URLSearchParams;e.set(`candidateId`,String(l)),e.set(`isFromSubmission`,`false`),_e(`/submission-create/${encodeURIComponent(String(c))}?${e.toString()}`);return}_e(a,{state:{background:G,selectedIds:n,selectedRecords:r,moduleName:K,popupContext:i.popupState??{},popupAction:{key:i.key,apiMethod:i.apiMethod,apiPath:i.apiPath,defaultTemplateId:i.defaultTemplateId,requireJobId:i.requireJobId,popupFieldOverrides:i.popupFieldOverrides},...i.popupState}});return}_e(a)}}}function Rn({key:e}){let t=wo(Gt).find(t=>String(t.key)===String(e));t&&So(t,Y,je)||Ln(e,q,Y)}let zn=vn.length===hn.length,Bn=vn.length>0&&!zn,Vn=(e,t)=>{Ye(n=>{let r=hn.slice(0,me).map(e=>e.key),i=n.length?n:r;return t?i.includes(e)?i:[...i,e]:i.length<=yn?i:i.filter(t=>t!==e)})},Hn=()=>{if(typeof g==`function`){g();return}if(b){_e(b);return}Mt(!0)},Un=()=>{w&&_e(w)};(0,o.useEffect)(()=>{if(!jt)return;let e=e=>{e.key===`Escape`&&Mt(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[jt]);let Wn=()=>{dn&&(ut(kt.rows),ft(kt.total),mt(kt.tabs),gt(kt.fields),vt(kt.tabField),bt(kt.actions??[]),St(kt.actionRules??[]),Ot(null),wt(!1))},Gn=e=>{let t=e.target.value,n=t.trim().length<3,r=Be.some(e=>e.field);n&&(Ie(``),r||Wn()),Pe(t),Xt()},Kn=()=>{let e=Ne.trim();e.length>=3&&(Ie(e),Xt())},qn=()=>{Wn(),Ve([]),ct([],[]),Xt()};(0,o.useEffect)(()=>{zt===`card`&&($e([]),ct([],[]))},[We.current,We.pageSize,je,zt]);let Jn=e=>{$e(t=>{let n=t.includes(e)?t.filter(t=>t!==e):[...t,e],r=Cn.filter((e,t)=>n.includes(String(go(e,t,_))));return ct(n,r),n})},Yn=(0,l.jsxs)(`div`,{className:`column-visibility-menu`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(s.Checkbox,{checked:zn,indeterminate:Bn,onChange:e=>{Ye(e.target.checked?hn.map(e=>e.key):hn.slice(0,me).map(e=>e.key))},children:`Select All`}),(0,l.jsx)(`div`,{className:`column-visibility-menu__list`,children:hn.map(e=>(0,l.jsx)(s.Checkbox,{checked:vn.includes(e.key),disabled:vn.includes(e.key)&&vn.length<=yn,onChange:t=>Vn(e.key,t.target.checked),children:e.label},e.key))})]});return(0,l.jsxs)(`div`,{className:`antd dynamic-list-view${U?` list-view--compact`:``}${Se?` list-view--page-scroll-lock`:``} ${p}`.trim(),children:[u.length>0&&(0,l.jsx)(`div`,{className:`job-list-header`,children:(0,l.jsx)(n.t,{items:u})}),(0,l.jsx)(s.Card,{className:`job-tabs-card`,children:(0,l.jsxs)(s.Flex,{align:`center`,justify:`space-between`,children:[(0,l.jsx)(P,{activeKey:je,tabs:jn,onChange:Fn}),(0,l.jsxs)(s.Flex,{align:`center`,gap:8,children:[B,On&&(0,l.jsx)(s.Input,{prefix:(0,l.jsx)(c.SearchOutlined,{className:`job-search-icon`}),placeholder:ee,value:Ne,onChange:Gn,onPressEnter:Kn,allowClear:!0,className:`job-search-input`}),!Nt&&we&&he&&(0,l.jsx)(s.Tooltip,{title:`Add`,children:(0,l.jsx)(s.Button,{"aria-label":`Add`,className:`job-toolbar-icon-button`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{qt&&_e(qt)}})}),Dn&&(0,l.jsx)(s.Tooltip,{title:`Filter`,children:(0,l.jsx)(s.Badge,{count:Be.filter(e=>e.field&&Vo(e)).length,size:`small`,offset:[-2,2],children:(0,l.jsx)(s.Button,{"aria-label":`Filter`,className:`job-toolbar-icon-button`,icon:(0,l.jsx)(c.FilterOutlined,{}),onClick:()=>Re(!0)})})}),ne&&Dn&&(0,l.jsxs)(s.Flex,{align:`center`,gap:6,children:[(0,l.jsx)(s.Tooltip,{title:`List View`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${zt===`list`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.UnorderedListOutlined,{}),onClick:()=>{ie?.(`list`),$e([]),ct([],[])}})}),(0,l.jsx)(s.Tooltip,{title:`Card View`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${zt===`card`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),onClick:()=>{ie?.(`card`),$e([]),ct([],[])}})})]}),v&&(0,l.jsx)(s.Button,{className:`job-summary-button`,type:`primary`,onClick:Hn,children:y}),x&&w&&(0,l.jsx)(s.Button,{className:`job-summary-button`,type:`primary`,onClick:Un,children:C})]})]})}),Dn&&(0,l.jsx)(l.Fragment,{children:(0,l.jsx)(s.Card,{className:`job-toolbar-card`,children:(0,l.jsxs)(s.Flex,{className:`p-flex`,align:`center`,justify:`space-between`,children:[(0,l.jsxs)(s.Flex,{align:`center`,gap:3,children:[zt===`card`&&(0,l.jsx)(s.Checkbox,{checked:Cn.length>0&&Qe.length>=Cn.length,indeterminate:Qe.length>0&&Qe.length<Cn.length,className:`param-card-view__select-all`,onChange:()=>{if(Qe.length>0)$e([]),ct([],[]);else{let e=Cn.map((e,t)=>String(go(e,t,_)));$e(e),ct(e,[...Cn])}},children:`Select All`}),(0,l.jsx)(s.Dropdown,{open:Xe,onOpenChange:Ze,trigger:[`click`],popupRender:()=>Yn,placement:`bottomLeft`,classNames:{root:`column-visibility-dropdown`},children:(0,l.jsx)(s.Button,{"aria-label":`Display columns`,type:`text`,icon:(0,l.jsx)(`img`,{src:`data:image/svg+xml,%3csvg%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cmask%20id='path-1-inside-1_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='1.40039'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-1-inside-1_8856_23533)'/%3e%3cmask%20id='path-2-inside-2_8856_23533'%20fill='white'%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'/%3e%3c/mask%3e%3crect%20x='1.40039'%20y='7.50781'%20width='5.09086'%20height='5.09086'%20rx='0.727266'%20stroke='%23586888'%20stroke-width='1.5'%20mask='url(%23path-2-inside-2_8856_23533)'/%3e%3cline%20x1='7.375'%20y1='2.93555'%20x2='12.225'%20y2='2.93555'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='5.83398'%20x2='12.225'%20y2='5.83398'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='8.87305'%20x2='12.225'%20y2='8.87305'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3cline%20x1='7.375'%20y1='11.7227'%20x2='12.225'%20y2='11.7227'%20stroke='%23586888'%20stroke-width='0.75'%20stroke-linecap='round'/%3e%3c/svg%3e`,alt:``,className:`job-action-list-icon`}),size:`small`,className:`job-actions-button job-column-display-button`,children:(0,l.jsx)(c.DownOutlined,{className:`job-actions-caret`})})}),Gt.length>0&&q.length>0&&(0,l.jsx)(s.Dropdown,{menu:{items:Gt.map(e=>xo(e,So(e,Y,je))),onClick:Rn},trigger:[`click`],children:(0,l.jsxs)(s.Button,{type:`text`,size:`small`,className:`job-actions-button job-actions-menu-button`,children:[(0,l.jsx)(`img`,{src:`data:image/svg+xml,%3csvg%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.6279%206.78121C12.6857%206.88148%2012.7014%207.00057%2012.6715%207.11239C12.6417%207.22422%2012.5688%207.31967%2012.4688%207.37785L7.21875%2010.4403C7.15185%2010.4794%207.0758%2010.4999%206.99836%2010.4999C6.92092%2010.4999%206.84487%2010.4794%206.77797%2010.4403L1.52797%207.37785C1.42936%207.31859%201.35806%207.22289%201.32951%207.11145C1.30095%207.00001%201.31744%206.88181%201.37539%206.78244C1.43335%206.68306%201.52811%206.61052%201.63916%206.5805C1.75022%206.55048%201.86863%206.56542%201.96875%206.62207L7%209.55605L12.0312%206.62207C12.1315%206.56428%2012.2506%206.54858%2012.3624%206.57841C12.4743%206.60824%2012.5697%206.68116%2012.6279%206.78121ZM1.3125%204.37496C1.31267%204.29833%201.33297%204.22309%201.37136%204.15677C1.40975%204.09045%201.46489%204.03538%201.53125%203.99707L6.78125%200.934566C6.84815%200.895555%206.9242%200.875%207.00164%200.875C7.07908%200.875%207.15513%200.895555%207.22203%200.934566L12.472%203.99707C12.5381%204.0356%2012.5929%204.09076%2012.6309%204.15707C12.669%204.22337%2012.6891%204.2985%2012.6891%204.37496C12.6891%204.45142%2012.669%204.52654%2012.6309%204.59285C12.5929%204.65915%2012.5381%204.71432%2012.472%204.75285L7.22203%207.81535C7.15513%207.85436%207.07908%207.87491%207.00164%207.87491C6.9242%207.87491%206.84815%207.85436%206.78125%207.81535L1.53125%204.75285C1.46489%204.71453%201.40975%204.65946%201.37136%204.59314C1.33297%204.52682%201.31267%204.45159%201.3125%204.37496ZM2.61844%204.37496L7%206.93105L11.3816%204.37496L7%201.81886L2.61844%204.37496ZM7.65625%2011.7993L7%2012.1821L1.96875%209.24707C1.86913%209.19747%201.75436%209.18769%201.64779%209.21973C1.54122%209.25177%201.45087%209.32322%201.39512%209.41953C1.33937%209.51583%201.32241%209.62977%201.3477%209.73814C1.37299%209.84651%201.43863%209.94117%201.53125%2010.0028L6.78125%2013.0653C6.84815%2013.1044%206.9242%2013.1249%207.00164%2013.1249C7.07908%2013.1249%207.15513%2013.1044%207.22203%2013.0653L8.09703%2012.5551C8.14746%2012.5266%208.19171%2012.4883%208.22723%2012.4426C8.26275%2012.3968%208.28882%2012.3444%208.30394%2012.2885C8.31906%2012.2326%208.32291%2012.1742%208.31529%2012.1167C8.30766%2012.0593%208.28871%2012.004%208.25952%2011.9539C8.23033%2011.9039%208.19149%2011.8601%208.14526%2011.8252C8.09903%2011.7903%208.04632%2011.7649%207.9902%2011.7505C7.93408%2011.7361%207.87566%2011.7331%207.81833%2011.7414C7.761%2011.7498%207.70591%2011.7695%207.65625%2011.7993Z'%20fill='%236B7280'/%3e%3cpath%20d='M10.6036%2011.3825L13.4607%209.4477C13.5813%209.36599%2013.614%209.20256%2013.5341%209.08069L13.0105%208.282C12.9303%208.15966%2012.7665%208.12478%2012.6434%208.20383L9.54053%2010.1964L8.94939%2011.4054C8.84904%2011.6106%209.03632%2011.8387%209.25715%2011.7803L10.4338%2011.469C10.4561%2011.4631%2010.4776%2011.4543%2010.4977%2011.4429L10.6036%2011.3825ZM9.54053%2010.1964L10.6036%2011.3825'%20stroke='%236B7280'%20stroke-width='0.6'/%3e%3c/svg%3e`,alt:``,className:`job-actions-frame-icon`}),`Actions `,(0,l.jsx)(c.DownOutlined,{className:`job-actions-caret`})]})}),q.length>0&&(0,l.jsxs)(Qi,{className:`job-selected-count`,children:[`Selected (`,q.length,`)`]})]}),Tn&&(0,l.jsxs)(Qi,{className:`job-search-results-count`,children:[`Search Results (`,En,`)`]})]})})}),ln&&(0,l.jsx)(Wo,{filters:Be,onRemove:e=>{let t=Be.filter((t,n)=>n!==e);Ve(t),Xt()},onClearAll:qn}),(0,l.jsx)(`div`,{ref:et,className:`job-table-measure`,children:(0,l.jsx)(s.Spin,{spinning:Nt?M:Qt||Ct,children:zt===`card`?Cn.length===0?(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:kn,className:`param-card-view__empty`,children:!Nt&&we&&he&&qt&&!Dt&&(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>_e(qt),children:`Add New`})}):(0,l.jsx)(`div`,{className:`param-card-view__grid`,children:Cn.map((e,t)=>{let n=String(go(e,t,_));return(0,l.jsx)(Bo,{record:e,fields:xn,selected:ce===`checkbox`?Qe.includes(n):ot(e,t),isControlled:Nt,onPreview:()=>Mn(e),onSelect:()=>Jn(n),onPopupAction:Nn,onRecordClick:oe?()=>st(e,t):void 0,selectionMode:ce,permissions:{canAdd:we,canEdit:Te,canDelete:Ee}},n)})}):(0,l.jsx)(s.Table,{rowSelection:Dn&&ce===`checkbox`?{type:`checkbox`,fixed:!0,columnWidth:48,selectedRowKeys:q,onChange:(e,t)=>{ct(e,t)},columnTitle:(()=>{let e=Cn.length,t=e>0&&q.length>=e,n=q.length>0&&!t;return(0,l.jsx)(s.Checkbox,{checked:t,indeterminate:n,onChange:()=>{if(n||t)ct([],[]);else{let e=Cn.map((e,t)=>go(e,t,_));ct(e,[...Cn])}}})})()}:void 0,columns:Pn,dataSource:Cn,size:`middle`,tableLayout:`fixed`,scroll:{x:bn||Nt?`max-content`:void 0,y:`calc(100vh - 300px)`},pagination:!1,locale:{emptyText:(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:kn})},className:`${D} ${U?`list-view-table--compact`:``}`.trim(),onRow:oe?(e,t)=>({onClick:n=>{_o(n.target)||st(e,t)},"aria-selected":ot(e,t)}):void 0,rowClassName:se==null?void 0:(e,t)=>ot(e,t)?`list-view-row--active`:``,rowKey:(e,t)=>go(e,t,_)})})}),Dn?(0,l.jsx)(ze,{current:We.current,pageSize:We.pageSize,total:wn,onChange:(e,t)=>{if(Nt&&typeof L==`function`){L(e,t??We.pageSize);return}Yt(e)},onPageSizeChange:e=>{if(Nt&&typeof R==`function`){R(e);return}Ge({current:1,pageSize:e}),Jt(1,{replace:!0})}}):void 0,(0,l.jsx)(Yi,{moduleName:K,open:Le,filters:Be,onClose:()=>Re(!1),onApply:({filters:e})=>{Ve(e),Xt()},onReset:qn}),(0,l.jsx)(Li,{moduleName:K,open:jt,rows:lt,tabs:jn,total:wn,onClose:()=>Mt(!1)})]})}var Ko=new Map,qo=0;function Jo(e){let t=`ph_${Date.now()}_${qo+=1}`;return Ko.set(t,e),e.finally(()=>{setTimeout(()=>Ko.delete(t),0)}).catch(()=>{}),t}function Yo(e){if(!e)return;let t=Ko.get(e);return Ko.delete(e),t}async function Xo({jobId:e,applicantId:n,timeoutMs:r=15e3}){if(!e||!n)return[];let i=new AbortController,a=setTimeout(()=>i.abort(),r);try{let r=await t.a(),a=await fetch(`${t.x}/skill-match`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`},body:JSON.stringify({jobId:e,applicantId:n}),signal:i.signal});if(!a.ok)return[];let o=await a.json(),s=o?.data?.relevantSkills??o?.relevantSkills;return Array.isArray(s)?s.filter(e=>typeof e==`string`&&e.trim()):[]}catch{return[]}finally{clearTimeout(a)}}async function Zo({isFromSubmission:e,jobId:n,submissionId:r,search:i=``}={}){let a={search:i};e?a.submissionId=r:a.jobId=n;let o=await t.o(t.S,`/quicksubmit/list`,{method:`POST`,body:JSON.stringify(a)});return o.data??o}async function Qo(e){if(!e)throw Error(`Dice candidate ID is required`);let n=await t.a(),r=`${t.x}/dicemigrate/${encodeURIComponent(String(e))}`;process.env.NODE_ENV===`development`&&console.log(`[DiceMigration] Request URL:`,r);let i=await fetch(r,{method:`GET`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`}}),a=await i.json().catch(()=>null);if(!i.ok){let e=Error(a?.message??a?.error??`Failed to migrate candidate (${i.status})`);throw e.status=i.status,e}return a}function $o(e){return e&&typeof e==`object`?$o(e.value??e.key??e.id??e.label??e.name):String(e??``).trim().toLowerCase()}function es(e){return(Array.isArray(e)?e:[e]).flat().map($o).filter((e,t,n)=>e&&e!==`all`&&n.indexOf(e)===t)}function ts(e,t=`internal`){let n=es(e);if(n.includes(`internal`))return`internal`;let r=$o(t);return n[0]?n[0]:r||(t===``?``:`internal`)}function ns(e,t){let n={...t??{}};return(Array.isArray(e)?e:[]).flatMap(e=>Array.isArray(e?.options)?e.options:[]).forEach(e=>{let t=$o(e?.value),r=String(e?.module??``).trim();t&&r&&(n[t]=r)}),n}function rs(e){return String(e??``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim().replace(/\b\w/g,e=>e.toUpperCase())}function is(e){return $o(as(e))}function as(e){let t=e?.key??e?.value??e?.id??e?.source??e?.name??e?.title??e?.label;return String(t??``).trim()}function os(e){let t=e?.count??e?.countValue,n=Number(t);return Number.isFinite(n)?n:void 0}function ss(e,t,n,r,i){let a=Number(t?.[e]);if(Number.isFinite(a))return a;if(e===r){let e=Number(i);if(Number.isFinite(e))return e}let o=n.get(e);if(o!==void 0)return o}function cs({sources:e=[],activeSource:t=`internal`,activeCount:n=0,responseCounts:r={},currentTabs:i=[],backendTabs:a=[]}={}){let o=new Map((Array.isArray(i)?i:[]).map(e=>[is(e),os(e)]).filter(([e,t])=>e&&t!==void 0)),s=new Map,c=es(e),l=$o(t);return(c.length?c:l?[l]:[]).forEach(e=>{if(!e||s.has(e))return;let i=ss(e,r,o,t,n);s.set(e,{key:e,title:rs(e),...i===void 0?{}:{count:i}})}),(Array.isArray(a)?a:[]).forEach(e=>{let t=is(e);if(!t)return;let n=s.get(t),r=os(e)??n?.count??o.get(t);s.set(t,{key:n?n.key:as(e),title:e.title??e.label??e.name??n?.title??rs(t),...r===void 0?{}:{count:r}})}),Array.from(s.values())}function ls(e){return[e?.sourceType,e?.profileSource,e?.selectedSource,e?.source,e?.provider,e?.customFields?.sourceType,e?.customFields?.profileSource,e?.customFields?.source,e?.customFields?.provider].flat().map($o).filter(Boolean)}function us(e,t,n){let r=$o(t);return r?ls(e).includes(r)?!0:typeof n==`function`&&n(e):!1}var ds=[{source:`dice`,field:`__sourceAction_dice_migrate`,label:`Action`,buttonLabel:`Migrate`,completedLabel:`Migrated`,successMessage:`Candidate migrated successfully.`,errorMessage:`Failed to migrate candidate.`,isRecordFromSource:e=>!!e?.customFields?.diceProfileData,getRecordId:r.r,execute:Qo}];function fs({rows:e=[],selectedSource:t=``}={}){return ds.filter(n=>$o(t)===n.source||e.some(e=>us(e,n.source,n.isRecordFromSource)))}function ps(e,t,n=``){return $o(n)===e.source||us(t,e.source,e.isRecordFromSource)}function ms(e,t){let n=e?.getRecordId?.(t);return n?`${e.source}:${e.field}:${n}`:``}async function hs(e,t){let n=e?.getRecordId?.(t);if(!n)throw Error(`${e?.buttonLabel??`Action`} ID is required`);return e.execute(n,t)}var gs=e.t({default:()=>vc}),{Text:_s}=s.Typography,{TextArea:vs}=s.Input,ys=[],bs=[(0,l.jsx)(c.UserOutlined,{}),(0,l.jsx)(c.EnvironmentOutlined,{}),(0,l.jsx)(c.SolutionOutlined,{}),(0,l.jsx)(c.InfoCircleOutlined,{}),(0,l.jsx)(c.FileTextOutlined,{})],xs={email:(0,l.jsx)(c.MailOutlined,{className:`v1-input-icon`}),contactNumber:(0,l.jsx)(c.PhoneOutlined,{className:`v1-input-icon`}),phone:(0,l.jsx)(c.PhoneOutlined,{className:`v1-input-icon`}),currentLocation:(0,l.jsx)(c.EnvironmentOutlined,{className:`v1-input-icon`}),preferredLocation:(0,l.jsx)(c.EnvironmentOutlined,{className:`v1-input-icon`}),skills:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),firstName:(0,l.jsx)(c.UserOutlined,{className:`v1-input-icon`}),lastName:(0,l.jsx)(c.UserOutlined,{className:`v1-input-icon`})},Ss=e=>e===!0||e===1||e===`1`,Cs=(e,t)=>(e?.edit===void 0||Ss(e.edit))&&(!e?.editablePermission||n.F(e.editablePermission,t));function ws(e=[]){return e.map(e=>typeof e==`string`?{label:e,value:e}:{label:e.label??e.name??e.value,value:e.value??e.id??e.name??e.label})}function Ts(e){return String(e??``).split(`.`).map(e=>e.trim()).filter(Boolean)}function Es(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function Ds({form:e,field:t,absoluteName:r}){let[i,a]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),d=(0,o.useRef)(null),f=s.Form.useWatch(t.verifyResultField?Es(r,t.verifyResultField):[`__noop_verify__`],{form:e,preserve:!0}),p=s.Form.useWatch(r,e);return(0,o.useEffect)(()=>{let n=String(p??``).trim();if(f===!0&&d.current===null&&n){d.current=n;return}f===!0&&d.current!==null&&n!==d.current&&(t.verifyResultField&&e.setFieldValue(Es(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(Es(r,t.verifyTimestampField),void 0),d.current=null)},[r,p,t.verifyResultField,t.verifyTimestampField,e,f]),t.verifyAction===`email`?f===!0?c&&!c.mailboxConfirmed&&(c.catchAll||c.result===`risky`)?(0,l.jsx)(s.Tooltip,{title:c.reason||`This domain accepts every address, so the mailbox could not be confirmed. Delivery is proven only once the account email is actually sent.`,children:(0,l.jsx)(_s,{type:`warning`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifyUnconfirmedLabel||`Accepted`})}):(0,l.jsx)(_s,{type:`success`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifySuccessLabel||`Valid`}):(0,l.jsx)(s.Button,{size:`small`,loading:i,onClick:async()=>{let i=String(p??``).trim();if(!i){s.message.warning(`Enter an email first`);return}a(!0);try{let a=await n.bi(i);d.current=a.valid?i:null,u(a.valid?a:null),t.verifyResultField&&e.setFieldValue(Es(r,t.verifyResultField),a.valid),t.verifyTimestampField&&e.setFieldValue(Es(r,t.verifyTimestampField),a.valid?new Date().toISOString():void 0),a.valid?a.mailboxConfirmed?s.message.success(`Email verified — the mail server confirmed this mailbox`):s.message.warning(a.reason||`The domain can receive mail, but this exact mailbox could not be confirmed`):s.message.error(a.reason?`Invalid email: ${a.reason}`:`Email could not be verified`)}catch(n){d.current=null,u(null),t.verifyResultField&&e.setFieldValue(Es(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(Es(r,t.verifyTimestampField),void 0),s.message.error(n?.message||`Could not verify email`)}finally{a(!1)}},className:`v1-verify-field-wrap`,children:f===!1?t.verifyRetryLabel||`Re Verify`:t.verifyIdleLabel||`Verify Email`}):null}function Os({form:e,field:t,siblingPrefix:r,locked:i,combined:a=!1}){let o=s.Form.useWatch(n.r(t?.labelWhen,r),e),c=n.a(t,o,a);return a?c:(0,l.jsx)(pc,{field:t,label:c,locked:i})}function ks({form:e,groups:t,action:n,disabled:r,loading:i,onFire:a}){let o=s.Form.useWatch(e=>t.some(t=>{if(!t.addRow||!t.requireValidatedField)return!1;let n=e?.[t.name]??[];return n.length===0||n.some(e=>!e?.[t.requireValidatedField])}),{form:e,preserve:!0}),c=s.Form.useWatch(n?.enabledWhen?.field,e),u=!n?.enabledWhen?.field||Ns(n.enabledWhen,c);return(0,l.jsx)(s.Button,{type:n?.tone===`primary`?`primary`:`default`,onClick:a,disabled:r||o||!u,loading:i,children:n?.label||`Submit`})}function As({form:e,groups:t,disabled:n,loading:r,onClick:i,children:a}){let o=s.Form.useWatch(e=>t.some(t=>{if(!t.addRow||!t.requireValidatedField)return!1;let n=e?.[t.name]??[];return n.length===0||n.some(e=>!e?.[t.requireValidatedField])}),{form:e,preserve:!0}),c=n||o,u=t.find(e=>e.submitDisabledMessage)?.submitDisabledMessage,d=t.find(e=>e.requireValidatedField)?.requireValidatedFieldMessage,f=o?d||u||`Verify every required row before submitting.`:u||`Complete all mandatory fields before submitting.`,p=(0,l.jsx)(s.Button,{type:`primary`,onClick:i,disabled:c,loading:r,children:a});return c&&!r?(0,l.jsx)(s.Tooltip,{title:f,children:(0,l.jsx)(`span`,{style:{display:`inline-flex`,cursor:`not-allowed`},children:p})}):p}function js({form:e,rules:t,watchPaths:r,targetPath:i,resetOnNoMatch:a=!0}){let c=s.Form.useWatch(e=>JSON.stringify(r.map(({path:t})=>t.reduce((e,t)=>e==null?e:e[t],e)??null)),{form:e,preserve:!0}),l=(0,o.useRef)(void 0),u=(0,o.useRef)(!0);return(0,o.useEffect)(()=>{let o=c?JSON.parse(c):[],s={};r.forEach(({field:e},t)=>{s[e]=o[t]});let d=u.current;u.current=!1;let f=n.G({rules:t,watched:s,current:e.getFieldValue(i),lastApplied:l.current,clearOnMismatch:a,initial:d});f.action===`set`?(e.setFieldValue(i,f.value),l.current=f.value):f.action===`clear`&&(e.setFieldValue(i,void 0),l.current=void 0)},[c]),null}function Ms({form:e,config:n,watchPath:r}){let i=s.Form.useWatch(r,e),a=(0,o.useRef)(void 0);return(0,o.useEffect)(()=>{if(Ws(i)||i===a.current)return;a.current=i;let r=n.endpointTemplate?`${n.endpointTemplate.replace(`{value}`,encodeURIComponent(String(i)))}`:`${n.endpoint}?${new URLSearchParams({[n.queryParam]:String(i)}).toString()}`;t.o(t.x,r).then(t=>{let r=t?.data??t;if(n.substituteTokens){(n.substituteInFields||[]).forEach(t=>{let i=Ts(t),a=e.getFieldValue(i)||``;Object.entries(n.substituteTokens).forEach(([e,t])=>{let n=e.replace(/^\{\{|\}\}$/g,``).trim(),i=RegExp(`\\{\\{\\s*${n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}\\s*\\}\\}`,`gi`);a=a.replace(i,r?.[t]??``)}),e.setFieldValue(i,a)});return}Object.entries(n.mapResponseToFields).forEach(([t,i])=>{let a=Ts(t);n.onlyIfEmpty&&!Ws(e.getFieldValue(a))||e.setFieldValue(a,r?.[i])})}).catch(()=>{})},[i]),null}function Ns(e,t){if(!e?.field)return!0;let n=String(t??``),r=String(e.value??``),i=()=>r.split(`,`).map(e=>e.trim());switch(e.operator){case`eq`:return n===r;case`neq`:return n!==r;case`in`:return i().includes(n);case`notIn`:return!i().includes(n);case`truthy`:return Ss(t);case`falsy`:return!Ss(t);case`empty`:case`isEmpty`:return t==null||n.trim()===``||Array.isArray(t)&&t.length===0;case`notEmpty`:return!(t==null||n.trim()===``||Array.isArray(t)&&t.length===0);default:return!0}}function Ps({form:e,showIf:t,render:n}){return Ns(t,s.Form.useWatch(t.field,e))?n():null}var Fs=(0,o.createContext)(!1);function Is({form:e,group:t,children:n,inheritParent:r=!0}){let i=(0,o.useContext)(Fs),a=t?.disabledIf?.field?Ts(t.disabledIf.field):[`__noop_group_disabled__`],c=s.Form.useWatch(a,e),u=t?.disabledIf?.field?Ns(t.disabledIf,c):!1,d=r&&i||!!t?.disabled||u;return(0,l.jsx)(Fs.Provider,{value:d,children:n})}function Ls(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}function Rs(e){return e==null||e===``?!1:Array.isArray(e)?e.length>0&&e.some(Rs):typeof e!=`object`||Object.values(e).some(Rs)}function zs(e){return Array.isArray(e)?e:Array.isArray(e?.groups)?e.groups:Array.isArray(e?.data)?e.data:Array.isArray(e?.data?.groups)?e.data.groups:ys}function Bs(e=[],t,r,i){let a=i instanceof Map?i:new Map;return[...zs(e)].filter(e=>!Ss(e.hideGroup)&&!Ss(e.hideGroupInForm)&&n.ln(r,e.name)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,fields:[...e.fields??[]].map(e=>{let t=a.get(e.field);return!t||!t.forceShow&&!t.forceReq?e:{...e,...t.forceShow?{show:1}:null,...t.forceReq?{req:1}:null}}).filter(i=>String(i.field??``).trim()!==``&&i.showOnAdd!==!1&&!Ss(i.clientScope)&&(!i.visiblePermission||n.F(i.visiblePermission,t))&&n.sn(r,e.name,i.field)).map(t=>n.cn(r,e.name,t.field)?t:{...t,disabled:!0}).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function Vs(e){if(!Array.isArray(e))return null;let t={};return e.forEach(e=>{e.addRow||(e.fields??[]).forEach(e=>{!e.field||e.value===void 0||e.value===null||(t[e.field]=e.value,e.payloadKey&&e.payloadKey!==e.field&&(t[e.payloadKey]=e.value))})}),Object.keys(t).length>0?t:null}function Hs(e,t){if(!(!e||!t))for(let r of[t.prefillFrom,t.field,t.payloadKey]){if(!r)continue;let t=e[r];if(t??=n.Zt(e,r),t??=n.$(e,r),t!=null)return t}}function Us(e){if(Array.isArray(e))return e.flatMap(e=>Us(e));if(!e||typeof e!=`object`)return[];let t=nn(e),n=rn(e);return!t&&!n?[]:[{uid:n||t||`-1`,name:t||`file`,status:`done`,url:n,existing:!0,stored:e}]}var Ws=e=>e==null||e===``,Gs=e=>String(e).replace(/<[^>]*>/g,``).replace(/ /g,` `).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).trim(),Ks=({label:e,message:t,value:n,compare:r,text:i})=>({validator:(a,o)=>Ws(o)||r(Number(o),Number(n))?Promise.resolve():Promise.reject(Error(t??`${e} ${i} ${n}`))});function qs(e,t){return n.rt(e,t)}var Js=({label:e,message:t,value:n,rule:r,form:i,name:a,compare:o,text:s})=>({validator:async(c,l)=>{let u=n??r.compareField??r.field;if(!u||Ws(l))return Promise.resolve();let d=i.getFieldValue(qs(a,u));if(Ws(d))return Promise.resolve();let f=Number(l),p=Number(d);return Number.isNaN(f)||Number.isNaN(p)||o(f,p)?Promise.resolve():Promise.reject(Error(t??`${e} ${s} ${u}`))}}),Ys={noPastDate:({label:e,message:t})=>({validator:(r,i)=>{if(Ws(i))return Promise.resolve();let a=n.g(i);if(a===null)return Promise.resolve();let o=new Date;return o.setHours(0,0,0,0),a<o.getTime()?Promise.reject(Error(t??`${e} cannot be a past date`)):Promise.resolve()}}),noFutureDate:({label:e,message:t})=>({validator:(r,i)=>{if(Ws(i))return Promise.resolve();let a=n.g(i);if(a===null)return Promise.resolve();let o=new Date;return o.setHours(23,59,59,999),a>o.getTime()?Promise.reject(Error(t??`${e} cannot be a future date`)):Promise.resolve()}}),minAge:({label:e,message:t,value:r})=>({validator:(e,i)=>{if(Ws(i))return Promise.resolve();let a=n.g(i);if(a===null)return Promise.resolve();let o=Number(r??18),s=new Date;return s.setFullYear(s.getFullYear()-o),s.setHours(23,59,59,999),a>s.getTime()?Promise.reject(Error(t??`Must be at least ${o} years old`)):Promise.resolve()}}),dateAfterField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>n.p({type:`dateAfterField`,label:e,rule:{...i,value:r??i?.compareField??i?.field,message:t},readSibling:e=>a.getFieldValue(qs(o,e))}),dateBeforeField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>n.p({type:`dateBeforeField`,label:e,rule:{...i,value:r??i?.compareField??i?.field,message:t},readSibling:e=>a.getFieldValue(qs(o,e))}),timeAfterField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=r??i.compareField??i.field;if(!l||Ws(c))return Promise.resolve();let u=a.getFieldValue(qs(o,l));if(Ws(u))return Promise.resolve();let d=n._(c),f=n._(u);return d===null||f===null||d>f?Promise.resolve():Promise.reject(Error(t??`${e} must be after ${l}`))}}),timeBeforeField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=r??i.compareField??i.field;if(!l||Ws(c))return Promise.resolve();let u=a.getFieldValue(qs(o,l));if(Ws(u))return Promise.resolve();let d=n._(c),f=n._(u);return d===null||f===null||d<f?Promise.resolve():Promise.reject(Error(t??`${e} must be before ${l}`))}}),greaterThanField:e=>Js({...e,compare:(e,t)=>e>=t,text:`must be greater than or equal to`}),strictGreaterThanField:e=>Js({...e,compare:(e,t)=>e>t,text:`must be greater than`}),strictLessThanField:e=>Js({...e,compare:(e,t)=>e<t,text:`must be less than`}),lessThanOrEqualField:e=>Js({...e,compare:(e,t)=>e<=t,text:`must be less than or equal to`}),maxFromField:e=>n.at(e),maxFieldWithFallback:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=n.tt(r??i.compareFields),u=n.et({input:c,compareFields:l,readValue:e=>n.nt(a,o,e)});return u.ok?Promise.resolve():Promise.reject(Error(t??`${e} must not exceed ${u.field}`))}}),required:({field:e,message:t})=>({validator:(n,r)=>{let i=r==null||r===``||Array.isArray(r)&&r.length===0;return!i&&e?.type===`text-editor`&&(i=Gs(r)===``),i?Promise.reject(Error(t??`Mandatory Field`)):Promise.resolve()}}),email:({label:e,message:t})=>n.Tt(e,t),unique:({field:e,rule:t,uniqueContext:r})=>n.vt({field:e,validation:t,context:r}),emailTags:({label:e,message:t})=>({validator:(r,i)=>{let a=(Array.isArray(i)?i:[]).find(e=>!n.Et(e));return a?Promise.reject(Error(t??`${e} contains an invalid email: ${a}`)):Promise.resolve()}}),noHtml:({label:e,message:t})=>({validator:(n,r)=>r==null||r===``?Promise.resolve():/<\/?[a-z][\s\S]*>/i.test(String(r))?Promise.reject(Error(t??`${e} cannot contain HTML tags`)):Promise.resolve()}),url:({label:e,message:t})=>({type:`url`,message:t??`Enter valid ${e}`}),number:({label:e,message:t})=>({pattern:/^[0-9]+$/,message:t??`${e} must be a number`}),phone:({message:e})=>({validator:(t,r)=>{if(r==null||r===``)return Promise.resolve();let{total:i}=n.Hn();return n.Un(r).length===i?Promise.resolve():Promise.reject(Error(e??`Phone number must contain exactly ${i} digits`))}}),minLength3:e=>Ys.min({...e,value:3}),minLength5:e=>Ys.min({...e,value:5}),len:({label:e,message:t,value:n})=>({len:Number(n),message:t??`${e} must be ${n} characters`}),pattern:({label:e,message:t,rule:n})=>({pattern:new RegExp(n.pattern??n.value,n.flags),message:t??`Enter valid ${e}`}),min:({field:e,label:t,message:n,value:r})=>e.type===`number`?Ks({label:t,message:n,value:r,compare:(e,t)=>e>=t,text:`must be at least`}):{validator:(i,a)=>{if(a==null||a===``)return Promise.resolve();let o=e.type===`text-editor`?Gs(a):String(a);return o===``||o.length>=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must be at least ${r} characters`))}},max:({field:e,label:t,message:n,value:r})=>e.type===`number`?Ks({label:t,message:n,value:r,compare:(e,t)=>e<=t,text:`must not exceed`}):{validator:(i,a)=>{if(a==null||a===``)return Promise.resolve();let o=e.type===`text-editor`?Gs(a):String(a);return o===``||o.length<=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must not exceed ${r} characters`))}}};function Xs(e,t,n,r,i,a){let o=typeof e==`string`?{type:e}:e,s=o.type??o.rule??o.name,c=o.value??o.length??o.min??o.max,l=t.label??t.field??`Field`,u=Ys[s];return u?u({field:t,label:l,message:o.message,rule:o,value:c,form:n,name:r,prefixFor:i,uniqueContext:a}):o}function Zs(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function Qs(e,t,n){return Ss(e?.req)||(e?.validations??e?.validation??e?.rules??[]).some(e=>(typeof e==`string`?e:e?.type)===`required`)?!0:e?.requiredIfField&&t&&n?Ss(t.getFieldValue(Zs(n,e.requiredIfField))):!1}function $s(e,t,r,i=!1,a=void 0,o=void 0,s=void 0){let c=e.label??e.field??`Field`,l=e.validations??e.validation??e.rules??[],u=l.some(e=>(typeof e==`string`?e:e?.type)===`required`),d=l.some(e=>(typeof e==`string`?e:e?.type)===`email`),f=[];if(s?.length&&f.push(...s),e.rowHierarchy){let i=nc(t,r);i.rows&&f.push(n.m({field:e,...i}))}!i&&!u&&Ss(e.req)&&e.disabledByField?f.push({validator:(n,i)=>Ss(t.getFieldValue(Zs(r,e.disabledByField)))?Promise.resolve():i==null||i===``?Promise.reject(Error(`Mandatory Field`)):Promise.resolve()}):!i&&!u&&e.requiredIfField?f.push({validator:(n,i)=>Ss(t.getFieldValue(Zs(r,e.requiredIfField)))&&(i==null||i===``)?Promise.reject(Error(`Mandatory Field`)):Promise.resolve()}):!i&&Ss(e.req)&&!u&&f.push({required:!0,message:`Mandatory Field`}),(e.type===`email`||e.formatter===`email`)&&!d&&f.push(n.Tt(c)),e.type===`number`&&f.push(Ss(e.decimal)?{pattern:/^\d+(\.\d+)?$/,message:`${c} must be a number`}:{pattern:/^[0-9]+$/,message:`${c} must be a number`});let p=n.an(e,r,a,n=>Xs(n,e,t,r,a,o));return n._t([...f,...l.map(p),n.on(e)])}function ec(e,t){let n=(e.validations??e.validation??e.rules??[]).find(e=>(typeof e==`string`?e:e?.type)===t);if(!(!n||typeof n==`string`))return n.value??n.length??n[t]}function tc(e){let t=e.len??ec(e,`len`),n=e.min??ec(e,`min`),r=e.max??ec(e,`max`);return e.type===`number`?{min:n??void 0,max:r??void 0}:{minLength:n??void 0,maxLength:e.maxLength??t??r??void 0}}function nc(e,t){if(!Array.isArray(t)||t.length<3||typeof t[1]!=`number`)return{};let n=e.getFieldValue(t[0]);return Array.isArray(n)?{rows:n,rowIndex:t[1]}:{}}function rc(e,t,r){return n.f({field:e,readSibling:e=>t.getFieldValue(qs(r,e)),...nc(t,r)})}function ic(e){return n.h(e)}function ac(e,t){return t?t===`phone`?n.zn(e):t===`digits`?e.replace(/\D/g,``).slice(0,10):t===`email`||t===`noSpaces`?e.replace(/\s/g,``):t===`name`?e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()):e:e}function oc(e=``){let t=String(e).toLowerCase();return t===`job`?`jobs`:t===`candidate`?`candidates`:t===`submissions`?`submission`:t}var sc=new Set([`selectedSource`,`source`,`sourceType`,`scope`]);function cc(e){return e==null?!1:typeof e==`string`?e.trim().length>0:typeof e==`number`?Number.isFinite(e):typeof e==`boolean`?e:u.default.isDayjs(e)?e.isValid():Array.isArray(e)?e.some(cc):typeof e==`object`?`value`in e||`label`in e||`name`in e?cc(e.value??e.label??e.name):Object.entries(e).some(([e,t])=>!sc.has(e)&&cc(t)):!1}function lc(e={}){return Object.entries(e??{}).some(([e,t])=>!sc.has(e)&&cc(t))}function uc(e,t,r={},i=``){let a=new FormData;n.Yt(e,t,{scope:`flat`,module:i}).forEach(({formKey:e,file:t})=>{a.append(e,t)});let o={...r,...n.qt(e,t,{module:i})};return o.schemaVersion=1,a.append(`json`,JSON.stringify(o)),a}function dc({field:e,form:r,name:i,moduleName:a,value:u,checked:d,onChange:f,scopeValues:p={},onAiUpload:m,onDuplicateBlur:h,onRegionBlocked:g,onRowOrderChange:_,formDisabled:v,rowFieldKeys:y}){let b=e.type??`text`,x=!Cs(e,a),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(``),[O,k]=(0,o.useState)(``),[A,j]=(0,o.useState)(``),[M,N]=(0,o.useState)(0),[P,F]=(0,o.useState)({open:!1,docs:[],index:0}),[I,L]=(0,o.useState)(null),R=(0,o.useRef)([]),z=Array.isArray(i)&&i.length>=3&&typeof i[1]==`number`,B=e.lookupFilterValueFrom?Ts(e.lookupFilterValueFrom):[`__lookup_filter_${e.field}`],V=e.lookupFilterValueFrom&&z?[...i.slice(0,2),...Ts(e.lookupFilterValueFrom)]:[`__noop_row_filter__`],ee=s.Form.useWatch(B,r),te=s.Form.useWatch(V,r),ne=Ws(te)?ee:te,re=e.disabledByField?Array.isArray(i)&&i.length>1?[...i.slice(0,-1),e.disabledByField]:[e.disabledByField]:[`__noop_disabled_watch__`],ie=s.Form.useWatch(re,r),H=e.disabledIf?.field?Ts(e.disabledIf.field):[`__noop_disabled_if__`],ae=e.disabledIf?.field&&z?[...i.slice(0,2),...Ts(e.disabledIf.field)]:[`__noop_disabled_if_row__`],oe=s.Form.useWatch(H,r),se=s.Form.useWatch(ae,r),ce=e.disabledIf?.field?n.i(e.disabledIf,Ws(se)?oe:se):!1,U=e.optionsFromField||``,le=U?Ts(U):[`__noop_options_from__`],ue=U&&z&&(!y||y.has(U))?[...i.slice(0,2),...Ts(U)]:[`__noop_options_from_row__`],de=s.Form.useWatch(le,r),fe=s.Form.useWatch(ue,r),pe=Ws(fe)?de:fe,W=Ss(e.prefillWhenExclusive)&&e.prefillWhen?.length?e.prefillWhen:null,me=s.Form.useWatch(e=>W?JSON.stringify(n.U(W).map(t=>{let n=t=>t.reduce((e,t)=>e==null?e:e[t],e),r=z&&(!y||y.has(t))?n([...i.slice(0,2),...Ts(t)]):void 0;return(Ws(r)?n(Ts(t)):r)??null})):``,{form:r,preserve:!0}),he=(0,o.useMemo)(()=>{if(!W||!me)return null;let e=JSON.parse(me),t={};return n.U(W).forEach((n,r)=>{t[n]=e[r]}),t},[me]),ge=(0,o.useContext)(Fs),_e=e.exclusiveInGroup&&z?[i[0]]:[`__noop_exclusive_watch__`],G=s.Form.useWatch(_e,r),K=(0,o.useMemo)(()=>{if(!e.exclusiveInGroup||!z||!Array.isArray(G))return!1;let t=i[1],n=i[i.length-1];return G.some((e,r)=>r!==t&&Ss(e?.[n]))},[e.exclusiveInGroup,z,G,i]),ve=e.lookupFilterValueFrom?p[e.lookupFilterValueFrom]:void 0,ye=Ws(ve)?ne:ve,be=(0,o.useRef)(n.I);(0,o.useEffect)(()=>{if(!e.lookupFilterField||!e.lookupFilterValueFrom)return;let t=be.current;be.current=ye,n.L({previous:t,next:ye,currentValue:r.getFieldValue(i)})&&r.setFields([{name:i,value:void 0,errors:[]}])},[ye]);let xe=e.locationCountryFrom?Ts(e.locationCountryFrom):[`__noop_loc_country__`],Se=e.locationCountryFrom&&z?[...i.slice(0,2),...Ts(e.locationCountryFrom)]:[`__noop_loc_country_row__`],Ce=s.Form.useWatch(xe,r),we=s.Form.useWatch(Se,r),Te=Ws(we)?Ce:we,Ee=e.locationStateFrom?Ts(e.locationStateFrom):[`__noop_loc_state__`],De=e.locationStateFrom&&z?[...i.slice(0,2),...Ts(e.locationStateFrom)]:[`__noop_loc_state_row__`],Oe=s.Form.useWatch(Ee,r),ke=s.Form.useWatch(De,r),Ae=Ws(ke)?Oe:ke,je=e.dataSource===`locationMaster`&&(e.locationLevel===`state`&&Ws(Te)||e.locationLevel===`city`&&(Ws(Te)||Ws(Ae))),Me=x||!!e.disabled||ce||(e.disabledByField?Ss(ie):!1)||!!v||ge||K||je;(0,o.useEffect)(()=>{if(b===`location`){let n=!1;T(!0);async function r(){try{let r=new URLSearchParams({search:E,limit:String(e.limit??50),offset:`0`}),i=await t.o(t.x,`/admin/location-dropdown-values?${r}`),a=i?.data??i??[];n||C(ws(Array.isArray(a)?a:[]))}catch(t){console.error(`[AddFormV1] Failed to fetch locations for "${e.field}":`,t),n||C([])}finally{n||T(!1)}}return r(),()=>{n=!0}}let r=e.dataSource;if(![`select`,`radio`,`checkbox`].includes(b)||!r||r===`static`)return;if(r===`lookup`&&e.lookupFilterField&&Ws(ye)){C([]),T(!1);return}if(r===`lookup`&&e.lookupMinSearchLength&&O.trim().length<e.lookupMinSearchLength){C([]),T(!1);return}let i=!1;T(!0);async function o(){try{let o=[];if(r===`master`||r===`module`)o=await n.yn(a,e.field,r===`master`?A:``,e.limit??50,0,{dataSource:r,masterName:e.masterName,groupName:e.groupName});else if(r===`lookup`){let r=new URLSearchParams({collection:e.lookupCollection??``,displayField:e.displayField??``,valueField:e.valueField??`_id`});e.displayField2&&r.set(`displayField2`,e.displayField2),O&&r.set(`search`,O),e.lookupFilterField&&!Ws(ye)&&(r.set(`filterField`,e.lookupFilterField),r.set(`filterValue`,String(ye))),Array.isArray(e.filters)&&e.filters.length>0&&r.set(`filters`,JSON.stringify(e.filters));let i={field:e.field,extraFields:e.extraFields,optionsRequireExtraField:e.optionsRequireExtraField,optionsRequireExtraValue:e.optionsRequireExtraValue,optionsHierarchyParentField:e.optionsHierarchyParentField,optionsHierarchySelfFrom:e.optionsHierarchySelfFrom},a=n.B(i);a.length&&r.set(`extraFields`,a.join(`,`));let s=await t.o(t.x,`/admin/lookup-dropdown-values?${r}`);o=s?.data??s??[],o=n.z(o,i,{source:`AddFormV1`})}else if(r===`locationMaster`){let n=e.locationLevel||`country`;if(n===`state`&&Ws(Te))o=[];else if(n===`city`&&(Ws(Te)||Ws(Ae)))o=[];else{let r=new URLSearchParams({level:n,limit:String(e.limit??250),offset:`0`});Ws(Te)||r.set(`country`,String(Te)),Ws(Ae)||r.set(`state`,String(Ae)),O&&r.set(`search`,O);let i=await t.o(t.x,`/admin/location-dropdown-values?${r}`);o=i?.data??i??[]}}else if(r===`group`){let n=(e.groupName??``).toLowerCase().trim();if(n===`users`||n===`user`){let n=await t.o(t.x,`/get-all-users?limit=500&offset=0`),r=n?.data?.users??n?.users??n?.data??[],i=String(e.groupRoleContains??``).trim().toLowerCase(),a=i?Array.isArray(r)?r.filter(e=>String(e.roleName??``).toLowerCase().includes(i)):[]:r;o=Array.isArray(a)?a.map(e=>({label:[e.firstName,e.lastName].filter(Boolean).join(` `).trim()||e.userName||e.email||String(e.userId),value:e.userId??e.id})):[]}}i||(R.current=Array.isArray(o)?o:[],C(ws(R.current)))}catch(t){console.error(`[AddFormV1] Failed to fetch options for "${e.field}":`,t),i||C([])}finally{i||T(!1)}}return o(),()=>{i=!0}},[b,e.dataSource,e.field,e.limit,e.lookupCollection,e.displayField,e.displayField2,e.valueField,e.lookupFilterField,ye,e.groupName,e.groupRoleContains,e.masterName,E,O,A,a,e.extraFields,e.optionsRequireExtraField,e.optionsRequireExtraValue,e.optionsHierarchyParentField,e.optionsHierarchySelfFrom,M,e.lookupMinSearchLength,e.locationLevel,e.locationCountryFrom,e.locationStateFrom,Te,Ae]);let Ne=ws(e.options??e.values??[]),Pe=S??Ne,[Fe,Ie]=(0,o.useState)([]),Le=n.b(u,Pe).join(`,`);(0,o.useEffect)(()=>{if(!Le||e.dataSource!==`lookup`||w)return;let t=!1;return n.v(e,Le.split(`,`)).then(e=>{t||Ie(e)}).catch(()=>{t||Ie([])}),()=>{t=!0}},[Le,e.dataSource,e.lookupCollection,e.displayField,e.displayField2,e.valueField,w]);let Re=n.y(Pe,Fe),ze=U?n.V(Re,pe):Re,Be=W?n.H(ze,W,he??{}):ze,Ve=(e.multiSelect?`multiple`:e.mode??(Ss(e.multiple)?`multiple`:void 0))??(n.Xt(e)===`array`?`multiple`:void 0),q=Ss(e.allowCustomValues),J=q?`tags`:Ve,Y=!!e.multiSelect||Ss(e.multiple)||n.Xt(e)===`array`||Ve===`multiple`,X=q?typeof e.tokenSeparators==`string`&&e.tokenSeparators?e.tokenSeparators.split(``):[`,`]:void 0,He=[`select`,`location`].includes(b),Ue=e.hidePlaceholder?void 0:e.placeholder??`${He?`Select`:`Enter`} ${String(e.label??``).toLowerCase()}`,We=tc(e),Ge=e=>{f?.(e),setTimeout(()=>{r.validateFields([i]).catch(()=>{})},0)},Ke=n.st({field:e,form:r,name:i,moduleName:a,scopeValues:p,ownValue:u,onDone:(t,a)=>{N(e=>e+1);let o=n.Xt(e)!==`array`&&!e.multiSelect&&!e.multiple;t===`create`&&a!=null&&o&&((e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,y),Ge(n.nn(e)?{value:a}:a)),t===`edit`&&(e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,y)}}),qe=e.validator?.type?{...e.validator,title:e.validator.title||e.label||`Field`}:null,Je={...We,disabled:Me,placeholder:Ue,prefix:e.icon?null:xs[e.field],value:u??``,onChange:t=>{let r=e.formatter?ac(t.target.value,e.formatter):t.target.value;if(qe){let{cleaned:e,error:t}=n.Ct(r,qe,`change`);L(t),r=e}Ge(r)},onBlur:t=>{if(qe){let{cleaned:e,error:r}=n.Ct(t.target.value,qe,`blur`);L(r),e!==t.target.value&&Ge(e)}e.checkDuplicateOnBlur&&String(t.target.value??``).trim()&&h?.(e)},...qe&&{onKeyPress:e=>{let t=n.wt(qe.type);if(!t||e.which===0||e.keyCode===8||e.keyCode===13)return;let r=String.fromCharCode(e.which??e.keyCode);if(!t.test(r)){e.preventDefault();let t=`${qe.title} — invalid character.`;L(t),setTimeout(()=>L(e=>e===t?null:e),1800)}},maxLength:qe.maxLength??We.maxLength}};if(b===`tagify`)return(0,l.jsx)(s.Select,{value:u,allowClear:!0,disabled:Me,mode:`tags`,placeholder:Ue,onChange:Ge});if(b===`location`)return(0,l.jsx)(s.Select,{value:u,allowClear:!0,showSearch:!0,filterOption:!1,disabled:Me,loading:w,mode:Ve,options:Be,placeholder:Ue,notFoundContent:w?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:D,onFocus:()=>D(e=>e),onChange:Ge});if(b===`select`){let t=e.dataSource===`lookup`,a=e.dataSource===`master`,o=t||a,c=n.nn(e),d=n.tn(e,u,Be),f=q&&!Y?d==null||d===``?void 0:Array.isArray(d)?d:[d]:d;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Select,{value:f,labelInValue:c||void 0,allowClear:!0,showSearch:e.showSearch!==!1,optionFilterProp:`label`,filterOption:!o&&void 0,disabled:Me,loading:w,mode:J,tokenSeparators:X,options:Be,placeholder:Ue,notFoundContent:w?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:t?k:a?j:void 0,onChange:t=>{let a=q&&!Y&&Array.isArray(t)?t.length?t[t.length-1]:void 0:t;if(Ge(a),(e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,y),e.autofillFrom?.length){let t=a&&!Array.isArray(a)&&typeof a==`object`?a.value:a,n=Array.isArray(i)&&i.length>=3&&typeof i[1]==`number`;if(a==null)e.autofillFrom.forEach(({targetField:e})=>{let t=n?[...i.slice(0,2),...Ts(e)]:Ts(e);r.setFieldValue(t,null)});else if(R.current.length>0){let a=e.valueField??`_id`,o=R.current.find(e=>Ls(e,a)===t||e._id===t||e.id===t||e.value===t);o&&e.autofillFrom.forEach(({optionKey:e,targetField:t})=>{let a=Ls(o,e)??o.extraData?.[e]??null,s=n?[...i.slice(0,2),...Ts(t)]:Ts(t);r.setFieldValue(s,a)})}}},popupRender:Ke.footer?e=>(0,l.jsxs)(l.Fragment,{children:[e,Ke.footer]}):void 0}),Ke.modal]})}if(b===`radio`)return(0,l.jsx)(s.Radio.Group,{value:u,disabled:Me,options:Be,onChange:e=>Ge(e.target.value)});if(b===`checkbox`)return Be.length>0?(0,l.jsx)(s.Checkbox.Group,{value:u,disabled:Me,options:Be,onChange:Ge}):(0,l.jsx)(s.Checkbox,{checked:!!(d??u),disabled:Me,onChange:t=>{let n=t.target.checked;if(!(n&&g?.(e))&&(Ge(n),n&&_?.(e,i),e.linkedClearField&&n)){let t=Array.isArray(i)&&i.length>1?[...i.slice(0,-1),e.linkedClearField]:[e.linkedClearField];r.setFieldValue(t,null)}},children:e.checkboxLabel??e.label});if(b===`text-editor`)return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.Tn,{value:u??r.getFieldValue(i)??``,disabled:Me,placeholder:Ue,onChange:e=>{if(qe){let{error:t}=n.Ct(e,qe,`change`);L(t)}Ge(e)}}),I&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:I})]});if(b===`textarea`)return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(vs,{...Je,rows:e.rows??3,className:`v1-scroll-textarea`}),I&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:I})]});if(b===`date`)return(0,l.jsx)(s.DatePicker,{disabled:Me,placeholder:Ue,style:{width:`100%`},suffixIcon:(0,l.jsx)(c.CalendarOutlined,{}),value:u??null,disabledDate:rc(e,r,i),defaultPickerValue:ic(e),onChange:t=>{Ge(t),_?.(e,i)}});if(b===`time`)return(0,l.jsx)(s.TimePicker,{disabled:Me,placeholder:Ue,style:{width:`100%`},value:u??null,onChange:e=>Ge(e)});if(b===`file`){let t=e.validations??e.validation??e.rules??[],r=t.find(e=>(typeof e==`string`?e:e?.type)===`fileType`),i=t.find(e=>(typeof e==`string`?e:e?.type)===`fileSize`),a=t.find(e=>(typeof e==`string`?e:e?.type)===`maxFiles`),o=n.mt(e),d=o?o.exts.map(e=>`.${e}`).join(`,`):r?.value?r.value.split(`,`).map(e=>`.${e.trim().replace(/^\./,``)}`).join(`,`):void 0,f=i?Number(i?.value??5):void 0,p=a?Number(a?.value??1):Ss(e.multiple)?e.maxCount??5:1,h=Array.isArray(u)?u:[],g=h.length<p,_=e=>e?e<1048576?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(2)} MB`:``,v=e=>{let t=String(e??``).split(`.`).pop()?.toLowerCase();return t===`pdf`?(0,l.jsx)(c.FilePdfOutlined,{className:`v1-file-type-icon v1-file-icon-pdf`}):[`doc`,`docx`].includes(t)?(0,l.jsx)(c.FileWordOutlined,{className:`v1-file-type-icon v1-file-icon-word`}):[`xls`,`xlsx`,`csv`].includes(t)?(0,l.jsx)(c.FileExcelOutlined,{className:`v1-file-type-icon v1-file-icon-excel`}):[`jpg`,`jpeg`,`png`,`gif`,`svg`,`webp`].includes(t)?(0,l.jsx)(c.FileImageOutlined,{className:`v1-file-type-icon v1-file-icon-image`}):(0,l.jsx)(c.FileOutlined,{className:`v1-file-type-icon v1-file-icon-default`})},y=e=>{Ge(h.filter((t,n)=>n!==e))},b=(e,t)=>{let n=h.map(e=>{let t=e.url??e.thumbUrl??``;return!t&&e.originFileObj instanceof File&&(t=URL.createObjectURL(e.originFileObj)),{url:t,name:e.name??`file`}}).filter(e=>e.url);F({open:!0,docs:n,index:t??0})},x=p>1,S=p-h.length,C=[o?o.hint:d?d.split(`,`).map(e=>e.replace(`.`,``).toUpperCase()).join(`, `):null,f?`up to ${f} MB`:null].filter(Boolean).join(` `),w=x&&h.length>0?[C,`${S} of ${p} remaining`].filter(Boolean).join(` • `):C,T=h.length>0?`Add ${x?`more files`:`file`}`:e.buttonLabel??`Upload ${e.label??`File`}`,E=e=>{if(h.length>=p)return s.Upload.LIST_IGNORE;if(d){let t=(e.name.split(`.`).pop()??``).toLowerCase();if(!d.split(`,`).map(e=>e.replace(/^\./,``).toLowerCase()).includes(t))return s.message.error(o?o.error:r?.message??`Only ${r.value} files are allowed`),s.Upload.LIST_IGNORE}return f!==void 0&&e.size/1024/1024>f&&(s.message.error(i?.message??`File must be smaller than ${f} MB`),s.Upload.LIST_IGNORE)},D=({fileList:e})=>{let t=e.slice(0,p);if(Ge(t),m&&t.length>h.length){let e=t[t.length-1];e?.originFileObj&&m(e.originFileObj)}},O={accept:d,fileList:h,showUploadList:!1,multiple:!0,maxCount:p,beforeUpload:E,onChange:D,disabled:Me},k=h.map((e,t)=>(0,l.jsxs)(`div`,{className:`v1-file-item`,children:[(0,l.jsx)(`div`,{className:`v1-file-item-icon`,children:v(e.name)}),(0,l.jsxs)(`div`,{className:`v1-file-item-info`,children:[(0,l.jsx)(`span`,{className:`v1-file-item-name`,title:e.name,children:e.name}),(0,l.jsx)(`span`,{className:`v1-file-item-meta`,children:e.existing?`Previously uploaded`:`${_(e.size)}${e.size?` • `:``}Uploaded just now`})]}),(0,l.jsxs)(s.Space,{size:6,className:`v1-file-item-actions`,children:[(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),onClick:()=>b(e,t),className:`v1-file-view-btn`,children:`View`}),(0,l.jsx)(s.Button,{size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>y(t),className:`v1-file-delete-btn`})]})]},e.uid??t)),A=(0,l.jsx)(n.wn,{documents:P.docs,open:P.open,onClose:()=>F(e=>({...e,open:!1})),initialIndex:P.index});if(x){let t=h.length>0?`Upload more ${e.label??`files`}`:e.buttonLabel??`Upload ${e.label??`File`}`;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[g&&(0,l.jsx)(s.Upload,{...O,style:{width:`100%`,display:`block`},children:(0,l.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-center${Me?` v1-upload-dropzone-disabled`:``}`,children:[(0,l.jsxs)(`div`,{className:`v1-upload-dropzone-title-row`,children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`v1-upload-cloud-icon v1-upload-cloud-icon-sm`}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-title v1-upload-dropzone-title-blue`,children:t})]}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:`Drag & drop or click to upload`}),C&&(0,l.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:C})]})}),h.length>0&&(0,l.jsx)(`div`,{className:`v1-file-grid`,children:k}),g&&h.length>0&&(0,l.jsx)(s.Upload,{...O,style:{display:`inline-block`},children:(0,l.jsx)(s.Button,{type:`link`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),className:`v1-add-more-files-btn`,children:`Add more files`})})]}),A]})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[h.length>0&&(0,l.jsx)(`div`,{className:`v1-file-rows-single`,children:k}),g&&(0,l.jsx)(s.Upload,{accept:d,fileList:h,showUploadList:!1,multiple:!1,maxCount:1,beforeUpload:E,onChange:D,disabled:Me,style:{width:`100%`,display:`block`},children:(0,l.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-single${Me?` v1-upload-dropzone-disabled`:``}`,children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`v1-upload-cloud-icon`}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-title`,children:T}),w&&(0,l.jsxs)(`span`,{className:`v1-upload-dropzone-sub`,children:[`— `,w]})]})})]}),A]})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Input,{...Je,type:b===`number`?`number`:b,...b===`number`&&Ss(e.decimal)?{step:`any`}:{},...e.suffix?{suffix:e.suffix}:{}}),I&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:I})]})}function fc({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(_s,{strong:!0,className:`v1-section-label`,children:t})]})}function pc({field:e,label:t,locked:r}){if(!t)return t;let i=n.R(e),a=!!i;return!a&&!r?t:(0,l.jsxs)(`span`,{className:`v1-field-label-with-info`,children:[(0,l.jsx)(`span`,{children:t}),a&&(0,l.jsx)(s.Tooltip,{title:i,children:(0,l.jsx)(c.InfoCircleOutlined,{className:`v1-field-info-icon`})}),r&&(0,l.jsx)(s.Tooltip,{title:`You don't have permission to edit this field`,children:(0,l.jsx)(c.LockOutlined,{className:`v1-field-info-icon`})})]})}function mc({group:e}){return!Ss(e?.infoEnabled)||Ws(e?.infoText)?null:(0,l.jsx)(_s,{type:`secondary`,className:`v1-group-info-message`,children:e.infoText})}function hc({group:e}){return!Ss(e?.toggleEnabled)||Ws(e?.toggleField)?null:(0,l.jsxs)(s.Space,{size:6,align:`center`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(_s,{type:`secondary`,className:`v1-combine-toggle-label`,children:e.toggleLabel||`Toggle`}),(0,l.jsx)(s.Form.Item,{name:e.toggleField,valuePropName:`checked`,initialValue:!!e.toggleValue,noStyle:!0,children:(0,l.jsx)(s.Switch,{size:`small`})})]})}function gc(e,t){let n=t;if(Array.isArray(n)&&(n=n[n.length-1]),n&&typeof n==`object`){let e=new Set([`timestamp`,`updatedBy`,`updatedAt`,`createdAt`,`createdBy`,`_id`]),t=Object.entries(n).filter(([t,n])=>!e.has(t)&&n!=null&&n!==``&&typeof n!=`object`).map(([,e])=>String(e).trim()).filter(Boolean);if(!t.length)return``;n=t.join(` `)}let r=String(n??``).trim();if(!r)return``;let i=String(e?.prefillHintLabel??`Last recorded: {value}`);return i.includes(`{value}`)?i.replace(`{value}`,r):`${i} ${r}`}function _c(e,t){let n=e?.helpText,r=(Array.isArray(n)?n:[n]).map(e=>e==null?``:String(e).trim()).filter(Boolean);if(t&&r.push(t),r.length)return(0,l.jsx)(`span`,{className:`v1-field-help-text`,children:r.map((e,t)=>(0,l.jsx)(_s,{type:`secondary`,className:`v1-field-help-line`,children:e},t))})}var vc=(0,o.forwardRef)(function({moduleName:e,action:r,authToken:i,clientId:u,region:f,formGroups:p,loading:m=!1,error:h=``,breadcrumbItems:g=[],formType:_=`add`,submitText:v,cancelPath:y=`/candidates`,onSubmit:b,initialRecord:x=null,prefillFromUrl:S=!1,extraPayload:C=null,presetClientId:w=null,listViewProps:T={},selectedScope:E=``,searchActionContext:D=null,embedded:O=!1,onSuccess:k=null,onCancel:A=null},j){(0,o.useEffect)(()=>(i&&t.g(i),()=>{i&&t.r()}),[i]);let M=_===`search`,N=v??(M?`Search`:`Create`),P=(0,d.useNavigate)(),F=(0,d.useLocation)(),I=(0,o.useRef)(null),L=(0,o.useRef)(null),R=(0,d.useParams)(),[z]=(0,d.useSearchParams)(),[B]=s.Form.useForm(),V=`v1-form-scope-${(0,o.useId)().replace(/[^a-zA-Z0-9_-]/g,``)}`,ee=()=>document.querySelector(`.${V}`)??document;(0,o.useImperativeHandle)(j,()=>({submit:()=>B.submit(),validate:()=>B.validateFields(),getValues:()=>B.getFieldsValue(!0),reset:()=>B.resetFields()}),[B]);let te=s.Form.useWatch([],B),[ne,re]=(0,o.useState)(!1),[ie,H]=(0,o.useState)({}),[ae,oe]=(0,o.useState)([]),[se,ce]=(0,o.useState)(!!e),[U,le]=(0,o.useState)(``),[ue,de]=(0,o.useState)(``),[fe,pe]=(0,o.useState)(!1),[W,me]=(0,o.useState)({searched:!1,rows:[],total:0,fields:[],actions:[],actionRules:[],loading:!1}),[he,ge]=(0,o.useState)({current:1,pageSize:10}),[_e,G]=(0,o.useState)({}),[K,ve]=(0,o.useState)(`internal`),[ye,be]=(0,o.useState)([]),[xe,Se]=(0,o.useState)({}),[Ce,we]=(0,o.useState)([]),[Te,Ee]=(0,o.useState)(u??``),[De,Oe]=(0,o.useState)(f??``),[ke,Ae]=(0,o.useState)(null),[je,Me]=(0,o.useState)(!1),[Ne,Pe]=(0,o.useState)(null),[Fe,Ie]=(0,o.useState)(()=>new Map),Le=e?ae:p??ys,Re=e?se:m,ze=e?U:h,[Be,Ve]=(0,o.useState)(``),q=R?.jobId&&R.jobId!==`_`?R.jobId:z.get(`jobId`)||``;(0,o.useEffect)(()=>{if(u||w||!q)return;let e=!1;return(async()=>{try{let t=Vs(zs(await a.r({module:`jobs`,id:q})))??{},n=t.clientId??t.client??``,r=n&&typeof n==`object`?n.id??n.value??``:n;!e&&r&&Ve(String(r))}catch(e){console.error(`Client-scope resolve from job failed:`,e)}})(),()=>{e=!0}},[u,w,q]);let J=u||w||Be||Te,Y=f||De;(0,o.useEffect)(()=>{n.Vn()},[]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){Pe(null);return}n.zr({roleId:localStorage.getItem(`roleId`)},e,{clientId:J,region:Y}).then(e=>{t||Pe(Array.isArray(e)&&e.length?e:null)}).catch(()=>{t||Pe(null)})}}),()=>{t=!0}},[e,J,Y]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){Ie(new Map);return}n.Lr(e).then(e=>{t||Ie(n.Yr(e))}).catch(()=>{t||Ie(new Map)})}}),()=>{t=!0}},[e]);let X=(0,o.useMemo)(()=>Bs(Le,e,Ne,Fe),[Le,e,Ne,Fe]),[He,Ue]=(0,o.useState)(0),We=(0,o.useMemo)(()=>n.bt({checkFieldUnique:n.gt,onPendingChange:Ue}),[]),Ge=(0,o.useMemo)(()=>M?void 0:{checker:We,module:e,clientId:J||void 0,region:Y||void 0},[M,We,e,J,Y]),Ke=(0,o.useMemo)(()=>n.yt(X),[X]),qe=(0,o.useMemo)(()=>n.Ut(X),[X]),Je=(0,o.useRef)({}),Ye=(0,o.useRef)(null),Xe=(0,o.useMemo)(()=>X.flatMap(e=>e.formActions??[]),[X]),Ze=(0,o.useMemo)(()=>zs(Le).find(e=>e?.duplicateCheck)?.duplicateCheck??{},[Le]),Qe=Qt({form:B,moduleName:e,config:Ze,onUseExisting:(0,o.useCallback)((t,r,i,a)=>{if(!t)return;let o=r?.editRoute||Ze?.editRoute;if(!o){console.warn(`[duplicate-check] ${e}: no editRoute configured, so the existing record was not opened. Set it in Admin → Automations → "Check for someone already on file" → "Where to open the existing record".`);return}let s=n.N(o,t,{});s&&P(s,{state:{fromDuplicate:!0,carryFiles:a?.files??null}})},[Ze,P])}),$e=n.kt({form:B,groups:X,module:e,onParsed:(0,o.useCallback)(async({field:e,payload:t})=>{let n=e?.field,r=n?{files:{[n]:B.getFieldValue(n)}}:null,i=await Qe.prompt({reason:`upload`,payload:t,carry:r});return i===`clear`||(n&&(B.setFieldValue(n,[]),s.message.info(i===`existing`?`Résumé moved to their record.`:`Résumé removed — nothing on this form was filled in.`)),`abort`)},[Qe,B]),onApplied:(0,o.useCallback)(async()=>{await Qe.prompt({reason:`upload`})},[Qe])}),et=(0,o.useCallback)(e=>{let t=n.Bn().region,r=X.find(t=>(t.fields??[]).some(t=>t.field===e.field));if(!r)return!1;let i=n.A(r,t),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(e.field!==a||n.w(i))return!1;let o=n.T(i);return n.Ht({tone:o?`duplicate`:`overwrite`,title:o?`This has to be completed first`:`You can add this, but they cannot be submitted`,facts:[{label:`Region`,value:t||`Common`},{label:`Entry`,value:r.label??r.name}],body:n.E(i),okText:o?`Got it`:`Keep it anyway`}),o},[X]),tt=(0,o.useCallback)((e,t)=>{let r=X.find(e=>e.name===t);if(!r)return;let i=n.A(r,n.Bn().region),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(e.field!==a)return;let o=n.S(i);return o?[o]:void 0},[X]),nt=(0,o.useCallback)(async(e,t)=>{if(!Array.isArray(t)||t.length<3||typeof t[1]!=`number`)return;let r=t[0],i=t[1],a=X.find(e=>e.name===r);if(!a)return;let o=n.A(a,n.Bn().region);if(!o.orderBy)return;await Promise.resolve();let s=B.getFieldValue(r);Array.isArray(s)&&await n.k({group:o,rows:s,rowIndex:i,move:Je.current[r]?.move,confirm:({title:e,body:t,okText:r,cancelText:i,from:a,to:o})=>n.Vt({tone:`suggestion`,title:e,facts:[{label:`This entry is at`,value:`Row ${a+1}`},{label:`It belongs at`,value:`Row ${o+1}`}],body:t,okText:r,cancelText:i})})},[X,B]),rt=(0,o.useRef)(!1),it=(0,o.useCallback)(async()=>{if(!rt.current){rt.current=!0;try{await Qe.prompt({reason:`blur`})}finally{rt.current=!1}}},[Qe]),[at,ot]=(0,o.useState)(`list`),st=M&&!lc(te),{hasClientScope:ct,clientGateMessage:lt,clientGateResetOnChange:ut}=(0,o.useMemo)(()=>{let e=zs(Le).flatMap(e=>e.fields??[]).find(e=>Ss(e.clientScope));return e?{hasClientScope:!0,clientGateMessage:e.clientGateMessage||``,clientGateResetOnChange:Ss(e.clientGateResetOnChange)}:{hasClientScope:!1,clientGateMessage:``,clientGateResetOnChange:!1}},[Le]),dt=e=>{if(ut){B.resetFields();let e=B.getFieldsValue(!0);B.setFieldsValue(Object.fromEntries(Object.keys(e).map(e=>[e,void 0]))),me({searched:!1,rows:[],total:0,fields:[],loading:!1}),ge({current:1,pageSize:10})}Ee(e??``)},ft=ct&&!J,pt=(0,o.useCallback)(()=>n.dr({limit:200}).then(we).catch(()=>we([])),[]);(0,o.useEffect)(()=>{!ct||w||Be||pt()},[ct,w,Be,pt]);let mt=n.st({field:{field:`clientId`,quickCreate:!0,quickCreateModule:`clients`,quickCreateLabel:`Add Client`,lookupCollection:`clients`,displayField:`clientName`,quickCreateNotice:{enabled:!0,title:`New Client Created`,showCreator:!0,showRecordName:!0,recordLabel:`Client name`,creatorLabel:`Created by`}},form:B,name:`clientId`,moduleName:e,scopeValues:{},ownValue:J,onDone:(e,t)=>{pt(),e===`create`&&t!=null&&dt(String(t))}});(0,o.useEffect)(()=>{if(!e)return;let t=!1;async function i(){try{ce(!0),le(``);let i=M?await n.Cr(e,`search`,r):await a.r({module:e,action:r,clientId:J,region:Y});t||(oe(zs(M?i?.[0]:i)),M&&de(i?.[0]?.label||``))}catch(n){console.error(`Failed to fetch ${e} form groups:`,n),t||le(n?.message||`Failed to fetch form groups`)}finally{t||ce(!1)}}return i(),()=>{t=!0}},[e,r,M,J,Y]);let ht=(0,o.useMemo)(()=>{if(!S)return null;let e=z.get(`candidateId`)||``,t=z.get(`submissionId`)||``,n=String(z.get(`isFromSubmission`))===`true`,r=R.jobId&&R.jobId!==`_`?R.jobId:z.get(`jobId`)||``,i=n&&t?{module:`submissions`,id:t}:e?{module:`candidates`,id:e}:null,a={};return e&&(a.applicantId=e),r&&(a.jobId=r),{source:i,linkage:Object.keys(a).length?a:null}},[S,z,R]);(0,o.useEffect)(()=>{let e=ht?.source;if(!e)return;let t=!1;async function n(){try{Me(!0);let n=await a.r({module:e.module,id:e.id});t||Ae(zs(n))}catch(e){console.error(`Failed to fetch prefill data:`,e),t||Ae([])}finally{t||Me(!1)}}return n(),()=>{t=!0}},[ht]);let gt=(0,o.useMemo)(()=>ke?Object.fromEntries(ke.filter(e=>e.addRow&&Array.isArray(e.rows)&&e.rows.length>0).map(e=>[e.payloadKey||e.name,e.rows])):{},[ke]),_t=(0,o.useMemo)(()=>Vs(ke),[ke]),vt=(0,o.useMemo)(()=>{let e=new Set;return X.forEach(t=>(t.fields??[]).forEach(t=>{t.prefillFromModule&&e.add(oc(t.prefillFromModule))})),[...e]},[X]),[yt,bt]=(0,o.useState)({});(0,o.useEffect)(()=>{let e=ht?.linkage;if(!e||vt.length===0)return;let t=!1;return vt.forEach(async r=>{let i=n.J(r,e);if(i)try{let e=Vs(zs(await a.r({module:r,id:i})));!t&&e&&bt(t=>({...t,[r]:e}))}catch(e){console.error(`Context prefill fetch failed for ${r}:`,e)}}),()=>{t=!0}},[vt,ht]);let xt=(0,o.useMemo)(()=>{let e=x??_t;if(!e&&Object.keys(yt).length===0)return{};let t={};return X.forEach(n=>{n.addRow||(n.fields??[]).forEach(n=>{if(!n.field||!Ss(n.prefillAsHint)||Ss(n.addRow))return;let r=n.prefillFromModule?yt[oc(n.prefillFromModule)]:e;if(!r)return;let i=Hs(r,n);if(i==null)return;let a=gc(n,i);a&&(t[n.field]=a)})}),t},[x,_t,yt,X]);(0,o.useEffect)(()=>{let e=x??_t;if(!e&&Object.keys(yt).length===0||Re||X.length===0)return;let t={};X.forEach(r=>{if(r.toggleEnabled&&r.toggleField&&e){let n=Hs(e,{field:r.toggleField});n!=null&&(t[r.toggleField]=!!n)}r.addRow||(r.fields??[]).forEach(r=>{if(!r.field||Ss(r.addRow))return;let i=r.prefillFromModule?yt[oc(r.prefillFromModule)]:e;if(!i)return;let a=Hs(i,r);if(a!=null&&!Ss(r.prefillAsHint)){if(r.type===`file`){let e=Us(a);e.length>0&&n.Nt(t,r.field,e)}else n.Nt(t,r.field,n.Kt(r,a))}})}),Object.keys(t).length>0&&B.setFieldsValue(t)},[x,_t,yt,Re,X,B]),(0,o.useEffect)(()=>{let e=F?.state?.relevantSkillsToken,t=F?.state?.relevantSkillsInputs,n=t?.jobId??ht?.linkage?.jobId??``,r=t?.applicantId??t?.candidateId??ht?.linkage?.applicantId??``;if(!(e||t)||Re||X.length===0)return;let i=X.filter(e=>Ss(e.addRow)&&e.skillMatchField);if(i.length===0)return;let a=e||`inputs:${n}:${r}`,o;if(I.current===a&&L.current?o=L.current:(o=e?Yo(e):void 0,(!o||typeof o.then!=`function`)&&n&&r&&(o=Xo({jobId:n,applicantId:r}).catch(()=>[])),I.current=a,L.current=o),!o||typeof o.then!=`function`)return;let s=!1;return o.then(e=>{if(s||!Array.isArray(e)||e.length===0)return;let t={};i.forEach(n=>{let r=B.getFieldValue(n.name),i=Array.isArray(r)?r:[],a=new Map;i.forEach(e=>{let t=String(e?.[n.skillMatchField]??``).trim().toLowerCase();t&&!a.has(t)&&a.set(t,e)}),t[n.name]=e.map(e=>a.get(String(e).trim().toLowerCase())??{[n.skillMatchField]:e})}),Object.keys(t).length>0&&B.setFieldsValue(t)}).catch(()=>{}),()=>{s=!0}},[F?.state?.relevantSkillsToken,F?.state?.relevantSkillsInputs,ht?.linkage?.jobId,ht?.linkage?.applicantId,Re,X,B]);let St={...ct&&J?{clientId:J}:{},...ht?.linkage??C??{}},Ct=!ft&&!Re&&(!ht?.source||ke!==null&&!je),wt=e=>{let t=e.prefillFrom||e.payloadKey||e.name,r=gt[t],i=Math.max(0,Number(e.minRows??0)||0),a=n.$t(e);if(!r||r.length===0){let t=e.initialRows===void 0?i:Math.max(i,Math.max(0,Number(e.initialRows)||0));return Array.from({length:t},()=>({...a}))}let o=r.map(t=>{let r={...a};return(e.fields??[]).forEach(e=>{if(!e.field||e.type===`file`)return;let i=Hs(t,e);i!=null&&(r[e.field]=Ss(e.addRow)?n.Jt(e,i):n.Kt(e,i))}),r});for(;o.length<i;)o.push({...a});return o},Tt=(0,o.useMemo)(()=>X.map(e=>`${e.name}:${+!!Ss(e.allowCollapse)}${+!!Ss(e.defaultCollapsed)}`).join(`|`),[X]),Et=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!X.length||Et.current===Tt)return;Et.current=Tt;let e={};X.forEach((t,n)=>{let r=t.name??t.id??String(n);Ss(t.allowCollapse)&&Ss(t.defaultCollapsed)&&(e[r]=!0)}),H(e)},[Tt,X]);let Dt=(0,o.useMemo)(()=>{let e={};return X.forEach(t=>{t.addRow&&(e[t.name]=wt(t))}),n.Gt(qe,e)},[X,gt,qe]),Ot=e=>H(t=>({...t,[e]:!t[e]})),kt=()=>{B.resetFields(),H({}),ve(`internal`),be([])},At=(0,o.useCallback)(async(t,r,i={})=>{if(!M)return;let a=Number(i.pageSize)>0?Number(i.pageSize):he.pageSize,o=Number(i.current),c=Number.isFinite(o)&&o>0?Math.floor(o):1;try{G(t),ge({current:c,pageSize:a}),me(e=>({...e,loading:!0,searched:!0}));let i=es(t?.selectedSource),o=r?ts(r,K):i.includes(`internal`)?`internal`:ts(t?.selectedSource,K),s={...t,selectedSource:o};console.log(`[AddFormV1] Calling searchModuleData with scope:`,o);let l=await n.xn(e||`candidates`,s,{limit:a,offset:(c-1)*a},{scope:o});ve(o),me({searched:!0,rows:l.rows,total:l.total,fields:l.fields,actions:l.actions??[],actionRules:l.actionRules??[],loading:!1}),be(e=>cs({sources:i,activeSource:o,activeCount:l.total,responseCounts:l.counts,currentTabs:e,backendTabs:l.tabs}))}catch(e){console.error(`Search failed:`,e),s.message.error(e?.message||`Failed to search records`),me({searched:!0,rows:[],total:0,fields:[],actions:[],actionRules:[],loading:!1})}},[M,e,K,he.pageSize]),jt=(0,o.useCallback)(async(e,t)=>{let n=ms(e,t);Se(e=>({...e,[n]:{...e[n]??{},loading:!0}}));try{let r=await hs(e,t);s.message.success(r?.message??r?.data?.message??e.successMessage??`Action completed successfully.`),Se(e=>({...e,[n]:{loading:!1,completed:!0}}))}catch(t){s.message.error(t?.message||e.errorMessage||`Action failed.`),Se(e=>({...e,[n]:{...e[n]??{},loading:!1}}))}finally{Se(e=>({...e,[n]:{...e[n]??{},loading:!1}}))}},[]),Mt=(0,o.useCallback)(e=>{let t=ts(e,K);ve(t),ge({current:1,pageSize:he.pageSize}),Object.keys(_e).length>0&&At(_e,t,{current:1,pageSize:he.pageSize})},[he.pageSize,_e,At,K]),Nt=(0,o.useCallback)((e,t)=>{let n=Number(t)>0?Number(t):he.pageSize,r=Number(e)>0?Number(e):1;if(Object.keys(_e).length===0){ge({current:r,pageSize:n});return}At(_e,K,{current:r,pageSize:n})},[At,_e,he.pageSize,K]),Pt=(0,o.useCallback)(e=>{let t=Number(e)>0?Number(e):he.pageSize;if(Object.keys(_e).length===0){ge({current:1,pageSize:t});return}At(_e,K,{current:1,pageSize:t})},[At,_e,he.pageSize,K]),Ft=e=>{let t=n.xt(e,{uniqueRules:Ke});return t.length!==0&&(B.setFields(t.map(e=>({name:e.name??e.field,errors:[e.message]}))),H({}),n.l({errorFields:t.map(e=>{let t=e.name??e.field;return{name:Array.isArray(t)?t:[t],errors:[e.message]}})},B,{root:ee()}),!0)},It=(0,o.useCallback)(async e=>{try{let t=n.Bn().region,r=X.map(e=>n.A(e,t)),i=n.O(r,e);return i.severity===`allow`?!0:i.severity===`block`?(n.Ht({tone:`duplicate`,title:`This qualification history is incomplete`,body:i.message,okText:`Go back`}),!1):!await n.Vt({tone:`suggestion`,title:`Add the earlier qualification too?`,body:i.message,okText:`Add it now`,cancelText:`Submit anyway`})}catch(e){return console.warn(`[levelRule] check skipped:`,e),!0}},[X]),Lt=async t=>{if(M){await At(t);return}if(!(!O&&await Qe.prompt({reason:`submit`})!==`clear`)&&await It(t)){if(b){await b(t,{moduleName:e,groups:X,registerDocuments:async(r,i={})=>{let a=n.Yt(t,X,{module:i.module??e});return!a.length||!r?[]:n.vn(i.module??e,r,a)},extraPayload:St??{},payload:{...St??{},...n.qt(t,X,{module:e})}});return}if(!e){console.log(`Form values:`,t);return}try{pe(!0);let r=await a.n(e,uc(t,X,St??{},e));if(r?.status===!1){if(Ft(r))return;s.message.error(n.u(X,e,`add`,r?.error||r?.message||r?.data));return}let i=n.Yt(t,X,{scope:`addRow`,indexed:!0,module:e}),o=r?.id??r?.data?.id??r?.data?._id??r?._id;if(i.length>0&&o)try{await n.gn(e,o,{...St??{},...n.qt(t,X,{module:e})},i)}catch(e){console.error(`Document file attach (post-create update) failed:`,e),s.message.warning(`Record created, but attaching document files failed. Edit the record to re-upload.`)}let c=n.Yt(t,X,{module:e});if(c.length>0&&o)try{await n.vn(e,o,c)}catch(e){console.error(`Document registry upload failed:`,e),s.message.warning(`Record created, but saving its document records failed.`)}let l=n.d(X,e,`add`);if(l&&s.message.success(l),B.resetFields(),O&&k){k(o,t);return}let u=Ye.current??n.M(X);if(!u)n.j(P,{cancelPath:y});else if(u.mode===`back`)n.j(P,{cancelPath:y});else if(u.mode===`route`||u.mode===`detail`){let e=n.N(u.target,o,t);e&&P(e)}}catch(t){if(console.error(`Failed to create ${e}:`,t),Ft(t))return;s.message.error(n.u(X,e,`add`,t?.data?.error||t?.data?.message||t?.message))}finally{pe(!1),Ye.current=null}}},Rt=(e,t,r)=>{let i=e.validations??e.validation??e.rules??[];return[...i.filter(e=>(typeof e==`string`?e:e?.type)===`maxFromField`).map(e=>n.it(e,t,r)).filter(Boolean),...i.filter(e=>{let t=typeof e==`string`?e:e?.type;return[`dateAfterField`,`greaterThanField`,`strictGreaterThanField`,`strictLessThanField`,`lessThanOrEqualField`,`maxFieldWithFallback`,`dateBeforeField`,`timeAfterField`,`timeBeforeField`].includes(t)}).map(e=>String(e.value??e.compareField??e.field??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>qs(t,e))).flat().filter(Boolean)]},zt=(e,t)=>typeof e==`function`?e(t):e,Bt=(e,t,n)=>{if(!e?.field)return!0;let r=zt(n,e.field),i=t(r==null?[e.field]:[...Array.isArray(r)?r:[r],e.field]);switch(e.operator){case`eq`:return String(i??``)===String(e.value??``);case`neq`:return String(i??``)!==String(e.value??``);case`truthy`:return i!=null&&i!==``&&i!==!1;case`falsy`:return i==null||i===``||i===!1;case`notEmpty`:return Array.isArray(i)?i.length>0:!!i;case`in`:return String(e.value??``).split(`,`).map(e=>e.trim()).includes(String(i??``));case`notIn`:return!String(e.value??``).split(`,`).map(e=>e.trim()).includes(String(i??``));default:return!0}},Vt=(e,t,n)=>{if(!e)return!0;let r=Array.isArray(e.conditions)?e.conditions.filter(e=>e?.field):[];if(r.length){let i=r.map(e=>Bt(e,t,n)),a=String(e.logic??`and`).toLowerCase()===`or`,o=a?i.some(Boolean):i.every(Boolean);if(e.field){let r=Bt(e,t,n);o=a?o||r:o&&r}return o}return Bt(e,t,n)},Ht=e=>!!(e?.field||e?.conditions?.some?.(e=>e?.field)),[Wt,Gt]=(0,o.useState)({}),Kt=e=>String(e?.field??``),qt=(0,o.useMemo)(()=>t.s(),[]),Jt=(t,r,i,a={})=>{let c=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):null,u=c??t.field,d=r===void 0?u:[r,...c??[t.field]],f=i!==void 0&&r!==void 0?[...Array.isArray(i)?i:[i],...Array.isArray(d)?d:[d]]:d,p=t.type===`checkbox`&&(t.options&&t.options.length>0||t.dataSource&&t.dataSource!==`static`),m=!p&&t.type===`checkbox`?`checked`:`value`,h=!!t.editablePermission&&!n.F(t.editablePermission,e),g=i!==void 0&&r!==void 0?[...Array.isArray(i)?i:[i],r]:null,_=e=>g&&(!a.rowFieldKeys||a.rowFieldKeys.has(e))?g:null,v=n.rn(t),y=v?n.in(t,f,_):null,b=a.inline||a.hideLabel||!p&&t.type===`checkbox`?``:(0,l.jsx)(Os,{form:B,field:t,siblingPrefix:t.labelWhen?.field?_(t.labelWhen.field):g,locked:h}),x=v&&b?(0,l.jsxs)(`span`,{className:`v1-label-with-override`,children:[b,(0,l.jsx)(n.K,{form:B,field:t,flagPath:y,fieldPath:f,disabled:h})]}):b,S=Rt(t,f,_),C=n.R(t),w=a.inline||t.type===`file`&&Ss(t.multiple)||t.type===`text-editor`?24:t.col??12,T=Ut(t,qt),E=r===void 0&&t.type!==`file`&&T.matched&&T.value!==void 0&&T.value!==``?T.value:r===void 0&&t.type!==`file`&&t.defaultValue!==void 0&&t.defaultValue!==``?t.defaultValue:void 0,D=(t.aiActions||[]).filter(e=>e.trigger===`click`),O=(t.aiActions||[]).find(e=>e.trigger===`upload`),k=(0,l.jsx)(s.Form.Item,{label:x,name:d,extra:_c(t,xt[t.field]),rules:$s(t,B,f,M,_,Ge,tt(t,a.groupNameForActions)),required:Qs(t,B,f),dependencies:S,valuePropName:m,initialValue:E,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(dc,{field:t,form:B,name:f,rowFieldKeys:a.rowFieldKeys,moduleName:e,scopeValues:{clientId:J},onAiUpload:O?e=>$e.runAction(a.groupNameForActions,t,O,e):void 0,onDuplicateBlur:it,onRegionBlocked:et,onRowOrderChange:nt,formDisabled:$e.busy},t.refreshToken==null?void 0:`${t.field}-refresh-${t.refreshToken}`)}),A=C&&!x?(0,l.jsx)(s.Tooltip,{title:C,children:(0,l.jsx)(`span`,{className:`v1-field-tooltip-wrap`,children:k})}):k,j=D.length>0?(()=>{let e=n.Ot(D),r=r=>(0,l.jsx)(n.Dt,{position:r,actions:e[r],aiActions:$e,groupName:a.groupNameForActions,field:t},r);return(0,l.jsxs)(`div`,{className:`v1-ai-action-wrap`,children:[r(`top-left`),r(`top-center`),r(`top-right`),A,r(`bottom-left`),r(`bottom-center`),r(`bottom-right`)]})})():A,N=e=>r===void 0?e:[r,e],P=t.verifyAction?(0,l.jsxs)(l.Fragment,{children:[t.verifyResultField&&(0,l.jsx)(s.Form.Item,{name:N(t.verifyResultField),hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})}),t.verifyTimestampField&&(0,l.jsx)(s.Form.Item,{name:N(t.verifyTimestampField),hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})})]}):null,F=t.verifyAction?(0,l.jsxs)(`div`,{className:`v1-verify-field-row`,children:[j,(0,l.jsx)(Ds,{form:B,field:t,absoluteName:f}),P]}):j,I=v?(0,l.jsxs)(l.Fragment,{children:[F,(0,l.jsx)(s.Form.Item,{name:r===void 0?y[y.length-1]:[r,y[y.length-1]],valuePropName:`checked`,hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Checkbox,{})})]}):F,L=a.inline?{flex:`${Number(t.combineWidth)>0?Number(t.combineWidth):1} 1 0`,maxWidth:`none`}:void 0,R=t.autoFillFromApi?(0,l.jsx)(Ms,{form:B,config:t.autoFillFromApi,watchPath:f},`${t.field}-autoFillFromApi`):null,z=t.prefillWhen?.length?(0,l.jsx)(js,{form:B,rules:t.prefillWhen,watchPaths:n.W(t.prefillWhen,f,n.ot,_),targetPath:f,resetOnNoMatch:t.prefillWhenReset!==!1},`${t.field}-prefillWhen`):null;if(t.show===0)return(0,l.jsxs)(o.Fragment,{children:[z,R,(0,l.jsx)(s.Form.Item,{name:d,hidden:!0,noStyle:!0,children:(0,l.jsx)(`input`,{type:`hidden`})})]},t.field);let V=!a.inline&&n.n(t).length>0,ee=e=>V?n.s(t,w,t=>e(n.r(t,_(t.field)))):w;return Ht(t.showIf)||V?(0,l.jsxs)(o.Fragment,{children:[z,R,(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>!Ht(t.showIf)||Vt(t.showIf,e,_)?(0,l.jsx)(s.Col,{xs:24,md:ee(e),style:L,className:a.inline?`v1-combine-cell`:void 0,children:I}):null})]},t.field):(0,l.jsxs)(o.Fragment,{children:[z,R,(0,l.jsx)(s.Col,{xs:24,md:w,style:L,className:a.inline?`v1-combine-cell`:void 0,children:I})]},t.field)},Yt=t=>{let r=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],i=!!t.editablePermission&&!n.F(t.editablePermission,e),a=(0,l.jsx)(pc,{field:t,label:t.label,locked:i}),o=n.en(t),u=Array.isArray(t.subFields)&&t.subFields.length>0,d=u?t.subFields.map(e=>({...e,show:1,edit:1})):null,f=Math.max(0,Number(t.minRows??0)||0),p=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,m=Hs(x??_t??{},t),h=n.Jt(t,m);return(0,l.jsx)(s.Col,{xs:24,md:24,children:(0,l.jsx)(s.Form.Item,{label:a,required:Qs(t),colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.List,{name:r,initialValue:h,rules:[{validator:async(e,n=[])=>{if(Qs(t)&&!(u?n.some(e=>Rs(e)):n.some(e=>e!=null&&e!==``&&!(Array.isArray(e)&&e.length===0))))throw Error(`Mandatory Field`);if(f>0&&n.length<f)throw Error(`Keep at least ${f} ${u?`row`:`value`}${f>1?`s`:``}.`)}}],children:(n,{add:i,remove:a},{errors:m})=>(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[n.map(({key:i,name:p})=>(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>a(p),disabled:n.length<=f,className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:u?(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:$t(d,p,r[0],!1,t.field)}):(0,l.jsx)(s.Form.Item,{name:[p],noStyle:!0,valuePropName:t.type===`checkbox`&&!t.options?.length?`checked`:`value`,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,rules:$s(o,B,[...r,p],M),children:(0,l.jsx)(dc,{field:o,form:B,name:[...r,p],moduleName:e,scopeValues:{clientId:J},formDisabled:$e.busy})})})]},i)),(!p||n.length<p)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>i(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,l.jsx)(s.Form.ErrorList,{errors:m})]})})})},t.field)},Xt=(t,r,i)=>{let a=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],o=!!t.editablePermission&&!n.F(t.editablePermission,e),u=(0,l.jsx)(pc,{field:t,label:t.label,locked:o}),d=n.en(t),f=Array.isArray(t.subFields)&&t.subFields.length>0,p=f?t.subFields.map(e=>({...e,show:1,edit:1})):null,m=Math.max(0,Number(t.minRows??0)||0),h=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,g=[r,...a],_=[...Array.isArray(i)?i:[i],r,...a],v=n.Jt(t,void 0);return(0,l.jsx)(s.Col,{xs:24,md:f?24:t.col??24,children:(0,l.jsx)(s.Form.Item,{label:u,required:Qs(t),colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.List,{name:g,initialValue:v,rules:f?[{validator:async(e,n=[])=>{if(Qs(t)&&!n.some(e=>Rs(e)))throw Error(`Mandatory Field`);if(m>0&&n.length<m)throw Error(`Keep at least ${m} row${m>1?`s`:``}.`)}}]:[],children:(n,{add:r,remove:i},{errors:a})=>(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[n.map(({key:r,name:a})=>{let o=[..._,a];return(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>i(a),disabled:n.length<=m,className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:f?(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:$t(p,a,_,!1,t.field)}):(0,l.jsx)(s.Form.Item,{name:[a],noStyle:!0,valuePropName:t.type===`checkbox`&&!t.options?.length?`checked`:`value`,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,rules:$s(d,B,o,M),children:(0,l.jsx)(dc,{field:d,form:B,name:o,moduleName:e,scopeValues:{clientId:J},formDisabled:$e.busy})})})]},r)}),(!h||n.length<h)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>r(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,l.jsx)(s.Form.ErrorList,{errors:a})]})})})},`${i}-${r}-${t.field}`)},Zt=(e,t)=>e.filter(e=>e.field&&e.show!==void 0&&!Ss(e.show)).map(e=>{let n=String(e.field).includes(`.`)?String(e.field).split(`.`):e.field,r=t===void 0?n:[t,...Array.isArray(n)?n:[n]];return(0,l.jsx)(s.Form.Item,{name:r,hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})},`hidden-${e.field}`)}),$t=(e,t,r,i=!1,a)=>{let o=new Set,c=[],u=new Set(e.map(e=>e.field).filter(Boolean)),d=e.filter(e=>e.show===void 0||Ss(e.show)||e.show===0&&!!e.prefillWhen?.length);return c.push(...Zt(e,t)),d.forEach(e=>{if(Ss(e.addRow)&&t===void 0){c.push(Yt(e));return}if(Ss(e.addRow)&&t!==void 0){c.push(Xt(e,t,r));return}let f=e.combineKey?.trim?.();if(!f){c.push(Jt(e,t,r,{hideLabel:i,groupNameForActions:a,rowFieldKeys:u}));return}let p=`${r??`root`}:${t??`root`}:${f}`;if(o.has(p))return;let m=d.filter(e=>e.combineKey===f);m.forEach(e=>o.add(`${r??`root`}:${t??`root`}:${e.combineKey}`));let h=m.find(e=>e.combineLabel)??e,g=r!==void 0&&t!==void 0?[...Array.isArray(r)?r:[r],t]:null,_=m.find(e=>n.rn(e))??null,v=e=>g&&(!u||u.has(e))?g:null,y=_?r!==void 0&&t!==void 0?[...Array.isArray(r)?r:[r],t,...String(_.field).includes(`.`)?String(_.field).split(`.`):[_.field]]:String(_.field).includes(`.`)?String(_.field).split(`.`):_.field:null,b=(0,l.jsx)(Os,{form:B,field:h,siblingPrefix:g,combined:!0}),x=_?(0,l.jsxs)(`span`,{className:`v1-label-with-override`,children:[b,(0,l.jsx)(n.K,{form:B,field:_,flagPath:n.in(_,y,v),fieldPath:y})]}):b,S=m.find(e=>e.combineToggleTarget)?.combineToggleTarget,C=m.find(e=>e.combineToggleLabel)?.combineToggleLabel??`Show range`,w=p,T=m.some(e=>Ss(e.combineWrap)),E=Number(m.find(e=>[12,24].includes(Number(e.combineSpan)))?.combineSpan),D=S?m.find(e=>Kt(e)===S):null,O=D?.field?.includes?.(`.`)?D.field.split(`.`):[D?.field].filter(Boolean),k=D?r!==void 0&&t!==void 0?[r,t,...O]:O.length>1?O:D.field:null,A=m.some(e=>Qs(e)),j=[12,24].includes(E)?E:m.length>=3?24:12,M=e=>g&&(!u||u.has(e))?g:null,N=m.some(e=>Ht(e.showIf)),P=e=>m.some(t=>!Ht(t.showIf)||Vt(t.showIf,e,M)),F=(0,l.jsx)(s.Col,{xs:24,md:j,children:(0,l.jsx)(s.Form.Item,{label:x,required:A,colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{let n=k?!Ws(e(k)):!1,i=Wt[w]??n,a=S&&!i?m.filter(e=>Kt(e)!==S):m;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Row,{gutter:[8,0],align:`top`,wrap:T,className:`v1-combine-row${T?` v1-combine-row-wrap`:``}`,children:a.map(e=>Jt(A?{...e,req:1}:e,t,r,{inline:!0}))}),S&&(0,l.jsxs)(`div`,{className:`v1-combine-range`,children:[(0,l.jsx)(s.Switch,{size:`small`,checked:i,onChange:e=>{!e&&k&&(B.setFieldValue(k,void 0),B.validateFields([k]).catch(()=>{})),Gt(t=>({...t,[w]:e}))}}),(0,l.jsx)(_s,{type:`secondary`,className:`v1-combine-toggle-label`,children:C})]})]})}})})},p);c.push(N?(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>P(e)?F:null},p):F)}),c},en=(0,o.useMemo)(()=>{if(W.fields?.length)return W.fields;let e=W.rows[0];return e?Object.keys(e).filter(t=>!t.startsWith(`_`)&&typeof e[t]!=`object`).map(e=>({value:e,field:e,label:e.replace(/([A-Z])/g,` $1`).replace(/^./,e=>e.toUpperCase()),isVisible:!0})):[]},[W.fields,W.rows]),tn=e=>!Array.isArray(e)||e.length===0?`card`:e.some(e=>[e?.sourceType,e?.profileSource,e?.selectedSource,e?.customFields?.sourceType,e?.customFields?.profileSource].some(e=>{if(e==null)return!1;let t=String(e).trim().toLowerCase();return t?![`all`,`internal`].includes(t):!1}))?`list`:`card`;(0,o.useMemo)(()=>tn(W.rows),[W.rows]);let nn=(0,o.useMemo)(()=>{let e=fs({rows:W.rows,selectedSource:K});if(!e.length)return en;let t=new Set(e.map(e=>e.field));return[...en.filter(e=>e.cardRole!==`action`&&!t.has(e.value)),...e.map(e=>({value:e.field,field:e.field,label:e.label??`Action`,cardRole:`action`,isVisible:!0,tableHidden:!0,sorter:!1,render:(t,n)=>{if(!ps(e,n,K))return null;let r=ms(e,n),i=xe[r]??{},a=!r||i.completed;return(0,l.jsx)(s.Button,{type:`primary`,size:`small`,loading:i.loading,disabled:a,onClick:()=>jt(e,n),children:i.completed?e.completedLabel:e.buttonLabel})}}))]},[jt,en,W.rows,K,xe]),rn=(0,o.useMemo)(()=>{if(!D)return W.actions;let e=t=>({...t,popupState:{...D,...t.popupState},...t.children?{children:t.children.map(e)}:{}});return(W.actions??[]).map(e)},[W.actions,D]),an=e=>{let t=e.name??e.id??``,r=n.Wt(qe,t),i=!!r&&r.leaderName!==t,a=r?X.find(e=>e.name===r.leaderName)??e:e,o=Math.max(0,Number(a.minRows??0)||0),u=Math.max(0,Number(a.maxRows??0)||0),d=r?r.memberNames:[t],f=()=>{d.forEach(t=>{let r=X.find(e=>e.name===t)??e;Je.current[t]?.add(n.$t(r))})},p=e=>{d.forEach(t=>Je.current[t]?.remove(e))};return e.addRow?(0,l.jsx)(s.Form.List,{name:t,initialValue:Dt[t]??[],rules:i?[]:[{validator:async(t,n=[])=>{if(!(Ss(e.toggleEnabled)&&e.toggleField&&B.getFieldValue(e.toggleField))){if(o>0&&n.length<o)throw Error(`Keep at least ${o} row${o>1?`s`:``}.`);if(Ss(e.requireOne)&&n.some(e=>!Rs(e)))throw Error(`Fill at least one field in each added row.`)}}}],children:(n,{add:r,remove:d,move:m},{errors:h})=>(Je.current[t]={add:r,remove:d,move:m},(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[(0,l.jsx)(`div`,{className:`v1-addrow-topbar`,children:i?(0,l.jsxs)(_s,{type:`secondary`,className:`v1-addrow-linked-hint`,children:[`Rows added via `,a.label??a.name]}):(!u||n.length<u)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:f,className:`v1-addrow-add-btn`,children:e.addLabel??`Add ${e.label??`Row`}`})}),Ss(e.sharedRowLabels)&&n.length>0&&(0,l.jsx)(s.Row,{gutter:[24,0],className:`v1-addrow-header`,children:e.fields.filter(e=>e.show===void 0||Ss(e.show)).map(e=>(0,l.jsx)(s.Col,{md:e.col??12,className:`v1-addrow-header-label`,children:e.label},Kt(e)))}),n.map(({key:r,name:i})=>(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>p(i),disabled:n.length<=o,className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:$t(e.fields,i,t,Ss(e.sharedRowLabels),t)})})]},r)),(0,l.jsx)(s.Form.ErrorList,{errors:h})]}))}):(0,l.jsx)(s.Row,{gutter:[24,0],children:$t(e.fields,void 0,void 0,!1,t)})},on=e=>X.filter(t=>t!==e&&t.mergeInto&&String(t.mergeInto)===String(e.name)),sn=e=>!!(e.mergeInto&&X.some(t=>t!==e&&String(t.name)===String(e.mergeInto))),cn=(e,t)=>on(e).filter(e=>String(e.mergePosition??`bottom`)===t),ln=(e,t)=>{let n=e.name??e.id??String(t),r=an(e),i=cn(e,`top`),a=cn(e,`bottom`),o=e=>{let t=(0,l.jsxs)(`div`,{className:`v1-merged-group`,children:[(0,l.jsx)(`div`,{className:`v1-merged-group-title`,children:e.label??e.name}),an(e)]},e.name),n=e.showIf?.field?(0,l.jsx)(Ps,{form:B,showIf:e.showIf,render:()=>t},e.name):t;return(0,l.jsx)(Is,{form:B,group:e,inheritParent:!1,children:n},e.name)};return(0,l.jsx)(s.Card,{className:`v1-card v1-edit-card`,title:(0,l.jsx)(fc,{icon:bs[t%bs.length],title:M?ue||e.label:e.label??e.name??`Details`}),extra:(0,l.jsxs)(s.Space,{size:8,align:`center`,className:`v1-group-actions`,children:[(0,l.jsx)(mc,{group:e}),(0,l.jsx)(hc,{group:e}),Ss(e.allowCollapse)&&(0,l.jsx)(s.Button,{type:`text`,size:`small`,"aria-expanded":!ie[n],"aria-label":ie[n]?`Expand section`:`Collapse section`,icon:ie[n]?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.UpOutlined,{}),onClick:e=>{e.stopPropagation(),Ot(n)}})]}),children:(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:t})=>{let s=Ss(e.toggleEnabled)&&e.toggleField&&!!t(e.toggleField);return(0,l.jsxs)(`div`,{style:{display:ie[n]||s?`none`:`block`},children:[i.map(o),r,a.map(o)]})}})},n)};return(0,l.jsxs)(`main`,{children:[g.length>0&&(0,l.jsx)(n.t,{items:g}),(0,l.jsxs)(`div`,{className:`v1-edit-page`,children:[ct&&!w&&!Be&&(0,l.jsx)(s.Card,{className:`v1-card v1-edit-card v1-client-gate-card`,children:(0,l.jsxs)(s.Space,{direction:`vertical`,size:12,style:{width:`100%`},children:[(0,l.jsx)(fc,{icon:(0,l.jsx)(c.UserOutlined,{}),title:`Select Client`}),lt&&(0,l.jsx)(_s,{type:`secondary`,children:lt}),(0,l.jsx)(s.Row,{gutter:[16,0],children:(0,l.jsxs)(s.Col,{xs:24,md:14,children:[(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,placeholder:`Select client`,style:{width:`100%`},value:J||void 0,optionFilterProp:`label`,options:Ce.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:dt,popupRender:mt.footer?e=>(0,l.jsxs)(l.Fragment,{children:[e,mt.footer]}):void 0}),mt.modal]})})]})}),(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(s.Spin,{fullscreen:!0,spinning:$e.busy||Qe.checking,size:`large`,tip:$e.busy?$e.loadingText||`Reading the file…`:`Checking whether we already have this person…`}),(0,l.jsx)(s.Spin,{spinning:!Ct&&!ft,description:`Loading form fields…`,children:(0,l.jsxs)(s.Form,{form:B,layout:`vertical`,colon:!1,className:`v1-form ${V}`,disabled:$e.busy||Qe.checking,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),onFinish:Lt,onFinishFailed:e=>{H({}),n.l(e,B,{root:ee()})},children:[Ct&&X.filter(e=>!sn(e)).map((e,t)=>(0,l.jsx)(Is,{form:B,group:e,children:e.showIf?.field?(0,l.jsx)(Ps,{form:B,showIf:e.showIf,render:()=>ln(e,t)}):ln(e,t)},e.name??`grp-${t}`)),Ct&&!ze&&X.length===0&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:M?`No search configuration found.`:`No form fields are configured.`}),Ct&&M&&(0,l.jsx)(`div`,{className:`v1-search-form-actions`,children:(0,l.jsxs)(s.Space,{size:12,children:[(0,l.jsx)(s.Button,{onClick:kt,disabled:!X.length,children:`Reset`}),(0,l.jsx)(s.Button,{onClick:()=>n.j(P,{cancelPath:y}),children:`Back`}),(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,disabled:fe||!X.length||st,loading:fe,children:N})]})})]})})]}),!M&&(0,l.jsxs)(`div`,{className:O?`v1-footer v1-footer--embedded`:`v1-footer`,children:[(0,l.jsx)(_s,{type:`secondary`,children:`All Unsaved Changes will be lost if you cancel and reload.`}),(0,l.jsxs)(s.Space,{size:12,children:[(0,l.jsx)(s.Button,{onClick:()=>O&&A?A():n.j(P,{cancelPath:y}),children:`Cancel`}),Xe.map((e,t)=>(0,l.jsx)(ks,{form:B,groups:X,action:e,disabled:!Ct||fe||He>0||!X.length,loading:fe,onFire:()=>{Ye.current=e.afterSubmit??{mode:`stay`},e.setValuesBeforeSubmit&&B.setFieldsValue(e.setValuesBeforeSubmit),B.submit()}},`${e.label??`action`}-${t}`)),(0,l.jsx)(As,{form:B,groups:X,onClick:()=>{Ye.current=null,B.submit()},disabled:!Ct||fe||He>0||!X.length,loading:fe,children:N})]})]}),M&&W.searched&&(0,l.jsx)(Go,{moduleName:e,breadcrumbItems:[],dataSource:W.rows,fields:nn,total:W.total,loading:W.loading,current:he.current,pageSize:he.pageSize,showViewToggle:!0,activeView:at,onViewChange:ot,onPageChange:Nt,onPageSizeChange:Pt,showSearch:!1,tabs:ye,selectedSource:K,onTabChange:Mt,actions:rn,actionRules:W.actionRules})]})]})});function yc({className:e=``,variant:t=`default`,showIcon:n=!0,...r}){return(0,l.jsx)(s.Alert,{className:`app-alert app-alert--${t} ${e}`.trim(),showIcon:n,...r})}function bc(e){let t=n.kn().startOf(`day`).diff(n.Pn(e).startOf(`day`),`day`);return t<=0?`Today`:t===1?`1 Day ago`:`${t} Days ago`}function xc(e=[],t){let r=new Map;return e.forEach(e=>{let i=t(e),a=n.Pn(i);if(!a.isValid())return;let o=a.format(`YYYY-MM-DD`);r.has(o)||r.set(o,{date:new Date(a.valueOf()),items:[]}),r.get(o).items.push(e)}),[...r.values()].sort((e,t)=>t.date-e.date)}function Sc(e){let t=e?.dateTimeFormat||`MMM DD, YYYY | hh:mm A`,[n]=t.split(`|`);return(n??t).trim()||t}function Cc(e){let t=n.Bn();return n.An(e,Sc(t),t)}function wc(e){return Cc(e)}function Tc(e){return n.jn(e,n.Bn())}function Ec({row:e,last:t,getTime:n,getAuthor:r,getMeta:i,renderBody:a}){let o=n(e),s=r?.(e),c=i?.(e);return(0,l.jsxs)(`div`,{className:`znx-an-item`,children:[(0,l.jsxs)(`div`,{className:`znx-an-rail`,children:[c?(0,l.jsx)(`span`,{className:`znx-an-icon-dot znx-an-icon-dot--${c.tone}`,title:c.label,children:c.icon}):(0,l.jsx)(`span`,{className:`znx-an-dot`}),!t&&(0,l.jsx)(`span`,{className:`znx-an-line`})]}),(0,l.jsxs)(`div`,{className:`znx-an-content`,children:[a(e),(0,l.jsxs)(`div`,{className:`znx-an-meta`,children:[s&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:`znx-an-author`,children:s}),(0,l.jsx)(`span`,{className:`znx-an-sep`,"aria-hidden":`true`})]}),(0,l.jsx)(`span`,{className:`znx-an-stamp`,children:Tc(o)})]})]})]})}function Dc({rows:e=[],getTime:t,getKey:n,getAuthor:r,getMeta:i,renderBody:a,emptyText:o=`Nothing here yet.`,grouped:c=!0}){if(!c)return e.length?(0,l.jsx)(`div`,{className:`znx-an-flat`,children:e.map((o,s)=>(0,l.jsx)(Ec,{row:o,last:s===e.length-1,getTime:t,getAuthor:r,getMeta:i,renderBody:a},n(o,s)))}):(0,l.jsx)(`div`,{className:`znx-an-empty`,children:(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:o})});let u=xc(e,t);if(!u.length)return(0,l.jsx)(`div`,{className:`znx-an-empty`,children:(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:o})});let d=u.map((e,o)=>({key:String(o),label:(0,l.jsxs)(`span`,{className:`znx-an-group`,children:[(0,l.jsx)(`span`,{className:`znx-an-group-day`,children:bc(e.date)}),(0,l.jsx)(`span`,{className:`znx-an-group-date`,children:wc(e.date)}),(0,l.jsx)(`span`,{className:`znx-an-group-count`,children:e.items.length})]}),children:e.items.map((o,s)=>(0,l.jsx)(Ec,{row:o,last:s===e.items.length-1,getTime:t,getAuthor:r,getMeta:i,renderBody:a},n(o,s)))}));return(0,l.jsx)(s.Collapse,{className:`znx-an-collapse`,defaultActiveKey:[`0`],ghost:!0,items:d})}var Oc={add:`created`,create:`created`,created:`created`,update:`updated`,updated:`updated`,edit:`updated`,edited:`updated`,update_log:`updated`,update_proof:`updated`,notes:`note`,note:`note`,comment:`note`,assign:`assigned`,assigned:`assigned`,assignment:`assigned`,reassign:`assigned`,reassigned:`assigned`,submit:`submitted`,submitted:`submitted`,submission:`submitted`,"internal submission":`submitted`,send_for_approval:`sendForApproval`,"send for approval":`sendForApproval`,sendforapproval:`sendForApproval`,resubmit:`resubmitted`,resubmitted:`resubmitted`,resent_for_approval:`resent`,reject:`rejected`,rejected:`rejected`,reject_days:`rejected`,declined:`rejected`,decline:`rejected`,approve:`approved`,approved:`approved`,approve_days:`approved`,reopen:`reopened`,reopened:`reopened`,delete:`deleted`,deleted:`deleted`,remove:`deleted`,removed:`deleted`,status:`status`,"status change":`status`,statuschange:`status`,document:`document`,documents:`document`,upload:`document`,uploaded:`document`,attachment:`document`},kc={created:{tone:`success`,icon:(0,l.jsx)(c.PlusOutlined,{}),label:`Created`},updated:{tone:`info`,icon:(0,l.jsx)(c.EditOutlined,{}),label:`Updated`},note:{tone:`neutral`,icon:(0,l.jsx)(c.MessageOutlined,{}),label:`Note`},assigned:{tone:`purple`,icon:(0,l.jsx)(c.UserSwitchOutlined,{}),label:`Assigned`},submitted:{tone:`info`,icon:(0,l.jsx)(c.SendOutlined,{}),label:`Submitted`},sendForApproval:{tone:`info`,icon:(0,l.jsx)(c.SendOutlined,{}),label:`Send for Approval`},resubmitted:{tone:`purple`,icon:(0,l.jsx)(c.RedoOutlined,{}),label:`Re-submitted`},resent:{tone:`purple`,icon:(0,l.jsx)(c.RedoOutlined,{}),label:`Resend for Approval`},approved:{tone:`success`,icon:(0,l.jsx)(c.CheckOutlined,{}),label:`Approved`},rejected:{tone:`danger`,icon:(0,l.jsx)(c.CloseOutlined,{}),label:`Rejected`},reopened:{tone:`neutral`,icon:(0,l.jsx)(c.UndoOutlined,{}),label:`Reopened`},deleted:{tone:`danger`,icon:(0,l.jsx)(c.DeleteOutlined,{}),label:`Deleted`},status:{tone:`warning`,icon:(0,l.jsx)(c.SwapOutlined,{}),label:`Status changed`},document:{tone:`info`,icon:(0,l.jsx)(c.PaperClipOutlined,{}),label:`Document`},scheduled:{tone:`warning`,icon:(0,l.jsx)(c.ClockCircleOutlined,{}),label:`Scheduled`},default:{tone:`neutral`,icon:(0,l.jsx)(c.HistoryOutlined,{}),label:`Activity`}},Ac=[[/\b(?:submitted|sent|send)\b[\s\S]*\b(?:cfo|finance)\b[\s\S]*\bfor approval\b/i,`sendForApproval`],[/\bsend(?:ing)?\s+for\s+approval\b/i,`sendForApproval`],[/\breject/i,`rejected`],[/\bresent\b/i,`resent`],[/\bresubmit/i,`resubmitted`],[/\bapprov/i,`approved`],[/\bsubmit/i,`submitted`],[/\breassign|\bassign/i,`assigned`],[/\bdelete|\bremov/i,`deleted`],[/\breopen/i,`reopened`],[/\bstatus/i,`status`],[/\bdocument|\battach|\bupload/i,`document`],[/\bnote/i,`note`],[/\bupdat|\bchang|\bedit/i,`updated`],[/\bcreat|\badded\b/i,`created`]];function jc(e,t){let n=String(e||``).trim().toLowerCase();if(n&&Oc[n])return Oc[n];let r=String(t||``);for(let[e,t]of Ac)if(e.test(r))return t;return`default`}function Mc(e={},t=``){return kc[jc(e.activityType??e.activity_type??e.type??e.action,t||e.activityComments)]??kc.default}function Nc(e=``){if(typeof document>`u`)return String(e);let t=document.createElement(`div`);return t.innerHTML=e,t.textContent||t.innerText||``}var Pc=[{id:`a1`,activityTime:new Date().toISOString(),activityComments:`Job <b>created</b> and assigned to the recruitment team.`},{id:`a2`,activityTime:new Date(Date.now()-1728e5).toISOString(),activityComments:`Status changed to <b>Active</b>.`}];function Fc({activity:e,grouped:t=!0}){let n=(0,o.useMemo)(()=>Array.isArray(e)?e:Pc,[e]);return(0,l.jsx)(`div`,{className:`znx-an-body`,children:(0,l.jsx)(`div`,{className:`znx-an-scroll`,children:(0,l.jsx)(Dc,{rows:n,grouped:t,getTime:e=>e.activityTime??e.createdAt,getKey:(e,t)=>e.id??e._id??t,emptyText:`No activity here.`,getMeta:e=>Mc(e,e.activityComments),renderBody:e=>{let t=Mc(e,e.activityComments);return(0,l.jsxs)(`div`,{className:`znx-an-comment`,children:[(0,l.jsx)(`span`,{className:`znx-an-tag znx-an-tag--${t.tone}`,children:t.label}),Nc(e.activityComments)]})}})})})}function Ic(e){let t=e?.user_name??e?.userName??e?.username,n=`${e?.first_name??e?.firstName??``} ${e?.last_name??e?.lastName??``}`.trim(),r=e?.email??``,i=t??n.replace(/\s+/g,``)??r??String(e?.user_id??e?.id??``),a=[t,n,r].filter(Boolean).join(` - `)||String(i);return{value:String(i),label:a}}var Lc=[{id:`n1`,createdAt:new Date().toISOString(),author:`You`,notes:`Shortlisted 3 candidates, sharing profiles with @Hiring Manager today.`}];function Rc(e=``){return e.split(/(\s+)/).map((e,t)=>e.startsWith(`@`)&&e.length>1?(0,l.jsx)(`span`,{className:`znx-an-mention`,children:e},t):(0,l.jsx)(`span`,{children:e},t))}function zc({notes:e,users:t=[],onAddNote:n,allowAddNote:r=!0}){let[i]=s.Form.useForm(),[a,c]=(0,o.useState)(()=>Array.isArray(e)?e:Lc),[u,d]=(0,o.useState)(!1),[f,p]=(0,o.useState)(null),[m,h]=(0,o.useState)(!1),g=(0,o.useRef)(null),_=Array.isArray(e)?e:a,v=(0,o.useMemo)(()=>t.map(e=>({value:e.display??e.value,label:e.display??e.label})),[t]),y=f??v;return(0,l.jsxs)(`div`,{className:`znx-an-body`,children:[r&&(0,l.jsxs)(s.Form,{form:i,onFinish:async({note:e})=>{let t=(e??``).trim();if(t){d(!0);try{n?await n(t):c(e=>[{id:`local-${Date.now()}`,createdAt:new Date().toISOString(),author:`You`,notes:t},...e]),i.resetFields(),s.message.success(`Notes added successfully`)}catch{s.message.error(`Something went wrong, please try again.`)}finally{d(!1)}}},className:`znx-an-composer`,children:[(0,l.jsx)(s.Form.Item,{name:`note`,rules:[{required:!0,message:`Notes is required`}],style:{marginBottom:0},children:(0,l.jsx)(s.Mentions,{rows:3,prefix:`@`,options:y,loading:m,filterOption:!1,onSearch:e=>{clearTimeout(g.current),h(!0),g.current=setTimeout(()=>{qn(e).then(e=>{let t=Array.isArray(e)?e:e?.items??e?.list??e?.data??[];p(t.map(Ic))}).catch(()=>p([])).finally(()=>h(!1))},300)},placeholder:`Add your notes on the job, use '@' to mention`})}),(0,l.jsx)(`div`,{className:`znx-an-composer-actions`,children:(0,l.jsx)(s.Button,{type:`primary`,size:`small`,htmlType:`submit`,loading:u,children:`Post`})})]}),(0,l.jsx)(`div`,{className:`znx-an-scroll`,children:(0,l.jsx)(Dc,{rows:_,getTime:e=>e.createdAt??e.activityTime,getKey:(e,t)=>e.id??e._id??t,getAuthor:e=>e.createdByName||e.author||``,emptyText:`No notes here.`,renderBody:e=>(0,l.jsx)(`div`,{className:`znx-an-comment`,children:Rc(e.notes)})})})]})}function Bc({moduleName:e,id:t,users:r=[],showActivity:i=!0,showNotes:a=!0,allowAddNote:c=!0,defaultActiveKey:u=`activity`,refreshKey:d=0,className:f=``}){let[p,m]=(0,o.useState)(null),[h,g]=(0,o.useState)(null);(0,o.useEffect)(()=>{if(!e||!t)return;let r=!1;async function o(){let[o,s]=await Promise.all([i?n.dn(e,t).catch(()=>[]):Promise.resolve(null),a?n.mn(t).catch(()=>[]):Promise.resolve(null)]);r||(m(o),g(s))}return o(),()=>{r=!0}},[e,t,i,a,d]);let _=(0,o.useCallback)(async r=>{if(!t)return;await n.un({relatedId:t,notes:r,notesFor:e});let[a,o]=await Promise.all([n.mn(t).catch(()=>[]),i?n.dn(e,t).catch(()=>[]):Promise.resolve(p)]);g(a),i&&m(o)},[t,e,i,p]),v=[i&&{key:`activity`,title:`Activity`,count:Array.isArray(p)?p.length:void 0,children:(0,l.jsx)(Fc,{activity:p})},a&&{key:`notes`,title:`Notes`,count:Array.isArray(h)?h.length:void 0,children:(0,l.jsx)(zc,{notes:h,users:r,allowAddNote:c,onAddNote:t?_:void 0})}].filter(Boolean),y=v.some(e=>e.key===u)?u:v[0]?.key,[b,x]=(0,o.useState)(y);return(0,l.jsx)(s.Card,{className:[`znx-an-card`,f].filter(Boolean).join(` `),styles:{body:{padding:0}},children:(0,l.jsx)(P,{className:`znx-an-tabs`,tabs:v,activeKey:b,onChange:x})})}Bc.propTypes={moduleName:f.default.string,id:f.default.string,users:f.default.array,showActivity:f.default.bool,showNotes:f.default.bool,allowAddNote:f.default.bool,defaultActiveKey:f.default.string,refreshKey:f.default.oneOfType([f.default.number,f.default.string]),className:f.default.string};function Vc({assignees:e,extraAssignees:t}){return(0,l.jsxs)(s.Avatar.Group,{maxCount:3,size:`small`,children:[e.map((e,t)=>(0,l.jsx)(s.Tooltip,{title:e.initials,children:(0,l.jsx)(s.Avatar,{size:`small`,style:{backgroundColor:e.color,fontSize:10,fontWeight:600,cursor:`default`},children:e.initials})},t)),t>0&&(0,l.jsxs)(s.Avatar,{size:`small`,style:{backgroundColor:`#d9d9d9`,color:`#555`,fontSize:10},children:[`+`,t]})]})}var Hc=[`.xlsx`,`.xls`,`.csv`],Uc=10,Wc={".xlsx":[`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`],".xls":[`application/vnd.ms-excel`],".csv":[`text/csv`,`application/csv`,`text/plain`]},Gc=[{test:(e,t)=>e===`.pdf`||t===`application/pdf`,label:`PDF`},{test:(e,t)=>t.startsWith(`image/`)||[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`,`.heic`,`.bmp`,`.svg`].includes(e),label:`Image`},{test:e=>[`.doc`,`.docx`].includes(e),label:`Word document`},{test:e=>[`.zip`,`.rar`,`.7z`].includes(e),label:`Archive`},{test:e=>[`.txt`,`.json`,`.xml`].includes(e),label:`Plain text`}];function Kc(e=``){let t=e.lastIndexOf(`.`);return t===-1?``:e.slice(t).toLowerCase()}function qc(e=0){return e<1024?`${e} B`:e<1048576?`${Math.ceil(e/1024)} KB`:`${(e/1048576).toFixed(1)} MB`}function Jc(e=Hc){let t=e.map(e=>e.toLowerCase());return t.concat(t.flatMap(e=>Wc[e]??[])).join(`,`)}function Yc(e,{accept:t=Hc,maxSizeMB:n=10}={}){if(!e)return`No file selected.`;let r=Kc(e.name),i=(e.type||``).toLowerCase(),a=t.map(e=>e.toLowerCase()),o=a.join(`, `);if(!r)return`"${e.name}" has no file extension. Only ${o} files are allowed.`;if(!a.includes(r)){let e=Gc.find(e=>e.test(r,i));return e?`${e.label} files are not supported. Only ${o} files are allowed.`:`"${r}" files are not supported. Only ${o} files are allowed.`}let s=Wc[r];return i&&s&&!s.includes(i)?`"${e.name}" is not a real ${r} file (detected ${i}). Re-save it from Excel and try again.`:e.size===0?`"${e.name}" is empty. Fill in at least one row before uploading.`:e.size>n*1024*1024?`File is ${qc(e.size)}. The limit is ${n} MB.`:null}function Xc(){return(0,l.jsxs)(`svg`,{className:`bulk-upload-art`,viewBox:`0 0 72 72`,focusable:`false`,"aria-hidden":`true`,children:[(0,l.jsx)(`rect`,{x:`12`,y:`6`,width:`36`,height:`48`,rx:`5`,className:`bulk-upload-art__sheet`}),(0,l.jsx)(`path`,{d:`M20 20h20M20 28h20M20 36h12`,className:`bulk-upload-art__lines`}),(0,l.jsx)(`circle`,{cx:`50`,cy:`48`,r:`15`,className:`bulk-upload-art__badge`}),(0,l.jsx)(`path`,{d:`M50 55V41m0 0-6 6m6-6 6 6`,className:`bulk-upload-art__arrow`})]})}function Zc({title:e,description:t,breadcrumbItems:r,backTo:i,backLabel:a=`Back`,templateLabel:u=`Download Sample Template`,templateTitle:f=`Sample template`,templateHint:p=`Pre-filled with the exact column names the importer expects. Do not rename or reorder the columns.`,instructions:m=[],accept:h=Hc,maxSizeMB:g=10,onDownloadTemplate:_,onUpload:v,renderResult:y,extraSidebar:b}){let x=(0,o.useRef)(null),[S,C]=(0,o.useState)(!1),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)(null),[A,j]=(0,o.useState)(null),[M,N]=(0,o.useState)(null),[P,F]=(0,o.useState)(0),I=(0,o.useMemo)(()=>h.map(e=>e.toLowerCase()),[h]),L=(0,o.useMemo)(()=>Jc(I),[I]),R=(0,o.useCallback)(()=>{k(null),j(null),N(null),C(!1),F(e=>e+1)},[]),z=(0,o.useCallback)(async()=>{if(_){T(!0);try{await _(),s.message.success(`Sample template downloaded.`)}catch(e){s.message.error(e?.message||`Could not download the template.`)}finally{T(!1)}}},[_]),B=(0,o.useCallback)(async e=>{if(!e||E)return;F(e=>e+1);let t=Yc(e,{accept:I,maxSizeMB:g});if(t){k(null),N(null),j(t);return}j(null),N(null),k({name:e.name,size:e.size}),D(!0);try{let t=await v(e);N(t)}catch(e){j(e?.message||`Upload failed. Please try again.`)}finally{D(!1)}},[I,g,v,E]),V=()=>{E||x.current?.click()},ee=[`bulk-upload-dropzone`,S?`is-dragging`:``,E?`is-busy`:``,A?`is-error`:``,M&&!A?`is-done`:``].filter(Boolean).join(` `);return(0,l.jsxs)(`div`,{className:`bulk-upload-panel`,children:[r?.length?(0,l.jsx)(`div`,{className:`bulk-upload-breadcrumb`,children:(0,l.jsx)(n.t,{items:r})}):null,(0,l.jsxs)(`div`,{className:`bulk-upload-frame`,children:[(0,l.jsxs)(`header`,{className:`bulk-upload-header`,children:[(0,l.jsx)(`div`,{className:`bulk-upload-header__icon`,"aria-hidden":`true`,children:(0,l.jsx)(c.FileExcelOutlined,{})}),(0,l.jsxs)(`div`,{className:`bulk-upload-header__text`,children:[(0,l.jsx)(`h1`,{className:`bulk-upload-header__title`,children:e}),t?(0,l.jsx)(`p`,{className:`bulk-upload-header__desc`,children:t}):null]}),i?(0,l.jsx)(d.Link,{className:`bulk-upload-header__back`,to:i,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.ArrowLeftOutlined,{}),children:a})}):null]}),(0,l.jsxs)(`div`,{className:`bulk-upload-grid`,children:[(0,l.jsxs)(`section`,{className:`bulk-upload-card bulk-upload-card--drop`,children:[(0,l.jsxs)(`div`,{className:`bulk-upload-card__head`,children:[(0,l.jsx)(`span`,{className:`bulk-upload-step`,children:`Step 2`}),(0,l.jsx)(`h2`,{className:`bulk-upload-card__title`,children:`Upload the filled file`})]}),(0,l.jsxs)(`div`,{role:`button`,tabIndex:E?-1:0,"aria-disabled":E,"aria-label":`Upload the filled file — click to browse, or drop a file here`,className:ee,onClick:V,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),V())},onDragOver:e=>{e.preventDefault(),E||C(!0)},onDragLeave:()=>C(!1),onDrop:e=>{e.preventDefault(),C(!1),B(e.dataTransfer.files?.[0])},children:[(0,l.jsx)(Xc,{}),(0,l.jsx)(`p`,{className:`bulk-upload-dropzone__title`,children:S?`Drop the file to start uploading`:`Drag & drop your file here`}),(0,l.jsxs)(`p`,{className:`bulk-upload-dropzone__sub`,children:[`or `,(0,l.jsx)(`span`,{className:`bulk-upload-dropzone__link`,children:`browse from your computer`})]}),(0,l.jsxs)(`div`,{className:`bulk-upload-chips`,children:[I.map(e=>(0,l.jsx)(s.Tag,{className:`bulk-upload-chip bulk-upload-chip--ok`,children:e},e)),(0,l.jsx)(s.Tooltip,{title:`These file types are rejected before upload`,children:(0,l.jsx)(s.Tag,{className:`bulk-upload-chip bulk-upload-chip--no`,children:`.pdf .jpg .png not allowed`})})]}),(0,l.jsxs)(`p`,{className:`bulk-upload-dropzone__limit`,children:[`Maximum size `,g,` MB`]})]}),(0,l.jsx)(`input`,{ref:x,hidden:!0,type:`file`,accept:L,onChange:e=>B(e.target.files?.[0])},P),O?(0,l.jsxs)(`div`,{className:`bulk-upload-file ${A?`is-error`:``}`,children:[(0,l.jsx)(`span`,{className:`bulk-upload-file__icon`,children:E?(0,l.jsx)(c.FileExcelOutlined,{}):A?(0,l.jsx)(c.CloseCircleFilled,{}):(0,l.jsx)(c.CheckCircleFilled,{})}),(0,l.jsxs)(`span`,{className:`bulk-upload-file__meta`,children:[(0,l.jsx)(`span`,{className:`bulk-upload-file__name`,title:O.name,children:O.name}),(0,l.jsxs)(`span`,{className:`bulk-upload-file__size`,children:[qc(O.size),E?` · uploading…`:A?` · failed`:` · processed`]})]}),E?null:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:M?(0,l.jsx)(c.ReloadOutlined,{}):(0,l.jsx)(c.DeleteOutlined,{}),onClick:R,children:M?`Upload another`:`Remove`})]}):null,E?(0,l.jsx)(s.Progress,{percent:99,status:`active`,showInfo:!1,size:`small`,className:`bulk-upload-progress`}):null,A?(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,className:`bulk-upload-alert`,title:`File not accepted`,description:A}):null]}),(0,l.jsxs)(`aside`,{className:`bulk-upload-side`,children:[(0,l.jsxs)(`section`,{className:`bulk-upload-card bulk-upload-card--template`,children:[(0,l.jsxs)(`div`,{className:`bulk-upload-card__head`,children:[(0,l.jsx)(`span`,{className:`bulk-upload-step`,children:`Step 1`}),(0,l.jsx)(`h2`,{className:`bulk-upload-card__title`,children:f})]}),(0,l.jsx)(`p`,{className:`bulk-upload-side__hint`,children:p}),(0,l.jsx)(s.Button,{block:!0,icon:(0,l.jsx)(c.DownloadOutlined,{}),loading:w,onClick:z,className:`bulk-upload-template-btn`,children:u})]}),m.length?(0,l.jsxs)(`section`,{className:`bulk-upload-card bulk-upload-card--rules`,children:[(0,l.jsx)(`h2`,{className:`bulk-upload-card__title`,children:`Before you upload`}),(0,l.jsx)(`ul`,{className:`bulk-upload-rules`,children:m.map(e=>(0,l.jsx)(`li`,{children:e},e))})]}):null,b]})]}),M&&y?(0,l.jsx)(`div`,{className:`bulk-upload-result`,children:y(M,{reset:R})}):null]})]})}var Qc=e.t({getJobById:()=>ol,getJobDetailView:()=>$c,updateJobDescription:()=>sl});async function $c(e){let n=await t.a(),r=new URLSearchParams({jobId:String(e)}),i=await fetch(`${t.T}/jobs?${r}`,{method:`GET`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`}});if(!i.ok)throw Error(`API ${i.status}: ${i.statusText}`);let a=await i.json();return a.data??a}var el={email:`zinnext@realtekconsulting.net`,user_pwd:`Admin@123*`},tl=null;async function nl(){return tl||(tl=fetch(`${t.x}/login`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(el)}).then(async e=>{if(!e.ok)throw Error(`Login failed: ${e.status}`);let t=await e.json(),n=t.token??t.access_token??t.data?.token??t.data?.access_token;if(!n)throw Error(`No token in login response`);return localStorage.setItem(`authToken`,n),n}).finally(()=>{tl=null}),tl)}async function rl(){return(t.u()??localStorage.getItem(`authToken`))||nl()}async function il(e){let n=await rl(),r=await fetch(`${t.x}${e}`,{headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`}});if(r.status===401&&(localStorage.removeItem(`authToken`),n=await nl(),r=await fetch(`${t.x}${e}`,{headers:{"Content-Type":`application/json`,Authorization:`Bearer ${n}`}})),!r.ok)throw Error(`API ${r.status}: ${r.statusText}`);let i=await r.json();return i.data??i}async function al(e,n){let r=await rl(),i=await fetch(`${t.x}${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`},body:JSON.stringify(n)});if(i.status===401&&(localStorage.removeItem(`authToken`),r=await nl(),i=await fetch(`${t.x}${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`},body:JSON.stringify(n)})),!i.ok)throw Error(`API ${i.status}: ${i.statusText}`);return i.json()}async function ol(e){return il(`/jobs/${e}`)}async function sl(e,t){return al(`/jobs/${e}`,{rawDescription:t})}var{Text:cl}=s.Typography,ll=2;function ul({jobId:e,sections:t=[],meta:n=[],rawDescription:r=``,onSaved:i}){let[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(!1),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(!1),_=[...t].sort((e,t)=>(e.displayOrder??0)-(t.displayOrder??0)),v=a?_:_.slice(0,ll),y=_.length>ll;function b(){m(r),f(!0)}function x(){f(!1),m(``)}async function S(){if(!p.trim()){s.message.warning(`Please enter a job description`);return}g(!0);try{await sl(e,p.trim());let t=await ol(e);i?.(t),f(!1),m(``),s.message.success(`Description updated successfully`)}catch{s.message.error(`Failed to update description`)}finally{g(!1)}}return d?(0,l.jsxs)(s.Space,{direction:`vertical`,style:{width:`100%`},size:8,children:[(0,l.jsx)(s.Input.TextArea,{rows:10,value:p,onChange:e=>m(e.target.value),placeholder:`Paste raw job description here...`}),(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{type:`primary`,loading:h,onClick:S,children:`Save & Parse`}),(0,l.jsx)(s.Button,{onClick:x,children:`Cancel`})]})]}):(0,l.jsxs)(`div`,{className:`desc-block`,children:[(0,l.jsx)(`div`,{className:`desc-block-toolbar`,children:(0,l.jsx)(c.EditOutlined,{className:`desc-edit-icon`,onClick:b})}),!t.length&&!n.length?(0,l.jsx)(cl,{type:`secondary`,children:`No description available.`}):(0,l.jsxs)(`div`,{className:`jdv-ats-desc`,children:[n.length>0&&(0,l.jsx)(`div`,{className:`jdv-ats-meta-grid`,children:n.map(({fieldKey:e,fieldLabel:t,value:n})=>(0,l.jsxs)(`div`,{className:`jdv-ats-meta-row`,children:[(0,l.jsx)(`span`,{className:`jdv-ats-meta-key`,children:t}),(0,l.jsx)(`span`,{className:`jdv-ats-meta-val`,children:n})]},e))}),(0,l.jsx)(`div`,{className:`jdv-ats-sections`,children:v.map(({sectionKey:e,sectionTitle:t,renderType:n,content:r=[]})=>n===`education`?(0,l.jsxs)(`div`,{className:`education-block`,children:[(0,l.jsxs)(`div`,{className:`education-header`,children:[(0,l.jsx)(`span`,{children:`🎓`}),(0,l.jsx)(`span`,{children:t})]}),(0,l.jsx)(`ul`,{className:`education-list`,children:r.map((e,t)=>(0,l.jsx)(`li`,{className:`education-list-item`,children:e},t))})]},e):(0,l.jsxs)(`div`,{className:`jdv-ats-section`,children:[(0,l.jsx)(`div`,{className:`jdv-ats-section-hd`,children:(0,l.jsx)(`span`,{children:t})}),n===`chips`?(0,l.jsx)(s.Space,{size:[6,6],wrap:!0,style:{marginTop:8},children:r.map((e,t)=>(0,l.jsx)(s.Tag,{className:`jdv-skill-tag`,children:e},t))}):(0,l.jsx)(`ul`,{className:`jdv-ats-bullets`,children:r.map((e,t)=>(0,l.jsx)(`li`,{className:`jdv-ats-bullet-item`,children:e},t))})]},e))}),y&&(0,l.jsx)(`span`,{className:`jdv-desc-toggle`,onClick:()=>u(e=>!e),children:a?`Show less`:`Show more (${t.length-ll} more sections)`})]})]})}function dl(){return Number(localStorage.getItem(`userId`))||0}function fl(e,{id:t,moduleName:n,record:r}={}){let i=(0,o.useMemo)(()=>Array.isArray(e)?e:[],[e]),a=(0,o.useMemo)(()=>i.filter(e=>typeof e?.visibleWhen==`function`),[i]),[s,c]=(0,o.useState)({});return(0,o.useEffect)(()=>{if(!a.length)return;let e=!1,i={id:t,moduleName:n,record:r,currentUserId:dl()};return a.forEach(n=>{let r=`${t}:${n.key}`;Promise.resolve().then(()=>n.visibleWhen(i)).then(t=>{e||c(e=>({...e,[r]:t!==!1}))}).catch(()=>{e||c(e=>({...e,[r]:!0}))})}),()=>{e=!0}},[a,t,n,r]),(0,o.useMemo)(()=>i.filter(e=>typeof e?.visibleWhen!=`function`||s[`${t}:${e.key}`]===!0),[i,s,t])}var pl=[{field:`baId`,label:`BA`,icon:`idcard`},{field:`clientName`,icon:`bank`,tooltip:`Client`},{field:`employerName`,icon:`team`,badgeField:`engagementType`,tooltip:`Employer`},{field:`projectName`,icon:`project`,tooltip:`Project`},{field:`batchPriority`,icon:`idcard`,tooltip:`Priority`},{field:`paymentTermsLabel`,icon:`cycle`,tooltip:`Payment Terms`},{field:`paymentDeadlineLabel`,icon:`period`,tooltip:`Payment Deadline`},{field:`batchName`,icon:`project`,tooltip:`Payment Batch`},{field:`period.label`,icon:`period`,tooltip:`Period`}],ml=e.t({billingConfig:()=>hl,default:()=>hl}),hl={module:`billing`,tabs:[],header:{variant:`finance`,title:`candidateName`,eyebrow:`designation`,statusField:`billing.status`,chips:pl}},gl={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`,AUD:`$`,CAD:`$`},_l=e=>e==null||e===``||Array.isArray(e)&&e.length===0,vl=e=>!_l(e);function yl(e){let t=xl(e);return t.charAt(0).toUpperCase()+t.slice(1)}function bl(e){return e&&typeof e==`object`&&!Array.isArray(e)&&`id`in e&&`value`in e?e.id??e.value:e}function xl(e){return Array.isArray(e)?e.filter(e=>!_l(e)).map(e=>xl(e)).filter(Boolean).join(`, `):e&&typeof e==`object`&&`id`in e&&`value`in e?String(e.value??e.id??``):String(e??``)}function Sl(e){return _l(e)?``:gl[String(e).toUpperCase()]??String(e)}function Cl(e){return _l(e)?``:n.jn(e)}function wl({start:e,end:t,sym:n=``,unit:r}={}){return _l(e)||Number(e)<=0?``:`${n}${!_l(t)&&Number(t)>0?`${e} - ${t}`:`${e}`}${_l(r)?``:`/${r}`}`}function Tl(e){let t=xl(e).toLowerCase();return[`active`,`open`,`hired`,`approved`,`fulfilled`,`submitted`].includes(t)?`success`:[`inactive`,`closed`,`rejected`,`high`].includes(t)?`error`:[`hold`,`on hold`,`pending`,`unread`,`medium`].includes(t)?`warning`:`default`}var El=e.t({candidateConfig:()=>Dl,default:()=>Dl}),Dl={module:`candidate`,tabs:[{key:`details`,label:`Details`},{key:`jobs`,label:`Jobs`},{key:`emails`,label:`Emails`},{key:`attachments`,label:`Attachments`}],header:{title:[`firstName`,`middleName`,`lastName`],eyebrow:`source`,status:({val:e,has:t})=>t(e(`status`))?{label:yl(e(`status`)),color:Tl(e(`status`))}:e(`applicantPlacedStatus`)===!0?{label:`Placed`,color:`success`}:null,ids:[{label:`Candidate ID`,field:[`applicantRefrenceId`,`applicantReferenceId`,`candidateReferenceId`]}],meta:[{icon:`designation`,field:`designation`},{icon:`location`,field:[`currentLocation`,`preferredLocation`]},{icon:`experience`,compute:Ol},{icon:`employment`,field:`workAuthorisation`},{icon:`rate`,prefix:`Expected: `,compute:kl}],timestamp:{label:`Created Date`,field:[`createdAt`,`createdDate`]}}};function Ol({val:e,has:t}){let n=t(e(`yearOfExperience`))?e(`yearOfExperience`):e(`experience`);if(!t(n))return``;let r=e(`monthOfExperience`);return`${n} yrs${t(r)&&Number(r)>0?` ${r} mo`:``}`}function kl({val:e}){let t=e(`expectedPayDetails`)??{};return wl({start:t.expectedPay??e(`expectedPay`),sym:t.expectedPayCurrencySymbol??Sl(t.expectedPayCurrency),unit:t.expectedPayUnit})}var Al=e.t({default:()=>jl,employerConfig:()=>jl}),jl={module:`employer`,header:{title:`empCompanyName`,eyebrow:`empWebsite`,status:({val:e,has:t})=>t(e(`status`))?{label:yl(e(`status`)),color:Tl(e(`status`))}:null,ids:[{label:`Federal Tax ID`,field:`empFederalTaxId`},{label:`State of Incorporation`,field:`empStateOfIncorporation`}],meta:[{icon:`location`,field:`empCompanyLocation`}],timestamp:{label:`Created Date`,field:[`createdAt`,`createdDate`]}}},Ml=e=>e===!0||e===1||e===`1`;function Nl(e){return e==null||e===``?!0:Array.isArray(e)?e.length===0:typeof e==`object`&&Object.values(e).every(e=>Nl(e))}function Pl(e){return n.Rt(e).filter(e=>e?.location||e?.url)}function Fl(e){return Pl(e).length>0}function Il(e){return Ml(e?.hideWhenEmpty)||Ml(e?.hideWhenEmptyInDetail)||Ml(e?.renderOptions?.hideWhenEmpty)||Ml(e?.renderOptions?.hideWhenEmptyInDetail)}function Ll(e){return Ml(e?.hideWhenZero)||Ml(e?.renderOptions?.hideWhenZero)}function Rl(e){if(typeof e==`number`)return e===0;if(typeof e==`string`){let t=e.trim();return t!==``&&Number.isFinite(Number(t))&&Number(t)===0}return!1}function zl(e,t){let n=Ll(e);return!Il(e)&&!n?!1:e?.type===`file`||e?.type===`document`||e?.renderType===`document`?!Fl(t):Nl(t)||n&&Rl(t)}var Bl=e=>e===!0||e===1||e===`1`;function Vl(e=[]){let t={};for(let n of e??[])for(let e of n?.fields??[]){if(!e?.field||e.value===void 0)continue;let n=e.value,r=n&&typeof n==`object`&&!Array.isArray(n)&&`value`in n?n.value:n;t[e.field]=r,e.payloadKey&&t[e.payloadKey]===void 0&&(t[e.payloadKey]=r)}return t}function Hl(e,t){let r=n.c(e?.showIf);return!r.length||Bl(e?.ignoreShowIfInDetail)||!r.every(e=>Object.prototype.hasOwnProperty.call(t??{},e.field))?!0:n.o(e.showIf,e=>t[e])}function Ul(e){let t=e?.detailLabelWhen;if(Array.isArray(t)&&t.length)return t;let n=e?.labelWhen;return n?[n]:[]}function Wl(e,t){let r=e?.label;if(Bl(e?.ignoreLabelWhenInDetail))return r;for(let r of Ul(e))if(!(!r?.field||!r?.label)&&Object.prototype.hasOwnProperty.call(t??{},r.field)&&n.i(r,t[r.field]))return r.label;return r}var Gl=/(currency|symbol|unit|type)/i,Kl=/(rate|budget|amount)/i,ql=e=>typeof e==`number`||typeof e==`string`&&e.trim()!==``&&!Number.isNaN(Number(e)),Jl=e=>e===!0||e===1||e===`1`;function Yl(e,t){return!e||!t||!Jl(e.appendHistory)?!1:[e.historyField,...e.historyFields??[]].includes(t)}function Xl(e,t){let n=String(t??``).trim();if(!n)return``;let r=`${e}.`;return n.startsWith(r)?n.slice(r.length):n}function Zl(e,t=[]){let n=`${e}.`,r=[];return(t??[]).forEach(t=>{Yl(t,e)&&(t.fields??[]).forEach(e=>{let t=String(e?.field??``);if(!t.startsWith(n))return;let i=t.slice(n.length);i&&!r.includes(i)&&r.push(i)})}),r}function Ql(e,t=[],n){for(let r of t??[]){if(!Yl(r,e))continue;let t=Xl(e,r?.[n]?.[e]);if(t)return t}return``}var $l=(e,t)=>!!t&&e!=null&&Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==void 0;function eu(e){let t=Object.entries(e??{}).find(([e,t])=>Kl.test(e)&&!Gl.test(e)&&ql(t));return t?t[0]:``}function tu(e){let t=Object.keys(e??{});return t.find(t=>/currencysymbol/i.test(t)&&String(e[t]??``).trim()!==``)||t.find(t=>/currency/i.test(t)&&String(e[t]??``).trim()!==``)||t.find(t=>/symbol/i.test(t)&&String(e[t]??``).trim()!==``)||``}function nu(e){return Object.keys(e??{}).find(e=>/unit/i.test(e))||``}function ru(e,t,n=[]){let r=Zl(t,n),i=Ql(t,n,`historyAmountFields`),a=r.find(e=>!Gl.test(e)),o=$l(e,i)&&i||$l(e,a)&&a||eu(e),s=Ql(t,n,`historyCurrencyFields`),c=r.find(t=>/symbol/i.test(t)&&$l(e,t)&&String(e[t]??``).trim()!==``),l=r.find(e=>/currency/i.test(e)&&!/symbol/i.test(e)),u=$l(e,s)&&s||c||$l(e,l)&&l||tu(e),d=Ql(t,n,`historyUnitFields`),f=r.find(e=>/unit/i.test(e)),p=$l(e,d)&&d||$l(e,f)&&f||nu(e);return{amountKey:o||``,currencyKey:u||``,unitKey:p||``}}function iu(e,t,n=[]){let{amountKey:r,currencyKey:i,unitKey:a}=ru(e,t,n);return{amountKey:r,currencyKey:i,unitKey:a,amount:r?e?.[r]:void 0,currency:i?e?.[i]:``,unit:a?e?.[a]:``}}var au={USD:`$`,INR:`₹`,GBP:`£`,EUR:`€`,CAD:`C$`,AUD:`A$`,SGD:`S$`,JPY:`¥`};function ou(e,t=`$`){let n=String(e??``).trim();return n?au[n.toUpperCase()]||(/^[A-Za-z]{2,}$/.test(n)?t:n):t}var su={hr:`Hourly`,hour:`Hourly`,hours:`Hourly`,hourly:`Hourly`,day:`Daily`,daily:`Daily`,week:`Weekly`,weekly:`Weekly`,month:`Monthly`,monthly:`Monthly`,year:`Yearly`,yearly:`Yearly`,annual:`Yearly`,annually:`Yearly`};function cu(e,t=``){let n=String(e??``).trim();return n?su[n.toLowerCase()]??n.charAt(0).toUpperCase()+n.slice(1):t}var lu={Hourly:`hr`,Daily:`day`,Weekly:`wk`,Monthly:`mo`,Yearly:`yr`};function uu(e,t=``){let n=cu(e,``);return n?lu[n]??n.toLowerCase():t}function du(e){if(typeof e==`number`)return Number.isFinite(e)?e:NaN;let t=String(e??``).trim().replace(/[,\s]/g,``).replace(/[^0-9eE+.\-]/g,``);if(!t)return NaN;let n=Number(t);return Number.isFinite(n)?n:NaN}function fu(e,{decimals:t}={}){let n=du(e);return Number.isNaN(n)?String(e??``):n.toLocaleString(void 0,{minimumFractionDigits:t??0,maximumFractionDigits:t??2})}function pu(e,t=`$`,n={}){let r=du(e);if(Number.isNaN(r))return String(e??``);let i=ou(t);return`${r<0?`−`:``}${i}${fu(Math.abs(r),n)}`}function mu(e,t=`$`,n,r={}){let i=pu(e,t,r),a=cu(n,``);return a?`${i} / ${a}`:i}var hu=Object.freeze({document:`No document uploaded`,documents:`No documents uploaded`,date:`Not provided`,phone:`No contact number added`,email:`No email address added`,link:`No link added`,url:`No link added`,tags:`None added`,multitag:`None added`,skills:`No skills added`,currency:`Not provided`,money:`Not provided`,number:`Not provided`,boolean:`Not specified`,default:`Not provided`}),gu=e=>{let t=e==null?``:String(e).trim();return t===``?null:t};function _u(e,t,r=n.Bn()){let i=gu(e?.emptyText??e?.renderOptions?.emptyText);if(i)return i;let a=String(t??e?.renderType??e?.type??`default`).toLowerCase(),o=r?.emptyTexts??{};return gu(o[a])??gu(hu[a])??gu(o.default)??gu(hu.default)??gu(r?.emptyPlaceholder)??`—`}function vu(e,t=n.Bn()){let r=gu(e?.emptyText);if(r)return r;let i=t?.emptyTexts??{};if(gu(i.group))return gu(i.group);let a=gu(e?.label??e?.name);return a?`No ${a.toLowerCase()} added`:gu(hu.default)??`—`}var{Text:yu}=s.Typography,bu=e=>e==null||e===``,xu=/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}|$)/;function Su(e){return String(e).replace(/\w\S*/g,e=>e.length>1&&e===e.toUpperCase()?e:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())}function Cu(e){return!(typeof e!=`string`||!e.trim()||!/[a-z]/i.test(e)||e.includes(`@`)||/^https?:\/\//i.test(e)||/^[a-f0-9]{24}$/i.test(e)||/<[a-z][\s\S]*>/i.test(e))}function wu(e,t){if(bu(e))return``;let n=String(e);return t===!1?n:Cu(n)?Su(n):n}function Tu(e,t,n){return Object.values(e).filter(e=>!bu(e)&&typeof e!=`object`).map(e=>wu(e,t)).join(n)}function Eu(e,t){if(!e)return e;switch(t){case`upper`:return String(e).toUpperCase();case`lower`:return String(e).toLowerCase();case`title`:return Su(e);default:return e}}var Du=e=>e&&typeof e==`object`&&!Array.isArray(e)&&`value`in e&&`id`in e;function Ou(e,t,n){return bu(e)?``:Du(e)?wu(e.value??e.id,t):Array.isArray(e)?e.map(e=>Du(e)?wu(e.value??e.id,t):e&&typeof e==`object`?Tu(e,t,n):wu(e,t)).filter(Boolean).join(n):typeof e==`boolean`?e?`Yes`:`No`:typeof e==`object`?Tu(e,t,n):wu(e,t)}function ku(e,t,n){if(Array.isArray(e))return e.map(e=>Du(e)?wu(e.value??e.id,t):e&&typeof e==`object`?Tu(e,t,n):wu(e,t)).filter(e=>e!==``);if(typeof e==`string`)return e.split(`,`).map(e=>wu(e.trim(),t)).filter(Boolean);let r=Ou(e,t,n);return r?[r]:[]}function Au({name:e}){let t=String(e||``).split(`.`).pop().toLowerCase();return t===`pdf`?(0,l.jsx)(c.FilePdfOutlined,{className:`v1-file-chip__icon`}):t===`doc`||t===`docx`?(0,l.jsx)(c.FileWordOutlined,{className:`v1-file-chip__icon`}):[`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`].includes(t)?(0,l.jsx)(c.FileImageOutlined,{className:`v1-file-chip__icon`}):[`txt`,`csv`,`json`,`md`].includes(t)?(0,l.jsx)(c.FileTextOutlined,{className:`v1-file-chip__icon`}):(0,l.jsx)(c.FileOutlined,{className:`v1-file-chip__icon`})}Au.propTypes={name:f.default.string};function ju(e){return e?.renderType&&e.renderType!==`auto`?e.renderType:e?.documentPreview===!0?`document`:e?.formatter===`phone`||e?.type===`phone`?`phone`:e?.displayAs===`tag`?`tag`:e?.displayAs===`text`?`text`:`auto`}function Mu({value:e,mode:t,empty:r,style:i}){let[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(0),p=n.Rt(e);if(!p.length)return(0,l.jsx)(yu,{strong:!0,className:`v1-detail-value`,style:i,children:r});let m=p.filter(e=>e.url);return t===`text`?(0,l.jsx)(yu,{strong:!0,className:`v1-detail-value`,style:i,children:p.map(e=>e.name).join(`, `)}):t===`tag`?(0,l.jsx)(`span`,{className:`v1-detail-value v1-detail-tags`,children:p.map((e,t)=>(0,l.jsx)(s.Tag,{icon:(0,l.jsx)(c.PaperClipOutlined,{}),children:e.name},t))}):t===`link`||t===`download`?(0,l.jsx)(`span`,{className:`v1-detail-value v1-doc-list`,children:(0,l.jsx)(`span`,{className:`v1-file-list`,children:p.map((e,n)=>e.url?(0,l.jsxs)(`a`,{className:`v1-file-chip`,href:e.url,target:`_blank`,rel:`noopener noreferrer`,download:t===`download`?e.name||``:void 0,title:e.name,children:[(0,l.jsx)(Au,{name:e.name}),(0,l.jsx)(`span`,{className:`v1-file-chip__name`,children:e.name}),t===`download`?(0,l.jsx)(c.DownloadOutlined,{className:`v1-file-chip__action`}):(0,l.jsx)(c.LinkOutlined,{className:`v1-file-chip__action`})]},n):(0,l.jsxs)(`span`,{className:`v1-file-chip v1-file-chip--disabled`,title:`No file location`,children:[(0,l.jsx)(Au,{name:e.name}),(0,l.jsx)(`span`,{className:`v1-file-chip__name`,children:e.name})]},n))})}):(0,l.jsxs)(`div`,{className:`v1-detail-value v1-doc-list`,children:[(0,l.jsx)(`div`,{className:`v1-file-list`,children:p.map((e,t)=>e.url?(0,l.jsxs)(`button`,{type:`button`,className:`v1-file-chip`,onClick:()=>{f(m.indexOf(e)),u(!0)},title:`Preview ${e.name}`,children:[(0,l.jsx)(Au,{name:e.name}),(0,l.jsx)(`span`,{className:`v1-file-chip__name`,children:e.name}),(0,l.jsx)(c.EyeOutlined,{className:`v1-file-chip__action`})]},t):(0,l.jsxs)(`span`,{className:`v1-file-chip v1-file-chip--disabled`,title:`No preview available for this file`,children:[(0,l.jsx)(Au,{name:e.name}),(0,l.jsx)(`span`,{className:`v1-file-chip__name`,children:e.name})]},t))}),(0,l.jsx)(n.wn,{documents:m,open:a,onClose:()=>u(!1),initialIndex:d})]})}Mu.propTypes={value:f.default.any,mode:f.default.string,empty:f.default.string,style:f.default.object};function Nu(e,t={}){return Number.isNaN(du(e))?String(e??``):`${t.currencySymbol?ou(t.currencySymbol,``):``}${fu(e,{decimals:t.decimals})}`}function Pu({field:e,record:t}){let{value:r,type:i,prefix:a=``,suffix:o=``,color:d=``,capitalize:f}=e??{},p=e?.renderOptions??{},m=n.Bn(),h=m.separator||`, `,g=d?{color:d}:void 0,_=p.tagColor||d||void 0,v=p.textTransform&&p.textTransform!==`none`?p.textTransform:null,y=e=>`${a?`${a} `:``}${e}${o?` ${o}`:``}`,b=e=>v?Eu(e,v):e,x=e=>(0,l.jsx)(yu,{strong:!0,className:`v1-detail-value`,style:g,children:b(e)}),S=e=>(0,l.jsx)(yu,{strong:!0,className:`v1-detail-value v1-detail-token`,style:g,children:b(e)}),C=e=>(0,l.jsx)(`span`,{className:`v1-detail-value v1-detail-tags`,children:(0,l.jsx)(s.Tag,{color:_,children:b(e)})}),w=ju(e),T=_u(e,w,m);if(w!==`document`&&bu(r)&&!p.showEmpty)return x(T);switch(w){case`document`:return(0,l.jsx)(Mu,{value:r,mode:p.documentMode||`preview`,empty:T,style:g});case`text`:return x(y(Ou(r,f,h)));case`tag`:case`chip`:return C(y(Ou(r,f,h)));case`badge`:{let e=b(Ou(r,f,h));return(0,l.jsx)(`span`,{className:`v1-detail-value`,children:(0,l.jsx)(s.Badge,{color:_||`blue`,text:e})})}case`tags`:case`multitag`:case`skills`:{let e=ku(r,f,h);return e.length?(0,l.jsx)(`span`,{className:`v1-detail-value v1-detail-tags`,children:e.map((e,t)=>(0,l.jsx)(s.Tag,{color:_,children:b(e)},t))}):x(T)}case`link`:{let e=Ou(r,!1,h),t=/^https?:\/\//i.test(e)?e:n.Lt(e)||e;return(0,l.jsx)(`a`,{className:`v1-detail-value v1-doc-link`,href:t,target:`_blank`,rel:`noopener noreferrer`,children:b(y(e))})}case`email`:{let e=Ou(r,!1,h);return(0,l.jsxs)(`a`,{className:`v1-detail-value`,href:`mailto:${e}`,children:[(0,l.jsx)(c.MailOutlined,{}),` `,e]})}case`phone`:{let i=Ou(r,!1,h),a=n.Bt(e,i,t),o=a.replace(/[^0-9+]/g,``);return(0,l.jsxs)(`a`,{className:`v1-detail-value v1-detail-token v1-detail-call`,href:`tel:${o}`,"aria-label":`Call ${a}`,title:`Call ${a}`,children:[(0,l.jsx)(c.PhoneOutlined,{}),` `,b(y(a))]})}case`date`:case`datetime`:{if(w===`datetime`||p.withTime===!0)return S(y((p.dateFormat?n.An(r,p.dateFormat,m):n.jn(r,m))||Ou(r,f,h)));let e=p.dateFormat||m.dateFormat;return S(y(n.An(r,e,m)||Ou(r,f,h)))}case`currency`:return S(y(Nu(r,p)));case`budget`:{let e=Nu(r,p),t=p.unit?String(p.unit):``,n=t&&p.budgetUnitMap?p.budgetUnitMap[t]??t:t;return S(`${e}${n?`/${n}`:``}`)}case`html`:return(0,l.jsx)(`span`,{className:`v1-detail-value`,style:g,dangerouslySetInnerHTML:{__html:String(r??``)}})}if(bu(r))return x(T);let E=i===`date`,D=typeof r==`string`&&xu.test(r.trim());if(E||D){let e=(0,u.default)(r);if(e.isValid())return x(y(e.format(m.dateFormat)))}if(Du(r))return x(y(wu(r.value??r.id,f)));if(Array.isArray(r)){let e=ku(r,f,h);return e.length?(0,l.jsx)(`span`,{className:`v1-detail-value v1-detail-tags`,children:e.map((e,t)=>(0,l.jsx)(s.Tag,{color:_,children:e},t))}):x(T)}return x(typeof r==`boolean`?r?m.booleanTrueLabel:m.booleanFalseLabel:typeof r==`object`?Tu(r,f,h)||T:y(wu(r,f)))}Pu.propTypes={field:f.default.object,record:f.default.object};var{Text:Fu}=s.Typography,Iu=[(0,l.jsx)(c.UserOutlined,{}),(0,l.jsx)(c.EnvironmentOutlined,{}),(0,l.jsx)(c.SolutionOutlined,{}),(0,l.jsx)(c.InfoCircleOutlined,{}),(0,l.jsx)(c.FileTextOutlined,{})],Lu=e=>e===!0||e===1||e===`1`,Ru=[`jobDescription`,`description`,`rawDescription`,`jobDescriptionText`];function zu(e=[]){for(let t of e)for(let e of t.fields??[]){let t=Ru.includes(e.field),n=/description/i.test(e.label??``);if((t||n)&&typeof e.value==`string`&&e.value.trim())return{...e,key:e.field,value:e.value}}return null}function Bu(e=[]){let t=Vl(e);return[...e].filter(e=>!Lu(e.hideGroup)&&!Lu(e.hideGroupInDetail)).filter(e=>Hl(e,t)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,fields:[...e.fields??[]].filter(e=>String(e.field??``).trim()!==``&&(e.show===void 0||Lu(e.show))&&Hl(e,t)).map(e=>({...e,label:Wl(e,t)})).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function Vu(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function Hu(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}return``}function Uu(e){let t=String(Hu(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(Hu(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function Wu(e=[],t){let n={candidateIds:new Set,engagementIds:new Set([String(t??``)].filter(Boolean))},r=e?.recordMeta;[`_id`,`id`,`workforceEngagementId`,`engagementId`].forEach(e=>{let t=r?.[e];t!=null&&t!==``&&n.engagementIds.add(String(t))}),[`candidateId`,`candidate_id`,`applicantId`].forEach(e=>{let t=r?.[e];t!=null&&t!==``&&n.candidateIds.add(String(t))});for(let t of e??[])for(let e of t.fields??[])[`candidateId`,`candidate_id`,`applicantId`].includes(e?.field)&&e.value&&n.candidateIds.add(String(e.value?.id??e.value?.value??e.value)),[`workforceEngagementId`,`engagementId`].includes(e?.field)&&e.value&&n.engagementIds.add(String(e.value?.id??e.value?.value??e.value));return n}async function Gu(e){let t=Hu(e,`batchName`,`batch_name`,`batch.name`,`batch.title`);if(t)return String(t);let r=String(Hu(e,`batchId`,`batch_id`));if(!r)return``;for(let e of[`batches`,`batch`])try{let t=Hu(Vu(await n.bn(e,500,0)).find(e=>String(Hu(e,`_id`,`id`,`batchId`,`batch_id`))===r),`batchName`,`batch_name`,`name`,`title`);if(t)return String(t)}catch{}return r}async function Ku(e,t,r){let i=String(r??``).trim().toLowerCase();if(![`candidate`,`candidates`,`onboarding`].includes(i))return e;let{candidateIds:a,engagementIds:o}=Wu(e,t);if(!a.size&&!o.size)return e;let s=Vu(await n.bn(`batchCandidates`,1e3,0)).filter(Uu).find(e=>a.has(String(Hu(e,`candidateId`,`candidate_id`)))||o.has(String(Hu(e,`workforceEngagementId`,`engagementId`))));if(!s)return e;let c=await Gu(s);return c?[...e,{id:`candidate-batch-summary`,name:`candidateBatch`,label:`Batch`,order:9999,fields:[{field:`batchName`,label:`Batch Name`,type:`text`,value:c,show:!0,order:1}]}]:e}function qu({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(Fu,{strong:!0,className:`v1-section-label`,children:t})]})}function Ju({value:e}){let t=String(e??``);return/<[a-z][\s\S]*>/i.test(t)?(0,l.jsx)(`div`,{className:`v1-detail-value`,style:{whiteSpace:`normal`,lineHeight:1.7},dangerouslySetInnerHTML:{__html:t}}):(0,l.jsx)(`div`,{className:`v1-detail-value`,style:{whiteSpace:`pre-wrap`,lineHeight:1.7},children:t})}function Yu({moduleName:e,id:r,refreshKey:i=0,onDescriptionSaved:a}){let[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!!e),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!e||!r){Promise.resolve().then(()=>w([]));return}let t=!1;return n._n(e,r).then(e=>{t||w(Array.isArray(e)?e:e?.data??[])}).catch(()=>{t||w([])}),()=>{t=!0}},[e,r,i]);let[T,E]=(0,o.useState)(null),[D,O]=(0,o.useState)({}),[k,A]=(0,o.useState)({});(0,o.useEffect)(()=>{if(!e||!r){E(null);return}let n=!1;return t.o(t.x,`/module/list?module=${encodeURIComponent(e)}&id=${encodeURIComponent(r)}`).then(e=>{let t=e?.data?.data??e?.data??[];n||E(Array.isArray(t)?t[0]:null)}).catch(()=>{n||E(null)}),()=>{n=!0}},[e,r,i]),(0,o.useEffect)(()=>{let e=!1;return t.o(t.x,`/module/list?module=users`).then(t=>{let r=t?.data?.data??t?.data??[];e||O(n.lt(r))}).catch(()=>{}),()=>{e=!0}},[]),(0,o.useEffect)(()=>{if(!e)return;let t=!1;async function i(){try{m(!0),g(``);let[i]=await Promise.all([Gn({module:e,id:r,view:`detail`}),n.Vn()]),a=await Ku(Array.isArray(i)?i:[],r,e);t||f(a)}catch(n){console.error(`Failed to fetch ${e} detail fields:`,n),t||g(n?.message||`Failed to fetch detail fields`)}finally{t||m(!1)}}return i(),()=>{t=!0}},[e,r,i]);let j=(0,o.useMemo)(()=>Bu(d),[d]),M=(0,o.useMemo)(()=>{let e=new Set;return d.forEach(t=>{Lu(t.appendHistory)&&[t.historyField,...t.historyFields||[]].filter(Boolean).forEach(t=>e.add(t))}),e},[d]);(0,o.useEffect)(()=>{if(!T||!M.size)return;let e=new Set;if(M.forEach(t=>{let n=T[t];Array.isArray(n)&&n.forEach(t=>{let n=t?.updatedBy??t?.changedBy;if(n==null||n===``)return;let r=String(n);!D[r]&&!k[r]&&e.add(r)})}),!e.size)return;let t=!1;return Promise.all([...e].map(e=>n.ct(e).then(t=>[e,t]))).then(e=>{let n=Object.fromEntries(e.filter(([,e])=>e));!t&&Object.keys(n).length&&A(e=>({...e,...n}))}).catch(()=>{}),()=>{t=!0}},[T,M,D,k]);let N={proposedRate:`Proposed Rate`,candidateBudget:`Candidate Rate`},P=(e,t,n)=>{let r=`${e}.`,i=t=>[t?.historyField,...t?.historyFields||[]].includes(e);for(let r of t??[]){if(!i(r))continue;let t=r.historyLabels?.[e];if(t)return t;let a=r.historyLabelFrom?.[e];if(a){let t=(r.fields??[]).find(e=>e?.field===a);if(t)return Wl(t,n)||N[e]||e}}for(let i of t??[])for(let t of i?.fields??[])if(String(t?.field??``).startsWith(r))return Wl(t,n)||N[e]||e;return N[e]||e},F=(e,t)=>{let{amount:r,currency:i,unit:a}=iu(e,t,d),o=e?.timestamp?.$date??e?.timestamp??e?.updatedAt?.$date??e?.updatedAt??e?.changedAt?.$date??e?.changedAt,s=e?.updatedBy??e?.changedBy,c=r==null||r===``?null:Number(r);return{amount:c!=null&&!Number.isNaN(c)?`${ou(i)}${fu(c)}`:`—`,unit:cu(a),when:o&&(0,u.default)(o).isValid()?n.jn(o):``,by:s==null?``:D[String(s)]||k[String(s)]||``}},I=(0,o.useMemo)(()=>{if(!T)return[];let e=Vl(d),t=[];return M.forEach(n=>{let r=T[n];if(!Array.isArray(r)||r.length===0)return;let i=r.filter(e=>e&&(e.timestamp||e.updatedAt||e.changedAt));i.length!==0&&t.push({key:n,label:P(n,d,e),entries:[...i].reverse().map(e=>F(e,n))})}),t},[T,d,M,D,k]),L=(0,o.useMemo)(()=>{let e=new Set(I.map(e=>e.key));return e.size?j.map(t=>{if(!Lu(t.appendHistory))return t;let n=[t.historyField,...t.historyFields||[]].filter(t=>t&&e.has(t));return n.length?{...t,fields:t.fields.filter(e=>!n.some(t=>String(e.field??``).startsWith(`${t}.`)))}:t}).filter(e=>e.fields.length):j},[j,I]),R=(0,o.useMemo)(()=>{let e=new Set(I.map(e=>e.key)),t=d.find(t=>Lu(t.appendHistory)&&[t.historyField,...t.historyFields||[]].some(t=>t&&e.has(t)));return t?.label??t?.name??`Rate Details`},[d,I]),z=e===`job`,B=(0,o.useMemo)(()=>z?zu(d):null,[z,d]),V=()=>{v(!1),b(``)},ee=async()=>{if(!y.trim()){s.message.warning(`Please enter a job description`);return}S(!0);try{await sl(r,y.trim()),v(!1),b(``),m(!0);let t=await Gn({module:e,id:r,view:`detail`});f(Array.isArray(t)?t:[]),s.message.success(`Description updated and parsed successfully`),a?.()}catch{s.message.error(`Failed to update description`)}finally{S(!1),m(!1)}},te=e=>{let t=Number(e.detailCol);if(Number.isFinite(t)&&t>0)return Math.max(1,Math.min(3,Math.round(t/8)));let n=typeof e.value==`string`?e.value:``;return e.renderType===`document`||e.type===`text-editor`||n.length>120?3:/\s(?:·|-|–|\/)\s/.test(n)&&n.length>=16?2:1},ne=e=>e.renderType===`document`||e.type===`text-editor`||(typeof e.value==`string`?e.value:``).length>60,re=(0,o.useMemo)(()=>Vl(d),[d]),ie=(e,t=``,n=re)=>{let r=e.label??e.field,i=ne(e),a=typeof e.value==`string`?e.value:void 0;return(0,l.jsx)(`div`,{className:`v1-detail-cell${i?` v1-detail-cell--wrap`:``}`,style:{"--v1-cell-span":te(e)},children:(0,l.jsxs)(`div`,{className:`v1-detail-field`,title:!i&&a?`${r}: ${a}`:void 0,children:[(0,l.jsx)(Fu,{type:`secondary`,className:`v1-detail-label`,title:r,children:r}),(0,l.jsx)(Pu,{field:e,record:n})]})},`${e.field}${t}`)},H=/^\d{4}-\d{2}-\d{2}([T ]\d{2}:\d{2}|$)/,ae=(e,t,r=re)=>{if(t==null||typeof t==`object`)return``;let i=String(t).trim();if(!i)return``;if(e?.type===`date`||e?.renderType===`date`||H.test(i)){let t=(0,u.default)(i);if(t.isValid())return t.format(e?.renderOptions?.dateFormat||n.Bn().dateFormat)}return(e?.formatter===`phone`||e?.type===`phone`||e?.renderType===`phone`)&&n.Bt(e,i,r)||i},oe=(e,t)=>{if(e?.hidePartLabel||e?.renderOptions?.hidePartLabel)return``;let n=String(e?.label??``).trim();if(!n)return``;let r=String(t??``).toLowerCase().split(/[\s/]+/).filter(Boolean),i=n.split(/\s+/),a=0;for(;a<i.length;){let e=i[a].toLowerCase();if(!r.some(t=>t===e||t.startsWith(e)||e.startsWith(t)))break;a+=1}return i.slice(a).join(` `).trim()},se=(e,t,r,i,a=re)=>{let o=e.map(e=>({field:e,cell:r(e)})),s=o.filter(({cell:e})=>le(e)).map(({cell:e})=>({...e,renderType:`document`})).filter(e=>Fl(e.value)),c=new Set;o.forEach(({field:e})=>{if(e?.formatter!==`phone`&&e?.type!==`phone`&&e?.renderType!==`phone`)return;let t=[e?.renderOptions?.countryCodeField??e?.countryCodeField,...n.zt(e)].filter(Boolean);o.forEach(({field:n})=>{n!==e&&t.includes(n.field)&&c.add(n.field)})});let u=typeof t.combineLabel==`string`&&t.combineLabel.trim()?t.combineLabel:t.label??t.field,d=o.filter(({cell:e})=>!le(e)).filter(({field:e})=>!c.has(e.field)).filter(({cell:e})=>!zl(e,e.value)).map(({field:e,cell:t})=>({key:e.field,label:oe(e,u),text:ae(e,t.value,a)})).filter(e=>e.text!==``);if(!d.length&&!s.length&&zl(t,void 0))return null;let f=d.map(e=>`${e.label?`${e.label} `:``}${e.text}`).join(` · `),p=te({detailCol:t.detailCol,value:f}),m=s.length?Math.max(p,2):p;return(0,l.jsx)(`div`,{className:`v1-detail-cell v1-detail-cell--wrap`,style:{"--v1-cell-span":m},children:(0,l.jsxs)(`div`,{className:`v1-detail-field`,children:[(0,l.jsx)(Fu,{type:`secondary`,className:`v1-detail-label`,title:u,children:u}),(d.length>0||s.length===0)&&(0,l.jsx)(`div`,{className:`v1-detail-value v1-detail-parts`,children:d.length?d.map((e,t)=>(0,l.jsxs)(`span`,{className:`v1-detail-part`,children:[t>0&&(0,l.jsx)(`span`,{className:`v1-detail-part-sep`,"aria-hidden":`true`,children:`·`}),e.label&&(0,l.jsx)(`span`,{className:`v1-detail-part-label`,children:e.label}),(0,l.jsx)(`span`,{children:e.text})]},`${e.key}-part`)):`—`}),s.map(e=>(0,l.jsx)(Pu,{field:e},`${e.field}-doc`))]})},`${t.field}-merged${i}`)},ce=(e,t,n=``,r=re)=>{let i=new Set,a=[];return e.forEach(o=>{let s=o.combineKey?.trim?.();if(s){if(i.has(s))return;i.add(s);let o=e.filter(e=>e.combineKey?.trim?.()===s);if(o.length>1){let e=o.find(e=>e.combineLabel)??o[0],i=se(o,e,t,n,r);i&&a.push(i);return}}let c=t(o);zl(c,c.value)||a.push(ie(c,n,r))}),a},U=(0,o.useMemo)(()=>{let e={};for(let t of C){let n=t.fieldName||t.field||`file`;(e[n]??=[]).push({location:t.s3Key??t.location??t.uniqueName??``,name:t.fileName??t.name??``,fileUrl:t.fileUrl??t.url??``})}return e},[C]),le=e=>e.type===`file`||e.type===`document`||e.renderType===`document`,ue=e=>U[e.field]||e.fileKey&&U[e.fileKey]||null,de=e=>String(e?.name||e?.location||``).trim().toLowerCase(),fe=e=>{let[t]=n.Rt(e);return!t||!t.location&&!t.url?null:de(t)},pe=(e,t=[])=>{let n=new Set,r=[],i=e=>{if(e==null||e===``)return;let t=fe(e);t!==null&&(t&&n.has(t)||(t&&n.add(t),r.push(e)))};return t.forEach(i),(Array.isArray(e)?e:[e]).forEach(i),r},W=e=>n.Rt(e).map(de).filter(Boolean),me=e=>{let t=(e.validations??[]).find(e=>e?.type===`maxFiles`);return t?Math.max(1,Number(t.value??1)):Lu(e.multiple)?Math.max(1,Number(e.maxCount??5)):Math.max(1,Number(e.maxCount??1))},he=(e,t,n)=>{let r=me(e);if(t.length<=r)return t;let[i]=W(n);return(i?[...t].sort((e,t)=>Number(fe(t)===i)-Number(fe(e)===i)):t).slice(0,r)},ge=(e,t)=>{if(e.type===`file`||e.type===`document`)return{...e,renderType:`document`,value:t};let r=[e.field,e.payloadKey].filter(Boolean).map(e=>n.Zt(t,e)).find(e=>e!=null);return{...e,value:r}},_e=e=>{if(!le(e))return e;let t=he(e,pe(e.value,ue(e)??[]),e.value);return t.length?{...e,renderType:`document`,value:t}:e},G=(e,t,n)=>{let r=e.name??e.id??String(t),i=Array.isArray(e.rows)?e.rows:[],a=new Set(i.flatMap(e=>W(e))),o=[],c=new Set;return n.filter(le).forEach(e=>{(ue(e)??[]).forEach(e=>{let t=de(e);!t||a.has(t)||c.has(t)||(c.add(t),o.push(e))})}),(0,l.jsxs)(s.Card,{size:`small`,className:`v1-card v1-detail-card`,title:(0,l.jsx)(qu,{icon:Iu[t%Iu.length],title:e.label??e.name??`Details`}),children:[i.length===0&&o.length===0?(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:vu(e)}):i.map((t,r)=>(0,l.jsxs)(`div`,{className:`v1-detail-addrow-item`,children:[i.length>1&&(0,l.jsxs)(Fu,{strong:!0,className:`v1-detail-addrow-index`,children:[e.label??`Record`,` `,r+1]}),(0,l.jsx)(`div`,{className:`v1-detail-grid`,children:ce(n,e=>ge(e,t),`-${r}`,t)})]},r)),o.length>0&&(0,l.jsx)(`div`,{className:`v1-detail-addrow-item`,children:(0,l.jsx)(`div`,{className:`v1-detail-grid`,children:ie({field:`${r}-files`,label:`Uploaded Files`,renderType:`document`,detailCol:24,value:o})})})]},r)},K=(e,t)=>{let n=e.name??e.id??String(t),r=B?e.fields.filter(e=>e.field!==B.key):e.fields;return r.length?e.addRow?G(e,t,r):(0,l.jsx)(s.Card,{size:`small`,className:`v1-card v1-detail-card`,title:(0,l.jsx)(qu,{icon:Iu[t%Iu.length],title:e.label??e.name??`Details`}),children:(0,l.jsx)(`div`,{className:`v1-detail-grid`,children:ce(r,_e)})},n):null},ve=()=>(0,l.jsx)(s.Card,{size:`small`,className:`v1-card v1-detail-card`,title:(0,l.jsx)(qu,{icon:(0,l.jsx)(c.HistoryOutlined,{}),title:R}),children:I.map((e,t)=>(0,l.jsxs)(`div`,{className:`v1-rh-section${t>0?` v1-rh-section--gap`:``}`,children:[(0,l.jsx)(`div`,{className:`v1-rh-section-title`,children:e.label}),(0,l.jsx)(`div`,{className:`v1-rate-history`,children:e.entries.map((e,t)=>(0,l.jsxs)(`div`,{className:`v1-rh-item${t===0?` v1-rh-latest`:``}`,children:[(0,l.jsx)(`span`,{className:`v1-rh-amount`,children:e.amount}),e.unit&&(0,l.jsxs)(`span`,{className:`v1-rh-unit`,children:[`/ `,e.unit]}),e.by&&(0,l.jsxs)(`span`,{className:`v1-rh-chip`,children:[(0,l.jsx)(c.UserOutlined,{}),` `,e.by]}),e.when&&(0,l.jsxs)(`span`,{className:`v1-rh-chip`,children:[(0,l.jsx)(c.ClockCircleOutlined,{}),` `,e.when]}),t===0&&(0,l.jsx)(`span`,{className:`v1-rh-badge`,children:`Latest`})]},t))})]},e.key))},`rate-details-history`),ye=(0,o.useMemo)(()=>{let e=d.find(e=>Lu(e.appendHistory)&&e.historyAfterGroup);return String(e?.historyAfterGroup??``).trim().toLowerCase()},[d]),be=e=>ye?String(e.name??``).trim().toLowerCase()===ye:/current_employer|employer_details/i.test(e.name||``)||(e.fields||[]).some(e=>e.field===`employerId`);return(0,l.jsx)(s.Spin,{spinning:p,description:`Loading detail fields...`,children:(0,l.jsxs)(`div`,{className:`v1-detail-left`,children:[h&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:`Unable to load detail fields`,description:h,className:`v1-detail-alert`}),!p&&!h&&L.length===0&&I.length===0&&(0,l.jsx)(s.Empty,{description:`No detail fields are configured.`}),L.flatMap((e,t)=>{let n=[K(e,t)];return be(e)&&I.length>0&&n.push(ve()),n}),I.length>0&&!L.some(be)&&ve(),z&&B?.value&&(0,l.jsx)(s.Card,{size:`small`,className:`v1-card v1-detail-card`,title:(0,l.jsx)(qu,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Description`}),children:_?(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:12},children:[(0,l.jsx)(`div`,{style:{background:`#ffffff`,border:`1px solid #d6e4f0`,borderRadius:8,padding:`4px`,boxShadow:`0 2px 8px rgba(0,0,0,0.04)`},children:(0,l.jsx)(s.Input.TextArea,{rows:10,value:y,onChange:e=>b(e.target.value),placeholder:B.hidePlaceholder?void 0:B.placeholder,style:{fontSize:13,lineHeight:1.65,border:`none`,boxShadow:`none`,resize:`vertical`,padding:`12px 14px`}})}),(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,l.jsx)(n.ut,{variant:`primary`,size:`small`,loading:x,onClick:ee,children:`Save & Parse`}),(0,l.jsx)(n.ut,{size:`small`,onClick:V,children:`Cancel`})]})]}):(0,l.jsx)(Ju,{value:B.value})})]})})}var Xu=e.t({buildJobHeaderData:()=>id,default:()=>Zu,jobConfig:()=>Zu}),Zu={module:`job`,tabs:[{key:`details`,label:`Details`},{key:`candidates`,label:`Candidates`}],tabContent:{details:{render:({id:e,refreshKey:t,onDescriptionSaved:n})=>o.default.createElement(s.Row,{gutter:[16,16],align:`stretch`},o.default.createElement(s.Col,{key:`main`,xs:24,lg:16},o.default.createElement(Yu,{moduleName:`job`,id:e,refreshKey:t,onDescriptionSaved:n})),o.default.createElement(s.Col,{key:`side`,xs:24,lg:8},o.default.createElement(Bc,{moduleName:`job`,id:e})))}},header:{title:`jobTitle`,eyebrow:({val:e})=>{let t=[];return vl($u(e))&&t.push(xl($u(e))),vl(ed(e))&&t.push(`MSP Id ${xl(ed(e))}`),t.length?t.join(` - `):vl(e(`jobReferenceId`))?String(e(`jobReferenceId`)):``},clientName:({val:e})=>$u(e),titleIds:[],status:{field:`jobStatus`},ids:[{label:`Zinnext Job ID`,field:`jobReferenceId`},{label:`Client Rate`,compute:nd}],meta:[{icon:`location`,field:`jobLocation`},{icon:`experience`,compute:td},{icon:`employment`,fields:[`employmentType`,`jobRemoteStatus`],join:` · `}],stats:[{label:`Target submissions`,field:[`targetSubmission`,`targetSubmissions`]},{label:`In Pipeline`,compute:rd,always:!0}],timestamp:{label:`Created Date`,field:[`createdAt`,`jobCreatedDateTime`,`createdDate`]}}},Qu=(e,...t)=>t.map(t=>e(t)).find(vl),$u=e=>Qu(e,`clientName`,`client.name`,`client`,`clientId`,`accountName`),ed=e=>Qu(e,`mspReqId`,`mspreqId`,`msReqId`,`mspId`,`mspRequirementId`);function td({val:e}){let t=e(`experience.experienceRequiredFrom`);if(!vl(t))return``;let n=e(`experience.experienceRequiredTo`);return`${t}${vl(n)?` - ${n}`:``} years`}function nd({val:e}){let t=e(`jobPayDetails`)??{},n=t.clientBudgetStart??Qu(e,`clientBudgetStart`,`clientRateStart`);return vl(n)?wl({start:n,end:t.clientBudgetEnd??Qu(e,`clientBudgetEnd`,`clientRateEnd`),sym:t.clientBudgetCurrencySymbol??Sl(t.clientBudgetCurrency)??``,unit:t.clientBudgetUnit??Qu(e,`clientBudgetUnit`)}):``}function rd({val:e}){let t=e(`submissions`),n=Qu(e,`pipelineCount`,`PipelineCount`,`inPipeline`,`inPipelineCount`)??(Array.isArray(t)?t.length:void 0);return vl(n)?n:0}function id({val:e,has:t}){let n,r=[];t(e(`jobReferenceId`))&&(n=String(e(`jobReferenceId`)));let i=[e(`jobTitle`)].filter(t).map(xl).join(` `)||`-`,a=null;if(t(e(`jobSource`))&&(a={label:yl(e(`jobSource`)),color:`#10b981`,textColor:`#ffffff`}),t(e(`jobLocation`))&&r.push({icon:`location`,text:xl(e(`jobLocation`))}),t(e(`experience.experienceRequiredFrom`))){let n=e(`experience.experienceRequiredFrom`),i=e(`experience.experienceRequiredTo`);r.push({icon:`experience`,text:`${n}${t(i)?` - ${i}`:``} years`})}let o=[e(`employmentType`),xl(e(`jobRemoteStatus`))].filter(t).join(` - `);o&&r.push({icon:`employment`,text:o});let s=t(e(`clientId`))?bl(e(`clientId`)):null;return{eyebrow:n,title:i,status:a,meta:r,clientId:s}}var ad=e.t({default:()=>od,payrollConfig:()=>od}),od={module:`payroll`,tabs:[],header:{variant:`finance`,title:`candidateName`,eyebrow:`designation`,statusField:`payroll.status`,chips:pl}},sd=e.t({default:()=>cd,submissionConfig:()=>cd}),cd={module:`submission`,tabs:[],header:{title:[`firstName`,`lastName`],eyebrow:({val:e,has:t})=>[ld(e),e(`jobTitle`)].filter(t).map(xl).join(` - `),clientName:({val:e})=>ld(e),status:({val:e,has:t})=>{let n=e(`internalSubmissionStatus`)??{},r=n.internalSubmissionStatusText;return t(r)?{label:yl(r),color:{positive:`success`,negative:`error`,neutral:`default`}[n.internalSubmissionStatusType]??Tl(r)}:null},ids:[{label:`Submission ID`,field:[`submissionId`,`clientSubmissionId`]},{label:`MS Req ID`,field:[`mspReqId`,`mspreqId`]},{label:`Client Req ID`,field:[`jobClientRefrenceId`,`jobClientReferenceId`,`clientJobReferenceId`]},{label:`Job ID`,field:[`jobRefrenceId`,`jobReferenceId`]}],meta:[{icon:`location`,field:`jobLocation`},{icon:`experience`,field:[`relevantExperienceYears`,`workExperienceYears`],suffix:` yrs`},{icon:`employment`,field:`workAuthorisation`},{icon:`rate`,prefix:`Client rate: `,compute:ud},{icon:`rate`,prefix:`Candidate rate: `,compute:dd}],timestamp:{label:`Created Date`,field:[`submittedAt`,`createdAt`,`createdDate`]}}},ld=e=>e(`clientName`)??e(`client.name`);function ud({val:e}){let t=e(`clientBudget`)??e(`candidateBudget`)??{};return wl({start:t.clientBudgetStart??t.candidateBudgetStart,end:t.clientBudgetEnd??t.candidateBudgetEnd,sym:t.clientBudgetCurrencySymbol??t.candidateBudgetCurrencySymbol??Sl(t.clientBudgetCurrency??t.candidateBudgetCurrency),unit:t.clientBudgetUnit??t.candidateBudgetUnit??`Hour`})}function dd({val:e}){let t=e(`candidateRate`)??{},n=e(`proposedRate`)??{};return wl({start:t.candidateAcceptedRate,sym:t.candidateAcceptedCurrencySymbol??Sl(t.candidateAcceptedCurrency),unit:t.candidateAcceptedPayUnit??`Hour`})||wl({start:n.candidateProposedRate,sym:n.candidateProposedRateCurrencySymbol??Sl(n.candidateProposedRateCurrency),unit:n.candidateProposedRateUnit??`Hour`})}var fd=e.t({default:()=>pd,submissionJobConfig:()=>pd}),pd={module:`submissionJob`,tabs:[],buildData:id};function md(e,t){let n=Array.isArray(t)?t:[t];for(let t of n)if(vl(e(t)))return e(t)}function hd(e,t,n=` `){return t.map(t=>e(t)).filter(vl).map(xl).join(n)}function gd(e,t){let{val:n}=e,r;if(typeof t.compute==`function`)r=t.compute(e);else if(t.join)r=hd(n,t.fields??[],t.join);else{let e=md(n,t.field);r=vl(e)?xl(e):``}return vl(r)?`${t.prefix??``}${xl(r)}${t.suffix??``}`:``}function _d(e){return typeof e==`function`?{compute:e}:typeof e==`string`||Array.isArray(e)?{field:e}:e}function vd(e={},t){let{val:n}=t,r={};if(e.title!==void 0&&(r.title=hd(n,Array.isArray(e.title)?e.title:[e.title])||`-`),e.eyebrow!==void 0&&(r.eyebrow=gd(t,_d(e.eyebrow))||void 0),e.clientName!==void 0&&(r.clientName=gd(t,_d(e.clientName))||void 0),e.status!==void 0){if(typeof e.status==`function`)r.status=e.status(t)??null;else{let t=md(n,e.status.field);r.status=vl(t)?{label:yl(t),color:Tl(t)}:null}}let i=(e=[])=>e.map(e=>{let r=typeof e.compute==`function`?e.compute(t):xl(md(n,e.field)??``);return{label:e.label,value:r}}).filter(e=>vl(e.value));if(e.ids!==void 0&&(r.ids=i(e.ids)),e.titleIds!==void 0&&(r.titleIds=i(e.titleIds)),e.meta!==void 0&&(r.meta=e.meta.map(e=>({icon:e.icon,text:gd(t,e)})).filter(e=>vl(e.text))),e.stats!==void 0&&(r.stats=e.stats.map(e=>{let r=typeof e.compute==`function`?e.compute(t):md(n,e.field),i=vl(r)?xl(r):e.always?xl(e.fallback??0):void 0;return{label:e.label,value:i}}).filter(e=>e.value!==void 0)),e.timestamp!==void 0){let t=Cl(md(n,e.timestamp.field));r.timestamp=vl(t)?{label:e.timestamp.label,value:t}:null}return r}var yd=Object.assign({"./modules/billingConfig.js":ml,"./modules/candidateConfig.js":El,"./modules/employerConfig.js":Al,"./modules/jobConfig.js":Xu,"./modules/payrollConfig.js":ad,"./modules/submissionConfig.js":sd,"./modules/submissionJobConfig.js":fd}),bd={};Object.values(yd).forEach(e=>{let t=e.default??Object.values(e)[0];t?.module&&(bd[t.module]=t)});var xd={job:`job`,jobs:`job`,candidate:`candidate`,candidates:`candidate`,applicant:`candidate`,applicants:`candidate`,submission:`submission`,submissions:`submission`,vendor:`vendor`,vendors:`vendor`,onboarding:`onboarding`,employer:`employer`,employers:`employer`};function Sd(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.detailConfig)??{};return Object.keys(e).length?{...bd,...e}:bd}function Cd(e=``,t=bd){let n=String(e).trim();if(t[n])return n;let r=n.toLowerCase();if(t[r])return r;let i=xd[r];if(i&&t[i])return i;let a=r.endsWith(`s`)?r.slice(0,-1):`${r}s`;return t[a]?a:i??r}function wd(e=[]){let t=new Map;return e.forEach(e=>{(e.fields??[]).forEach(e=>{t.has(e.field)||t.set(e.field,e)})}),t}function Td(e,t){for(let n of t)if(n.includes(`+`)){let t=n.split(`+`).map(t=>e(t)).filter(vl).map(xl).join(` `);if(t)return t}else if(vl(e(n)))return e(n)}function Ed({val:e}){let t=Td(e,[`jobTitle`,`firstName+lastName`,`name`,`fullName`,`title`,`clientName`,`vendorCompanyName`,`companyName`])||`-`,n=Td(e,[`clientName`,`source`,`designation`,`jobReferenceId`,`applicantRefrenceId`]),r=vl(n)?xl(n):void 0,i=Td(e,[`status`,`jobStatus`,`submissionStatus`,`stage`]),a=vl(i)?{label:yl(i),color:Tl(i)}:null,o=[];[[`Reference ID`,[`jobReferenceId`,`applicantRefrenceId`,`submissionId`,`referenceId`,`refId`]],[`Client Req ID`,[`clientJobReferenceId`,`jobClientRefrenceId`,`clientReqId`]],[`MS Req ID`,[`mspreqId`,`mspReqId`]]].forEach(([t,n])=>{let r=Td(e,n);vl(r)&&o.push({label:t,value:xl(r)})});let s=[],c=Td(e,[`jobLocation`,`currentLocation`,`location`]);vl(c)&&s.push({icon:`location`,text:xl(c)});let l=Td(e,[`designation`]);vl(l)&&s.push({icon:`designation`,text:xl(l)});let u=Cl(Td(e,[`createdAt`,`submittedAt`,`createdDate`]));return{eyebrow:r,title:t,status:a,ids:o,meta:s,timestamp:vl(u)?{label:`Created Date`,value:u}:null}}function Dd(e){let t=Sd();return t[Cd(e,t)]??null}function Od(e,t=[],{aux:n}={}){if(!t.length)return null;let r=Sd(),i=r[Cd(e,r)],a=wd(t),o=e=>{let n=a.get(e);return n?_l(n.value)&&[`status`,`jobStatus`,`submissionStatus`].includes(e)&&!_l(n.defaultValue)?n.defaultValue:n.value:t.recordMeta?.[e]},s=e=>a.get(e)??null,c=typeof n==`function`?n:()=>()=>void 0,l=Ed({val:o,has:vl}),u=i?.buildData?i.buildData({val:o,has:vl,field:s,aux:c})??{}:i?.header?vd(i.header,{val:o,has:vl,field:s,aux:c}):{},d=(e,t)=>Array.isArray(e)?e:t??[],f=u.status===!1?null:u.status??l.status??null;return{eyebrow:u.eyebrow??l.eyebrow,title:u.title??l.title??`-`,clientName:u.clientName??null,clientId:u.clientId??null,status:f,titleIds:d(u.titleIds,l.titleIds),meta:d(u.meta,l.meta),ids:d(u.ids,l.ids),stats:u.stats??[],timestamp:u.timestamp??l.timestamp??null,tabs:i?.tabs??[]}}var kd=e=>e==null||e===``,Ad={positive:`success`,success:`success`,negative:`error`,error:`error`,warning:`warning`,info:`processing`,neutral:`default`,default:`default`};function jd(e){return e?(Array.isArray(e)?e:[e]).filter(e=>e?.field&&e?.label):[]}function Md(e,t){let r=typeof t==`function`?t:()=>void 0;for(let t of jd(e?.labelWhen)){let e=r(t.field);if(e!==void 0&&n.i(t,e))return t.label}return e?.label??``}function Nd(e){let t=e?.valueStyles;if(!Array.isArray(t)||!t.length)return null;let n=String(e?.value??e?.text??``).trim().toLowerCase();if(!n)return null;let r=t.find(e=>String(e?.value??``).trim().toLowerCase()===n||String(e?.label??``).trim().toLowerCase()===n);return r?{color:r.color||void 0,bg:r.bg??r.background??r.backgroundColor??void 0}:null}function Pd(e,t){let n=Md(e,t),r=e?.value,i=kd(e?.text)?[n,kd(r)?``:String(r)].filter(Boolean).join(n&&!kd(r)?`: `:``):String(e.text),a=e?.variant===`pill`?`pill`:`text`;if(a!==`pill`)return{icon:e?.icon,text:i,variant:a};let o=Nd(e);return{icon:e?.icon,text:i,label:n,value:kd(r)?``:String(r),variant:a,tagColor:o?.color||o?.bg?void 0:Ad[e?.tone]??`default`,tagStyle:o?.color||o?.bg?{color:o.color,backgroundColor:o.bg,borderColor:o.bg??o.color}:void 0}}function Fd(e){return!e||typeof e!=`object`?[]:Object.entries(e).map(([e,t])=>{if(!t||typeof t!=`object`)return null;let n=String(t.module??``).trim(),r=t.id==null?``:String(t.id).trim();return!e||!n||!r?null:{key:String(e),module:n,id:r}}).filter(Boolean)}function Id(e){return Fd(e).map(({key:e,module:t,id:n})=>`${e}:${t}:${n}`).sort().join(`|`)}function Ld(e){let t=new Map;for(let n of e??[])for(let e of n?.fields??[])e?.field!=null&&!t.has(e.field)&&t.set(e.field,e.value);return e=>t.get(e)}function Rd(e){let t=new Map;for(let[n,r]of Object.entries(e??{}))t.set(n,Ld(r));let n=()=>void 0;return e=>t.get(e)??n}var zd=e=>{let t=Number(e);return Number.isFinite(t)?t:0};function Bd(e,t=`$`){let n=du(e);return pu(Number.isNaN(n)?0:n,ou(t),{decimals:2})}function Vd(e){return`${zd(e).toFixed(2)} hrs`}function Hd(e,t=`$`,n=`hr`){let r=uu(n,``),i=Bd(e,t);return r?`${i}/${r}`:i}function Ud(e){return`${parseFloat(zd(e).toFixed(2))}%`}function Wd(e){let t=String(e??``).trim().split(/\s+/).filter(Boolean);return t.length?t.slice(0,2).map(e=>e[0].toUpperCase()).join(``):`·`}var Gd={TIMESHEET_APPROVED:{label:`Timesheet Approved`,icon:`check`,tone:`success`},BILLING_READY:{label:`Ready for Billing`,icon:`file`,tone:`info`},BILLING_INVOICED:{label:`Invoice Generated`,icon:`file`,tone:`info`},BILLING_PAID:{label:`Client Payment Received`,icon:`dollar`,tone:`success`},PAYROLL_PROCESSING:{label:`Payroll Processing Started`,icon:`sync`,tone:`warning`},PAYROLL_PAID:{label:`Payroll Disbursed`,icon:`dollar`,tone:`success`},PAYSLIP_GENERATED:{label:`Payslip Generated`,icon:`file`,tone:`info`}};function Kd(e){return Gd[e]||{label:String(e??``).toLowerCase().split(`_`).filter(Boolean).map(e=>e[0].toUpperCase()+e.slice(1)).join(` `)||`Activity`,icon:`file`,tone:`neutral`}}function qd(e){return(Array.isArray(e)?e:[]).find(e=>e?.event===`TIMESHEET_APPROVED`)?.at??null}var Jd=e=>({enabled:!0,variant:e,disabledReason:null}),Yd=e=>({enabled:!1,variant:`default`,disabledReason:e}),Xd=[`PaymentNotReceived`,`Invoiced`,`Paid`],Zd=[`Ready`,`Processing`,`Paid`];function Qd(e){switch(e){case`PaymentNotReceived`:return{generateInvoice:Jd(`primary`),recordPayment:Yd(`Generate the invoice first`),markPaid:Yd(`Generate the invoice first`)};case`Invoiced`:return{generateInvoice:Yd(`Invoice already generated`),recordPayment:Jd(`primary`),markPaid:Jd(`default`)};case`Partially Received`:return{generateInvoice:Yd(`Invoice already generated`),recordPayment:Jd(`primary`),markPaid:Jd(`default`)};case`Received`:case`Paid`:return{generateInvoice:Yd(`Payment already received`),recordPayment:Yd(`Payment already received`),markPaid:Yd(`Payment already received`)};default:return{generateInvoice:Yd(`Unavailable in the current status`),recordPayment:Yd(`Unavailable in the current status`),markPaid:Yd(`Unavailable in the current status`)}}}function $d(e){switch(e){case`Ready`:return{process:Jd(`primary`),generatePayslip:Yd(`Mark the payroll paid first`),markPaid:Yd(`Process the payroll first`)};case`Processing`:return{process:Yd(`Payroll is already processing`),generatePayslip:Yd(`Mark the payroll paid first`),markPaid:Jd(`primary`)};case`Paid`:return{process:Yd(`Payroll already paid`),generatePayslip:Jd(`primary`),markPaid:Yd(`Payroll already paid`)};default:return{process:Yd(`Unavailable in the current status`),generatePayslip:Yd(`Unavailable in the current status`),markPaid:Yd(`Unavailable in the current status`)}}}function ef(e,t){if(e===`billing`){let e=Math.max(Xd.indexOf(t),0);return[{key:`approved`,label:`Timesheet Approved`,state:`done`},{key:`invoiced`,label:`Invoice Raised`,state:e>=1?`done`:`current`},{key:`paid`,label:`Payment Received`,state:e>=2?`done`:e===1?`current`:`pending`}]}let n=Math.max(Zd.indexOf(t),0);return[{key:`approved`,label:`Timesheet Approved`,state:`done`},{key:`processing`,label:`Processing`,state:n>=1?`done`:`current`},{key:`paid`,label:`Paid`,state:n>=2?`done`:n===1?`current`:`pending`}]}var tf=e=>zd(e?.leave?.CL)+zd(e?.leave?.SL),nf=e=>zd(e?.workingHours?.ST),rf=e=>zd(e?.workingHours?.OT);function af(e){let t=Array.isArray(e)?e:[],n={loggedDays:0,approvedDays:0,rejectedDays:0,pendingDays:0,leaveDays:0,holidayDays:0,weekOffDays:0,stHours:0,otHours:0,leaveHours:0,totalHours:0,avgHoursPerLoggedDay:0};return t.forEach(e=>{let t=nf(e),r=rf(e),i=tf(e);(e?.isLogged||t>0||r>0)&&(n.loggedDays+=1,e?.status===`approved`?n.approvedDays+=1:e?.status===`rejected`?n.rejectedDays+=1:n.pendingDays+=1),i>0&&(n.leaveDays+=1),e?.isHoliday&&(n.holidayDays+=1),e?.isWeekOff&&(n.weekOffDays+=1),n.stHours+=t,n.otHours+=r,n.leaveHours+=i,n.totalHours+=t+r}),n.avgHoursPerLoggedDay=n.loggedDays?n.totalHours/n.loggedDays:0,n}function of(e,t){return(Array.isArray(e)?e:[]).filter(e=>!!e?.isLogged||nf(e)>0||rf(e)>0||tf(e)>0||e?.isHoliday).map(e=>{let n=nf(e),r=rf(e),i=n+r;return{key:e.date,date:e.date,day:e.day||``,st:n,ot:r,leave:tf(e),isHoliday:!!e?.isHoliday,total:i,amount:i*zd(t),status:e?.status||`logged`,reviewer:e?.reviewedByName||``,remarks:e?.rejectionReason||e?.notes||``}})}function sf(e){let[t,n,r]=String(e??``).split(`-`).map(Number);return!t||!n||!r?null:new Date(t,n-1,r)}var cf=e=>e.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`});function lf(e,t){let n=Array.isArray(e)?e:[],r=new Map;return n.forEach(e=>{let n=sf(e?.date);if(!n)return;let i=nf(e),a=rf(e),o=tf(e);if(!e?.isLogged&&i<=0&&a<=0&&o<=0)return;let s=(n.getDay()+6)%7,c=new Date(n.getFullYear(),n.getMonth(),n.getDate()-s),l=c.getTime();if(!r.has(l)){let e=new Date(c.getFullYear(),c.getMonth(),c.getDate()+6);r.set(l,{weekStart:c,weekEnd:e,label:`${cf(c)} – ${cf(e)}`,st:0,ot:0,leaveHours:0,total:0,amount:0,days:0})}let u=r.get(l);u.st+=i,u.ot+=a,u.leaveHours+=o,u.total+=i+a,u.amount+=(i+a)*zd(t),(e?.isLogged||i>0||a>0)&&(u.days+=1)}),[...r.values()].sort((e,t)=>e.weekStart-t.weekStart)}function uf(e,{high:t=25,low:n=10}={}){let r=zd(e);return r>=t?`high`:r<n?`low`:`mid`}function df(e){let t=e==null?``:String(e);return/[",\n\r]/.test(t)?`"${t.replace(/"/g,`""`)}"`:t}function ff(e,t){return[t.map(e=>df(e.label)).join(`,`),...(e??[]).map(e=>t.map(t=>df(t.format?t.format(e[t.key],e):e[t.key])).join(`,`))].join(`\r
|
|
3
3
|
`)}function pf(e){let t=new Map;return(Array.isArray(e)?e:[]).forEach(e=>{let n=e?.field??e?.key??e?.value;n&&t.set(n,e)}),t}function mf(e,t,n){return(e instanceof Map?e:pf(e)).get(t)?.label||n}function hf(e,t,n){let r=(e instanceof Map?e:pf(e)).get(t)?.valueStyles;if(!Array.isArray(r)||!r.length||n==null)return null;let i=String(n).toLowerCase(),a=r.find(e=>String(e.value??``).toLowerCase()===i||String(e.label??``).toLowerCase()===i);return a?{color:a.color,bg:a.bg??a.background??a.backgroundColor,label:a.label}:null}function gf(e,t){let n=new Blob([``,t],{type:`text/csv;charset=utf-8;`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}var _f={Draft:{label:`Draft`,tone:`neutral`},Ready:{label:`Ready`,tone:`gold`},Invoiced:{label:`Invoiced`,tone:`info`},Processing:{label:`Processing`,tone:`info`,pulse:!0},Paid:{label:`Paid`,tone:`success`},Overdue:{label:`Overdue`,tone:`danger`},PaymentNotReceived:{label:`Not Received`,tone:`warning`,full:`Payment Not Received`},"Partially Received":{label:`Partially Received`,tone:`gold`},Received:{label:`Received`,tone:`success`},"Ready to Pay":{label:`Ready to Pay`,tone:`info`,pulse:!0},PartiallyPaid:{label:`Partially Paid`,tone:`gold`},approved:{label:`Approved`,tone:`success`},rejected:{label:`Rejected`,tone:`danger`},logged:{label:`Pending`,tone:`gold`}};function vf({status:e=`Ready`,size:t,styleOverride:n}){let r=_f[e]??{label:String(e),tone:`neutral`},i=n?.label??r.label,a=n?{color:n.color,background:n.bg,borderColor:n.color}:void 0,o=(0,l.jsxs)(`span`,{className:`fin-pill${n?``:` fin-pill--${r.tone}`}${t===`sm`?` fin-pill--sm`:``}`,style:a,children:[(0,l.jsx)(`span`,{className:`fin-pill__dot${r.pulse?` fin-pill__dot--pulse`:``}`}),i]});return r.full?(0,l.jsx)(s.Tooltip,{title:r.full,children:o}):o}function yf({items:e=[],loading:t=!1,compact:n=!1}){let r=`finance-kpi-row${n?` finance-kpi-row--compact`:``}`;if(t){let t=e.length||4;return(0,l.jsx)(`div`,{className:r,children:Array.from({length:t},(e,t)=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--skeleton`,children:[(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--label`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--value`})]},t))})}return(0,l.jsx)(`div`,{className:r,children:e.map(e=>(0,l.jsxs)(`div`,{className:`finance-kpi fin-kpi--${e.tone??`neutral`}`,children:[e.icon?(0,l.jsx)(`span`,{className:`fin-kpi__icon`,children:e.icon}):null,(0,l.jsxs)(`span`,{className:`fin-kpi__body`,children:[(0,l.jsx)(`span`,{className:`finance-kpi__label`,children:e.label}),(0,l.jsx)(`strong`,{className:`finance-kpi__value`,children:e.value}),e.sub??e.hint?(0,l.jsx)(`span`,{className:`finance-kpi__hint`,children:e.sub??e.hint}):null]})]},e.key??e.label))})}function bf({days:e=[]}){return(0,l.jsx)(`div`,{className:`finance-hours-grid`,children:e.map(e=>(0,l.jsxs)(`div`,{className:`finance-hours-grid__day`,children:[(0,l.jsx)(`span`,{children:e.date}),(0,l.jsx)(`strong`,{children:Number(e?.workingHours?.ST??0)+Number(e?.workingHours?.OT??0)})]},e.date))})}function xf({icon:e,title:t,description:n,action:r,compact:i=!1}){return(0,l.jsxs)(`div`,{className:`fin-empty${i?` fin-empty--compact`:``}`,children:[(0,l.jsx)(`span`,{className:`fin-empty__icon`,children:e??(0,l.jsx)(c.InboxOutlined,{})}),(0,l.jsx)(`strong`,{className:`fin-empty__title`,children:t}),n?(0,l.jsx)(`span`,{className:`fin-empty__desc`,children:n}):null,r?(0,l.jsx)(`span`,{className:`fin-empty__action`,children:r}):null]})}function Sf({title:e,extra:t,children:n,empty:r,className:i=``,span:a}){return(0,l.jsxs)(`section`,{className:`fin-section${a?` fin-section--span`:``}${i?` ${i}`:``}`,children:[e?(0,l.jsxs)(`header`,{className:`fin-section__head`,children:[(0,l.jsx)(`h4`,{className:`fin-section__title`,children:e}),t?(0,l.jsx)(`span`,{className:`fin-section__extra`,children:t}):null]}):null,(0,l.jsx)(`div`,{className:`fin-section__body`,children:r?(0,l.jsx)(xf,{compact:!0,...r}):n})]})}function Cf({label:e,value:t,hint:n,strong:r,accent:i,negative:a}){let o=[`fin-line`,r?`fin-line--strong`:``,i?`fin-line--accent`:``,a?`fin-line--negative`:``].filter(Boolean).join(` `);return(0,l.jsxs)(`div`,{className:o,children:[(0,l.jsxs)(`span`,{className:`fin-line__label`,children:[e,n!=null&&n!==``?(0,l.jsx)(`span`,{className:`fin-line__hint`,children:n}):null]}),(0,l.jsx)(`span`,{className:`fin-line__value`,children:t})]})}function wf(){return(0,l.jsx)(`div`,{className:`fin-divider`})}function Tf({terms:e=[]}){return(0,l.jsx)(`div`,{className:`fin-equation`,children:e.map((e,t)=>e.op?(0,l.jsx)(`span`,{className:`fin-eq__op`,children:e.op},`op-${t}`):(0,l.jsxs)(`span`,{className:`fin-eq__term${e.tone?` fin-eq__term--${e.tone}`:``}`,children:[(0,l.jsx)(`span`,{className:`fin-eq__num`,children:e.value}),(0,l.jsx)(`span`,{className:`fin-eq__lbl`,children:e.label})]},e.label??t))})}function Ef({steps:e=[]}){return(0,l.jsx)(`div`,{className:`fin-steps`,children:e.map((e,t)=>(0,l.jsxs)(`div`,{className:`fin-step fin-step--${e.state}`,children:[t>0?(0,l.jsx)(`span`,{className:`fin-step__line`}):null,(0,l.jsx)(`span`,{className:`fin-step__dot`,children:e.state===`done`?(0,l.jsx)(c.CheckOutlined,{}):null}),(0,l.jsx)(`span`,{className:`fin-step__label`,children:e.label})]},e.key??e.label))})}var Df={check:(0,l.jsx)(c.CheckCircleFilled,{}),dollar:(0,l.jsx)(c.DollarCircleFilled,{}),sync:(0,l.jsx)(c.SyncOutlined,{}),file:(0,l.jsx)(c.FileTextFilled,{})};function Of(e){if(!e)return``;let t=Date.now()-new Date(e).getTime();if(!Number.isFinite(t)||t<0)return``;let n=Math.floor(t/6e4);if(n<1)return`just now`;if(n<60)return`${n}m ago`;let r=Math.floor(n/60);if(r<24)return`${r}h ago`;let i=Math.floor(r/24);if(i<30)return`${i}d ago`;let a=Math.floor(i/30);return a<12?`${a}mo ago`:`${Math.floor(a/12)}y ago`}function kf({events:e=[],emptyState:t}){let r=(Array.isArray(e)?[...e]:[]).reverse();return r.length?(0,l.jsx)(`div`,{className:`fin-tl`,children:r.map((e,t)=>{let i=Kd(e?.event);return(0,l.jsxs)(`div`,{className:`fin-tl__item`,children:[(0,l.jsxs)(`div`,{className:`fin-tl__rail`,children:[(0,l.jsx)(`span`,{className:`fin-tl__icon fin-tl__icon--${i.tone}`,children:Df[i.icon]??Df.file}),t<r.length-1?(0,l.jsx)(`span`,{className:`fin-tl__line`}):null]}),(0,l.jsxs)(`div`,{className:`fin-tl__body`,children:[(0,l.jsxs)(`div`,{className:`fin-tl__head`,children:[(0,l.jsx)(`strong`,{className:`fin-tl__label`,children:i.label}),e?.by?(0,l.jsx)(`span`,{className:`fin-tl__actor`,children:e.by}):null]}),(0,l.jsxs)(`div`,{className:`fin-tl__meta`,children:[e?.at?(0,l.jsx)(`span`,{children:n.jn(e.at)}):null,e?.at?(0,l.jsx)(`span`,{className:`fin-tl__rel`,children:Of(e.at)}):null]})]})]},`${e?.event}-${e?.at}-${t}`)})}):(0,l.jsx)(xf,{icon:(0,l.jsx)(c.ClockCircleOutlined,{}),title:`No activity yet`,description:`Workflow events will appear here as this record moves through its lifecycle.`,...t??{}})}var Af=[`blue`,`indigo`,`purple`,`green`];function jf(e){let t=String(e??``),n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)|0;return Af[Math.abs(n)%Af.length]}function Mf({name:e,size:t=`md`}){return(0,l.jsx)(`span`,{className:`fin-avatar fin-avatar--${jf(e)} fin-avatar--${t}`,children:Wd(e)})}function Nf({name:e,secondary:t,link:n=!1}){return(0,l.jsxs)(`div`,{className:`fin-cell-employee`,children:[(0,l.jsx)(Mf,{name:e}),(0,l.jsxs)(`span`,{className:`fin-cell-employee__text`,children:[(0,l.jsx)(`strong`,{className:`fin-cell__primary${n?` fin-cell__primary--link`:``}`,children:e||`—`}),t?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})]})}function Pf({primary:e,secondary:t,link:n=!1}){return(0,l.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,l.jsx)(`span`,{className:`fin-cell__primary${n?` fin-cell__primary--link`:``}`,children:e||`—`}),t?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}function Ff({value:e,sub:t,strong:n=!1}){return(0,l.jsxs)(`div`,{className:`fin-cell-money`,children:[(0,l.jsx)(`span`,{className:`fin-cell-money__value${n?` fin-cell-money__value--strong`:``}`,children:typeof e==`number`?Bd(e):e??`—`}),t?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}function If({children:e,tone:t=`neutral`,title:n}){return(0,l.jsx)(`span`,{className:`fin-badge fin-badge--${t}`,title:n,children:e})}function Lf({margin:e,marginPercent:t}){let n=uf(t);return(0,l.jsxs)(`div`,{className:`fin-cell-margin`,children:[(0,l.jsxs)(If,{tone:n===`high`?`success`:n===`low`?`danger`:`neutral`,children:[Number(t??0).toFixed(1),`%`]}),e==null?null:(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:Bd(e)})]})}function Rf(){return(0,l.jsx)(c.RightOutlined,{className:`fin-table__chevron`})}function zf({rows:e=8}){return(0,l.jsx)(`div`,{className:`fin-table-skeleton`,children:Array.from({length:e},(e,t)=>(0,l.jsxs)(`div`,{className:`fin-table-skeleton__row`,children:[(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--avatar`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--lg`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--md`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--md`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--sm`}),(0,l.jsx)(`span`,{className:`fin-skeleton fin-skeleton--pill`})]},t))})}function Bf({columns:e,rows:t=[],rowKey:n=`timesheetId`,loading:r=!1,onRowClick:i,page:a,limit:o,total:c=0,onPageChange:u,onLimitChange:d,emptyState:f,scrollX:p=1100}){return r&&!t.length?(0,l.jsx)(zf,{}):!r&&!t.length?(0,l.jsx)(`div`,{className:`fin-table-card`,children:(0,l.jsx)(xf,{title:`No records found`,description:`Try widening the month filter or clearing quick filters — finance records live in their timesheet's month.`,...f??{}})}):(0,l.jsxs)(`div`,{className:`fin-table-card`,children:[(0,l.jsx)(s.Table,{className:`fin-table`,size:`small`,columns:e,dataSource:t,rowKey:n,loading:r,pagination:!1,sticky:!0,scroll:{x:p},onRow:e=>({onClick:t=>{t.target.closest(`button, a, input, .fin-copy`)||i?.(e)}}),rowClassName:()=>i?`fin-table__row fin-table__row--clickable`:`fin-table__row`}),c>0&&a!=null?(0,l.jsx)(`div`,{className:`fin-table__pagination`,children:(0,l.jsx)(ze,{current:a,pageSize:o,total:c,onChange:e=>u?.(e),onPageSizeChange:e=>d?.(e)})}):null]})}var Vf={location:(0,l.jsx)(c.EnvironmentOutlined,{}),designation:(0,l.jsx)(c.SolutionOutlined,{}),experience:(0,l.jsx)(c.ClockCircleOutlined,{}),employment:(0,l.jsx)(c.LaptopOutlined,{}),rate:(0,l.jsx)(c.DollarOutlined,{}),source:(0,l.jsx)(c.AimOutlined,{}),resume:(0,l.jsx)(c.FileTextOutlined,{}),edit:(0,l.jsx)(c.EditOutlined,{}),approve:(0,l.jsx)(c.CheckCircleOutlined,{}),reject:(0,l.jsx)(c.CloseCircleOutlined,{}),export:(0,l.jsx)(c.ExportOutlined,{}),openJd:(0,l.jsx)(c.ExportOutlined,{}),link:(0,l.jsx)(c.LinkOutlined,{}),shareAlt:(0,l.jsx)(c.ShareAltOutlined,{}),idcard:(0,l.jsx)(c.IdcardOutlined,{}),bank:(0,l.jsx)(c.BankOutlined,{}),team:(0,l.jsx)(c.TeamOutlined,{}),project:(0,l.jsx)(c.ProjectOutlined,{}),cycle:(0,l.jsx)(c.SyncOutlined,{}),period:(0,l.jsx)(c.CalendarOutlined,{}),PlayCircleOutlined:(0,l.jsx)(c.PlayCircleOutlined,{}),DollarOutlined:(0,l.jsx)(c.DollarOutlined,{}),FileTextOutlined:(0,l.jsx)(c.FileTextOutlined,{}),FileDoneOutlined:(0,l.jsx)(c.FileDoneOutlined,{})};function Hf({chip:e}){let t=e.icon?(0,l.jsx)(`span`,{className:`fin-meta-chip__icon`,children:e.icon}):null;return(0,l.jsxs)(`span`,{className:`fin-meta-chip`,children:[e.tooltip&&t?(0,l.jsx)(s.Tooltip,{title:e.tooltip,children:t}):t,e.label?(0,l.jsx)(`span`,{className:`fin-meta-chip__label`,children:e.label}):null,(0,l.jsx)(`span`,{className:`fin-meta-chip__value`,children:e.value??`—`}),e.badge?(0,l.jsx)(`span`,{className:`fin-badge fin-badge--brand`,children:e.badge}):null]})}function Uf(e){return Array.isArray(e)?e.map(Uf):e&&typeof e==`object`&&`id`in e&&`value`in e?e.id??e.value:e}function Wf(e,t){let n={_id:t,id:t},r=e?.recordMeta;if(r&&typeof r==`object`)for(let[e,t]of Object.entries(r))e in n||(n[e]=t);for(let t of e??[])for(let e of t.fields??[])e?.field!=null&&e.value!==void 0&&(n[e.field]=Uf(e.value));return n}function Gf(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function Kf(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(Gf(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(Gf(t?.[n])))}function qf(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function Jf(e){return String(e??``).trim().toLowerCase()}function Yf(e,t,n,r){return wr(e.key,t,n,r)}function Xf(e,t,n,r){return Tr(e.key,t,n,r)}function Zf(e){let t=String(e.key??``);return{...e,key:t,label:e.label||t,route:e.route||e.routeTemplate||(e.actionType===`modal`&&(e.popupKey||t)?`/popup/${e.popupKey||t}`:``)}}function Qf(e,t){let r=(e??[]).flatMap(e=>e.fields??[]),i=!t||/resume|cv/i.test(t),a=r.find(e=>e.field===t)??(i?r.find(e=>/resume|cv/i.test(`${e.field??``} ${e.label??``}`)):void 0);if(!a)return[];let o=String(a.type??``).trim().toLowerCase();if(o!==`file`&&o!==`document`&&o!==`upload`&&typeof a.value==`string`&&a.value.trim()){let e=o===`text-editor`||/<[^>]+>/.test(a.value);return[{name:a.label||t||`Document`,type:e?`html`:`text`,content:a.value}]}let s=n.Rt(a.value).filter(e=>e.url);if(s.length)return s;if(typeof a.value==`string`&&a.value.trim()){let e=o===`text-editor`||/<[^>]+>/.test(a.value);return[{name:a.label||t||`Document`,type:e?`html`:`text`,content:a.value}]}return[]}function $f({moduleName:e,id:r,customConfigName:i,auxRecords:a,authToken:u,onAction:f,onTabChange:p,onHeaderData:m,hideActions:h=!1,defaultTab:g,refreshKey:_=0}){let v=(0,d.useNavigate)(),y=(0,d.useLocation)(),[b,x]=(0,o.useState)([]),[S,C]=(0,o.useState)([]),[w,T]=(0,o.useState)([]),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)([]),[A,j]=(0,o.useState)(0),M=i||e;(0,o.useEffect)(()=>(u&&t.g(u),()=>{u&&t.r()}),[u]),(0,o.useEffect)(()=>{if(!e)return;let t=!1;async function i(){try{let[i,a]=await Promise.all([Gn({module:e,id:r,view:`detail`}),n.fn(M).catch(()=>({actions:[],actionRules:[]})),n.Vn()]);t||(x(Array.isArray(i)?i:[]),C(a.actions??[]),T(a.actionRules??[]))}catch(n){console.error(`Failed to fetch ${e} header fields:`,n),t||(x([]),C([]),T([]))}}return i(),()=>{t=!0}},[e,M,r,_,A]);let[N,P]=(0,o.useState)({signature:``,groups:{}}),F=Id(a);(0,o.useEffect)(()=>{let e=Fd(a);if(!e.length)return;let t=!1;return Promise.all(e.map(async e=>{let t=await Gn({module:e.module,id:e.id,view:`detail`}).catch(()=>[]);return[e.key,Array.isArray(t)?t:[]]})).then(e=>{t||P({signature:F,groups:Object.fromEntries(e)})}).catch(()=>{t||P({signature:F,groups:{}})}),()=>{t=!0}},[F,_]);let I=(0,o.useMemo)(()=>Rd(N.signature===F?N.groups:{}),[N,F]),L=(0,o.useMemo)(()=>Od(M,b,{aux:I}),[M,b,I]);(0,o.useEffect)(()=>{L&&m&&m(L)},[L]);let{eyebrow:R,title:z=`-`,status:B,titleIds:V=[],meta:ee=[],ids:te=[],tabs:ne=[],stats:re=[],timestamp:ie=null}=L??{},{canAdd:H,canEdit:ae,canDelete:oe}=lr(e),se=(0,o.useMemo)(()=>Wf(b,r),[b,r]),ce=fl(ne,{id:r,moduleName:e,record:se}),U=Dd(M)?.resolveScope,[le,ue]=(0,o.useState)(void 0);(0,o.useEffect)(()=>{if(typeof U!=`function`||!r)return;let t=!1,n=Number(localStorage.getItem(`userId`))||0;return Promise.resolve().then(()=>U({id:r,moduleName:e,record:se,currentUserId:n})).then(e=>{t||ue(e??null)}).catch(()=>{t||ue(null)}),()=>{t=!0}},[U,r,e,b]);let de=typeof U!=`function`||le!==void 0,fe=(0,o.useMemo)(()=>de?S.filter(e=>e.showInDetail??e.showInList).map(Zf).filter(e=>!Yf(e,se,w,le??void 0)):[],[w,S,se,le,de]);function pe(e){let t=dr(e);if(t===`add`&&!H||t===`edit`&&!ae||t===`delete`&&!oe||!n.F(e.permission,M))return!1;if(e.permissionKey){let t=qf(se,`actionPermission.${e.permissionKey}`);if(t===!1||t===0||t===`0`)return!1}return!0}let[W,me]=(0,o.useState)({sourceDefaultTab:g,selectedTab:g}),he=W.sourceDefaultTab===g?W.selectedTab:g,ge=ce.some(e=>e.key===he)?he:ce[0]?.key,_e=new Set(ce.map(e=>Jf(e.key))),G=e=>{let t=e.allowedTabs??[];return!t.length||t.some(e=>Jf(e)===Jf(ge))||le&&t.some(e=>Jf(e)===Jf(le))?!0:!t.some(e=>_e.has(Jf(e)))&&!le},K=fe.filter(e=>e.detailPlacement===`primary`&&pe(e)&&G(e)),ve=fe.filter(e=>e.detailPlacement!==`primary`&&pe(e)&&G(e));if(!L)return null;let ye=i=>{let a=[...K,...ve].find(e=>e.key===i);if(a?.actionType===`document`&&a.documentField){let t=Qf(b,a.documentField);if(t.length){k(t),D(!0);return}let i=a.documentModule||e,o=a.documentIdField?qf(se,a.documentIdField):r;n._n(i,o,a.documentField).then(e=>{let t=(e?.data??[]).map(e=>({name:e.fileName||e.name||e.uploadedFileName||a.documentField,url:e.fileUrl||e.url||``,type:`file`})).filter(e=>e.url);t.length?(k(t),D(!0)):s.message.warning(`No ${(a.label||`document`).toLowerCase()} available`)}).catch(()=>s.message.warning(`No ${(a.label||`document`).toLowerCase()} available`));return}if(a?.actionType===`copy`){let e=qf(se,a.copyField||`id`);navigator.clipboard.writeText(Gf(e)).then(()=>s.message.success(`Copied to clipboard`)).catch(()=>s.message.error(`Could not copy to clipboard`));return}if(a?.actionType===`api`&&a.apiPath){let n=Kf(a.apiPath,se),o=String(a.apiMethod||`POST`).toUpperCase();t.o(t.x,n.startsWith(`/`)?n:`/${n}`,{method:o,body:[`GET`,`DELETE`].includes(o)?void 0:JSON.stringify({ids:[r],record:se})}).then(()=>{s.message.success(`${a.label} completed`),j(e=>e+1),f?.(i,{moduleName:e,id:r,action:a,refreshed:!0})}).catch(e=>s.message.error(e.message||`${a.label} failed`));return}if(a?.route){let t=typeof a.route==`function`?a.route(r):Kf(a.route,Wf(b,r));if(a.linkTarget===`_blank`){window.open(t,`_blank`,`noopener`);return}t.startsWith(`/popup/`)?v(t,{state:{background:y,moduleName:e,selectedIds:[r],selectedRecords:[se],popupContext:a.popupState??{},popupAction:{key:a.key,apiMethod:a.apiMethod,apiPath:a.apiPath,defaultTemplateId:a.defaultTemplateId},...a.popupState}}):v(t);return}f?.(i,{moduleName:e,id:r,action:a})},be=t=>{me({sourceDefaultTab:g,selectedTab:t}),p?.(t,{moduleName:e,id:r})},xe=ve.map(e=>{let t=Er(e,se,le??void 0),n=!t&&Xf(e,se,w,le??void 0);return{key:e.key,label:t?t.label:e.label,danger:e.danger,disabled:!!t||!!n,title:n||void 0,onClick:t||n?void 0:()=>ye(e.key)}}),Se=Dd(M)?.header;if(Se?.variant===`finance`){let t=e=>e==null?``:Array.isArray(e)?e.map(t).filter(Boolean).join(`, `):String(typeof e==`object`?e.value??e.label??e.name??e.id??``:e),r={};for(let e of b??[])for(let t of e.fields??[])t?.field!=null&&(r[t.field]=t.value);let i=e=>t(r[e]),a=i(Se.statusField),o=(Se.chips??[]).map(e=>({key:e.field,icon:e.icon?Vf[e.icon]:void 0,label:e.label,value:i(e.field)||`—`,badge:e.badgeField&&i(e.badgeField)||void 0,tooltip:e.tooltip})),c=h?[]:K.map(e=>{let t=Er(e,se,le??void 0),n=!t&&Xf(e,se,w,le??void 0);return{key:e.key,label:t?t.label:e.label,icon:e.icon?Vf[e.icon]:void 0,enabled:!t&&!n,variant:e.tone,disabledReason:n||void 0,onClick:t||n?void 0:()=>ye(e.key)}}),u=a?ef(e,a):[];return(0,l.jsxs)(`div`,{className:`fin-detail-header`,children:[(0,l.jsxs)(`div`,{className:`fin-dh__top`,children:[(0,l.jsxs)(`div`,{className:`fin-dh__identity`,children:[(0,l.jsx)(Mf,{name:z,size:`lg`}),(0,l.jsxs)(`div`,{className:`fin-dh__who`,children:[(0,l.jsxs)(`div`,{className:`fin-dh__name-row`,children:[(0,l.jsx)(`h2`,{className:`fin-dh__name`,children:z||`Details`}),a?(0,l.jsx)(vf,{status:a}):null]}),R?(0,l.jsx)(`span`,{className:`fin-dh__designation`,children:R}):null]})]}),c.length?(0,l.jsx)(`div`,{className:`fin-dh__actions`,children:c.map(e=>{let t=(0,l.jsx)(n.ut,{variant:e.enabled?e.variant??`default`:`default`,icon:e.icon,disabled:!e.enabled,onClick:e.onClick,children:e.label},e.key??e.label);return e.enabled||!e.disabledReason?t:(0,l.jsx)(s.Tooltip,{title:e.disabledReason,children:(0,l.jsx)(`span`,{className:`fin-dh__action-wrap`,children:t})},e.key??e.label)})}):null]}),o.length?(0,l.jsx)(`div`,{className:`fin-dh__chips`,children:o.map(e=>(0,l.jsx)(Hf,{chip:e},e.key??e.label))}):null,u.length?(0,l.jsx)(Ef,{steps:u}):null]})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.Card,{className:`znx-dh-card`,children:[(0,l.jsxs)(`div`,{className:`znx-dh-top`,children:[(0,l.jsxs)(`div`,{className:`znx-dh-left`,children:[R&&(0,l.jsx)(`div`,{className:`znx-dh-eyebrow`,children:R}),(0,l.jsxs)(`div`,{className:`znx-dh-titlerow`,children:[(0,l.jsx)(`span`,{className:`znx-dh-title`,children:z}),V.map(e=>(0,l.jsxs)(`span`,{className:`znx-dh-titleid`,children:[(0,l.jsxs)(`span`,{className:`znx-dh-id-label`,children:[e.label,`:`]}),` `,e.value]},e.label)),B&&(0,l.jsx)(s.Tag,{color:B.color,className:`znx-dh-status`,style:{backgroundColor:B.backgroundColor??B.color,borderColor:B.backgroundColor??B.color,color:B.textColor},children:B.label})]}),te.length>0&&(0,l.jsx)(`div`,{className:`znx-dh-ids`,children:te.map(e=>(0,l.jsxs)(`span`,{className:`znx-dh-id`,children:[(0,l.jsxs)(`span`,{className:`znx-dh-id-label`,children:[e.label,`:`]}),` `,e.value]},e.label))}),ee.length>0&&(0,l.jsx)(`div`,{className:`znx-dh-meta`,children:ee.map((e,t)=>{let n=Pd(e,e=>qf(se,e)??se?.[e]);return(0,l.jsxs)(`span`,{className:`znx-dh-meta-item`,children:[n.icon&&Vf[n.icon]&&(0,l.jsx)(`span`,{className:`znx-dh-meta-icon`,children:Vf[n.icon]}),n.variant===`pill`?(0,l.jsxs)(l.Fragment,{children:[n.label&&(0,l.jsxs)(`span`,{className:`znx-dh-meta-label`,children:[n.label,`:`]}),(0,l.jsx)(s.Tag,{className:`znx-dh-meta-pill`,color:n.tagColor,style:n.tagStyle,children:n.value||n.text})]}):(0,l.jsx)(`span`,{children:n.text})]},t)})})]}),!h&&(0,l.jsxs)(`div`,{className:`znx-dh-actions-col`,children:[(0,l.jsxs)(`div`,{className:`znx-dh-actions`,children:[K.map(e=>{let t=Er(e,se,le??void 0),n=!t&&Xf(e,se,w,le??void 0),r=(0,l.jsx)(s.Button,{type:`text`,disabled:!!t||!!n,className:`znx-dh-btn znx-dh-btn--${t?t.tone:e.tone??`primary`}${t?` znx-dh-btn--done`:``}`,icon:t?(0,l.jsx)(c.CheckCircleOutlined,{}):e.icon?Vf[e.icon]:void 0,onClick:t||n?void 0:()=>ye(e.key),children:t?t.label:e.label},e.key);return n?(0,l.jsx)(s.Tooltip,{title:n,children:(0,l.jsx)(`span`,{children:r})},e.key):r}),ve.length>0&&(0,l.jsx)(s.Dropdown,{trigger:[`click`],placement:`bottomRight`,menu:{items:xe},children:(0,l.jsx)(s.Button,{type:`text`,className:`znx-dh-more`,icon:(0,l.jsx)(c.MoreOutlined,{})})})]}),re.length>0&&(0,l.jsx)(`div`,{className:`znx-dh-stats`,children:re.map(e=>(0,l.jsxs)(`div`,{className:`znx-dh-stat`,children:[(0,l.jsx)(`span`,{className:`znx-dh-stat-value`,children:e.value}),(0,l.jsx)(`span`,{className:`znx-dh-stat-label`,children:e.label})]},e.label))}),ie?.value&&(0,l.jsxs)(`div`,{className:`znx-dh-created`,children:[`Created on `,ie.value]})]})]}),ce.length>0&&(0,l.jsx)(`div`,{className:`znx-dh-tabs`,children:ce.map(e=>(0,l.jsx)(`button`,{type:`button`,className:`znx-dh-tab${ge===e.key?` is-active`:``}`,onClick:()=>be(e.key),children:e.label},e.key))})]}),(0,l.jsx)(n.wn,{documents:O,open:E,onClose:()=>D(!1)})]})}var ep={};function tp(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.tabContentRegistry)??{};if(!Object.keys(e).length)return ep;let t={...ep};return Object.entries(e).forEach(([e,n])=>{t[e]={...t[e]??{},...n}}),t}function np(e,t){return!t||t===`details`?null:tp()[e]?.[t]??null}function rp(){let e=(0,d.useLocation)();return e.state?.refreshTimestamp??e.state?.__refreshedAt??0}function ip({component:e,id:t,moduleName:n,onDescriptionSaved:r}){return e?(0,l.jsx)(e,{id:t,moduleName:n,onDescriptionSaved:r}):null}var{Text:ap}=s.Typography;function op({moduleName:e,id:t,backPath:n=``,showFooter:r=!0,customConfigName:i=void 0,users:a=[],showActivity:c=!0,showNotes:u=!0,onHeaderAction:f,onHeaderTabChange:p,onHeaderData:m}){let h=(0,d.useNavigate)(),g=(0,d.useParams)(),[_,v]=(0,d.useSearchParams)(),y=(0,d.useLocation)(),b=t||g.id||_.get(`jobId`)||_.get(`id`)||y.state?.record?._id||y.state?.record?.id,x=_.get(`tab`)||`details`,[S,C]=(0,o.useState)(0),w=rp(),T=(e,t)=>{let n=new URLSearchParams(_);n.set(`tab`,e),v(n,{replace:!0}),p?.(e,t)},E=()=>C(e=>e+1),D=(e,t)=>{f?.(e,t)},O=(0,o.useMemo)(()=>Dd(e)?.tabs??[],[e]),k=fl(O,{id:b,moduleName:e}),A=x===`details`||!O.some(e=>e.key===x&&typeof e.visibleWhen==`function`)||k.some(e=>e.key===x),j=(0,o.useMemo)(()=>A?np(e,x):null,[e,x,A]);return(0,l.jsxs)(`div`,{className:`v1-page v1-detail-page`,children:[(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)($f,{moduleName:e,customConfigName:i,id:b,defaultTab:x,onAction:D,onTabChange:T,onHeaderData:m,refreshKey:w}),j?(0,l.jsx)(ip,{component:j,id:b,moduleName:e,onDescriptionSaved:E}):(0,l.jsxs)(s.Row,{gutter:[16,16],align:`stretch`,children:[(0,l.jsx)(s.Col,{xs:24,lg:16,children:(0,l.jsx)(Yu,{moduleName:e,id:b,refreshKey:S+w,onDescriptionSaved:E})}),(0,l.jsx)(s.Col,{xs:24,lg:8,children:(0,l.jsx)(Bc,{moduleName:e,id:b,users:a,showActivity:c,showNotes:u,refreshKey:w})})]})]}),n&&r&&(0,l.jsxs)(`div`,{className:`v1-footer`,children:[(0,l.jsx)(ap,{type:`secondary`,children:b?`Record ID: ${b}`:`Detail view`}),(0,l.jsx)(s.Button,{onClick:()=>h(n),children:`Back`})]})]})}op.propTypes={moduleName:f.default.string,id:f.default.string,backPath:f.default.string,showFooter:f.default.bool,customConfigName:f.default.string,users:f.default.array,showActivity:f.default.bool,showNotes:f.default.bool,onHeaderAction:f.default.func,onHeaderTabChange:f.default.func,onHeaderData:f.default.func};var sp={jobRemoteStatus:[`On-Site`,`Remote`,`Hybrid`],jobRecruitmentStatus:[`unread`,`partially fulfilled`,`fulfilled`],"experience.experienceRequiredUnit":[`Years`,`Months`],"contractDuration.unit":[`Days`,`Weeks`,`Months`,`Years`],noticePeriodUnit:[`Days`,`Weeks`,`Months`],"jobPayDetails.clientBudgetCurrency":[`$`,`USD`,`INR`],"jobPayDetails.clientBudgetUnit":[`Hour`,`Daily`,`Monthly`,`Yearly`],workAuthorisation:[`US Citizen`,`Green Card`,`H1B`,`OPT`,`CPT`,`L2 EAD`,`H4 EAD`,`Other`],source:[`LinkedIn`,`Referral`,`Dice`,`Indeed`,`Monster`,`Vendor`,`Other`]};function cp(e={}){return sp[e.field]??[]}var lp=new Set([``,`false`,`0`,`no`,`null`,`undefined`]);function up(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`string`?!lp.has(e.trim().toLowerCase()):!Array.isArray(e)||e.length>0}function dp(e){return Array.isArray(e)?e.map(e=>String(e??``).trim()).filter(Boolean):String(e??``).split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)}function fp({lockKeys:e=[],resultValue:t,hasResultField:n=!0,readSibling:r}){return!e.length||typeof r!=`function`||n&&!up(t)?!1:e.every(e=>up(r(e)))}function pp(e,t=[]){let n=e;for(let e of t){if(n==null)return;n=n[e]}return n}var mp=e.t({default:()=>im}),{Text:hp}=s.Typography,{TextArea:gp}=s.Input;function _p(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function vp({form:e,field:t,absoluteName:r}){let[i,a]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),d=(0,o.useRef)(null),f=s.Form.useWatch(t.verifyResultField?_p(r,t.verifyResultField):[`__noop_verify__`],{form:e,preserve:!0}),p=s.Form.useWatch(r,e),m=(0,o.useMemo)(()=>dp(t.verifyLockedWhenFields),[t.verifyLockedWhenFields]),h=s.Form.useWatch(e=>fp({lockKeys:m,resultValue:pp(e,_p(r,t.verifyResultField)),hasResultField:!!t.verifyResultField,readSibling:t=>pp(e,_p(r,t))}),{form:e,preserve:!0});return(0,o.useEffect)(()=>{let n=String(p??``).trim();if(f===!0&&d.current===null&&n){d.current=n;return}f===!0&&d.current!==null&&n!==d.current&&(t.verifyResultField&&e.setFieldValue(_p(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(_p(r,t.verifyTimestampField),void 0),d.current=null)},[r,p,t.verifyResultField,t.verifyTimestampField,e,f]),t.verifyAction===`email`?h?(0,l.jsx)(hp,{type:`success`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifyLockedLabel||`Verified`}):f===!0?c&&!c.mailboxConfirmed&&(c.catchAll||c.result===`risky`)?(0,l.jsx)(s.Tooltip,{title:c.reason||`This domain accepts every address, so the mailbox could not be confirmed. Delivery is proven only once the account email is actually sent.`,children:(0,l.jsx)(hp,{type:`warning`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifyUnconfirmedLabel||`Accepted`})}):(0,l.jsx)(hp,{type:`success`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifySuccessLabel||`Valid`}):(0,l.jsx)(s.Button,{size:`small`,loading:i,onClick:async()=>{let i=String(p??``).trim();if(!i){s.message.warning(`Enter an email first`);return}a(!0);try{let a=await n.bi(i);d.current=a.valid?i:null,u(a.valid?a:null),t.verifyResultField&&e.setFieldValue(_p(r,t.verifyResultField),a.valid),t.verifyTimestampField&&e.setFieldValue(_p(r,t.verifyTimestampField),a.valid?new Date().toISOString():void 0),a.valid?a.mailboxConfirmed?s.message.success(`Email verified — the mail server confirmed this mailbox`):s.message.warning(a.reason||`The domain can receive mail, but this exact mailbox could not be confirmed`):s.message.error(a.reason?`Invalid email: ${a.reason}`:`Email could not be verified`)}catch(n){d.current=null,u(null),t.verifyResultField&&e.setFieldValue(_p(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(_p(r,t.verifyTimestampField),void 0),s.message.error(n?.message||`Could not verify email`)}finally{a(!1)}},className:`v1-verify-field-wrap`,children:f===!1?t.verifyRetryLabel||`Re Verify`:t.verifyIdleLabel||`Verify Email`}):null}function yp({form:e,field:t,siblingPrefix:r,locked:i,combined:a=!1}){let o=s.Form.useWatch(n.r(t?.labelWhen,r),e),c=n.a(t,o,a);return a?c:(0,l.jsx)(Fp,{field:t,label:c,locked:i})}function bp({form:e,groups:t,disabled:n,loading:r,onClick:i,children:a}){let o=s.Form.useWatch(e=>t.some(t=>{if(!t.addRow||!t.requireValidatedField)return!1;let n=e?.[t.name]??[];return n.length===0||n.some(e=>!e?.[t.requireValidatedField])}),{form:e,preserve:!0}),c=n||o,u=t.find(e=>e.submitDisabledMessage)?.submitDisabledMessage,d=t.find(e=>e.requireValidatedField)?.requireValidatedFieldMessage,f=o?d||u||`Verify every required row before submitting.`:u||`Complete all mandatory fields before submitting.`,p=(0,l.jsx)(s.Button,{type:`primary`,onClick:i,disabled:c,loading:r,children:a});return c&&!r?(0,l.jsx)(s.Tooltip,{title:f,children:(0,l.jsx)(`span`,{style:{display:`inline-flex`,cursor:`not-allowed`},children:p})}):p}function xp({form:e,rules:t,watchPaths:r,targetPath:i,resetOnNoMatch:a=!0}){let c=s.Form.useWatch(e=>JSON.stringify(r.map(({path:t})=>t.reduce((e,t)=>e==null?e:e[t],e)??null)),{form:e,preserve:!0}),l=(0,o.useRef)(void 0),u=(0,o.useRef)(!0);return(0,o.useEffect)(()=>{let o=c?JSON.parse(c):[],s={};r.forEach(({field:e},t)=>{s[e]=o[t]});let d=u.current;u.current=!1;let f=n.G({rules:t,watched:s,current:e.getFieldValue(i),lastApplied:l.current,clearOnMismatch:a,initial:d});f.action===`set`?(e.setFieldValue(i,f.value),l.current=f.value):f.action===`clear`&&(e.setFieldValue(i,void 0),l.current=void 0)},[c]),null}var Sp=[(0,l.jsx)(c.UserOutlined,{}),(0,l.jsx)(c.EnvironmentOutlined,{}),(0,l.jsx)(c.SolutionOutlined,{}),(0,l.jsx)(c.InfoCircleOutlined,{}),(0,l.jsx)(c.FileTextOutlined,{})],Cp={email:(0,l.jsx)(c.MailOutlined,{className:`v1-input-icon`}),contactNumber:(0,l.jsx)(c.PhoneOutlined,{className:`v1-input-icon`}),phone:(0,l.jsx)(c.PhoneOutlined,{className:`v1-input-icon`}),currentLocation:(0,l.jsx)(c.EnvironmentOutlined,{className:`v1-input-icon`}),preferredLocation:(0,l.jsx)(c.EnvironmentOutlined,{className:`v1-input-icon`}),designation:(0,l.jsx)(c.SolutionOutlined,{className:`v1-input-icon`}),skills:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),firstName:(0,l.jsx)(c.UserOutlined,{className:`v1-input-icon`}),lastName:(0,l.jsx)(c.UserOutlined,{className:`v1-input-icon`}),jobTitle:(0,l.jsx)(c.SolutionOutlined,{className:`v1-input-icon`}),jobLocation:(0,l.jsx)(c.EnvironmentOutlined,{className:`v1-input-icon`}),vendorEmail:(0,l.jsx)(c.MailOutlined,{className:`v1-input-icon`})},wp=e=>e===!0||e===1||e===`1`,Tp=(e,t)=>(e?.edit===void 0||wp(e.edit))&&(!e?.editablePermission||n.F(e.editablePermission,t)),Ep=e=>e==null||e===``;function Dp(e){return e==null||e===``?!1:Array.isArray(e)?e.length>0&&e.some(Dp):typeof e!=`object`||Object.values(e).some(Dp)}function Op(e=``){let t=String(e).toLowerCase();return t===`job`?`jobs`:t===`candidate`?`candidates`:t===`submissions`?`submission`:t}function kp(e=[]){return e.map(e=>typeof e==`string`?{label:e,value:e}:{label:e.label??e.name??e.value??e.userName??e.email,value:e.value??e.id??e.userId??e._id??e.name??e.label})}function Ap(e,t){if(!e?.field)return!0;let n=String(t??``),r=String(e.value??``),i=()=>r.split(`,`).map(e=>e.trim());switch(e.operator){case`eq`:return n===r;case`neq`:return n!==r;case`in`:return i().includes(n);case`notIn`:return!i().includes(n);case`truthy`:return wp(t);case`falsy`:return!wp(t);case`empty`:case`isEmpty`:return t==null||n.trim()===``||Array.isArray(t)&&t.length===0;case`notEmpty`:return!(t==null||n.trim()===``||Array.isArray(t)&&t.length===0);default:return!0}}var jp=o.default.createContext(!1);function Mp({form:e,group:t,children:r,inheritParent:i=!0}){let a=o.default.useContext(jp),c=t?.disabledIf?.field?n.Mt(t.disabledIf.field):[`__noop_group_disabled__`],u=s.Form.useWatch(c,e),d=t?.disabledIf?.field?Ap(t.disabledIf,u):!1,f=i&&a||!!t?.disabled||d;return(0,l.jsx)(jp.Provider,{value:f,children:r})}function Np({form:e,showIf:t,render:n}){return Ap(t,s.Form.useWatch(t.field,e))?n():null}function Pp(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}function Fp({field:e,label:t,locked:r}){if(!t)return t;let i=n.R(e),a=!!i;return!a&&!r?t:(0,l.jsxs)(`span`,{className:`v1-field-label-with-info`,children:[(0,l.jsx)(`span`,{children:t}),a&&(0,l.jsx)(s.Tooltip,{title:i,children:(0,l.jsx)(c.InfoCircleOutlined,{className:`v1-field-info-icon`})}),r&&(0,l.jsx)(s.Tooltip,{title:`You don't have permission to edit this field`,children:(0,l.jsx)(c.LockOutlined,{className:`v1-field-info-icon`})})]})}function Ip({group:e}){return!wp(e?.infoEnabled)||Ep(e?.infoText)?null:(0,l.jsx)(hp,{type:`secondary`,className:`v1-group-info-message`,children:e.infoText})}function Lp({group:e}){return!wp(e?.toggleEnabled)||Ep(e?.toggleField)?null:(0,l.jsxs)(s.Space,{size:6,align:`center`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(hp,{type:`secondary`,className:`v1-combine-toggle-label`,children:e.toggleLabel||`Toggle`}),(0,l.jsx)(s.Form.Item,{name:e.toggleField,valuePropName:`checked`,initialValue:!!e.toggleValue,noStyle:!0,children:(0,l.jsx)(s.Switch,{size:`small`})})]})}function Rp(e=[],t,r,i){let a=i instanceof Map?i:new Map;return[...e].filter(e=>!wp(e.hideGroup)&&!wp(e.hideGroupInForm)&&n.ln(r,e.name)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,fields:[...e.fields??[]].map(e=>{let t=a.get(e.field);return!t||!t.forceShow&&!t.forceReq?e:{...e,...t.forceShow?{show:1}:null,...t.forceReq?{req:1}:null}}).filter(i=>String(i.field??``).trim()!==``&&(!i.visiblePermission||n.F(i.visiblePermission,t))&&n.sn(r,e.name,i.field)).map(t=>n.cn(r,e.name,t.field)?t:{...t,disabled:!0}).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function zp(e){return String(e??``).replace(/<[^>]*>/g,``).replace(/ /g,` `).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).trim()}function Bp(e,t){let n=(e.validations??e.validation??e.rules??[]).find(e=>(typeof e==`string`?e:e?.type)===t);if(!(!n||typeof n==`string`))return n.value??n.length??n[t]}var Vp=({label:e,message:t,value:n,compare:r,text:i})=>({validator:(a,o)=>Ep(o)||r(Number(o),Number(n))?Promise.resolve():Promise.reject(Error(t??`${e} ${i} ${n}`))});function Hp(e,t){return n.rt(e,t)}var Up=({label:e,message:t,value:n,rule:r,form:i,name:a,compare:o,text:s})=>({validator:async(c,l)=>{let u=n??r.compareField??r.field;if(!u||Ep(l))return Promise.resolve();let d=i.getFieldValue(Hp(a,u));if(Ep(d))return Promise.resolve();let f=Number(l),p=Number(d);return Number.isNaN(f)||Number.isNaN(p)||o(f,p)?Promise.resolve():Promise.reject(Error(t??`${e} ${s} ${u}`))}}),Wp={minLength3:e=>Wp.min({...e,value:3}),minLength5:e=>Wp.min({...e,value:5}),noPastDate:({label:e,message:t})=>({validator:(r,i)=>{if(Ep(i))return Promise.resolve();let a=new Date;return a.setHours(0,0,0,0),n.g(i)<a.getTime()?Promise.reject(Error(t??`${e} cannot be a past date`)):Promise.resolve()}}),noFutureDate:({label:e,message:t})=>({validator:(r,i)=>{if(Ep(i))return Promise.resolve();let a=new Date;return a.setHours(23,59,59,999),n.g(i)>a.getTime()?Promise.reject(Error(t??`${e} cannot be a future date`)):Promise.resolve()}}),minAge:({message:e,value:t})=>({validator:(r,i)=>{if(Ep(i))return Promise.resolve();let a=Number(t??18),o=new Date;return o.setFullYear(o.getFullYear()-a),o.setHours(23,59,59,999),n.g(i)>o.getTime()?Promise.reject(Error(e??`Must be at least ${a} years old`)):Promise.resolve()}}),dateAfterField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>n.p({type:`dateAfterField`,label:e,rule:{...i,value:r??i?.compareField??i?.field,message:t},readSibling:e=>a.getFieldValue(Hp(o,e))}),dateBeforeField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>n.p({type:`dateBeforeField`,label:e,rule:{...i,value:r??i?.compareField??i?.field,message:t},readSibling:e=>a.getFieldValue(Hp(o,e))}),timeAfterField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=r??i.compareField??i.field;if(!l||Ep(c))return Promise.resolve();let u=a.getFieldValue(Hp(o,l));if(Ep(u))return Promise.resolve();let d=n._(c),f=n._(u);return d===null||f===null||d>f?Promise.resolve():Promise.reject(Error(t??`${e} must be after ${l}`))}}),timeBeforeField:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=r??i.compareField??i.field;if(!l||Ep(c))return Promise.resolve();let u=a.getFieldValue(Hp(o,l));if(Ep(u))return Promise.resolve();let d=n._(c),f=n._(u);return d===null||f===null||d<f?Promise.resolve():Promise.reject(Error(t??`${e} must be before ${l}`))}}),greaterThanField:e=>Up({...e,compare:(e,t)=>e>=t,text:`must be greater than or equal to`}),strictGreaterThanField:e=>Up({...e,compare:(e,t)=>e>t,text:`must be greater than`}),strictLessThanField:e=>Up({...e,compare:(e,t)=>e<t,text:`must be less than`}),lessThanOrEqualField:e=>Up({...e,compare:(e,t)=>e<=t,text:`must be less than or equal to`}),maxFromField:e=>n.at(e),maxFieldWithFallback:({label:e,message:t,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=n.et({input:c,compareFields:n.tt(r??i.compareFields),readValue:e=>n.nt(a,o,e)});return l.ok?Promise.resolve():Promise.reject(Error(t??`${e} must not exceed ${l.field}`))}}),required:({field:e,message:t,form:n,name:r})=>({validator:(i,a)=>{if(e?.disabledByField&&n&&r&&wp(n.getFieldValue(Kp(r,e.disabledByField)))||e?.requiredIfField&&n&&!wp(n.getFieldValue(Kp(r,e.requiredIfField))))return Promise.resolve();let o=a==null||a===``||Array.isArray(a)&&a.length===0;return!o&&e?.type===`text-editor`&&(o=zp(a)===``),o?Promise.reject(Error(t??`Mandatory Field`)):Promise.resolve()}}),email:({label:e,message:t})=>n.Tt(e,t),unique:({field:e,rule:t,uniqueContext:r})=>n.vt({field:e,validation:t,context:r}),url:({label:e,message:t})=>({type:`url`,message:t??`Enter valid ${e}`}),number:({label:e,message:t})=>({pattern:/^[0-9]+$/,message:t??`${e} must be a number`}),phone:({message:e})=>({validator:(t,r)=>{if(r==null||r===``)return Promise.resolve();let{total:i}=n.Hn();return n.Un(r).length===i?Promise.resolve():Promise.reject(Error(e??`Phone number must contain exactly ${i} digits`))}}),len:({label:e,message:t,value:n})=>({len:Number(n),message:t??`${e} must be ${n} characters`}),pattern:({label:e,message:t,rule:n})=>({pattern:new RegExp(n.pattern??n.value,n.flags),message:t??`Enter valid ${e}`}),min:({field:e,label:t,message:n,value:r})=>e.type===`number`?Vp({label:t,message:n,value:r,compare:(e,t)=>e>=t,text:`must be at least`}):{validator:(i,a)=>{if(a==null||a===``)return Promise.resolve();let o=e.type===`text-editor`?zp(a):String(a);return o===``||o.length>=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must be at least ${r} characters`))}},max:({field:e,label:t,message:n,value:r})=>e.type===`number`?Vp({label:t,message:n,value:r,compare:(e,t)=>e<=t,text:`must not exceed`}):{validator:(i,a)=>{if(a==null||a===``)return Promise.resolve();let o=e.type===`text-editor`?zp(a):String(a);return o===``||o.length<=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must not exceed ${r} characters`))}}};function Gp(e,t,n,r,i,a){let o=typeof e==`string`?{type:e}:e,s=o.type??o.rule??o.name,c=o.value??o.length??o.min??o.max,l=t.label??t.field??`Field`,u=Wp[s];return u?u({field:t,label:l,message:o.message,rule:o,value:c,form:n,name:r,prefixFor:i,uniqueContext:a}):o}function Kp(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function qp(e){return wp(e?.req)?!0:(e?.validations??e?.validation??e?.rules??[]).some(e=>(typeof e==`string`?e:e?.type)===`required`)}function Jp(e,t,r,i=!1,a=void 0,o=void 0,s=void 0){let c=e.label??e.field??`Field`,l=e.validations??e.validation??e.rules??[],u=l.some(e=>(typeof e==`string`?e:e?.type)===`required`),d=l.some(e=>(typeof e==`string`?e:e?.type)===`email`),f=[];if(s?.length&&f.push(...s),e.rowHierarchy){let i=Zp(t,r);i.rows&&f.push(n.m({field:e,...i}))}!i&&!u&&(wp(e.req)||e.requiredIfField)&&f.push(Wp.required({field:e,message:`Mandatory Field`,form:t,name:r})),(e.type===`email`||e.formatter===`email`)&&!d&&f.push(n.Tt(c)),e.type===`number`&&f.push(wp(e.decimal)?{pattern:/^\d+(\.\d+)?$/,message:`${c} must be a number`}:{pattern:/^[0-9]+$/,message:`${c} must be a number`});let p=n.an(e,r,a,n=>Gp(n,e,t,r,a,o));return n._t([...f,...l.map(p),n.on(e)])}function Yp(e,t,r){let i=new Set([`greaterThanField`,`strictGreaterThanField`,`strictLessThanField`,`lessThanOrEqualField`,`maxFieldWithFallback`,`dateAfterField`,`dateBeforeField`,`timeAfterField`,`timeBeforeField`]);return[...(e.validations??e.validation??e.rules??[]).filter(e=>(typeof e==`string`?e:e?.type)===`maxFromField`).map(e=>n.it(e,t,r)).filter(Boolean),...(e.validations??e.validation??e.rules??[]).filter(e=>i.has(typeof e==`string`?e:e?.type)).flatMap(e=>String(e.value??e.compareField??e.field??``).split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>Hp(t,e)))]}function Xp(e){let t=e.len??Bp(e,`len`),n=e.min??Bp(e,`min`),r=e.max??Bp(e,`max`);return e.type===`number`?{min:n??void 0,max:r??void 0}:{minLength:n??void 0,maxLength:e.maxLength??t??r??void 0}}function Zp(e,t){if(!Array.isArray(t)||t.length<3||typeof t[1]!=`number`)return{};let n=e.getFieldValue(t[0]);return Array.isArray(n)?{rows:n,rowIndex:t[1]}:{}}function Qp(e,t,r){return n.f({field:e,readSibling:e=>t.getFieldValue(Hp(r,e)),...Zp(t,r)})}function $p(e){return n.h(e)}function em(e,t){return t?t===`phone`?n.zn(e):t===`digits`?e.replace(/\D/g,``).slice(0,10):t===`email`||t===`noSpaces`?e.replace(/\s/g,``):t===`name`?e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()):e:e}function tm({field:e,form:r,name:i,value:a,checked:u,fileList:d,moduleName:f,recordId:p,initialValue:m,scopeValues:h={},onAiUpload:g,onRegionBlocked:_,onRowOrderChange:v,formDisabled:y,rowFieldKeys:b}){let x=e.type??`text`,S=!Tp(e,f),[C,w]=(0,o.useState)(null),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(``),[k,A]=(0,o.useState)(``),[j,M]=(0,o.useState)(``),[N,P]=(0,o.useState)({open:!1,docs:[],index:0}),[F,I]=(0,o.useState)(null),[L,R]=(0,o.useState)(0),z=(0,o.useRef)([]),B=Array.isArray(i)&&i.length>=3&&typeof i[1]==`number`,V=e.lookupFilterValueFrom?n.Mt(e.lookupFilterValueFrom):[`__lookup_filter_${e.field}`],ee=e.lookupFilterValueFrom&&B?[...i.slice(0,2),...n.Mt(e.lookupFilterValueFrom)]:[`__noop_row_filter__`],te=s.Form.useWatch(V,r),ne=s.Form.useWatch(ee,r),re=Ep(ne)?te:ne,ie=e.lookupFilterValueFrom?h[e.lookupFilterValueFrom]:void 0,H=Ep(ie)?re:ie,ae=(0,o.useRef)(n.I);(0,o.useEffect)(()=>{if(!e.lookupFilterField||!e.lookupFilterValueFrom)return;let t=ae.current;ae.current=H,n.L({previous:t,next:H,currentValue:r.getFieldValue(i)})&&r.setFields([{name:i,value:void 0,errors:[]}])},[H]);let oe=e.disabledByField?Array.isArray(i)&&i.length>1?[...i.slice(0,-1),e.disabledByField]:[e.disabledByField]:[`__noop_disabled_watch__`],se=s.Form.useWatch(oe,r),ce=e.disabledIf?.field?n.Mt(e.disabledIf.field):[`__noop_disabled_if__`],U=e.disabledIf?.field&&B?[...i.slice(0,2),...n.Mt(e.disabledIf.field)]:[`__noop_disabled_if_row__`],le=s.Form.useWatch(ce,r),ue=s.Form.useWatch(U,r),de=e.disabledIf?.field?n.i(e.disabledIf,Ep(ue)?le:ue):!1,fe=e.optionsFromField||``,pe=fe?n.Mt(fe):[`__noop_options_from__`],W=fe&&B&&(!b||b.has(fe))?[...i.slice(0,2),...n.Mt(fe)]:[`__noop_options_from_row__`],me=s.Form.useWatch(pe,r),he=s.Form.useWatch(W,r),ge=Ep(he)?me:he,_e=wp(e.prefillWhenExclusive)&&e.prefillWhen?.length?e.prefillWhen:null,G=s.Form.useWatch(e=>_e?JSON.stringify(n.U(_e).map(t=>{let r=t=>t.reduce((e,t)=>e==null?e:e[t],e),a=B&&(!b||b.has(t))?r([...i.slice(0,2),...n.Mt(t)]):void 0;return(Ep(a)?r(n.Mt(t)):a)??null})):``,{form:r,preserve:!0}),K=(0,o.useMemo)(()=>{if(!_e||!G)return null;let e=JSON.parse(G),t={};return n.U(_e).forEach((n,r)=>{t[n]=e[r]}),t},[G]),ve=o.default.useContext(jp),ye=e.exclusiveInGroup&&B?[i[0]]:[`__noop_exclusive_watch__`],be=s.Form.useWatch(ye,r),xe=(0,o.useMemo)(()=>{if(!e.exclusiveInGroup||!B||!Array.isArray(be))return!1;let t=i[1],n=i[i.length-1];return be.some((e,r)=>r!==t&&wp(e?.[n]))},[e.exclusiveInGroup,B,be,i]),Se=e.locationCountryFrom?n.Mt(e.locationCountryFrom):[`__noop_loc_country__`],Ce=e.locationCountryFrom&&B?[...i.slice(0,2),...n.Mt(e.locationCountryFrom)]:[`__noop_loc_country_row__`],we=s.Form.useWatch(Se,r),Te=s.Form.useWatch(Ce,r),Ee=Ep(Te)?we:Te,De=e.locationStateFrom?n.Mt(e.locationStateFrom):[`__noop_loc_state__`],Oe=e.locationStateFrom&&B?[...i.slice(0,2),...n.Mt(e.locationStateFrom)]:[`__noop_loc_state_row__`],ke=s.Form.useWatch(De,r),Ae=s.Form.useWatch(Oe,r),je=Ep(Ae)?ke:Ae,Me=e.dataSource===`locationMaster`&&(e.locationLevel===`state`&&Ep(Ee)||e.locationLevel===`city`&&(Ep(Ee)||Ep(je))),Ne=S||!!e.disabled||de||(e.disabledByField?wp(se):!1)||!!y||ve||xe||Me;(0,o.useEffect)(()=>{if(x===`location`){let n=!1;async function r(){try{E(!0);let r=new URLSearchParams({search:D,limit:String(e.limit??50),offset:`0`}),i=await t.o(t.x,`/admin/location-dropdown-values?${r}`),a=i?.data??i??[];n||w(kp(Array.isArray(a)?a:[]))}catch(t){console.error(`[EditFormV1] Failed to fetch locations for "${e.field}":`,t),n||w([])}finally{n||E(!1)}}return r(),()=>{n=!0}}let r=e.dataSource;if(![`select`,`radio`,`checkbox`].includes(x)||!r||r===`static`)return;if(r===`lookup`&&e.lookupFilterField&&Ep(H)){w([]),E(!1);return}let i=!1;async function a(){try{E(!0);let a=[];if(r===`master`||r===`module`)a=await n.yn(f,e.field,r===`master`?j:``,e.limit??50,0,{dataSource:r,masterName:e.masterName,groupName:e.groupName});else if(r===`lookup`){let r=new URLSearchParams({collection:e.lookupCollection??``,displayField:e.displayField??``,valueField:e.valueField??`_id`});e.displayField2&&r.set(`displayField2`,e.displayField2),k&&r.set(`search`,k),e.lookupFilterField&&!Ep(H)&&(r.set(`filterField`,e.lookupFilterField),r.set(`filterValue`,String(H)));let i={field:e.field,extraFields:e.extraFields,optionsRequireExtraField:e.optionsRequireExtraField,optionsRequireExtraValue:e.optionsRequireExtraValue,optionsHierarchyParentField:e.optionsHierarchyParentField,optionsHierarchySelfFrom:e.optionsHierarchySelfFrom},o=n.B(i);o.length&&r.set(`extraFields`,o.join(`,`));let s=await t.o(t.x,`/admin/lookup-dropdown-values?${r}`);a=s?.data??s??[],a=n.z(a,i,{source:`EditFormV1`})}else if(r===`locationMaster`){let n=e.locationLevel||`country`;if(n===`state`&&Ep(Ee))a=[];else if(n===`city`&&(Ep(Ee)||Ep(je)))a=[];else{let r=new URLSearchParams({level:n,limit:String(e.limit??250),offset:`0`});Ep(Ee)||r.set(`country`,String(Ee)),Ep(je)||r.set(`state`,String(je)),k&&r.set(`search`,k);let i=await t.o(t.x,`/admin/location-dropdown-values?${r}`);a=i?.data??i??[]}}else if(r===`group`){let n=String(e.groupName??``).toLowerCase().trim();if(n===`users`||n===`user`){let n=await t.o(t.x,`/get-all-users?limit=500&offset=0`),r=n?.data?.users??n?.users??n?.data??[],i=String(e.groupRoleContains??``).trim().toLowerCase(),o=i?Array.isArray(r)?r.filter(e=>String(e.roleName??``).toLowerCase().includes(i)):[]:r;a=Array.isArray(o)?o.map(e=>({label:[e.firstName,e.lastName].filter(Boolean).join(` `).trim()||e.userName||e.email||String(e.userId??e.id),value:e.userId??e.id})):[]}}i||(z.current=Array.isArray(a)?a:[],w(kp(z.current)))}catch(t){console.error(`[EditFormV1] Failed to fetch options for "${e.field}":`,t),i||w([])}finally{i||E(!1)}}return a(),()=>{i=!0}},[x,e.dataSource,e.field,e.lookupCollection,e.displayField,e.displayField2,e.valueField,e.lookupFilterField,H,e.groupName,e.groupRoleContains,e.masterName,e.limit,D,k,j,f,e.extraFields,e.optionsRequireExtraField,e.optionsRequireExtraValue,e.optionsHierarchyParentField,e.optionsHierarchySelfFrom,L,e.locationLevel,e.locationCountryFrom,e.locationStateFrom,Ee,je]);let Pe=kp([e.options,e.values].find(e=>Array.isArray(e)&&e.length>0)??(x===`checkbox`?[]:cp(e))),Fe=C??Pe,[Ie,Le]=(0,o.useState)([]),Re=n.b(a,Fe).join(`,`);(0,o.useEffect)(()=>{if(!Re||e.dataSource!==`lookup`||T)return;let t=!1;return n.v(e,Re.split(`,`)).then(e=>{t||Le(e)}).catch(()=>{t||Le([])}),()=>{t=!0}},[Re,e.dataSource,e.lookupCollection,e.displayField,e.displayField2,e.valueField,T]);let ze=n.y(Fe,Ie),Be=fe?n.V(ze,ge):ze,Ve=_e?n.H(Be,_e,K??{}):Be,q=(e.multiSelect?`multiple`:e.mode??(wp(e.multiple)?`multiple`:void 0))??(n.Xt(e)===`array`?`multiple`:void 0),J=wp(e.allowCustomValues),Y=J?`tags`:q,X=!!e.multiSelect||wp(e.multiple)||n.Xt(e)===`array`||q===`multiple`,He=J?typeof e.tokenSeparators==`string`&&e.tokenSeparators?e.tokenSeparators.split(``):[`,`]:void 0,Ue=[`select`,`location`].includes(x),We=e.hidePlaceholder?void 0:e.placeholder??`${Ue?`Select`:`Enter`} ${String(e.label??``).toLowerCase()}`,Ge=Xp(e),Ke=()=>{setTimeout(()=>{r.validateFields([i]).catch(()=>{})})},qe=e=>{r.setFieldValue(i,e),Ke()},Je=n.st({field:e,form:r,name:i,moduleName:f,scopeValues:h,ownValue:a,onDone:(t,a)=>{R(e=>e+1);let o=n.Xt(e)!==`array`&&!e.multiSelect&&!e.multiple;t===`create`&&a!=null&&o&&((e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,b),qe(n.nn(e)?{value:a}:a)),t===`edit`&&(e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,b)}}),Ye=e.validator?.type?{...e.validator,title:e.validator.title||e.label||`Field`}:null,Xe={...Ge,value:a,disabled:Ne,placeholder:We,prefix:e.icon?null:Cp[e.field],onChange:t=>{let r=e.formatter?em(t.target.value,e.formatter):t.target.value;if(Ye){let{cleaned:e,error:t}=n.Ct(r,Ye,`change`);I(t),r=e}qe(r)},...Ye&&{onBlur:e=>{let{cleaned:t,error:r}=n.Ct(e.target.value,Ye,`blur`);I(r),t!==e.target.value&&qe(t)},onKeyPress:e=>{let t=n.wt(Ye.type);if(!t||e.which===0||e.keyCode===8||e.keyCode===13)return;let r=String.fromCharCode(e.which??e.keyCode);if(!t.test(r)){e.preventDefault();let t=`${Ye.title} — invalid character.`;I(t),setTimeout(()=>I(e=>e===t?null:e),1800)}},maxLength:Ye.maxLength??Ge.maxLength}};if(x===`tagify`)return(0,l.jsx)(s.Select,{value:a,allowClear:!0,disabled:Ne,mode:`tags`,placeholder:We,onChange:qe});if(x===`location`)return(0,l.jsx)(s.Select,{value:a,allowClear:!0,showSearch:!0,filterOption:!1,disabled:Ne,loading:T,mode:q,options:Ve,placeholder:We,notFoundContent:T?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:O,onFocus:()=>O(e=>e),onChange:qe});if(x===`select`){let t=e.dataSource===`lookup`,o=e.dataSource===`master`,c=t||o,u=n.nn(e),d=n.tn(e,a,Ve),f=J&&!X?d==null||d===``?void 0:Array.isArray(d)?d:[d]:d;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Select,{value:f,allowClear:!0,disabled:Ne,loading:T,labelInValue:u||void 0,showSearch:e.showSearch!==!1,optionFilterProp:`label`,filterOption:!c&&void 0,mode:Y,tokenSeparators:He,options:Ve,placeholder:We,notFoundContent:T?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:t?A:o?M:void 0,onChange:t=>{let a=J&&!X&&Array.isArray(t)?t.length?t[t.length-1]:void 0:t;if(qe(a),(e.clearGroupOnChange||e.linkedClearField)&&n.x(r,e,i,b),e.autofillFrom?.length){let t=a&&!Array.isArray(a)&&typeof a==`object`?a.value:a,o=Array.isArray(i)&&i.length>=3&&typeof i[1]==`number`;if(a==null)e.autofillFrom.forEach(({targetField:e})=>{let t=o?[...i.slice(0,2),...n.Mt(e)]:n.Mt(e);r.setFieldValue(t,null)});else if(z.current.length>0){let a=e.valueField??`_id`,s=z.current.find(e=>Pp(e,a)===t||e._id===t||e.id===t||e.value===t);s&&e.autofillFrom.forEach(({optionKey:e,targetField:t})=>{let a=Pp(s,e)??s.extraData?.[e]??null,c=o?[...i.slice(0,2),...n.Mt(t)]:n.Mt(t);r.setFieldValue(c,a)})}}},popupRender:Je.footer?e=>(0,l.jsxs)(l.Fragment,{children:[e,Je.footer]}):void 0}),Je.modal]})}if(x===`radio`)return(0,l.jsx)(s.Radio.Group,{value:a,disabled:Ne,options:Ve,onChange:e=>qe(e.target.value)});if(x===`checkbox`)return Ve.length>0?(0,l.jsx)(s.Checkbox.Group,{value:a,disabled:Ne,options:Ve,onChange:qe}):(0,l.jsx)(s.Checkbox,{checked:u,disabled:Ne,onChange:t=>{let n=t.target.checked;if(!(n&&_?.(e))&&(qe(n),n&&v?.(e,i),e.linkedClearField&&n)){let t=Array.isArray(i)&&i.length>1?[...i.slice(0,-1),e.linkedClearField]:[e.linkedClearField];r.setFieldValue(t,null)}},children:e.checkboxLabel??e.label});if(x===`text-editor`)return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.Tn,{value:a??m??``,disabled:Ne,placeholder:We,onChange:e=>{if(Ye){let{error:t}=n.Ct(e,Ye,`change`);I(t)}qe(e)}}),F&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:F})]});if(x===`textarea`)return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(gp,{...Xe,rows:e.rows??3,className:`v1-scroll-textarea`}),F&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:F})]});if(x===`date`)return(0,l.jsx)(s.DatePicker,{value:a,disabled:Ne,placeholder:We,style:{width:`100%`},suffixIcon:(0,l.jsx)(c.CalendarOutlined,{}),disabledDate:Qp(e,r,i),defaultPickerValue:$p(e),onChange:t=>{qe(t),v?.(e,i)}});if(x===`time`)return(0,l.jsx)(s.TimePicker,{value:a,disabled:Ne,placeholder:We,style:{width:`100%`},onChange:e=>qe(e)});if(x===`file`){let t=e.validations??e.validation??e.rules??[],r=t.find(e=>(typeof e==`string`?e:e?.type)===`fileType`),i=t.find(e=>(typeof e==`string`?e:e?.type)===`fileSize`),o=t.find(e=>(typeof e==`string`?e:e?.type)===`maxFiles`),u=n.mt(e),d=u?u.exts.map(e=>`.${e}`).join(`,`):r?.value?r.value.split(`,`).map(e=>`.${e.trim().replace(/^\./,``)}`).join(`,`):void 0,m=i?Number(i?.value??5):void 0,h=o?Number(o?.value??1):wp(e.multiple)?e.maxCount??5:1,_=Array.isArray(a)?a:[],v=_.length<h,y=e=>e?e<1048576?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(2)} MB`:``,b=e=>{let t=String(e??``).split(`.`).pop()?.toLowerCase();return t===`pdf`?(0,l.jsx)(c.FilePdfOutlined,{className:`v1-file-type-icon v1-file-icon-pdf`}):[`doc`,`docx`].includes(t)?(0,l.jsx)(c.FileWordOutlined,{className:`v1-file-type-icon v1-file-icon-word`}):[`xls`,`xlsx`,`csv`].includes(t)?(0,l.jsx)(c.FileExcelOutlined,{className:`v1-file-type-icon v1-file-icon-excel`}):[`jpg`,`jpeg`,`png`,`gif`,`svg`,`webp`].includes(t)?(0,l.jsx)(c.FileImageOutlined,{className:`v1-file-type-icon v1-file-icon-image`}):(0,l.jsx)(c.FileOutlined,{className:`v1-file-type-icon v1-file-icon-default`})},x=e=>{qe(_.filter((t,n)=>n!==e))},S=async(t,r)=>{let i=[];if(_.some(e=>!(e?.originFileObj instanceof File))&&f&&p&&e?.field)try{let t=await n._n(f,p,e.field);i=Array.isArray(t?.data)?t.data:[]}catch(e){console.warn(`Unable to resolve presigned document URL:`,e)}let a=e=>String(e??``).split(`?`)[0].split(`#`)[0].split(`/`).pop()?.toLowerCase()??``,o=_.map((e,t)=>{if(e?.originFileObj instanceof File)return{url:URL.createObjectURL(e.originFileObj),name:e.name??e.originFileObj.name??`file`,type:e.originFileObj.type||void 0};let r=a(e?.name??e?.fileName??e?.originalName??e?.url??e?.location),o=i.find(e=>{let t=a(e?.fileName??e?.name??e?.uploadedFileName??e?.originalName??e?.fileUrl??e?.url);return r&&t&&r===t})??i[t]??(_.length===1?i[0]:null),s=o?.fileUrl??o?.downloadUrl??o?.signedUrl??o?.url??e?.fileUrl??e?.downloadUrl??e?.signedUrl??e?.url??e?.thumbUrl??``;return s&&!s.startsWith(`http`)&&!s.startsWith(`blob:`)&&(s=n.Lt(s)),{url:s,name:o?.fileName??o?.name??e?.name??`file`,type:o?.mimeType??o?.contentType??e?.type??void 0}}).filter(e=>e.url);if(!o.length){s.message.error(`Unable to resolve a preview URL for this document.`);return}let c=Math.min(r??0,o.length-1);P({open:!0,docs:o,index:c})},C=h>1,w=h-_.length,T=[u?u.hint:d?d.split(`,`).map(e=>e.replace(`.`,``).toUpperCase()).join(`, `):null,m?`up to ${m} MB`:null].filter(Boolean).join(` `),E=C&&_.length>0?[T,`${w} of ${h} remaining`].filter(Boolean).join(` • `):T,D=_.length>0?`Add ${C?`more files`:`file`}`:e.buttonLabel??`Upload ${e.label??`File`}`,O=e=>{if(_.length>=h)return s.Upload.LIST_IGNORE;if(d){let t=(e.name.split(`.`).pop()??``).toLowerCase();if(!d.split(`,`).map(e=>e.replace(/^\./,``).toLowerCase()).includes(t))return s.message.error(u?u.error:r?.message??`Only ${r.value} files are allowed`),s.Upload.LIST_IGNORE}return m!==void 0&&e.size/1024/1024>m&&(s.message.error(i?.message??`File must be smaller than ${m} MB`),s.Upload.LIST_IGNORE)},k=({fileList:e})=>{let t=e.slice(0,h);if(qe(t),g&&t.length>_.length){let e=t[t.length-1];e?.originFileObj&&g(e.originFileObj)}},A={accept:d,fileList:_,showUploadList:!1,multiple:!0,maxCount:h,beforeUpload:O,onChange:k,disabled:Ne},j=_.map((e,t)=>(0,l.jsxs)(`div`,{className:`v1-file-item`,children:[(0,l.jsx)(`div`,{className:`v1-file-item-icon`,children:b(e.name)}),(0,l.jsxs)(`div`,{className:`v1-file-item-info`,children:[(0,l.jsx)(`span`,{className:`v1-file-item-name`,title:e.name,children:e.name}),(0,l.jsx)(`span`,{className:`v1-file-item-meta`,children:e.existing?`Previously uploaded`:`${y(e.size)}${e.size?` • `:``}Uploaded just now`})]}),(0,l.jsxs)(s.Space,{size:6,className:`v1-file-item-actions`,children:[(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),onClick:()=>S(e,t),className:`v1-file-view-btn`,children:`View`}),(0,l.jsx)(s.Button,{size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>x(t),className:`v1-file-delete-btn`})]})]},e.uid??t)),M=(0,l.jsx)(n.wn,{documents:N.docs,open:N.open,onClose:()=>P(e=>({...e,open:!1})),initialIndex:N.index});if(C){let t=_.length>0?`Upload more ${e.label??`files`}`:e.buttonLabel??`Upload ${e.label??`File`}`;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[v&&(0,l.jsx)(s.Upload,{...A,style:{width:`100%`,display:`block`},children:(0,l.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-center${Ne?` v1-upload-dropzone-disabled`:``}`,children:[(0,l.jsxs)(`div`,{className:`v1-upload-dropzone-title-row`,children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`v1-upload-cloud-icon v1-upload-cloud-icon-sm`}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-title v1-upload-dropzone-title-blue`,children:t})]}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:`Drag & drop or click to upload`}),T&&(0,l.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:T})]})}),_.length>0&&(0,l.jsx)(`div`,{className:`v1-file-grid`,children:j}),v&&_.length>0&&(0,l.jsx)(s.Upload,{...A,style:{display:`inline-block`},children:(0,l.jsx)(s.Button,{type:`link`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),className:`v1-add-more-files-btn`,children:`Add more files`})})]}),M]})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[_.length>0&&(0,l.jsx)(`div`,{className:`v1-file-rows-single`,children:j}),v&&(0,l.jsx)(s.Upload,{accept:d,fileList:_,showUploadList:!1,multiple:!1,maxCount:1,beforeUpload:O,onChange:k,disabled:Ne,style:{width:`100%`,display:`block`},children:(0,l.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-single${Ne?` v1-upload-dropzone-disabled`:``}`,children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`v1-upload-cloud-icon`}),(0,l.jsx)(`span`,{className:`v1-upload-dropzone-title`,children:D}),E&&(0,l.jsxs)(`span`,{className:`v1-upload-dropzone-sub`,children:[`— `,E]})]})})]}),M]})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Input,{...Xe,type:x===`number`?`number`:x,...x===`number`&&wp(e.decimal)?{step:`any`}:{},...e.suffix?{suffix:e.suffix}:{}}),F&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:F})]})}function nm({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(hp,{strong:!0,className:`v1-section-label`,children:t})]})}function rm(e){let t=e?.helpText,n=(Array.isArray(t)?t:[t]).map(e=>e==null?``:String(e).trim()).filter(Boolean);if(n.length)return(0,l.jsx)(`span`,{className:`v1-field-help-text`,children:n.map((e,t)=>(0,l.jsx)(hp,{type:`secondary`,className:`v1-field-help-line`,children:e},t))})}function im({moduleName:e,groupName:r,recordId:i,authToken:u,clientId:f,region:p,breadcrumbItems:m=[],submitText:h=`Update`,cancelPath:g,onSuccess:_,fieldNameMap:v={},onFileUpload:y=null,onBeforeSubmit:b=null,extraPayload:x=null,embedded:S=!1,onCancel:C=null}){let w=(0,d.useNavigate)(),T=(0,d.useLocation)(),[E]=s.Form.useForm(),D=`v1-form-scope-${(0,o.useId)().replace(/[^a-zA-Z0-9_-]/g,``)}`,O=()=>document.querySelector(`.${D}`)??document;(0,o.useEffect)(()=>(u&&t.g(u),()=>{u&&t.r()}),[u]);let[k,A]=(0,o.useState)({}),[j,M]=(0,o.useState)([]),[N,P]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!e||!i){P([]);return}let t=!1;return n._n(e,i).then(e=>{t||P(Array.isArray(e)?e:e?.data??[])}).catch(()=>{t||P([])}),()=>{t=!0}},[e,i]);let[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)(``),[z,B]=(0,o.useState)(!1),[V,ee]=(0,o.useState)(``),[te,ne]=(0,o.useState)(null),[re,ie]=(0,o.useState)(()=>new Map),[H,ae]=(0,o.useState)(``),oe=f||H,[se,ce]=(0,o.useState)({});(0,o.useEffect)(()=>{n.Vn()},[]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){ne(null);return}n.zr({roleId:localStorage.getItem(`roleId`)},e,{clientId:oe,region:p}).then(e=>{t||ne(Array.isArray(e)&&e.length?e:null)}).catch(()=>{t||ne(null)})}}),()=>{t=!0}},[e,oe,p]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){ie(new Map);return}n.Lr(e).then(e=>{t||ie(n.Yr(e))}).catch(()=>{t||ie(new Map)})}}),()=>{t=!0}},[e]);let U=(0,o.useMemo)(()=>Rp(j,e,te,re),[j,e,te,re]),le=(0,o.useCallback)(async(e,t)=>{if(!Array.isArray(t)||t.length<3||typeof t[1]!=`number`)return;let r=t[0],i=t[1],a=U.find(e=>e.name===r);if(!a)return;let o=n.A(a,n.Bn().region);if(!o.orderBy)return;await Promise.resolve();let s=E.getFieldValue(r);Array.isArray(s)&&await n.k({group:o,rows:s,rowIndex:i,move:_e.current[r]?.move,confirm:({title:e,body:t,okText:r,cancelText:i,from:a,to:o})=>n.Vt({tone:`suggestion`,title:e,facts:[{label:`This entry is at`,value:`Row ${a+1}`},{label:`It belongs at`,value:`Row ${o+1}`}],body:t,okText:r,cancelText:i})})},[U,E]),ue=(0,o.useCallback)(e=>{let t=n.Bn().region,r=U.find(t=>(t.fields??[]).some(t=>t.field===e.field));if(!r)return!1;let i=n.A(r,t),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(e.field!==a||n.w(i))return!1;let o=n.T(i);return n.Ht({tone:o?`duplicate`:`overwrite`,title:o?`This has to be completed first`:`You can add this, but they cannot be submitted`,facts:[{label:`Region`,value:t||`Common`},{label:`Entry`,value:r.label??r.name}],body:n.E(i),okText:o?`Got it`:`Keep it anyway`}),o},[U]),de=(0,o.useCallback)((e,t)=>{let r=U.find(e=>e.name===t);if(!r)return;let i=n.A(r,n.Bn().region),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(e.field!==a)return;let o=n.S(i);return o?[o]:void 0},[U]),[fe,pe]=(0,o.useState)(0),W=(0,o.useMemo)(()=>n.bt({checkFieldUnique:n.gt,onPendingChange:pe}),[]),me=(0,o.useMemo)(()=>({checker:W,module:e,recordId:i,clientId:oe||void 0,region:p||void 0}),[W,e,i,oe,p]),he=(0,o.useMemo)(()=>n.yt(U),[U]),ge=(0,o.useMemo)(()=>n.Ut(U),[U]),_e=(0,o.useRef)({}),G=n.kt({form:E,groups:U,module:e}),K=(0,o.useMemo)(()=>{let e={};return U.forEach(t=>{t.addRow&&(e[t.name]=n.jt(t))}),n.Gt(ge,e)},[U,ge]),ve={jobs:{list:`Jobs`,path:`/jobs`,edit:`Edit Job`},candidates:{list:`Candidates`,path:`/candidates`,edit:`Edit Candidate`},submissions:{list:`Submissions`,path:`/submissions`,edit:`Edit Submission`}},ye=S?[]:m.length>0?m:(()=>{let t=ve[Op(e)];return t?[{label:`Home`,href:`/`},{label:t.list,href:t.path},{label:t.edit}]:[]})();(0,o.useEffect)(()=>{if(!e||!i)return;let t=!1;async function n(){try{I(!0),R(``),ee(``);let n=await a.r({module:e,id:i,clientId:oe,region:p,group:r});if(t)return;if(M(Array.isArray(n)?n:[]),ce(n?.recordMeta??{}),!f){let e=n?.recordMeta??{},r=e=>e&&typeof e==`object`?e.id??e.value??``:e??``,i=String(r(e.clientId)||``),o=String(r(e.jobId)||``);if(!i&&o)try{let e=await a.r({module:`jobs`,id:o});i=String(r(e?.recordMeta?.clientId)||``)}catch{}!t&&i&&i!==H&&ae(i)}}catch(n){console.error(`Failed to fetch ${e} edit data:`,n),t||R(n?.message||`Failed to load record`)}finally{t||I(!1)}}return n(),()=>{t=!0}},[e,r,i,f,oe,H,p]),(0,o.useEffect)(()=>{F||U.length===0||n.At(E,U)},[F,U,E]),(0,o.useEffect)(()=>{if(F||U.length===0||N.length===0)return;let e=new Map;N.forEach(t=>{let n=t?.fieldName||t?.field;n&&(e.has(n)||e.set(n,[]),e.get(n).push(t))});let t={},r=!1;U.forEach(i=>{wp(i.addRow)||(i.fields??[]).forEach(i=>{if(!i?.field||!n.Qt(i))return;let a=E.getFieldValue(n.Mt(i.field));if(Array.isArray(a)?a.length>0:!Ep(a))return;let o=e.get(i.field)??(i.fileKey?e.get(i.fileKey):null);if(!o?.length)return;let s=wp(i.multiple)?Number(i.maxCount??5):1;n.Nt(t,i.field,o.slice(0,s).map(e=>({uid:String(e._id??e.s3Key??e.fileName),name:e.fileName??e.uniqueName??`file`,status:`done`,url:e.fileUrl??e.s3Key??``,existing:!0,stored:e}))),r=!0})}),r&&E.setFieldsValue(t)},[F,U,N,E]);let be=T.state?.carryFiles;(0,o.useEffect)(()=>{if(F||!be)return;let e=Object.entries(be).filter(([,e])=>Array.isArray(e)&&e.length>0);e.length&&(E.setFieldsValue(Object.fromEntries(e)),s.message.info(`The résumé you uploaded has been attached here — save to keep it.`),w(T.pathname+T.search,{replace:!0,state:{...T.state??{},carryFiles:null}}))},[F,be,E,w,T.pathname,T.search,T.state]);let xe=(0,o.useMemo)(()=>n.q(U.map(e=>({...e,fields:(e.fields??[]).filter(n.Z)})),Op),[U]),[Se,Ce]=(0,o.useState)({});(0,o.useEffect)(()=>{if(xe.length===0)return;let e=!1;return xe.forEach(async t=>{let r=n.J(t,se);if(r)try{let i=await a.r({module:t,id:r}),o=n.X(n.Y(i));!e&&Object.keys(o).length>0&&Ce(e=>({...e,[t]:o}))}catch(e){console.error(`Carrier prefill fetch failed for ${t}:`,e)}}),()=>{e=!0}},[xe,se]),(0,o.useEffect)(()=>{if(F||U.length===0||Object.keys(Se).length===0)return;let e={},t=!1;U.forEach(r=>(r.fields??[]).forEach(r=>{if(!r.field||!r.prefillFromModule||!n.Z(r))return;let i=Se[Op(r.prefillFromModule)],a=n.Q(i,r);a!=null&&(n.Nt(e,r.field,a),t=!0)})),t&&E.setFieldsValue(e)},[Se,F,U,E]);let we=e=>{A(t=>({...t,[e]:!t[e]}))},Te=(0,o.useMemo)(()=>U.map(e=>`${e.name}:${+!!wp(e.allowCollapse)}${+!!wp(e.defaultCollapsed)}`).join(`|`),[U]),Ee=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!U.length||Ee.current===Te)return;Ee.current=Te;let e={};U.forEach((t,n)=>{let r=t.name??t.id??String(n);wp(t.allowCollapse)&&wp(t.defaultCollapsed)&&(e[r]=!0)}),A(e)},[Te,U]);function De(t){let r=n.qt(t,U,{module:e});return Object.entries(v).forEach(([e,t])=>{r[e]!==void 0&&(r[t]=r[e],delete r[e])}),r}async function Oe(t){if(!(b&&await Promise.resolve().then(()=>b(t)).catch(()=>!1)===!1))try{B(!0),ee(``);let r=n.Yt(t,U,{indexed:!0,module:e});if(y&&y.useLegacyUpload){let e=U.flatMap(e=>e.fields??[]).filter(n.Qt);for(let n of e){let e=t[n.field];if(!Array.isArray(e))continue;let r=e.filter(e=>e.originFileObj instanceof File);try{await Promise.all(r.map(e=>y(n.field,e.originFileObj,i)))}catch(e){console.warn(`File upload failed — continuing with save:`,e)}}}await n.gn(e,i,{...De(t),...x??{}},y?.useLegacyUpload?[]:r);let a=n.Yt(t,U,{module:e});if(!y?.useLegacyUpload&&a.length>0)try{await n.vn(e,i,a)}catch(e){console.error(`Document registry upload failed during edit:`,e),s.message.warning(`Changes saved, but saving document records failed.`)}let o=n.d(U,e,`edit`);if(o&&s.message.success(o),_)_(i,t);else{let e=n.M(U);if(!e)n.j(w,{cancelPath:g});else if(e.mode===`back`)n.j(w,{cancelPath:g});else if(e.mode===`route`||e.mode===`detail`){let r=n.N(e.target,i,t);r?w(r):n.j(w,{cancelPath:g})}}}catch(t){if(console.error(`Failed to update ${e}:`,t),ke(t))return;let r=n.u(U,e,`edit`,t?.message);ee(r),s.message.error(r)}finally{B(!1)}}function ke(e){let t=n.xt(e,{uniqueRules:he});return t.length!==0&&(E.setFields(t.map(e=>({name:e.name??e.field,errors:[e.message]}))),A({}),n.l({errorFields:t.map(e=>{let t=e.name??e.field;return{name:Array.isArray(t)?t:[t],errors:[e.message]}})},E,{root:O()}),!0)}let Ae=e=>{A({}),n.l(e,E,{root:O()})},[je,Me]=(0,o.useState)({}),Ne=e=>String(e?.field??``),Pe=(e,t)=>typeof e==`function`?e(t):e,Fe=(e,t,n)=>{if(!e?.field)return!0;let r=Pe(n,e.field),i=t(r==null?[e.field]:[...Array.isArray(r)?r:[r],e.field]);switch(e.operator){case`eq`:return String(i??``)===String(e.value??``);case`neq`:return String(i??``)!==String(e.value??``);case`truthy`:return i!=null&&i!==``&&i!==!1;case`falsy`:return i==null||i===``||i===!1;case`notEmpty`:return Array.isArray(i)?i.length>0:!!i;case`in`:return String(e.value??``).split(`,`).map(e=>e.trim()).includes(String(i??``));case`notIn`:return!String(e.value??``).split(`,`).map(e=>e.trim()).includes(String(i??``));default:return!0}},Ie=(e,t,n)=>{if(!e)return!0;let r=Array.isArray(e.conditions)?e.conditions.filter(e=>e?.field):[];if(r.length){let i=r.map(e=>Fe(e,t,n)),a=String(e.logic??`and`).toLowerCase()===`or`,o=a?i.some(Boolean):i.every(Boolean);if(e.field){let r=Fe(e,t,n);o=a?o||r:o&&r}return o}return Fe(e,t,n)},Le=e=>!!(e?.field||e?.conditions?.some?.(e=>e?.field)),Re=(t,r,a,c={})=>{let u=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):null,d=u??t.field,p=r===void 0?d:[r,...u??[t.field]],m=a!==void 0&&r!==void 0?[...Array.isArray(a)?a:[a],...Array.isArray(p)?p:[p]]:p,h=t.type===`checkbox`&&(t.options&&t.options.length>0||t.dataSource&&t.dataSource!==`static`),g=!h&&t.type===`checkbox`?`checked`:`value`,_=!!t.editablePermission&&!n.F(t.editablePermission,e),v=a!==void 0&&r!==void 0?[...Array.isArray(a)?a:[a],r]:null,y=e=>v&&(!c.rowFieldKeys||c.rowFieldKeys.has(e))?v:null,b=n.rn(t),x=b?n.in(t,m,y):null,S=c.inline||c.hideLabel||!h&&t.type===`checkbox`?``:(0,l.jsx)(yp,{form:E,field:t,siblingPrefix:t.labelWhen?.field?y(t.labelWhen.field):v,locked:_}),C=b&&S?(0,l.jsxs)(`span`,{className:`v1-label-with-override`,children:[S,(0,l.jsx)(n.K,{form:E,field:t,flagPath:x,fieldPath:m,disabled:_})]}):S,w=c.inline||t.type===`text-editor`||t.type===`file`&&wp(t.multiple)?24:t.col??12,T=Yp(t,m,y),D=n.R(t),O=c.inline?{flex:`${Number(t.combineWidth)>0?Number(t.combineWidth):1} 1 0`,maxWidth:`none`}:void 0,k=(t.aiActions||[]).filter(e=>e.trigger===`click`),A=(t.aiActions||[]).find(e=>e.trigger===`upload`),j=(0,l.jsx)(s.Form.Item,{label:C,name:p,extra:rm(t),required:qp(t),rules:Jp(t,E,m,!1,y,me,de(t,c.groupNameForActions)),dependencies:T,valuePropName:g,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(tm,{field:t,form:E,name:m,rowFieldKeys:c.rowFieldKeys,moduleName:e,recordId:i,initialValue:t.value,scopeValues:{clientId:f},onAiUpload:A?e=>G.runAction(c.groupNameForActions,t,A,e):void 0,formDisabled:G.busy,onRegionBlocked:ue,onRowOrderChange:le})}),M=D&&!C?(0,l.jsx)(s.Tooltip,{title:D,children:(0,l.jsx)(`span`,{className:`v1-field-tooltip-wrap`,children:j})}):j,N=k.length>0?(()=>{let e=n.Ot(k),r=r=>(0,l.jsx)(n.Dt,{position:r,actions:e[r],aiActions:G,groupName:c.groupNameForActions,field:t},r);return(0,l.jsxs)(`div`,{className:`v1-ai-action-wrap`,children:[r(`top-left`),r(`top-center`),r(`top-right`),M,r(`bottom-left`),r(`bottom-center`),r(`bottom-right`)]})})():M,P=e=>r===void 0?e:[r,e],F=t.verifyAction?(0,l.jsxs)(l.Fragment,{children:[t.verifyResultField&&(0,l.jsx)(s.Form.Item,{name:P(t.verifyResultField),hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})}),t.verifyTimestampField&&(0,l.jsx)(s.Form.Item,{name:P(t.verifyTimestampField),hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})})]}):null,I=t.verifyAction?(0,l.jsxs)(`div`,{className:`v1-verify-field-row`,children:[N,(0,l.jsx)(vp,{form:E,field:t,absoluteName:m}),F]}):N,L=b?(0,l.jsxs)(l.Fragment,{children:[I,(0,l.jsx)(s.Form.Item,{name:r===void 0?x[x.length-1]:[r,x[x.length-1]],valuePropName:`checked`,hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Checkbox,{})})]}):I,R=t.prefillWhen?.length?(0,l.jsx)(xp,{form:E,rules:t.prefillWhen,watchPaths:n.W(t.prefillWhen,m,n.ot,y),targetPath:m,resetOnNoMatch:t.prefillWhenReset!==!1},`${t.field}-prefillWhen`):null,z=!c.inline&&n.n(t).length>0,B=e=>z?n.s(t,w,t=>e(n.r(t,y(t.field)))):w;return Le(t.showIf)||z?(0,l.jsxs)(o.default.Fragment,{children:[R,(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>!Le(t.showIf)||Ie(t.showIf,e,y)?(0,l.jsx)(s.Col,{xs:24,md:B(e),style:O,className:c.inline?`v1-combine-cell`:void 0,children:L}):null})]},t.field):(0,l.jsxs)(o.default.Fragment,{children:[R,(0,l.jsx)(s.Col,{xs:24,md:w,style:O,className:c.inline?`v1-combine-cell`:void 0,children:L})]},t.field)},ze=t=>{let r=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],a=!!t.editablePermission&&!n.F(t.editablePermission,e),o=(0,l.jsx)(Fp,{field:t,label:t.label,locked:a}),u=n.en(t),d=Array.isArray(t.subFields)&&t.subFields.length>0,p=d?t.subFields.map(e=>({...e,show:1,edit:1})):null,m=Math.max(0,Number(t.minRows??0)||0),h=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,g=n.Jt(t,t.value);return(0,l.jsx)(s.Col,{xs:24,md:24,children:(0,l.jsx)(s.Form.Item,{label:o,required:qp(t),colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.List,{name:r,initialValue:g,rules:[{validator:async(e,n=[])=>{if(qp(t)&&!(d?n.some(e=>Dp(e)):n.some(e=>e!=null&&e!==``&&!(Array.isArray(e)&&e.length===0))))throw Error(`Mandatory Field`);if(m>0&&n.length<m)throw Error(`Keep at least ${m} ${d?`row`:`value`}${m>1?`s`:``}.`)}}],children:(n,{add:a,remove:o},{errors:g})=>(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[n.map(({key:a,name:h})=>(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>o(h),disabled:n.length<=m,className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:d?(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:q(p,h,r[0],!1,t.field)}):(0,l.jsx)(s.Form.Item,{name:[h],noStyle:!0,valuePropName:t.type===`checkbox`&&!t.options?.length?`checked`:`value`,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,rules:Jp(u,E,[...r,h],!1),children:(0,l.jsx)(tm,{field:u,form:E,name:[...r,h],moduleName:e,recordId:i,scopeValues:{clientId:f},formDisabled:G.busy,onRegionBlocked:ue,onRowOrderChange:le})})})]},a)),(!h||n.length<h)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>a(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,l.jsx)(s.Form.ErrorList,{errors:g})]})})})},t.field)},Be=(t,r,a)=>{let o=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],u=!!t.editablePermission&&!n.F(t.editablePermission,e),d=(0,l.jsx)(Fp,{field:t,label:t.label,locked:u}),p=n.en(t),m=Array.isArray(t.subFields)&&t.subFields.length>0,h=m?t.subFields.map(e=>({...e,show:1,edit:1})):null,g=Math.max(0,Number(t.minRows??0)||0),_=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,v=[r,...o],y=[...Array.isArray(a)?a:[a],r,...o],b=n.Jt(t,void 0);return(0,l.jsx)(s.Col,{xs:24,md:m?24:t.col??24,children:(0,l.jsx)(s.Form.Item,{label:d,required:qp(t),colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.List,{name:v,initialValue:b,rules:m?[{validator:async(e,n=[])=>{if(qp(t)&&!n.some(e=>Dp(e)))throw Error(`Mandatory Field`);if(g>0&&n.length<g)throw Error(`Keep at least ${g} row${g>1?`s`:``}.`)}}]:[],children:(n,{add:r,remove:a},{errors:o})=>(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[n.map(({key:r,name:o})=>{let u=[...y,o];return(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>a(o),disabled:n.length<=g,className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:m?(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:q(h,o,y,!1,t.field)}):(0,l.jsx)(s.Form.Item,{name:[o],noStyle:!0,valuePropName:t.type===`checkbox`&&!t.options?.length?`checked`:`value`,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,rules:Jp(p,E,u,!1),children:(0,l.jsx)(tm,{field:p,form:E,name:u,moduleName:e,recordId:i,scopeValues:{clientId:f},formDisabled:G.busy,onRegionBlocked:ue,onRowOrderChange:le})})})]},r)}),(!_||n.length<_)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>r(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,l.jsx)(s.Form.ErrorList,{errors:o})]})})})},`${a}-${r}-${t.field}`)},Ve=(e,t)=>e.filter(e=>e.field&&e.show!==void 0&&!wp(e.show)).map(e=>{let n=String(e.field).includes(`.`)?String(e.field).split(`.`):e.field,r=t===void 0?n:[t,...Array.isArray(n)?n:[n]];return(0,l.jsx)(s.Form.Item,{name:r,hidden:!0,noStyle:!0,children:(0,l.jsx)(s.Input,{})},`hidden-${e.field}`)}),q=(e,t,r,i=!1,a)=>{let o=new Set,c=[],u=new Set(e.map(e=>e.field).filter(Boolean)),d=e.filter(e=>e.show===void 0||wp(e.show));return c.push(...Ve(e,t)),d.forEach(e=>{if(wp(e.addRow)&&t===void 0){c.push(ze(e));return}if(wp(e.addRow)&&t!==void 0){c.push(Be(e,t,r));return}let f=e.combineKey?.trim?.();if(!f){c.push(Re(e,t,r,{hideLabel:i,groupNameForActions:a,rowFieldKeys:u}));return}let p=`${r??`root`}:${t??`root`}:${f}`;if(o.has(p))return;let m=d.filter(e=>e.combineKey===f);m.forEach(e=>o.add(`${r??`root`}:${t??`root`}:${e.combineKey}`));let h=m.find(e=>e.combineLabel)??e,g=r!==void 0&&t!==void 0?[...Array.isArray(r)?r:[r],t]:null,_=m.find(e=>n.rn(e))??null,v=e=>g&&(!u||u.has(e))?g:null,y=_?r!==void 0&&t!==void 0?[...Array.isArray(r)?r:[r],t,...String(_.field).includes(`.`)?String(_.field).split(`.`):[_.field]]:String(_.field).includes(`.`)?String(_.field).split(`.`):_.field:null,b=(0,l.jsx)(yp,{form:E,field:h,siblingPrefix:g,combined:!0}),x=_?(0,l.jsxs)(`span`,{className:`v1-label-with-override`,children:[b,(0,l.jsx)(n.K,{form:E,field:_,flagPath:n.in(_,y,v),fieldPath:y})]}):b,S=m.find(e=>e.combineToggleTarget)?.combineToggleTarget,C=m.find(e=>e.combineToggleLabel)?.combineToggleLabel??`Show range`,w=m.some(e=>wp(e.combineWrap)),T=Number(m.find(e=>[12,24].includes(Number(e.combineSpan)))?.combineSpan),D=S?m.find(e=>Ne(e)===S):null,O=D?.field?.includes?.(`.`)?D.field.split(`.`):[D?.field].filter(Boolean),k=D?r!==void 0&&t!==void 0?[r,t,...O]:O.length>1?O:D.field:null,A=m.some(e=>qp(e)),j=[12,24].includes(T)?T:m.length>=3?24:12,M=e=>g&&(!u||u.has(e))?g:null,N=m.some(e=>Le(e.showIf)),P=e=>m.some(t=>!Le(t.showIf)||Ie(t.showIf,e,M)),F=(0,l.jsx)(s.Col,{xs:24,md:j,children:(0,l.jsx)(s.Form.Item,{label:x,required:A,colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{let n=k?!Ep(e(k)):!1,i=je[p]??n,a=S&&!i?m.filter(e=>Ne(e)!==S):m;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Row,{gutter:[8,0],align:`top`,wrap:w,className:`v1-combine-row${w?` v1-combine-row-wrap`:``}`,children:a.map(e=>Re(A?{...e,req:1}:e,t,r,{inline:!0}))}),S&&(0,l.jsxs)(`div`,{className:`v1-combine-range`,children:[(0,l.jsx)(s.Switch,{size:`small`,checked:i,onChange:e=>{!e&&k&&(E.setFieldValue(k,void 0),E.validateFields([k]).catch(()=>{})),Me(t=>({...t,[p]:e}))}}),(0,l.jsx)(hp,{type:`secondary`,className:`v1-combine-toggle-label`,children:C})]})]})}})})},p);c.push(N?(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>P(e)?F:null},p):F)}),c},J=e=>{let t=e.name??e.id??``,r=n.Wt(ge,t),i=!!r&&r.leaderName!==t,a=r?U.find(e=>e.name===r.leaderName)??e:e,o=Math.max(0,Number(a.minRows??0)||0),u=Math.max(0,Number(a.maxRows??0)||0),d=r?r.memberNames:[t],f=()=>{d.forEach(t=>{let r=U.find(e=>e.name===t)??e;_e.current[t]?.add(n.$t(r,{editing:!0}))})},p=e=>{d.forEach(t=>_e.current[t]?.remove(e))};return e.addRow?(0,l.jsx)(s.Form.List,{name:t,initialValue:K[e.name]??[],rules:i?[]:[{validator:async(t,n=[])=>{if(!(wp(e.toggleEnabled)&&e.toggleField&&E.getFieldValue(e.toggleField))){if(o>0&&n.length<o)throw Error(`Keep at least ${o} row${o>1?`s`:``}.`);if(wp(e.requireOne)&&n.some(e=>!Dp(e)))throw Error(`Fill at least one field in each added row.`)}}}],children:(n,{add:r,remove:d,move:m},{errors:h})=>(_e.current[t]={add:r,remove:d,move:m},(0,l.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[(0,l.jsx)(`div`,{className:`v1-addrow-topbar`,children:i?(0,l.jsxs)(hp,{type:`secondary`,className:`v1-addrow-linked-hint`,children:[`Rows added via `,a.label??a.name]}):(!u||n.length<u)&&(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:f,className:`v1-addrow-add-btn`,children:e.addLabel??`Add ${e.label??`Row`}`})}),wp(e.sharedRowLabels)&&n.length>0&&(0,l.jsx)(s.Row,{gutter:[24,0],className:`v1-addrow-header`,children:e.fields.filter(e=>e.show===void 0||wp(e.show)).map(e=>(0,l.jsx)(s.Col,{md:e.col??12,className:`v1-addrow-header-label`,children:e.label},Ne(e)))}),n.map(({key:r,name:i})=>(0,l.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),disabled:n.length<=o,onClick:()=>p(i),className:`v1-addrow-delete-btn`}),(0,l.jsx)(`div`,{className:`v1-addrow-fields`,children:(0,l.jsx)(s.Row,{gutter:[24,0],align:`top`,children:q(e.fields,i,t,wp(e.sharedRowLabels),t)})})]},r)),(0,l.jsx)(s.Form.ErrorList,{errors:h})]}))}):(0,l.jsx)(s.Row,{gutter:[24,0],children:q(e.fields,void 0,void 0,!1,t)})},Y=e=>U.filter(t=>t!==e&&t.mergeInto&&String(t.mergeInto)===String(e.name)),X=e=>!!(e.mergeInto&&U.some(t=>t!==e&&String(t.name)===String(e.mergeInto))),He=(e,t)=>Y(e).filter(e=>String(e.mergePosition??`bottom`)===t),Ue=(e,t)=>{let n=e.name??e.id??String(t),r=J(e),i=He(e,`top`),a=He(e,`bottom`),o=e=>{let t=(0,l.jsxs)(`div`,{className:`v1-merged-group`,children:[(0,l.jsx)(`div`,{className:`v1-merged-group-title`,children:e.label??e.name}),J(e)]},e.name),n=e.showIf?.field?(0,l.jsx)(Np,{form:E,showIf:e.showIf,render:()=>t},e.name):t;return(0,l.jsx)(Mp,{form:E,group:e,inheritParent:!1,children:n},e.name)};return(0,l.jsx)(s.Card,{className:`v1-card v1-edit-card`,title:(0,l.jsx)(nm,{icon:Sp[t%Sp.length],title:e.label??e.name??`Details`}),extra:(0,l.jsxs)(s.Space,{size:8,align:`center`,className:`v1-group-actions`,children:[(0,l.jsx)(Ip,{group:e}),(0,l.jsx)(Lp,{group:e}),wp(e.allowCollapse)&&(0,l.jsx)(s.Button,{type:`text`,size:`small`,"aria-expanded":!k[n],"aria-label":k[n]?`Expand section`:`Collapse section`,icon:k[n]?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.UpOutlined,{}),onClick:e=>{e.stopPropagation(),we(n)}})]}),children:(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:t})=>{let s=wp(e.toggleEnabled)&&e.toggleField&&!!t(e.toggleField);return(0,l.jsxs)(`div`,{style:{display:k[n]||s?`none`:`block`},children:[i.map(o),r,a.map(o)]})}})},n)};return(0,l.jsxs)(`main`,{children:[ye.length>0&&(0,l.jsx)(n.t,{items:ye}),(0,l.jsxs)(`div`,{className:`v1-edit-page`,children:[(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(s.Spin,{fullscreen:!0,spinning:G.busy,size:`large`,description:G.loadingText||`Reading the file…`}),(0,l.jsxs)(s.Spin,{spinning:F,description:`Loading form fields…`,children:[L&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:L,style:{marginBottom:16}}),V&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:V,style:{marginBottom:16}}),(0,l.jsxs)(s.Form,{form:E,layout:`vertical`,colon:!1,className:`v1-form ${D}`,disabled:G.busy,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),onFinish:Oe,onFinishFailed:Ae,children:[U.filter(e=>!X(e)).map((e,t)=>(0,l.jsx)(Mp,{form:E,group:e,children:e.showIf?.field?(0,l.jsx)(Np,{form:E,showIf:e.showIf,render:()=>Ue(e,t)}):Ue(e,t)},e.name??`grp-${t}`)),!F&&!L&&U.length===0&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`No form fields are configured.`})]})]})]}),(0,l.jsxs)(`div`,{className:S?`v1-footer v1-footer--embedded`:`v1-footer`,children:[(0,l.jsx)(hp,{type:`secondary`,children:`All unsaved changes will be lost if you cancel and reload.`}),(0,l.jsxs)(s.Space,{size:12,children:[(0,l.jsx)(s.Button,{onClick:()=>S&&C?C():n.j(w,{cancelPath:g}),children:`Cancel`}),(0,l.jsx)(bp,{form:E,groups:U,onClick:()=>E.submit(),disabled:F||z||fe>0,loading:z,children:h})]})]})]})]})}var am=new Map;function om(e){let[t,r]=(0,o.useState)({actions:[],actionRules:[]});return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return am.has(e)||am.set(e,n.fn(e).catch(()=>(am.delete(e),{actions:[],actionRules:[]}))),am.get(e).then(e=>{t||r(e)}),()=>{t=!0}},[e]),t}var sm={delete:(0,l.jsx)(c.DeleteOutlined,{}),edit:(0,l.jsx)(c.EditOutlined,{}),mail:(0,l.jsx)(c.MailOutlined,{}),shareAlt:(0,l.jsx)(c.ShareAltOutlined,{}),swap:(0,l.jsx)(c.RightOutlined,{}),thunderbolt:(0,l.jsx)(c.ThunderboltOutlined,{}),userAdd:(0,l.jsx)(c.UserAddOutlined,{}),userSwitch:(0,l.jsx)(c.UserSwitchOutlined,{})};function cm(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function lm(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(cm(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(cm(t?.[n]??(n===`_id`?t?.id:n===`id`?t?._id:void 0))))}function um(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function dm(e,t,n,r){let i=Er(e,t,r),a=Tr(e.key,t,n,r),o={key:e.key,label:i?i.label:e.label||e.key,icon:sm[e.icon]??void 0,danger:e.danger||void 0,disabled:!!i||!!a,title:i?i.label:a||void 0};return e.children?.length&&(o.children=e.children.map(e=>dm(e,t,n,r))),o}function fm(e){let t=[];for(let n of e)t.push(n),n.children?.length&&t.push(...fm(n.children));return t}function pm({module:e,record:r,scope:i,onDone:a,fallback:o=null}){let u=(0,d.useNavigate)(),f=(0,d.useLocation)(),{actions:p,actionRules:m}=om(e),h=t=>!(t.showInList===!1||!n.F(t.permission,e)||t.permissionKey&&!n.P(um(r,`actionPermission.${t.permissionKey}`))||wr(t.key,r,m,i)||t.allowedTabs?.length&&i&&!t.allowedTabs.some(e=>String(e).toLowerCase()===String(i).toLowerCase())),g=(p??[]).filter(h).map(e=>e.children?.length?{...e,children:e.children.filter(h)}:e);if(!g.length)return o;let _=n=>{if(n.actionType===`copy`){let e=um(r,n.copyField||`id`)??r?._id;navigator.clipboard.writeText(cm(e)).then(()=>s.message.success(`Copied to clipboard`)).catch(()=>s.message.error(`Could not copy to clipboard`));return}if(n.actionType===`api`&&n.apiPath){let e=()=>{let e=lm(n.apiPath,r),i=String(n.apiMethod||`POST`).toUpperCase();t.o(t.x,e.startsWith(`/`)?e:`/${e}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({ids:[r?._id??r?.id],records:[r]})}).then(()=>{s.message.success(`${n.label} completed`),a?.(n)}).catch(e=>s.message.error(e.message||`${n.label} failed`))};n.danger?s.Modal.confirm({title:`${n.label}?`,content:`This cannot be undone.`,okText:n.label,okButtonProps:{danger:!0},onOk:e}):e();return}if(n.actionType===`modal`){let t=n.popupKey||n.key;u(`/popup/${t}`,{state:{background:f,selectedIds:[r?._id??r?.id],selectedRecords:[r],moduleName:e,popupContext:n.popupState??{},popupAction:{key:n.key,apiMethod:n.apiMethod,apiPath:n.apiPath,defaultTemplateId:n.defaultTemplateId,requireJobId:n.requireJobId,popupFieldOverrides:n.popupFieldOverrides},...n.popupState}});return}let i=n.routeTemplate||n.route;if(i){let e=lm(i,r),t=e.startsWith(`/`)?e:`/${e}`;if(n.linkTarget===`_blank`){window.open(t,`_blank`,`noopener`);return}u(t)}},v=new Map(fm(g).map(e=>[String(e.key),e]));return(0,l.jsx)(s.Dropdown,{trigger:[`click`],menu:{items:g.map(e=>dm(e,r,m,i)),onClick:({key:e,domEvent:t})=>{t?.stopPropagation?.();let n=v.get(String(e));n&&n.actionType!==`group`&&!Er(n,r,i)&&_(n)}},children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.MoreOutlined,{}),onClick:e=>e.stopPropagation(),"aria-label":`Row actions`})})}var{Text:mm}=s.Typography;function hm(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function gm(e){return e.value??e.fieldName??e.name??e.label}function _m(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}var vm=[{key:`name`,label:`Name`},{key:`designation`,label:`Designation`},{key:`locationExp`,label:`Location / Exp`},{key:`skills`,label:`Skills`},{key:`createdOn`,label:`Created On`}];function ym({record:e,fields:t,selected:n,onSelect:r}){let i=(0,d.useNavigate)(),a=(0,d.useLocation)(),o=t.find(e=>e.cardRole===`name`),u=t.find(e=>e.cardRole===`subtitle`),f=t.find(e=>e.cardRole===`location`),p=t.find(e=>e.cardRole===`skills`),m=t.find(e=>e.cardRole===`exp`),h=t.find(e=>e.cardRole===`date`),g=t.find(e=>e.cardRole===`action`),_=o?_m(e,o.key):`-`,v=u?_m(e,u.key):``,y=f?_m(e,f.key):``,b=m?_m(e,m.key):``,x=h?_m(e,h.key):``,S=p?e[p.key]:[],C=Array.isArray(S)?S:[],w=C.slice(0,3),T=C.slice(3),E=g?.render?g.render(_m(e,g.key),e):null;function D(){i(`/popup/preview`,{state:{background:a,moduleName:`candidate`,record:e,fields:vm}})}function O(){i(`/popup/mail`,{state:{background:a}})}return(0,l.jsxs)(`div`,{className:`param-card${n?` param-card--selected`:``}`,children:[(0,l.jsxs)(`div`,{className:`param-card__header`,children:[(0,l.jsxs)(`div`,{className:`param-card__header-left`,children:[(0,l.jsxs)(`div`,{className:`param-card__name-row`,children:[(0,l.jsx)(s.Checkbox,{checked:n,onChange:r,onClick:e=>e.stopPropagation(),className:`param-card__checkbox`}),(0,l.jsx)(c.EyeOutlined,{className:`param-card__eye-icon`,onClick:D}),(0,l.jsxs)(`span`,{className:`param-card__name-block`,children:[(0,l.jsx)(mm,{className:`param-card__name`,children:_}),v&&v!==`-`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:`param-card__sep`,children:`·`}),(0,l.jsx)(mm,{className:`param-card__subtitle`,children:v})]})]})]}),y&&y!==`-`&&(0,l.jsxs)(`div`,{className:`param-card__location`,children:[(0,l.jsx)(c.EnvironmentOutlined,{className:`param-card__location-icon`}),(0,l.jsx)(mm,{className:`param-card__location-text`,children:y})]})]}),(0,l.jsx)(`div`,{className:`param-card__header-right`,children:(0,l.jsxs)(`span`,{className:`param-card__exp-badge`,children:[`Exp: `,b&&b!==`-`?b:`-`]})})]}),(0,l.jsxs)(`div`,{className:`param-card__body`,children:[(0,l.jsxs)(`div`,{className:`param-card__body-left`,children:[(0,l.jsx)(mm,{className:`param-card__section-label`,children:`Skills`}),(0,l.jsxs)(`div`,{className:`param-card__skills-row`,children:[w.length>0?w.map(e=>(0,l.jsx)(s.Tag,{className:`sourcing-skill-tag`,children:e},e)):(0,l.jsx)(mm,{className:`param-card__empty`,children:`-`}),T.length>0&&(0,l.jsx)(s.Popover,{trigger:`click`,placement:`bottomLeft`,classNames:{root:`sourcing-skills-popover`},content:(0,l.jsx)(`div`,{className:`sourcing-skills-popup`,children:T.map(e=>(0,l.jsx)(s.Tag,{className:`sourcing-skill-tag`,children:e},e))}),children:(0,l.jsxs)(`span`,{className:`sourcing-more-skills`,children:[`+`,T.length]})})]})]}),x&&x!==`-`&&(0,l.jsxs)(`div`,{className:`param-card__body-right`,children:[(0,l.jsx)(mm,{className:`param-card__section-label param-card__section-label--right`,children:`Created on`}),(0,l.jsx)(mm,{className:`param-card__date-value`,children:x})]})]}),(0,l.jsx)(`div`,{className:`param-card__divider`}),(0,l.jsxs)(`div`,{className:`param-card__footer`,children:[(0,l.jsxs)(`div`,{className:`param-card__footer-left`,children:[(0,l.jsx)(s.Tooltip,{title:`Resume`,children:(0,l.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Resume`,children:(0,l.jsx)(c.FileTextOutlined,{})})}),(0,l.jsx)(s.Tooltip,{title:`Call`,children:(0,l.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Call`,children:(0,l.jsx)(c.PhoneOutlined,{})})}),(0,l.jsx)(s.Tooltip,{title:`Email`,children:(0,l.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Email`,onClick:O,children:(0,l.jsx)(c.MailOutlined,{})})})]}),(0,l.jsx)(`div`,{className:`param-card__footer-right`,children:E})]})]})}function bm({listName:e=`List`,moduleName:t=``,actions:n=[],fields:r=[],dataSource:i=[],loading:a=!1,total:u,current:f,pageSize:p,onPageChange:m,onPageSizeChange:h,className:g=``,activeView:_=`card`,onViewChange:v}){let y=(0,d.useNavigate)(),b=(0,d.useLocation)(),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)({current:1,pageSize:12}),[T,E]=(0,o.useState)([]),[D,O]=(0,o.useState)([]),k=typeof f==`number`&&typeof p==`number`,A=k?{current:f,pageSize:p}:C,j=e=>{let t=e.id??e._id;E(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t]),O(n=>n.some(e=>(e.id??e._id)===t)?n.filter(e=>(e.id??e._id)!==t):[...n,e])},M=n.filter(e=>!e.maxSelect||T.length<=e.maxSelect).map(e=>({key:e.key??e.name,label:e.label??e.name,danger:e.danger??!1,disabled:T.length===0,onClick:()=>{if(T.length!==0){if(typeof e.onSelect==`function`){e.onSelect({selectedIds:T,selectedRecords:D});return}e.route&&y(e.route,{state:{background:b,selectedIds:T,selectedRecords:D,moduleName:t,...e.popupState??{}}})}}})),N=(0,o.useMemo)(()=>r.map(e=>({...e,key:gm(e),label:hm(e)})).filter(e=>e.key&&e.label),[r]),P=typeof u==`number`?u:i.length,F=(0,o.useMemo)(()=>{let e=x.toLowerCase();return!e||e.length<3?i:i.filter(t=>N.some(n=>String(_m(t,n.key)).toLowerCase().includes(e)))},[i,N,x]),I=(0,o.useMemo)(()=>{if(k)return F;let e=(A.current-1)*A.pageSize;return F.slice(e,e+A.pageSize)},[A.current,A.pageSize,F,k]);return(0,l.jsxs)(`div`,{className:`antd param-card-view ${g}`.trim(),children:[(0,l.jsx)(s.Card,{children:(0,l.jsxs)(s.Flex,{align:`center`,justify:`space-between`,children:[(0,l.jsxs)(s.Flex,{align:`center`,gap:6,children:[(0,l.jsx)(mm,{className:`param-card-view__tab-label`,children:e}),(0,l.jsx)(`span`,{className:`param-card-view__count`,children:P}),T.length>0&&n.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Dropdown,{menu:{items:M},trigger:[`click`],children:(0,l.jsxs)(s.Button,{type:`text`,size:`small`,className:`job-actions-button job-actions-menu-button`,children:[`Actions `,(0,l.jsx)(c.DownOutlined,{className:`job-actions-caret`})]})}),(0,l.jsxs)(mm,{className:`job-selected-count`,children:[`Selected (`,T.length,`)`]})]})]}),(0,l.jsxs)(s.Flex,{align:`center`,gap:8,children:[(0,l.jsx)(s.Input,{prefix:(0,l.jsx)(c.SearchOutlined,{className:`job-search-icon`}),placeholder:`Search by name, location, skills`,value:x,onChange:e=>{S(e.target.value),k?m?.(1):w(e=>({...e,current:1}))},allowClear:!0,className:`job-search-input`}),(0,l.jsx)(s.Tooltip,{title:`Filter`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button`,icon:(0,l.jsx)(c.FilterOutlined,{})})}),(0,l.jsx)(s.Tooltip,{title:`Card view`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${_===`card`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),onClick:()=>v?.(`card`)})}),(0,l.jsx)(s.Tooltip,{title:`List view`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${_===`list`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.UnorderedListOutlined,{}),onClick:()=>v?.(`list`)})})]})]})}),(0,l.jsx)(s.Spin,{spinning:a,children:I.length>0?(0,l.jsx)(`div`,{className:`param-card-view__grid`,children:I.map((e,t)=>(0,l.jsx)(ym,{record:e,fields:N,selected:T.includes(e.id??e._id),onSelect:()=>j(e)},e.id??e.key??t))}):!a&&(0,l.jsx)(`div`,{className:`param-card-view__empty`,children:`No results found`})}),(0,l.jsx)(ze,{current:A.current,pageSize:A.pageSize,total:P,onChange:e=>{k?m?.(e):w(t=>({...t,current:e}))},onPageSizeChange:e=>{k?h?.(e):w({current:1,pageSize:e})}})]})}var{Text:xm}=s.Typography;function Sm(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function Cm(e){return e.value??e.fieldName??e.name??e.label}function wm(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}function Tm(e,t){return(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(`span`,{children:e}),(0,l.jsx)(s.Badge,{count:t,overflowCount:9999})]})}function Em({listName:e=`List`,fields:t=[],actions:n=[],dataSource:r=[],loading:i=!1,total:a,current:u,pageSize:f,onPageChange:p,onPageSizeChange:m,onSearch:h,rowSelection:g=!0,className:_=``,tableClassName:v=`job-list-table`,activeView:y=`list`,onViewChange:b}){let x=(0,d.useNavigate)(),S=(0,d.useLocation)(),[C,w]=(0,o.useState)(`all`),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)([]),[k,A]=(0,o.useState)([]),[j,M]=(0,o.useState)({current:1,pageSize:10}),[N,P]=(0,o.useState)([]),[F,I]=(0,o.useState)(!1),L=(0,o.useRef)(null),R=n.filter(e=>!e.maxSelect||D.length<=e.maxSelect).map(e=>({key:e.key??e.name,label:e.label??e.name,danger:e.danger??!1,disabled:D.length===0,onClick:()=>{if(D.length!==0){if(typeof e.onSelect==`function`){e.onSelect({selectedIds:D,selectedRecords:k});return}e.route&&x(e.route,{state:{background:S,selectedIds:D,selectedRecords:k,...e.popupState??{}}})}}})),z=typeof u==`number`&&typeof f==`number`,B=z?{current:u,pageSize:f}:j,V=(0,o.useMemo)(()=>t.map(e=>({...e,key:Cm(e),label:Sm(e)})).filter(e=>e.key&&e.label&&!e.tableHidden),[t]),ee=N.length?N:V.map(e=>e.key),te=(0,o.useMemo)(()=>{if(h)return r;let e=T.toLowerCase();return!e||e.length<3?r:r.filter(t=>V.some(n=>String(wm(t,n.key)).toLowerCase().includes(e)))},[r,V,h,T]),ne=typeof a==`number`?a:T.trim()?te.length:r.length,re=(0,o.useMemo)(()=>{if(z)return te;let e=(B.current-1)*B.pageSize;return te.slice(e,e+B.pageSize)},[B.current,B.pageSize,te,z]),ie=(0,o.useMemo)(()=>V.filter(e=>ee.includes(e.key)).map(e=>({title:e.label,dataIndex:e.key,key:e.key,sorter:e.sorter===!1?!1:e.sorter??((t,n)=>String(wm(t,e.key)).localeCompare(String(wm(n,e.key)))),width:e.width??180,fixed:e.fixed,ellipsis:e.ellipsis??!0,className:e.className,render:(t,n,r)=>e.render?e.render(t,n,r):(0,l.jsx)(xm,{className:`job-cell-primary`,children:wm(n,e.key)})})),[V,ee]),H=ee.length===V.length,ae=ee.length>0&&!H,oe=(e,t)=>{P(n=>{let r=n.length?n:V.map(e=>e.key);return t?r.includes(e)?r:[...r,e]:r.filter(t=>t!==e)})},se=(0,l.jsxs)(`div`,{className:`column-visibility-menu`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(s.Checkbox,{checked:H,indeterminate:ae,onChange:e=>{P(e.target.checked?V.map(e=>e.key):[])},children:`Select All`}),V.map(e=>(0,l.jsx)(s.Checkbox,{checked:ee.includes(e.key),onChange:t=>oe(e.key,t.target.checked),children:e.label},e.key))]});return(0,l.jsxs)(`div`,{className:`antd dynamic-list-view ${_}`.trim(),children:[(0,l.jsx)(s.Card,{children:(0,l.jsxs)(s.Flex,{align:`center`,justify:`space-between`,children:[(0,l.jsx)(s.Tabs,{activeKey:C,items:[{key:`all`,label:Tm(e,ne)}],onChange:e=>{w(e),M({...j,current:1})}}),(0,l.jsxs)(s.Flex,{align:`center`,gap:8,children:[(0,l.jsx)(s.Input,{prefix:(0,l.jsx)(c.SearchOutlined,{className:`job-search-icon`}),placeholder:`Min 3 Chars to search`,value:T,onChange:e=>{let t=e.target.value;E(t),h?(clearTimeout(L.current),L.current=setTimeout(()=>{h(t),p?.(1)},350)):z?p?.(1):M({...j,current:1})},allowClear:!0,className:`job-search-input`}),(0,l.jsx)(s.Tooltip,{title:`Filter`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button`,icon:(0,l.jsx)(c.FilterOutlined,{})})}),(0,l.jsx)(s.Tooltip,{title:`Card view`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${y===`card`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),onClick:()=>b?.(`card`)})}),(0,l.jsx)(s.Tooltip,{title:`List view`,children:(0,l.jsx)(s.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${y===`list`?` param-view-toggle-btn--active`:``}`,icon:(0,l.jsx)(c.UnorderedListOutlined,{}),onClick:()=>b?.(`list`)})})]})]})}),(0,l.jsx)(s.Card,{children:(0,l.jsxs)(s.Flex,{align:`center`,gap:3,children:[(0,l.jsx)(s.Dropdown,{open:F,onOpenChange:I,trigger:[`click`],popupRender:()=>se,placement:`bottomLeft`,classNames:{root:`column-visibility-dropdown`},children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(`img`,{src:Zi,alt:``,className:`job-action-list-icon`}),size:`small`,className:`job-actions-button`})}),D.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Dropdown,{menu:{items:R},trigger:[`click`],children:(0,l.jsxs)(s.Button,{type:`text`,size:`small`,className:`job-actions-button job-actions-menu-button`,children:[(0,l.jsx)(`img`,{src:`data:image/svg+xml,%3csvg%20width='14'%20height='14'%20viewBox='0%200%2014%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.6279%206.78121C12.6857%206.88148%2012.7014%207.00057%2012.6715%207.11239C12.6417%207.22422%2012.5688%207.31967%2012.4688%207.37785L7.21875%2010.4403C7.15185%2010.4794%207.0758%2010.4999%206.99836%2010.4999C6.92092%2010.4999%206.84487%2010.4794%206.77797%2010.4403L1.52797%207.37785C1.42936%207.31859%201.35806%207.22289%201.32951%207.11145C1.30095%207.00001%201.31744%206.88181%201.37539%206.78244C1.43335%206.68306%201.52811%206.61052%201.63916%206.5805C1.75022%206.55048%201.86863%206.56542%201.96875%206.62207L7%209.55605L12.0312%206.62207C12.1315%206.56428%2012.2506%206.54858%2012.3624%206.57841C12.4743%206.60824%2012.5697%206.68116%2012.6279%206.78121ZM1.3125%204.37496C1.31267%204.29833%201.33297%204.22309%201.37136%204.15677C1.40975%204.09045%201.46489%204.03538%201.53125%203.99707L6.78125%200.934566C6.84815%200.895555%206.9242%200.875%207.00164%200.875C7.07908%200.875%207.15513%200.895555%207.22203%200.934566L12.472%203.99707C12.5381%204.0356%2012.5929%204.09076%2012.6309%204.15707C12.669%204.22337%2012.6891%204.2985%2012.6891%204.37496C12.6891%204.45142%2012.669%204.52654%2012.6309%204.59285C12.5929%204.65915%2012.5381%204.71432%2012.472%204.75285L7.22203%207.81535C7.15513%207.85436%207.07908%207.87491%207.00164%207.87491C6.9242%207.87491%206.84815%207.85436%206.78125%207.81535L1.53125%204.75285C1.46489%204.71453%201.40975%204.65946%201.37136%204.59314C1.33297%204.52682%201.31267%204.45159%201.3125%204.37496ZM2.61844%204.37496L7%206.93105L11.3816%204.37496L7%201.81886L2.61844%204.37496ZM7.65625%2011.7993L7%2012.1821L1.96875%209.24707C1.86913%209.19747%201.75436%209.18769%201.64779%209.21973C1.54122%209.25177%201.45087%209.32322%201.39512%209.41953C1.33937%209.51583%201.32241%209.62977%201.3477%209.73814C1.37299%209.84651%201.43863%209.94117%201.53125%2010.0028L6.78125%2013.0653C6.84815%2013.1044%206.9242%2013.1249%207.00164%2013.1249C7.07908%2013.1249%207.15513%2013.1044%207.22203%2013.0653L8.09703%2012.5551C8.14746%2012.5266%208.19171%2012.4883%208.22723%2012.4426C8.26275%2012.3968%208.28882%2012.3444%208.30394%2012.2885C8.31906%2012.2326%208.32291%2012.1742%208.31529%2012.1167C8.30766%2012.0593%208.28871%2012.004%208.25952%2011.9539C8.23033%2011.9039%208.19149%2011.8601%208.14526%2011.8252C8.09903%2011.7903%208.04632%2011.7649%207.9902%2011.7505C7.93408%2011.7361%207.87566%2011.7331%207.81833%2011.7414C7.761%2011.7498%207.70591%2011.7695%207.65625%2011.7993Z'%20fill='%236B7280'/%3e%3cpath%20d='M10.6036%2011.3825L13.4607%209.4477C13.5813%209.36599%2013.614%209.20256%2013.5341%209.08069L13.0105%208.282C12.9303%208.15966%2012.7665%208.12478%2012.6434%208.20383L9.54053%2010.1964L8.94939%2011.4054C8.84904%2011.6106%209.03632%2011.8387%209.25715%2011.7803L10.4338%2011.469C10.4561%2011.4631%2010.4776%2011.4543%2010.4977%2011.4429L10.6036%2011.3825ZM9.54053%2010.1964L10.6036%2011.3825'%20stroke='%236B7280'%20stroke-width='0.6'/%3e%3c/svg%3e`,alt:``,className:`job-actions-frame-icon`}),`Actions `,(0,l.jsx)(c.DownOutlined,{className:`job-actions-caret`})]})}),(0,l.jsxs)(xm,{className:`job-selected-count`,children:[`Selected (`,D.length,`)`]})]})]})}),(0,l.jsx)(s.Spin,{spinning:i,children:(0,l.jsx)(s.Table,{rowSelection:g?{type:`checkbox`,selectedRowKeys:D,onChange:(e,t)=>{O(e),A(t)}}:void 0,columns:ie,dataSource:re,size:`middle`,scroll:{x:`max-content`},showSorterTooltip:!1,tableLayout:`auto`,pagination:!1,className:v,rowKey:e=>e.id??e.key})}),(0,l.jsx)(ze,{current:B.current,pageSize:B.pageSize,total:ne,onChange:e=>{z?p?.(e):M(t=>({...t,current:e}))},onPageSizeChange:e=>{z?m?.(e):M({current:1,pageSize:e})}})]})}var Dm=[`both`,`slider`,`inputs`];function Om({field:e,value:t,onChange:n,disabled:r}){let i=Number(e.min??0),a=Number(e.max??30),o=Dm.includes(e.display)?e.display:`both`,[c,u]=Array.isArray(t)&&t.length===2?t:[void 0,void 0],d=e.fromLabel??`From`,f=e.toLabel??`To`,p=e.unit??``,m=String(e.minLabel??``).trim()||String(i),h=String(e.maxLabel??``).trim()||String(a),g=e.marks??{[i]:m,[a]:h},_=(e,t)=>t?.userTyping?t.input:e==null||e===``?``:Number(e)===i?m:Number(e)===a?h:String(e),v=e=>{let t=String(e??``).trim();return t===``?``:t===h?String(a):t===m?String(i):t.replace(/[^0-9.-]/g,``)},y=e=>{let t=e[0]===null||e[0]===void 0||e[0]===``?void 0:Number(e[0]),r=e[1]===null||e[1]===void 0||e[1]===``?void 0:Number(e[1]);if(t===void 0&&r===void 0){n(void 0);return}if(t!==void 0&&r!==void 0){n([Math.min(t,r),Math.max(t,r)]);return}n([t,r])};return(0,l.jsxs)(`div`,{className:`sbv1-range`,children:[o!==`inputs`&&(0,l.jsx)(s.Slider,{range:!0,min:i,max:a,marks:g,disabled:r,value:[c??i,u??a],onChange:y}),o!==`slider`&&(0,l.jsxs)(s.Space,{size:8,className:`sbv1-range-inputs`,children:[(0,l.jsx)(`span`,{className:`sbv1-range-label`,children:d}),(0,l.jsx)(s.InputNumber,{size:`small`,min:i,max:a,disabled:r,value:c??i,"aria-label":d,formatter:_,parser:v,onChange:e=>y([e,u])}),(0,l.jsx)(`span`,{className:`sbv1-range-label`,children:f}),(0,l.jsx)(s.InputNumber,{size:`small`,min:i,max:a,disabled:r,value:u??a,"aria-label":f,formatter:_,parser:v,onChange:e=>y([c,e])}),p&&(0,l.jsx)(`span`,{className:`sbv1-range-label`,children:p})]})]})}Om.propTypes={field:f.default.object.isRequired,value:f.default.array,onChange:f.default.func.isRequired,disabled:f.default.bool};var km=[{key:`today`,label:`Today`},{key:`yesterday`,label:`Yesterday`},{key:`last7`,label:`Last 7 Days`},{key:`last30`,label:`Last 30 Days`},{key:`last3Months`,label:`Last 3 Months`},{key:`last6Months`,label:`Last 6 Months`},{key:`thisMonth`,label:`This Month`},{key:`lastMonth`,label:`Last Month`},{key:`custom`,label:`Custom Range`}];function Am(e){let t=(0,u.default)();switch(e){case`today`:return[t.startOf(`day`),t.endOf(`day`)];case`yesterday`:{let e=t.subtract(1,`day`);return[e.startOf(`day`),e.endOf(`day`)]}case`last7`:return[t.subtract(6,`day`).startOf(`day`),t.endOf(`day`)];case`last30`:return[t.subtract(29,`day`).startOf(`day`),t.endOf(`day`)];case`last3Months`:return[t.subtract(3,`month`).startOf(`day`),t.endOf(`day`)];case`last6Months`:return[t.subtract(6,`month`).startOf(`day`),t.endOf(`day`)];case`thisMonth`:return[t.startOf(`month`),t.endOf(`day`)];case`lastMonth`:{let e=t.subtract(1,`month`);return[e.startOf(`month`),e.endOf(`month`)]}default:return[null,null]}}function jm(e){return e?(0,u.default)(e).endOf(`day`).toISOString():null}function Mm(e){return e?(0,u.default)(e).startOf(`day`).toISOString():null}var{RangePicker:Nm}=s.DatePicker;function Pm({field:e,value:t,onChange:n,disabled:r}){let i=t&&typeof t==`object`?t:{},a=i.preset,o=e=>{if(e===`custom`){n({preset:e,from:null,to:null});return}let[t,r]=Am(e);n({preset:e,from:Mm(t),to:jm(r)})},c=e=>{let[t,r]=Array.isArray(e)?e:[null,null];n({preset:`custom`,from:Mm(t),to:jm(r)})},d=a===`custom`&&(i.from||i.to)?[i.from?(0,u.default)(i.from):null,i.to?(0,u.default)(i.to):null]:null;return(0,l.jsxs)(`div`,{className:`sbv1-date-range-preset`,children:[(0,l.jsx)(s.Select,{value:a,disabled:r,allowClear:!0,placeholder:e.placeholder??`Select date`,options:km.map(({key:e,label:t})=>({value:e,label:t})),onChange:o,onClear:()=>n(void 0)}),a===`custom`&&(0,l.jsx)(Nm,{style:{width:`100%`,marginTop:8},disabled:r,value:d,disabledDate:e=>e&&e.isAfter((0,u.default)(),`day`),onChange:c})]})}Pm.propTypes={field:f.default.object.isRequired,value:f.default.object,onChange:f.default.func.isRequired,disabled:f.default.bool};var Fm=new Set([`AND`,`OR`]),Im=new Set([`AND`,`OR`,`NOT`]);function Lm(e){let t=String(e??``),n=[],r=0;for(;r<t.length;){let e=t[r];if(/\s/.test(e)){r+=1;continue}if(e===`(`||e===`)`){n.push({type:e===`(`?`lparen`:`rparen`,value:e}),r+=1;continue}if(e===`"`){let e=t.indexOf(`"`,r+1);if(e===-1){n.push({type:`unterminated`,value:t.slice(r)});break}n.push({type:`term`,value:t.slice(r+1,e),quoted:!0}),r=e+1;continue}let i=r;for(;i<t.length&&!/[\s()"]/.test(t[i]);)i+=1;let a=t.slice(r,i),o=a.toUpperCase();n.push(Im.has(o)?{type:`operator`,value:o}:{type:`term`,value:a}),r=i}return n}var Rm=[{pattern:/&&/,message:`Use AND instead of &&.`},{pattern:/\|\|/,message:`Use OR instead of ||.`},{pattern:/(?:^|\s)!(?=\S)/,message:`Use NOT instead of !.`}],zm=4,Bm=12,Vm=[`query`],Hm=new Set(Vm);function Um(e){return Array.isArray(e)?e.length===1&&Hm.has(e[0]):Hm.has(e)}function Wm(e){let t=[],n=[],r=String(e??``).trim();if(!r)return{valid:!0,errors:t,warnings:n};Rm.forEach(({pattern:e,message:n})=>{e.test(r)&&t.push(n)});let i=Lm(r);i.some(e=>e.type===`unterminated`)&&t.push(`Unclosed quote — every " needs a closing ".`);let a=0,o=0,s=!1;i.forEach(e=>{e.type===`lparen`?(a+=1,o=Math.max(o,a)):e.type===`rparen`&&(--a,a<0&&(s=!0,a=0))}),(s||a>0)&&t.push(`Unbalanced parentheses.`);let c=i.filter(e=>e.type!==`unterminated`),l=[];return c.forEach((e,r)=>{let i=c[r-1],a=c[r+1];if(e.type===`operator`){let n=Fm.has(e.value),r=!i||i.type===`lparen`||i.type===`operator`&&Fm.has(i.value);n&&r&&t.push(`"${e.value}" needs a term before it.`),(!a||a.type===`rparen`)&&t.push(`"${e.value}" needs a term after it.`)}e.type===`lparen`&&a?.type===`rparen`&&t.push(`Empty parentheses.`),e.type===`term`&&(l.push({token:e,index:r}),!e.quoted&&e.value.length===1&&n.push(`"${e.value}" is a single character and will match very broadly.`),/[*?]/.test(e.value)&&n.push(`"${e.value}" — * and ? are matched as literal characters here, not wildcards.`))}),t.length===0&&l.length>0&&l.every(({index:e})=>{for(let t=e-1;t>=0;--t){let e=c[t];if(e.type!==`lparen`)return e.type===`operator`&&e.value===`NOT`}return!1})&&n.push(`This query is only exclusions and will match nearly everyone.`),o>zm&&n.push(`Nested ${o} levels deep — consider simplifying so it stays easy to verify.`),l.length>Bm&&n.push(`${l.length} terms in one query — consider narrowing it.`),{valid:t.length===0,errors:[...new Set(t)],warnings:[...new Set(n)]}}function Gm(e,t,n,r){let i=String(e??``),a=Math.max(0,Math.min(t??i.length,i.length)),o=Math.max(a,Math.min(n??a,i.length)),s=i.slice(0,a),c=i.slice(a,o),l=i.slice(o);if(r===`()`||r===`""`){let[e,t]=r===`()`?[`(`,`)`]:[`"`,`"`];return{value:`${s}${e}${c}${t}${l}`,cursor:c?a+c.length+2:a+1}}let u=s+c,d=u.length>0&&!/\s$/.test(u)?` `:``,f=/^\s/.test(l)?``:` `,p=`${d}${r}${f}`,m=!f&&/^\s/.test(l)?1:0;return{value:`${u}${p}${l}`,cursor:u.length+p.length+m}}var Km=`keywords`;function qm(e){return e===!0||e===1||e===`1`}function Jm(e){if(e==null)return null;if(typeof e==`string`||typeof e==`number`){let t=String(e).trim();return t?{value:t,mandatory:!1}:null}if(typeof e==`object`){let t=String(e.value??e.label??e.name??``).trim();return t?{value:t,mandatory:!!e.mandatory}:null}return null}var Ym={terms:[],mandatoryAll:!1,expression:``,generatedExpression:``};function Xm(e){return Array.isArray(e)?{...Ym,terms:e.map(Jm).filter(Boolean)}:e&&typeof e==`object`?{terms:Array.isArray(e.terms)?e.terms.map(Jm).filter(Boolean):[],mandatoryAll:!!e.mandatoryAll,expression:typeof e.expression==`string`?e.expression:``,generatedExpression:typeof e.generatedExpression==`string`?e.generatedExpression:``}:typeof e==`string`&&e.trim()?{...Ym,terms:[{value:e.trim(),mandatory:!1}]}:{...Ym}}function Zm(e){return e?.type===Km}function Qm(e){return Zm(e)&&qm(e.isPrimaryKeyword)}function $m(e){return String(e?.keywordRole??`include`).toLowerCase()===`exclude`}function eh(e){return qm(e?.showMandatoryOption)&&!$m(e)}function th(e){return String(e?.keywordGroup??``).trim()||String(e?.field??``)}function nh(e){let t=e?.keywordFields;return(Array.isArray(t)?t:t?[t]:[]).map(e=>String(e??``).trim()).filter(Boolean)}function rh(e){let t=Number(e?.maxKeywords);return Number.isFinite(t)&&t>0?Math.floor(t):50}function ih(e){let t=new Set,n=[];return e.forEach(e=>{let r=e.toLowerCase();t.has(r)||(t.add(r),n.push(e))}),n}function ah(e,{booleanMode:t=!1,isPrimary:n=!1}={}){let r=Xm(e);return t&&n?r.expression.trim()!==``:r.terms.length>0}function oh(e){return ih(String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean))}var sh={mandatory:[],optional:[],exclude:[]};function ch(e,t){return e?.type===`operator`&&e.value===t}function lh(e){if(!e.length)return null;let t=[];for(let n=0;n<e.length;n+=1){let r=e[n];if(n%2==0){if(r.type!==`term`||!String(r.value).trim())return null;t.push(String(r.value).trim())}else if(!ch(r,`OR`))return null}return e.length%2==1?t:null}function uh(e){let t=[],n=[],r=0,i=()=>{n.length&&t.push(n),n=[]};for(let t of e){if(t.type===`lparen`){if(r+=1,r>1)return null}else if(t.type===`rparen`&&(--r,r<0))return null;if(r===0&&ch(t,`AND`)){i();continue}if(r===0&&ch(t,`NOT`)){i(),n.push(t);continue}n.push(t)}return r===0?(i(),t):null}function dh(e){return e.length>=2&&e[0].type===`lparen`&&e[e.length-1].type===`rparen`?{inner:e.slice(1,-1),wrapped:!0}:{inner:e,wrapped:!1}}function fh(e){let t=String(e??``).trim();if(!t||Wm(t).errors.length)return null;let n=Lm(t);if(!n.length)return null;let r=n.some(e=>e.type===`operator`),i=n.some(e=>e.type===`lparen`||e.type===`rparen`);if(!r&&!i){let e=oh(t);return e.length?{...sh,optional:e}:null}let a=uh(n);if(!a||!a.length)return null;let o=[],s=[],c=null;for(let e of a){if(ch(e[0],`NOT`)){let{inner:t}=dh(e.slice(1)),n=lh(t);if(!n)return null;s.push(...n);continue}let{inner:t,wrapped:n}=dh(e);if(n){let e=lh(t);if(!e||c)return null;c=e;continue}if(e.length===1&&e[0].type===`term`){o.push(String(e[0].value).trim());continue}if(a.length===1){let t=lh(e);if(!t)return null;c=t;continue}return null}if(o.length===1&&!c&&!s.length)return{mandatory:[],optional:ih(o),exclude:[]};let l={mandatory:ih(o),optional:ih(c??[]),exclude:ih(s)};return l.mandatory.length+l.optional.length+l.exclude.length?l:null}function ph(e){let t=Xm(e),n=t.expression.trim();if(n!==``&&n!==t.generatedExpression.trim())return t;let r=t.terms.map(e=>e.value).join(`, `);return{...t,expression:r,generatedExpression:r}}function mh(e,{starsEnabled:t=!0}={}){let n=Xm(e),r=fh(n.expression);if(!r)return{model:n,exclude:null,converted:!1};let i=new Map(n.terms.map(e=>[e.value.toLowerCase(),e.mandatory])),a=r.mandatory.length===0&&r.exclude.length===0&&!/[()"]/.test(n.expression)&&!Lm(n.expression).some(e=>e.type===`operator`),o=(e,n)=>t?a?!!i.get(e.toLowerCase()):n:!1,s=[...r.mandatory.map(e=>({value:e,mandatory:o(e,!0)})),...r.optional.map(e=>({value:e,mandatory:o(e,!1)}))];return{model:{...n,terms:s,mandatoryAll:s.length>0&&s.every(e=>e.mandatory),generatedExpression:n.expression},exclude:r.exclude,converted:!0}}function hh(e=[],t={},{booleanMode:n=!1}={}){let r=new Map;e.forEach(e=>{if(!Zm(e)||n&&Qm(e))return;let i=Xm(t[e.field]);if(!i.terms.length)return;let a=th(e);if(!a)return;r.has(a)||r.set(a,{id:a,fields:nh(e),mandatory:[],optional:[],exclude:[]});let o=r.get(a);if(o.fields.length||(o.fields=nh(e)),$m(e)){i.terms.forEach(e=>o.exclude.push(e.value));return}let s=eh(e);i.terms.forEach(e=>{s&&e.mandatory?o.mandatory.push(e.value):o.optional.push(e.value)})});let i=[];return r.forEach(e=>{let t={id:e.id,fields:e.fields,mandatory:ih(e.mandatory),optional:ih(e.optional),exclude:ih(e.exclude)};!t.mandatory.length&&!t.optional.length&&!t.exclude.length||i.push(t)}),i.length?i:null}var{TextArea:gh}=s.Input,{Text:_h}=s.Typography,vh=`(Java OR J2EE) AND "Spring Boot" NOT Hibernate`;function yh({field:e,value:t,onChange:n,disabled:r,placeholder:i,booleanEnabled:a,booleanMode:u,onBooleanModeChange:d,serverError:f}){let p=Xm(t),m=Qm(e),h=eh(e),g=$m(e),_=rh(e),v=m&&a&&u,[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)(``),C=(0,o.useRef)(null),w=e=>n({...p,...e}),T=e=>w({terms:e,mandatoryAll:e.length>0?e.every(e=>e.mandatory):p.mandatoryAll}),E=e=>{let t=String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean);if(!t.length){b(``);return}let n=[...p.terms],r=new Set(n.map(e=>e.value.toLowerCase())),i=!1;t.forEach(e=>{let t=e.toLowerCase();if(!r.has(t)){if(n.length>=_){i=!0;return}r.add(t),n.push({value:e,mandatory:h&&p.mandatoryAll})}}),S(i?`At most ${_} keywords.`:``),b(``),n.length!==p.terms.length&&T(n)},D=e=>{S(``),T(p.terms.filter((t,n)=>n!==e))},O=e=>{T(p.terms.map((t,n)=>n===e?{...t,mandatory:!t.mandatory}:t))},k=e=>{n({...p,mandatoryAll:e,terms:p.terms.map(t=>({...t,mandatory:e}))})},A=e=>{if(e.key===`Enter`){e.preventDefault(),E(y);return}e.key===`Backspace`&&y===``&&p.terms.length&&D(p.terms.length-1)},j=()=>{S(``),b(``),n({...p,terms:[],mandatoryAll:!1})},M=m&&(0,l.jsxs)(`div`,{className:`sbv1-keywords-header`,children:[(0,l.jsx)(_h,{strong:!0,className:`sbv1-keywords-title`,children:e.label??`Keywords`}),a&&(0,l.jsxs)(`span`,{className:`sbv1-keywords-toggle`,children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!u,disabled:r,onChange:d}),(0,l.jsx)(_h,{type:`secondary`,children:u?`Boolean on`:`Boolean off`})]})]});return v?(0,l.jsxs)(`div`,{className:`sbv1-keywords`,children:[M,(0,l.jsx)(gh,{autoSize:{minRows:e.rows??3,maxRows:12},value:p.expression,disabled:r,status:f?`error`:void 0,placeholder:e.booleanPlaceholder??vh,onChange:e=>w({expression:e.target.value})}),f&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:f})]}):(0,l.jsxs)(`div`,{className:`sbv1-keywords`,children:[M,(0,l.jsxs)(`div`,{className:`sbv1-keywords-row`,children:[(0,l.jsxs)(`div`,{className:`sbv1-keywords-box${r?` sbv1-keywords-box-disabled`:``}`,onClick:()=>C.current?.focus(),role:`presentation`,children:[p.terms.map((e,t)=>(0,l.jsxs)(s.Tag,{className:`sbv1-keywords-chip`,closable:!r,onClose:e=>{e.preventDefault(),D(t)},children:[h&&(0,l.jsx)(`button`,{type:`button`,className:`sbv1-keywords-star`,"aria-pressed":e.mandatory,"aria-label":e.mandatory?`${e.value} is mandatory`:`Mark ${e.value} as mandatory`,disabled:r,onClick:e=>{e.stopPropagation(),O(t)},children:e.mandatory?(0,l.jsx)(c.StarFilled,{}):(0,l.jsx)(c.StarOutlined,{})}),(0,l.jsx)(`span`,{className:`sbv1-keywords-chip-text`,children:e.value})]},e.value)),(0,l.jsx)(`input`,{ref:C,className:`sbv1-keywords-input`,value:y,disabled:r,placeholder:p.terms.length?e.placeholder??i??`Type another keyword`:i??e.placeholder??`Type another keyword`,onChange:e=>b(e.target.value),onKeyDown:A,onBlur:()=>E(y)})]}),p.terms.length>0&&!r&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,className:`sbv1-keywords-clear`,onClick:j,children:`Clear all`})]}),x&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:x}),h&&!g&&(0,l.jsx)(s.Checkbox,{className:`sbv1-keywords-mandatory`,checked:p.terms.length?p.terms.every(e=>e.mandatory):p.mandatoryAll,disabled:r,onChange:e=>k(e.target.checked),children:`Mark all keywords as mandatory`})]})}yh.propTypes={field:f.default.object.isRequired,value:f.default.any,onChange:f.default.func.isRequired,disabled:f.default.bool,placeholder:f.default.string,booleanEnabled:f.default.bool,booleanMode:f.default.bool,onBooleanModeChange:f.default.func,serverError:f.default.string};var{TextArea:bh}=s.Input,{RangePicker:xh}=s.DatePicker,Sh={};function Ch(e,t){if(!e||typeof t?.render!=`function`)throw Error(`registerFieldType(type, { render }) requires a type name and a render function`);return Sh[e]={booleanEligible:!1,needsOptions:!1,multiValue:!1,...t},Sh[e]}function wh(e){return Sh[e]??Sh.text}function Th(e){return!!wh(e).booleanEligible}function Eh(e){let t=wh(e?.type??`text`).ownsLabel;return typeof t==`function`?!!t(e):!!t}function Dh(e,t,n){let r=wh(e?.type??`text`).hasValue;if(typeof r==`function`)return!!r(t,n)}function Oh(){return Object.entries(Sh).filter(([,e])=>e.booleanEligible).map(([e])=>e)}function kh(e){return`Enter ${String(e.label??e.field??``).toLowerCase()}`}function Ah(e){return e.multiSelect||e.mode===`multiple`?`multiple`:void 0}function jh(e){return`Select ${String(e.label??e.field??``).toLowerCase()}`}Ch(`text`,{booleanEligible:!1,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(s.Input,{value:t??``,disabled:r,placeholder:i??kh(e),allowClear:!0,onChange:e=>n(e.target.value)})}),Ch(`email`,{booleanEligible:!1,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(s.Input,{type:`email`,value:t??``,disabled:r,placeholder:i??kh(e),allowClear:!0,onChange:e=>n(e.target.value)})}),Ch(`textarea`,{booleanEligible:!1,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(bh,{rows:e.rows??3,value:t??``,disabled:r,placeholder:i??kh(e),onChange:e=>n(e.target.value)})}),Ch(`number`,{render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(s.InputNumber,{style:{width:`100%`},value:t??null,disabled:r,min:e.min,max:e.max,placeholder:i??kh(e),onChange:n})}),Ch(`select`,{booleanEligible:!1,needsOptions:!0,render:({field:e,value:t,onChange:n,options:r,optionsLoading:i,disabled:a,placeholder:o})=>(0,l.jsx)(s.Select,{mode:Ah(e),value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:o??jh(e),notFoundContent:i?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onChange:n})}),Ch(`multiselect`,{booleanEligible:!1,needsOptions:!0,multiValue:!0,render:({field:e,value:t,onChange:n,options:r,optionsLoading:i,disabled:a,placeholder:o})=>(0,l.jsx)(s.Select,{mode:`multiple`,value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:o??jh(e),notFoundContent:i?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onChange:n})}),Ch(`location`,{needsOptions:!0,remoteSearch:!0,fetchOptions:({field:e,search:t})=>n.Ar(t,e.limit??50),render:({field:e,value:t,onChange:n,onSearch:r,options:i,optionsLoading:a,disabled:o,placeholder:c})=>(0,l.jsx)(s.Select,{value:t??void 0,disabled:o,mode:Ah(e),options:i,loading:a,allowClear:!0,showSearch:!0,filterOption:!1,placeholder:c??jh(e),notFoundContent:a?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:r,onChange:n})}),Ch(`tagify`,{booleanEligible:!1,multiValue:!0,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(s.Select,{mode:`tags`,value:t??void 0,disabled:r,open:!1,suffixIcon:null,allowClear:!0,tokenSeparators:[`,`],placeholder:i??kh(e),onChange:n})}),Ch(`radio`,{needsOptions:!0,render:({value:e,onChange:t,options:n,disabled:r})=>{let i=n.find(e=>e.locked);return(0,l.jsx)(s.Radio.Group,{className:`sbv1-option-row`,value:i?i.value:e,disabled:r||!!i,options:n,onChange:e=>t(e.target.value)})}}),Ch(`checkbox`,{needsOptions:!0,multiValue:!0,render:({field:e,value:t,onChange:n,options:r,disabled:i})=>{if(r.length===0)return(0,l.jsx)(s.Checkbox,{checked:!!t,disabled:i,onChange:e=>n(e.target.checked),children:e.checkboxLabel??e.label});let a=r.filter(e=>e.locked).map(e=>e.value),o=r.map(e=>e.value),c=Array.isArray(t)?t:[],u=e=>{let t=new Set(e);return o.filter(e=>t.has(e))},d=u([...c,...a]),f=r.map(e=>e.locked?{...e,disabled:!0}:e),p=e=>{n(u([...e,...a]))},m=e.hideSelectAll!==!0&&r.length>1,h=m&&o.every(e=>d.includes(e));return(0,l.jsxs)(`div`,{className:`sbv1-option-row sbv1-checkbox-with-select-all`,children:[m&&(0,l.jsx)(s.Checkbox,{checked:h,disabled:i,onChange:e=>{n(e.target.checked?u(o):u(a))},children:`All`}),(0,l.jsx)(s.Checkbox.Group,{value:d,disabled:i,options:f,onChange:p})]})}}),Ch(`date`,{render:({value:e,onChange:t,disabled:n,placeholder:r})=>(0,l.jsx)(s.DatePicker,{style:{width:`100%`},value:e??null,disabled:n,placeholder:r??`Select date`,onChange:t})}),Ch(`daterange`,{multiValue:!0,render:({value:e,onChange:t,disabled:n})=>(0,l.jsx)(xh,{style:{width:`100%`},value:e??null,disabled:n,onChange:t})}),Ch(`range`,{multiValue:!0,render:e=>(0,l.jsx)(Om,{...e})}),Ch(`daterangePreset`,{multiValue:!0,render:e=>(0,l.jsx)(Pm,{...e})}),Ch(`keywords`,{booleanEligible:!0,multiValue:!0,ownsLabel:e=>Qm(e),hasValue:ah,render:e=>(0,l.jsx)(yh,{...e})});var Mh=300;function Nh(e=[]){return Array.isArray(e)?e.map(e=>{if(e==null)return null;if(typeof e==`string`||typeof e==`number`)return{label:String(e),value:e};let t=e.label??e.name??e.value??e.id,n=e.value??e.id??e.name??e.label;return n===void 0?null:{label:String(t??n),value:n,locked:!!e.locked}}).filter(Boolean):[]}function Ph({field:e,moduleName:t,value:r,onChange:i,disabled:a,extraProps:s}){let c=wh(e.type??`text`),l=e.dataSource??`static`,u=typeof c.fetchOptions==`function`?c.fetchOptions:null,d=!!c.needsOptions&&(!!u||l!==`static`),f=(0,o.useMemo)(()=>Nh(e.options??e.values??[]),[e.options,e.values]),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(null),[y,b]=(0,o.useState)(d);return(0,o.useEffect)(()=>{if(!c.remoteSearch||p===h)return;let e=setTimeout(()=>g(p),Mh);return()=>clearTimeout(e)},[p,h,c.remoteSearch]),(0,o.useEffect)(()=>{if(!d)return;let r=!1;return(async()=>{b(!0);try{let i=u?await u({field:e,search:h,moduleName:t}):await n.yn(t,e.field,``,200,0,{dataSource:l,masterName:e.masterName,groupName:e.groupName}),a=Array.isArray(i)?i:i?.data??i?.values??[];r||v(Nh(a))}catch(t){console.error(`[SearchBuilderV1] Failed to load options for "${e.field}":`,t),r||v([])}finally{r||b(!1)}})(),()=>{r=!0}},[d,u,h,l,e.field,e.masterName,e.groupName,e.limit,t]),c.render({field:e,value:r,onChange:i??(()=>{}),options:_??f,optionsLoading:y,disabled:a,placeholder:e.placeholder,moduleName:t,onSearch:c.remoteSearch?m:void 0,...s??{}})}Ph.propTypes={field:f.default.object.isRequired,moduleName:f.default.string,value:f.default.any,onChange:f.default.func,disabled:f.default.bool,extraProps:f.default.object};var{TextArea:Fh}=s.Input;function Ih({field:e,value:t,onChange:n,disabled:r,serverError:i}){return(0,l.jsxs)(`div`,{className:`sbv1-boolean-field`,children:[(0,l.jsx)(Fh,{rows:e.rows??3,value:t??``,disabled:r,status:i?`error`:void 0,placeholder:e.booleanPlaceholder??`(Java OR J2EE) AND "Spring Boot" NOT Hibernate`,onChange:e=>n(e.target.value)}),i&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:i})]})}Ih.propTypes={field:f.default.object.isRequired,value:f.default.string,onChange:f.default.func.isRequired,disabled:f.default.bool,serverError:f.default.string};var Lh=[`query`,`skills`,`jobTitle`,`designation`,`currentLocation`,`experience.from`,`experience.to`,`workExperienceYears`,`sourceType`,`createdFrom`,`createdTo`],Rh=new Set([`experience.from`,`experience.to`,`workExperienceYears`]);function zh(e,t,n){if(!t.includes(`.`)){e[t]=n;return}let[r,i]=t.split(`.`);e[r]={...e[r]??{},[i]:n}}function Bh(e){return e&&typeof e==`object`&&!Array.isArray(e)?e.value??e.label??e.name??``:e}function Vh(e,t){let n=Bh(t);if(Rh.has(e)){if(n===``||n==null)return;let e=Number(n);return Number.isFinite(e)?e:void 0}if(Array.isArray(n)){let t=n.map(Bh).filter(e=>e!=null&&String(e).trim()!==``);return t.length?e===`sourceType`?t.join(`,`):t.join(` OR `):void 0}let r=String(n??``).trim();return r===``?void 0:r}function Hh(e={},t=[],n={}){let r={},i=!!n.booleanMode;t.forEach(t=>{let n=t.booleanApiKey;if(!n)return;let a=e[t.field];if(Zm(t)){let e=Xm(a);if(Qm(t)){if(!i)return;let t=e.expression.trim();t&&zh(r,Array.isArray(n)?n[0]:n,t);return}a=e.terms.map(e=>e.value)}if(a==null||a===``)return;if(Array.isArray(n)){let e;e=Array.isArray(a)?a:a&&typeof a==`object`&&(`from`in a||`to`in a)?[a.from,a.to]:[a],n.forEach((t,n)=>{let i=Vh(t,e[n]);i!==void 0&&zh(r,t,i)});return}let o=Vh(n,a);o!==void 0&&zh(r,n,o)}),!r.sourceType&&n.defaultSourceType&&(r.sourceType=n.defaultSourceType);let a=hh(t,e,{booleanMode:i});return a&&(r.keywordGroups=a),n.module&&(r.module=String(n.module)),r}function Uh(e){return Array.isArray(e.rangeKeys)&&e.rangeKeys.length===2?e.rangeKeys:[`${e.field}From`,`${e.field}To`]}function Wh(e={},t=[]){let n={...e};return t.forEach(t=>{let r=t.type??`text`;if(r===`daterangePreset`){delete n[t.field];return}if(r===`keywords`){let r=Xm(e[t.field]).terms.map(e=>e.value);r.length?n[t.field]=r:delete n[t.field];return}if(!wh(r).multiValue||r!==`range`&&r!==`daterange`)return;let i=e[t.field];if(!Array.isArray(i))return;let[a,o]=Uh(t);delete n[t.field];let[s,c]=i;s!=null&&s!==``&&(n[a]=s),c!=null&&c!==``&&(n[o]=c)}),n}function Gh(e={},t=[]){let n=[];return t.forEach(t=>{if(t.type!==`daterangePreset`)return;let r=e[t.field],i=r?.from,a=r?.to;if(!i&&!a)return;let o=t.filterField||t.field;i&&n.push({field:o,op:`gte`,value:i,operator:`and`}),a&&n.push({field:o,op:`lte`,value:a,operator:`and`})}),n}async function Kh(e,n={},{limit:r=10,offset:i=0}={}){if(!e)throw Error(`No boolean search endpoint is configured for this form.`);let a;try{a=await t.o(t.x,e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...n,limit:r,offset:i})})}catch(e){let t=e?.response?.error;throw t&&(e.code=t.code,e.details=t.details,e.response?.message&&(e.message=e.response.message)),e}if(a?.status===!1){let e=Error(a?.message||`Boolean search failed`);throw e.code=a?.error?.code,e.details=a?.error?.details,e}let o=a?.data??a??{},s=Array.isArray(o.items)?o.items:[],c=o.count??{},l=Number(c.total),u={};return Number.isFinite(Number(c.internal))&&(u.internal=Number(c.internal)),Number.isFinite(Number(c.dice))&&(u.dice=Number(c.dice)),{rows:s,total:Number.isFinite(l)?l:s.length,counts:u,sources:Array.isArray(o.sources)?o.sources:[]}}function qh({moduleName:e,criteria:t={},searchMode:n=`traditional`,sources:r=[],sourceModules:i,scope:a=``,sort:o=``,sortDir:s=``}){let c=String(a??``).trim().toLowerCase(),l=es(r);return{...t,module:c&&i?.[c]||e,searchMode:n,...l.length?{sourceType:l.join(`,`)}:{},...c?{scope:c}:{},...o?{sortBy:o}:{},...s?{sortOrder:s}:{}}}function Jh(e,t){return es(e).map(e=>{let n=Number(t?.[e]);return{key:e,label:e.charAt(0).toUpperCase()+e.slice(1),...Number.isFinite(n)?{count:n}:{}}})}async function Yh(e){let t=e?.data??e?.items;if(!Array.isArray(t)||t.length===0)return e;let{isDiceResponse:n,mapDiceCandidatesToInternal:r}=await Promise.resolve().then(()=>require("./diceCandidateMapper-BjMhHno3.cjs")).then(e=>e.t);if(!n({data:e}))return e;let i=r(t);return{...e,data:i,items:i}}function Xh({endpoint:e,criteria:n,searchMode:r,sources:i,sourceModules:a}){if(!e)throw Error(`No search endpoint is configured for this form.`);return async function(o,s,c,l={}){let{scope:u,sort:d,sortDir:f}=l,p=qh({moduleName:o,criteria:n,searchMode:r,sources:i,sourceModules:a,scope:u,sort:d,sortDir:f}),m;try{m=await t.o(t.x,e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...p,limit:s,offset:c})})}catch(e){let t=e?.response?.error;throw t&&(e.code=t.code,e.details=t.details,e.response?.message&&(e.message=e.response.message)),e}if(m?.status===!1){let e=Error(m?.message||`Search failed`);throw e.code=m?.error?.code,e.details=m?.error?.details,e}let h=await Yh(m?.data??m??{}),{data:g,..._}=h;return{..._,items:h.items??g??[],tabs:h.tabs?.length?h.tabs:Jh(i,h.count)}}}var{Text:Zh}=s.Typography,Qh=`selectedSource`,$h=new Set([Qh,`source`,`sourceType`,`scope`]),eg={searched:!1,rows:[],total:0,fields:[],actions:[],actionRules:[],loading:!1};function tg(e){return Array.isArray(e)?e:Array.isArray(e?.groups)?e.groups:Array.isArray(e?.data?.groups)?e.data.groups:[]}function ng(e){return e===!0||e===1||e===`1`}function rg(e){return[Number(e.min??0),Number(e.max??30)]}function ig(e){if(e.type===`range`)return String(e.defaultRange??``).trim()===`full`?rg(e):void 0;if(e.type===`daterangePreset`){let t=String(e.defaultPreset??``).trim();if(!t)return;let[n,r]=Am(t);return{preset:t,from:Mm(n),to:jm(r)}}let t=(Array.isArray(e.options)?e.options:[]).filter(e=>e.locked).map(e=>e.value);if(t.length)return e.type===`radio`?t[0]:t}function ag(e,t){if(e?.type===`range`){if(String(e.defaultRange??``).trim()!==`full`||!Array.isArray(t)||t.length!==2)return!1;let[n,r]=rg(e);return Number(t[0])===n&&Number(t[1])===r}if(e?.type===`daterangePreset`){let n=String(e.defaultPreset??``).trim();return!!n&&t?.preset===n}return!1}function og(e,t){return String(e?._id??e?.id??e?.applicantRefrenceId??e?.applicantReferanceId??e?.diceId??e?.profileId??t)}function sg(e,t,n){let r=e?Dh(e,t,n):void 0;return r===void 0?t==null||t===``||ag(e,t)?!1:!Array.isArray(t)||t.length>0:r}function cg(e,t=[],n={}){let r=new Map(t.map(e=>[e.field,e]));return Object.entries(e??{}).some(([e,t])=>{if($h.has(e))return!1;let i=r.get(e);return sg(i,t,{...n,isPrimary:Qm(i)})})}function lg({moduleName:e,action:i,formType:a=`search`,title:u,migrationJobId:f,sourceModules:p,searchActionContext:m,onBack:h}){let[g]=s.Form.useForm(),_=(0,d.useNavigate)(),[v,y]=(0,o.useState)(null),[b,x]=(0,o.useState)(!0),[S,C]=(0,o.useState)(``),[w,T]=(0,o.useState)(0),[E,D]=(0,o.useState)(`traditional`),[O,k]=(0,o.useState)(`internal`),[A,j]=(0,o.useState)({}),[M,N]=(0,o.useState)([]),[P,F]=(0,o.useState)(eg),[I,L]=(0,o.useState)({current:1,pageSize:10}),[R,z]=(0,o.useState)(null),[B,V]=(0,o.useState)({}),[ee,te]=(0,o.useState)({}),[ne,re]=(0,o.useState)(null),[ie,H]=(0,o.useState)(0),[ae,oe]=(0,o.useState)(null),[se,ce]=(0,o.useState)(`list`),[U,le]=(0,o.useState)(!1),ue=(0,o.useId)(),de=(0,o.useRef)(!1),fe=(0,o.useCallback)(e=>{de.current&&(de.current=!1,e&&le(!0))},[]);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return n.Cr(e,a,i).then(e=>{t||(y(Array.isArray(e)?e[0]??null:e??null),C(``))}).catch(e=>{t||C(e?.message||`Failed to load the search form configuration.`)}).finally(()=>{t||x(!1)}),()=>{t=!0}},[e,a,i,w]);let pe=()=>{x(!0),T(e=>e+1)},W=(0,o.useMemo)(()=>tg(v).filter(e=>!ng(e.hideGroup)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>(e.fields??[]).filter(e=>e?.field&&e.show!==0&&!ng(e.hidden)).slice().sort((e,t)=>Number(e.order??0)-Number(t.order??0))),[v]),me=(0,o.useMemo)(()=>ns(W,p),[W,p]),he=(0,o.useMemo)(()=>W.some(e=>e.field===Qh),[W]),ge=(0,o.useMemo)(()=>W.find(e=>Qm(e))??null,[W]),_e=!!v?.booleanSearchEnabled&&!!v?.booleanSearchEndpoint&&!!ge,G=_e&&E===`boolean`,K=(0,o.useMemo)(()=>ge?[ge]:[],[ge]);(0,o.useEffect)(()=>{W.filter(e=>e.booleanCapable&&!Um(e.booleanApiKey)).forEach(e=>{console.warn(`[SearchBuilderV1] "${e.field}" is marked booleanCapable but its booleanApiKey (${JSON.stringify(e.booleanApiKey)}) is not one of ${Vm.join(`, `)} — Boolean now belongs to the common Keywords field only, so this renders as a normal field and its value is matched literally. Clear the flag in Admin → Form Groups.`)})},[W]);let ve=(0,o.useMemo)(()=>W.filter(e=>!(G&&ng(e.hideInBooleanMode))),[W,G]),ye=(0,o.useCallback)(e=>W.find(t=>Zm(t)&&$m(t)&&th(t)===th(e)),[W]),be=e=>{let t={};W.filter(Qm).forEach(n=>{let r=g.getFieldValue(n.field);if(e){t[n.field]=ph(r);return}let{model:i,exclude:a,converted:o}=mh(r,{starsEnabled:eh(n)});if(o){if(a?.length){let e=ye(n);if(!e)return;t[e.field]={...Xm(g.getFieldValue(e.field)),terms:a.map(e=>({value:e,mandatory:!1})),mandatoryAll:!1}}t[n.field]=i}}),Object.keys(t).length&&(g.setFieldsValue(t),te(e=>({...e,...t}))),j({}),re(null),D(e?`boolean`:`traditional`)},xe=(0,o.useCallback)(async(t,r,i={})=>{let a=Number(i.pageSize)>0?Number(i.pageSize):I.pageSize,o=Number(i.current),c=Number.isFinite(o)&&o>0?Math.floor(o):1,l=es(t?.[Qh]),u=he?r?ts(r,O):l.includes(`internal`)?`internal`:ts(t?.[Qh],O):``,d=me[$o(u)]||e;z(t),L({current:c,pageSize:a}),j({}),F(e=>({...e,loading:!0,searched:!0}));try{let e;if(G){let n=Hh(t,ve,{booleanMode:!0,defaultSourceType:he?v?.booleanDefaultSourceType||u||`internal`:``,module:d});e=await Kh(v.booleanSearchEndpoint,n,{limit:a,offset:(c-1)*a})}else e=await n.xn(d,{...Wh(t,ve),...u?{[Qh]:(l.length?l:[u]).join(`,`)}:{}},{limit:a,offset:(c-1)*a},{scope:u,filters:Gh(t,ve)});let r=Number(e.counts?.[u]),i=Number.isFinite(r)?r:e.total;if(k(u),fe(Number(i)>0||(e.rows?.length??0)>0),F({searched:!0,rows:e.rows,total:i,fields:e.fields??[],actions:e.actions??[],actionRules:e.actionRules??[],loading:!1}),!he){N(e.tabs??[]);return}N(t=>cs({sources:l.length?l:e.sources,activeSource:u,activeCount:i,responseCounts:e.counts,currentTabs:t,backendTabs:e.tabs}))}catch(e){let t=e?.details?String(e.details):``,n=e?.code===`INVALID_BOOLEAN_QUERY`?K.find(e=>t.toLowerCase().includes(String(e.field).toLowerCase())):null;n?j({[n.field]:t}):s.message.error(t||e?.message||`Search failed`),F({...eg,searched:!0})}},[ve,K,he,G,e,I.pageSize,v,O,fe,me]),Se=String(v?.searchEndpoint??``).trim(),Ce=(0,o.useCallback)(e=>{let t=Gh(e,ve);return{...Hh(e,ve,{booleanMode:G,defaultSourceType:he?v?.booleanDefaultSourceType||`internal`:``}),...t.length?{fieldFilters:t}:{}}},[ve,he,G,v]),we=(0,o.useMemo)(()=>!Se||!ne?null:Xh({endpoint:Se,criteria:ne,searchMode:G?`boolean`:`traditional`,sources:ae??[],sourceModules:me}),[Se,ne,G,ae,me]),Te=(0,o.useCallback)(e=>!e?.apiPath||!e?.routeTemplate?e:{...e,onClick:async({selectedRecords:i})=>{let a=i?.[0]??{},o=r.r(a),c=o?{...a,diceId:o}:a,l=n.N(e.apiPath,c._id??c.id,c);if(!l){s.message.error(`${e.label}: the configured API path is not a valid in-app path.`);return}try{let r=String(e.apiMethod||`POST`).toUpperCase(),i=await t.o(t.x,l,{method:r,body:[`GET`,`DELETE`].includes(r)?void 0:JSON.stringify({ids:[a._id??a.id],records:[a]})});s.message.success(`${e.label} completed`);let o={...c,...i?.data??i??{}},u=n.N(e.routeTemplate,o._id??o.id,o);u&&_(u)}catch(t){s.message.error(t?.message||`${e.label} failed`)}}},[_]),Ee=(0,o.useCallback)((e,t)=>{let n=di(e,t);return fe(Number(n.total)>0||(n.rows?.length??0)>0),{...n,actions:(n.actions??[]).map(Te)}},[Te,fe]),De=()=>{g.validateFields().then(e=>{if(de.current=!0,Se){oe(es(e?.[Qh])),re(Ce(e)),H(e=>e+1);return}xe(e,void 0,{current:1})}).catch(()=>{de.current=!1,le(!1),s.message.error(`Fix the highlighted field before searching.`)})},Oe=()=>{de.current=!1,le(!1),g.resetFields(),te({}),j({}),F(eg),N([]),k(`internal`),re(null),oe(null)},ke=(0,o.useCallback)(async(e,t)=>{let n=ms(e,t);V(e=>({...e,[n]:{...e[n],loading:!0}}));try{await hs(e,t),V(e=>({...e,[n]:{loading:!1,completed:!0}})),s.message.success(e.successMessage)}catch(t){V(e=>({...e,[n]:{loading:!1}})),s.message.error(t?.message||e.errorMessage)}},[]),Ae=(0,o.useMemo)(()=>{let e=P.fields?.length?P.fields:(()=>{let e=P.rows[0];return e?Object.keys(e).filter(t=>!t.startsWith(`_`)&&typeof e[t]!=`object`).map(e=>({value:e,field:e,label:e.replace(/([A-Z])/g,` $1`).replace(/^./,e=>e.toUpperCase()),isVisible:!0})):[]})(),t=fs({rows:P.rows,selectedSource:O});if(!t.length)return e;let n=new Set(t.map(e=>e.field));return[...e.filter(e=>e.cardRole!==`action`&&!n.has(e.value)),...t.map(e=>({value:e.field,field:e.field,label:e.label??`Action`,cardRole:`action`,isVisible:!0,sorter:!1,render:(t,n)=>{if(!ps(e,n,O))return null;let r=ms(e,n),i=B[r]??{};return(0,l.jsx)(s.Button,{type:`primary`,size:`small`,loading:i.loading,disabled:!r||i.completed,onClick:()=>ke(e,n),children:i.completed?e.completedLabel:e.buttonLabel})}}))]},[ke,P.fields,P.rows,O,B]),je=(0,o.useMemo)(()=>m??(f?{jobId:f}:null),[m,f]),Me=(0,o.useMemo)(()=>{if(!je)return P.actions;let e=t=>({...t,popupState:{...je,...t.popupState},...t.children?{children:t.children.map(e)}:{}});return(P.actions??[]).map(e)},[P.actions,je]),Ne=!!v?.actionButtonEnabled,Pe=Ne?n.N(v?.actionButtonUrl,void 0,je??{}):null,Fe=()=>{if(Pe){if(v?.actionButtonTarget===`_blank`){window.open(Pe,`_blank`,`noopener`);return}_(Pe)}},Ie={booleanMode:G},Le=K.some(e=>sg(e,ee[e.field],{...Ie,isPrimary:!0})),Re=ve.filter(e=>ng(e.req)&&!sg(e,ee[e.field],{...Ie,isPrimary:Qm(e)})),ze=Re.length>0||(G?!Le:!cg(ee,ve,Ie)),Be=Re.length?`Enter ${Re.map(e=>e.label??e.field).join(`, `)} to search.`:G&&!Le&&K.length?`Enter a query in at least one of: ${K.map(e=>e.label??e.field).join(`, `)}.`:``;return e?b?(0,l.jsx)(`div`,{className:`sbv1-page`,children:(0,l.jsx)(s.Card,{className:`sbv1-card`,children:(0,l.jsx)(s.Skeleton,{active:!0,paragraph:{rows:4}})})}):S?(0,l.jsx)(`div`,{className:`sbv1-page`,children:(0,l.jsx)(s.Card,{className:`sbv1-card`,children:(0,l.jsxs)(s.Space,{direction:`vertical`,align:`center`,style:{width:`100%`},children:[(0,l.jsx)(Zh,{strong:!0,children:`Failed to load the search form`}),(0,l.jsx)(Zh,{type:`secondary`,children:S}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:pe,children:`Retry`})]})})}):W.length?(0,l.jsxs)(`div`,{className:`sbv1-page`,children:[(0,l.jsx)(s.Card,{className:`sbv1-card${U?` sbv1-card-collapsed`:``}`,title:(0,l.jsx)(Zh,{strong:!0,children:u??v?.label??`Search`}),extra:(0,l.jsxs)(s.Space,{size:12,children:[(0,l.jsx)(s.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,l.jsx)(c.FilterOutlined,{}),onClick:Oe,children:`Reset filters`}),(0,l.jsx)(s.Tooltip,{title:Be||void 0,children:(0,l.jsx)(s.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,l.jsx)(c.SearchOutlined,{}),disabled:ze,loading:P.loading,onClick:De,children:`Search`})}),Ne&&(0,l.jsx)(s.Tooltip,{title:Pe?void 0:`No valid destination configured`,children:(0,l.jsx)(s.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,l.jsx)(c.FileTextOutlined,{}),disabled:!Pe,onClick:Fe,children:v?.actionButtonLabel||`Open`})}),h&&(0,l.jsx)(s.Button,{size:`small`,className:`sbv1-action-btn`,onClick:h,children:`Back`}),(0,l.jsx)(s.Tooltip,{title:U?`Show filters`:`Hide filters`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,className:`sbv1-collapse-btn`,icon:U?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.UpOutlined,{}),"aria-label":U?`Show filters`:`Hide filters`,"aria-expanded":!U,"aria-controls":ue,onClick:()=>le(e=>!e)})})]}),children:(0,l.jsx)(s.Form,{id:ue,className:`sbv1-form`,form:g,layout:`vertical`,colon:!1,onValuesChange:(e,t)=>te(t),children:(0,l.jsx)(s.Row,{gutter:[24,0],children:ve.map(t=>{let n=G&&K.includes(t),r=Zm(t),i=e=>r?Xm(e).expression:e,a=[];return ng(t.req)&&a.push({required:!0,message:`${t.label??t.field} is required`}),n&&(a.push({validator:(e,t)=>{let{errors:n}=Wm(i(t));return n.length?Promise.reject(Error(n[0])):Promise.resolve()}}),a.push({warningOnly:!0,validator:(e,t)=>{let{warnings:n}=Wm(i(t));return n.length?Promise.reject(Error(n[0])):Promise.resolve()}})),(0,l.jsx)(s.Col,{xs:24,sm:12,lg:t.col??12,children:(0,l.jsx)(s.Form.Item,{name:t.field,label:Eh(t)?null:t.label??t.field,rules:a.length?a:void 0,initialValue:ig(t),children:n&&!r?(0,l.jsx)(Ih,{field:t,serverError:A[t.field]}):(0,l.jsx)(Ph,{field:t,moduleName:e,extraProps:r?{booleanEnabled:_e,booleanMode:G,onBooleanModeChange:be,serverError:A[t.field]}:void 0})})},t.field)})})})}),Se&&we&&(0,l.jsx)(Go,{moduleName:e,breadcrumbItems:[],fetchData:we,responseMapper:Ee,queryParams:ne,rowKey:og,showSearch:!1,activeView:se,onViewChange:ce,showViewToggle:!0,autoCardForExternalRows:!1},ie),!Se&&P.searched&&(0,l.jsx)(Go,{moduleName:e,breadcrumbItems:[],dataSource:P.rows,fields:Ae,total:P.total,loading:P.loading,current:I.current,pageSize:I.pageSize,showSearch:!1,tabs:M,selectedSource:O,onTabChange:e=>xe(R??{},e,{current:1}),onPageChange:(e,t)=>xe(R??{},O,{current:e,pageSize:t}),onPageSizeChange:(e,t)=>xe(R??{},O,{current:1,pageSize:t}),actions:Me,actionRules:P.actionRules})]}):(0,l.jsx)(`div`,{className:`sbv1-page`,children:(0,l.jsx)(s.Card,{className:`sbv1-card`,children:(0,l.jsxs)(Zh,{type:`secondary`,children:[`No search fields are configured for “`,e,`”.`]})})}):(0,l.jsx)(`div`,{className:`sbv1-page`,children:(0,l.jsx)(s.Card,{className:`sbv1-card`,children:(0,l.jsx)(Zh,{type:`danger`,children:`moduleName is required.`})})})}lg.propTypes={moduleName:f.default.string.isRequired,action:f.default.string,formType:f.default.string,title:f.default.string,migrationJobId:f.default.oneOfType([f.default.string,f.default.number]),searchActionContext:f.default.object,sourceModules:f.default.object,onBack:f.default.func};var ug={active:`green`,approved:`green`,hired:`green`,submitted:`gold`,resubmitted:`purple`,pending:`gold`,draft:`default`,rejected:`red`,inactive:`default`,completed:`blue`,not_submitted:`default`};function dg({status:e}){let t=String(e??`unknown`),n=ug[t.toLowerCase()]??`default`;return(0,l.jsx)(s.Tag,{color:n,style:{borderRadius:6,fontWeight:600,fontSize:12,textTransform:`capitalize`},children:t.replace(/_/g,` `)})}function fg(e,t){if(!e||typeof e!=`object`)return null;let n=e.key??e.value??e.id??String(t),r=e.label??e.title??e.name??e.tabTitle;return!n||!r?null:{key:String(n),label:String(r),count:e.count??e.countValue}}function pg({tabs:e=[],activeKey:t,onChange:n,className:r=``}){let i=e.map(fg).filter(Boolean);if(!i.length)return null;let a=i.some(e=>e.key===t)?t:i[0].key;return(0,l.jsx)(`div`,{className:`stylish-tabs ${r}`.trim(),children:i.map(e=>{let t=e.key===a,r=e.count!=null;return(0,l.jsxs)(`button`,{type:`button`,className:`stylish-tabs__item${t?` stylish-tabs__item--active`:``}`,onClick:()=>n?.(e.key),children:[(0,l.jsx)(`span`,{className:`stylish-tabs__label`,children:e.label}),r&&(0,l.jsx)(s.Badge,{count:e.count,showZero:!0,overflowCount:999,className:`stylish-tabs__badge${t?` stylish-tabs__badge--active`:``}`})]},e.key)})})}var{TextArea:mg}=s.Input;function hg({value:e=``,onChange:t,placeholder:n="e.g. ${{clientRate}} /{{rateType}}",disabled:r=!1,textareaRef:i}){return(0,l.jsx)(mg,{ref:i,value:e,disabled:r,placeholder:n,autoSize:{minRows:2,maxRows:6},spellCheck:!1,onChange:e=>t?.(e.target.value),style:{width:`100%`,fontFamily:`"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace`,fontSize:12,lineHeight:`20px`,resize:`vertical`}})}var gg=[`Weekly`,`Bi-Weekly`,`Monthly`].map(e=>({value:e,label:e})),_g=[7,15,30,45,60,90].map(e=>({value:`NET_${e}`,label:`NET ${e}`}));function vg({search:e,onSearchChange:t,searchPlaceholder:n=`Search employee, client, employer, project…`,monthValue:r,onMonthChange:i,cycleValue:a,onCycleChange:o,termsValue:u,onTermsChange:d,termsOptions:f=_g,statusValue:p,onStatusChange:m,statusOptions:h=[],chips:g=[],activeChips:_=[],onToggleChip:v,onReset:y,onRefresh:b,onExport:x,exporting:S=!1,disabled:C=!1}){return(0,l.jsxs)(`div`,{className:`fin-toolbar`,children:[(0,l.jsxs)(`div`,{className:`fin-toolbar__main`,children:[(0,l.jsxs)(`div`,{className:`fin-toolbar__filters`,children:[(0,l.jsx)(s.Input,{className:`fin-toolbar__search`,size:`large`,allowClear:!0,prefix:(0,l.jsx)(c.SearchOutlined,{className:`fin-toolbar__search-icon`}),placeholder:n,value:e,onChange:e=>t?.(e.target.value),disabled:C}),(0,l.jsx)(s.DatePicker,{className:`fin-toolbar__control`,picker:`month`,allowClear:!0,placeholder:`All months`,value:r,onChange:i,disabled:C}),d?(0,l.jsx)(s.Select,{className:`fin-toolbar__control`,allowClear:!0,placeholder:`Payment terms`,value:u||void 0,onChange:e=>d(e??``),options:f,disabled:C,popupMatchSelectWidth:!1}):null,o?(0,l.jsx)(s.Select,{className:`fin-toolbar__control`,allowClear:!0,placeholder:`Payment cycle`,value:a||void 0,onChange:e=>o(e??``),options:gg,disabled:C,popupMatchSelectWidth:!1}):null,(0,l.jsx)(s.Select,{className:`fin-toolbar__control`,allowClear:!0,placeholder:`Status`,value:p||void 0,onChange:e=>m?.(e??``),options:h,disabled:C,popupMatchSelectWidth:!1})]}),(0,l.jsxs)(`div`,{className:`fin-toolbar__actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Reset filters`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ClearOutlined,{}),onClick:y,disabled:C,"aria-label":`Reset filters`})}),(0,l.jsx)(s.Tooltip,{title:`Refresh`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:b,disabled:C,"aria-label":`Refresh`})}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.DownloadOutlined,{}),onClick:x,loading:S,disabled:C,children:`Export`})]})]}),g.length?(0,l.jsxs)(`div`,{className:`fin-toolbar__chips`,children:[(0,l.jsxs)(`span`,{className:`fin-toolbar__chips-label`,children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` Quick filters`]}),g.map(e=>{let t=_.includes(e.key);return(0,l.jsx)(`button`,{type:`button`,className:`fin-chip${t?` fin-chip--active`:``}`,onClick:()=>v?.(e.key),disabled:C,children:e.label},e.key)})]}):null]})}var yg={regularDayHours:8,standardMaxHours:8,overtimeMaxRegular:16,overtimeMaxWeekOff:24,step:.5,decimals:2,epsilon:.001},bg={ST_MAX:`Standard hours cannot exceed 8 hours.`,LEAVE_MAX:`Leave hours cannot exceed 8 hours.`,LEAVE_REMAINING:`Leave hours cannot exceed the remaining regular hours.`,DAY_TOTAL:`Standard + Leave hours cannot exceed 8 hours.`,OT_MAX_REGULAR:`Overtime cannot exceed 16 hours on a regular working day.`,OT_MAX_WEEKOFF:`Overtime cannot exceed 24 hours on a week-off.`,OT_REQUIRES_FULL_STANDARD:`Overtime can only be entered after completing 8 standard working hours.`,WEEKOFF_NA:`Standard and Leave hours are not applicable on a week-off.`,ST_NEGATIVE:`Standard hours cannot be negative.`,OT_NEGATIVE:`Overtime cannot be negative.`,LEAVE_NEGATIVE:`Leave hours cannot be negative.`};function xg(e){let t=Number(e);return Number.isFinite(t)?t:0}function Sg(e,t=yg.decimals){let n=10**t;return Math.round(xg(e)*n)/n}function Cg(e,t,n,r=yg.decimals){return Sg(Math.min(Math.max(xg(e),t),n),r)}function wg(e){return e?.isHoliday?`holiday`:e?.isWeekOff?`weekOff`:`working`}function Tg(e,t,n,r,i=!0){e.push({field:t,code:n,message:bg[n],blocking:i})}function Eg(e,t,n=yg){let r=wg(e),i=Sg(t?.ST,n.decimals),a=Sg(t?.OT,n.decimals),o=Sg(t?.Leave,n.decimals),s=[],c,l;if(r===`holiday`)l=0,c={ST:{min:0,max:0,step:n.step,disabled:!0},OT:{min:0,max:0,step:n.step,disabled:!0},Leave:{min:0,max:0,step:n.step,disabled:!0}};else if(r===`weekOff`)l=n.overtimeMaxWeekOff,c={ST:{min:0,max:0,step:n.step,disabled:!0},OT:{min:0,max:l,step:n.step,disabled:!1},Leave:{min:0,max:0,step:n.step,disabled:!0}},(i>n.epsilon||o>n.epsilon)&&Tg(s,`ST`,`WEEKOFF_NA`,n,!1),a<0?Tg(s,`OT`,`OT_NEGATIVE`,n):a>l+n.epsilon&&Tg(s,`OT`,`OT_MAX_WEEKOFF`,n);else{l=n.overtimeMaxRegular;let e=Cg(n.regularDayHours-i,0,n.regularDayHours,n.decimals),t=!1;i<0?(Tg(s,`ST`,`ST_NEGATIVE`,n),t=!0):i>n.standardMaxHours+n.epsilon&&(Tg(s,`ST`,`ST_MAX`,n),t=!0),t||(o<0?Tg(s,`Leave`,`LEAVE_NEGATIVE`,n):o>n.regularDayHours+n.epsilon?Tg(s,`Leave`,`LEAVE_MAX`,n):o>e+n.epsilon&&(e<=n.epsilon?Tg(s,`ST`,`DAY_TOTAL`,n):Tg(s,`Leave`,`LEAVE_REMAINING`,n)));let r=Math.abs(i-n.standardMaxHours)<=n.epsilon;a<0?Tg(s,`OT`,`OT_NEGATIVE`,n):a>n.epsilon&&!r?Tg(s,`OT`,`OT_REQUIRES_FULL_STANDARD`,n):a>l+n.epsilon&&Tg(s,`OT`,`OT_MAX_REGULAR`,n),c={ST:{min:0,max:n.standardMaxHours,step:n.step,disabled:!1},OT:{min:0,max:l,step:n.step,disabled:!r},Leave:{min:0,max:e,step:n.step,disabled:e<=n.epsilon}}}let u=Sg(i+o,n.decimals),d=r===`working`?Math.max(0,Sg(n.regularDayHours-u,n.decimals)):0,f=r===`working`?Math.max(0,Sg(c.Leave.max-o,n.decimals)):0,p=Sg(i+a+o,n.decimals),m={ST:null,OT:null,Leave:null};for(let e of s)e.blocking&&!m[e.field]&&(m[e.field]=e.message);return{dayKind:r,values:{ST:i,OT:a,Leave:o},fields:c,regularAllocated:u,regularRemaining:d,leaveRemaining:f,overtimeCap:l,dayTotal:p,isFull:r===`working`&&d<=n.epsilon,violations:s,errorsByField:m,valid:!s.some(e=>e.blocking)}}function Dg(e,t,n=[],r=yg){let i=Sg(t?.ST,r.decimals),a=Sg(t?.Leave,r.decimals),o=Sg(t?.OT,r.decimals);if(e===`weekOff`){let e={};return i!==0&&(e.ST=0),a!==0&&(e.Leave=0),Object.keys(e).length?e:null}if(e===`working`){let e={},t=e=>e>=0&&e<=r.regularDayHours+r.epsilon;if(n.includes(`ST`)){let t=Cg(r.regularDayHours-i,0,r.regularDayHours,r.decimals);a!==t&&(e.Leave=t)}else if(n.includes(`Leave`)){if(t(a)){let t=Cg(r.regularDayHours-a,0,r.regularDayHours,r.decimals);i!==t&&(e.ST=t)}}else{let t=Cg(r.regularDayHours-i,0,r.regularDayHours,r.decimals);a>t+r.epsilon&&(e.Leave=t)}let s=e.ST===void 0?i:e.ST;return!(Math.abs(s-r.standardMaxHours)<=r.epsilon)&&o>r.epsilon&&(e.OT=0),Object.keys(e).length?e:null}return null}function Og(e){return!e||e.dayKind===`holiday`?``:e.dayKind===`weekOff`?`Week off — overtime only, up to ${e.overtimeCap} hrs.`:e.isFull?`Maximum standard hours reached — 8 regular hours allocated.`:`Maximum available leave: ${e.leaveRemaining} hrs`}var{Text:kg}=s.Typography,Ag={draft:`default`,logged:`blue`,submitted:`processing`,approved:`success`,rejected:`error`,resubmitted:`purple`,reopened:`warning`,save_draft:`default`,pending:`warning`,not_submitted:`default`};function jg({status:e}){if(!e||e===`draft`||e===`not_submitted`)return null;let t={submitted:{icon:(0,l.jsx)(c.CheckOutlined,{}),color:`blue`,label:`Submitted`},approved:{icon:(0,l.jsx)(c.CheckCircleOutlined,{}),color:`green`,label:`Approved`},rejected:{icon:(0,l.jsx)(c.CloseCircleOutlined,{}),color:`red`,label:`Rejected`},resubmitted:{icon:(0,l.jsx)(c.SyncOutlined,{}),color:`purple`,label:`Re-Submitted`},reopened:{icon:(0,l.jsx)(c.SyncOutlined,{}),color:`orange`,label:`Reopened`},save_draft:{icon:null,color:`default`,label:`Draft`}}[e];return t?(0,l.jsx)(s.Tag,{color:t.color,icon:t.icon,style:{borderRadius:20,fontSize:12,padding:`2px 10px`},children:t.label}):(0,l.jsx)(s.Tag,{color:Ag[e]??`default`,children:e})}function Mg({configKey:e=`timesheet`,month:t,year:n}){let r=Le(e);return t&&n&&(0,u.default)(`${n}-${t}-01`).isBefore((0,u.default)().subtract(r.thresholdMonths,`month`),`month`)?(0,l.jsx)(s.Tag,{color:r.pastColor,children:r.pastLabel}):null}var Ng={working:`timesheet-day-cell--working`,overtime:`timesheet-day-cell--overtime`,leave:`timesheet-day-cell--leave`,holiday:`timesheet-day-cell--holiday`,weekoff:`timesheet-day-cell--weekoff`};function Pg(e,t=0){let n=Number(e);return Number.isFinite(n)?n:t}function Fg(e){let t=Pg(e);return t===0?`0h`:`${t.toFixed(1).replace(/\.0$/,``)}h`}var Ig={ST:`#D0E6FF`,OT:`#AAFEBCA6`,leave:`#FFECBA`};function Lg(e,t){let n=Math.min(Math.max(e,0),1);return!String(t).startsWith(`135`)&&!String(t).startsWith(`45`)?n:n<=.5?Math.sqrt(n/2):1-Math.sqrt((1-n)/2)}function Rg(e={},{angle:t=`135deg`}={}){let n=[[`ST`,Pg(e?.workingHours?.ST)],[`OT`,Pg(e?.workingHours?.OT)],[`leave`,Pg(e?.leave?.CL)+Pg(e?.leave?.SL)]].filter(([,e])=>e>0),r=n.reduce((e,[,t])=>e+t,0);if(n.length<2||r<=0)return null;let i=[],a=0;return n.forEach(([e,o],s)=>{let c=Lg(a/r,t)*100;a+=o;let l=s===n.length-1?100:Lg(a/r,t)*100;i.push(`${Ig[e]} ${c.toFixed(2)}% ${l.toFixed(2)}%`)}),`linear-gradient(${t}, ${i.join(`, `)})`}function zg(e={},{isUnloggedHighlight:t=!1,selected:n=!1,selectable:r=!1,reviewMode:i=!1}={}){let a=Pg(e?.workingHours?.ST),o=Pg(e?.workingHours?.OT),s=Pg(e?.leave?.CL)+Pg(e?.leave?.SL),c=[a,o,s].filter(e=>e>0).length>1,l=o>0?`overtime`:a>0?`working`:s>0?`leave`:null,u=!!e?.isOutOfAssignmentRange,d=u?null:e?.isHoliday?`holiday`:l??(e?.isWeekOff?`weekoff`:null),f=e?.status;return[`timesheet-day-cell`,u?`timesheet-day-cell--out-of-range`:!c&&d?Ng[d]??``:``,e?.isFuture?`timesheet-day-cell--future`:``,f===`rejected`?`timesheet-day-cell--rejected`:``,f===`approved`?`timesheet-day-cell--approved`:``,n?`timesheet-day-cell--selected`:``,t?`timesheet-day-cell--unlogged-highlight`:``,r?`timesheet-day-cell--selectable`:``,i?`timesheet-day-cell--review`:``].filter(Boolean).join(` `)}function Bg({day:e,readonly:t=!1,selected:n=!1,isUnloggedHighlight:r=!1,onSelect:i,onQuickLog:a,splitMode:o=`proportional`,splitAngle:d=`135deg`,selectable:f=!1,onToggleSelect:p,reviewMode:m=!1,onApproveDay:h,onRejectDay:g}){let _=Pg(e?.workingHours?.ST),v=Pg(e?.workingHours?.OT),y=Pg(e?.leave?.CL)+Pg(e?.leave?.SL),b=e?.status,x=b===`approved`,S=b===`rejected`,C=x&&!m,w=!!e?.isOutOfAssignmentRange,T=!t&&!f&&!w&&!e?.isFuture&&!e?.isHoliday&&!e?.isWeekOff&&!e?.isLogged,E=o===`proportional`?Rg(e,{angle:d}):null,D=t=>{t.stopPropagation(),a?.(e?.date)},O=()=>{if(f){p?.(e?.date);return}i?.(e)},k=m&&e?.isLogged,A=(0,l.jsxs)(`button`,{type:`button`,className:zg(e,{isUnloggedHighlight:r,selected:n,selectable:f,reviewMode:m}),style:E?{background:E}:void 0,disabled:t&&!k||e?.isFuture||w||C&&!m,onClick:O,children:[(0,l.jsxs)(`span`,{className:`timesheet-day-cell__top`,children:[(0,l.jsxs)(`span`,{className:`timesheet-day-cell__date`,children:[e?.date?(0,u.default)(e.date).date():`-`,S&&(0,l.jsx)(`span`,{className:`timesheet-day-cell__reject-dot`})]}),(0,l.jsxs)(`span`,{className:`timesheet-day-cell__top-right`,children:[T&&(0,l.jsx)(s.Tooltip,{title:`Quick log 8h`,placement:`top`,children:(0,l.jsx)(c.ClockCircleOutlined,{className:`timesheet-day-cell__quick-log-icon`,onClick:D})}),!T&&!w&&!e?.isHoliday&&!e?.isWeekOff&&!e?.isFuture&&(0,l.jsx)(c.ClockCircleOutlined,{className:`timesheet-day-cell__quick-log-icon timesheet-day-cell__quick-log-icon--logged`})]})]}),(0,l.jsxs)(`span`,{className:`timesheet-day-cell__body`,children:[!w&&e?.isHoliday&&(0,l.jsx)(s.Tag,{color:`purple`,className:`timesheet-type-tag`,children:`H`}),!w&&e?.isWeekOff&&!e?.isLogged&&(0,l.jsx)(kg,{type:`secondary`,className:`timesheet-no-log`,children:`Off`}),_>0&&(0,l.jsxs)(`span`,{className:`timesheet-hour-label`,children:[(0,l.jsx)(`span`,{className:`timesheet-hour-value`,children:Fg(_)}),(0,l.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-st`,children:` s`})]}),v>0&&(0,l.jsxs)(`span`,{className:`timesheet-hour-label timesheet-hour-label--ot`,children:[(0,l.jsx)(`span`,{className:`timesheet-hour-value`,children:Fg(v)}),(0,l.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-ot`,children:` o`})]}),y>0&&(0,l.jsxs)(`span`,{className:`timesheet-hour-label timesheet-hour-label--leave${E?` timesheet-hour-label--split-end`:``}`,children:[(0,l.jsx)(`span`,{className:`timesheet-hour-value`,children:Fg(y)}),(0,l.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-leave`,children:` L`})]}),!w&&!e?.isLogged&&!e?.isHoliday&&!e?.isWeekOff&&!e?.isFuture&&(0,l.jsx)(kg,{type:`secondary`,className:`timesheet-no-log`,children:`No log`})]}),x&&(0,l.jsx)(c.CheckOutlined,{className:`timesheet-day-cell__verdict timesheet-day-cell__verdict--approved`}),S&&(0,l.jsx)(c.CloseCircleOutlined,{className:`timesheet-day-cell__verdict timesheet-day-cell__verdict--rejected`}),m&&e?.isLogged&&(h||g)&&(0,l.jsxs)(`span`,{className:`timesheet-day-review-actions`,children:[h&&(0,l.jsx)(`span`,{role:`button`,tabIndex:-1,className:`ts-approve`,title:`Approve this day`,onClick:t=>{t.stopPropagation(),h(e?.date)},children:(0,l.jsx)(c.CheckOutlined,{})}),g&&(0,l.jsx)(`span`,{role:`button`,tabIndex:-1,className:`ts-reject`,title:`Reject this day`,onClick:t=>{t.stopPropagation(),g(e?.date)},children:(0,l.jsx)(c.CloseCircleOutlined,{})})]})]});return S&&e?.rejectionReason?(0,l.jsx)(s.Tooltip,{title:e.rejectionReason,placement:`top`,children:(0,l.jsx)(`span`,{style:{display:`block`,width:`100%`},children:A})}):A}var Vg=e=>e==null?``:`${e}`,Hg=e=>e===``||e===void 0?void 0:Number(e);function Ug({open:e,day:t,saving:r=!1,onCancel:i,onSubmit:a,hoursStep:d,policy:f}){let[p]=s.Form.useForm(),m=s.Form.useWatch(`ST`,p),h=s.Form.useWatch(`OT`,p),g=s.Form.useWatch(`Leave`,p),_=(0,o.useMemo)(()=>({...yg,...d?{step:d}:null,...f}),[d,f]);(0,o.useEffect)(()=>{if(!e)return;let n=wg(t),r={ST:Pg(t?.workingHours?.ST),OT:Pg(t?.workingHours?.OT),Leave:Pg(t?.leave?.CL)+Pg(t?.leave?.SL)},i=Dg(n,r,[],_);p.setFieldsValue({...r,...i})},[t,p,e,_]);let v=e=>({getFieldValue:n})=>({validator(){let{errorsByField:r}=Eg(t,{ST:n(`ST`),OT:n(`OT`),Leave:n(`Leave`)},_),i=r[e];return i?Promise.reject(Error(i)):Promise.resolve()}}),y=()=>{p.validateFields([`ST`,`OT`,`Leave`]).catch(()=>{})},b=(e,n)=>{let r=Dg(wg(t),n,Object.keys(e),_);r&&p.setFieldsValue(r),y()},x=async()=>{let e;try{e=await p.validateFields()}catch(e){let t=document.querySelector(`.timesheet-log-modal`)??document;n.l(e,p,{root:t});return}let r=Pg(e.ST),i=Pg(e.OT),o=Pg(e.Leave),s=[r,i,o].filter(e=>e>0).length;a?.({date:t?.date,logType:s>1?`mixed`:i>0?`overtime`:o>0?`leave`:`working`,workingHours:{ST:r,OT:i},leave:{CL:o,SL:0},isHoliday:!!t?.isHoliday,isWeekOff:!!t?.isWeekOff,notes:``})},S=t?.isHoliday,C=!!t?.isWeekOff&&!S,w=t?.date?(0,u.default)(t.date).format(`MMM DD, YYYY`):`Log time`,T=(0,o.useMemo)(()=>Eg(t,{ST:m,OT:h,Leave:g},_),[t,m,h,g,_]);return(0,l.jsxs)(s.Modal,{rootClassName:`timesheet-log-modal`,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(kg,{strong:!0,children:w}),t?.isHoliday&&(0,l.jsx)(s.Tag,{color:`purple`,children:`Holiday`}),t?.isWeekOff&&(0,l.jsx)(s.Tag,{children:`Week Off`})]}),open:e,onCancel:i,onOk:x,confirmLoading:r,okText:`Save`,cancelText:`Cancel`,destroyOnHidden:!0,width:340,footer:(e,{OkBtn:t,CancelBtn:n})=>(0,l.jsxs)(s.Space,{style:{width:`100%`,justifyContent:`flex-end`},children:[(0,l.jsx)(n,{}),!S&&(0,l.jsx)(t,{})]}),children:[t?.rejectionReason&&(0,l.jsxs)(`div`,{className:`timesheet-log-reject`,children:[(0,l.jsxs)(`div`,{className:`timesheet-log-reject__note`,children:[(0,l.jsx)(c.CloseCircleOutlined,{className:`timesheet-log-reject__icon`}),(0,l.jsxs)(`div`,{className:`timesheet-log-reject__body`,children:[(0,l.jsx)(`span`,{className:`timesheet-log-reject__title`,children:`Sent back by your reviewer`}),(0,l.jsx)(`span`,{className:`timesheet-log-reject__reason`,children:t.rejectionReason})]})]}),(0,l.jsxs)(`div`,{className:`timesheet-log-reject__proof`,children:[(0,l.jsx)(c.UploadOutlined,{className:`timesheet-log-reject__proof-icon`}),(0,l.jsxs)(`div`,{className:`timesheet-log-reject__body`,children:[(0,l.jsx)(`span`,{className:`timesheet-log-reject__title timesheet-log-reject__title--proof`,children:`To fix it`}),(0,l.jsxs)(`ol`,{className:`timesheet-log-reject__steps`,children:[(0,l.jsx)(`li`,{children:`Correct the hours below.`}),(0,l.jsx)(`li`,{children:`Replace the proof / screenshot so it matches.`}),(0,l.jsx)(`li`,{children:`Save, then re-submit your timesheet.`})]})]})]})]}),S?(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`Holiday — no manual log required.`}):(0,l.jsxs)(l.Fragment,{children:[C&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`Week off — overtime only.`,style:{marginBottom:12}}),(0,l.jsxs)(s.Form,{form:p,layout:`vertical`,className:`timesheet-log-form`,validateTrigger:[`onChange`,`onBlur`],onValuesChange:b,children:[(0,l.jsx)(s.Form.Item,{name:`ST`,label:(0,l.jsxs)(`span`,{style:{color:`#1d4ed8`,fontWeight:600},children:[`Standard `,(0,l.jsx)(`span`,{style:{fontWeight:400,color:`#6b7280`},children:`hrs`})]}),dependencies:[`Leave`],rules:[v(`ST`)],extra:!T.errorsByField.ST&&T.fields.ST.disabled?`Disabled on a week off.`:void 0,children:(0,l.jsx)(s.InputNumber,{step:T.fields.ST.step,disabled:T.fields.ST.disabled,style:{width:`100%`},formatter:Vg,parser:Hg,addonAfter:(0,l.jsx)(`span`,{style:{color:`#1d4ed8`,fontWeight:700},children:`s`})})}),(0,l.jsx)(s.Form.Item,{name:`OT`,label:(0,l.jsxs)(`span`,{style:{color:`#15803d`,fontWeight:600},children:[`Overtime `,(0,l.jsx)(`span`,{style:{fontWeight:400,color:`#6b7280`},children:`hrs`})]}),dependencies:[`ST`],rules:[v(`OT`)],extra:!T.errorsByField.OT&&T.fields.OT.disabled?`Complete 8 standard hours to log overtime.`:void 0,children:(0,l.jsx)(s.InputNumber,{step:T.fields.OT.step,disabled:T.fields.OT.disabled,style:{width:`100%`},formatter:Vg,parser:Hg,addonAfter:(0,l.jsx)(`span`,{style:{color:`#15803d`,fontWeight:700},children:`o`})})}),(0,l.jsx)(s.Form.Item,{name:`Leave`,label:(0,l.jsxs)(`span`,{style:{color:`#b45309`,fontWeight:600},children:[`Leave `,(0,l.jsx)(`span`,{style:{fontWeight:400,color:`#6b7280`},children:`hrs`})]}),dependencies:[`ST`],rules:[v(`Leave`)],extra:!T.errorsByField.Leave&&T.fields.Leave.disabled?C?`Disabled on a week off.`:`Maximum reached — 8 regular hours allocated.`:void 0,children:(0,l.jsx)(s.InputNumber,{step:T.fields.Leave.step,disabled:T.fields.Leave.disabled,style:{width:`100%`},formatter:Vg,parser:Hg,addonAfter:(0,l.jsx)(`span`,{style:{color:`#b45309`,fontWeight:700},children:`L`})})})]})]})]})}function Wg({count:e=0,total:t=0,hours:n=8,loading:r=!1,onConfirm:i,onCancel:a,onSelectAll:o,onSelectNone:u}){return(0,l.jsxs)(`div`,{className:`timesheet-quicklog-bar`,children:[(0,l.jsxs)(s.Space,{size:8,wrap:!0,children:[(0,l.jsx)(kg,{strong:!0,children:e===0?`No days selected`:`Log ${n}h standard on ${e} day${e===1?``:`s`}`}),t>0&&(0,l.jsxs)(kg,{type:`secondary`,style:{fontSize:12},children:[e,` of `,t,` eligible · click a day to deselect it`]})]}),(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(s.Button,{size:`small`,onClick:o,disabled:e===t,children:`Select all`}),(0,l.jsx)(s.Button,{size:`small`,onClick:u,disabled:e===0,children:`Clear`}),(0,l.jsx)(s.Button,{size:`small`,onClick:a,children:`Cancel`}),(0,l.jsx)(s.Button,{size:`small`,type:`primary`,icon:(0,l.jsx)(c.ClockCircleOutlined,{}),loading:r,disabled:e===0,onClick:i,children:`Confirm`})]})]})}function Gg({open:e=!1,loading:t=!1,onSave:n,onCancel:r}){let[i,a]=(0,o.useState)(``);return(0,o.useEffect)(()=>{e&&a(``)},[e]),(0,l.jsx)(s.Modal,{title:`Rejection Reason`,open:e,onCancel:r,footer:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,danger:!0,disabled:!i.trim(),loading:t,onClick:()=>n?.(i.trim()),children:`Reject`})]}),destroyOnHidden:!0,children:(0,l.jsx)(s.Form,{layout:`vertical`,children:(0,l.jsx)(s.Form.Item,{label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(`span`,{style:{color:`#ff4d4f`},children:`*`}),` Comments`]}),help:i.trim()?``:`Rejection reason is required`,validateStatus:i.trim()?``:`error`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,maxLength:1e3,showCount:!0,placeholder:`Enter reason for rejection...`,value:i,onChange:e=>a(e.target.value)})})})})}function Kg({loading:e=!1,disabled:t=!1,onQuickLog:r}){return(0,l.jsx)(s.Card,{size:`small`,className:`timesheet-quick-log`,children:(0,l.jsx)(s.Space,{wrap:!0,children:(0,l.jsx)(n.ut,{variant:`primary`,icon:(0,l.jsx)(c.ClockCircleOutlined,{}),loading:e,disabled:t,onClick:()=>r?.(`businessDays`),children:`Quick Log (8h s)`})})})}var qg={".pdf":[c.FilePdfOutlined,`pdf`],".doc":[c.FileWordOutlined,`word`],".docx":[c.FileWordOutlined,`word`],".xls":[c.FileExcelOutlined,`excel`],".xlsx":[c.FileExcelOutlined,`excel`],".csv":[c.FileExcelOutlined,`excel`],".png":[c.FileImageOutlined,`image`],".jpg":[c.FileImageOutlined,`image`],".jpeg":[c.FileImageOutlined,`image`],".gif":[c.FileImageOutlined,`image`],".webp":[c.FileImageOutlined,`image`]};function Jg({fileName:e}){let[t,n]=qg[Kc(e)]??[c.FileOutlined,`default`];return(0,l.jsx)(t,{className:`timesheet-proof__type-icon timesheet-proof__type-icon--${n}`})}function Yg({proof:e,uploading:t=!1,disabled:n=!1,required:r=!1,onUpload:i,onPreview:a,onRemove:o,previewUrl:u}){let d=!!e?.fileName,f=e?.size?qc(e.size):``,p=Kc(e?.fileName??``).replace(`.`,``).toUpperCase(),m=e?.pending?`Selected — uploads on submit`:`Previously uploaded`,h=[f||p,m].filter(Boolean).join(` • `),g=!n&&!(d&&o);return(0,l.jsxs)(s.Card,{className:`timesheet-proof${d?` timesheet-proof--filled`:``}`,size:`small`,title:(0,l.jsxs)(l.Fragment,{children:[`Proof / screenshot`,r&&(0,l.jsx)(`span`,{className:`timesheet-proof__required`,children:` *`})]}),children:[d?(0,l.jsxs)(`div`,{className:`timesheet-proof__file`,children:[(0,l.jsx)(`span`,{className:`timesheet-proof__file-icon`,children:(0,l.jsx)(Jg,{fileName:e.fileName})}),(0,l.jsxs)(`span`,{className:`timesheet-proof__file-info`,children:[(0,l.jsx)(`span`,{className:`timesheet-proof__file-name`,title:e.fileName,children:e.fileName}),(0,l.jsx)(`span`,{className:`timesheet-proof__file-meta`,children:h})]}),(0,l.jsxs)(s.Space,{size:6,className:`timesheet-proof__file-actions`,children:[a&&(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),className:`timesheet-proof__view-btn`,onClick:()=>a(e),children:`View`}),o&&(0,l.jsx)(s.Tooltip,{title:`Remove`,children:(0,l.jsx)(s.Button,{size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),"aria-label":`Remove ${e.fileName}`,className:`timesheet-proof__delete-btn`,onClick:()=>o(e)})})]})]}):(0,l.jsx)(kg,{type:`secondary`,style:{fontSize:12},children:`Upload Proof`}),g&&(0,l.jsx)(s.Upload,{beforeUpload:e=>(i?.(e),!1),maxCount:1,showUploadList:!1,disabled:n,accept:`.pdf,.doc,.docx,.png,.jpg,.jpeg`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.UploadOutlined,{}),loading:t,block:!0,size:`small`,style:{marginTop:6},children:d?`Replace proof`:`Upload proof`})}),(0,l.jsx)(kg,{type:`secondary`,className:`timesheet-proof__hint`,style:{fontSize:11},children:`Supports: .pdf, .doc, .docx, .png, .jpg — max 10 MB`})]})}function Xg({value:e,disabled:t=!1,onChange:n,label:r=`Notes / Comments`,maxLength:i=1e3}){let a=(e??``).length;return(0,l.jsxs)(s.Card,{className:`timesheet-notes`,size:`small`,title:r,children:[(0,l.jsx)(`div`,{className:`timesheet-notes__field`,children:(0,l.jsx)(s.Input.TextArea,{className:`timesheet-notes__textarea`,rows:5,maxLength:i,value:e,disabled:t,onChange:e=>n?.(e.target.value),placeholder:`Add notes or comments...`})}),(0,l.jsxs)(`div`,{className:`timesheet-notes__count`,children:[a,` / `,i]})]})}function Zg({status:e,loading:t=!1,readonly:r=!1,rejectionReason:i,rejectionMode:a=`modal`,title:u=`Review Notes`,hint:d=`Review comment is mandatory while rejecting`,approveDisabled:f=!1,approveDisabledReason:p,rejectDisabled:m=!1,rejectDisabledReason:h,onSubmit:g,onApprove:_,onReject:v,onReopen:y}){let[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),[w,T]=(0,o.useState)(``),E=[`submitted`,`resubmitted`,`reopened`,`save_draft`].includes(e),D=e===`rejected`,O=e===`approved`,k=e===`submitted`||e===`resubmitted`,A=e===`reopened`,j=!e||e===`draft`||e===`not_submitted`,M=async e=>{C(!0);try{await v?.(e),x(!1)}finally{C(!1)}},N=()=>s.Modal.confirm({title:`Reopen timesheet?`,content:`This returns the month to the resource to correct and re-submit. It cannot be reopened once its invoice or payment has been processed.`,okText:`Reopen`,onOk:y}),P=()=>{let e=w.trim();if(!e){s.message.error(`A review comment is required to reject`);return}v?.(e)};if(a===`inline`)return(0,l.jsxs)(s.Card,{size:`small`,className:`timesheet-review-notes-card`,children:[(0,l.jsxs)(`div`,{className:`timesheet-review-notes-card__head`,children:[(0,l.jsx)(kg,{strong:!0,children:u}),(0,l.jsxs)(kg,{type:`secondary`,className:`timesheet-review-notes-card__hint`,children:[(0,l.jsx)(c.InfoCircleOutlined,{}),` `,d]})]}),i&&D&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:`Rejected`,description:i,className:`timesheet-review-notes-card__alert`}),k?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Input.TextArea,{rows:3,maxLength:1e3,value:w,onChange:e=>T(e.target.value),placeholder:`Add your note`,className:`timesheet-review-notes-card__input`}),(0,l.jsxs)(`div`,{className:`timesheet-review-notes-card__actions`,children:[(0,l.jsx)(s.Tooltip,{title:m?h:``,children:(0,l.jsx)(s.Button,{danger:!0,loading:t,disabled:m,onClick:P,children:`Reject`})}),(0,l.jsx)(s.Tooltip,{title:f?p:``,children:(0,l.jsx)(s.Button,{type:`primary`,loading:t,disabled:f,onClick:_,children:`Approve`})})]})]}):(0,l.jsxs)(`div`,{className:`timesheet-review-notes-card__decided`,children:[(0,l.jsxs)(kg,{type:`secondary`,children:[`This timesheet is `,e,`.`]}),(O||D)&&y?(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.InfoCircleOutlined,{}),loading:t,onClick:N,children:`Reopen`}):null]})]});let F=`Submit`,I=!1;return k&&(F=e===`resubmitted`?`Re-Submitted`:`Submitted`,I=!0),(D||A)&&(F=`Re-Submit`,I=!1),O&&(F=`Approved`,I=!0),(0,l.jsxs)(l.Fragment,{children:[i&&D&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:`Rejected`,description:i,style:{marginBottom:8}}),(0,l.jsxs)(`div`,{className:`timesheet-action-bar`,children:[(j||D||A||k||O)&&g&&(0,l.jsx)(n.ut,{variant:`primary`,icon:(0,l.jsx)(c.SendOutlined,{}),loading:t,disabled:I,onClick:I?void 0:g,block:!0,children:F}),E&&_&&(0,l.jsx)(n.ut,{variant:`primary`,icon:(0,l.jsx)(c.CheckOutlined,{}),loading:t,onClick:_,children:`Approve`}),E&&v&&(0,l.jsx)(s.Button,{danger:!0,loading:t,onClick:()=>x(!0),children:`Reject`}),(O||D)&&y&&(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.InfoCircleOutlined,{}),loading:t,onClick:N,children:`Reopen`})]}),(0,l.jsx)(Gg,{open:b,loading:S,onSave:M,onCancel:()=>x(!1)})]})}var Qg=e=>Number.isFinite(Number(e))?Number(e):0;function $g(e,t,{isToday:n}={}){let r=Number(e.slice(-2)),i=Qg(t?.workingHours?.ST),a=Qg(t?.workingHours?.OT),o=Qg(t?.leave?.CL)+Qg(t?.leave?.SL),c=i+a,d=!!t?.isLogged||c>0||o>0,f=t?t.isHoliday?`holiday`:d&&c>0?`work`:o>0?`leave`:t.isWeekOff?`weekoff`:`blank`:`blank`,p=[`fin-daycell`,`fin-daycell--${f}`,t?.status===`approved`?`fin-daycell--approved`:``,t?.status===`rejected`?`fin-daycell--rejected`:``,n?`fin-daycell--today`:``].filter(Boolean).join(` `),m=f===`work`?Rg(t):null,h=(0,l.jsxs)(`div`,{className:p,style:m?{background:m}:void 0,children:[(0,l.jsx)(`span`,{className:`fin-daycell__num`,children:r}),f===`work`?(0,l.jsxs)(`span`,{className:`fin-daycell__hours`,children:[c%1==0?c:c.toFixed(1),`h`,a>0?(0,l.jsx)(`em`,{children:` +OT`}):null]}):f===`leave`?(0,l.jsx)(`span`,{className:`fin-daycell__hours`,children:`Leave`}):f===`holiday`?(0,l.jsx)(`span`,{className:`fin-daycell__hours`,children:`Holiday`}):null]});if(!t)return h;let g=[(0,u.default)(e).format(`ddd, MMM D`),i?`ST ${i}h`:null,a?`OT ${a}h`:null,o?`Leave ${o}h`:null,t.isHoliday?`Holiday`:null,t.status===`rejected`?`Rejected${t.rejectionReason?` — ${t.rejectionReason}`:``}`:null,t.status===`approved`?`Approved`:null].filter(Boolean).join(` · `);return(0,l.jsx)(s.Tooltip,{title:g,children:h})}var e_=[{label:`Standard`,color:`#3b82f6`},{label:`Overtime`,color:`#22c55e`},{label:`Leave`,color:`#f59e0b`},{label:`Holiday`,color:`#8b5cf6`},{label:`Rejected`,color:`#ef4444`}];function t_({dailyLogs:e=[],timesheetSummary:t={},rate:n=0,rateLabel:r=`Rate`,amountLabel:i=`Amount`,approvedHours:a,month:d,year:f,monthLabel:p,extraEquationTerms:m=[]}){let h=(0,o.useMemo)(()=>af(e),[e]),g=(0,o.useMemo)(()=>of(e,n),[e,n]),_=(0,o.useMemo)(()=>lf(e,n),[e,n]),v=h.totalHours||Qg(a),y=v*Qg(n),b=Math.max(1,...g.map(e=>e.total)),x=Math.max(1,..._.map(e=>e.total)),S=[{key:`hours`,label:`Approved Hours`,value:Vd(v),icon:(0,l.jsx)(c.ClockCircleOutlined,{}),tone:`brand`,sub:`${h.loggedDays} logged days`},{key:`st`,label:`Standard`,value:Vd(h.stHours||t.totalSTHours),icon:(0,l.jsx)(c.FieldTimeOutlined,{}),tone:`neutral`},{key:`ot`,label:`Overtime`,value:Vd(h.otHours||t.totalOTHours),icon:(0,l.jsx)(c.ThunderboltOutlined,{}),tone:`warning`},{key:`leave`,label:`Leave`,value:Vd(h.leaveHours||t.leaveHours),icon:(0,l.jsx)(c.RestOutlined,{}),tone:`neutral`,sub:`${h.leaveDays} days`},{key:`avg`,label:`Avg / Logged Day`,value:Vd(h.avgHoursPerLoggedDay),icon:(0,l.jsx)(c.CalendarOutlined,{}),tone:`info`},{key:`amount`,label:i,value:Bd(y),icon:(0,l.jsx)(c.DollarOutlined,{}),tone:`success`}],C=[{label:`Approved days`,value:h.approvedDays,tone:`success`},{label:`Pending days`,value:h.pendingDays,tone:`gold`},{label:`Rejected days`,value:h.rejectedDays,tone:h.rejectedDays?`danger`:`neutral`},{label:`Holidays`,value:h.holidayDays,tone:`neutral`},{label:`Week-offs`,value:h.weekOffDays,tone:`neutral`}],w=[{title:`Date`,dataIndex:`date`,width:150,render:(e,t)=>(0,l.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,l.jsx)(`span`,{className:`fin-cell__primary`,children:e?(0,u.default)(e).format(`ddd, MMM D`):`—`}),t.isHoliday?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:`Holiday`}):null]})},{title:`ST`,dataIndex:`st`,align:`right`,width:70,render:e=>e.toFixed(2)},{title:`OT`,dataIndex:`ot`,align:`right`,width:70,render:e=>e?e.toFixed(2):`—`},{title:`Leave`,dataIndex:`leave`,align:`right`,width:70,render:e=>e?e.toFixed(2):`—`},{title:`Total`,dataIndex:`total`,align:`right`,width:170,render:e=>(0,l.jsxs)(`div`,{className:`fin-bar`,children:[(0,l.jsx)(`span`,{className:`fin-bar__track`,children:(0,l.jsx)(`span`,{className:`fin-bar__fill`,style:{width:`${e/b*100}%`}})}),(0,l.jsx)(`span`,{className:`fin-bar__value`,children:e.toFixed(2)})]})},{title:i,dataIndex:`amount`,align:`right`,width:110,render:e=>(0,l.jsx)(`strong`,{className:`fin-cell-money__value`,children:Bd(e)})},{title:`Status`,dataIndex:`status`,align:`center`,width:100,render:e=>(0,l.jsx)(vf,{status:e,size:`sm`})},{title:`Reviewer`,dataIndex:`reviewer`,width:130,render:e=>e||(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:`—`})},{title:`Remarks`,dataIndex:`remarks`,ellipsis:!0,render:e=>e?(0,l.jsx)(s.Tooltip,{title:e,children:(0,l.jsx)(`span`,{className:`fin-remarks`,children:e})}):(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:`—`})}],T=[{title:`Week`,dataIndex:`label`,render:(e,t)=>(0,l.jsx)(n_,{primary:e,secondary:`${t.days} logged days`})},{title:`ST`,dataIndex:`st`,align:`right`,width:64,render:e=>e.toFixed(1)},{title:`OT`,dataIndex:`ot`,align:`right`,width:64,render:e=>e?e.toFixed(1):`—`},{title:`Hours`,dataIndex:`total`,align:`right`,width:150,render:e=>(0,l.jsxs)(`div`,{className:`fin-bar`,children:[(0,l.jsx)(`span`,{className:`fin-bar__track`,children:(0,l.jsx)(`span`,{className:`fin-bar__fill`,style:{width:`${e/x*100}%`}})}),(0,l.jsx)(`span`,{className:`fin-bar__value`,children:e.toFixed(1)})]})},{title:i,dataIndex:`amount`,align:`right`,width:110,render:e=>(0,l.jsx)(`strong`,{className:`fin-cell-money__value`,children:Bd(e)})}];return(0,l.jsxs)(`div`,{className:`fin-analysis`,children:[(0,l.jsx)(yf,{items:S,compact:!0}),(0,l.jsx)(`div`,{className:`fin-daychips`,children:C.map(e=>(0,l.jsxs)(`span`,{className:`fin-badge fin-badge--${e.tone}`,children:[e.value,` `,e.label]},e.label))}),(0,l.jsx)(Sf,{className:`fin-equation-card`,children:(0,l.jsx)(Tf,{terms:[{value:Vd(v),label:`Approved Hours`},{op:`×`},{value:Hd(n),label:r},{op:`=`},{value:Bd(y),label:i,tone:`accent`},...m]})}),(0,l.jsxs)(`div`,{className:`fin-analysis__grid`,children:[(0,l.jsx)(A,{className:`fin-heatmap`,days:e,startDay:`Mon`,readonly:!0,year:f,month:d,monthLabel:p,legend:e_,renderDayContent:$g,onPrevMonth:()=>{},onNextMonth:()=>{}}),(0,l.jsx)(Sf,{title:`Weekly Breakdown`,className:`fin-weekly`,children:(0,l.jsx)(s.Table,{className:`fin-analysis-table`,size:`small`,rowKey:e=>e.label,pagination:!1,dataSource:_,columns:T,locale:{emptyText:`No logged weeks`}})})]}),(0,l.jsx)(Sf,{title:`Daily Breakdown — Hours × ${r} = ${i}`,children:(0,l.jsx)(s.Table,{className:`fin-analysis-table`,size:`small`,rowKey:`key`,pagination:!1,dataSource:g,columns:w,scroll:{x:900},locale:{emptyText:`No approved day logs to analyse`},summary:()=>g.length?(0,l.jsxs)(s.Table.Summary.Row,{className:`fin-analysis-total`,children:[(0,l.jsx)(s.Table.Summary.Cell,{index:0,children:(0,l.jsx)(`strong`,{children:`Total`})}),(0,l.jsx)(s.Table.Summary.Cell,{index:1,align:`right`,children:h.stHours.toFixed(2)}),(0,l.jsx)(s.Table.Summary.Cell,{index:2,align:`right`,children:h.otHours?h.otHours.toFixed(2):`—`}),(0,l.jsx)(s.Table.Summary.Cell,{index:3,align:`right`,children:h.leaveHours?h.leaveHours.toFixed(2):`—`}),(0,l.jsx)(s.Table.Summary.Cell,{index:4,align:`right`,children:(0,l.jsx)(`strong`,{children:v.toFixed(2)})}),(0,l.jsx)(s.Table.Summary.Cell,{index:5,align:`right`,children:(0,l.jsx)(`strong`,{children:Bd(y)})}),(0,l.jsx)(s.Table.Summary.Cell,{index:6}),(0,l.jsx)(s.Table.Summary.Cell,{index:7}),(0,l.jsx)(s.Table.Summary.Cell,{index:8})]}):null})})]})}function n_({primary:e,secondary:t}){return(0,l.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,l.jsx)(`span`,{className:`fin-cell__primary`,children:e}),t?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}var r_=`submissionManager`,i_=`onboardingManager`,a_=`cfo`,o_=`onlyFinance`,s_=`submissionManagerReapprove`,c_=`onboardingManagerReapprove`;function l_(e,t={}){return e?String(e).replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])):``}var u_={rateUnit:`hr`,currency:`$`,labels:{employerVms:{required:`Employer VMS`,notRequired:`Not required`,notRequiredSub:`VMS not required for this submission`,unavailable:`VMS Not available`,unavailableSub:`No VMS percentage configured for this employer`}},header:{crumbSeparator:` · `,crumbFields:[{key:`client`,source:[`record.client.clientName`,`identity.client`]},{key:`reqId`,source:[`record.job.jobReferenceId`,`identity.reqId`]}]},sections:{jobClient:{title:`Basic Details`,items:[{key:`jobTitle`,label:`Job Title`,source:[`record.job.jobTitle`,`identity.role`]},{key:`jobLocation`,label:`Job Location`,source:[`identity.location`,`record.job.jobLocation`]},{key:`candidateName`,label:`Candidate Name`,source:[`identity.name`,`record.submission.candidateFullName`]},{key:`candidateEmail`,label:`Candidate Email`,source:[`identity.email`,`record.submission.email`]},{key:`contractType`,label:`Employment Type`,source:[`inputs.contractType`]},{key:`employer`,label:`Employer`,source:[`record.submission.supplierName`,`identity.vendor`]},{key:`submittedBy`,label:`Submitted By`,source:[`identity.submittedBy`,`record.submission.signatureEmail`]},{key:`submittedAt`,label:`Submitted Date`,source:[`identity.submittedAt`,`record.submission.createdAt`],format:`date`}]},rateBreakdown:{proposed:{policy:{decimals:2,min:0,message:`Enter a valid amount — numbers only, up to 2 decimal places.`},overClientPolicy:`warn`,overClient:{title:`Proposed rate is above the Client Job Rate`,body:`You are asking the client for {delta} ({pct}) more than the rate posted on this job. Approving is allowed — the higher rate will be what goes to the client and what payroll is finalised against.`,confirmTitle:`Approve above the client rate?`,confirmBody:`The proposed rate of {proposed} exceeds the Client Job Rate of {client} by {delta} ({pct}). This will be recorded against your approval.`,confirmOk:`Approve anyway`,confirmCancel:`Go back`,blockMessage:`Proposed rate can’t exceed the Client Job Rate ({client}).`}}},referral:{policy:{decimals:2,min:0,message:`Enter a valid amount — numbers only, up to 2 decimal places.`}}}},d_=[{key:`submitted`,label:`Recruiter Submitted`},{key:`manager`,label:`Manager Approved`},{key:`onboarding`,label:`Onboarding Confirmed`},{key:`cfo`,label:`CFO Review`}],f_={[r_]:{title:`Finance Review`,statusLabel:`Pending Your Approval`,trail:{steps:d_.slice(0,2),current:`manager`,show:!1},sections:{jobClient:{show:!0},clientJobRate:{show:!0,note:!0},rateBreakdown:{show:!0,employer:{show:!0,editable:!1},proposed:{show:!0,editable:!0}},referral:{show:!0,toggle:!0,toggleLabel:`Add Referral`,toggleHint:`Include a referral payout — reduces the margin below.`,mode:`select`,source:`referrals`,optionLabelField:`referalCompanyName`,rateEditable:!0,typeField:!0,lastRate:!0,linkBothWays:!0}},margin:{label:`Realtek Margin`,formula:`netProposed-netEmployer-referral`},actions:{primary:{key:`approve`,label:`Approve`,tone:`primary`,api:`submissionApprove`,requireProposedRate:!0},reject:{key:`reject`,label:`Reject`,tone:`warn`,api:`submissionReject`,openPopup:`reject`}},persist:{proposedRateHistory:!0,referralLink:!0,rateHistory:!0},readOnly:!1},[i_]:{title:`Onboarding Review`,statusLabel:`Pending Onboarding`,trail:{steps:d_.slice(0,3),current:`onboarding`,show:!0},sections:{jobClient:{show:!0},clientJobRate:{show:!0,note:!0},rateBreakdown:{show:!0,editToggle:!0,employer:{show:!0,editable:!1,locked:!0},proposed:{show:!0,editable:!0}},referral:{show:!0,toggle:!0,toggleLabel:`Add Referral`,toggleHint:`Include a referral payout — reduces the total margin below.`,mode:`select`,source:`referrals`,optionLabelField:`referalCompanyName`,rateEditable:!0,typeField:!0,lastRate:!0,linkBothWays:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`},actions:{primary:{key:`send`,label:`Send for CFO Approval`,tone:`primary`,api:`cfoSend`},reject:{key:`reject`,label:`Reject`,tone:`warn`,api:`onboardingReject`,requireReason:!0}},persist:{proposedRateHistory:!0,referralLink:!0,referralRateOnEngagement:!0,rateHistory:!0},readOnly:!1},cfo:{title:`Final Approval`,statusLabel:`Pending CFO Sign-off`,trail:{steps:d_,current:`cfo`,show:!0},sections:{jobClient:{show:!0},clientJobRate:{show:!0,note:!0},rateBreakdown:{show:!0,finalBadge:!0,employer:{show:!0,editable:!1},proposed:{show:!0,editable:!1}},referral:{show:`ifEnabled`,mode:`print`,typeChip:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`},actions:{primary:{key:`approve`,label:`Approve & Finalize`,tone:`primary`,api:`cfoApprove`},reject:{key:`reject`,label:`Reject`,tone:`warn`,api:`cfoReject`,requireReason:!0}},persist:{rateHistory:!1},readOnly:!0},[o_]:{title:`Finance Summary`,statusLabel:``,header:{show:!1},trail:{steps:[],current:``,show:!1},sections:{jobClient:{show:!1},clientJobRate:{show:!1},rateBreakdown:{show:!0,finalBadge:!0,employer:{show:!0,editable:!1},proposed:{show:!0,editable:!1,locked:!0}},referral:{show:`ifExists`,mode:`print`,typeChip:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`},actions:{show:!1},persist:{rateHistory:!1},readOnly:!0}};function p_(e,{title:t,primaryLabel:n,primaryApi:r}){return{...e,title:t,statusLabel:`Rejected by CFO — Re-approval Needed`,rejection:{show:!0,sources:[`submission.cfoRejectionReason`,`engagement.financeApproval.rejectionReason`,`engagement.financeApproval.remarks`,`financeApprovalRequest.rejectionReason`,`rejectionReason`],title:`CFO Rejected This Request`},actions:{primary:{...e.actions.primary,label:n,...r?{api:r}:{}}}}}f_[s_]={...p_(f_[r_],{title:`Finance Re-Review`,primaryLabel:`Send For Approval`,primaryApi:`submissionReapproveSend`}),sections:{...f_[r_].sections,referral:{show:`ifExists`,mode:`print`,typeChip:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`}},f_[c_]=p_(f_[i_],{title:`Onboarding Re-Review`,primaryLabel:`Re-send for CFO Approval`});var m_=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function h_(e,t){if(!m_(t))return e===void 0?t:e;if(e===void 0)return t;if(!m_(e))return e;let n={...e};for(let[r,i]of Object.entries(t))n[r]=h_(e[r],i);return n}var g_=new Map;function __(e){let t=f_[e]??f_.cfo;return g_.has(t)||g_.set(t,h_(t,u_)),g_.get(t)}function v_(e,t){let n=e?.rejection?.sources??[];for(let e of n){let n=e.split(`.`).reduce((e,t)=>e?.[t],t);if(n!=null&&String(n).trim()!==``)return String(n)}return``}function y_(e){return String(e?.margin?.formula??``).includes(`referral`)}var b_=`W2`,x_=`C2C`,S_={rateUnit:`hr`,currency:`$`},C_=e=>{let t=Number(e);return Number.isFinite(t)?t:0},w_=e=>e===!0||e===`true`||e===1||e===`1`,T_=e=>e!=null&&e!==``,E_=(...e)=>e.find(T_),D_=e=>Math.round((C_(e)+2**-52)*100)/100;function O_(e){return Array.isArray(e)?e.length?e[e.length-1]:{}:e??{}}var k_=e=>String(e?.$oid??e?._id?.$oid??e?._id??e?.id??e??``);function A_(e=[]){let t={};return e.forEach(e=>{(e.fields??[]).forEach(e=>{let n=e.field??e.fieldName??e.name;n&&e.value!==void 0&&e.value!==null&&e.value!==``&&(t[n]=e.value)})}),t}function j_(e={}){let t={};for(let[n,r]of Object.entries(e)){let e=String(n).split(`.`),i=t;for(let t=0;t<e.length-1;t+=1){let n=e[t];(!i[n]||typeof i[n]!=`object`||Array.isArray(i[n]))&&(i[n]={}),i=i[n]}let a=e[e.length-1];i[a]&&typeof i[a]==`object`&&!Array.isArray(i[a])||(i[a]=r)}return t}function M_(e=[]){let t=e.find(e=>(e.fields??[]).some(e=>(e.field??e.name)===`employerId`));if(!t)return{};let n=Array.isArray(t.rows)?t.rows:null;if(n?.length)return n[n.length-1]??{};let r={};return(t.fields??[]).forEach(e=>{let t=e.field??e.name;t&&e.value!==void 0&&e.value!==null&&e.value!==``&&(r[t]=e.value)}),r}function N_(e,t,n){if(!e)return;let r=e[t];if(n===void 0)return r!=null&&r!==``?r:void 0;if(Array.isArray(r)&&r.length){let e=r[r.length-1]?.[n];if(e!=null&&e!==``)return e}else if(r&&typeof r==`object`){let e=r[n];if(e!=null&&e!==``)return e}let i=e[`${t}.${n}`];if(i!=null&&i!==``)return i;let a=e[`${t}.0.${n}`];if(a!=null&&a!==``)return a}function P_(e){let t=String(e??``).trim().toUpperCase().replace(/[\s_-]/g,``);return t===`W2`||t.includes(`W2`)?`W2`:`C2C`}function F_(e,t){return D_(C_(e)*C_(t)/100)}function I_(e={},t={},n={}){let r={...S_,...n??{}},i=e.submission??e??{},a=e.job??{},o=e.client??{},s=e.engagement??{},c=P_(N_(i,`contractType`)??s.onboardingType??e.contractType),l=a.jobPayDetails??{},u=C_(l.clientBudgetStart??N_(i,`clientBudget`,`clientBudgetStart`)),d=C_(l.clientBudgetEnd??N_(i,`clientBudget`,`clientBudgetEnd`))||u,f=d||u,p=O_(o.vmsFeeHistory)??{},m=t.clientVmsFee??o.vmsFee??{},h=T_(p.vmsPercentage)?C_(p.vmsPercentage):T_(o.vmsPercentage)?C_(o.vmsPercentage):m.isApplicable===!1?0:C_(E_(m.value,m.percent,typeof m==`number`?m:void 0,N_(i,`clientVmsPercent`),N_(i,`vmsPercent`))),g=String(E_(p.vmsPercentageType,o.vmsPercentageType)??`recurring`).toLowerCase(),_=C_(N_(i,`proposedRate`,`candidateProposedRate`)??e.proposedRateValue),v=E_(N_(i,`proposedRate`,`candidateProposedRateCurrencySymbol`),N_(i,`proposedRate`,`candidateProposedRateCurrency`),N_(i,`candidateBudget`,`candidateBudgetCurrencySymbol`),N_(i,`candidateBudget`,`candidateBudgetCurrency`),l.clientBudgetCurrencySymbol,l.clientBudgetCurrency,a.currency,a.currencySymbol,r.currency),y=ou(v,r.currency),b=E_(N_(i,`proposedRate`,`candidateProposedRateUnit`),N_(i,`candidateBudget`,`candidateBudgetUnit`),l.clientBudgetUnit,r.rateUnit),x=C_(N_(i,`candidateBudget`,`candidateBudgetStart`)??N_(i,`candidateBudget`,`candidateBudgetRate`)??N_(i,`candidateRate`,`candidateAcceptedRate`)),S=w_(N_(i,`submission_current_employer`,`isVmsRequired`)??N_(i,`submission_current_employer`,`isVMSRequired`)),C=C_(E_(N_(i,`submission_current_employer`,`vmsPercentage`),N_(i,`submission_current_employer`,`vmsCommission`),e.employer?.vmsPercentage,e.employer?.vmsCommission,s.vmsPercent)),w=C>0,T=S?C:0,E=String(N_(i,`submission_current_employer`,`vmsType`)??N_(i,`submission_current_employer`,`vmsCommissionType`)??`Recurring`),D=N_(i,`submission_current_employer`,`tax`);return{contractType:c,currency:y,currencyRaw:v,rateUnit:b,clientJobRate:f,clientJobRateFrom:u,clientJobRateTo:d,clientVmsPercent:h,clientVmsPercentageType:g,proposedRate:_,employerRate:x,employerVmsPercent:T,employerVmsPercentConfigured:C,employerVmsAvailable:w,employerVmsType:E,employerVmsRequired:S,locationTaxPercent:t.locationTaxPercent==null?D!=null&&D!==``?C_(D):L_(t.locationTaxRows,N_(i,`submission_current_employer`,`locationId`)??N_(i,`submission_current_employer`,`location`)??N_(i,`city`)??N_(i,`state`)??a.jobLocation):C_(t.locationTaxPercent)}}function L_(e,t){if(!Array.isArray(e)||!t)return 0;let n=String(t).trim().toLowerCase(),r=e.find(e=>{let t=String(e?.location??``).trim().toLowerCase();return t&&(t===n||n.includes(t)||t.includes(n))});return C_(r?.taxValue??r?.taxPercent)}function R_(e,t={}){let{contractType:n=`C2C`,currency:r=S_.currency,currencyRaw:i,rateUnit:a=S_.rateUnit,clientJobRate:o=0,clientJobRateFrom:s=0,clientJobRateTo:c=0,clientVmsPercent:l=0,clientVmsPercentageType:u=`recurring`,proposedRate:d=0,employerRate:f=0,employerVmsPercent:p=0,employerVmsPercentConfigured:m=0,employerVmsAvailable:h=!1,employerVmsType:g=`Recurring`,employerVmsRequired:_=!1,locationTaxPercent:v=0}=e??{},y=ou(r,S_.currency),b=t.proposedRate==null?C_(d):C_(t.proposedRate),x=!!t.includeReferral,S=x?C_(t.referralRate):0,C=(t.deductReferral==null?x:t.deductReferral)?S:0,w=F_(o,l),T=D_(o-w),E=F_(b,l),D=D_(b-E),O=n===`W2`,k=O?v:p,A=F_(f,k),j=D_(f-A),M=D_(D-j-C);return{contractType:n,currency:y,currencyRaw:i??y,rateUnit:a,rateUnitLabel:cu(a),rateUnitShort:uu(a),isW2:O,clientJobRate:D_(o),clientJobRateFrom:D_(s),clientJobRateTo:D_(c),clientVmsPercent:C_(l),clientVmsPercentageType:u,clientDiscount:w,netClientRate:T,proposedRate:D_(b),discountVms:E,netProposedRate:D,employerRate:D_(f),employerDeductionPercent:C_(k),employerDeduction:A,employerDeductionLabel:O?`Location Tax`:`Employer VMS`,employerVmsType:g,employerVmsRequired:!!_,employerVmsPercentConfigured:C_(m),employerVmsAvailable:!!h,netEmployerRate:j,includereferral:x,referralRate:D_(S),referralDeduction:D_(C),totalMargin:M,marginPositive:M>=0}}function z_(e,t,n={}){return R_(I_(e,t,n.defaults),n)}var B_={decimals:2,min:0};function V_(e){let t=String(e??``).trim();if(!t||/e/i.test(t))return t?1/0:0;let n=t.indexOf(`.`);return n===-1?0:t.length-n-1}function H_(e,t={}){let{decimals:n=B_.decimals,min:r,max:i}={...B_,...t};if(e==null||e===``)return!0;let a=String(e).trim();if(!/^-?\d*(\.\d*)?$/.test(a)||V_(a)>C_(n))return!1;let o=Number(a);return!(!Number.isFinite(o)||r!=null&&o<C_(r)||i!=null&&o>C_(i))}var U_=new Set([`Backspace`,`Delete`,`Tab`,`Enter`,`Escape`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`PageUp`,`PageDown`]);function W_(e={},t,n=``,r=null,i=null){if(U_.has(t)||String(t??``).length!==1)return!0;let{decimals:a=B_.decimals,min:o}={...B_,...e},s=String(n??``),c=r??s.length,l=i??c,u=s.slice(0,c)+t+s.slice(l),d=o==null||C_(o)<0;return t===`-`?d&&/^-?\d*(\.\d*)?$/.test(u):t===`.`?C_(a)>0&&/^-?\d*(\.\d*)?$/.test(u):!/^\d$/.test(t)||!/^-?\d*(\.\d*)?$/.test(u)?!1:V_(u)<=C_(a)}function G_(e,t={}){let{decimals:n=B_.decimals,min:r,max:i}={...B_,...t},a=C_(e),o=10**C_(n);return a=Math.round((a+2**-52)*o)/o,r!=null&&(a=Math.max(a,C_(r))),i!=null&&(a=Math.min(a,C_(i))),a}function K_(e,t,n=new Date){let r=n instanceof Date?n.toISOString():n;return[[`proposedRate`,e.proposedRate],[`discountVms`,e.discountVms],[`netProposedRate`,e.netProposedRate],[`employerRate`,e.employerRate],[e.isW2?`locationTax`:`employerVms`,e.employerDeduction],[`netEmployerRate`,e.netEmployerRate],[`referralRate`,e.referralRate],[`totalMargin`,e.totalMargin]].map(([e,n])=>({field:e,value:n,updatedBy:t,timestamp:r}))}function q_(e,t=S_.currency){let n=du(e);return pu(Number.isNaN(n)?0:n,t,{decimals:2})}var{TextArea:J_}=s.Input,Y_=(...e)=>e.find(e=>e!=null&&e!==``)??`-`;function X_(e){return String(e??``).toLowerCase().replace(/\s+/g,``)===`onetime`?`One Time`:`Recurring`}function Z_(e){let t=e?.$date??e;if(!t)return`-`;let r=(0,u.default)(t);return r.isValid()?r.format(n.Bn().dateFormat):`-`}function Q_(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}var $_={date:Z_};function ev(e,t){let n=(Array.isArray(e?.source)?e.source:[e?.source].filter(Boolean)).map(e=>Q_(t,e)).find(e=>e!=null&&e!==``),r=$_[e?.format];return r?r(n):n==null||n===``?`-`:n}function tv(e,{onValue:t,onError:n}){return{min:e.min,max:e.max,step:e.step,precision:e.decimals,parser:e=>String(e??``).replace(/[^\d.-]/g,``),onKeyDown:t=>{if(t.ctrlKey||t.metaKey||t.altKey)return;let r=t.target??{};W_(e,t.key,r.value??``,r.selectionStart,r.selectionEnd)||(t.preventDefault(),n(!0))},onChange:r=>{n(!H_(r,e)),t(G_(r??0,e))}}}function nv({label:e,value:t}){return(0,l.jsxs)(`div`,{className:`fa-info-item`,children:[(0,l.jsx)(`div`,{className:`fa-info-k`,children:e}),(0,l.jsx)(`div`,{className:`fa-info-v`,children:String(t??`-`)})]})}nv.propTypes={label:f.default.string,value:f.default.node};function rv({label:e,sub:t,value:n,deduction:r,children:i,total:a}){return(0,l.jsxs)(`div`,{className:`fa-rate-row${a?` fa-rate-total`:``}`,children:[(0,l.jsxs)(`div`,{className:`fa-rate-label`,children:[e,t?(0,l.jsx)(`span`,{className:`fa-rate-sub`,children:t}):null]}),i??(0,l.jsx)(`div`,{className:`fa-rate-val fa-num${r?` fa-deduction`:``}`,children:n})]})}rv.propTypes={label:f.default.node,sub:f.default.node,value:f.default.node,deduction:f.default.bool,children:f.default.node,total:f.default.bool};function iv({label:e,value:t,hero:n,tone:r}){return(0,l.jsxs)(`div`,{className:`fa-stat${n?` fa-stat-hero`:``}${r?` fa-stat-${r}`:``}`,children:[(0,l.jsx)(`div`,{className:`fa-stat-k`,children:e}),(0,l.jsx)(`div`,{className:`fa-stat-v fa-num`,children:t})]})}iv.propTypes={label:f.default.string,value:f.default.node,hero:f.default.bool,tone:f.default.string};function av({type:e,record:t,lookups:r,identity:i,referralOptions:a,onReferralChange:u,onAddReferral:d,currentUserId:f,actions:p,onClose:m,variant:h}){let g=__(e),_=(0,o.useMemo)(()=>({rateUnit:g.rateUnit,currency:g.currency}),[g]),v=(0,o.useMemo)(()=>I_(t,r,_),[t,r,_]),y=y_(g),[b,x]=(0,o.useState)(v.proposedRate),[S,C]=(0,o.useState)(t?.engagement?.financeApproval?.referralId??t?.referral?._id??null),[w,T]=(0,o.useState)(t?.engagement?.financeApproval?.referralRate??t?.referral?.referalRate??0),[E,D]=(0,o.useState)(t?.referral?.isNewReferral?0:t?.referral?.referalRate??t?.referral?.referralRate??t?.engagement?.financeApproval?.referralRate??0),[O,k]=(0,o.useState)(t?.engagement?.financeApproval?.referralType??t?.referral?.referralType??t?.referral?.referalType??`Recurring`),[A,j]=(0,o.useState)(!1),[M,N]=(0,o.useState)(!1),[P,F]=(0,o.useState)(``),[I,L]=(0,o.useState)(!1),[R,z]=(0,o.useState)(``),[B,V]=(0,o.useState)(!1),[ee,te]=(0,o.useState)(``),ne=!!g.sections.rateBreakdown?.editToggle,[re,ie]=(0,o.useState)(!1),H=!ne||re,[ae,oe]=(0,o.useState)(!1),[se,ce]=(0,o.useState)(!1),U=g.sections.referral??{},le=t?.engagement?.financeApproval?.referralEnabled??t?.referralEnabled??(Number(w)>0||!!S),[ue,de]=(0,o.useState)(!!le),fe=U.toggle===!0,pe=Number(w)>0,W=U.show===!0?!fe||ue:U.show===`ifEnabled`?ue:U.show===`ifExists`&&pe,me=String(O??``).trim().toLowerCase().replace(/[\s_-]+/g,``).startsWith(`onetime`),he=y&&W,ge=he&&!me,_e=g.rejection?.show?v_(g,t):``,G=(0,o.useMemo)(()=>R_(v,{proposedRate:g.sections.rateBreakdown?.proposed?.editable?b:void 0,includeReferral:he,deductReferral:ge,referralRate:w}),[v,b,w,he,ge,g]),K=G.currency,ve=g.readOnly,ye=Number(G.proposedRate)>0,be=Number(g.margin?.minMarginPercent??20),xe=Number(G.netProposedRate)>0?Number(G.totalMargin)/Number(G.netProposedRate)*100:0,Se=G.marginPositive?xe<be?`fa-warn`:`fa-good`:`fa-bad`,Ce=G.isW2?`Candidate`:`Employer`,we=G.rateUnitShort?`/${G.rateUnitShort}`:``,Te={record:t,identity:i,inputs:v,computed:G},Ee=(g.header?.crumbFields??[]).map(e=>ev(e,Te)).filter(e=>e!==`-`&&e!==``&&e!=null).join(g.header?.crumbSeparator??` · `),De=g.sections.rateBreakdown?.proposed?.policy??B_,Oe=g.sections.referral?.policy??De,ke=g.labels?.employerVms??{},Ae=G.employerVmsRequired&&G.employerVmsAvailable,je=!!g.sections.rateBreakdown?.proposed?.editable,Me=Number(G.clientJobRate)||0,Ne=je&&Me>0&&Number(b)>Me,Pe=g.sections.rateBreakdown?.proposed?.overClient??{},Fe=g.sections.rateBreakdown?.proposed?.overClientPolicy??`warn`,Ie=Ne&&Fe===`block`,Le=Ne&&Fe===`warn`,Re=Ne?Number(b)-Me:0,ze=Me>0?Re/Me*100:0,Be={proposed:`${q_(Number(b),K)}${we}`,client:`${q_(Me,K)}${we}`,delta:`${q_(Re,K)}${we}`,pct:`${ze.toFixed(+(ze<10))}%`,unit:G.rateUnitShort??``},Ve=e=>l_(Pe[e],Be),q=g.actions?.primary,J=!!q?.requireProposedRate&&!(Number(G.proposedRate)>0),Y=J?`Enter the Proposed Rate first — it drives the margin and the rate sent for approval.`:Ie?Ve(`blockMessage`):``,X=e=>{C(e),ce(!1);let t=(a??[]).find(t=>t.value===e);if(!t?.isNewReferral&&t?.lastRate!=null&&t.lastRate!==``){let e=Number(t.lastRate)||0;T(e),D(e)}else D(0);t?.type&&k(t.type),u?.(e,t)},He=e=>{let t=e.target.checked;de(t),ce(t)},Ue=e=>(0,l.jsxs)(`div`,{children:[e,d&&(0,l.jsx)(`div`,{className:`fa-referral-dropdown-footer`,children:(0,l.jsx)(n.ut,{className:`fa-referral-add-btn`,icon:(0,l.jsx)(c.UserAddOutlined,{}),onMouseDown:e=>e.preventDefault(),onClick:()=>{ce(!1),d()},children:`Add`})})]}),We=async(e,{skipOverClientConfirm:t=!1}={})=>{if(!e)return;if(e===g.actions.primary&&Y){s.message.error(Y);return}if(e===g.actions.primary&&Le&&!t){oe(!0);return}if(e.requireReason&&!P.trim()){L(!0);return}if(e.requireCategory&&!R){V(!0);return}let n=p?.[e.api];if(!n){s.message.error(`No handler wired for "${e.api}"`);return}te(e.key);try{await n({computed:G,proposedRate:G.proposedRate,referral:W?{referralId:S,referralRate:G.referralRate,referralType:O,referralEnabled:!0}:{referralEnabled:!1,referralRate:0},referralEnabled:ue,reason:P.trim(),category:R,rateHistory:g.persist?.rateHistory?K_(G,f):void 0})}catch(e){s.message.error(e?.message??`Action failed`)}finally{te(``)}},Ge=g.actions.primary,Ke=g.actions.reject;return(0,l.jsxs)(`div`,{className:`fa-panel fa-variant-${h}`,children:[g.header?.show!==!1&&(0,l.jsx)(`div`,{className:`fa-topbar`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`fa-crumb`,children:Ee}),(0,l.jsxs)(`div`,{className:`fa-title-row`,children:[(0,l.jsxs)(`h2`,{className:`fa-title`,children:[g.title,` — `,Y_(i?.name,t?.submission?.candidateFullName)]}),(0,l.jsxs)(`span`,{className:`fa-status-pill`,children:[(0,l.jsx)(c.ClockCircleOutlined,{}),` `,g.statusLabel]})]})]})}),g.rejection?.show&&(0,l.jsxs)(`div`,{className:`fa-rejection`,children:[(0,l.jsx)(c.CloseCircleFilled,{className:`fa-rejection-icon`}),(0,l.jsxs)(`div`,{className:`fa-rejection-body`,children:[(0,l.jsx)(`div`,{className:`fa-rejection-title`,children:g.rejection.title}),(0,l.jsx)(`div`,{className:`fa-rejection-reason${_e?``:` fa-rejection-empty`}`,children:_e||`No reason was provided.`})]})]}),g.trail?.show&&(0,l.jsx)(`div`,{className:`fa-trail`,children:g.trail.steps.map((e,t)=>(0,l.jsxs)(`span`,{className:`fa-trail-part`,children:[(0,l.jsxs)(`span`,{className:`fa-trail-step${e.key===g.trail.current?` fa-current`:``}`,children:[e.key===g.trail.current?(0,l.jsx)(c.ClockCircleOutlined,{}):(0,l.jsx)(c.CheckOutlined,{}),e.label]}),t<g.trail.steps.length-1&&(0,l.jsx)(`span`,{className:`fa-trail-sep`,children:`→`})]},e.key))}),g.sections.jobClient?.show&&(0,l.jsxs)(`section`,{className:`fa-card`,children:[(0,l.jsx)(`div`,{className:`fa-card-head`,children:(0,l.jsx)(`h3`,{children:g.sections.jobClient.title})}),(0,l.jsx)(`div`,{className:`fa-card-body`,children:(0,l.jsx)(`div`,{className:`fa-info-grid`,children:(g.sections.jobClient.items??[]).map(e=>(0,l.jsx)(nv,{label:e.label,value:ev(e,Te)},e.key))})})]}),g.sections.clientJobRate?.show&&(0,l.jsxs)(`section`,{className:`fa-card`,children:[(0,l.jsx)(`div`,{className:`fa-card-head`,children:(0,l.jsx)(`h3`,{children:`Client Job Rate`})}),(0,l.jsx)(`div`,{className:`fa-card-body`,children:(0,l.jsxs)(`div`,{className:`fa-strip`,children:[(0,l.jsxs)(`div`,{className:`fa-strip-item`,children:[(0,l.jsx)(`span`,{className:`fa-strip-k`,children:`Client Job Rate`}),(0,l.jsxs)(`span`,{className:`fa-strip-v fa-num`,children:[q_(G.clientJobRate,K),we]})]}),(0,l.jsxs)(`span`,{className:`fa-strip-op fa-num`,children:[`− `,G.clientVmsPercent,`% VMS`,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:X_(G.clientVmsPercentageType)})]}),(0,l.jsx)(`span`,{className:`fa-strip-eq`,children:`=`}),(0,l.jsxs)(`div`,{className:`fa-strip-item`,children:[(0,l.jsx)(`span`,{className:`fa-strip-k`,children:`Net Client Rate`}),(0,l.jsxs)(`span`,{className:`fa-strip-v fa-num`,style:{color:`var(--color-brand, #0053a5)`},children:[q_(G.netClientRate,K),we]})]}),g.sections.clientJobRate.note&&(0,l.jsxs)(`div`,{className:`fa-strip-note`,children:[`For context only — the client-side rate doesn't feed into the `,g.margin.label,` below.`]})]})})]}),g.sections.rateBreakdown?.show&&(0,l.jsxs)(`section`,{className:`fa-card`,children:[(0,l.jsxs)(`div`,{className:`fa-card-head`,children:[(0,l.jsx)(`h3`,{children:`Rate Breakdown`}),g.sections.rateBreakdown.finalBadge&&(0,l.jsxs)(`span`,{className:`fa-final-badge`,children:[(0,l.jsx)(c.LockOutlined,{}),` Final`]}),ne&&!ve&&!re&&(0,l.jsx)(n.ut,{className:`fa-rate-edit-btn`,size:`small`,onClick:()=>ie(!0),children:`Edit`})]}),(0,l.jsxs)(`div`,{className:`fa-card-body`,children:[(0,l.jsxs)(`div`,{className:`fa-rate-grid`,children:[(0,l.jsxs)(`div`,{className:`fa-rate-panel fa-employer`,children:[(0,l.jsxs)(`div`,{className:`fa-panel-head`,children:[(0,l.jsx)(`span`,{className:`fa-dot`}),Ce,` Rate`]}),(0,l.jsxs)(`div`,{className:`fa-rate-rows`,children:[(0,l.jsx)(rv,{label:`${Ce} Rate`,sub:`as submitted by recruiter`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.employerRate,K),` `,(0,l.jsx)(`span`,{className:`fa-unit`,children:we})]})}),G.isW2&&(0,l.jsx)(rv,{label:`Employer Location`,sub:`used to determine location tax`,children:(0,l.jsx)(`div`,{className:`fa-rate-val`,children:Y_(i?.employerLocation,t?.submission?.city,t?.job?.jobLocation)})}),!G.isW2&&!Ae?(0,l.jsx)(rv,{label:(0,l.jsx)(`span`,{className:`fa-locked-label`,children:ke.required}),sub:G.employerVmsAvailable?ke.notRequiredSub:ke.unavailableSub,value:(0,l.jsx)(`span`,{className:`fa-vms-none`,children:G.employerVmsAvailable?ke.notRequired:ke.unavailable})}):(0,l.jsx)(rv,{label:G.isW2?G.employerDeductionLabel:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[G.employerDeductionLabel,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:X_(G.employerVmsType)})]}),sub:`${G.employerDeductionPercent}% of employer rate`,value:`−${q_(G.employerDeduction,K).replace(`−`,``)}`,deduction:!0}),(0,l.jsx)(rv,{total:!0,label:`Net ${Ce} Rate`,value:(0,l.jsx)(`span`,{style:{color:`var(--color-purple, #7c3aed)`},children:q_(G.netEmployerRate,K)})})]})]}),(0,l.jsxs)(`div`,{className:`fa-rate-panel fa-client`,children:[(0,l.jsxs)(`div`,{className:`fa-panel-head`,children:[(0,l.jsx)(`span`,{className:`fa-dot`}),`Proposed Rate`]}),(0,l.jsxs)(`div`,{className:`fa-rate-rows`,children:[g.sections.rateBreakdown.proposed.editable&&H?(0,l.jsxs)(`div`,{className:`fa-rate-row fa-editable`,children:[(0,l.jsxs)(`div`,{className:`fa-editable-head`,children:[(0,l.jsxs)(`span`,{className:`fa-editable-label`,children:[`Proposed Rate`,(0,l.jsx)(`span`,{className:`fa-edit-badge`,children:`Editable`})]}),(0,l.jsx)(s.InputNumber,{className:`fa-rate-input`,...tv(De,{onValue:x,onError:j}),value:b,prefix:K,controls:!1,status:A||Ie?`error`:Le?`warning`:``})]}),(0,l.jsx)(`div`,{className:`fa-editable-sub`,children:`rate we ask the client for`}),A&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,De.message]}),J&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! Enter the proposed rate to enable `,q?.label??`approval`,`.`]}),Ie&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,Ve(`blockMessage`)]}),g.rejection?.show&&(0,l.jsxs)(`div`,{className:`fa-last-rejected`,children:[`Last rejected at `,(0,l.jsxs)(`b`,{children:[q_(v.proposedRate,K),we]})]})]}):(0,l.jsx)(rv,{label:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[`Proposed Rate`,g.sections.rateBreakdown.proposed.locked&&(0,l.jsxs)(`span`,{className:`fa-locked-badge`,children:[(0,l.jsx)(c.LockOutlined,{}),` Locked`]})]}),sub:`approved at finance review`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.proposedRate,K),` `,(0,l.jsx)(`span`,{className:`fa-unit`,children:we})]})}),(0,l.jsx)(rv,{label:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[`Discount (VMS)`,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:X_(G.clientVmsPercentageType)})]}),sub:`${G.clientVmsPercent}% of proposed rate`,value:`−${q_(G.discountVms,K).replace(`−`,``)}`,deduction:!0}),(0,l.jsx)(rv,{total:!0,label:`Net Proposed Rate`,value:(0,l.jsx)(`span`,{style:{color:`var(--color-brand, #0053a5)`},children:q_(G.netProposedRate,K)})})]})]})]}),fe&&!ve&&H&&(0,l.jsxs)(`div`,{className:`fa-referral-toggle`,children:[(0,l.jsx)(s.Checkbox,{checked:ue,onChange:He,children:(0,l.jsx)(`span`,{className:`fa-rt-title`,children:U.toggleLabel??`Add Referral`})}),(0,l.jsx)(`div`,{className:`fa-rt-hint`,children:U.toggleHint})]})]})]}),W&&(0,l.jsxs)(`section`,{className:`fa-card fa-referral-card`,children:[(0,l.jsxs)(`div`,{className:`fa-card-head`,children:[(0,l.jsxs)(`h3`,{children:[(0,l.jsx)(`span`,{className:`fa-dot fa-dot-warning`}),`Referral`]}),U.mode===`print`&&U.typeChip&&(0,l.jsx)(`span`,{className:`fa-type-chip`,children:O})]}),(0,l.jsx)(`div`,{className:`fa-card-body`,children:U.mode===`select`&&H?(0,l.jsxs)(`div`,{className:`fa-referral-fields`,children:[(0,l.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,l.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-company`,children:`Referral Company`}),(0,l.jsx)(s.Select,{id:`fa-referral-company`,className:`fa-referral-select`,placeholder:`Select a referral`,open:se,value:S??void 0,onChange:X,options:a??[],showSearch:!0,optionFilterProp:`label`,onDropdownVisibleChange:ce,onOpenChange:ce,popupRender:Ue,popupRender:Ue})]}),(0,l.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,l.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-rate`,children:`Referral Rate`}),(0,l.jsx)(s.InputNumber,{id:`fa-referral-rate`,className:`fa-referral-rate-input`,...tv(Oe,{onValue:T,onError:N}),value:w,prefix:K,controls:!1,disabled:!S,status:M?`error`:``}),M&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,Oe.message]})]}),(0,l.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,l.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-type`,children:`Referral Type`}),(0,l.jsx)(s.Select,{id:`fa-referral-type`,className:`fa-referral-type`,value:O,onChange:k,disabled:!S,options:[{value:`Recurring`,label:`Recurring — every pay cycle`},{value:`One-time`,label:`One-time payout`}]})]}),S&&(0,l.jsx)(`div`,{className:`fa-referral-note`,children:E?(0,l.jsxs)(l.Fragment,{children:[`Last referral rate paid to this company:`,` `,(0,l.jsx)(`b`,{children:q_(E,K)})]}):(0,l.jsx)(`b`,{children:`New referral`})})]}):(0,l.jsxs)(`div`,{className:`fa-rate-rows fa-print-rows`,children:[(0,l.jsx)(rv,{label:`Referral Name`,sub:`added during onboarding`,children:(0,l.jsx)(`div`,{className:`fa-rate-val`,children:Y_(t?.referral?.referalCompanyName,i?.referralName)})}),(0,l.jsx)(rv,{label:`Referral Rate`,sub:me?`one-time payout — excluded from recurring margin`:`deducted every pay cycle`,value:me?q_(w,K):`−${q_(w,K).replace(`−`,``)}${we?` ${we}`:``}`,deduction:!me})]})})]}),ye&&(0,l.jsxs)(`div`,{className:`fa-outcome ${Se}`,children:[(0,l.jsxs)(`div`,{className:`fa-outcome-label`,children:[(0,l.jsx)(`div`,{className:`fa-outcome-icon`,children:Se===`fa-good`?(0,l.jsx)(c.RiseOutlined,{}):(0,l.jsx)(c.WarningOutlined,{})}),(0,l.jsx)(`div`,{className:`fa-outcome-t`,children:g.margin.label})]}),(0,l.jsxs)(`div`,{className:`fa-outcome-stats`,children:[(0,l.jsx)(iv,{label:`Net Proposed Rate`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.netProposedRate,K),(0,l.jsx)(`span`,{className:`fa-u`,children:we})]})}),(0,l.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,l.jsx)(iv,{label:`Net ${Ce} Rate`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.netEmployerRate,K),(0,l.jsx)(`span`,{className:`fa-u`,children:we})]})}),ge&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,l.jsx)(iv,{label:`Referral Rate`,tone:`referral`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.referralRate,K),(0,l.jsx)(`span`,{className:`fa-u`,children:we})]})})]}),(0,l.jsx)(iv,{hero:!0,label:`Margin`,value:(0,l.jsxs)(l.Fragment,{children:[q_(G.totalMargin,K),(0,l.jsx)(`span`,{className:`fa-u`,children:we})]})})]})]}),ye&&(0,l.jsxs)(`div`,{className:`fa-margin-note ${Se}`,children:[(0,l.jsxs)(`span`,{className:`fa-margin-note-pct`,children:[xe.toFixed(1),`%`]}),(0,l.jsx)(`span`,{className:`fa-margin-note-text`,children:Se===`fa-bad`?(0,l.jsxs)(l.Fragment,{children:[`This submission is running at a `,(0,l.jsx)(`b`,{children:`loss`}),`. Adjust the proposed or employer rate before approving.`]}):Se===`fa-warn`?(0,l.jsxs)(l.Fragment,{children:[`Profit margin is `,(0,l.jsxs)(`b`,{children:[`below the `,be,`% target`]}),`. Consider a higher proposed rate before approving.`]}):(0,l.jsxs)(l.Fragment,{children:[`Healthy margin — at or above the `,be,`% target.`]})})]}),Ke?.requireReason&&(0,l.jsxs)(`div`,{className:`fa-reason`,children:[Ke.requireCategory&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`label`,{className:`fa-reason-label`,htmlFor:`fa-rejection-category`,children:[`Return To `,(0,l.jsx)(`span`,{children:`(required to reject)`})]}),(0,l.jsx)(s.Select,{id:`fa-rejection-category`,placeholder:`Select where to return this rejection`,value:R||void 0,status:B?`error`:``,options:[{value:`submission`,label:`Submission`},{value:`onboarding`,label:`Onboarding`}],onChange:e=>{z(e),V(!1)},style:{width:`100%`,marginBottom:16}}),B&&(0,l.jsx)(`div`,{className:`fa-reason-error`,children:`! Select where to return the rejection.`})]}),(0,l.jsxs)(`label`,{className:`fa-reason-label`,htmlFor:`fa-reason`,children:[`Comments `,(0,l.jsx)(`span`,{children:`(required to reject)`})]}),(0,l.jsx)(J_,{id:`fa-reason`,rows:3,maxLength:500,showCount:!0,value:P,status:I?`error`:``,placeholder:`Enter your comments here…`,onChange:e=>{F(e.target.value),e.target.value.trim()&&L(!1)}}),I&&(0,l.jsx)(`div`,{className:`fa-reason-error`,children:`! Comments are required when rejecting.`})]}),Le&&(0,l.jsxs)(`div`,{className:`fa-rate-warning`,role:`status`,children:[(0,l.jsxs)(`div`,{className:`fa-rate-warning-head`,children:[(0,l.jsx)(c.WarningOutlined,{className:`fa-rate-warning-icon`}),(0,l.jsx)(`h4`,{children:Ve(`title`)})]}),(0,l.jsxs)(`div`,{className:`fa-rate-warning-grid`,children:[(0,l.jsxs)(`div`,{className:`fa-rate-warning-cell`,children:[(0,l.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Client Job Rate`}),(0,l.jsx)(`span`,{className:`fa-rate-warning-val`,children:Be.client})]}),(0,l.jsxs)(`div`,{className:`fa-rate-warning-cell`,children:[(0,l.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Proposed Rate`}),(0,l.jsx)(`span`,{className:`fa-rate-warning-val`,children:Be.proposed})]}),(0,l.jsxs)(`div`,{className:`fa-rate-warning-cell fa-rate-warning-delta`,children:[(0,l.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Over by`}),(0,l.jsxs)(`span`,{className:`fa-rate-warning-val`,children:[Be.delta,` `,(0,l.jsxs)(`small`,{children:[`(`,Be.pct,`)`]})]})]})]}),Ve(`body`)&&(0,l.jsx)(`p`,{className:`fa-rate-warning-body`,children:Ve(`body`)}),(0,l.jsxs)(`p`,{className:`fa-rate-warning-margin`,children:[`Resulting margin:`,` `,(0,l.jsxs)(`b`,{className:Se,children:[q_(G.totalMargin,K),we,Number(G.netProposedRate)>0&&(0,l.jsxs)(l.Fragment,{children:[` (`,xe.toFixed(1),`%)`]})]})]})]}),(0,l.jsx)(s.Modal,{open:ae,title:Ve(`confirmTitle`),okText:Ve(`confirmOk`)||`Approve anyway`,cancelText:Ve(`confirmCancel`)||`Go back`,okButtonProps:{danger:!0},onCancel:()=>oe(!1),onOk:()=>{oe(!1),We(g.actions.primary,{skipOverClientConfirm:!0})},children:(0,l.jsx)(`p`,{children:Ve(`confirmBody`)})}),g.actions?.show!==!1&&(Ge||Ke)&&(0,l.jsxs)(`div`,{className:`fa-action-bar`,children:[(0,l.jsx)(`div`,{className:`fa-action-note`,children:J?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`b`,{children:`Proposed rate required`}),` — enter it above to enable `,Ge?.label??`approval`,`.`]}):e===`cfo`?(0,l.jsxs)(l.Fragment,{children:[`Approving finalizes payroll at `,(0,l.jsxs)(`b`,{children:[q_(G.netProposedRate,K),we]}),W?(0,l.jsxs)(l.Fragment,{children:[` including the `,String(O).toLowerCase(),` `,(0,l.jsxs)(`b`,{children:[q_(w,K),we]}),` referral`]}):null,`.`]}):(0,l.jsxs)(l.Fragment,{children:[`Approving locks the `,(0,l.jsxs)(`b`,{children:[q_(G.netProposedRate,K),we]}),` proposed rate and moves this forward.`]})}),(0,l.jsxs)(`div`,{className:`fa-actions`,children:[m&&(0,l.jsx)(n.ut,{className:`fa-btn-ghost`,onClick:m,children:`Cancel`}),Ke&&(0,l.jsx)(n.ut,{danger:!0,loading:ee===Ke.key,disabled:!!ee,onClick:()=>We(Ke),children:Ke.label}),Ge&&(0,l.jsx)(s.Tooltip,{title:Y||``,placement:`top`,children:(0,l.jsx)(`span`,{className:`fa-btn-tip`,children:(0,l.jsx)(n.ut,{variant:`primary`,icon:(0,l.jsx)(c.CheckOutlined,{}),loading:ee===Ge.key,disabled:!!ee||!!Y,onClick:()=>We(Ge),children:Ge.label})})})]})]})]})}av.propTypes={type:f.default.string.isRequired,record:f.default.object,lookups:f.default.object,identity:f.default.object,referralOptions:f.default.array,onReferralChange:f.default.func,onAddReferral:f.default.func,currentUserId:f.default.oneOfType([f.default.number,f.default.string]),actions:f.default.object,onClose:f.default.func,variant:f.default.oneOf([`popup`,`page`])},av.defaultProps={record:{},lookups:{},identity:{},referralOptions:[],variant:`page`};var ov=e=>String(e??``).trim().toLowerCase();function sv(e){let t=e?.data??e;for(let e of[`data`,`rows`,`records`,`items`,`list`])if(Array.isArray(t?.[e]))return t[e];return Array.isArray(t)?t:[]}var cv=e=>n.bn(e,300,0).then(sv).catch(()=>[]),lv=e=>t=>e&&k_(t._id??t.id)===String(e),uv=(e,n)=>n?t.o(t.x,`/module/list?module=${encodeURIComponent(e)}&id=${encodeURIComponent(n)}`).then(e=>{let t=e?.data??e??{};return(Array.isArray(t?.data)?t.data:Array.isArray(t)?t:[])[0]??{}}).catch(()=>({})):Promise.resolve({}),dv=e=>e==null||e===``?Promise.resolve(null):t.o(t.x,`/get-detailed-view?userId=${encodeURIComponent(e)}`).then(e=>e?.data??e??null).catch(()=>null);function fv(e){return e&&([e.first_name??e.firstName??e.FIRST_NAME,e.last_name??e.lastName??e.LAST_NAME].filter(Boolean).join(` `).trim()||e.user_name||e.userName||e.username||e.email)||``}function pv(e){let t=e?.jobPayDetails,n=Array.isArray(t)?t[t.length-1]:t;return n&&typeof n==`object`&&!Array.isArray(n)?n:{}}async function mv(e,t){if(!t)return{};let n=await hv(e,t).catch(()=>({}));return{...j_(A_(n.groups??[])),...n.recordMeta??{}}}async function hv(e,t){let{fetchFormGroupsPayload:n}=await Promise.resolve().then(()=>require("./addFormApi-D7d0MQiG.cjs")).then(e=>e.t),r=await n({module:e,id:t});return r?.data??r??{}}async function gv(e,t={}){let r=await hv(`submission`,e).catch(()=>({})),i=r.groups??[],a=r.recordMeta??{},o=A_(i),s=M_(i),c=k_(a.clientId??o.clientId??t.clientId),l=k_(a.jobId??o.jobId??t.jobId),u=k_(s.employerId),d=a.createdBy??o.createdBy??t.createdBy,f=s.locationId??s.location,[p,m,h,g,_,v,y,b,x]=await Promise.all([l?n.pn(`jobs`,l).catch(()=>null):Promise.resolve(null),cv(`jobs`),cv(`clients`),cv(`employers`),cv(`locations`),cv(`workforceEngagements`),mv(`jobs`,l),dv(d),uv(`submissions`,e)]),S=p?.data??p??{},C=S.record??S.item??S??{},w=m.find(lv(l))??{},T={...w,...C,...y};T.jobPayDetails={...pv(w),...pv(C),...pv(y)};let E=(Array.isArray(v)?v:[]).find(t=>k_(t.submissionId)===String(e)),D=k_(T.clientId)||k_(E?.clientId)||c,O=o.clientName??t.clientName??T.clientName,k=O?h.filter(e=>ov(e.clientName)===ov(O)):[],A=h.find(lv(D))??k[0]??{},j=await mv(`clients`,k_(A._id??A.id)||D),M={...A,...j},N=g.find(lv(u))??{},P=_.find(lv(f))??_.find(e=>ov(e.name)===ov(f))??{};return{record:{submission:{...x.signatureEmail?{signatureEmail:x.signatureEmail}:{},...t,...o,submission_current_employer:[s]},job:T,client:M,employer:N},lookups:{clientVmsFee:M.vmsFee??o.clientVmsFee??o.vmsFee,locationTaxPercent:s.tax??P.taxValue},display:{clientName:o.clientName??M.clientName,jobTitle:o.jobTitle??T.jobTitle,reqId:a.jobClientRefrenceId??o.jobRefrenceId??a.jobRefrenceId??a.mspReqId,jobLocation:o.jobLocation??T.jobLocation,employerName:N.empCompanyName,employerLocation:P.name??N.empCompanyLocation??f,submittedBy:x.signatureEmail||o.signatureEmail||t.signatureEmail||fv(b),email:o.email,candidateName:[o.firstName,o.lastName].filter(Boolean).join(` `)||o.candidateFullName,createdAt:a.createdAt,submissionId:a.submissionId},engagement:E??null,meta:a}}function _v(e={}){return e.referalCompanyName??e.referralCompanyName??e.referalName??e.referralName??e.vendorName??e.employerName??e.name??e.companyName??``}function vv(e={}){let t=Array.isArray(e.referralDetails)?e.referralDetails.at(-1):e.referralDetails,n=e.financeApproval??e.financeApprovalRequest??{},r=Array.isArray(n.referralDetails)?n.referralDetails.at(-1):n.referralDetails,i=[t?.referalRate,t?.referralRate,r?.referalRate,r?.referralRate,n.referalRate,n.referralRate,e.referalRate,e.referralRate,e.referralLastPayRate,e.referalLastPayRate,e.lastPayRate,e.payRate].find(e=>e!=null&&e!==``),a=Number(i);return Number.isFinite(a)?a:0}function yv(e){return String(e??``).trim().toLowerCase().replace(/\s+/g,` `)}function bv(e={}){let t=Array.isArray(e.referralDetails)?e.referralDetails:[e.referralDetails].filter(Boolean),n=e.financeApproval??e.financeApprovalRequest??{},r=Array.isArray(n.referralDetails)?n.referralDetails:[n.referralDetails].filter(Boolean);return[e._id,e.id,e.referralId,e.referalId,e.referral_id,e.referal_id,e.referral?._id,e.referral?.id,e.referal?._id,e.referal?.id,n.referralId,n.referalId,e.engagement?.referralId,e.engagement?.referalId,e.engagement?.financeApproval?.referralId,e.engagement?.financeApproval?.referalId,...t.flatMap(e=>[e?.referralId,e?.referalId,e?.referral_id,e?.referal_id]),...r.flatMap(e=>[e?.referralId,e?.referalId,e?.referral_id,e?.referal_id])].map(k_).filter(Boolean)}function xv(e={}){let t=Array.isArray(e.referralDetails)?e.referralDetails:[e.referralDetails].filter(Boolean),n=e.financeApproval??e.financeApprovalRequest??{},r=Array.isArray(n.referralDetails)?n.referralDetails:[n.referralDetails].filter(Boolean);return[_v(e),_v(e.referral??{}),_v(e.referal??{}),e.referralCompanyName,e.referalCompanyName,e.referralName,e.referalName,n.referralCompanyName,n.referalCompanyName,n.referralName,n.referalName,e.engagement?.referralCompanyName,e.engagement?.referalCompanyName,e.engagement?.referralName,e.engagement?.referalName,...t.flatMap(e=>[e?.referralCompanyName,e?.referalCompanyName,e?.referralName,e?.referalName]),...r.flatMap(e=>[e?.referralCompanyName,e?.referalCompanyName,e?.referralName,e?.referalName])].map(yv).filter(Boolean)}function Sv(e={}){let t=e.financeApproval?.approvedAt??e.financeApproval?.submittedAt??e.financeApprovalRequest?.approvedAt??e.financeApprovalRequest?.submittedAt??e.decidedAt??e.submittedAt??e.updatedAt??e.createdAt??0;return new Date(t?.$date??t).getTime()||0}async function Cv(e,{pageSize:n=100,maxPages:r=20}={}){let i=[];for(let a=1;a<=r;a+=1){let r=new URLSearchParams({module:e,page:String(a),limit:String(n)}),o=await t.o(t.x,`/module/list?${r.toString()}`),s=o?.data??o??{},c=Array.isArray(s?.data)?s.data:Array.isArray(s?.rows)?s.rows:Array.isArray(s)?s:[];i.push(...c);let l=Number(s?.total??0);if(c.length<n||l>0&&i.length>=l)break}return i}function wv(e={},t=[]){let n=new Set(bv(e)),r=new Set(xv(e));return!n.size&&!r.size?0:t.filter(e=>bv(e).some(e=>n.has(e))||xv(e).some(e=>r.has(e))).map(e=>({rate:vv(e),date:Sv(e)})).filter(e=>e.rate>0).sort((e,t)=>t.date-e.date)[0]?.rate??0}async function Tv(){let e=(await cv(`referrals`)).filter(e=>!e?.isDeleted&&_v(e)),t=(await Promise.all([`submissions`,`workforceFinanceApprovals`,`workforceEngagements`,`onboarding`,`candidateMovements`].map(e=>Cv(e).catch(()=>[])))).flat();return(await Promise.all(e.map(async e=>{let n=wv(e,t),r=vv(e),i=n>0?n:r;return{value:k_(e._id??e.id),label:_v(e),isNewReferral:i<=0,hasHistory:i>0,lastRate:i,lastPayRate:i,referralLastPayRate:i,referalLastPayRate:i,rate:i,referralRate:i,referalRate:i,type:e.referalType??e.referralType,record:e}}))).filter(e=>e.value)}function Ev({title:e=`Proof`,files:t=[],onPreview:n,emptyText:r=`No files uploaded`,className:i}){return t.length?(0,l.jsx)(s.Card,{size:`small`,title:e,className:`znx-file-list__card ${i??``}`.trim(),children:t.map((e,t)=>(0,l.jsxs)(`div`,{className:`znx-file-list__chip`,children:[(0,l.jsx)(`span`,{className:`znx-file-list__name`,title:e.name,children:e.name||`File`}),(0,l.jsxs)(`span`,{className:`znx-file-list__actions`,children:[n&&(0,l.jsx)(s.Tooltip,{title:`Preview`,children:(0,l.jsx)(`button`,{type:`button`,className:`znx-file-list__btn`,onClick:()=>n(t),"aria-label":`Preview ${e.name||`file`}`,children:(0,l.jsx)(c.EyeOutlined,{})})}),(0,l.jsx)(s.Tooltip,{title:`Download`,children:(0,l.jsx)(`a`,{className:`znx-file-list__btn`,href:e.url,download:e.name,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`Download ${e.name||`file`}`,children:(0,l.jsx)(c.DownloadOutlined,{})})})]})]},e.url??t))}):(0,l.jsx)(s.Card,{size:`small`,className:`znx-file-list__empty ${i??``}`.trim(),children:(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:r})})}function Dv({moduleName:e,recordId:t,cancelPath:r,onSuccess:i,fieldNameMap:c={},onFileUpload:l=null}){let f=(0,d.useNavigate)(),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)({}),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)(``);(0,o.useEffect)(()=>{if(!e||!t)return;let r=!1;async function i(){try{v(!0),b(``);let[i,o]=await Promise.all([a.r({module:e,id:t}),n.hn(e,t)]);if(r)return;m(Array.isArray(i)?i:[]),g(o??{})}catch(e){r||b(e?.message||`Failed to load record`)}finally{r||v(!1)}}return i(),()=>{r=!0}},[e,t]);function T(e,t){let n={...h},r=t.flatMap(e=>e.fields??[]);return Object.entries(e).forEach(([e,t])=>{if(t!==void 0&&r.find(t=>t.field===e)?.type!==`file`){if(u.default.isDayjs(t)){applyDotValue(n,e,t.format(`MM-DD-YYYY`));return}applyDotValue(n,e,t)}}),Object.keys(n).forEach(e=>{e.includes(`.`)&&delete n[e]}),Object.entries(c).forEach(([e,t])=>{n[e]!==void 0&&(n[t]=n[e],delete n[e])}),Object.keys(n).forEach(e=>{let t=n[e];if(typeof t==`string`&&t!==``){let r=/(date|time|Date|Time|At|at)$/.test(e),i=/ago|month|year|day|week|hour|minute/i.test(t),a=/^\d{4}-\d{2}-\d{2}/.test(t);r&&(i||!a)&&delete n[e]}}),Object.keys(n).forEach(e=>{let t=n[e];Array.isArray(t)&&t[0]?.originFileObj&&delete n[e]}),n}async function E(a,o){try{if(S(!0),w(``),l){let e=o.flatMap(e=>e.fields??[]).filter(e=>e.type===`file`);for(let n of e){let e=a[n.field];if(!Array.isArray(e))continue;let r=e.filter(e=>e.originFileObj instanceof File);await Promise.all(r.map(e=>l(n.field,e.originFileObj,t)))}}await n.gn(e,t,T(a,o)),s.message.success(`${e} updated successfully`),i?i():n.j(f,{cancelPath:r})}catch(e){w(e?.message||`Failed to save changes`),s.message.error(e?.message||`Failed to save changes`)}finally{S(!1)}}return{formGroups:p,rawRecord:h,loading:_,error:y,submitting:x,submitError:C,submit:E}}var Ov=`data:image/svg+xml,%3csvg%20width='380'%20height='130'%20viewBox='0%200%20380%20130'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_30_1933)'%20filter='url(%23filter0_d_30_1933)'%3e%3cpath%20d='M13.5623%2060V34.296H19.2143V44.16H29.6183V34.296H35.2703V60H29.6183V48.912H19.2143V60H13.5623ZM39.8859%2060V34.296H45.5379V60H39.8859ZM50.1431%2060V34.296H64.0031C66.2591%2034.296%2068.0951%2034.992%2069.5111%2036.384C70.8551%2037.728%2071.5271%2039.396%2071.5271%2041.388C71.5271%2044.58%2070.1711%2046.728%2067.4591%2047.832V47.904C69.7151%2048.48%2070.9631%2050.484%2071.2031%2053.916C71.2751%2054.948%2071.3471%2055.98%2071.4191%2057.012C71.5631%2058.404%2071.8511%2059.4%2072.2831%2060H66.6311C66.3671%2059.352%2066.1631%2058.38%2066.0191%2057.084C65.9231%2056.004%2065.8271%2054.924%2065.7311%2053.844C65.5391%2052.452%2065.1191%2051.456%2064.4711%2050.856C63.8471%2050.256%2062.8391%2049.956%2061.4471%2049.956H55.7951V60H50.1431ZM55.7951%2038.688V45.924H61.9871C64.5791%2045.924%2065.8751%2044.7%2065.8751%2042.252C65.8751%2039.876%2064.5791%2038.688%2061.9871%2038.688H55.7951ZM75.7635%2060V34.296H94.9875V39.048H81.4155V44.556H93.8715V48.948H81.4155V55.248H95.2755V60H75.7635ZM118.336%2060V10.02H125.336L142.626%2053.84L159.846%2010.02H166.846V60H162.086V16.81H161.946L144.866%2060H140.386L123.236%2016.81H123.096V60H118.336ZM190.506%2022.83C195.826%2022.83%20200.05%2024.72%20203.176%2028.5C206.116%2032.0467%20207.586%2036.5267%20207.586%2041.94C207.586%2047.3533%20206.116%2051.8333%20203.176%2055.38C200.05%2059.16%20195.826%2061.05%20190.506%2061.05C185.186%2061.05%20180.963%2059.16%20177.836%2055.38C174.896%2051.8333%20173.426%2047.3533%20173.426%2041.94C173.426%2036.5267%20174.896%2032.0467%20177.836%2028.5C180.963%2024.72%20185.186%2022.83%20190.506%2022.83ZM190.506%2026.54C186.493%2026.54%20183.32%2028.15%20180.986%2031.37C178.886%2034.2633%20177.836%2037.7867%20177.836%2041.94C177.836%2046.0933%20178.886%2049.6167%20180.986%2052.51C183.32%2055.73%20186.493%2057.34%20190.506%2057.34C194.52%2057.34%20197.693%2055.73%20200.026%2052.51C202.126%2049.6167%20203.176%2046.0933%20203.176%2041.94C203.176%2037.7867%20202.126%2034.2633%20200.026%2031.37C197.693%2028.15%20194.52%2026.54%20190.506%2026.54ZM213.443%2060V23.88H217.503V32.35H217.643C218.763%2029.41%20220.513%2027.1467%20222.893%2025.56C225.273%2023.9733%20228.073%2023.25%20231.293%2023.39V27.8C227.373%2027.6133%20224.153%2028.78%20221.633%2031.3C219.113%2033.7733%20217.853%2036.9233%20217.853%2040.75V60H213.443ZM265.203%2043.13H237.413C237.46%2046.8633%20238.393%2050.0367%20240.213%2052.65C242.406%2055.7767%20245.44%2057.34%20249.313%2057.34C255.286%2057.34%20259.066%2054.26%20260.653%2048.1H265.063C263.056%2056.7333%20257.806%2061.05%20249.313%2061.05C243.9%2061.05%20239.746%2059.16%20236.853%2055.38C234.286%2051.9733%20233.003%2047.4933%20233.003%2041.94C233.003%2036.6667%20234.286%2032.28%20236.853%2028.78C239.793%2024.8133%20243.946%2022.83%20249.313%2022.83C254.773%2022.83%20258.926%2024.9533%20261.773%2029.2C264.246%2032.8867%20265.39%2037.53%20265.203%2043.13ZM237.413%2039.42H260.793C260.7%2035.8733%20259.65%2032.8867%20257.643%2030.46C255.496%2027.8467%20252.72%2026.54%20249.313%2026.54C245.906%2026.54%20243.106%2027.87%20240.913%2030.53C238.953%2032.8633%20237.786%2035.8267%20237.413%2039.42Z'%20fill='white'/%3e%3cpath%20d='M124.417%20111V90.048H116.713V85.296H137.773V90.048H130.069V111H124.417ZM141.637%20111V85.296H147.289V111H141.637ZM153.154%20111V85.296H167.014C169.27%2085.296%20171.106%2085.992%20172.522%2087.384C173.866%2088.728%20174.538%2090.396%20174.538%2092.388C174.538%2095.58%20173.182%2097.728%20170.47%2098.832V98.904C172.726%2099.48%20173.974%20101.484%20174.214%20104.916C174.286%20105.948%20174.358%20106.98%20174.43%20108.012C174.574%20109.404%20174.862%20110.4%20175.294%20111H169.642C169.378%20110.352%20169.174%20109.38%20169.03%20108.084C168.934%20107.004%20168.838%20105.924%20168.742%20104.844C168.55%20103.452%20168.13%20102.456%20167.482%20101.856C166.858%20101.256%20165.85%20100.956%20164.458%20100.956H158.806V111H153.154ZM158.806%2089.688V96.924H164.998C167.59%2096.924%20168.886%2095.7%20168.886%2093.252C168.886%2090.876%20167.59%2089.688%20164.998%2089.688H158.806ZM180.034%20111V85.296H199.258V90.048H185.686V95.556H198.142V99.948H185.686V106.248H199.546V111H180.034ZM226.246%20111V61.02H231.006V106.94H259.006V111H226.246ZM295.134%2094.13H267.344C267.391%2097.863%20268.324%20101.037%20270.144%20103.65C272.337%20106.777%20275.371%20108.34%20279.244%20108.34C285.217%20108.34%20288.997%20105.26%20290.584%2099.1H294.994C292.987%20107.733%20287.737%20112.05%20279.244%20112.05C273.831%20112.05%20269.677%20110.16%20266.784%20106.38C264.217%20102.973%20262.934%2098.493%20262.934%2092.94C262.934%2087.667%20264.217%2083.28%20266.784%2079.78C269.724%2075.813%20273.877%2073.83%20279.244%2073.83C284.704%2073.83%20288.857%2075.953%20291.704%2080.2C294.177%2083.887%20295.321%2088.53%20295.134%2094.13ZM267.344%2090.42H290.724C290.631%2086.873%20289.581%2083.887%20287.574%2081.46C285.427%2078.847%20282.651%2077.54%20279.244%2077.54C275.837%2077.54%20273.037%2078.87%20270.844%2081.53C268.884%2083.863%20267.717%2086.827%20267.344%2090.42ZM328.843%2085.45H324.433C324.34%2082.837%20323.36%2080.83%20321.493%2079.43C319.813%2078.17%20317.643%2077.54%20314.983%2077.54C312.696%2077.54%20310.783%2077.983%20309.243%2078.87C307.376%2079.99%20306.443%2081.623%20306.443%2083.77C306.443%2086.71%20308.94%2088.74%20313.933%2089.86L319.813%2091.19C326.673%2092.73%20330.103%2096.067%20330.103%20101.2C330.103%20104.793%20328.54%20107.57%20325.413%20109.53C322.706%20111.21%20319.44%20112.05%20315.613%20112.05C306.373%20112.05%20301.426%20107.803%20300.773%2099.31H305.183C305.37%20102.203%20306.42%20104.443%20308.333%20106.03C310.293%20107.57%20312.79%20108.34%20315.823%20108.34C318.296%20108.34%20320.466%20107.827%20322.333%20106.8C324.573%20105.54%20325.693%20103.767%20325.693%20101.48C325.693%2098.26%20323.056%2096.067%20317.783%2094.9L312.113%2093.64C308.846%2092.893%20306.443%2091.89%20304.903%2090.63C302.99%2089.043%20302.033%2086.827%20302.033%2083.98C302.033%2080.573%20303.503%2077.96%20306.443%2076.14C308.916%2074.6%20311.973%2073.83%20315.613%2073.83C319.393%2073.83%20322.473%2074.787%20324.853%2076.7C327.373%2078.753%20328.703%2081.67%20328.843%2085.45ZM364.294%2085.45H359.884C359.791%2082.837%20358.811%2080.83%20356.944%2079.43C355.264%2078.17%20353.094%2077.54%20350.434%2077.54C348.147%2077.54%20346.234%2077.983%20344.694%2078.87C342.827%2079.99%20341.894%2081.623%20341.894%2083.77C341.894%2086.71%20344.391%2088.74%20349.384%2089.86L355.264%2091.19C362.124%2092.73%20365.554%2096.067%20365.554%20101.2C365.554%20104.793%20363.991%20107.57%20360.864%20109.53C358.157%20111.21%20354.891%20112.05%20351.064%20112.05C341.824%20112.05%20336.877%20107.803%20336.224%2099.31H340.634C340.821%20102.203%20341.871%20104.443%20343.784%20106.03C345.744%20107.57%20348.241%20108.34%20351.274%20108.34C353.747%20108.34%20355.917%20107.827%20357.784%20106.8C360.024%20105.54%20361.144%20103.767%20361.144%20101.48C361.144%2098.26%20358.507%2096.067%20353.234%2094.9L347.564%2093.64C344.297%2092.893%20341.894%2091.89%20340.354%2090.63C338.441%2089.043%20337.484%2086.827%20337.484%2083.98C337.484%2080.573%20338.954%2077.96%20341.894%2076.14C344.367%2074.6%20347.424%2073.83%20351.064%2073.83C354.844%2073.83%20357.924%2074.787%20360.304%2076.7C362.824%2078.753%20364.154%2081.67%20364.294%2085.45Z'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cfilter%20id='filter0_d_30_1933'%20x='0'%20y='0'%20width='380'%20height='130'%20filterUnits='userSpaceOnUse'%20color-interpolation-filters='sRGB'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeColorMatrix%20in='SourceAlpha'%20type='matrix'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%20127%200'%20result='hardAlpha'/%3e%3cfeOffset%20dy='4'/%3e%3cfeGaussianBlur%20stdDeviation='7'/%3e%3cfeComposite%20in2='hardAlpha'%20operator='out'/%3e%3cfeColorMatrix%20type='matrix'%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.15%200'/%3e%3cfeBlend%20mode='normal'%20in2='BackgroundImageFix'%20result='effect1_dropShadow_30_1933'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='effect1_dropShadow_30_1933'%20result='shape'/%3e%3c/filter%3e%3cclipPath%20id='clip0_30_1933'%3e%3crect%20width='352'%20height='102'%20fill='white'%20transform='translate(14%2010)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,kv=`data:image/svg+xml,%3csvg%20width='738'%20height='346'%20viewBox='0%200%20738%20346'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M166.531%20110.373V111.304L158.082%20116.188L158.071%20115.256L166.531%20110.373Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M162.346%20110.647V111.578L158.071%20114.043V113.123L162.346%20110.647Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M159.716%20109.501L159.727%20110.433L158.06%20111.387V110.455L159.716%20109.501Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M158.648%20121.324C158.485%20121.68%20158.4%20122.067%20158.399%20122.459V134.554C158.399%20135.508%20159.079%20135.894%20159.907%20135.406L177.916%20124.992C178.352%20124.709%20178.714%20124.326%20178.974%20123.877C179.234%20123.427%20179.385%20122.922%20179.413%20122.403V110.319C179.423%20110.026%20179.335%20109.739%20179.164%20109.501L168.957%20122.437L158.648%20121.324Z'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M159.894%20119.821C159.346%20120.197%20158.911%20120.715%20158.635%20121.32L168.921%20122.387L179.128%20109.452C179.006%20109.325%20178.848%20109.238%20178.675%20109.206C178.502%20109.173%20178.323%20109.196%20178.164%20109.271L159.894%20119.821Z'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M182.85%20117.448L217.621%2097.3806V115.551'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M368.923%20155.802C382.01%20163.366%20382.078%20175.642%20369.07%20183.206L307.977%20218.741C294.969%20226.315%20273.818%20226.315%20260.72%20218.741L199.264%20183.206C186.176%20175.642%20186.108%20163.366%20199.116%20155.802L260.175%20120.268C273.183%20112.693%20294.334%20112.693%20307.421%20120.268L368.923%20155.802Z'%20fill='%2379AEF5'/%3e%3cpath%20d='M369.066%20150.158L307.973%20185.693C294.965%20193.268%20273.814%20193.268%20260.715%20185.693L199.259%20150.158C192.67%20146.354%20189.381%20141.357%20189.393%20136.36V143.435C189.393%20148.421%20192.67%20153.429%20199.259%20157.234L260.738%20192.78C273.825%20200.343%20294.987%20200.343%20307.995%20192.78L369.054%20157.245C375.507%20153.486%20378.751%20148.568%20378.762%20143.617V136.542C378.762%20141.482%20375.53%20146.399%20369.066%20150.158Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M368.923%20122.754C382.01%20130.317%20382.078%20142.594%20369.07%20150.157L307.977%20185.692C294.969%20193.267%20273.818%20193.267%20260.72%20185.692L199.264%20150.157C186.176%20142.594%20186.108%20130.317%20199.116%20122.754L260.175%2087.2192C273.183%2079.6444%20294.334%2079.6444%20307.421%2087.2192L368.923%20122.754Z'%20fill='white'/%3e%3cpath%20d='M179.53%20276.419C192.617%20283.983%20192.685%20296.259%20179.677%20303.834L118.584%20339.358C105.576%20346.932%2084.4257%20346.932%2071.3384%20339.358L9.87097%20303.834C-3.21637%20296.259%20-3.28442%20283.994%209.72354%20276.419L70.7827%20240.885C83.7906%20233.321%20104.941%20233.321%20118.04%20240.885L179.53%20276.419Z'%20fill='%2379AEF5'/%3e%3cpath%20d='M179.673%20270.775L118.58%20306.344C105.572%20313.919%2084.4213%20313.919%2071.334%20306.344L9.86657%20270.821C3.27754%20267.005%20-0.0113116%20262.008%202.9229e-05%20257.011V264.086C2.9229e-05%20269.083%203.27754%20274.08%209.85523%20277.884L71.3226%20313.419C84.41%20320.994%20105.572%20320.994%20118.58%20313.419L179.639%20277.884C186.092%20274.125%20189.336%20269.208%20189.347%20264.256V257.181C189.381%20262.053%20186.137%20267.016%20179.673%20270.775Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M179.525%20243.37C192.613%20250.933%20192.681%20263.21%20179.673%20270.773L118.58%20306.342C105.572%20313.917%2084.4209%20313.917%2071.3336%20306.342L9.86621%20270.819C-3.18711%20263.187%20-3.25515%20250.933%209.70744%20243.37L70.7666%20207.835C83.7745%20200.26%20104.925%20200.26%20118.024%20207.835L179.525%20243.37Z'%20fill='white'/%3e%3cpath%20d='M561.71%20254.942C574.798%20262.506%20574.866%20274.782%20561.858%20282.357L500.765%20317.881C487.757%20325.456%20466.606%20325.456%20453.519%20317.881L392.051%20282.357C378.964%20274.782%20378.896%20262.517%20391.904%20254.942L452.963%20219.408C465.971%20211.844%20487.122%20211.844%20500.22%20219.408L561.71%20254.942Z'%20fill='%2379AEF5'/%3e%3cpath%20d='M561.861%20249.299L500.768%20284.834C487.76%20292.409%20466.609%20292.409%20453.522%20284.834L392.054%20249.311C385.465%20245.495%20382.176%20240.498%20382.188%20235.501V242.576C382.188%20247.573%20385.465%20252.57%20392.043%20256.375L453.51%20291.909C466.598%20299.484%20487.76%20299.484%20500.768%20291.909L561.849%20256.375C568.302%20252.616%20571.546%20247.698%20571.557%20242.747V235.672C571.557%20240.623%20568.325%20245.54%20561.861%20249.299Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M561.71%20221.895C574.798%20229.459%20574.866%20241.735%20561.858%20249.299L500.765%20284.833C487.757%20292.408%20466.606%20292.408%20453.519%20284.833L392.051%20249.31C378.964%20241.735%20378.896%20229.459%20391.904%20221.895L452.963%20186.36C465.971%20178.785%20487.122%20178.785%20500.22%20186.36L561.71%20221.895Z'%20fill='white'/%3e%3cpath%20opacity='0.43'%20d='M499.163%20269.382L514.995%20269.268L547.963%20250.666L529.681%20241.66L499.163%20269.382Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M727.582%20144.647C740.669%20152.21%20740.749%20164.487%20727.741%20172.05L666.636%20207.539C653.628%20215.114%20632.478%20215.114%20619.39%20207.539L557.923%20172.005C544.836%20164.441%20544.768%20152.165%20557.775%20144.601L618.835%20109.066C631.843%20101.492%20652.993%20101.492%20666.092%20109.066L727.582%20144.647Z'%20fill='%2379AEF5'/%3e%3cpath%20d='M727.709%20139.004L666.639%20174.538C653.631%20182.113%20632.48%20182.113%20619.393%20174.538L557.925%20139.004C551.336%20135.199%20548.048%20130.202%20548.059%20125.205V132.28C548.059%20137.266%20551.336%20142.263%20557.925%20146.079L619.382%20181.614C632.469%20189.177%20653.631%20189.177%20666.639%20181.614L727.698%20146.079C734.162%20142.32%20737.394%20137.391%20737.406%20132.451V125.387C737.406%20130.316%20734.162%20135.245%20727.709%20139.004Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M727.585%20111.591C740.673%20119.166%20740.752%20131.443%20727.744%20139.006L666.674%20174.541C653.666%20182.116%20632.515%20182.116%20619.428%20174.541L557.96%20139.006C544.873%20131.443%20544.805%20119.166%20557.813%20111.603L618.872%2076.0681C631.88%2068.4933%20653.031%2068.4933%20666.129%2076.0681L727.585%20111.591Z'%20fill='white'/%3e%3cpath%20d='M188.892%20167.791L116.878%20126.158C114.281%20124.659%20111.922%20124.511%20110.209%20125.511L106.002%20128.043C107.703%20127.055%20110.062%20127.191%20112.67%20128.702L184.673%20170.335C189.845%20173.322%20194.018%20180.556%20194.007%20186.507L193.882%20228.924C193.882%20231.876%20192.839%20233.955%20191.149%20234.931L195.379%20232.467C197.058%20231.49%20198.101%20229.412%20198.112%20226.459L198.226%20184.042C198.248%20178.069%20194.075%20170.823%20188.892%20167.791Z'%20fill='%23C8F3FF'/%3e%3cpath%20d='M184.677%20170.305C189.848%20173.292%20194.022%20180.526%20194.01%20186.477L193.886%20228.894C193.886%20234.833%20189.667%20237.229%20184.495%20234.242L112.492%20192.609C107.321%20189.622%20103.136%20182.388%20103.159%20176.437L103.272%20134.021C103.272%20128.07%20107.502%20125.685%20112.674%20128.672L184.677%20170.305Z'%20fill='%235C6BC0'/%3e%3cpath%20d='M114.142%20165.041L121.426%20150.951L123.13%20151.834L119.886%20158.109L127.389%20161.998L130.632%20155.723L132.336%20156.606L125.053%20170.697L123.349%20169.813L126.607%20163.511L119.104%20159.622L115.846%20165.925L114.142%20165.041Z'%20fill='white'/%3e%3cpath%20d='M137.451%20159.257L130.168%20173.348L128.464%20172.465L135.747%20158.374L137.451%20159.257Z'%20fill='white'/%3e%3cpath%20d='M133.585%20175.119L140.868%20161.028L145.622%20163.493C146.722%20164.062%20147.527%20164.718%20148.038%20165.46C148.551%20166.197%20148.809%20166.979%20148.811%20167.806C148.813%20168.633%20148.6%20169.462%20148.171%20170.292C147.742%20171.122%20147.192%20171.77%20146.521%20172.237C145.85%20172.703%20145.069%20172.938%20144.179%20172.942C143.291%20172.941%20142.302%20172.658%20141.212%20172.093L137.364%20170.099L138.161%20168.558L141.953%20170.524C142.704%20170.913%20143.366%20171.116%20143.938%20171.134C144.514%20171.153%20145.01%20171.015%20145.424%20170.718C145.846%20170.419%20146.203%20169.987%20146.494%20169.423C146.786%20168.859%20146.936%20168.311%20146.943%20167.78C146.95%20167.249%20146.782%20166.749%20146.438%20166.279C146.096%20165.806%20145.545%20165.372%20144.785%20164.978L141.789%20163.425L135.288%20176.002L133.585%20175.119ZM143.48%20172.222L143.671%20180.347L141.692%20179.321L141.556%20171.225L143.48%20172.222Z'%20fill='white'/%3e%3cpath%20d='M154.947%20168.326L147.664%20182.417L145.96%20181.533L153.243%20167.443L154.947%20168.326Z'%20fill='white'/%3e%3cpath%20d='M169.522%20175.88L162.238%20189.971L160.589%20189.116L158.64%20174.079L158.503%20174.007L152.784%20185.071L151.081%20184.187L158.364%20170.097L160.013%20170.952L161.975%20186.031L162.113%20186.102L167.845%20175.011L169.522%20175.88Z'%20fill='white'/%3e%3cpath%20d='M180.274%20187.036C180.362%20186.495%20180.378%20185.977%20180.32%20185.481C180.269%20184.984%20180.142%20184.517%20179.938%20184.08C179.739%20183.645%20179.462%20183.248%20179.107%20182.89C178.752%20182.531%20178.321%20182.221%20177.812%20181.957C176.978%20181.525%20176.109%20181.348%20175.204%20181.425C174.298%20181.502%20173.427%20181.856%20172.59%20182.487C171.753%20183.117%20171.02%20184.042%20170.389%20185.263C169.758%20186.483%20169.43%20187.618%20169.404%20188.669C169.377%20189.719%20169.601%20190.641%20170.074%20191.433C170.548%20192.225%20171.219%20192.846%20172.09%20193.297C172.896%20193.715%20173.695%20193.911%20174.486%20193.885C175.285%20193.857%20176.02%20193.616%20176.69%20193.161C177.368%20192.704%20177.93%20192.044%20178.375%20191.182L178.841%20191.562L174.608%20189.369L175.391%20187.855L180.75%20190.633L179.967%20192.146C179.368%20193.307%20178.599%20194.188%20177.661%20194.789C176.727%20195.393%20175.705%20195.707%20174.596%20195.73C173.493%20195.752%20172.382%20195.473%20171.265%20194.894C170.019%20194.248%20169.076%20193.387%20168.436%20192.311C167.8%20191.237%20167.499%20190.022%20167.532%20188.667C167.569%20187.314%20167.972%20185.894%20168.74%20184.408C169.316%20183.293%20169.983%20182.368%20170.741%20181.633C171.505%20180.895%20172.325%20180.354%20173.199%20180.011C174.074%20179.667%20174.973%20179.523%20175.897%20179.577C176.822%20179.632%20177.735%20179.893%20178.637%20180.361C179.379%20180.745%20180.013%20181.216%20180.538%20181.773C181.07%20182.328%20181.482%20182.94%20181.775%20183.61C182.075%20184.277%20182.249%20184.981%20182.296%20185.72C182.346%20186.456%20182.258%20187.198%20182.033%20187.948L180.274%20187.036Z'%20fill='white'/%3e%3cpath%20d='M291.119%20297.896C292.922%20298.941%20292.934%20300.633%20291.119%20301.678L279.619%20308.39C278.614%20308.905%20277.5%20309.174%20276.37%20309.174C275.24%20309.174%20274.127%20308.905%20273.121%20308.39L261.474%20301.678C259.671%20300.633%20259.659%20298.941%20261.474%20297.896L273.019%20291.184C274.025%20290.669%20275.138%20290.4%20276.268%20290.4C277.398%20290.4%20278.512%20290.669%20279.517%20291.184L291.119%20297.896Z'%20fill='white'/%3e%3cg%20opacity='0.29'%3e%3cpath%20d='M266.168%20283.475C267.971%20284.519%20267.982%20286.2%20266.168%20287.245L254.668%20293.968C253.662%20294.483%20252.549%20294.752%20251.419%20294.752C250.289%20294.752%20249.176%20294.483%20248.17%20293.968L236.523%20287.245C234.72%20286.2%20234.708%20284.519%20236.523%20283.475L248.045%20276.82C249.051%20276.304%20250.165%20276.036%20251.294%20276.036C252.424%20276.036%20253.538%20276.304%20254.543%20276.82L266.168%20283.475Z'%20fill='white'/%3e%3c/g%3e%3cpath%20d='M265.479%20260.52C267.282%20261.565%20267.282%20263.257%20265.479%20264.29L253.934%20271.013C252.926%20271.529%20251.811%20271.797%20250.679%20271.797C249.548%20271.797%20248.432%20271.529%20247.424%20271.013L235.834%20264.324C234.031%20263.291%20234.019%20261.599%20235.834%20260.554L247.379%20253.842C248.385%20253.327%20249.498%20253.058%20250.628%20253.058C251.758%20253.058%20252.871%20253.327%20253.877%20253.842L265.479%20260.52Z'%20fill='%2358AFFB'/%3e%3cpath%20d='M330.119%20297.896C331.922%20298.94%20331.933%20300.633%20330.119%20301.677L318.574%20308.389C317.568%20308.904%20316.454%20309.173%20315.325%20309.173C314.195%20309.173%20313.081%20308.904%20312.075%20308.389L300.451%20301.666C298.648%20300.632%20298.637%20298.94%20300.451%20297.896L311.996%20291.172C313.003%20290.662%20314.116%20290.397%20315.245%20290.397C316.374%20290.397%20317.487%20290.662%20318.494%20291.172L330.119%20297.896Z'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M266.328%20312.022C268.131%20313.067%20268.142%20314.747%20266.328%20315.792L254.783%20322.504C253.777%20323.019%20252.663%20323.288%20251.534%20323.288C250.404%20323.288%20249.29%20323.019%20248.284%20322.504L236.66%20315.792C234.857%20314.747%20234.857%20313.055%20236.66%20312.022L248.205%20305.299C249.212%20304.789%20250.325%20304.523%20251.454%20304.523C252.583%20304.523%20253.696%20304.789%20254.703%20305.299L266.328%20312.022Z'%20fill='%2358AFFB'/%3e%3cpath%20d='M473.363%20111.794C475.177%20112.839%20475.177%20114.52%20473.363%20115.565L461.818%20122.288C460.811%20122.8%20459.698%20123.068%20458.569%20123.068C457.439%20123.068%20456.326%20122.8%20455.319%20122.288L443.718%20115.553C441.926%20114.508%20441.915%20112.828%20443.718%20111.783L455.263%20105.06C456.271%20104.547%20457.386%20104.28%20458.518%20104.28C459.649%20104.28%20460.764%20104.547%20461.772%20105.06L473.363%20111.794Z'%20fill='white'/%3e%3cg%20opacity='0.29'%3e%3cpath%20d='M448.416%2097.3849C450.219%2098.4184%20450.23%20100.111%20448.416%20101.155L436.871%20107.878C435.863%20108.388%20434.751%20108.654%20433.622%20108.654C432.493%20108.654%20431.38%20108.388%20430.373%20107.878L418.748%20101.155C416.945%20100.111%20416.945%2098.4184%20418.748%2097.3849L430.293%2090.6618C431.301%2090.1464%20432.416%2089.8777%20433.548%2089.8777C434.68%2089.8777%20435.795%2090.1464%20436.803%2090.6618L448.416%2097.3849Z'%20fill='white'/%3e%3c/g%3e%3cpath%20d='M447.727%2074.4206C449.53%2075.4654%20449.542%2077.1462%20447.727%2078.191L436.205%2084.8913C435.199%2085.4067%20434.085%2085.6754%20432.956%2085.6754C431.826%2085.6754%20430.712%2085.4067%20429.706%2084.8913L418.082%2078.1796C416.279%2077.1348%20416.268%2075.454%20418.082%2074.4092L429.627%2067.6861C430.634%2067.1761%20431.747%2066.9104%20432.876%2066.9104C434.005%2066.9104%20435.118%2067.1761%20436.125%2067.6861L447.727%2074.4206Z'%20fill='%2358AFFB'/%3e%3cg%20opacity='0.26'%3e%3cpath%20d='M512.378%20111.797C514.17%20112.842%20514.182%20114.522%20512.378%20115.567L500.833%20122.29C499.825%20122.803%20498.71%20123.07%20497.579%20123.07C496.448%20123.07%20495.332%20122.803%20494.324%20122.29L482.722%20115.556C480.919%20114.511%20480.908%20112.83%20482.722%20111.785L494.267%20105.062C495.273%20104.547%20496.386%20104.278%20497.516%20104.278C498.646%20104.278%20499.76%20104.547%20500.765%20105.062L512.378%20111.797Z'%20fill='white'/%3e%3c/g%3e%3cpath%20d='M448.598%20125.885C450.413%20126.929%20450.413%20128.622%20448.598%20129.655L437.053%20136.378C436.048%20136.893%20434.934%20137.162%20433.804%20137.162C432.674%20137.162%20431.561%20136.893%20430.555%20136.378L418.931%20129.655C417.139%20128.622%20417.128%20126.929%20418.931%20125.885L430.453%20119.173C431.459%20118.658%20432.572%20118.389%20433.702%20118.389C434.832%20118.389%20435.946%20118.658%20436.951%20119.173L448.598%20125.885Z'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M659.707%20269.092C661.511%20270.137%20661.522%20271.817%20659.707%20272.862L648.196%20279.574C647.189%20280.089%20646.073%20280.358%20644.942%20280.358C643.81%20280.358%20642.695%20280.089%20641.687%20279.574L630.051%20272.862C628.248%20271.817%20628.237%20270.125%20630.051%20269.092L641.596%20262.369C642.602%20261.853%20643.715%20261.585%20644.845%20261.585C645.975%20261.585%20647.089%20261.853%20648.094%20262.369L659.707%20269.092Z'%20fill='white'/%3e%3cg%20opacity='0.29'%3e%3cpath%20d='M634.761%20254.66C636.564%20255.705%20636.576%20257.397%20634.761%20258.442L623.25%20265.154C622.244%20265.669%20621.131%20265.938%20620.001%20265.938C618.871%20265.938%20617.758%20265.669%20616.752%20265.154L605.105%20258.442C603.302%20257.397%20603.29%20255.705%20605.105%20254.66L616.65%20247.949C617.655%20247.433%20618.769%20247.165%20619.899%20247.165C621.029%20247.165%20622.142%20247.433%20623.148%20247.949L634.761%20254.66Z'%20fill='white'/%3e%3c/g%3e%3cpath%20d='M634.071%20231.709C635.874%20232.754%20635.874%20234.446%20634.071%20235.48L622.526%20242.203C621.518%20242.718%20620.403%20242.987%20619.271%20242.987C618.139%20242.987%20617.024%20242.718%20616.016%20242.203L604.426%20235.48C602.623%20234.446%20602.611%20232.754%20604.426%20231.709L615.971%20224.997C616.977%20224.482%20618.09%20224.213%20619.22%20224.213C620.35%20224.213%20621.463%20224.482%20622.469%20224.997L634.071%20231.709Z'%20fill='%2358AFFB'/%3e%3cg%20opacity='0.26'%3e%3cpath%20d='M698.708%20269.094C700.511%20270.127%20700.523%20271.819%20698.708%20272.864L687.163%20279.576C686.157%20280.091%20685.044%20280.36%20683.914%20280.36C682.784%20280.36%20681.671%20280.091%20680.665%20279.576L669.041%20272.853C667.237%20271.819%20667.215%20270.127%20669.041%20269.082L680.586%20262.371C681.591%20261.855%20682.705%20261.587%20683.835%20261.587C684.964%20261.587%20686.078%20261.855%20687.084%20262.371L698.708%20269.094Z'%20fill='white'/%3e%3c/g%3e%3cpath%20d='M634.916%20283.189C636.72%20284.234%20636.731%20285.914%20634.916%20286.959L623.371%20293.682C622.364%20294.192%20621.251%20294.458%20620.122%20294.458C618.993%20294.458%20617.881%20294.192%20616.873%20293.682L605.249%20286.959C603.446%20285.914%20603.446%20284.222%20605.249%20283.189L616.794%20276.466C617.801%20275.956%20618.914%20275.69%20620.043%20275.69C621.172%20275.69%20622.285%20275.956%20623.292%20276.466L634.916%20283.189Z'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M561.176%2037.9307L561.232%2058.3498L558.919%2059.6899L558.885%2050.1163L550.311%2055.0791L550.334%2064.6527L548.043%2065.9814L547.986%2045.5623L550.277%2044.2336L550.3%2052.7737L558.885%2047.8109L558.862%2039.2708L561.176%2037.9307Z'%20fill='white'/%3e%3cpath%20d='M567.436%2034.321L567.493%2054.7288L565.213%2056.0462L565.145%2035.6384L567.436%2034.321Z'%20fill='white'/%3e%3cpath%20d='M581.673%2040.9289C581.954%2042.5768%20582.418%2044.1881%20583.057%2045.7328L580.686%2047.1069C580.127%2045.7614%20579.728%2044.355%20579.496%2042.9163C578.951%2040.4065%20577.999%2039.8955%20575.923%2040.9971L573.769%2042.2463V51.0931L571.5%2052.4104V32.2752C572.892%2031.1793%20574.362%2030.1885%20575.901%2029.3111C578.35%2027.8916%20579.927%2027.4941%20581.027%2028.0051C581.934%2028.4026%20582.433%2029.5042%20582.433%2031.0714C582.362%2032.4286%20582.024%2033.7584%20581.438%2034.9843C580.852%2036.2102%20580.03%2037.308%20579.019%2038.2147V38.3283C580.426%2038.0671%20581.288%2039.0437%20581.673%2040.9289ZM576.105%2038.8961C577.26%2038.2922%20578.239%2037.3999%20578.948%2036.3056C579.658%2035.2113%20580.073%2033.9521%20580.153%2032.65C580.153%2030.0152%20578.486%2029.8335%20576.059%2031.1963C575.256%2031.6417%20574.496%2032.1626%20573.791%2032.7522V40.2021L576.139%2038.8507'%20fill='white'/%3e%3cpath%20d='M595.179%2018.2722L595.19%2020.4868L587.898%2024.7001L587.92%2031.1506L594.816%2027.1644V29.3449L587.932%2033.3311L587.943%2040.6901L595.632%2036.2497V38.4642L585.664%2044.222L585.596%2023.8142L595.179%2018.2722Z'%20fill='white'/%3e%3cpath%20d='M610.61%2011.7433C612.198%2012.5042%20613.128%2014.3326%20613.128%2017.6374C613.14%2020.9419%20612.266%2024.1891%20610.599%2027.0406C608.677%2030.172%20605.977%2032.7507%20602.762%2034.5246C601.141%2035.4559%20599.768%2036.16%20598.612%2036.6824V16.6039C600.166%2015.4264%20601.79%2014.3455%20603.477%2013.3673C606.709%2011.4594%20609.057%2010.9824%20610.61%2011.7433ZM603.205%2032.1852C605.54%2030.9088%20607.48%2029.0148%20608.814%2026.7098C610.148%2024.4048%20610.824%2021.7773%20610.769%2019.1137C610.769%2014.2758%20608.41%2012.5951%20603.568%2015.3888C602.626%2015.9243%20601.728%2016.5318%20600.88%2017.2058V33.3208C601.663%2032.9985%20602.421%2032.6189%20603.148%2032.1852'%20fill='white'/%3e%3cpath%20d='M58.2918%20176.574V178.152C58.2937%20178.364%2058.3509%20178.572%2058.4576%20178.755C58.5644%20178.938%2058.717%20179.09%2058.9004%20179.195C59.0838%20179.301%2059.2915%20179.357%2059.5031%20179.357C59.7146%20179.357%2059.9226%20179.302%2060.1064%20179.197L67.5573%20174.905C67.7404%20174.799%2067.8924%20174.646%2067.9979%20174.463C68.1034%20174.279%2068.1588%20174.071%2068.1584%20173.86V172.338C68.166%20172.128%2068.1192%20171.92%2068.0225%20171.733C67.9258%20171.547%2067.7825%20171.389%2067.6066%20171.274C67.4307%20171.16%2067.2281%20171.093%2067.0187%20171.081C66.8094%20171.068%2066.6003%20171.11%2066.4119%20171.202L58.961%20175.506C58.7626%20175.606%2058.5954%20175.758%2058.4774%20175.947C58.3594%20176.135%2058.2952%20176.352%2058.2918%20176.574Z'%20fill='%23F2F9FF'/%3e%3cpath%20d='M34.6559%20197.957V199.592C34.6569%20199.803%2034.7128%20200.01%2034.8182%20200.193C34.9235%20200.376%2035.0746%20200.528%2035.2566%20200.635C35.4387%20200.742%2035.6453%20200.799%2035.8561%20200.801C36.067%20200.804%2036.2748%20200.751%2036.459%20200.648L67.5443%20182.762C67.7274%20182.656%2067.8794%20182.503%2067.9849%20182.32C68.0904%20182.136%2068.1458%20181.928%2068.1454%20181.717V180.138C68.1478%20179.926%2068.094%20179.716%2067.9895%20179.531C67.8849%20179.347%2067.7334%20179.193%2067.5503%20179.085C67.3671%20178.978%2067.1589%20178.921%2066.9467%20178.921C66.7345%20178.92%2066.5259%20178.976%2066.3422%20179.082L35.2909%20196.912C35.1015%20197.013%2034.9427%20197.164%2034.831%20197.347C34.7193%20197.531%2034.6588%20197.742%2034.6559%20197.957Z'%20fill='%23F2F9FF'/%3e%3cg%20opacity='0.53'%3e%3cpath%20d='M47.4966%20206.339V207.917C47.4962%20208.129%2047.5515%20208.336%2047.6568%20208.52C47.7622%20208.703%2047.9139%20208.855%2048.0967%20208.961C48.2795%20209.067%2048.487%20209.123%2048.6982%20209.123C48.9094%20209.123%2049.1169%20209.068%2049.2998%20208.962L67.5472%20198.457C67.7374%20198.359%2067.8958%20198.208%2068.0042%20198.023C68.1126%20197.838%2068.1665%20197.626%2068.1597%20197.412V195.822C68.1601%20195.611%2068.1048%20195.403%2067.9995%20195.22C67.8941%20195.036%2067.7424%20194.884%2067.5596%20194.778C67.3768%20194.672%2067.1693%20194.616%2066.9581%20194.616C66.7469%20194.616%2066.5394%20194.672%2066.3565%20194.778L48.0977%20205.271C47.9112%20205.379%2047.7571%20205.535%2047.6513%20205.722C47.5456%20205.91%2047.4922%20206.123%2047.4966%20206.339Z'%20fill='%23F2F9FF'/%3e%3c/g%3e%3cpath%20d='M39.5103%20203.054V204.633C39.5113%20204.844%2039.5672%20205.051%2039.6726%20205.234C39.7779%20205.417%2039.929%20205.569%2040.1111%20205.676C40.2931%20205.782%2040.4997%20205.84%2040.7105%20205.842C40.9214%20205.844%2041.1292%20205.791%2041.3135%20205.689L67.5448%20190.63C67.7288%20190.522%2067.8812%20190.368%2067.9867%20190.183C68.0923%20189.997%2068.1471%20189.787%2068.1459%20189.574V187.995C68.1449%20187.784%2068.089%20187.577%2067.9836%20187.394C67.8783%20187.211%2067.7271%20187.059%2067.5451%20186.952C67.3631%20186.846%2067.1565%20186.788%2066.9456%20186.786C66.7348%20186.784%2066.527%20186.836%2066.3427%20186.939L40.1113%20202.009C39.9282%20202.115%2039.7763%20202.267%2039.6707%20202.451C39.5652%20202.634%2039.5099%20202.842%2039.5103%20203.054Z'%20fill='%23F2F9FF'/%3e%3cpath%20d='M8.80978%20208.234V229.448L24.8004%20239.851'%20stroke='white'%20stroke-width='0.53'%20stroke-miterlimit='10'/%3e%3cpath%20d='M8.71457%20208.631C9.76055%20208.631%2010.6085%20207.782%2010.6085%20206.735C10.6085%20205.687%209.76055%20204.838%208.71457%20204.838C7.66858%20204.838%206.82065%20205.687%206.82065%20206.735C6.82065%20207.782%207.66858%20208.631%208.71457%20208.631Z'%20stroke='white'%20stroke-width='1.06'%20stroke-miterlimit='10'/%3e%3cpath%20d='M386.505%20197.436V218.638L402.484%20229.052'%20stroke='white'%20stroke-width='0.53'%20stroke-miterlimit='10'/%3e%3cpath%20d='M386.406%20197.821C387.452%20197.821%20388.3%20196.972%20388.3%20195.925C388.3%20194.877%20387.452%20194.028%20386.406%20194.028C385.36%20194.028%20384.512%20194.877%20384.512%20195.925C384.512%20196.972%20385.36%20197.821%20386.406%20197.821Z'%20stroke='white'%20stroke-width='1.06'%20stroke-miterlimit='10'/%3e%3cpath%20opacity='0.35'%20d='M249.201%20154.586C259.943%20154.586%20268.651%20149.044%20268.651%20142.208C268.651%20135.371%20259.943%20129.829%20249.201%20129.829C238.46%20129.829%20229.752%20135.371%20229.752%20142.208C229.752%20149.044%20238.46%20154.586%20249.201%20154.586Z'%20fill='%23A6D0F4'/%3e%3cpath%20opacity='0.35'%20d='M258.559%20155.143C258.559%20158.959%20263.424%20162.048%20269.412%20162.048C275.4%20162.048%20280.265%20158.959%20280.265%20155.143C280.265%20151.327%20275.411%20148.238%20269.412%20148.238C263.413%20148.238%20258.559%20151.327%20258.559%20155.143Z'%20fill='%23A6D0F4'/%3e%3cpath%20opacity='0.35'%20d='M302.642%20131.248C302.642%20135.064%20307.507%20138.153%20313.495%20138.153C319.483%20138.153%20324.348%20135.064%20324.348%20131.248C324.348%20127.432%20319.494%20124.332%20313.495%20124.332C307.496%20124.332%20302.642%20127.432%20302.642%20131.248Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M260.79%20140.663C260.564%20143.218%20258.171%20144.944%20256.005%20145.875C253.633%20146.854%20251.084%20147.329%20248.52%20147.272C245.889%20147.278%20243.29%20146.7%20240.91%20145.58C238.857%20144.569%20236.691%20142.741%20236.691%20140.242C236.594%20141.088%20236.671%20141.944%20236.916%20142.758C237.162%20143.573%20237.572%20144.328%20238.12%20144.978C239.93%20146.723%20242.229%20147.872%20244.709%20148.272C249.359%20149.225%20255.676%20148.771%20259.203%20145.183C259.806%20144.534%20260.263%20143.764%20260.543%20142.923C260.823%20142.083%20260.919%20141.192%20260.824%20140.311L260.79%20140.663Z'%20fill='%23ADCDFC'/%3e%3cpath%20d='M257.252%20135.994C261.981%20138.731%20262.015%20143.16%20257.32%20145.897C254.682%20147.231%20251.769%20147.926%20248.814%20147.926C245.859%20147.926%20242.946%20147.231%20240.308%20145.897C235.579%20143.16%20235.557%20138.731%20240.308%20135.994C242.936%20134.667%20245.837%20133.976%20248.78%20133.976C251.723%20133.976%20254.624%20134.667%20257.252%20135.994Z'%20fill='white'/%3e%3cpath%20d='M250.044%20132.339L250.021%20142.401L248.762%20143.139L248.774%20133.077L250.044%20132.339Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M248.775%20133.077L248.764%20143.139L247.493%20142.401L247.505%20132.339L248.775%20133.077Z'%20fill='%237BAEFF'/%3e%3cpath%20d='M250.634%20130.51L248.786%20131.577L246.926%20130.51L248.774%20129.431L250.634%20130.51Z'%20fill='%234DA5DC'/%3e%3cpath%20d='M236.786%2096.247C236.786%2096.247%20232.987%2098.5183%20231.978%20100.79C230.968%20103.061%20231.24%20118.96%20236.514%20126.069C241.787%20133.179%20251.631%20134.144%20253.911%20133.133C256.19%20132.122%20269.278%20125.558%20270.287%20122.276C271.296%20118.994%20266.261%20116.473%20263.483%20115.212C260.704%20113.952%20258.946%20112.18%20257.438%20107.638C255.93%20103.095%20255.17%2095.2703%20253.401%2094.0097C251.631%2092.7491%20247.379%2090.7163%20236.786%2096.247Z'%20fill='%2325437F'/%3e%3cpath%20d='M255.614%20130.875C257.462%20130.057%20266.512%20125.537%20270.357%20122.119C271.162%20118.916%20266.252%20116.44%20263.552%20115.203C260.853%20113.965%20259.016%20112.17%20257.508%20107.628C255.999%20103.085%20255.24%2095.2604%20253.47%2093.9998C251.701%2092.7392%20247.426%2090.7177%20236.833%2096.2711C235.702%2096.9583%20234.642%2097.7572%20233.669%2098.656C232.717%20101.302%20233.057%20116.827%20238.262%20123.811C243.468%20130.795%20253.346%20131.885%20255.614%20130.875Z'%20fill='%23254DA1'/%3e%3cpath%20d='M245.804%2084.3226C245.594%2085.0765%20245.562%2085.8687%20245.71%2086.6372C245.857%2087.4056%20246.181%2088.1294%20246.654%2088.7517C248.129%2090.512%20247.845%2091.023%20247.562%2091.6363C247.278%2092.2495%20245.532%2094.2369%20245.736%2096.9739C245.94%2099.7108%20253.595%2098.4502%20254.298%2096.5537C255.001%2094.6571%20252.2%2091.5%20252.03%2089.1038C251.86%2086.7075%20253.504%2083.6185%20251.474%2082.8463C249.444%2082.074%20246.791%2081.4835%20245.804%2084.3226Z'%20fill='%23BB543E'/%3e%3cpath%20d='M267.259%20149.509C267.259%20149.509%20266.556%20151.428%20266.987%20151.996C267.317%20152.802%20267.505%20153.659%20267.542%20154.529L268.245%20154.949L268.529%20153.541C268.678%20154.157%20268.965%20154.732%20269.368%20155.221C270.774%20156.172%20272.348%20156.842%20274.007%20157.197C275.821%20157.618%20276.388%20157.481%20276.524%20156.777C276.66%20156.073%20274.562%20153.541%20273.303%20152.7C272.045%20151.86%20267.259%20149.509%20267.259%20149.509Z'%20fill='%23254DA1'/%3e%3cpath%20d='M271.375%20149.326C271.766%20150.155%20272.221%20150.952%20272.736%20151.711C273.303%20152.415%20274.845%20153.675%20274.698%20154.38C274.55%20155.084%20273.155%20154.947%20271.477%20154.38C269.798%20153.812%20269.367%20152.279%20268.528%20151.847C268.063%20151.686%20267.675%20151.357%20267.441%20150.924C267.206%20150.491%20267.14%20149.986%20267.258%20149.508C267.405%20148.054%20271.375%20149.326%20271.375%20149.326Z'%20fill='%23FF9554'/%3e%3cpath%20d='M263.743%20126.295C263.373%20125.609%20263.284%20124.805%20263.496%20124.054C263.708%20123.304%20264.203%20122.665%20264.877%20122.275C267.327%20120.901%20269.119%20123.036%20269.55%20124.035C270.549%20126.061%20271.157%20128.257%20271.342%20130.508C271.342%20133.166%20271.557%20149.701%20271.557%20149.701C271.268%20149.956%20270.93%20150.149%20270.563%20150.269C270.197%20150.389%20269.81%20150.434%20269.427%20150.4C269.043%20150.366%20268.67%20150.254%20268.33%20150.071C267.991%20149.889%20267.692%20149.639%20267.452%20149.337C267.452%20149.337%20265.047%20129.486%20264.991%20128.532C264.768%20127.694%20264.339%20126.925%20263.743%20126.295Z'%20fill='%23FF9554'/%3e%3cpath%20d='M263.141%20151.574C263.141%20151.574%20262.438%20153.493%20262.857%20154.05C263.195%20154.854%20263.387%20155.711%20263.424%20156.582L264.127%20157.003L264.411%20155.594C264.559%20156.215%20264.846%20156.793%20265.25%20157.287C266.651%20158.235%20268.223%20158.902%20269.877%20159.251C271.703%20159.671%20272.27%20159.535%20272.406%20158.831C272.542%20158.127%20270.444%20155.594%20269.174%20154.754C267.904%20153.914%20263.141%20151.574%20263.141%20151.574Z'%20fill='%23254DA1'/%3e%3cpath%20d='M256.94%20131.145C256.94%20131.145%20255.25%20128.703%20257.496%20127.011C259.741%20125.319%20261.805%20127.204%20262.361%20128.147C263.62%20130.024%20264.509%20132.125%20264.981%20134.336C265.355%20136.959%20267.249%20151.371%20267.249%20151.371C266.997%20151.662%20266.688%20151.9%20266.341%20152.068C265.994%20152.236%20265.617%20152.332%20265.232%20152.351C264.847%20152.369%20264.462%20152.308%20264.102%20152.173C263.741%20152.038%20263.411%20151.831%20263.132%20151.564C263.132%20151.564%20258.596%20134.132%20258.46%20133.189C258.13%20132.393%20257.608%20131.69%20256.94%20131.145Z'%20fill='%23FF9554'/%3e%3cpath%20d='M267.256%20151.383C267.642%20152.219%20268.097%20153.02%20268.617%20153.779C269.173%20154.472%20270.727%20155.744%20270.579%20156.448C270.432%20157.152%20269.037%20157.005%20267.358%20156.448C265.68%20155.892%20265.249%20154.336%20264.41%20153.916C263.945%20153.754%20263.557%20153.425%20263.322%20152.992C263.087%20152.56%20263.022%20152.055%20263.14%20151.576C263.287%20150.123%20267.256%20151.383%20267.256%20151.383Z'%20fill='%23FF9554'/%3e%3cpath%20d='M267.077%20120.46C266.397%20119.813%20258.47%20113.055%20258.47%20113.055L245.36%20115.111C245.36%20115.111%20245.553%20121.119%20248.762%20125.048C250.535%20127.298%20252.616%20129.286%20254.943%20130.953C255.65%20131.527%20256.487%20131.917%20257.381%20132.089C257.822%20131.055%20258.63%20130.221%20259.649%20129.75C261.611%20128.614%20268.212%20124.071%20269.051%20124.264C269.89%20124.457%20270.037%20124.821%20270.037%20124.821C269.41%20123.153%20268.395%20121.658%20267.077%20120.46Z'%20fill='%2362759A'/%3e%3cpath%20d='M257.026%2092.5215C257.026%2092.5215%20258.942%2092.6237%20260.054%2095.2471C261.165%2097.8704%20262.583%20104.548%20262.98%20105.161C263.377%20105.775%20262.889%20107.58%20260.462%20108.091C259.046%20106.268%20257.825%20104.3%20256.822%20102.22C255.313%2098.9947%20254.667%2093.9751%20257.026%2092.5215Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M249.241%2091.1594C249.241%2091.1594%20243.979%2094.9298%20243.458%2096.179C242.831%2098.5159%20242.991%20100.994%20243.911%20103.231C245.045%20105.503%20244.603%20114.088%20244.989%20115.724C245.374%20117.359%20249.876%20117.927%20252.666%20117.393C255.456%20116.859%20258.813%20114.827%20258.711%20111.579C258.609%20108.331%20258.144%20106.536%20259.845%2098.8592C260.163%2097.4169%20258.813%2095.668%20258.133%2093.1809C257.985%2092.6698%20256.239%2092.1247%20256.239%2092.1247C256.239%2092.1247%20254.413%2090.9436%20249.241%2091.1594Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M247.341%2094.2955C247.341%2094.2955%20242.805%2093.3869%20240.865%20100.383C239.663%20105.198%20238.518%20109.298%20239.187%20110.183C239.856%20111.069%20241.829%20111.875%20243.088%20110.853C244.347%20109.831%20248.101%2098.2589%20248.01%2097.1119C247.919%2095.9649%20248.305%2095.1131%20247.341%2094.2955Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M259.453%20100.109C259.453%20100.109%20257.537%20104.754%20248.351%20102.937C246.536%20102.835%20244.812%20106.98%20245.924%20109.206C247.119%20111.81%20247.866%20114.597%20248.135%20117.451C249.637%20117.696%20251.169%20117.696%20252.672%20117.451C255.45%20116.906%20258.818%20114.884%20258.716%20111.636C258.363%20107.83%20258.65%20103.991%20259.567%20100.279L259.453%20100.109Z'%20fill='%23A9C9E6'/%3e%3cpath%20d='M249.114%2090.9548C248.966%2091.0754%20248.852%2091.2312%20248.781%2091.4078C248.709%2091.5845%20248.683%2091.7762%20248.705%2091.9655C249.335%2093.4506%20250.325%2094.7545%20251.586%2095.7586C252.391%2096.1561%20253.242%2093.7825%20253.242%2093.7825C253.242%2093.7825%20254.966%2094.498%20255.567%2093.987C256.168%2093.4759%20254.512%2091.5567%20254.058%2091.2046C252.449%2090.7577%20250.76%2090.6724%20249.114%2090.9548Z'%20fill='white'/%3e%3cpath%20d='M253.811%2090.4542C253.797%2090.5101%20253.797%2090.5687%20253.811%2090.6246C253.868%2091.0107%20254.061%2091.9987%20254.095%2092.4076C254.129%2092.8164%20253.675%2093.4865%20252.62%2093.4637C251.566%2093.441%20249.74%2092.9981%20249.139%2091.7262C249.165%2090.4746%20249.109%2089.2225%20248.969%2087.9785L253.811%2090.4542Z'%20fill='%23FF8654'/%3e%3cpath%20d='M255.328%2084.0166C254.829%2081.3592%20252.731%2079.8488%20250.349%2080.4052C249.573%2080.5081%20248.832%2080.7905%20248.185%2081.2301C247.537%2081.6697%20247.001%2082.2544%20246.618%2082.9378C245.484%2085.2091%20247.162%2087.117%20248.24%2088.3208C248.693%2088.8091%20249.033%2089.1952%20249.249%2089.4564L249.487%2089.729C250.104%2090.3499%20250.863%2090.81%20251.699%2091.0691C252.194%2091.2405%20252.726%2091.2773%20253.24%2091.1755C253.754%2091.0737%20254.232%2090.8371%20254.624%2090.4899C255.305%2089.7858%20255.804%2086.6854%20255.328%2084.0166Z'%20fill='%23FF9554'/%3e%3cpath%20d='M248.186%2087.036C248.186%2087.036%20247.403%2085.9685%20246.825%2086.2524C246.246%2086.5363%20247.607%2088.8985%20248.481%2088.853C249.354%2088.8076%20248.186%2087.036%20248.186%2087.036Z'%20fill='%23FF9554'/%3e%3cpath%20d='M257.244%20114.688L266.657%20123.683L259.353%20127.76L249.952%20118.765L257.244%20114.688Z'%20fill='white'/%3e%3cpath%20d='M258.933%20116.767C258.6%20117.311%20258.312%20117.881%20258.071%20118.471C257.912%20118.993%20257.425%20119.981%20257.629%20120.254C257.833%20120.526%20258.525%20120.083%20258.661%20119.765C258.759%20119.577%20258.908%20119.419%20259.092%20119.311L259.183%20120.254C259.183%20120.833%20259.455%20122.071%20259.92%20122.298C260.385%20122.525%20261.054%20121.628%20261.383%20121.094C261.678%20120.306%20261.725%20119.446%20261.519%20118.63C261.337%20118.266%20260.85%20117.437%20260.85%20117.437L258.933%20116.767Z'%20fill='%23FF9554'/%3e%3cpath%20d='M259.208%20105.559C259.255%20105.191%20259.413%20104.845%20259.661%20104.569C259.908%20104.292%20260.234%20104.098%20260.595%20104.012C260.956%20103.925%20261.335%20103.951%20261.68%20104.086C262.026%20104.22%20262.323%20104.457%20262.531%20104.764C262.966%20105.401%20263.277%20106.114%20263.45%20106.865C263.949%20109.137%20261.646%20117.086%20261.42%20117.79C261.193%20118.495%20259.809%20118.824%20258.732%20117.927C257.654%20117.03%20259.174%20108.047%20259.174%20106.945C259.159%20106.483%20259.17%20106.02%20259.208%20105.559Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M252.571%20117.199C253.201%20117.287%20253.823%20117.424%20254.431%20117.608C254.93%20117.812%20256.008%20118.062%20256.087%20118.392C256.166%20118.721%20255.384%20118.982%20255.055%20118.891C254.851%20118.833%20254.635%20118.833%20254.431%20118.891L255.1%20119.55C255.509%20119.97%20256.336%20120.924%20256.234%20121.413C256.132%20121.901%20254.998%20121.867%20254.374%20121.787C253.582%20121.52%20252.89%20121.016%20252.39%20120.345C252.22%20119.97%20251.891%20119.05%20251.891%20119.05L252.571%20117.199Z'%20fill='%23FF9554'/%3e%3cpath%20d='M241.843%20108.207C241.53%20108.011%20241.165%20107.915%20240.796%20107.93C240.427%20107.945%20240.071%20108.071%20239.775%20108.292C239.479%20108.512%20239.256%20108.817%20239.135%20109.167C239.015%20109.516%20239.002%20109.894%20239.099%20110.251C239.306%20110.995%20239.652%20111.692%20240.12%20112.306C241.526%20114.135%20250.927%20119.336%20251.63%20119.609C252.334%20119.881%20253.456%20119.052%20253.456%20117.644C253.456%20116.236%20243.771%20109.774%20242.932%20109.07C242.585%20108.763%20242.221%20108.475%20241.843%20108.207Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M252.752%2082.6185C252.752%2082.6185%20252.049%2082.3345%20251.698%2083.3226C251.346%2084.3106%20251.142%2085.5939%20249.872%2086.1276C248.602%2086.6614%20248.261%2086.8999%20247.354%2086.8318C246.869%2086.7941%20246.416%2086.572%20246.089%2086.2109C245.763%2085.8498%20245.586%2085.3771%20245.596%2084.8898C245.655%2083.7529%20246.063%2082.6621%20246.766%2081.7673C247.468%2080.8725%20248.431%2080.2176%20249.52%2079.8929C250.153%2079.6834%20250.823%2079.6063%20251.487%2079.6662C252.151%2079.726%20252.796%2079.9217%20253.382%2080.241C253.967%2080.5603%20254.481%2080.9965%20254.892%2081.5226C255.303%2082.0487%20255.601%2082.6536%20255.769%2083.2999C256.189%2085.0488%20255.497%2085.1964%20255.497%2085.1964C255.497%2085.1964%20255.417%2082.2891%20252.752%2082.6185Z'%20fill='%23BB543E'/%3e%3cpath%20opacity='0.35'%20d='M292.625%20129.105C303.367%20129.105%20312.075%20123.563%20312.075%20116.726C312.075%20109.89%20303.367%20104.347%20292.625%20104.347C281.884%20104.347%20273.176%20109.89%20273.176%20116.726C273.176%20123.563%20281.884%20129.105%20292.625%20129.105Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M304.215%20115.181C303.988%20117.725%20301.595%20119.451%20299.441%20120.382C297.068%20121.37%20294.513%20121.846%20291.944%20121.779C289.314%20121.784%20286.716%20121.206%20284.335%20120.087C282.293%20119.076%20280.116%20117.248%20280.116%20114.761C280.02%20115.604%20280.097%20116.458%20280.343%20117.271C280.588%20118.083%20280.998%20118.837%20281.545%20119.485C283.355%20121.23%20285.654%20122.379%20288.134%20122.778C292.784%20123.744%20299.1%20123.278%20302.627%20119.701C303.23%20119.052%20303.686%20118.281%20303.966%20117.441C304.245%20116.601%20304.342%20115.71%20304.249%20114.829C304.238%20114.942%20304.238%20115.056%20304.215%20115.181Z'%20fill='%23ADCDFC'/%3e%3cpath%20d='M300.688%20110.535C305.406%20113.272%20305.44%20117.701%20300.745%20120.438C298.102%20121.787%20295.177%20122.49%20292.211%20122.49C289.244%20122.49%20286.32%20121.787%20283.677%20120.438C278.947%20117.701%20278.936%20113.271%20283.677%20110.546C286.312%20109.205%20289.225%20108.506%20292.181%20108.504C295.137%20108.502%20298.051%20109.197%20300.688%20110.535Z'%20fill='white'/%3e%3cpath%20d='M293.463%20106.859L293.44%20116.909L292.181%20117.648L292.204%20107.586L293.463%20106.859Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M292.205%20107.586L292.183%20117.648L290.912%20116.909L290.935%20106.859L292.205%20107.586Z'%20fill='%237BAEFF'/%3e%3cpath%20d='M294.053%20105.018L292.205%20106.097L290.345%20105.018L292.193%20103.951L294.053%20105.018Z'%20fill='%234DA5DC'/%3e%3cpath%20d='M280.209%2070.7737C280.209%2070.7737%20276.41%2073.045%20275.401%2075.3163C274.392%2077.5876%20274.664%2093.4869%20279.937%20100.596C285.211%20107.705%20295.066%20108.671%20297.334%20107.66C299.602%20106.649%20312.712%20100.096%20313.722%2096.8143C314.731%2093.5323%20309.684%2090.9998%20306.917%2089.7392C304.15%2088.4786%20302.381%2086.7183%20300.872%2082.1643C299.364%2077.6103%20298.604%2069.797%20296.835%2068.5364C295.066%2067.2758%20290.802%2065.2203%20280.209%2070.7737Z'%20fill='%2325437F'/%3e%3cpath%20d='M299.036%20105.333C300.885%20104.515%20309.946%2099.9953%20313.78%2096.5769C314.596%2093.3744%20309.674%2090.8987%20306.975%2089.6608C304.276%2088.4229%20302.439%2086.6399%20300.93%2082.0859C299.422%2077.532%20298.662%2069.7186%20296.893%2068.458C295.124%2067.1975%20290.848%2065.176%20280.256%2070.7294C279.124%2071.4166%20278.064%2072.2155%20277.092%2073.1142C276.139%2075.7603%20276.479%2091.2848%20281.696%2098.2691C286.913%20105.253%20296.768%20106.389%20299.036%20105.333Z'%20fill='%23254DA1'/%3e%3cpath%20d='M303.153%2071.151C303.153%2071.151%20304.287%2071.5371%20305.115%2074.3422C305.943%2077.1473%20308.347%2082.2237%20307.508%2084.4723C306.669%2086.7209%20304.106%2085.4489%20303.437%2083.7682C302.768%2082.0874%20299.932%2074.2627%20300.488%2073.1157C301.044%2071.9687%20302.03%2070.7649%20303.153%2071.151Z'%20fill='%23113569'/%3e%3cpath%20d='M310.014%20128.657C310.183%20129.275%20310.419%20129.873%20310.717%20130.44C311.586%20131.532%20312.606%20132.496%20313.745%20133.302C314.505%20133.949%20315.435%20135.153%20315.344%20135.721C315.253%20136.288%20313.428%20136.425%20311.999%20136.118C310.57%20135.811%20309.311%20134.21%20308.891%20134.244C308.472%20134.278%20306.907%20133.972%20306.623%20133.427C306.339%20132.881%20306.838%20130.735%20306.838%20130.735V129.179L310.014%20128.657Z'%20fill='%23232839'/%3e%3cpath%20d='M317.044%20124.16C317.213%20124.775%20317.449%20125.369%20317.748%20125.932C318.613%20127.031%20319.633%20127.998%20320.776%20128.805C321.535%20129.452%20322.465%20130.645%20322.375%20131.224C322.284%20131.803%20320.458%20131.928%20319.029%20131.621C317.6%20131.315%20316.341%20129.714%20315.922%20129.748C315.502%20129.782%20313.937%20129.475%20313.654%20128.93C313.37%20128.385%20313.869%20126.238%20313.869%20126.238V124.683L317.044%20124.16Z'%20fill='%23232839'/%3e%3cpath%20d='M290.43%2093.2273C290.37%2095.1503%20290.892%2097.0465%20291.927%2098.6671C293.606%20101.109%20300.535%20107.287%20301.283%20107.855C302.032%20108.422%20302.225%20112.534%20302.973%20114.407C303.722%20116.281%20305.967%20128.467%20306.375%20129.409C306.375%20129.409%20306.75%20130.341%20309.369%20129.784C310.866%20129.591%20311.048%20129.035%20311.048%20129.035C311.048%20129.035%20310.118%20115.35%20309.369%20112.159C308.621%20108.968%20308.428%20105.413%20307.101%20104.107C305.774%20102.801%20299.423%2094.5447%20299.423%2094.5447L297.927%2092.103L290.43%2093.2273Z'%20fill='%23113C7A'/%3e%3cpath%20d='M302.03%2090.2268C302.03%2090.2268%20312.135%2095.9051%20313.541%2097.1203C314.897%2098.3056%20315.832%2099.8997%20316.206%20101.663C316.32%20102.276%20317.34%20124.013%20317.76%20125.001C317.896%20125.841%20315.231%20126.409%20313.961%20125.989C313.466%20125.646%20313.039%20125.215%20312.702%20124.717C312.702%20124.717%20310.173%20111.645%20310.173%20109.817C309.937%20107.359%20309.558%20104.917%20309.039%20102.503L297.392%2095.8938L296.541%2092.941L302.03%2090.2268Z'%20fill='%23113C7A'/%3e%3cpath%20d='M290.807%2095.1093C290.807%2095.1093%20291.782%2097.9144%20295.853%2097.4942L297.26%2097.2103L297.543%2094.939C298.96%2094.7497%20300.31%2094.2198%20301.479%2093.3945C302.034%2093.6784%20302.182%2095.0866%20302.737%2095.2229C303.293%2095.3592%20304.28%2093.3945%20303.996%2091.9863C303.713%2090.5781%20303.021%2091.1459%20303.021%2091.1459C303.021%2091.1459%20291.51%2094.0305%20290.807%2095.1093Z'%20fill='%23112C5C'/%3e%3cpath%20d='M295.1%2069.6954C295.1%2069.6954%20290.292%2073.1024%20289.815%2074.2381C289.244%2076.376%20289.391%2078.643%20290.235%2080.6886C291.222%2082.801%20290.859%2090.6143%20291.222%2092.1361C291.584%2093.6579%20295.69%2094.1462%20298.23%2093.6579C300.771%2093.1695%20303.901%2091.3184%20303.753%2088.343C303.606%2085.3675%20303.753%2079.8369%20303.889%2078.4968C304.024%2076.1613%20303.81%2073.8188%20303.254%2071.5466C303.118%2071.0696%20301.519%2070.5699%20301.519%2070.5699C301.519%2070.5699%20299.829%2069.491%20295.1%2069.6954Z'%20fill='white'/%3e%3cpath%20d='M299.272%2069.0491C299.265%2069.0981%20299.265%2069.1478%20299.272%2069.1968C299.329%2069.5488%20299.51%2070.4573%20299.533%2070.8321C299.556%2071.2069%20299.159%2071.8201%20298.183%2071.7974C297.564%2071.8184%20296.949%2071.684%20296.394%2071.4063C295.839%2071.1286%20295.363%2070.7165%20295.008%2070.2075C295.027%2069.0696%20294.974%2067.9317%20294.849%2066.8005L299.272%2069.0491Z'%20fill='%23E16B40'/%3e%3cpath%20d='M294.976%2069.4673C295.233%2070.1558%20295.7%2070.7458%20296.31%2071.1536C296.921%2071.5613%20297.645%2071.766%20298.378%2071.7386H298.56L297.233%2073.8736C296.292%2073.3206%20295.403%2072.6819%20294.579%2071.9657C294.19%2071.4984%20293.984%2070.9048%20294.001%2070.2963L294.976%2069.4673Z'%20fill='white'/%3e%3cpath%20d='M298.55%2071.7878L299.933%2073.1165C300.275%2072.7255%20300.494%2072.2428%20300.565%2071.7281C300.635%2071.2134%20300.554%2070.6893%20300.33%2070.2206L299.468%2069.8799C299.481%2070.2487%20299.405%2070.6152%20299.245%2070.9476C299.084%2071.2801%20298.846%2071.5684%20298.55%2071.7878Z'%20fill='white'/%3e%3cpath%20d='M301.33%2062.379C300.809%2059.6421%20298.642%2058.0862%20296.193%2058.6541C295.393%2058.7607%20294.63%2059.0523%20293.963%2059.5057C293.295%2059.959%20292.743%2060.5617%20292.348%2061.2661C291.214%2063.6055%20292.904%2065.5702%20294.015%2066.8195C294.48%2067.3191%20294.832%2067.7166%20295.059%2067.9551C295.136%2068.0513%20295.219%2068.1424%20295.308%2068.2277C295.945%2068.8588%20296.723%2069.3297%20297.576%2069.6018C298.089%2069.777%20298.638%2069.8147%20299.169%2069.7111C299.7%2069.6075%20300.195%2069.3662%20300.604%2069.0113C301.308%2068.3299%20301.841%2065.1273%20301.33%2062.379Z'%20fill='%23FF8654'/%3e%3cpath%20d='M293.988%2070.3425C293.988%2070.3425%20293.274%2071.0353%20294.215%2072.7615C295.501%2075.2189%20296.211%2077.9377%20296.291%2080.7111C296.381%2083.9932%20296.812%2094.339%20296.381%2096.5535C295.519%2097.3258%20291.369%2096.633%20290.155%2094.5548C289.634%2091.5339%20289.894%2082.3464%20289.293%2080.4499C288.788%2078.3751%20288.757%2076.2128%20289.203%2074.1243C290.498%2072.5233%20292.132%2071.2314%20293.988%2070.3425Z'%20fill='%23113C7A'/%3e%3cpath%20d='M300.676%2070.2751C301.189%2072.3546%20301.421%2074.4935%20301.368%2076.6348C301.368%2080.0418%20302.343%2094.1807%20302.502%2094.4647C302.661%2094.7486%20304.702%2092.9656%20304.77%2090.8873C304.838%2088.8091%20304.078%2076.0557%20303.965%2074.7837C303.894%2073.5356%20303.618%2072.3077%20303.148%2071.1496C302.356%2070.7742%20301.528%2070.4812%20300.676%2070.2751Z'%20fill='%23113C7A'/%3e%3cpath%20d='M299.67%2072.4777L299.046%2073.795L297.742%2072.7616L298.547%2071.7849L299.67%2072.4777Z'%20fill='%23113C7A'/%3e%3cpath%20d='M299.333%2072.9654C299.333%2072.9654%20300.569%2088.7851%20300.569%2089.4778L299.741%2090.9315L298.607%2089.7958L298.199%2072.8745L299.333%2072.9654Z'%20fill='%23113C7A'/%3e%3cpath%20d='M289.442%2073.5905C288.618%2074.4566%20288.039%2075.5266%20287.764%2076.6908C287.015%2079.0303%20286.539%2087.1843%20286.539%2088.3995C286.539%2089.6146%20286.539%2091.0228%20287.571%2091.6815C287.794%2091.8623%20288.054%2091.9901%20288.333%2092.0553C288.613%2092.1206%20288.903%2092.1215%20289.182%2092.0581C289.462%2091.9947%20289.723%2091.8685%20289.947%2091.6892C290.171%2091.5099%20290.351%2091.282%20290.474%2091.0228C291.132%2089.8077%20291.608%2082.8688%20292.062%2080.7224C292.516%2078.576%20293.287%2076.4069%20292.345%2075.0441C292.079%2074.5241%20291.654%2074.1028%20291.131%2073.8414C290.609%2073.58%20290.018%2073.4921%20289.442%2073.5905Z'%20fill='%23113C7A'/%3e%3cpath%20d='M292.814%2059.0649C293.137%2058.5521%20293.577%2058.1231%20294.097%2057.8132C294.617%2057.5033%20295.204%2057.3212%20295.808%2057.282C297.963%2057.1002%20298.53%2057.8498%20299.46%2057.9406C300.39%2058.0315%20301.24%2057.5659%20301.898%2058.5993C302.556%2059.6328%20301.15%2061.5975%20301.15%2061.5975C301.15%2061.5975%20300.401%2061.4157%20299.653%2063.2896C298.904%2065.1634%20296.182%2064.6864%20295.626%2064.5047L295.162%2065.436V66.2877L294.504%2066.1855C294.504%2066.1855%20294.787%2065.1634%20294.13%2064.7887C293.472%2064.4139%20293.29%2065.1634%20293.381%2065.7199C293.705%2066.6813%20294.371%2067.4898%20295.252%2067.9912L294.969%2068.559L294.787%2068.9338C294.254%2068.5023%20293.754%2068.0316%20293.29%2067.5256C292.814%2066.9691%20292.156%2067.4347%20291.226%2065.3678C290.296%2063.3009%20290.569%2061.711%20291.408%2060.8252L292.258%2059.8826L292.814%2059.0649Z'%20fill='%2396432A'/%3e%3cpath%20d='M302.164%2090.5122L311.577%2099.5066L304.274%20103.584L294.872%2094.5892L302.164%2090.5122Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M300.032%2097.3015C300.032%2097.3015%20300.497%2097.6309%20300.735%2097.7785L302.277%2098.7552C302.687%2099.1897%20303.034%2099.6789%20303.309%20100.209C303.571%20100.636%20303.73%20101.118%20303.774%20101.617C303.684%20101.856%20303.4%20101.708%20303.4%20101.708C303.124%20102.018%20302.737%20102.206%20302.323%20102.23C301.767%20102.174%20301.291%20101.481%20301.291%20101.481L300.497%20100.777C300.174%20100.417%20299.92%20100.002%20299.748%2099.5501L299.193%2099.1754C299.193%2099.1754%20298.796%2098.7552%20300.032%2097.3015Z'%20fill='%23FF8654'/%3e%3cpath%20d='M298.31%2098.8821C298.31%2098.8821%20298.899%2097.2127%20299.603%2096.7925L300.396%2097.349C299.896%2097.9305%20299.542%2098.6237%20299.364%2099.3704L298.31%2098.8821Z'%20fill='white'/%3e%3cpath%20d='M298.311%2098.8837C297.811%2098.837%20297.33%2098.6736%20296.904%2098.4068C295.66%2097.4896%20294.357%2096.655%20293.003%2095.9083C291.184%2095.0735%20289.483%2094.0004%20287.945%2092.7171C287.077%2091.8788%20286.572%2090.733%20286.539%2089.5259C286.914%2089.0409%20287.44%2088.695%20288.034%2088.5428C288.627%2088.3906%20289.255%2088.4408%20289.816%2088.6855C291.66%2089.5661%20293.365%2090.7141%20294.875%2092.0925C296.553%2093.5007%20299.411%2096.2944%20299.411%2096.2944L299.898%2096.8736C299.51%2097.0812%20299.168%2097.3668%20298.895%2097.7127C298.622%2098.0586%20298.423%2098.4573%20298.311%2098.8837Z'%20fill='%23113C7A'/%3e%3cpath%20d='M304.84%2085.0278C304.766%2085.9753%20304.858%2086.9285%20305.113%2087.8442C305.543%2089.2524%20304.557%2094.0335%20304.976%2094.4537C305.302%2094.7787%20305.706%2095.0143%20306.149%2095.1376C306.592%2095.2609%20307.059%2095.2679%20307.505%2095.1578L308.345%2094.59C308.345%2094.59%20308.764%2089.8089%20308.764%2088.4007C308.764%2086.9925%20308.345%2083.0631%20307.369%2082.2227C306.394%2081.3823%20303.99%2082.0751%20304.84%2085.0278Z'%20fill='%23113569'/%3e%3cpath%20d='M305.328%2094.3081C305.687%2093.9832%20306.157%2093.809%20306.64%2093.8217C307.124%2093.8344%20307.584%2094.033%20307.925%2094.3762L307.993%2095.3643C307.993%2095.3643%20307.71%2096.2841%20305.396%2095.4324L305.328%2094.3081Z'%20fill='white'/%3e%3cpath%20d='M305.545%2095.1786C305.895%2094.9846%20306.292%2094.8905%20306.691%2094.9065C307.091%2094.9226%20307.479%2095.0481%20307.813%2095.2694L307.904%2095.6442C307.904%2095.6442%20308.21%2096.4846%20308.323%2096.8593C308.376%2097.182%20308.353%2097.5126%20308.255%2097.8247C308.236%2098.1817%20308.179%2098.5357%20308.085%2098.8808C307.994%2099.0398%20307.813%2098.9944%20307.643%2098.9717C307.141%2098.8111%20306.648%2098.6215%20306.168%2098.4038C305.794%2098.2448%20305.681%2097.4272%20305.613%2097.1432C305.567%2096.7129%20305.567%2096.2789%20305.613%2095.8486C305.62%2095.6232%20305.597%2095.3979%20305.545%2095.1786Z'%20fill='%23FF8654'/%3e%3cpath%20d='M329.925%2063.9153V65.4938C329.926%2065.7053%20329.871%2065.9132%20329.765%2066.0965C329.66%2066.2798%20329.508%2066.4321%20329.325%2066.5381C329.143%2066.644%20328.935%2066.6998%20328.724%2066.6999C328.513%2066.7%20328.305%2066.6444%20328.122%2066.5386L320.671%2062.2345C320.487%2062.1292%20320.333%2061.9773%20320.226%2061.794C320.118%2061.6106%20320.061%2061.4023%20320.059%2061.1897V59.6111C320.061%2059.3993%20320.118%2059.1916%20320.225%2059.0087C320.331%2058.8258%20320.484%2058.6741%20320.667%2058.5685C320.851%2058.4629%20321.059%2058.4071%20321.27%2058.4067C321.482%2058.4064%20321.69%2058.4614%20321.874%2058.5663L329.324%2062.8591C329.509%2062.9659%20329.662%2063.12%20329.768%2063.3056C329.873%2063.4912%20329.928%2063.7016%20329.925%2063.9153Z'%20fill='%23F9FBFC'/%3e%3cpath%20d='M353.526%2085.2874V86.8773C353.526%2087.0888%20353.471%2087.2967%20353.366%2087.48C353.26%2087.6633%20353.109%2087.8156%20352.926%2087.9215C352.743%2088.0274%20352.535%2088.0833%20352.324%2088.0834C352.113%2088.0835%20351.906%2088.0278%20351.723%2087.9221L320.671%2070.1263C320.486%2070.0192%20320.332%2069.8653%20320.225%2069.68C320.117%2069.4947%20320.06%2069.2844%20320.059%2069.0702V67.4916C320.059%2067.2788%20320.115%2067.0697%20320.221%2066.8852C320.326%2066.7008%20320.479%2066.5474%20320.663%2066.4405C320.846%2066.3335%20321.055%2066.2768%20321.267%2066.2759C321.48%2066.275%20321.689%2066.33%20321.874%2066.4354L352.925%2084.2653C353.105%2084.3692%20353.254%2084.5179%20353.36%2084.697C353.465%2084.8761%20353.522%2085.0795%20353.526%2085.2874Z'%20fill='%23F9FBFC'/%3e%3cg%20opacity='0.53'%3e%3cpath%20d='M340.735%2093.6676V95.2462C340.735%2095.459%20340.679%2095.6681%20340.573%2095.8525C340.467%2096.037%20340.315%2096.1904%20340.131%2096.2973C339.948%2096.4043%20339.739%2096.461%20339.527%2096.4619C339.314%2096.4628%20339.105%2096.4078%20338.92%2096.3024L320.673%2085.8202C320.49%2085.7144%20320.338%2085.5621%20320.232%2085.3786C320.127%2085.1952%20320.072%2084.9871%20320.072%2084.7754V83.1969C320.073%2082.9857%20320.129%2082.7785%20320.234%2082.5956C320.34%2082.4127%20320.491%2082.2604%20320.673%2082.1538C320.855%2082.0472%20321.061%2081.9899%20321.272%2081.9876C321.483%2081.9853%20321.691%2082.0381%20321.875%2082.1407L340.123%2092.6228C340.307%2092.7281%20340.461%2092.88%20340.568%2093.0634C340.676%2093.2467%20340.733%2093.4551%20340.735%2093.6676Z'%20fill='%23F9FBFC'/%3e%3c/g%3e%3cpath%20d='M348.722%2090.3889V91.9789C348.72%2092.1907%20348.663%2092.3984%20348.556%2092.5813C348.449%2092.7641%20348.296%2092.9159%20348.113%2093.0215C347.93%2093.1271%20347.722%2093.1829%20347.51%2093.1832C347.299%2093.1836%20347.091%2093.1286%20346.907%2093.0237L320.676%2077.9648C320.493%2077.859%20320.341%2077.7067%20320.235%2077.5232C320.13%2077.3398%20320.074%2077.1317%20320.075%2076.92V75.3301C320.074%2075.1186%20320.129%2074.9107%20320.235%2074.7274C320.34%2074.5441%20320.492%2074.3918%20320.675%2074.2859C320.857%2074.1799%20321.065%2074.1241%20321.276%2074.124C321.487%2074.1239%20321.695%2074.1795%20321.878%2074.2853L348.109%2089.3441C348.294%2089.4494%20348.447%2089.6013%20348.555%2089.7847C348.662%2089.968%20348.72%2090.1764%20348.722%2090.3889Z'%20fill='%23F9FBFC'/%3e%3cpath%20d='M365.824%2091.1697V112.384L350.729%20121.287'%20stroke='white'%20stroke-width='0.53'%20stroke-miterlimit='10'/%3e%3cpath%20d='M367.61%2089.6723C367.607%2090.0469%20367.494%2090.4125%20367.285%2090.7229C367.076%2091.0332%20366.779%2091.2746%20366.433%2091.4164C366.086%2091.5582%20365.706%2091.5941%20365.339%2091.5197C364.973%2091.4452%20364.636%2091.2637%20364.373%2090.998C364.109%2090.7323%20363.93%2090.3944%20363.857%2090.0268C363.785%2089.6592%20363.823%2089.2785%20363.967%2088.9326C364.111%2088.5867%20364.354%2088.2912%20364.665%2088.0833C364.976%2087.8754%20365.342%2087.7644%20365.716%2087.7644C365.965%2087.7644%20366.213%2087.8138%20366.443%2087.9098C366.674%2088.0059%20366.883%2088.1466%20367.059%2088.3239C367.235%2088.5012%20367.374%2088.7116%20367.469%2088.943C367.563%2089.1745%20367.611%2089.4223%20367.61%2089.6723V89.6723Z'%20stroke='white'%20stroke-width='1.06'%20stroke-miterlimit='10'/%3e%3cpath%20d='M715.132%2070.3542V91.5684L700.048%20100.472'%20stroke='white'%20stroke-width='0.53'%20stroke-miterlimit='10'/%3e%3cpath%20d='M715.031%2070.7535C716.077%2070.7535%20716.925%2069.9044%20716.925%2068.857C716.925%2067.8096%20716.077%2066.9604%20715.031%2066.9604C713.985%2066.9604%20713.137%2067.8096%20713.137%2068.857C713.137%2069.9044%20713.985%2070.7535%20715.031%2070.7535Z'%20stroke='white'%20stroke-width='1.06'%20stroke-miterlimit='10'/%3e%3cpath%20opacity='0.35'%20d='M501.346%20238.069C501.346%20242.305%20495.959%20245.723%20489.313%20245.723C482.668%20245.723%20477.281%20242.316%20477.281%20238.069C477.281%20233.822%20482.668%20230.415%20489.313%20230.415C495.959%20230.415%20501.346%20233.844%20501.346%20238.069Z'%20fill='%23A6D0F4'/%3e%3cpath%20opacity='0.35'%20d='M512.446%20235.683C524.353%20235.683%20534.005%20229.541%20534.005%20221.964C534.005%20214.387%20524.353%20208.245%20512.446%20208.245C500.539%20208.245%20490.887%20214.387%20490.887%20221.964C490.887%20229.541%20500.539%20235.683%20512.446%20235.683Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M496.12%20218.762C496.369%20221.59%20499.023%20223.509%20501.416%20224.531C504.044%20225.625%20506.872%20226.151%20509.717%20226.076C512.634%20226.086%20515.516%20225.446%20518.155%20224.202C520.423%20223.066%20522.839%20221.056%20522.827%20218.297C522.827%20220.307%20522.691%20221.965%20521.251%20223.532C519.245%20225.467%20516.697%20226.743%20513.947%20227.189C508.799%20228.256%20501.79%20227.745%20497.877%20223.782C496.301%20222.192%20496.086%20220.511%20496.086%20218.387C496.087%20218.513%20496.098%20218.638%20496.12%20218.762Z'%20fill='%23ADCDFC'/%3e%3cpath%20d='M500.033%20213.627C494.793%20216.648%20494.759%20221.576%20499.965%20224.597C505.17%20227.618%20513.653%20227.618%20518.892%20224.597C524.132%20221.576%20524.143%20216.648%20518.892%20213.627C513.642%20210.606%20505.306%20210.595%20500.033%20213.627Z'%20fill='white'/%3e%3cpath%20d='M508.03%20209.526L508.053%20220.678L509.459%20221.495L509.425%20210.343L508.03%20209.526Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M509.424%20210.343L509.458%20221.495L510.864%20220.678L510.842%20209.526L509.424%20210.343Z'%20fill='%237BAEFF'/%3e%3cpath%20d='M507.375%20207.494L509.428%20208.687L511.48%20207.494L509.439%20206.313L507.375%20207.494Z'%20fill='%234DA5DC'/%3e%3cpath%20d='M522.735%20169.54C522.735%20169.54%20526.942%20172.016%20528.065%20174.537C529.188%20177.058%20528.881%20194.729%20523.007%20202.565C517.132%20210.401%20506.245%20211.514%20503.727%20210.401C501.21%20209.288%20486.716%20201.997%20485.582%20198.363C484.448%20194.729%20490.118%20191.924%20493.135%20190.527C496.152%20189.13%20498.159%20187.177%20499.837%20182.135C501.516%20177.092%20502.355%20168.427%20504.306%20167.019C506.256%20165.611%20510.974%20163.385%20522.735%20169.54Z'%20fill='black'/%3e%3cpath%20d='M501.9%20207.903C499.859%20206.994%20489.822%20201.986%20485.581%20198.204C484.673%20194.638%20490.117%20191.913%20493.156%20190.527C496.196%20189.142%20498.18%20187.177%20499.859%20182.135C501.537%20177.092%20502.376%20168.427%20504.327%20167.019C506.278%20165.611%20511.041%20163.385%20522.779%20169.54C524.031%20170.305%20525.204%20171.191%20526.283%20172.186C527.349%20175.116%20526.963%20192.356%20521.191%20200.067C515.418%20207.778%20504.372%20209.027%20501.9%20207.903Z'%20fill='%23232839'/%3e%3cpath%20d='M500.764%20171.451C500.764%20171.451%20499.517%20171.883%20498.587%20174.995C497.657%20178.106%20495.003%20183.728%20495.944%20186.215C496.885%20188.702%20499.675%20187.35%20500.48%20185.431C501.286%20183.512%20504.359%20174.904%20503.735%20173.62C503.112%20172.337%20502.012%20171.02%20500.764%20171.451Z'%20fill='%23113569'/%3e%3cpath%20d='M493.169%20235.204C492.983%20235.885%20492.725%20236.544%20492.398%20237.169C491.854%20238.225%20489.869%20239.633%20488.996%20240.349C488.123%20241.064%20487.125%20242.393%20487.238%20243.029C487.352%20243.665%20489.359%20243.824%20490.947%20243.472C492.534%20243.12%20493.918%20241.36%20494.349%20241.394C494.78%20241.428%20496.617%20241.098%20496.912%20240.497C497.207%20239.895%20496.674%20237.51%20496.674%20237.51V235.784L493.169%20235.204Z'%20fill='%23232839'/%3e%3cpath%20d='M485.391%20230.256C485.205%20230.937%20484.946%20231.596%20484.619%20232.221C484.075%20233.277%20482.09%20234.685%20481.217%20235.401C480.344%20236.116%20479.346%20237.445%20479.448%20238.081C479.55%20238.717%20481.58%20238.865%20483.168%20238.524C484.756%20238.183%20486.139%20236.412%20486.57%20236.446C487.001%20236.48%20488.782%20236.139%20489.133%20235.549C489.485%20234.958%20488.895%20232.562%20488.895%20232.562V230.836L485.391%20230.256Z'%20fill='%23232839'/%3e%3cpath%20d='M514.883%20195.924C514.944%20198.055%20514.368%20200.155%20513.227%20201.955C511.356%20204.658%20503.678%20211.517%20502.85%20212.176C502.022%20212.834%20501.807%20217.366%20500.979%20219.444C500.151%20221.522%20497.667%20235.025%20497.248%20236.07C497.248%20236.07%20496.828%20237.104%20493.925%20236.479C492.269%20236.274%20492.065%20235.65%20492.065%20235.65C492.065%20235.65%20493.097%20220.489%20493.925%20216.946C494.753%20213.402%20494.968%20209.473%20496.42%20208.019C497.871%20206.566%20504.925%20197.424%20504.925%20197.424L506.581%20194.721L514.883%20195.924Z'%20fill='%23113C7A'/%3e%3cpath%20d='M502.023%20192.609C502.023%20192.609%20490.818%20198.844%20489.253%20200.241C487.765%20201.546%20486.732%20203.292%20486.304%20205.226C486.179%20205.919%20485.057%20230.006%20484.592%20231.097C484.433%20232.039%20487.393%20232.652%20488.788%20232.232C489.34%20231.859%20489.817%20231.385%20490.194%20230.835C490.194%20230.835%20492.995%20216.344%20492.995%20214.312C493.253%20211.59%20493.67%20208.887%20494.243%20206.214L507.16%20198.889L508.09%20195.607L502.023%20192.609Z'%20fill='%23113C7A'/%3e%3cpath%20d='M514.479%20198.058C514.479%20198.058%20513.345%20201.181%20508.876%20200.704L507.311%20200.397L507.005%20197.899C505.435%20197.694%20503.939%20197.105%20502.65%20196.184C502.027%20196.502%20501.868%20198.058%20501.244%20198.217C500.62%20198.376%20499.532%20196.184%20499.849%20194.628C500.167%20193.073%20500.983%20193.697%20500.983%20193.697C500.983%20193.697%20513.696%20196.809%20514.479%20198.058Z'%20fill='%23112C5C'/%3e%3cpath%20d='M509.703%20169.839C509.703%20169.839%20515.033%20173.644%20515.555%20174.916C516.198%20177.281%20516.039%20179.794%20515.101%20182.059C513.967%20184.41%20514.409%20193.064%20513.967%20194.756C513.525%20196.448%20509.011%20197.027%20506.187%20196.436C503.363%20195.846%20499.961%20193.847%20500.063%20190.554C500.165%20187.26%20500.063%20181.116%20499.927%20179.64C499.769%20177.049%20500.006%20174.449%20500.63%20171.929C500.766%20171.407%20502.547%20170.85%20502.547%20170.85C502.547%20170.85%20504.452%20169.612%20509.703%20169.839Z'%20fill='%23C7BFCE'/%3e%3cpath%20d='M505.075%20169.122C505.082%20169.179%20505.082%20169.236%20505.075%20169.293C505.018%20169.679%20504.825%20170.678%20504.78%20171.098C504.734%20171.518%20505.199%20172.234%20506.277%20172.166C507.354%20172.098%20509.191%20171.689%20509.804%20170.406C509.776%20169.135%20509.837%20167.864%20509.985%20166.601L505.075%20169.122Z'%20fill='%23E16B40'/%3e%3cpath%20d='M509.84%20169.586C509.561%20170.356%20509.048%20171.018%20508.372%20171.479C507.696%20171.94%20506.892%20172.175%20506.075%20172.153H505.882L507.345%20174.515C508.388%20173.904%20509.371%20173.197%20510.282%20172.402C510.714%20171.884%20510.944%20171.226%20510.929%20170.551L509.84%20169.586Z'%20fill='white'/%3e%3cpath%20d='M505.891%20172.155L504.348%20173.62C504.348%20173.62%20503.214%20172.666%20503.906%20170.429L504.859%20170.043C504.842%20170.453%20504.928%20170.861%20505.108%20171.23C505.288%20171.598%20505.557%20171.916%20505.891%20172.155Z'%20fill='white'/%3e%3cpath%20d='M502.807%20161.739C503.374%20158.696%20505.778%20156.97%20508.478%20157.606C509.364%20157.723%20510.211%20158.046%20510.952%20158.549C511.692%20159.051%20512.305%20159.72%20512.742%20160.502C514.046%20163.091%20512.129%20165.271%20510.893%20166.646C510.372%20167.213%20509.975%20167.645%20509.759%20167.929L509.487%20168.235C508.783%20168.942%20507.919%20169.467%20506.969%20169.769C506.403%20169.963%20505.796%20170.005%20505.208%20169.889C504.621%20169.774%20504.074%20169.505%20503.624%20169.11C502.83%20168.326%20502.24%20164.772%20502.807%20161.739Z'%20fill='%23FF8654'/%3e%3cpath%20d='M510.973%20170.552C510.973%20170.552%20511.767%20171.313%20510.712%20173.244C509.301%20175.976%20508.525%20178.992%20508.444%20182.068C508.353%20185.713%20507.877%20197.138%20508.354%20199.636C509.306%20200.499%20513.911%20199.727%20515.249%20197.433C515.827%20194.026%20515.544%20183.896%20516.213%20181.784C516.77%20179.485%20516.801%20177.089%20516.303%20174.777C515.759%20173.72%20512.107%20170.836%20510.973%20170.552Z'%20fill='%23113C7A'/%3e%3cpath%20d='M503.521%20170.486C502.951%20172.788%20502.691%20175.156%20502.75%20177.527C502.75%20181.309%20501.673%20196.981%20501.48%20197.299C501.287%20197.617%20499.053%20195.641%20498.985%20193.336C498.917%20191.03%20499.756%20176.891%20499.881%20175.483C499.954%20174.099%20500.257%20172.736%20500.777%20171.452C501.655%20171.034%20502.575%20170.711%20503.521%20170.486Z'%20fill='%23113C7A'/%3e%3cpath%20d='M504.631%20172.927L505.323%20174.38L506.775%20173.233L505.89%20172.154L504.631%20172.927Z'%20fill='%23113C7A'/%3e%3cpath%20d='M505.02%20173.472C505.02%20173.472%20503.648%20191.018%20503.648%20191.779L504.566%20193.392L505.791%20192.086L506.245%20173.325L505.02%20173.472Z'%20fill='%23113C7A'/%3e%3cpath%20d='M429.925%20232.455L427.396%20230.979L427.327%20201.997L429.856%20203.473L429.925%20232.455Z'%20fill='%238750CA'/%3e%3cpath%20d='M429.857%20203.473L427.327%20201.997L461.77%20182.078L464.31%20183.554L429.857%20203.473Z'%20fill='%23DBDBDB'/%3e%3cpath%20d='M464.311%20183.557L464.379%20212.539L429.925%20232.458L429.857%20203.476L464.311%20183.557Z'%20fill='%239966D7'/%3e%3cpath%20d='M432.321%20197.968L432.253%20226.95L501.296%20266.562L501.364%20237.58L432.321%20197.968Z'%20fill='%23A478D9'/%3e%3cpath%20d='M432.28%20214.174L501.334%20253.785L501.368%20237.58L432.325%20197.968L432.28%20214.174Z'%20fill='%238750CA'/%3e%3cpath%20d='M499.169%20269.379L496.629%20267.903L496.561%20238.921L499.101%20240.397L499.169%20269.379Z'%20fill='%238750CA'/%3e%3cpath%20d='M499.101%20240.396L496.561%20238.92L531.014%20219L533.543%20220.477L499.101%20240.396Z'%20fill='%23DBDBDB'/%3e%3cpath%20d='M533.54%20220.477L533.62%20249.459L499.166%20269.379L499.098%20240.397L533.54%20220.477Z'%20fill='%23976EC9'/%3e%3cpath%20d='M538.269%20219.725L538.258%20222.45L499.2%20245.175L499.211%20242.449L538.269%20219.725Z'%20fill='%238C57CC'/%3e%3cpath%20d='M499.209%20242.452L499.198%20245.178L421.558%20200.296L421.57%20197.571L499.209%20242.452Z'%20fill='%238750CA'/%3e%3cpath%20d='M538.271%20219.725L499.213%20242.45L421.573%20197.569L460.631%20174.833L538.271%20219.725Z'%20fill='%23B59AD7'/%3e%3cpath%20d='M515.975%20174.164C516.891%20175.111%20517.537%20176.288%20517.846%20177.571C518.674%20180.171%20519.195%20189.2%20519.195%20190.551C519.195%20191.903%20519.195%20193.47%20518.061%20194.197C517.814%20194.394%20517.526%20194.533%20517.218%20194.603C516.91%20194.674%20516.591%20194.674%20516.283%20194.604C515.974%20194.534%20515.686%20194.396%20515.438%20194.2C515.191%20194.004%20514.99%20193.754%20514.852%20193.47C514.126%20192.118%20513.604%20184.385%20513.083%20182.034C512.561%20179.683%20511.733%20177.253%20512.777%20175.697C513.081%20175.137%20513.554%20174.688%20514.128%20174.412C514.702%20174.137%20515.348%20174.05%20515.975%20174.164Z'%20fill='%23113C7A'/%3e%3cpath%20d='M504.164%20200.444C504.164%20200.444%20503.643%20200.807%20503.382%20200.966L501.669%20202.102C501.213%20202.58%20500.831%20203.123%20500.535%20203.714C500.238%20204.183%20500.058%20204.717%20500.014%20205.27C500.116%20205.531%20500.433%20205.372%20500.433%20205.372C500.74%20205.713%20501.167%20205.921%20501.624%20205.952C502.248%20205.895%20502.758%20205.123%20502.758%20205.123L503.643%20204.339C503.999%20203.943%20504.279%20203.485%20504.471%20202.987L505.094%20202.567C505.094%20202.567%20505.593%20202.056%20504.164%20200.444Z'%20fill='%23FF8654'/%3e%3cpath%20d='M506.141%20202.194C506.141%20202.194%20505.495%20200.343%20504.723%20199.923L503.839%20200.548C504.394%20201.202%20504.783%20201.981%20504.973%20202.819L506.141%20202.194Z'%20fill='white'/%3e%3cpath%20d='M506.146%20202.194C506.701%20202.144%20507.236%20201.965%20507.711%20201.672C509.092%20200.65%20510.539%20199.72%20512.043%20198.89C514.059%20197.967%20515.943%20196.779%20517.645%20195.358C518.603%20194.428%20519.161%20193.161%20519.199%20191.826C518.785%20191.287%20518.202%20190.902%20517.545%20190.734C516.887%20190.565%20516.192%20190.622%20515.57%20190.895C513.527%20191.854%20511.639%20193.113%20509.967%20194.631C508.096%20196.187%20504.909%20199.287%20504.909%20199.287L504.365%20199.934C504.805%20200.164%20505.19%20200.484%20505.497%20200.873C505.804%20201.263%20506.025%20201.713%20506.146%20202.194Z'%20fill='%23113C7A'/%3e%3cpath%20d='M502.908%20161.207C502.625%20160.774%20502.43%20160.289%20502.337%20159.78C502.243%20159.271%20502.252%20158.748%20502.364%20158.243C502.794%20156.71%20504.768%20157.368%20505.868%20157.255C506.968%20157.141%20511.232%20157.255%20512.672%20159.117C514.113%20160.98%20513.444%20161.865%20513.444%20161.865C513.557%20162.754%20513.444%20163.656%20513.115%20164.489C512.559%20165.693%20509.78%20167.896%20509.78%20167.896C510.514%20167.003%20511.086%20165.988%20511.47%20164.898C511.584%20163.91%20511.028%20163.365%20510.699%20163.58C510.37%20163.796%20510.155%20165.659%20510.155%20165.659L510.007%20166.567C509.281%20166.317%20509.497%20164.784%20509.497%20164.784C509.153%20164.282%20508.896%20163.725%20508.737%20163.137C508.51%20162.263%20508.408%20161.831%20507.524%20161.389C506.859%20160.904%20506.065%20160.628%20505.243%20160.595C504.422%20160.563%20503.609%20160.776%20502.908%20161.207Z'%20fill='%23505E83'/%3e%3cpath%20d='M484.475%20177.56C484.475%20177.56%20483.92%20177.265%20483.659%20177.094C483.398%20176.924%20482.4%20176.333%20481.912%20176.061C481.282%20175.859%20480.624%20175.756%20479.962%20175.754C479.41%20175.706%20478.855%20175.788%20478.34%20175.993C478.158%20176.209%20478.442%20176.413%20478.442%20176.413C478.266%20176.838%20478.266%20177.316%20478.442%20177.742C478.763%20178.105%20479.208%20178.336%20479.689%20178.389L480.824%20178.821C481.335%20178.967%20481.871%20179.013%20482.4%20178.957L483.046%20179.332C483.046%20179.332%20483.659%20179.536%20484.475%20177.56Z'%20fill='%23FF8654'/%3e%3cpath%20d='M483.761%20180.083C483.761%20180.083%20485.111%20178.675%20485.179%20177.812L484.226%20177.301C483.899%20178.084%20483.394%20178.78%20482.752%20179.334L483.761%20180.083Z'%20fill='white'/%3e%3cpath%20d='M483.754%20180.082C484.039%20180.544%20484.427%20180.932%20484.888%20181.217C486.42%20181.998%20487.901%20182.875%20489.323%20183.841C491.051%20185.227%20492.958%20186.373%20494.993%20187.248C496.254%20187.688%20497.637%20187.619%20498.849%20187.055C499.143%20186.442%20499.225%20185.749%20499.081%20185.084C498.937%20184.42%20498.576%20183.822%20498.055%20183.387C496.274%20181.992%20494.299%20180.867%20492.192%20180.048C489.924%20179.082%20485.773%20177.617%20485.773%20177.617L484.956%20177.424C484.955%20177.927%20484.847%20178.424%20484.64%20178.882C484.433%20179.34%20484.131%20179.749%20483.754%20180.082Z'%20fill='%23113569'/%3e%3cpath%20d='M501.324%20223.795L509.206%20228.383L521.964%20221.002L514.082%20216.414L501.324%20223.795Z'%20fill='%238C57CC'/%3e%3cpath%20d='M499.872%20221.066V223.02L507.765%20227.608L507.754%20225.654L499.872%20221.066Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M507.752%20225.656L507.763%20227.609L520.521%20220.228V218.274L507.752%20225.656Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M499.872%20221.065L507.754%20225.653L520.523%20218.271L512.63%20213.683L499.872%20221.065Z'%20fill='white'/%3e%3cpath%20d='M447.361%20200.377L455.254%20204.965L468.013%20197.594L460.12%20192.995L447.361%20200.377Z'%20fill='%238C57CC'/%3e%3cpath%20d='M445.913%20197.652L445.924%20199.605L453.806%20204.193V202.24L445.913%20197.652Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M453.801%20202.236V204.189L466.571%20196.818L466.559%20194.854L453.801%20202.236Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M445.913%20197.654L453.806%20202.242L466.564%20194.86L458.682%20190.272L445.913%20197.654Z'%20fill='white'/%3e%3cpath%20d='M490.068%20214.659L497.961%20219.247L510.719%20211.865L502.837%20207.277L490.068%20214.659Z'%20fill='white'/%3e%3cpath%20d='M496.942%20205.938C498.746%20206.983%20498.746%20208.663%20496.942%20209.708L485.397%20216.42C484.39%20216.935%20483.274%20217.204%20482.142%20217.204C481.011%20217.204%20479.895%20216.935%20478.888%20216.42L467.275%20209.708C465.471%20208.663%20465.46%20206.971%20467.275%20205.938L478.82%20199.215C479.825%20198.699%20480.939%20198.431%20482.069%20198.431C483.199%20198.431%20484.312%20198.699%20485.318%20199.215L496.942%20205.938Z'%20fill='%238C57CC'/%3e%3cpath%20d='M486.649%20207.686C486.634%20207.719%20486.615%20207.749%20486.592%20207.777L486.512%20207.856H486.456L486.376%20207.913L481.591%20210.571L476.419%20207.584V207.947L481.591%20210.934L486.376%20208.265H486.433H486.49L486.547%20208.208C486.547%20208.208%20486.547%20208.208%20486.547%20208.152V208.061V207.538C486.594%20207.577%20486.629%20207.628%20486.649%20207.686Z'%20fill='%23BAC0D2'/%3e%3cpath%20d='M486.392%20207.21C486.767%20207.426%20486.755%20207.766%20486.392%20207.982L481.606%20210.64L476.435%20207.653L480.484%20204.575C480.69%20204.466%20480.92%20204.409%20481.153%20204.409C481.386%20204.409%20481.616%20204.466%20481.822%20204.575L486.392%20207.21Z'%20fill='white'/%3e%3cpath%20d='M493.476%20195.894C493.905%20196.175%20494.21%20196.61%20494.327%20197.109L496.799%20213.78C496.867%20214.212%20496.584%20214.382%20496.187%20214.144L470.931%20199.585C470.499%20199.307%20470.193%20198.871%20470.08%20198.37L467.608%20181.698C467.54%20181.267%20467.812%20181.096%20468.22%20181.335L493.476%20195.894Z'%20fill='%23C7C9D7'/%3e%3cpath%20d='M497.204%20213.625V213.5L494.72%20196.829V196.658V196.522V196.374L494.641%20196.272L469.385%20181.656H468.976H468.908L468.511%20181.952H468.591C468.628%20181.946%20468.667%20181.946%20468.704%20181.952H468.84C468.897%20181.964%20468.951%20181.987%20468.999%20182.02L494.255%20196.636L494.403%20196.738L494.55%20196.863L494.686%20197.01L494.8%20197.169L494.902%20197.34L494.992%20197.51C494.997%20197.571%20494.997%20197.631%20494.992%20197.692C494.997%20197.745%20494.997%20197.798%20494.992%20197.851L497.465%20214.522C497.47%20214.568%20497.47%20214.613%20497.465%20214.658C497.47%20214.696%20497.47%20214.734%20497.465%20214.772C497.47%20214.795%20497.47%20214.818%20497.465%20214.84C497.444%20214.875%20497.417%20214.906%20497.385%20214.931L497.794%20214.636C497.825%20214.614%20497.849%20214.582%20497.862%20214.545V214.454L497.204%20213.625Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M479.477%20205.318L476.415%20207.658L481.587%20210.645L485.204%20208.634L479.477%20205.318Z'%20fill='%23777DB2'/%3e%3cpath%20d='M482.675%20200.386L481.586%20211.028L476.404%20208.029L478.422%20198.058L482.675%20200.386Z'%20fill='%23BAC0D2'/%3e%3cpath%20d='M497.444%20233.936L500.313%20232.346L496.264%20230.245L497.444%20233.936Z'%20fill='%238C57CC'/%3e%3cpath%20d='M498.329%20229.19L499.123%20228.906L498.238%20233.653L497.445%20233.937L498.329%20229.19Z'%20fill='%23656874'/%3e%3cpath%20d='M485.4%20221.944L486.182%20221.66L499.122%20228.905L498.328%20229.189L485.4%20221.944Z'%20fill='%239C9EA6'/%3e%3cpath%20d='M498.329%20229.189L497.444%20233.936L484.516%20226.69L485.4%20221.943L498.329%20229.189Z'%20fill='%23232839'/%3e%3cpath%20d='M452.76%20189.871C453.894%20190.507%20453.894%20191.529%20452.76%20192.143C452.147%20192.456%20451.469%20192.619%20450.781%20192.619C450.093%20192.619%20449.415%20192.456%20448.802%20192.143C448.572%20192.055%20448.374%20191.9%20448.235%20191.697C448.095%20191.494%20448.02%20191.253%20448.02%20191.007C448.02%20190.761%20448.095%20190.52%20448.235%20190.317C448.374%20190.115%20448.572%20189.959%20448.802%20189.871C449.414%20189.556%20450.093%20189.391%20450.781%20189.391C451.47%20189.391%20452.148%20189.556%20452.76%20189.871Z'%20fill='%238C57CC'/%3e%3cpath%20d='M453.137%20184.219V190.442C453.116%20190.67%20453.034%20190.888%20452.9%20191.074C452.767%20191.26%20452.586%20191.406%20452.377%20191.498C451.806%20191.789%20451.175%20191.941%20450.534%20191.941C449.893%20191.941%20449.262%20191.789%20448.691%20191.498C448.48%20191.405%20448.297%20191.257%20448.161%20191.069C448.026%20190.882%20447.942%20190.661%20447.92%20190.431V184.196C447.938%20184.429%20448.02%20184.653%20448.156%20184.843C448.291%20185.033%20448.477%20185.183%20448.691%20185.275C449.262%20185.566%20449.893%20185.718%20450.534%20185.718C451.175%20185.718%20451.806%20185.566%20452.377%20185.275C452.586%20185.183%20452.767%20185.036%20452.9%20184.85C453.034%20184.665%20453.116%20184.447%20453.137%20184.219Z'%20fill='white'/%3e%3cpath%20d='M452.321%20183.137C453.342%20183.727%20453.353%20184.681%20452.321%20185.272C451.751%20185.563%20451.119%20185.715%20450.479%20185.715C449.838%20185.715%20449.206%20185.563%20448.636%20185.272C447.615%20184.681%20447.604%20183.727%20448.636%20183.137C449.206%20182.846%20449.838%20182.694%20450.479%20182.694C451.119%20182.694%20451.751%20182.846%20452.321%20183.137Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M451.925%20183.375C452.098%20183.434%20452.249%20183.545%20452.356%20183.694C452.463%20183.842%20452.52%20184.021%20452.52%20184.204C452.52%20184.387%20452.463%20184.566%20452.356%20184.715C452.249%20184.864%20452.098%20184.975%20451.925%20185.033C451.479%20185.262%20450.986%20185.382%20450.485%20185.382C449.984%20185.382%20449.49%20185.262%20449.044%20185.033C448.871%20184.975%20448.72%20184.864%20448.613%20184.715C448.506%20184.566%20448.449%20184.387%20448.449%20184.204C448.449%20184.021%20448.506%20183.842%20448.613%20183.694C448.72%20183.545%20448.871%20183.434%20449.044%20183.375C449.489%20183.144%20449.983%20183.024%20450.485%20183.024C450.986%20183.024%20451.48%20183.144%20451.925%20183.375Z'%20fill='%238C57CC'/%3e%3cpath%20d='M448.471%20184.387C447.988%20182.685%20447.397%20181.016%20446.701%20179.39C446.701%20178.811%20447.904%20179.503%20448.357%20180.582C448.747%20181.722%20449.043%20182.892%20449.242%20184.08C449.242%20184.08%20449.162%20178.504%20450.126%20177.266C450.739%20177.425%20450.365%20183.546%20450.285%20184.012C450.285%20184.012%20452.202%20179.924%20453.472%20179.083C454.05%20179.151%20451.623%20184.194%20451.623%20184.194C451.917%20183.646%20452.317%20183.163%20452.8%20182.773C453.283%20182.383%20453.839%20182.094%20454.436%20181.922C453.824%20182.822%20453.158%20183.683%20452.44%20184.5C452.151%20184.839%20451.776%20185.092%20451.355%20185.234C450.933%20185.376%20450.481%20185.401%20450.047%20185.307C449.73%20185.292%20449.421%20185.2%20449.146%20185.04C448.872%20184.88%20448.64%20184.656%20448.471%20184.387Z'%20fill='%234CA15C'/%3e%3cpath%20d='M562.062%20231.844C564.762%20233.411%20564.773%20235.933%20562.062%20237.523C560.558%20238.292%20558.892%20238.693%20557.203%20238.693C555.513%20238.693%20553.848%20238.292%20552.343%20237.523C549.644%20235.978%20549.633%20233.446%20552.343%20231.844C553.848%20231.076%20555.514%20230.675%20557.203%20230.675C558.892%20230.675%20560.558%20231.076%20562.062%20231.844Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M562.872%20217.955V233.241C562.822%20233.8%20562.625%20234.335%20562.3%20234.792C561.975%20235.249%20561.534%20235.612%20561.023%20235.841C559.619%20236.56%20558.064%20236.935%20556.487%20236.935C554.91%20236.935%20553.355%20236.56%20551.95%20235.841C551.43%20235.609%20550.98%20235.241%20550.649%20234.775C550.318%20234.31%20550.117%20233.764%20550.068%20233.195V217.909C550.119%20218.478%20550.32%20219.023%20550.651%20219.488C550.982%20219.953%20551.43%20220.322%20551.95%20220.555C553.354%20221.276%20554.909%20221.652%20556.487%20221.652C558.064%20221.652%20559.619%20221.276%20561.023%20220.555C561.534%20220.325%20561.974%20219.962%20562.298%20219.505C562.623%20219.048%20562.821%20218.513%20562.872%20217.955Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M560.975%20215.31C563.493%20216.764%20563.504%20219.114%20560.975%20220.557C559.571%20221.277%20558.016%20221.653%20556.439%20221.653C554.861%20221.653%20553.306%20221.277%20551.902%20220.557C549.396%20219.103%20549.385%20216.752%20551.902%20215.31C553.306%20214.588%20554.861%20214.211%20556.439%20214.211C558.016%20214.211%20559.572%20214.588%20560.975%20215.31Z'%20fill='white'/%3e%3cpath%20d='M559.976%20215.889C561.938%20217.024%20561.949%20218.853%20559.976%20219.977C558.883%20220.532%20557.674%20220.821%20556.449%20220.821C555.223%20220.821%20554.015%20220.532%20552.922%20219.977C550.971%20218.841%20550.96%20217.013%20552.922%20215.889C554.015%20215.332%20555.223%20215.042%20556.449%20215.042C557.675%20215.042%20558.883%20215.332%20559.976%20215.889Z'%20fill='%23713336'/%3e%3cpath%20d='M551.538%20218.388C551.538%20218.388%20548.328%20207.701%20547.194%20206.1C547.194%20204.68%20550.12%20206.384%20551.254%20209.03C552.211%20211.836%20552.939%20214.715%20553.432%20217.638C553.432%20217.638%20553.239%20203.92%20555.598%20200.899C557.106%20201.273%20556.165%20216.31%20555.983%20217.445C555.983%20217.445%20560.701%20207.417%20563.82%20205.339C565.226%20205.532%20559.284%20217.911%20559.284%20217.911C559.284%20217.911%20561.733%20213.289%20566.179%20212.437C564.671%20214.643%20563.031%20216.755%20561.268%20218.763C561.268%20218.763%20559.658%20221.227%20555.416%20220.75C555.416%20220.75%20552.479%20220.568%20551.538%20218.388Z'%20fill='%234CA15C'/%3e%3cpath%20opacity='0.35'%20d='M428.648%20256.795C428.648%20263.609%20437.358%20269.173%20448.097%20269.173C458.837%20269.173%20467.547%20263.631%20467.547%20256.795C467.547%20249.958%20458.837%20244.427%20448.097%20244.427C437.358%20244.427%20428.648%20249.958%20428.648%20256.795Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M456.241%20259.475C456.241%20259.475%20455.47%20262.564%20455.935%20263.189C456.315%20263.558%20456.784%20263.824%20457.297%20263.959C457.809%20264.094%20458.348%20264.095%20458.861%20263.961C459.652%20263.615%20460.306%20263.016%20460.721%20262.258C461.912%20261.589%20463.004%20260.755%20463.964%20259.782C464.143%20259.534%20464.239%20259.236%20464.239%20258.93C464.239%20258.624%20464.143%20258.326%20463.964%20258.078C463.084%20257.992%20462.196%20258.046%20461.333%20258.237C460.284%20258.536%20459.254%20258.896%20458.248%20259.316L456.241%20259.475Z'%20fill='%23232839'/%3e%3cpath%20d='M448.361%20255.136C448.361%20255.136%20447.59%20258.237%20448.055%20258.85C448.433%20259.223%20448.902%20259.491%20449.415%20259.627C449.929%20259.762%20450.469%20259.761%20450.981%20259.622C451.772%20259.276%20452.426%20258.677%20452.841%20257.919C454.033%20257.25%20455.125%20256.417%20456.085%20255.443C456.264%20255.195%20456.36%20254.897%20456.36%20254.591C456.36%20254.285%20456.264%20253.987%20456.085%20253.74C455.205%20253.66%20454.318%20253.714%20453.453%20253.899C452.403%20254.213%20451.373%20254.592%20450.369%20255.034L448.361%20255.136Z'%20fill='%23232839'/%3e%3cpath%20d='M472.03%20209.904L462.31%20219.841L452.864%20217.388L462.583%20207.451L472.03%20209.904Z'%20fill='white'/%3e%3cpath%20d='M461.593%20210.515L462.523%20210.867C462.912%20210.584%20463.363%20210.398%20463.838%20210.323C464.313%20210.248%20464.799%20210.286%20465.256%20210.435L466.027%20209.799C465.284%20209.561%20464.495%20209.501%20463.725%20209.625C462.954%20209.75%20462.224%20210.054%20461.593%20210.515Z'%20fill='%23E2EDFF'/%3e%3cpath%20d='M461.47%20210.605C460.563%20211.412%20460.62%20212.365%20461.538%20212.933L462.332%20212.275C461.913%20211.923%20461.924%20211.412%20462.4%20210.957L461.47%20210.605Z'%20fill='%23E2EDFF'/%3e%3cpath%20d='M461.661%20213.004L461.967%20213.141C462.702%20213.372%20463.48%20213.431%20464.241%20213.313C465.002%20213.195%20465.726%20212.903%20466.356%20212.459L465.426%20212.107C465.037%20212.373%20464.593%20212.547%20464.128%20212.616C463.662%20212.685%20463.187%20212.647%20462.738%20212.505L462.443%20212.357L461.661%20213.004Z'%20fill='%233EABFF'/%3e%3cpath%20d='M465.441%20210.516C466.099%20210.857%20466.156%20211.493%20465.555%20212.015L466.485%20212.367C467.505%20211.493%20467.381%20210.414%20466.224%20209.869L465.441%20210.516Z'%20fill='%233EABFF'/%3e%3cpath%20d='M454.053%20241.784C453.679%20244.838%20452.148%20252.856%20451.898%20255.65C451.898%20255.65%20451.263%20256.672%20449.358%20256.422L448.451%20256.036C448.273%20255.966%20448.124%20255.839%20448.027%20255.674C447.93%20255.509%20447.892%20255.317%20447.918%20255.128C448.277%20252.562%20448.417%20249.971%20448.337%20247.382C448.152%20245.793%20448.326%20244.182%20448.848%20242.669C448.779%20241.715%20448.655%20238.411%20450.56%20237.525C450.56%20237.525%20455.232%20236.662%20454.053%20241.784Z'%20fill='%23113569'/%3e%3cpath%20d='M450.171%20238.92L450.681%20239.93C450.681%20239.93%20458.495%20240.316%20460.593%20242.611C461.338%20242.936%20461.951%20243.506%20462.33%20244.226C462.709%20244.946%20462.833%20245.774%20462.68%20246.574C462.294%20249.629%20459.709%20256.988%20459.448%20259.793C459.448%20259.793%20458.813%20260.804%20456.907%20260.554L456.011%20260.179C455.833%20260.106%20455.683%20259.977%20455.585%20259.811C455.487%20259.645%20455.445%20259.451%20455.467%20259.259C455.825%20256.694%20455.969%20254.103%20455.898%20251.514C455.707%20249.928%20455.881%20248.32%20456.408%20246.812C453.973%20247.309%20451.588%20248.032%20449.286%20248.97C445.601%20250.503%20442.425%20248.72%20441.03%20247.948C440.34%20247.607%20439.696%20247.18%20439.114%20246.676C437.859%20246.591%20436.665%20246.101%20435.711%20245.279C434.056%20243.882%20433.806%20240.192%20435.587%20238.022C437.367%20235.853%20450.171%20238.92%20450.171%20238.92Z'%20fill='%23113C7A'/%3e%3cpath%20d='M447.385%20219.567C447.385%20219.567%20447.147%20219.567%20447.226%20217.898C447.333%20217.17%20447.575%20216.469%20447.941%20215.831C447.941%20215.831%20445.287%20214.003%20443.155%20214.514C442.456%20215.949%20441.503%20217.246%20440.342%20218.341C440.342%20218.341%20441.533%20221.487%20447.385%20219.567Z'%20fill='%23FF8654'/%3e%3cpath%20d='M444.618%20220.518C444.618%20220.518%20439.946%20216.611%20438.948%20216.52C438.305%20216.397%20437.64%20216.527%20437.091%20216.882C436.542%20217.238%20436.151%20217.791%20435.999%20218.428C435.83%20219.054%20435.868%20219.717%20436.107%20220.319C436.347%20220.921%20436.774%20221.429%20437.326%20221.767C438.188%20222.244%20445.718%20225.867%20447.056%20225.867C447.366%20225.894%20447.676%20225.828%20447.948%20225.678C448.22%20225.528%20448.441%20225.3%20448.583%20225.024C448.725%20224.747%20448.782%20224.435%20448.747%20224.126C448.711%20223.817%20448.585%20223.526%20448.383%20223.289C447.578%20221.858%20444.618%20220.518%20444.618%20220.518Z'%20fill='%23113569'/%3e%3cpath%20d='M443.189%20217.922C443.189%20217.922%20448.144%20219.569%20449.539%20221.863C450.934%20224.157%20450.673%20226.701%20449.675%20230.267C448.677%20233.832%20450.685%20237.012%20450.174%20238.92C449.664%20240.828%20446.114%20242.611%20440.898%20241.714C435.681%20240.817%20435.307%20238.795%20434.932%20237.648C434.558%20236.501%20435.942%20231.027%20434.672%20226.576C434.209%20225.124%20434.176%20223.569%20434.579%20222.099C434.982%20220.63%20435.802%20219.309%20436.94%20218.297C437.983%20217.536%20440.013%20216.525%20443.189%20217.922Z'%20fill='%23113C7A'/%3e%3cpath%20d='M447.931%20220.036C447.931%20220.036%20446.593%20220.899%20443.259%20220.422C439.924%20219.945%20439.732%20217.561%20440.015%20217.368C440.333%20217.079%20440.622%20216.759%20440.877%20216.414C440.877%20216.414%20444.404%20218.038%20445.64%20218.515C446.876%20218.992%20447.546%20219.275%20447.546%20219.275L447.931%20220.036Z'%20fill='white'/%3e%3cpath%20d='M433.505%20262.056C433.675%20263.975%20435.489%20265.292%20437.122%20265.997C438.92%20266.735%20440.851%20267.091%20442.793%20267.041C444.784%20267.049%20446.751%20266.615%20448.554%20265.769C450.108%20265.008%20451.752%20263.623%20451.741%20261.738C451.815%20262.376%20451.758%20263.023%20451.572%20263.638C451.387%20264.254%20451.078%20264.824%20450.663%20265.315C449.293%20266.629%20447.557%20267.497%20445.685%20267.802C442.169%20268.529%20437.383%20268.177%20434.718%20265.531C434.262%20265.04%20433.916%20264.456%20433.705%20263.819C433.493%20263.182%20433.421%20262.507%20433.493%20261.84C433.493%20261.84%20433.493%20261.931%20433.505%20262.056Z'%20fill='%23ADCDFC'/%3e%3cpath%20d='M436.181%20257.981C432.609%20260.048%20432.586%20263.398%20436.181%20265.465C438.18%20266.484%20440.391%20267.015%20442.634%20267.015C444.877%20267.015%20447.088%20266.484%20449.087%20265.465C452.659%20263.398%20452.671%20260.048%20449.087%20257.981C447.089%20256.96%20444.877%20256.427%20442.634%20256.427C440.391%20256.427%20438.179%20256.96%20436.181%20257.981Z'%20fill='white'/%3e%3cpath%20d='M440.983%20253.808L441.005%20261.791L442.4%20262.598L442.378%20254.614L440.983%20253.808Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M442.377%20254.614L442.4%20262.598L443.806%20261.791L443.784%20253.808L442.377%20254.614Z'%20fill='%237BAEFF'/%3e%3cpath%20d='M440.983%20253.808L442.378%20254.614L443.784%20253.808L442.389%20252.99L440.983%20253.808Z'%20fill='%234DA5DC'/%3e%3cpath%20d='M424.542%20224.136C424.549%20223.878%20424.616%20223.626%20424.739%20223.399C424.862%20223.172%20425.037%20222.977%20425.249%20222.831C425.462%20222.685%20425.706%20222.591%20425.961%20222.557C426.217%20222.524%20426.477%20222.551%20426.719%20222.637C431.256%20224.238%20441.905%20230.439%20442.597%20231.722C443.288%20233.006%20445.307%20240.16%20446.316%20243.749C446.386%20243.991%20446.509%20244.213%20446.677%20244.4C446.846%20244.586%20447.055%20244.732%20447.288%20244.825C447.521%20244.918%20447.772%20244.957%20448.023%20244.938C448.273%20244.918%20448.516%20244.842%20448.732%20244.714L455.049%20240.989C455.317%20240.828%20455.626%20240.748%20455.938%20240.757C456.251%20240.766%20456.554%20240.866%20456.812%20241.043C457.07%20241.22%20457.272%20241.467%20457.394%20241.756C457.516%20242.044%20457.552%20242.362%20457.499%20242.67L456.489%20248.769C456.448%20249.006%20456.354%20249.231%20456.214%20249.427C456.075%20249.624%20455.894%20249.787%20455.684%20249.904L448.88%20253.8C447.018%20254.868%20444.922%20255.459%20442.777%20255.521C440.632%20255.582%20438.505%20255.112%20436.586%20254.152L431.381%20251.54C426.844%20249.268%20424.02%20243.056%20424.202%20237.912L424.542%20224.136Z'%20fill='%233278CC'/%3e%3cpath%20d='M442.574%20231.776C443.209%20233.06%20445.285%20240.214%20446.294%20243.803C446.363%20244.045%20446.487%20244.267%20446.655%20244.454C446.824%20244.64%20447.032%20244.786%20447.266%20244.879C447.499%20244.972%20447.75%20245.011%20448%20244.991C448.251%20244.972%20448.493%20244.896%20448.71%20244.768L455.027%20241.043C455.295%20240.882%20455.604%20240.801%20455.916%20240.811C456.229%20240.82%20456.532%20240.919%20456.79%20241.096C457.048%20241.273%20457.25%20241.521%20457.372%20241.809C457.493%20242.098%20457.53%20242.415%20457.476%20242.724L456.467%20248.822C456.443%20248.96%20456.401%20249.093%20456.342%20249.22L456.093%20249.606C455.971%20249.751%20455.825%20249.874%20455.662%20249.969L448.857%20253.865C447.456%20254.668%20445.918%20255.203%20444.321%20255.443C438.843%20251.185%20439.535%20233.412%20441.52%20231.913C441.758%20231.731%20442.022%20231.586%20442.302%20231.481C442.407%20231.565%20442.499%20231.665%20442.574%20231.776Z'%20fill='%233AAEEF'/%3e%3cpath%20d='M455.052%20225.713C455.052%20225.713%20449.619%20221.068%20448.667%20220.966C447.533%20220.875%20446.591%20222.635%20446.206%20224.259C446.038%20224.886%20446.078%20225.55%20446.319%20226.152C446.56%20226.754%20446.99%20227.261%20447.544%20227.598C448.406%20228.075%20455.936%20231.709%20457.263%20231.709C457.625%20231.697%20457.978%20231.596%20458.29%20231.415C458.603%20231.233%20458.867%20230.977%20459.056%20230.669C459.246%20230.361%20459.357%20230.01%20459.378%20229.648C459.4%20229.287%20459.332%20228.926%20459.18%20228.597C458.318%20227.189%20455.052%20225.713%20455.052%20225.713Z'%20fill='%23113C7A'/%3e%3cpath%20d='M461.368%20220.179C461.498%20219.92%20461.593%20219.645%20461.652%20219.362C461.581%20218.857%20461.581%20218.345%20461.652%20217.84C461.844%20217.079%20462.173%20216.409%20462.321%20215.875C462.695%20215.398%20463.035%20216.261%20462.752%20217.011C462.468%20217.76%20462.559%20218.146%20462.842%20218.203C463.523%20218.007%20464.145%20217.648%20464.657%20217.158C464.986%20216.772%20466.925%20214.887%20467.084%20215.148C467.243%20215.409%20467.277%20215.625%20466.608%20216.341C466.21%20216.689%20465.886%20217.114%20465.655%20217.59C465.625%20217.918%20465.545%20218.24%20465.417%20218.544C465.179%20219.112%20465.417%20219.498%20464.94%20220.02C464.464%20220.543%20463.704%20220.633%20463.319%20220.974L462.933%20221.304L461.368%20220.179Z'%20fill='%23FFAA83'/%3e%3cpath%20d='M457.265%20231.727C457.911%20231.803%20458.564%20231.662%20459.122%20231.327C459.68%20230.992%20460.111%20230.482%20460.35%20229.876C461.427%20227.605%20463.276%20221.665%20463.525%20221.097C463.317%20220.678%20462.992%20220.329%20462.59%20220.091C462.187%20219.853%20461.724%20219.737%20461.257%20219.757C461.257%20219.757%20459.477%20223.255%20458.456%20224.857C457.435%20226.458%20453.863%20231.091%20457.265%20231.727Z'%20fill='%23113C7A'/%3e%3cpath%20d='M450.551%20210.085C450.551%20211.163%20450.232%20212.217%20449.634%20213.113C449.036%20214.01%20448.186%20214.709%20447.191%20215.121C446.196%20215.534%20445.102%20215.642%20444.046%20215.431C442.99%20215.221%20442.02%20214.702%20441.259%20213.94C440.497%20213.177%20439.979%20212.206%20439.769%20211.148C439.559%20210.091%20439.667%20208.995%20440.079%20207.999C440.491%20207.003%20441.188%20206.151%20442.083%20205.552C442.979%20204.953%20444.031%20204.634%20445.108%20204.634C445.823%20204.632%20446.532%20204.772%20447.193%20205.046C447.854%20205.319%20448.455%20205.721%20448.96%20206.227C449.466%20206.734%20449.867%20207.335%20450.14%20207.997C450.413%20208.659%20450.553%20209.369%20450.551%20210.085Z'%20fill='%23FF8654'/%3e%3cpath%20d='M450.553%20210.449C450.553%20210.449%20450.621%20215.911%20449.419%20217.013C448.217%20218.114%20446.402%20215.979%20443.488%20215.298C440.573%20214.617%20445.847%20208.87%20445.847%20208.87L450.553%20210.449Z'%20fill='%23FF8654'/%3e%3cpath%20d='M440.533%20205.61C440.533%20205.61%20446.351%20202.203%20449.605%20205.031C452.86%20207.859%20449.14%20208.983%20448.562%20209.801C447.984%20210.619%20448.562%20211.277%20448.256%20211.868C447.95%20212.458%20447.859%20212.561%20447.859%20212.561L448.063%20213.265L447.711%20213.571C447.711%20213.571%20447.246%20212.254%20446.815%20212.288C446.385%20212.322%20446.044%20213.185%20446.192%20213.685C446.339%20214.185%20446.781%20214.741%20446.702%20215.093C446.623%20215.445%20446.158%20216.41%20445.727%20216.444C444.688%20216.361%20443.67%20216.112%20442.71%20215.706C441.201%20214.78%20439.998%20213.429%20439.251%20211.822C439.028%20211.25%20438.94%20210.633%20438.993%20210.021C439.046%20209.408%20439.239%20208.816%20439.557%20208.29C439.413%20207.798%20439.43%20207.272%20439.606%20206.79C439.781%20206.308%20440.106%20205.895%20440.533%20205.61Z'%20fill='%2396432A'/%3e%3cpath%20opacity='0.43'%20d='M668.681%20149.759L684.513%20149.656L717.481%20131.043L699.2%20122.037L668.681%20149.759Z'%20fill='%23A6D0F4'/%3e%3cpath%20opacity='0.35'%20d='M688.581%20112.949C698.196%20112.949%20705.99%20107.991%20705.99%20101.876C705.99%2095.7606%20698.196%2090.8032%20688.581%2090.8032C678.967%2090.8032%20671.173%2095.7606%20671.173%20101.876C671.173%20107.991%20678.967%20112.949%20688.581%20112.949Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M675.418%2099.2895C675.623%20101.561%20677.766%20103.117%20679.694%20103.957C681.817%20104.836%20684.1%20105.258%20686.396%20105.195C688.748%20105.202%20691.072%20104.686%20693.201%20103.685C695.027%20102.787%20696.977%20101.141%20696.977%2098.9148C697.064%2099.6711%20696.995%20100.437%20696.774%20101.166C696.554%20101.894%20696.187%20102.57%20695.696%20103.151C694.076%20104.711%20692.018%20105.737%20689.799%20106.092C685.637%20106.955%20679.977%20106.535%20676.825%20103.333C676.293%20102.748%20675.893%20102.057%20675.65%20101.304C675.408%20100.552%20675.329%2099.7568%20675.418%2098.9716V99.2895Z'%20fill='%23ADCDFC'/%3e%3cpath%20d='M678.556%2095.1075C674.326%2097.5491%20674.292%20101.513%20678.556%20103.966C680.923%20105.17%20683.54%20105.797%20686.194%20105.797C688.849%20105.797%20691.466%20105.17%20693.832%20103.966C698.063%20101.513%20698.074%2097.5491%20693.832%2095.1075C691.468%2093.8964%20688.85%2093.2649%20686.194%2093.2649C683.539%2093.2649%20680.921%2093.8964%20678.556%2095.1075Z'%20fill='white'/%3e%3cpath%20d='M685.004%2091.8394L685.026%20100.845L686.16%20101.504L686.138%2092.498L685.004%2091.8394Z'%20fill='%23C7D8F2'/%3e%3cpath%20d='M686.144%2092.498L686.166%20101.504L687.3%20100.845L687.278%2091.8394L686.144%2092.498Z'%20fill='%237BAEFF'/%3e%3cpath%20d='M684.482%2090.2053L686.138%2091.1593L687.793%2090.2053L686.149%2089.24L684.482%2090.2053Z'%20fill='%234DA5DC'/%3e%3cpath%20d='M696.881%2059.5533C696.881%2059.5533%20700.283%2061.5521%20701.179%2063.5849C702.075%2065.6177%20701.837%2079.893%20697.096%2086.2186C692.356%2092.5442%20683.567%2093.4414%20681.537%2092.5442C679.507%2091.647%20667.769%2085.7302%20666.873%2082.823C665.977%2079.9157%20670.479%2077.633%20672.963%2076.4974C675.447%2075.3617%20677.023%2073.7831%20678.373%2069.6834C679.722%2065.5837%20680.403%2058.6107%20681.99%2057.4864C683.578%2056.3621%20687.4%2054.5791%20696.881%2059.5533Z'%20fill='%2325437F'/%3e%3cpath%20d='M680.029%2090.57C678.374%2089.8318%20670.265%2085.8002%20666.84%2082.734C666.114%2079.8608%20670.514%2077.6576%20672.964%2076.5446C675.414%2075.4317%20677.024%2073.8304%20678.374%2069.7307C679.723%2065.6309%20680.404%2058.658%20681.991%2057.5337C683.579%2056.4094%20687.401%2054.5923%20696.882%2059.5665C697.895%2060.1825%20698.845%2060.8977%20699.717%2061.7016C700.568%2064.0751%20700.261%2077.9869%20695.589%2084.2103C690.917%2090.4337%20682.059%2091.4331%20680.029%2090.57Z'%20fill='%23254DA1'/%3e%3cpath%20d='M609.514%20118.378L606.985%20116.902L606.917%2087.9197L609.446%2089.396L609.514%20118.378Z'%20fill='%23CB6A50'/%3e%3cpath%20d='M609.446%2089.395L606.917%2087.9186L641.359%2068.0105L643.899%2069.4869L609.446%2089.395Z'%20fill='%23DBDBDB'/%3e%3cpath%20d='M643.9%2069.4895L643.968%2098.4715L609.515%20118.38L609.447%2089.3976L643.9%2069.4895Z'%20fill='%239966D7'/%3e%3cpath%20d='M611.92%2083.8906L611.852%20112.873L670.768%20146.886L670.836%20117.904L611.92%2083.8906Z'%20fill='%23A478D9'/%3e%3cpath%20d='M611.887%20100.108L670.791%20134.121L670.837%20117.904L611.921%2083.8906L611.887%20100.108Z'%20fill='%238C57CC'/%3e%3cpath%20d='M668.621%20149.703L666.092%20148.238L666.024%20119.256L668.553%20120.732L668.621%20149.703Z'%20fill='%238C57CC'/%3e%3cpath%20d='M668.553%20120.731L666.024%20119.254L700.466%2099.335L703.007%20100.811L668.553%20120.731Z'%20fill='%23DBDBDB'/%3e%3cpath%20d='M703.008%20100.814L703.076%20129.796L668.622%20149.704L668.554%20120.733L703.008%20100.814Z'%20fill='%23976EC9'/%3e%3cpath%20d='M707.733%20100.052L707.722%20102.778L668.664%20125.513V122.788L707.733%20100.052Z'%20fill='%238C57CC'/%3e%3cpath%20d='M668.663%20122.79V125.515L601.151%2086.2214L601.163%2083.4958L668.663%20122.79Z'%20fill='%238C57CC'/%3e%3cpath%20d='M707.738%20100.054L668.669%20122.79L601.168%2083.496L640.226%2060.7715L707.738%20100.054Z'%20fill='%23B195D2'/%3e%3cpath%20d='M670.777%20104.115L678.67%20108.703L691.429%20101.332L683.535%2096.7441L670.777%20104.115Z'%20fill='%238C57CC'/%3e%3cpath%20d='M669.325%20101.393L669.336%20103.358L677.229%20107.946L677.218%20105.981L669.325%20101.393Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M677.216%20105.977L677.227%20107.942L689.985%20100.56L689.974%2098.6069L677.216%20105.977Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M669.325%20101.392L677.218%20105.98L689.976%2098.6096L682.094%2094.0215L669.325%20101.392Z'%20fill='white'/%3e%3cpath%20d='M659.536%2094.9864L667.429%2099.5858L680.188%2092.204L672.294%2087.616L659.536%2094.9864Z'%20fill='white'/%3e%3cpath%20d='M666.398%2086.2649C668.212%2087.3097%20668.212%2089.0018%20666.398%2090.0353L654.853%2096.7584C653.847%2097.2737%20652.733%2097.5424%20651.604%2097.5424C650.474%2097.5424%20649.36%2097.2737%20648.355%2096.7584L636.73%2090.0353C634.938%2089.0018%20634.927%2087.3097%20636.73%2086.2649L648.275%2079.5532C649.283%2079.0378%20650.398%2078.769%20651.53%2078.769C652.662%2078.769%20653.777%2079.0378%20654.785%2079.5532L666.398%2086.2649Z'%20fill='%238C57CC'/%3e%3cpath%20d='M656.133%2088.0245C656.135%2088.0548%20656.135%2088.0852%20656.133%2088.1154L656.065%2088.1949H655.997H655.929L651.131%2090.8637L645.926%2087.9905V88.2971L651.086%2091.2839L655.883%2088.6264H655.94L656.008%2088.5583C656.01%2088.5243%20656.01%2088.4902%20656.008%2088.4561V88.0927C656.044%2088.0612%20656.087%2088.0379%20656.133%2088.0245Z'%20fill='%23BAC0D2'/%3e%3cpath%20d='M655.849%2087.5369C655.929%2087.5648%20655.999%2087.617%20656.048%2087.6861C656.097%2087.7553%20656.123%2087.8381%20656.123%2087.923C656.123%2088.0079%20656.097%2088.0907%20656.048%2088.1599C655.999%2088.2291%20655.929%2088.2812%20655.849%2088.3091L651.052%2090.9779L645.926%2087.9912L649.963%2084.9022C650.169%2084.7928%20650.399%2084.7356%20650.632%2084.7356C650.866%2084.7356%20651.095%2084.7928%20651.302%2084.9022L655.849%2087.5369Z'%20fill='white'/%3e%3cpath%20d='M662.942%2076.2336C663.158%2076.369%20663.344%2076.5463%20663.49%2076.755C663.636%2076.9637%20663.739%2077.1996%20663.793%2077.4488L666.276%2094.1202C666.333%2094.5518%20666.061%2094.7108%20665.653%2094.4836L640.396%2079.8564C640.183%2079.7221%20639.999%2079.5464%20639.855%2079.3396C639.711%2079.1329%20639.61%2078.8992%20639.557%2078.6526L637.074%2061.9811C637.006%2061.5382%20637.289%2061.3792%20637.686%2061.6177L662.942%2076.2336Z'%20fill='%23C7C9D7'/%3e%3cpath%20d='M666.672%2093.9753V93.8504L664.2%2077.1789V76.9404V76.8382V76.736L664.12%2076.6338L638.864%2062.0179H637.991H637.64C637.631%2062.0129%20637.621%2062.0103%20637.611%2062.0103C637.601%2062.0103%20637.592%2062.0129%20637.583%2062.0179L637.175%2062.3131C637.205%2062.307%20637.235%2062.307%20637.265%2062.3131H637.39H637.526L637.674%2062.3926L662.941%2076.2363L663.1%2076.3385L663.236%2076.4634L663.372%2076.6111C663.42%2076.659%20663.462%2076.7124%20663.497%2076.7701C663.535%2076.8243%20663.569%2076.8812%20663.599%2076.9404L663.678%2077.1108L663.746%2077.2811C663.752%2077.3378%20663.752%2077.3948%20663.746%2077.4515L666.23%2094.1229C666.236%2094.1682%20666.236%2094.214%20666.23%2094.2592C666.236%2094.2968%20666.236%2094.3352%20666.23%2094.3728V94.4409C666.218%2094.4777%20666.194%2094.5096%20666.162%2094.5318L666.559%2094.2365C666.594%2094.21%20666.621%2094.1748%20666.638%2094.1343V93.9753H666.672Z'%20fill='white'/%3e%3cpath%20opacity='0.2'%20d='M648.944%2085.6511L645.882%2087.9906L651.042%2090.9774L654.671%2088.9559L648.944%2085.6511Z'%20fill='%23777DB2'/%3e%3cpath%20d='M652.132%2080.7118L651.044%2091.3642L645.861%2088.3548L647.891%2078.395L652.132%2080.7118Z'%20fill='%23BAC0D2'/%3e%3cpath%20d='M606.644%20113.464C606.644%20113.464%20607.846%20115.349%20607.676%20116.031C607.506%20116.712%20606.644%20115.69%20606.644%20115.69C606.644%20115.69%20606.905%20117.961%20606.304%20118.438C605.703%20118.915%20605.442%20117.496%20605.442%20117.496C605.2%20117.659%20604.905%20117.723%20604.618%20117.674C604.331%20117.625%20604.074%20117.468%20603.899%20117.234C603.593%20116.631%20603.448%20115.958%20603.478%20115.281C603.507%20114.605%20603.711%20113.948%20604.07%20113.373C604.761%20112.26%20606.644%20113.464%20606.644%20113.464Z'%20fill='%23FF9554'/%3e%3cpath%20d='M610.772%2081.4148C610.772%2081.4148%20607.574%2081.3013%20606.089%2085.7644C604.603%2090.2275%20604.036%2097.2118%20603.82%2099.2674C603.605%20101.323%20603.503%20112.804%20603.616%20113.372C603.787%20113.662%20604.025%20113.906%20604.311%20114.083C604.597%20114.259%20604.922%20114.363%20605.257%20114.386C605.593%20114.408%20605.928%20114.348%20606.235%20114.211C606.542%20114.074%20606.811%20113.864%20607.019%20113.599C607.937%20111.544%20607.914%20102.583%20608.935%2099.1538C609.956%2095.7241%20612.485%2087.025%20612.598%2084.6174C612.652%2083.9614%20612.507%2083.3043%20612.181%2082.7326C611.855%2082.161%20611.364%2081.7016%20610.772%2081.4148Z'%20fill='%23113569'/%3e%3cpath%20d='M631.99%2074.4519C632%2073.9354%20632.084%2073.4229%20632.239%2072.9302C632.5%2072.2033%20631.729%2071.0563%20631.525%2070.3977C631.321%2069.739%20631.525%2069.5005%20631.979%2069.5459C632.432%2069.5913%20633.305%2071.5333%20633.498%2071.8172C633.691%2072.1011%20634.984%2070.2273%20635.381%2070.1592C635.778%2070.091%20636.152%2070.7043%20636.118%2071.1926C636.084%2071.6809%20637.105%2072.862%20636.628%2074.0318C636.152%2075.2015%20634.882%2076.1214%20634.36%2075.8715C633.838%2075.6217%20631.99%2074.4519%20631.99%2074.4519Z'%20fill='%23FF9554'/%3e%3cpath%20opacity='0.35'%20d='M595.057%20146.604C595.057%20153.895%20604.345%20159.812%20615.822%20159.812C627.299%20159.812%20636.575%20153.895%20636.575%20146.604C636.575%20139.313%20627.287%20133.396%20615.822%20133.396C604.356%20133.396%20595.057%20139.302%20595.057%20146.604Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M609.731%20143.59C609.312%20143.793%20608.966%20144.119%20608.738%20144.525C608.511%20144.932%20608.414%20145.398%20608.461%20145.861C608.471%20146.284%20608.551%20146.703%20608.699%20147.099C609.058%20147.392%20609.5%20147.564%20609.962%20147.59C610.424%20147.617%20610.883%20147.497%20611.273%20147.247C612.257%20146.565%20613.04%20145.632%20613.541%20144.544C614.141%20143.727%20614.657%20142.852%20615.084%20141.932C615.197%20141.285%20614.471%20140.796%20613.802%20140.887C612.512%20141.591%20611.29%20142.412%20610.15%20143.34C610.031%20143.434%20609.902%20143.514%20609.765%20143.579L609.731%20143.59Z'%20fill='%23232839'/%3e%3cpath%20d='M608.507%20106.594C608.507%20106.594%20608.235%20115.679%20608.575%20121.187C608.881%20126.093%20608.45%20140.3%20608.348%20143.457C608.321%20143.895%20608.429%20144.331%20608.655%20144.706C608.882%20145.082%20609.218%20145.379%20609.618%20145.558C609.952%20145.679%20610.31%20145.719%20610.663%20145.675C611.016%20145.632%20611.353%20145.506%20611.648%20145.308C611.902%20145.155%20612.121%20144.949%20612.289%20144.704C612.457%20144.459%20612.571%20144.181%20612.624%20143.889C613.236%20140.936%20615.277%20130.874%20615.572%20125.775C615.912%20119.767%20616.219%20112.261%20616.559%20109.876C616.899%20107.491%20608.507%20106.594%20608.507%20106.594Z'%20fill='%23113569'/%3e%3cpath%20d='M621.192%20146.817C620.742%20146.924%20620.336%20147.167%20620.028%20147.512C619.72%20147.857%20619.525%20148.288%20619.468%20148.747C619.399%20149.165%20619.399%20149.591%20619.468%20150.008C619.764%20150.36%20620.16%20150.614%20620.604%20150.736C621.047%20150.858%20621.517%20150.841%20621.952%20150.689C623.07%20150.245%20624.047%20149.502%20624.775%20148.543C625.538%20147.857%20626.23%20147.096%20626.839%20146.272C626.881%20146.117%20626.885%20145.954%20626.851%20145.797C626.818%20145.64%20626.748%20145.493%20626.648%20145.368C626.547%20145.243%20626.419%20145.144%20626.273%20145.078C626.127%20145.012%20625.968%20144.981%20625.807%20144.988C624.401%20145.401%20623.034%20145.941%20621.725%20146.601C621.586%20146.666%20621.442%20146.719%20621.294%20146.76L621.192%20146.817Z'%20fill='%23232839'/%3e%3cpath%20d='M623.76%20108.367C623.76%20108.367%20624.225%20136.213%20623.216%20146.298C623.212%20146.63%20623.135%20146.958%20622.991%20147.258C622.847%20147.557%20622.638%20147.821%20622.381%20148.032C622.123%20148.242%20621.823%20148.393%20621.501%20148.474C621.179%20148.555%20620.843%20148.564%20620.517%20148.501C620.347%20148.501%20619.201%20148.785%20619.008%20148.705C618.101%20148.365%20617.137%20121.449%20616.332%20118.326C615.527%20115.203%20613.134%20112.943%20613.361%20108.367C613.588%20103.79%20620.449%20106.084%20623.76%20108.367Z'%20fill='%23113C7A'/%3e%3cpath%20d='M624.303%20110.578C623.906%20112.599%20618.077%20113.121%20614.72%20112.576C611.363%20112.031%20607.405%20111.27%20607.518%20107.375C607.518%20107.375%20607.836%2089.92%20607.836%2086.8537C607.882%2084.9035%20608.554%2083.0201%20609.752%2081.482C609.752%2081.482%20611.635%2079.3356%20617.544%2080.5394C617.544%2080.5394%20622.352%2081.5842%20624.575%2085.1502C624.575%2085.1502%20626.423%2088.5572%20625.913%2096.6885C625.647%20101.346%20625.11%20105.983%20624.303%20110.578Z'%20fill='%23113C7A'/%3e%3cpath%20d='M612.926%2076.2691C613.196%2077.7025%20613.196%2079.1739%20612.926%2080.6073C612.846%2081.2887%20615.817%2083.5827%20618.448%2082.9808C619.98%2082.6401%20619.9%2081.8452%20619.9%2081.8452C619.153%2080.5839%20618.761%2079.1436%20618.766%2077.6773C618.959%2075.6672%20614.717%2075.8035%20612.926%2076.2691Z'%20fill='%23FF7C40'/%3e%3cpath%20d='M621.268%2082.0607L619.442%2081.0273C619.442%2081.0273%20614.758%2080.5957%20613.08%2079.4941L612.207%2080.7434C612.646%2081.4711%20613.254%2082.0829%20613.978%2082.5274C614.702%2082.972%20615.522%2083.2364%20616.369%2083.2986C617.889%2083.572%20619.457%2083.2596%20620.758%2082.4241L621.268%2082.0607Z'%20fill='%23E1E8F2'/%3e%3cpath%20d='M622.655%2084.6527C622.293%2084.6577%20621.937%2084.7455%20621.614%2084.9091C621.291%2085.0728%20621.009%2085.3081%20620.79%2085.5972C620.572%2085.8863%20620.422%2086.2215%20620.352%2086.5774C620.282%2086.9332%20620.294%2087.3003%20620.387%2087.6508C620.61%2088.525%20621.1%2089.3074%20621.79%2089.888C622.48%2090.4685%20623.334%2090.8181%20624.232%2090.8874C629.029%2091.6029%20638.362%2087.4805%20639.451%2085.3795C640.54%2083.2785%20637.036%2075.4766%20635.425%2074.2841C634.064%2073.4324%20631.807%2074.7384%20632.023%2075.8627C632.238%2076.987%20634.2%2082.5631%20634.291%2082.8583C634.382%2083.1536%20634.11%2083.165%20634.11%2083.165L624.504%2084.5164C623.89%2084.593%20623.273%2084.6385%20622.655%2084.6527Z'%20fill='%23113C7A'/%3e%3cpath%20d='M621.512%2071.262C621.525%2072.4014%20621.2%2073.519%20620.578%2074.4729C619.955%2075.4269%20619.064%2076.174%20618.017%2076.6194C616.969%2077.0648%20615.814%2077.1884%20614.696%2076.9744C613.578%2076.7604%20612.55%2076.2186%20611.74%2075.4177C610.931%2074.6168%20610.377%2073.5931%20610.15%2072.4765C609.923%2071.36%20610.033%2070.2011%20610.465%2069.1471C610.898%2068.0931%20611.633%2067.1916%20612.578%2066.5571C613.523%2065.9226%20614.635%2065.5838%20615.773%2065.5837C617.282%2065.5866%20618.73%2066.1836%20619.804%2067.2459C620.877%2068.3083%20621.491%2069.7508%20621.512%2071.262Z'%20fill='%23FF8654'/%3e%3cpath%20d='M621.513%2071.6276C621.513%2071.6276%20621.581%2077.374%20620.379%2078.5437C619.177%2079.7134%20617.204%2077.4081%20614.13%2076.738C611.057%2076.068%20616.625%2069.9241%20616.625%2069.9241L621.513%2071.6276Z'%20fill='%23FF8654'/%3e%3cpath%20d='M610.956%2066.5292C610.956%2066.5292%20617.091%2062.9746%20620.516%2065.916C623.941%2068.8573%20620.028%2070.0952%20619.382%2070.947C618.735%2071.7987%20619.382%2072.5028%20619.053%2073.1161C618.724%2073.7293%20618.645%2073.8542%20618.645%2073.8542L618.849%2074.5924L618.486%2074.9218C618.486%2074.9218%20618.021%2073.5363%20617.579%2073.5363C617.136%2073.5363%20616.762%2074.4789%20616.921%2075.0126C617.08%2075.5464%20617.533%2076.1483%20617.454%2076.4776C617.375%2076.8069%20616.887%2077.8745%20616.433%2077.9199C615.337%2077.8264%20614.261%2077.562%20613.246%2077.1363C611.663%2076.1551%20610.399%2074.7349%20609.606%2073.0479C609.371%2072.4436%20609.278%2071.793%20609.335%2071.1469C609.392%2070.5008%20609.597%2069.8766%20609.935%2069.323C609.789%2068.809%20609.809%2068.262%20609.992%2067.7602C610.176%2067.2584%20610.513%2066.8275%20610.956%2066.5292Z'%20fill='%2396432A'/%3e%3cpath%20d='M236.658%20220.478L247.715%20223.442L236.703%20239.171L236.692%20235.049L213.886%20248.234L213.863%20238.444L236.669%20225.259L236.658%20220.478Z'%20fill='white'/%3e%3cpath%20d='M607.506%20199.468L618.564%20202.432L607.552%20218.161L607.54%20214.039L584.734%20227.223L584.711%20217.434L607.518%20204.249L607.506%20199.468Z'%20fill='white'/%3e%3cpath%20d='M361.999%20210.934L372.898%20226.061L361.954%20228.559L361.965%20224.596L337.537%20210.48L337.56%20200.781L361.988%20214.898L361.999%20210.934Z'%20fill='white'/%3e%3cpath%20d='M84.669%20223.126C84.669%20223.126%2085.8712%20225.011%2085.7011%20225.704C85.5309%20226.396%2084.669%20225.352%2084.669%20225.352C84.669%20225.352%2084.9299%20227.623%2084.3288%20228.1C83.7277%20228.577%2083.4783%20227.157%2083.4783%20227.157C83.2359%20227.324%2082.9385%20227.39%2082.6487%20227.341C82.3589%20227.292%2082.0993%20227.133%2081.9246%20226.896C81.6177%20226.292%2081.4731%20225.618%2081.505%20224.941C81.5368%20224.264%2081.7439%20223.607%2082.106%20223.035C82.7865%20221.922%2084.669%20223.126%2084.669%20223.126Z'%20fill='%23FF9554'/%3e%3cpath%20d='M88.7642%20191.074C88.7642%20191.074%2085.5547%20190.961%2084.0691%20195.424C82.5834%20199.887%2082.0164%20206.872%2081.8009%20208.927C81.5854%20210.983%2081.4834%20222.464%2081.5968%20223.032C81.7673%20223.322%2082.0059%20223.566%2082.292%20223.742C82.578%20223.919%2082.9027%20224.023%2083.238%20224.045C83.5733%20224.068%2083.9089%20224.008%2084.2158%20223.871C84.5227%20223.734%2084.7916%20223.524%2084.999%20223.259C85.9063%20221.204%2085.8836%20212.255%2086.9043%20208.813C87.925%20205.372%2090.454%20196.685%2090.5674%20194.277C90.6235%20193.624%2090.4815%20192.968%2090.1598%20192.397C89.8381%20191.826%2089.3517%20191.365%2088.7642%20191.074Z'%20fill='%23113569'/%3e%3cpath%20opacity='0.35'%20d='M93.849%20269.47C105.317%20269.47%20114.614%20263.556%20114.614%20256.262C114.614%20248.967%20105.317%20243.054%2093.849%20243.054C82.3808%20243.054%2073.0839%20248.967%2073.0839%20256.262C73.0839%20263.556%2082.3808%20269.47%2093.849%20269.47Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M87.7696%20253.262C87.3488%20253.462%2087%20253.788%2086.7707%20254.195C86.5414%20254.601%2086.4427%20255.068%2086.4881%20255.533C86.501%20255.956%2086.5814%20256.374%2086.7262%20256.771C87.0908%20257.053%2087.5323%20257.216%2087.9922%20257.241C88.452%20257.265%2088.9084%20257.149%2089.3006%20256.907C90.2813%20256.227%2091.064%20255.298%2091.5688%20254.216C92.1687%20253.395%2092.6854%20252.516%2093.1111%20251.592C93.2359%20250.956%2092.4987%20250.457%2091.8296%20250.559C90.5388%20251.261%2089.3163%20252.082%2088.1778%20253.012C88.0587%20253.102%2087.9292%20253.179%2087.7923%20253.239L87.7696%20253.262Z'%20fill='%23232839'/%3e%3cpath%20d='M86.4744%20216.253C86.4744%20216.253%2086.2022%20225.339%2086.5424%20230.847C86.8486%20235.753%2086.4177%20249.96%2086.327%20253.117C86.2944%20253.554%2086.3979%20253.991%2086.6233%20254.367C86.8487%20254.744%2087.1849%20255.041%2087.5858%20255.218C87.9192%20255.34%2088.2766%20255.382%2088.6291%20255.341C88.9817%20255.299%2089.3197%20255.175%2089.6158%20254.979C89.8692%20254.822%2090.0869%20254.614%2090.2549%20254.367C90.4229%20254.121%2090.5374%20253.842%2090.5911%20253.548C91.2035%20250.607%2093.2562%20240.534%2093.5397%20235.435C93.88%20229.427%2094.1862%20221.92%2094.5264%20219.535C94.8666%20217.151%2086.4744%20216.253%2086.4744%20216.253Z'%20fill='%23113569'/%3e%3cpath%20d='M99.222%20256.476C98.7745%20256.585%2098.371%20256.829%2098.0651%20257.173C97.7592%20257.518%2097.5654%20257.948%2097.5095%20258.406C97.4369%20258.823%2097.4369%20259.25%2097.5095%20259.667C97.8043%20260.021%2098.1998%20260.277%2098.6435%20260.401C99.0871%20260.525%2099.5579%20260.51%2099.9931%20260.359C101.11%20259.911%20102.085%20259.169%20102.817%20258.213C103.58%20257.528%20104.271%20256.767%20104.881%20255.942C105.142%20255.34%20104.541%20254.658%20103.849%20254.658C102.44%20255.071%20101.073%20255.614%2099.7663%20256.282C99.627%20256.344%2099.4828%20256.393%2099.3354%20256.43L99.222%20256.476Z'%20fill='%23232839'/%3e%3cpath%20d='M101.785%20218.026C101.785%20218.026%20102.25%20245.873%20101.24%20255.969C101.235%20256.3%20101.157%20256.627%20101.012%20256.925C100.867%20257.223%20100.658%20257.486%20100.401%20257.695C100.144%20257.904%2099.8439%20258.054%2099.5226%20258.134C99.2013%20258.215%2098.8663%20258.224%2098.5411%20258.161C98.371%20258.161%2097.2256%20258.444%2097.0441%20258.365C96.1255%20258.024%2095.1616%20231.109%2094.3564%20227.986C93.5512%20224.863%2091.1582%20222.603%2091.3851%20218.026C91.6119%20213.45%2098.4731%20215.744%20101.785%20218.026Z'%20fill='%23113C7A'/%3e%3cpath%20d='M102.342%20220.236C101.934%20222.258%2096.1044%20222.78%2092.7475%20222.246C89.3906%20221.713%2085.4326%20220.94%2085.546%20217.034C85.546%20217.034%2085.8636%20199.579%2085.8636%20196.524C85.9205%20194.584%2086.5961%20192.714%2087.7915%20191.186C87.7915%20191.186%2089.6628%20189.04%2095.5713%20190.244C95.5713%20190.244%20100.391%20191.3%20102.603%20194.854C102.603%20194.854%20104.451%20198.261%20103.941%20206.393C103.673%20211.034%20103.139%20215.656%20102.342%20220.236Z'%20fill='%23113C7A'/%3e%3cpath%20d='M90.952%20185.964C91.2221%20187.397%2091.2221%20188.868%2090.952%20190.302C90.8726%20190.983%2093.8439%20193.277%2096.475%20192.687C98.006%20192.346%2097.9266%20191.551%2097.9266%20191.551C97.1797%20190.29%2096.7878%20188.849%2096.7925%20187.383C97.0307%20185.328%2092.7438%20185.498%2090.952%20185.964Z'%20fill='%23FF7C40'/%3e%3cpath%20d='M99.2954%20191.722L97.4695%20190.7C97.4695%20190.7%2092.7858%20190.257%2091.1073%20189.156L90.2341%20190.405C90.6738%20191.134%2091.2808%20191.747%2092.0047%20192.193C92.7287%20192.639%2093.5485%20192.906%2094.3962%20192.972C95.9183%20193.242%2097.4862%20192.925%2098.7851%20192.086L99.2954%20191.722Z'%20fill='%23E1E8F2'/%3e%3cpath%20d='M99.5354%20180.913C99.5354%20182.049%2099.1988%20183.16%2098.5683%20184.105C97.9377%20185.05%2097.0415%20185.787%2095.9929%20186.222C94.9444%20186.657%2093.7905%20186.77%2092.6774%20186.549C91.5642%20186.327%2090.5417%20185.78%2089.7392%20184.976C88.9367%20184.172%2088.3901%20183.148%2088.1687%20182.034C87.9473%20180.919%2088.0609%20179.764%2088.4953%20178.714C88.9296%20177.664%2089.6651%20176.766%2090.6088%20176.135C91.5525%20175.503%2092.6619%20175.166%2093.7969%20175.166C95.3188%20175.166%2096.7785%20175.772%2097.8546%20176.849C98.9308%20177.927%2099.5354%20179.389%2099.5354%20180.913Z'%20fill='%23FF8654'/%3e%3cpath%20d='M99.5445%20181.286C99.5445%20181.286%2099.6125%20187.043%2098.4104%20188.202C97.2083%20189.36%2095.2349%20187.066%2092.1616%20186.396C89.0882%20185.726%2094.6566%20179.582%2094.6566%20179.582L99.5445%20181.286Z'%20fill='%23FF8654'/%3e%3cpath%20d='M88.9823%20176.191C88.9823%20176.191%2095.1177%20172.636%2098.5426%20175.578C101.968%20178.519%2098.055%20179.757%2097.4086%20180.62C96.7621%20181.483%2097.4085%20182.176%2097.0797%20182.789C96.7508%20183.402%2096.6714%20183.516%2096.6714%20183.516L96.8755%20184.254L96.5126%20184.583C96.5126%20184.583%2096.025%20183.198%2095.5713%20183.232C95.1177%20183.266%2094.7548%20184.175%2094.9136%20184.708C95.0723%20185.242%2095.526%20185.844%2095.4466%20186.185C95.3672%20186.525%2094.8795%20187.57%2094.4259%20187.616C93.3294%20187.522%2092.2542%20187.258%2091.2391%20186.832C89.6561%20185.851%2088.3914%20184.431%2087.5987%20182.744C87.3635%20182.139%2087.2708%20181.489%2087.3279%20180.843C87.3849%20180.196%2087.5902%20179.572%2087.9276%20179.019C87.7789%20178.496%2087.8011%20177.94%2087.9908%20177.431C88.1806%20176.922%2088.5281%20176.488%2088.9823%20176.191Z'%20fill='%2396432A'/%3e%3cpath%20d='M109.698%20224.2L104.028%20227.607L104.776%20237.635L117.161%20229.969L116.684%20220.407L109.698%20224.2Z'%20fill='%2394C3FF'/%3e%3cpath%20d='M110.776%20221.454C110.776%20221.454%20112.126%20222.873%20112.409%20223.305C112.693%20223.737%20112.84%20225.928%20112.477%20226.212C111.69%20226.714%20110.789%20227.007%20109.858%20227.064C109.291%20226.916%20108.939%20226.632%20108.939%20226.417C108.939%20226.201%20108.803%20224.793%20108.803%20224.793C108.803%20224.793%20107.805%20224.077%20107.737%20223.657C107.707%20223.3%20107.73%20222.94%20107.805%20222.59L110.776%20221.454Z'%20fill='%23FF9554'/%3e%3cpath%20d='M100.629%20192.584C101.648%20193.135%20102.542%20193.89%20103.257%20194.802C103.971%20195.715%20104.489%20196.765%20104.78%20197.888C105.539%20201.488%20107.048%20210.755%20107.048%20210.755L111.21%20221.237C111.111%20221.644%20110.917%20222.022%20110.645%20222.34C110.372%20222.658%20110.028%20222.907%20109.641%20223.067C109.254%20223.226%20108.835%20223.292%20108.418%20223.258C108%20223.224%20107.597%20223.092%20107.241%20222.872C107.241%20222.872%20102.704%20214.162%20101.57%20211.709C100.436%20209.256%2099.302%20197.888%2099.1092%20195.616C99.0222%20195.016%2099.1212%20194.403%2099.393%20193.861C99.6647%20193.319%20100.096%20192.873%20100.629%20192.584Z'%20fill='%23113C7A'/%3e%3cpath%20d='M364.359%20134.939C367.058%20136.495%20367.069%20139.016%20364.359%20140.617C362.853%20141.384%20361.188%20141.784%20359.499%20141.784C357.81%20141.784%20356.145%20141.384%20354.639%20140.617C351.952%20139.062%20351.94%20136.54%20354.639%20134.939C356.145%20134.172%20357.81%20133.772%20359.499%20133.772C361.188%20133.772%20362.853%20134.172%20364.359%20134.939Z'%20fill='%23A6D0F4'/%3e%3cpath%20d='M365.159%20121.041V136.338C365.107%20136.898%20364.908%20137.434%20364.581%20137.891C364.254%20138.348%20363.812%20138.709%20363.299%20138.939C361.894%20139.654%20360.34%20140.027%20358.763%20140.027C357.186%20140.027%20355.632%20139.654%20354.227%20138.939C353.706%20138.706%20353.256%20138.338%20352.925%20137.872C352.594%20137.407%20352.394%20136.862%20352.344%20136.293V121.007C352.393%20121.574%20352.594%20122.119%20352.925%20122.582C353.256%20123.046%20353.706%20123.411%20354.227%20123.641C355.631%20124.359%20357.186%20124.733%20358.763%20124.733C360.34%20124.733%20361.895%20124.359%20363.299%20123.641C363.811%20123.411%20364.253%20123.049%20364.58%20122.592C364.906%20122.135%20365.106%20121.6%20365.159%20121.041Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M363.266%20118.394C365.773%20119.848%20365.795%20122.199%20363.266%20123.652C361.862%20124.37%20360.307%20124.744%20358.73%20124.744C357.153%20124.744%20355.598%20124.37%20354.194%20123.652C351.687%20122.21%20351.676%20119.859%20354.194%20118.406C355.598%20117.689%20357.152%20117.314%20358.728%20117.312C360.305%20117.31%20361.86%20117.681%20363.266%20118.394Z'%20fill='white'/%3e%3cpath%20d='M362.267%20118.962C364.229%20120.097%20364.229%20121.914%20362.267%20123.05C361.175%20123.607%20359.966%20123.898%20358.74%20123.898C357.514%20123.898%20356.306%20123.607%20355.213%20123.05C353.263%20121.914%20353.251%20120.097%20355.213%20118.973C356.303%20118.409%20357.512%20118.114%20358.739%20118.112C359.966%20118.11%20361.175%20118.402%20362.267%20118.962Z'%20fill='%23713336'/%3e%3cpath%20d='M353.838%20121.482C353.838%20121.482%20350.629%20110.795%20349.495%20109.183C349.495%20107.774%20352.421%20109.467%20353.555%20112.124C354.509%20114.926%20355.233%20117.801%20355.721%20120.721C355.721%20120.721%20355.539%20107.014%20357.898%20103.993C359.406%20104.367%20358.465%20119.404%20358.272%20120.539C358.272%20120.539%20362.99%20110.511%20366.109%20108.433C367.527%20108.626%20361.573%20121.005%20361.573%20121.005C361.573%20121.005%20364.022%20116.371%20368.456%20115.52C366.949%20117.729%20365.309%20119.846%20363.546%20121.857C363.546%20121.857%20361.947%20124.321%20357.694%20123.844C357.705%20123.844%20354.779%20123.651%20353.838%20121.482Z'%20fill='%234CA15C'/%3e%3cpath%20d='M231.058%2046.2549L231.069%2048.4808L225.864%2051.4903L225.875%2056.2941L223.732%2057.532L223.721%2050.5023L231.058%2046.2549Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M231.075%2048.4773L251.965%2036.4053V49.6471V55.632L248.2%2057.8125L225.881%2070.7135V56.2907V51.4868L231.075%2048.4773ZM251.398%2055.2913L251.341%2037.4614L226.482%2051.8389V69.6687L251.353%2055.2913'%20fill='%23E6F4FF'/%3e%3cpath%20d='M254.342%2048.2988L254.364%2056.7481L248.24%2060.28V57.8157L252.006%2055.6352L251.994%2049.6503L254.342%2048.2988Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M252.028%2045.9031L273.95%2033.4109V54.9884L291.336%2066.7198'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M243.33%2056.6934H243.398H243.466L243.545%2056.6366H243.613H243.67L243.738%2056.5798V56.523H243.806L243.874%2056.4662L244.01%2056.33L244.067%2056.2732L244.124%2056.205H244.192V56.1369L244.248%2056.0687C244.319%2056.0064%20244.383%2055.938%20244.441%2055.8643L244.498%2055.7962V55.7281L244.555%2055.6599L244.611%2055.5918L244.679%2055.5236L244.906%2055.2284V55.1602L244.963%2055.0807V55.0126L245.224%2054.6265V54.547L245.28%2054.4788L245.564%2054.0019V53.9224V53.8315C245.643%2053.6952%20245.711%2053.5589%20245.779%2053.4227C244.948%2053.3118%20244.111%2053.2511%20243.273%2053.241C243.251%2053.2815%20243.224%2053.3195%20243.194%2053.3545C242.873%2053.8563%20242.447%2054.2825%20241.946%2054.6038C241.758%2054.7243%20241.547%2054.8047%20241.327%2054.8399C241.106%2054.8751%20240.881%2054.8643%20240.665%2054.8082H240.585C240.517%2054.899%20239.043%2056.6366%20238.215%2057.7268L238.295%2057.8063L238.431%2057.8972H238.487L238.646%2057.9653H238.703H238.873H239.882H240.018H240.268H240.415H240.472H240.744H240.824H240.88H240.971H241.062H241.152H241.22L243.33%2056.6934Z'%20fill='%234B5CC0'/%3e%3cpath%20d='M242.196%2053.4647C242.141%2053.5833%20242.076%2053.6972%20242.003%2053.8054C242.219%2053.8615%20242.445%2053.8723%20242.665%2053.8371C242.886%2053.802%20243.096%2053.7216%20243.284%2053.601C243.786%2053.2798%20244.211%2052.8536%20244.532%2052.3518C244.45%2052.3375%20244.375%2052.2977%20244.317%2052.2382C244.215%2051.9725%20244.154%2051.6931%20244.135%2051.4092L243.602%2052.1587C243.52%2052.2863%20243.412%2052.3948%20243.284%2052.4767C243.179%2052.5179%20243.061%2052.5179%20242.956%2052.4767L242.411%2052.3291C242.375%2052.7136%20242.303%2053.0938%20242.196%2053.4647Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M242.081%2050.0277C242.009%2050.0798%20241.928%2050.1183%20241.843%2050.1413L241.718%2051.0839V51.4019C241.712%2051.4623%20241.712%2051.5232%20241.718%2051.5836C241.737%2051.7642%20241.807%2051.9357%20241.919%2052.0783C242.032%2052.221%20242.182%2052.3289%20242.353%2052.3899L242.897%2052.5375C243.003%2052.5787%20243.12%2052.5787%20243.226%2052.5375C243.354%2052.4556%20243.462%2052.3471%20243.544%2052.2195L244.077%2051.47C244.405%2051.009%20244.63%2050.482%20244.734%2049.9255V49.6757V49.051L244.292%2047.6655C244.292%2047.6655%20244.224%2047.5633%20244.065%2047.6655C243.922%2047.7614%20243.798%2047.8849%20243.702%2048.0289C243.283%2048.6308%20243.238%2049.1646%20242.512%2049.6984C242.373%2049.8145%20242.229%2049.9244%20242.081%2050.0277Z'%20fill='%23CBDCEB'/%3e%3cpath%20d='M242.723%2046.82C242.015%2047.47%20241.55%2048.344%20241.408%2049.2958C241.369%2049.7306%20241.407%2050.169%20241.521%2050.5904C241.567%2050.784%20241.628%2050.9738%20241.703%2051.1582V51.0787L241.828%2050.1361C241.913%2050.1132%20241.994%2050.0747%20242.066%2050.0226C242.278%2049.8989%20242.482%2049.7623%20242.678%2049.6137C243.404%2049.0913%20243.449%2048.5462%20243.869%2047.9443C243.965%2047.8003%20244.088%2047.6768%20244.232%2047.5809C244.391%2047.4787%20244.459%2047.5809%20244.459%2047.5809L244.901%2048.9664C244.901%2048.9664%20244.901%2048.7847%20245.003%2048.5462C245.105%2048.3077%20245.128%2047.9784%20245.162%2047.7626C245.21%2047.2124%20245.057%2046.6633%20244.731%2046.2181C244.493%2045.991%20243.858%2046.0478%20243.222%2046.4112C243.043%2046.5301%20242.875%2046.6671%20242.723%2046.82Z'%20fill='%2396432A'/%3e%3cpath%20d='M244.567%2052.3549C244.597%2052.3199%20244.624%2052.2818%20244.647%2052.2413C245.489%2052.2518%20246.329%2052.3124%20247.164%2052.4231C247.842%2051.1363%20248.21%2049.7094%20248.242%2048.2552C248.242%2045.1776%20246.064%2043.9283%20243.376%2045.4842C241.967%2046.3993%20240.794%2047.6361%20239.954%2049.093C239.114%2050.5499%20238.632%2052.1854%20238.545%2053.8653C238.506%2054.4056%20238.587%2054.948%20238.783%2055.4528C238.979%2055.9577%20239.285%2056.4124%20239.679%2056.784L239.6%2056.7045C240.428%2055.5688%20241.868%2053.8767%20241.97%2053.7858H242.049C242.123%2053.6777%20242.187%2053.5637%20242.242%2053.4451C242.338%2053.0731%20242.399%2052.6929%20242.424%2052.3095C242.253%2052.2485%20242.103%2052.1405%20241.99%2051.9979C241.878%2051.8553%20241.808%2051.6838%20241.789%2051.5032C241.771%2051.5374%20241.743%2051.5652%20241.709%2051.5827C241.301%2051.7303%20241.085%2050.9581%20241.346%2050.6514L241.46%2050.5492H241.539C241.425%2050.1278%20241.387%2049.6894%20241.426%2049.2546C241.568%2048.3028%20242.033%2047.4289%20242.741%2046.7788C242.902%2046.6365%20243.077%2046.5109%20243.263%2046.4041C243.898%2046.0406%20244.533%2045.9839%20244.771%2046.211C245.098%2046.6562%20245.251%2047.2053%20245.202%2047.7555C245.202%2047.9713%20245.1%2048.2893%20245.043%2048.5391C245.068%2048.5068%20245.099%2048.4798%20245.134%2048.4596C245.171%2048.4482%20245.211%2048.4482%20245.248%2048.4596C245.508%2048.4596%20245.304%2049.493%20244.919%2049.7883H244.851C244.746%2050.3448%20244.521%2050.8718%20244.193%2051.3328C244.2%2051.6244%20244.258%2051.9126%20244.363%2052.1846C244.409%2052.2631%20244.482%2052.3233%20244.567%2052.3549Z'%20fill='%2358AFFB'/%3e%3cpath%20d='M237.782%2056.8159V57.7358L229.333%2062.6191V61.6993L237.782%2056.8159Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M233.597%2057.0879V58.0078L229.322%2060.4835V59.5523L233.597%2057.0879Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M230.977%2055.9329V56.8641L229.322%2057.8294V56.8868L230.977%2055.9329Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M237.782%2071.5825V72.5024L229.333%2077.3857V76.4659L237.782%2071.5825Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M233.597%2071.8525V72.7724L229.322%2075.2481V74.3169L233.597%2071.8525Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M230.977%2070.6956V71.6268L229.322%2072.5921V71.6495L230.977%2070.6956Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M237.782%2080.6665V81.5864L229.333%2086.4697V85.5498L237.782%2080.6665Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M233.597%2080.9365V81.8564L229.322%2084.3321V83.4009L233.597%2080.9365Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M230.977%2079.7815V80.7127L229.322%2081.678V80.7354L230.977%2079.7815Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M310.242%2026.2321L310.162%2053.4197L294.694%2044.4821L294.773%2017.2944L310.242%2026.2321Z'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M308.224%2027.3716L308.757%2027.0649L308.677%2054.2526L308.144%2054.5592L308.224%2027.3716Z'%20fill='%23BDC5CB'/%3e%3cpath%20d='M292.754%2018.4301L293.287%2018.1121L308.756%2027.0611L308.223%2027.3677L292.754%2018.4301Z'%20fill='white'/%3e%3cpath%20d='M308.222%2027.3698L308.143%2054.5574L292.674%2045.6198L292.753%2018.4321L308.222%2027.3698Z'%20fill='%23EAF1F7'/%3e%3cpath%20d='M297.045%2028.5267V28.7653C297.045%2028.7974%20297.037%2028.829%20297.021%2028.8568C297.005%2028.8847%20296.983%2028.9079%20296.955%2028.924C296.927%2028.9402%20296.896%2028.9487%20296.864%2028.9488C296.832%2028.9489%20296.8%2028.9405%20296.773%2028.9244L295.638%2028.2767C295.611%2028.2598%20295.588%2028.2364%20295.572%2028.2086C295.557%2028.1809%20295.548%2028.1496%20295.547%2028.1176V27.879C295.547%2027.847%20295.555%2027.8154%20295.571%2027.7875C295.587%2027.7597%20295.61%2027.7365%20295.637%2027.7203C295.665%2027.7042%20295.696%2027.6956%20295.728%2027.6956C295.76%2027.6955%20295.792%2027.7039%20295.819%2027.7199L296.954%2028.3676C296.982%2028.3837%20297.005%2028.4069%20297.021%2028.4349C297.037%2028.4628%20297.045%2028.4945%20297.045%2028.5267Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M300.612%2031.7523V31.9908C300.612%2032.0228%20300.604%2032.0544%20300.588%2032.0822C300.573%2032.1101%20300.55%2032.1332%20300.522%2032.1494C300.494%2032.1655%20300.463%2032.174%20300.431%2032.1741C300.399%2032.1742%20300.368%2032.1658%20300.34%2032.1498L295.645%2029.4583C295.617%2029.4422%20295.594%2029.419%20295.578%2029.391C295.562%2029.3631%20295.554%2029.3314%20295.554%2029.2993V29.0608C295.554%2029.0287%20295.562%2028.9972%20295.578%2028.9694C295.594%2028.9415%20295.616%2028.9183%20295.644%2028.9022C295.672%2028.8861%20295.703%2028.8775%20295.735%2028.8774C295.767%2028.8774%20295.799%2028.8858%20295.826%2028.9018L300.521%2031.5933C300.548%2031.6102%20300.571%2031.6336%20300.587%2031.6613C300.603%2031.6891%20300.611%2031.7204%20300.612%2031.7523Z'%20fill='%2394A3C0'/%3e%3cg%20opacity='0.53'%3e%3cpath%20d='M298.667%2033.0225V33.261C298.667%2033.293%20298.659%2033.3246%20298.643%2033.3524C298.627%2033.3803%20298.604%2033.4035%20298.576%2033.4196C298.549%2033.4357%20298.517%2033.4443%20298.485%2033.4444C298.453%2033.4444%20298.422%2033.436%20298.394%2033.42L295.639%2031.8301C295.61%2031.815%20295.586%2031.792%20295.57%2031.7638C295.554%2031.7357%20295.546%2031.7035%20295.548%2031.6711V31.4326C295.547%2031.4006%20295.556%2031.369%20295.571%2031.3412C295.587%2031.3133%20295.61%2031.2902%20295.638%2031.274C295.665%2031.2579%20295.697%2031.2493%20295.729%2031.2493C295.761%2031.2492%20295.792%2031.2576%20295.82%2031.2736L298.576%2032.8635C298.604%2032.8796%20298.627%2032.9028%20298.643%2032.9308C298.659%2032.9587%20298.667%2032.9904%20298.667%2033.0225Z'%20fill='%2394A3C0'/%3e%3c/g%3e%3cpath%20d='M299.875%2032.5257V32.7642C299.875%2032.7962%20299.867%2032.8278%20299.851%2032.8556C299.835%2032.8835%20299.813%2032.9066%20299.785%2032.9228C299.757%2032.9389%20299.726%2032.9475%20299.694%2032.9475C299.662%2032.9476%20299.63%2032.9392%20299.603%2032.9232L295.645%2030.6519C295.617%2030.6358%20295.594%2030.6126%20295.578%2030.5847C295.562%2030.5567%20295.554%2030.525%20295.554%2030.4929V30.2544C295.554%2030.2223%20295.562%2030.1908%20295.578%2030.163C295.594%2030.1351%20295.616%2030.1119%20295.644%2030.0958C295.672%2030.0797%20295.703%2030.0711%20295.735%2030.071C295.767%2030.071%20295.799%2030.0794%20295.826%2030.0954L299.784%2032.3667C299.812%2032.3828%20299.835%2032.406%20299.851%2032.4339C299.867%2032.4619%20299.875%2032.4935%20299.875%2032.5257Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M297.045%2034.4908V34.7295C297.045%2034.7615%20297.037%2034.7931%20297.021%2034.8209C297.005%2034.8488%20296.983%2034.872%20296.955%2034.8881C296.927%2034.9043%20296.896%2034.9128%20296.864%2034.9129C296.832%2034.913%20296.8%2034.9046%20296.773%2034.8885L295.638%2034.2408C295.611%2034.2239%20295.588%2034.2005%20295.572%2034.1727C295.557%2034.145%20295.548%2034.1137%20295.547%2034.0817V33.8431C295.547%2033.8111%20295.555%2033.7795%20295.571%2033.7516C295.587%2033.7238%20295.61%2033.7006%20295.637%2033.6844C295.665%2033.6683%20295.696%2033.6597%20295.728%2033.6597C295.76%2033.6596%20295.792%2033.668%20295.819%2033.684L296.954%2034.3317C296.982%2034.3478%20297.005%2034.371%20297.021%2034.399C297.037%2034.4269%20297.045%2034.4586%20297.045%2034.4908Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M300.612%2037.7145V37.9529C300.612%2037.985%20300.604%2038.0165%20300.588%2038.0444C300.573%2038.0722%20300.55%2038.0954%20300.522%2038.1115C300.494%2038.1277%20300.463%2038.1362%20300.431%2038.1363C300.399%2038.1363%20300.368%2038.128%20300.34%2038.1119L295.645%2035.4204C295.617%2035.4043%20295.594%2035.3811%20295.578%2035.3532C295.562%2035.3253%20295.554%2035.2936%20295.554%2035.2614V35.0229C295.554%2034.9909%20295.562%2034.9594%20295.578%2034.9315C295.594%2034.9037%20295.616%2034.8805%20295.644%2034.8644C295.672%2034.8482%20295.703%2034.8397%20295.735%2034.8396C295.767%2034.8395%20295.799%2034.8479%20295.826%2034.8639L300.521%2037.5555C300.548%2037.5724%20300.571%2037.5958%20300.587%2037.6235C300.603%2037.6513%20300.611%2037.6825%20300.612%2037.7145Z'%20fill='%2394A3C0'/%3e%3cg%20opacity='0.53'%3e%3cpath%20d='M298.667%2038.9906V39.229C298.667%2039.2611%20298.659%2039.2926%20298.643%2039.3205C298.627%2039.3483%20298.604%2039.3715%20298.576%2039.3876C298.549%2039.4038%20298.517%2039.4123%20298.485%2039.4124C298.453%2039.4125%20298.422%2039.404%20298.394%2039.388L295.639%2037.7981C295.61%2037.783%20295.586%2037.76%20295.57%2037.7319C295.554%2037.7037%20295.546%2037.6715%20295.548%2037.6391V37.4006C295.547%2037.3686%20295.556%2037.3371%20295.571%2037.3092C295.587%2037.2814%20295.61%2037.2582%20295.638%2037.242C295.665%2037.2259%20295.697%2037.2174%20295.729%2037.2173C295.761%2037.2172%20295.792%2037.2256%20295.82%2037.2416L298.576%2038.8316C298.604%2038.8477%20298.627%2038.8708%20298.643%2038.8988C298.659%2038.9267%20298.667%2038.9584%20298.667%2038.9906Z'%20fill='%2394A3C0'/%3e%3c/g%3e%3cpath%20d='M299.875%2038.4879V38.7264C299.875%2038.7584%20299.867%2038.7899%20299.851%2038.8178C299.835%2038.8456%20299.813%2038.8688%20299.785%2038.8849C299.757%2038.9011%20299.726%2038.9096%20299.694%2038.9097C299.662%2038.9098%20299.63%2038.9014%20299.603%2038.8853L295.645%2036.614C295.617%2036.5979%20295.594%2036.5747%20295.578%2036.5468C295.562%2036.5189%20295.554%2036.4872%20295.554%2036.455V36.2165C295.554%2036.1845%20295.562%2036.153%20295.578%2036.1251C295.594%2036.0973%20295.616%2036.0741%20295.644%2036.0579C295.672%2036.0418%20295.703%2036.0333%20295.735%2036.0332C295.767%2036.0331%20295.799%2036.0415%20295.826%2036.0576L299.784%2038.3289C299.812%2038.345%20299.835%2038.3682%20299.851%2038.3961C299.867%2038.424%20299.875%2038.4557%20299.875%2038.4879Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M316.193%2026.9705H314.492V28.6739H316.193V26.9705Z'%20fill='white'/%3e%3cpath%20d='M321.292%2029.8127H317.323V33.7876H321.292V29.8127Z'%20fill='white'/%3e%3cpath%20d='M525.999%20135.142H524.298V136.845H525.999V135.142Z'%20fill='white'/%3e%3cpath%20d='M531.102%20137.982H527.133V141.957H531.102V137.982Z'%20fill='white'/%3e%3cpath%20d='M625.797%200H624.096V1.70349H625.797V0Z'%20fill='white'/%3e%3cpath%20d='M630.903%202.83838H626.934V6.81319H630.903V2.83838Z'%20fill='white'/%3e%3cpath%20d='M541.221%20108.171H539.52V109.875H541.221V108.171Z'%20fill='white'/%3e%3cpath%20d='M546.324%20111.01H542.354V114.984H546.324V111.01Z'%20fill='white'/%3e%3cpath%20d='M394.448%20207.254H392.747V208.958H394.448V207.254Z'%20fill='white'/%3e%3cpath%20d='M399.547%20210.095H395.578V214.07H399.547V210.095Z'%20fill='white'/%3e%3cpath%20d='M81.4377%20163.34H79.7366V165.044H81.4377V163.34Z'%20fill='white'/%3e%3cpath%20d='M86.5408%20166.177H82.5715V170.152H86.5408V166.177Z'%20fill='white'/%3e%3cpath%20d='M195.978%20272.556H194.277V274.26H195.978V272.556Z'%20fill='white'/%3e%3cpath%20d='M201.082%20275.397H197.112V279.372H201.082V275.397Z'%20fill='white'/%3e%3cpath%20d='M609.762%20152.212V153.132L601.313%20158.016V157.096L609.762%20152.212Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M605.581%20152.484V153.404L601.306%20155.88V154.949L605.581%20152.484Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M602.957%20151.329V152.26L601.301%20153.226L601.29%20152.283L602.957%20151.329Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M401.858%20174.723V175.654L393.409%20180.537V179.606L401.858%20174.723Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M397.677%20174.997V175.928L393.401%20178.392V177.472L397.677%20174.997Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M395.057%20173.847V174.779L393.402%20175.733L393.39%20174.801L395.057%20173.847Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M518.674%20137.212C520.036%20138.1%20521.17%20139.297%20521.984%20140.706C522.797%20142.115%20523.268%20143.696%20523.358%20145.321V152.35C523.358%20155.326%20521.237%20156.53%20518.651%20155.031L512.255%20151.34L509.431%20153.679V149.716L504.804%20147.036C503.443%20146.148%20502.31%20144.95%20501.498%20143.541C500.687%20142.132%20500.218%20140.551%20500.132%20138.927V131.897C500.132%20128.922%20502.252%20127.718%20504.838%20129.217L518.674%20137.212ZM522.904%20152.101V145.082C522.828%20143.603%20522.402%20142.163%20521.663%20140.88C520.924%20139.597%20519.892%20138.507%20518.651%20137.7L504.815%20129.751C502.468%20128.388%20500.551%20129.49%20500.54%20132.192V139.222C500.623%20140.698%20501.051%20142.135%20501.789%20143.415C502.528%20144.695%20503.557%20145.784%20504.793%20146.593L509.851%20149.511V152.589L512.051%20150.783L518.64%20154.588C520.999%20155.95%20522.915%20154.86%20522.915%20152.146'%20fill='white'/%3e%3cpath%20d='M509.963%20136.258V136.86C509.962%20136.94%20509.939%20137.019%20509.898%20137.088C509.857%20137.157%20509.799%20137.215%20509.73%20137.255C509.66%20137.295%20509.581%20137.316%20509.501%20137.316C509.421%20137.317%20509.341%20137.296%20509.271%20137.257L506.436%20135.622C506.367%20135.582%20506.309%20135.524%20506.269%20135.454C506.229%20135.384%20506.209%20135.305%20506.209%20135.224V134.622C506.211%20134.542%20506.233%20134.463%20506.274%20134.394C506.315%20134.325%20506.373%20134.268%20506.443%20134.228C506.513%20134.187%20506.591%20134.166%20506.672%20134.166C506.752%20134.165%20506.831%20134.186%20506.901%20134.225L509.725%20135.86C509.797%20135.899%20509.857%20135.956%20509.899%20136.026C509.94%20136.096%20509.963%20136.176%20509.963%20136.258Z'%20fill='%23F9FBFC'/%3e%3cpath%20d='M518.915%20144.377V144.979C518.914%20145.059%20518.891%20145.138%20518.85%20145.207C518.809%20145.276%20518.751%20145.334%20518.682%20145.374C518.612%20145.414%20518.533%20145.435%20518.453%20145.436C518.373%20145.436%20518.293%20145.416%20518.223%20145.376L506.44%20138.563C506.368%20138.525%20506.307%20138.468%20506.265%20138.397C506.223%20138.327%20506.201%20138.247%20506.202%20138.165V137.563C506.204%20137.483%20506.226%20137.404%20506.267%20137.335C506.308%20137.266%20506.366%20137.208%20506.436%20137.168C506.505%20137.128%20506.584%20137.107%20506.664%20137.106C506.745%20137.106%20506.824%20137.126%20506.894%20137.166L518.688%20143.98C518.756%20144.021%20518.813%20144.08%20518.852%20144.149C518.892%20144.219%20518.914%20144.297%20518.915%20144.377Z'%20fill='%23F9FBFC'/%3e%3cg%20opacity='0.53'%3e%3cpath%20d='M514.066%20147.566V148.168C514.066%20148.248%20514.046%20148.327%20514.006%20148.396C513.967%20148.466%20513.91%20148.524%20513.841%20148.564C513.772%20148.605%20513.693%20148.626%20513.613%20148.626C513.533%20148.626%20513.454%20148.605%20513.385%20148.565L506.445%20144.579C506.372%20144.541%20506.312%20144.484%20506.269%20144.414C506.227%20144.344%20506.206%20144.263%20506.206%20144.182V143.58C506.208%20143.499%20506.23%20143.421%20506.271%20143.351C506.312%20143.282%20506.37%20143.225%20506.44%20143.185C506.51%20143.145%20506.588%20143.124%20506.669%20143.123C506.749%20143.123%20506.828%20143.143%20506.898%20143.182L513.828%20147.157C513.9%20147.198%20513.96%20147.257%20514.002%20147.329C514.044%20147.401%20514.066%20147.483%20514.066%20147.566Z'%20fill='%23F9FBFC'/%3e%3c/g%3e%3cpath%20d='M517.097%20146.319V146.921C517.095%20147.001%20517.073%20147.08%20517.032%20147.149C516.991%20147.218%20516.933%20147.276%20516.863%20147.316C516.793%20147.356%20516.715%20147.377%20516.634%20147.377C516.554%20147.378%20516.475%20147.357%20516.405%20147.318L506.448%20141.64C506.375%20141.602%20506.314%20141.545%20506.272%20141.475C506.23%20141.405%20506.209%20141.324%20506.209%20141.242V140.641C506.211%20140.56%20506.233%20140.481%20506.274%20140.412C506.315%20140.343%20506.373%20140.286%20506.443%20140.246C506.513%20140.206%20506.591%20140.184%20506.672%20140.184C506.752%20140.183%20506.831%20140.204%20506.901%20140.243L516.87%20145.921C516.939%20145.962%20516.997%20146.02%20517.037%20146.089C517.077%20146.159%20517.097%20146.238%20517.097%20146.319Z'%20fill='%23F9FBFC'/%3e%3cpath%20d='M284.927%2030.6317C286.323%2031.5387%20287.484%2032.7638%20288.316%2034.2068C289.148%2035.6497%20289.627%2037.2695%20289.713%2038.9333C289.713%2041.9883%20287.558%2043.2148%20284.904%2041.6816C283.508%2040.7745%20282.345%2039.5496%20281.512%2038.1069C280.678%2036.6641%20280.197%2035.0444%20280.107%2033.38C280.119%2030.3818%20282.273%2029.0872%20284.927%2030.6317Z'%20stroke='%23E6F4FF'%20stroke-width='0.75'%20stroke-miterlimit='10'/%3e%3cpath%20d='M286.657%2034.6392L287.689%2036.4222L283.754%2038.6708L281.837%2035.3546L282.869%2034.7641L283.754%2036.2972L286.657%2034.6392Z'%20fill='white'/%3e%3cpath%20d='M605.057%2054.7488L606.134%2057.6788L609.071%2058.769L606.134%2059.8592L605.057%2062.7892L603.968%2059.8592L601.031%2058.769L603.968%2057.6788L605.057%2054.7488Z'%20fill='white'/%3e%3cpath%20d='M618.664%2045.6648L619.742%2048.5948L622.679%2049.685L619.742%2050.7753L618.664%2053.7052L617.575%2050.7753L614.638%2049.685L617.575%2048.5948L618.664%2045.6648Z'%20fill='white'/%3e%3cpath%20d='M628.591%2059.0103L629.362%2061.1112L631.472%2061.8948L629.362%2062.6784L628.591%2064.7794L627.809%2062.6784L625.699%2061.8948L627.809%2061.1112L628.591%2059.0103Z'%20fill='white'/%3e%3cpath%20d='M384.006%20161.057L391.899%20156.435'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M352.2%20179.716L380.563%20163.078'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M352.575%20180.809C352.575%20181.261%20352.44%20181.702%20352.189%20182.076C351.937%20182.451%20351.579%20182.742%20351.161%20182.912C350.744%20183.082%20350.285%20183.124%20349.843%20183.032C349.402%20182.939%20348.998%20182.717%20348.683%20182.394C348.368%20182.07%20348.157%20181.66%20348.076%20181.216C347.995%20180.772%20348.048%20180.314%20348.228%20179.9C348.409%20179.486%20348.708%20179.135%20349.088%20178.892C349.469%20178.65%20349.913%20178.526%20350.364%20178.538C350.955%20178.552%20351.518%20178.798%20351.931%20179.223C352.344%20179.647%20352.575%20180.216%20352.575%20180.809Z'%20stroke='%23E6F4FF'%20stroke-miterlimit='10'/%3e%3cpath%20d='M559.788%2027.6204L567.681%2022.9983'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M527.982%2046.2785L556.346%2029.6411'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M528.358%2047.4156C528.358%2047.8648%20528.224%2048.304%20527.975%2048.6775C527.726%2049.051%20527.372%2049.3421%20526.957%2049.514C526.543%2049.6859%20526.087%2049.7309%20525.647%2049.6433C525.207%2049.5556%20524.803%2049.3393%20524.486%2049.0217C524.168%2048.704%20523.952%2048.2993%20523.865%2047.8587C523.777%2047.4181%20523.822%2046.9614%20523.994%2046.5464C524.166%2046.1314%20524.456%2045.7767%20524.829%2045.5271C525.202%2045.2775%20525.641%2045.1443%20526.089%2045.1443C526.691%2045.1443%20527.268%2045.3836%20527.693%2045.8095C528.119%2046.2355%20528.358%2046.8132%20528.358%2047.4156Z'%20stroke='%23E6F4FF'%20stroke-miterlimit='10'/%3e%3cpath%20d='M641.44%2021.9437L649.333%2017.3215'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M609.635%2040.5979L637.999%2023.9604'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M610.014%2041.733C610.014%2042.1822%20609.881%2042.6214%20609.632%2042.9949C609.383%2043.3684%20609.028%2043.6595%20608.614%2043.8314C608.199%2044.0033%20607.743%2044.0483%20607.303%2043.9607C606.863%2043.873%20606.459%2043.6567%20606.142%2043.3391C605.825%2043.0214%20605.609%2042.6167%20605.521%2042.1761C605.434%2041.7355%20605.479%2041.2788%20605.65%2040.8638C605.822%2040.4488%20606.113%2040.094%20606.486%2039.8445C606.859%2039.5949%20607.297%2039.4617%20607.746%2039.4617C608.347%2039.4617%20608.924%2039.701%20609.35%2040.1269C609.775%2040.5529%20610.014%2041.1306%20610.014%2041.733Z'%20stroke='%23E6F4FF'%20stroke-miterlimit='10'/%3e%3cpath%20d='M10.4121%20314.616L2.53021%20309.993'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M42.2219%20333.27L13.8471%20316.633'%20stroke='%23E6F4FF'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M41.8344%20334.359C41.8344%20334.808%2041.9675%20335.247%2042.2167%20335.621C42.4659%20335.994%2042.8202%20336.285%2043.2346%20336.457C43.6491%20336.629%2044.1051%20336.674%2044.5451%20336.586C44.9851%20336.499%2045.3892%20336.282%2045.7065%20335.965C46.0237%20335.647%2046.2397%20335.242%2046.3272%20334.802C46.4147%20334.361%2046.3698%20333.905%2046.1981%20333.49C46.0265%20333.074%2045.7357%20332.72%2045.3627%20332.47C44.9897%20332.221%2044.5512%20332.087%2044.1026%20332.087C43.5011%20332.087%2042.9241%20332.327%2042.4988%20332.753C42.0734%20333.179%2041.8344%20333.756%2041.8344%20334.359Z'%20stroke='%23E6F4FF'%20stroke-miterlimit='10'/%3e%3cpath%20d='M537.046%20165.261V166.181L545.495%20171.075V170.144L537.046%20165.261Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M541.227%20165.537V166.457L545.502%20168.932V168.012L541.227%20165.537Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M543.852%20164.374V165.305L545.507%20166.27L545.519%20165.339L543.852%20164.374Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M544.63%20195.469C544.85%20195.797%20545.136%20196.075%20545.47%20196.287L545.663%20196.389C545.322%20196.264%20544.982%20196.105%20544.63%20195.935V195.469Z'%20fill='%23747878'/%3e%3cpath%20d='M544.5%20177.641L544%20177.322L544.114%20177.39L544.432%20177.595L544.5%20177.641Z'%20fill='%236C7070'/%3e%3cpath%20d='M544.209%20192.554L544.437%20192.668L544.209%20192.554Z'%20fill='%23747878'/%3e%3cpath%20d='M545.176%20193C545.002%20192.949%20544.817%20192.949%20544.642%20193V192.783C544.816%20192.865%20544.995%20192.937%20545.176%20193Z'%20fill='%23747878'/%3e%3cpath%20d='M545.292%20178.223L545.655%20178.53C545.299%20178.218%20544.919%20177.933%20544.521%20177.677L544.657%20177.768V177.564C544.834%20177.814%20545.048%20178.037%20545.292%20178.223Z'%20fill='%23747878'/%3e%3cpath%20d='M544.046%20174.202C544.273%20174.327%20544.488%20174.463%20544.693%20174.599V175.065C544.513%20175.142%20544.364%20175.276%20544.268%20175.447C544.172%20175.617%20544.134%20175.814%20544.16%20176.008C544.185%20176.567%20544.37%20177.107%20544.693%20177.563V177.768C544.486%20177.618%20544.27%20177.482%20544.046%20177.359C540.44%20175.269%20537.491%20176.95%20537.48%20181.118C537.595%20183.393%20538.247%20185.609%20539.382%20187.583C540.518%20189.557%20542.104%20191.233%20544.012%20192.475L544.216%20192.588L544.454%20192.713L544.659%20192.804V193.02C544.479%20193.095%20544.329%20193.226%20544.231%20193.394C544.133%20193.562%20544.092%20193.758%20544.114%20193.951C544.137%20194.51%20544.323%20195.051%20544.647%20195.507V195.972L544.466%20195.882L544.001%20195.632C538.863%20192.656%20534.724%20185.411%20534.735%20179.562C534.747%20173.713%20538.92%20171.204%20544.046%20174.202Z'%20stroke='%23E6F4FF'%20stroke-width='0.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M545.544%20175.222L545.725%20175.347H545.805C549.516%20178.466%20552.069%20182.747%20553.051%20187.498C553.056%20187.54%20553.056%20187.582%20553.051%20187.623V187.759C553.055%20187.805%20553.055%20187.85%20553.051%20187.896C553.054%20187.941%20553.054%20187.987%20553.051%20188.032V188.168C553.049%20188.214%20553.049%20188.259%20553.051%20188.305C553.051%20188.373%20553.051%20188.407%20553.051%20188.452C553.056%20188.547%20553.056%20188.642%20553.051%20188.736V188.861V190.837C553.048%20190.879%20553.048%20190.92%20553.051%20190.962C553.054%20191.004%20553.054%20191.045%20553.051%20191.087C553.06%20191.128%20553.06%20191.171%20553.051%20191.212C553.059%20191.253%20553.059%20191.295%20553.051%20191.337C553.051%20191.405%20553.051%20191.428%20553.051%20191.462C553.051%20191.496%20553.051%20191.553%20553.051%20191.575C553.051%20191.598%20553.051%20191.757%20553.051%20191.836C553.051%20191.916%20553.051%20191.916%20553.051%20191.95V192.064V192.177V192.279C553.049%20192.317%20553.049%20192.355%20553.051%20192.393V192.507C553.048%20192.544%20553.048%20192.582%20553.051%20192.62C553.047%20192.658%20553.047%20192.696%20553.051%20192.734C552.144%20196.141%20549.309%20197.628%20545.77%20196.356H545.702L545.51%20196.254C545.111%20195.994%20544.779%20195.644%20544.54%20195.232C544.302%20194.819%20544.164%20194.356%20544.137%20193.881C544.115%20193.687%20544.156%20193.492%20544.254%20193.324C544.352%20193.156%20544.502%20193.024%20544.682%20192.949C544.856%20192.899%20545.041%20192.899%20545.215%20192.949H545.283C546.17%20193.309%20547.152%20193.361%20548.073%20193.097H548.186H548.288H548.402L548.492%20193.04H548.594H548.685L548.787%20192.983L548.878%20192.927L548.98%20192.859L549.059%20192.79L549.15%20192.722L549.229%20192.643L549.32%20192.563L549.4%20192.484L549.479%20192.393L549.558%20192.302V192.245V192.177L549.626%20192.075L549.694%20191.973C549.721%20191.937%20549.743%20191.899%20549.762%20191.859L549.831%20191.746V191.643C549.854%20191.608%20549.873%20191.57%20549.887%20191.53C549.892%20191.488%20549.892%20191.446%20549.887%20191.405V191.28V191.155V191.019V190.894C549.884%20190.848%20549.884%20190.803%20549.887%20190.758V190.621C549.884%20190.576%20549.884%20190.53%20549.887%20190.485C549.89%20190.436%20549.89%20190.387%20549.887%20190.337C549.89%20190.284%20549.89%20190.231%20549.887%20190.178C549.892%20190.129%20549.892%20190.08%20549.887%20190.031C549.887%20190.031%20549.887%20189.929%20549.887%20189.883C549.887%20189.838%20549.887%20189.781%20549.887%20189.736C549.887%20189.69%20549.887%20189.622%20549.887%20189.565C549.887%20189.508%20549.887%20189.452%20549.887%20189.406C549.887%20189.361%20549.887%20189.293%20549.887%20189.236V189.065C549.887%20188.997%20549.887%20188.941%20549.887%20188.895C549.893%20188.838%20549.893%20188.781%20549.887%20188.725V188.554C549.894%20188.498%20549.894%20188.441%20549.887%20188.384C549.894%20188.324%20549.894%20188.263%20549.887%20188.202C549.894%20188.146%20549.894%20188.089%20549.887%20188.032C549.887%20187.953%20549.887%20187.896%20549.887%20187.839C549.887%20187.669%20549.887%20187.669%20549.887%20187.498C549.882%20187.438%20549.882%20187.377%20549.887%20187.317C549.883%20187.256%20549.883%20187.195%20549.887%20187.135V186.953C549.887%20186.76%20549.808%20186.59%20549.774%20186.408C549.767%20186.348%20549.767%20186.287%20549.774%20186.226L549.672%20185.863C548.932%20183.323%20547.554%20181.016%20545.668%20179.163L545.555%20179.049L545.419%20178.924L545.351%20178.856L545.271%20178.788L544.897%20178.47C544.665%20178.281%20544.463%20178.059%20544.296%20177.811C543.973%20177.354%20543.788%20176.814%20543.763%20176.255C543.737%20176.061%20543.775%20175.864%20543.872%20175.694C543.968%20175.524%20544.117%20175.39%20544.296%20175.313C544.472%20175.177%20544.684%20175.096%20544.906%20175.079C545.128%20175.063%20545.35%20175.113%20545.544%20175.222Z'%20fill='%2358AFFB'/%3e%3cpath%20d='M545.724%20175.349L545.543%20175.224C545.291%20175.06%20544.985%20175.003%20544.692%20175.065V174.61C544.998%20174.837%20545.395%20175.087%20545.724%20175.349Z'%20fill='%23747878'/%3e%3cpath%20d='M579.805%2062.4946V63.4145L571.356%2068.2978V67.378L579.805%2062.4946Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M575.616%2062.7666V63.6865L571.341%2066.1622V65.231L575.616%2062.7666Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M573%2061.6077V62.5389L571.344%2063.5042L571.333%2062.573L573%2061.6077Z'%20fill='%23E6F4FF'/%3e%3cpath%20d='M548.123%2073.3742L548.214%20102.413L564.726%2092.8622L564.646%2063.8347L548.123%2073.3742Z'%20stroke='%23E6F4FF'%20stroke-width='0.8'%20stroke-miterlimit='10'/%3e%3cpath%20d='M550.291%2074.5995L549.713%2074.2588L549.803%20103.298L550.37%20103.627L550.291%2074.5995Z'%20fill='%23BDC5CB'/%3e%3cpath%20d='M566.803%2065.049L566.236%2064.7083L549.713%2074.2591L550.291%2074.5998L566.803%2065.049Z'%20fill='white'/%3e%3cpath%20d='M550.291%2074.5985L550.371%20103.626L566.883%2094.075L566.803%2065.0476L550.291%2074.5985Z'%20fill='%23EAF1F7'/%3e%3cpath%20d='M561.945%2078.3853L561.957%2079.3051L553.496%2084.1998V83.2686L561.945%2078.3853Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M557.76%2078.6553L557.772%2079.5752L553.496%2082.0509V81.131L557.76%2078.6553Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M555.148%2077.4963L555.16%2078.4276L553.492%2079.3929V78.4616L555.148%2077.4963Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M561.945%2087.6621L561.957%2088.582L553.496%2093.4653V92.5454L561.945%2087.6621Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M557.76%2087.9321L557.772%2088.852L553.496%2091.3278V90.3965L557.76%2087.9321Z'%20fill='%2394A3C0'/%3e%3cpath%20d='M555.148%2086.7771L555.16%2087.7083L553.492%2088.6736V87.731L555.148%2086.7771Z'%20fill='%2394A3C0'/%3e%3c/svg%3e`,Av=`data:image/svg+xml,%3csvg%20width='22'%20height='32'%20viewBox='0%200%2022%2032'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M19.1593%2014.3814C17.2069%2015.0272%205.56056%2018.3882%205.56056%2018.3882C4.03868%2021.4659%2011.1005%2023.4995%2011.1005%2023.4995C6.62739%2019.7609%2013.9819%2017.901%2018.4833%2016.4868C23.7193%2014.8403%2020.7473%2012.4385%2020.7473%2012.4385C21.0173%2013.2089%2020.6906%2013.8716%2019.1574%2014.3776'%20fill='white'/%3e%3cpath%20d='M19.9428%2015.3237C18.6683%2015.7448%2014.2688%2016.9796%2010.7945%2018.3807C6.36106%2020.1763%2011.1004%2023.5014%2011.1004%2023.5014C6.62729%2019.7628%2013.9818%2017.903%2018.4832%2016.4887C23.7211%2014.8403%2020.7491%2012.4404%2020.7491%2012.4404C21.4477%2013.36%2021.476%2014.8177%2019.9428%2015.3237Z'%20fill='white'/%3e%3cpath%20d='M5.56915%2023.6885C8.14464%2026.9022%2013.0124%2030.0007%2015.7314%2031.5887C16.8794%2032.259%2018.3295%2032.0966%2019.3001%2031.1903C20.1007%2030.4425%2020.1422%2029.1869%2019.3945%2028.3863C19.2472%2028.2277%2019.0754%2028.0955%2018.8847%2027.9936C16.1657%2026.5321%2011.7624%2024.0756%208.74509%2021.923C4.09636%2018.6111%207.66693%2017.7822%207.66693%2017.7822C3.3392%2018.7414%202.58392%2019.9688%205.56915%2023.6828'%20fill='white'/%3e%3cpath%20d='M3.38919%2016.1084C-1.84676%2017.753%201.12525%2020.1567%201.12525%2020.1567C0.853355%2019.3844%201.1819%2018.7235%202.71511%2018.2175C4.67505%2017.5698%2016.312%2014.207%2016.312%2014.207C17.8357%2011.1292%2010.7739%209.09375%2010.7739%209.09375C15.2433%2012.8324%207.88875%2014.6941%203.38919%2016.1084Z'%20fill='white'/%3e%3cpath%20d='M3.38919%2016.1084C-1.84676%2017.753%201.12525%2020.1567%201.12525%2020.1567C0.426624%2019.2371%200.38886%2017.7794%201.92962%2017.2734C3.20604%2016.8523%207.60552%2015.6174%2011.0798%2014.2164C15.5114%2012.4207%2010.7739%209.09375%2010.7739%209.09375C15.2433%2012.8324%207.88875%2014.6941%203.38919%2016.1084Z'%20fill='white'/%3e%3cpath%20d='M2.57331%201.40596C1.77272%202.15368%201.72929%203.40933%202.47701%204.20992C2.62429%204.36853%202.79612%204.5007%202.98682%204.60266C5.70771%206.06412%2010.111%208.51877%2013.1283%2010.6732C17.777%2013.9851%2014.2065%2014.814%2014.2065%2014.814C18.5323%2013.8529%2019.2895%2012.6275%2016.3042%208.9134C13.7287%205.6997%208.86098%202.59929%206.1401%201.01321C4.99397%200.342905%203.54195%200.50529%202.57331%201.41162'%20fill='white'/%3e%3cg%20opacity='0.3'%3e%3cpath%20d='M15.6146%2014.4409C15.8714%2014.3635%2016.1093%2014.2823%2016.3264%2014.1973C16.4284%2014.0293%2016.4945%2013.8404%2016.519%2013.646C16.5473%2013.391%2016.5152%2013.1324%2016.4227%2012.8907C16.3377%2012.6622%2016.2207%2012.447%2016.0791%2012.2487C15.9431%2012.0523%2015.7921%2011.8692%2015.6278%2011.6973C15.303%2011.365%2014.9518%2011.0572%2014.5798%2010.7778C13.8434%2010.2264%2013.0655%209.72607%2012.2895%209.23325C11.5134%208.74232%2010.7223%208.27405%209.92923%207.81333C8.34315%206.89378%206.73441%206.00633%205.13134%205.12077L3.93045%204.45235C3.52826%204.24087%203.17328%203.95009%202.88817%203.597C2.75033%203.41951%202.65026%203.2137%202.5955%202.99467C2.54263%202.77564%202.55396%202.54528%202.6276%202.33191C2.70312%202.11855%202.82019%201.92218%202.97125%201.75413C3.04677%201.66916%203.12797%201.58797%203.21294%201.51055L3.34133%201.40103L3.40931%201.34817L3.44518%201.32173L3.46218%201.30851C3.46218%201.30851%203.47351%201.31795%203.46218%201.29152C3.45085%201.26509%203.46218%201.29152%203.44707%201.28019H3.43763L3.42064%201.29341L3.38476%201.31984L3.31679%201.37082L3.18272%201.48034C3.09587%201.55587%203.01279%201.63706%202.93537%201.72392C2.77488%201.89385%202.65026%202.094%202.56717%202.31303C2.48787%202.53584%202.47276%202.77564%202.52375%203.006C2.5785%203.23447%202.67858%203.44783%202.82019%203.63476C3.1072%204.00107%203.46595%204.30507%203.8738%204.52977L5.06525%205.21707C6.657%206.13662%208.24874%207.03728%209.81783%207.9776C10.6014%208.44965%2011.3794%208.93303%2012.1479%209.43151C12.9145%209.92999%2013.6754%2010.4455%2014.3929%2010.9968C14.7498%2011.2725%2015.0821%2011.5765%2015.3918%2011.905C15.6977%2012.2166%2015.9375%2012.5867%2016.0998%2012.9926C16.1678%2013.1833%2016.1924%2013.3892%2016.1678%2013.5912C16.1376%2013.7876%2016.0564%2013.9745%2015.9299%2014.1293C15.8355%2014.2445%2015.7279%2014.3484%2015.607%2014.4371'%20fill='white'/%3e%3c/g%3e%3c/svg%3e`,jv=`data:image/svg+xml,%3csvg%20width='89'%20height='21'%20viewBox='0%200%2089%2021'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.4537%209.65056L5.6297%2017.2781H12.9309C13.4136%2017.243%2013.8916%2017.3924%2014.2685%2017.696C14.4166%2017.8312%2014.5335%2017.997%2014.6112%2018.1818C14.6889%2018.3667%2014.7255%2018.5662%2014.7185%2018.7666C14.7242%2018.9592%2014.6875%2019.1507%2014.6111%2019.3276C14.5346%2019.5045%2014.4202%2019.6624%2014.2759%2019.7902C13.9792%2020.0539%2013.5309%2020.1858%2012.9309%2020.1858H2.83086C2.12127%2020.1858%201.59463%2020.0325%201.24107%2019.7209C1.0652%2019.5615%200.926946%2019.3651%200.836296%2019.1457C0.745646%2018.9264%200.704869%2018.6896%200.716905%2018.4526C0.728826%2018.0998%200.858518%2017.7612%201.0853%2017.4908C1.3309%2017.1611%201.84023%2016.5677%202.61329%2015.7106C3.43744%2014.8007%204.17918%2013.9766%204.83851%2013.2381C5.50608%2012.4964%206.12667%2011.8115%206.70028%2011.1687C7.27389%2010.5258%207.74861%209.98434%208.1269%209.5393C8.50519%209.09426%208.80683%208.71103%209.03429%208.39208H3.5009C2.9168%208.41478%202.33277%208.34553%201.77017%208.18686C1.37787%208.0517%201.18173%207.69237%201.18173%207.10887C1.17386%206.91572%201.2098%206.7233%201.28688%206.54603C1.36395%206.36876%201.48015%206.21123%201.62677%206.08526C1.98683%205.80907%202.43488%205.6729%202.88773%205.70203H11.4425C12.0692%205.66774%2012.6949%205.78744%2013.2647%206.05065C13.6867%206.28306%2013.8985%206.69926%2013.9001%207.29924C13.8974%207.51195%2013.8555%207.72233%2013.7765%207.91984C13.7093%208.10655%2013.6179%208.28361%2013.5045%208.44647C13.4032%208.58246%2013.2573%208.74811%2013.0941%208.94097C12.9309%209.13382%2012.7084%209.37118%2012.4537%209.64562'%20fill='white'/%3e%3cpath%20d='M17.2637%203.64451C16.7764%203.65633%2016.3022%203.4862%2015.9335%203.16732C15.7567%202.99393%2015.6165%202.78678%2015.5212%202.55816C15.4259%202.32955%2015.3776%202.08413%2015.3789%201.83647C15.3803%201.58881%2015.4314%201.34394%2015.5292%201.11641C15.6271%200.888871%2015.7696%200.683299%2015.9483%200.511889C16.3048%200.178623%2016.7758%20-0.00464918%2017.2637%208.96584e-05C17.7334%20-0.00408682%2018.1889%200.160906%2018.5469%200.464912C18.7373%200.632%2018.8868%200.84066%2018.9837%201.07475C19.0806%201.30884%2019.1223%201.56208%2019.1057%201.81488C19.1194%202.06527%2019.0778%202.31562%2018.9838%202.5481C18.8898%202.78058%2018.7457%202.98947%2018.5617%203.15991C18.2073%203.48319%2017.7434%203.65992%2017.2637%203.6544M19.1057%207.50404V18.2716C19.1057%2019.0134%2018.9301%2019.5821%2018.5741%2019.9628C18.4037%2020.15%2018.1948%2020.2981%2017.9618%2020.3972C17.7288%2020.4962%2017.4772%2020.5437%2017.2241%2020.5364C16.9723%2020.5445%2016.7219%2020.4961%2016.4913%2020.3947C16.2607%2020.2933%2016.0557%2020.1415%2015.8915%2019.9505C15.5503%2019.5598%2015.3797%2018.9986%2015.3797%2018.2716V7.60294C15.3797%206.86614%2015.5503%206.31066%2015.8915%205.93649C16.0602%205.75283%2016.2667%205.6078%2016.4967%205.51136C16.7267%205.41491%2016.9749%205.36933%2017.2241%205.37771C17.4758%205.37068%2017.7261%205.41681%2017.9587%205.5131C18.1913%205.60938%2018.401%205.75366%2018.5741%205.93649C18.9496%206.3654%2019.1406%206.92517%2019.1057%207.49415'%20fill='white'/%3e%3cpath%20d='M24.8301%207.43997V7.88996C25.3957%207.10255%2026.1308%206.45199%2026.9811%205.98616C27.8125%205.56827%2028.7334%205.3595%2029.6637%205.37793C30.5817%205.36311%2031.4882%205.58356%2032.2969%206.0183C33.0505%206.42702%2033.6562%207.06291%2034.0276%207.83557C34.2757%208.29687%2034.4375%208.79962%2034.5048%209.31905C34.5864%209.98918%2034.6227%2010.664%2034.6136%2011.3391V18.262C34.6136%2019.0087%2034.443%2019.5724%2034.1018%2019.9531C33.9362%2020.141%2033.731%2020.2899%2033.501%2020.3891C33.271%2020.4883%2033.0219%2020.5353%2032.7716%2020.5268C32.5172%2020.5353%2032.2641%2020.4872%2032.0306%2020.3858C31.7971%2020.2845%2031.5891%2020.1325%2031.4217%2019.9408C31.0755%2019.5501%2030.9024%2018.9889%2030.9024%2018.262V12.0511C30.9024%2010.8149%2030.7318%209.88524%2030.3906%209.23251C30.0494%208.57978%2029.3695%208.25836%2028.3508%208.25836C27.6969%208.25479%2027.0594%208.46296%2026.5336%208.85175C25.9783%209.26214%2025.5602%209.83104%2025.3344%2010.4836C25.1515%2011.0374%2025.06%2012.0742%2025.06%2013.594V18.262C25.06%2019.0169%2024.8853%2019.5831%2024.5358%2019.9606C24.3635%2020.1468%2024.153%2020.2938%2023.9188%2020.3915C23.6846%2020.4892%2023.4321%2020.5353%2023.1784%2020.5268C22.9279%2020.5335%2022.679%2020.4845%2022.4498%2020.3831C22.2206%2020.2818%2022.0168%2020.1307%2021.8532%2019.9408C21.5071%2019.5501%2021.334%2018.9889%2021.334%2018.262V7.49436C21.334%206.78477%2021.4897%206.25813%2021.7988%205.90457C21.958%205.72826%2022.1543%205.58954%2022.3737%205.49845C22.5931%205.40737%2022.8299%205.3662%2023.0672%205.37793C23.3787%205.37314%2023.6856%205.4535%2023.9548%205.61034C24.2293%205.77571%2024.45%206.01702%2024.5902%206.30511C24.7616%206.6584%2024.8463%207.04742%2024.8375%207.43997'%20fill='white'/%3e%3cpath%20d='M40.2031%207.43997V7.88996C40.7688%207.10255%2041.5038%206.45199%2042.3542%205.98616C43.1847%205.56829%2044.1047%205.3595%2045.0343%205.37793C45.9531%205.36279%2046.8605%205.58325%2047.67%206.0183C48.4231%206.4277%2049.0285%207.06339%2049.4007%207.83557C49.6477%208.29734%2049.8093%208.79988%2049.8779%209.31905C49.9582%209.98929%2049.9945%2010.6641%2049.9867%2011.3391V18.262C49.9867%2019.0087%2049.8161%2019.5724%2049.4749%2019.9531C49.3093%2020.141%2049.1041%2020.2899%2048.8741%2020.3891C48.6441%2020.4883%2048.395%2020.5353%2048.1447%2020.5268C47.89%2020.5347%2047.6367%2020.4862%2047.403%2020.3849C47.1692%2020.2836%2046.9606%2020.132%2046.7922%2019.9408C46.4461%2019.5501%2046.2755%2018.9889%2046.2755%2018.262V12.0511C46.2755%2010.8149%2046.1049%209.88524%2045.7637%209.23251C45.4225%208.57978%2044.7401%208.25836%2043.7214%208.25836C43.0683%208.25514%2042.4317%208.4633%2041.9066%208.85175C41.3499%209.26122%2040.9308%209.83035%2040.705%2010.4836C40.5237%2011.0374%2040.433%2012.0742%2040.433%2013.594V18.262C40.433%2019.0169%2040.2575%2019.5831%2039.9064%2019.9606C39.7344%2020.1472%2039.524%2020.2945%2039.2897%2020.3922C39.0554%2020.4899%2038.8027%2020.5358%2038.549%2020.5268C38.2989%2020.5332%2038.0505%2020.4839%2037.8217%2020.3826C37.5929%2020.2813%2037.3896%2020.1303%2037.2263%2019.9408C36.8801%2019.5501%2036.707%2018.9889%2036.707%2018.262V7.49436C36.707%206.78477%2036.8628%206.25813%2037.1719%205.90457C37.331%205.72826%2037.5274%205.58954%2037.7468%205.49845C37.9661%205.40737%2038.203%205.3662%2038.4402%205.37793C38.7517%205.37314%2039.0587%205.4535%2039.3279%205.61034C39.6023%205.77571%2039.823%206.01702%2039.9633%206.30511C40.1346%206.6584%2040.2194%207.04742%2040.2105%207.43997'%20fill='white'/%3e%3cpath%20d='M62.5909%2013.8682H55.3045C55.2961%2014.6445%2055.4706%2015.4119%2055.8138%2016.1083C56.0972%2016.7002%2056.5443%2017.1985%2057.1021%2017.5442C57.6599%2017.8899%2058.3051%2018.0686%2058.9613%2018.059C59.3736%2018.0634%2059.7846%2018.0109%2060.1827%2017.9033C60.5618%2017.7916%2060.9225%2017.625%2061.2533%2017.4088C61.5893%2017.1934%2061.9091%2016.9538%2062.2101%2016.6918C62.5002%2016.4363%2062.8777%2016.091%2063.3425%2015.6558C63.5761%2015.4765%2063.8671%2015.3885%2064.1609%2015.4086C64.4983%2015.3935%2064.8292%2015.5056%2065.0881%2015.7226C65.2092%2015.835%2065.304%2015.973%2065.3656%2016.1264C65.4271%2016.2799%2065.454%2016.4451%2065.4441%2016.6102C65.4164%2017.0309%2065.2801%2017.4372%2065.0485%2017.7895C64.736%2018.2937%2064.3308%2018.7342%2063.8543%2019.0876C63.2467%2019.5398%2062.5682%2019.8882%2061.8467%2020.1186C60.9495%2020.4048%2060.0116%2020.5426%2059.0701%2020.5266C56.6767%2020.5266%2054.8158%2019.8442%2053.4872%2018.4794C52.1587%2017.1146%2051.4944%2015.2635%2051.4944%2012.9262C51.4863%2011.8837%2051.6534%2010.8473%2051.9889%209.86033C52.2925%208.96156%2052.7819%208.1368%2053.4254%207.43978C54.0703%206.75306%2054.8635%206.22281%2055.7446%205.88954C56.7214%205.5203%2057.7588%205.33747%2058.803%205.35054C60.1121%205.31362%2061.4066%205.63234%2062.5488%206.27277C63.5369%206.83149%2064.3482%207.65648%2064.8903%208.65376C65.3902%209.56343%2065.6569%2010.5828%2065.6666%2011.6207C65.6666%2012.5586%2065.3988%2013.166%2064.8631%2013.4429C64.3241%2013.7199%2063.57%2013.8583%2062.5958%2013.8583M55.3094%2011.7443H62.0642C61.9736%2010.4718%2061.6299%209.5183%2061.0332%208.8837C60.7303%208.56817%2060.3638%208.32058%2059.9581%208.15733C59.5523%207.99408%2059.1164%207.91889%2058.6794%207.93674C58.2515%207.92332%2057.8257%208.00227%2057.431%208.16824C57.0364%208.33422%2056.6821%208.5833%2056.3924%208.89853C55.7957%209.53808%2055.4347%2010.4867%2055.3094%2011.7443Z'%20fill='white'/%3e%3cpath%20d='M75.0025%2018.9842L72.3001%2015.0135L69.5309%2018.9842C69.2359%2019.4182%2068.8925%2019.8172%2068.5073%2020.1735C68.21%2020.4156%2067.8347%2020.5412%2067.4516%2020.5271C67.0071%2020.5377%2066.5751%2020.3796%2066.2425%2020.0845C66.0908%2019.9616%2065.9679%2019.8069%2065.8825%2019.6313C65.797%2019.4557%2065.7511%2019.2635%2065.748%2019.0683C65.748%2018.676%2066.0027%2018.1164%2066.512%2017.3895L69.882%2012.5583L66.8928%208.53063C66.3736%207.86801%2066.1164%207.2944%2066.1164%206.7999C66.1177%206.61148%2066.1597%206.42556%2066.2395%206.25486C66.3193%206.08417%2066.435%205.93273%2066.5788%205.81092C66.9148%205.51876%2067.3505%205.36733%2067.7952%205.38813C68.1892%205.37419%2068.5745%205.50527%2068.8782%205.75652C69.2554%206.10401%2069.5921%206.49301%2069.882%206.91611L72.2976%2010.2193L74.6465%206.91611C74.9393%206.48057%2075.2857%206.08351%2075.6775%205.73427C75.9802%205.4913%2076.3601%205.36497%2076.7481%205.37823C77.1925%205.36149%2077.6274%205.5094%2077.9695%205.79361C78.1225%205.9126%2078.2465%206.06477%2078.3321%206.23866C78.4178%206.41254%2078.4629%206.6036%2078.464%206.79743C78.4633%207.08041%2078.3955%207.3592%2078.2661%207.61087C78.0919%207.93536%2077.8883%208.24322%2077.6579%208.53063L74.6489%2012.5583L78.0189%2017.3895C78.5447%2018.1444%2078.8084%2018.7131%2078.8101%2019.0955C78.8094%2019.2901%2078.7645%2019.482%2078.6789%2019.6568C78.5932%2019.8315%2078.469%2019.9845%2078.3156%2020.1043C77.9771%2020.3904%2077.5446%2020.5411%2077.1016%2020.5271C76.7074%2020.538%2076.3223%2020.4073%2076.0162%2020.1587C75.6305%2019.8104%2075.2892%2019.416%2075%2018.9842'%20fill='white'/%3e%3cpath%20d='M80.1811%205.70949H80.5915V3.46944C80.5915%202.86863%2080.6064%202.39886%2080.6385%202.05766C80.6608%201.74802%2080.752%201.44728%2080.9055%201.17746C81.0552%200.917818%2081.2721%200.703405%2081.5335%200.556866C81.8103%200.392732%2082.1266%200.307244%2082.4484%200.309618C82.9289%200.31336%2083.3891%200.504012%2083.7316%200.841198C83.9854%201.06984%2084.1588%201.37415%2084.2261%201.70904C84.3039%202.18956%2084.3378%202.67618%2084.3274%203.16285V5.70949H85.6922C86.1277%205.67931%2086.5587%205.81242%2086.9013%206.08284C87.037%206.20323%2087.1446%206.35203%2087.2164%206.51868C87.2882%206.68533%2087.3224%206.86574%2087.3167%207.0471C87.3338%207.26146%2087.2865%207.47606%2087.1808%207.66332C87.075%207.85057%2086.9157%208.00192%2086.7233%208.0979C86.187%208.32481%2085.6062%208.4271%2085.0247%208.39707H84.3274V15.2483C84.3202%2015.6975%2084.3409%2016.1467%2084.3892%2016.5933C84.4163%2016.8756%2084.5304%2017.1426%2084.7156%2017.3573C84.8317%2017.4641%2084.969%2017.5452%2085.1185%2017.5955C85.268%2017.6457%2085.4264%2017.664%2085.5835%2017.6491C85.8823%2017.6397%2086.1795%2017.6016%2086.4711%2017.5353C86.7574%2017.4677%2087.0498%2017.4288%2087.3439%2017.4191C87.4965%2017.4205%2087.6473%2017.4533%2087.7868%2017.5154C87.9263%2017.5775%2088.0516%2017.6676%2088.1548%2017.7801C88.2737%2017.8963%2088.3673%2018.0357%2088.4298%2018.1897C88.4924%2018.3437%2088.5225%2018.509%2088.5183%2018.6751C88.5183%2019.2735%2088.1886%2019.7325%2087.5293%2020.0523C86.87%2020.3721%2085.9288%2020.5311%2084.7057%2020.5295C83.5387%2020.5295%2082.6585%2020.3342%2082.0577%2019.9435C81.469%2019.5736%2081.0444%2018.9924%2080.8709%2018.3191C80.6615%2017.4107%2080.5677%2016.4794%2080.5915%2015.5475V8.39459H80.097C79.6515%208.42648%2079.2102%208.28969%2078.8608%208.01136C78.7234%207.8914%2078.6142%207.74251%2078.5411%207.57537C78.468%207.40823%2078.4328%207.22698%2078.438%207.04463C78.4337%206.8606%2078.4716%206.67803%2078.5487%206.5109C78.6259%206.34376%2078.7402%206.19649%2078.8831%206.08036C79.2545%205.807%2079.7111%205.67466%2080.1712%205.70702'%20fill='white'/%3e%3c/svg%3e`,Mv=`data:image/svg+xml,%3csvg%20width='7'%20height='13'%20viewBox='0%200%207%2013'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M5.04492%206.50535L0.757579%2010.7927C0.457835%2011.0924%200.457835%2011.5784%200.757579%2011.8782C1.05732%2012.1779%201.54331%2012.1779%201.84305%2011.8782L6.67312%207.04809C6.97287%206.74835%206.97287%206.26236%206.67312%205.96262L1.84305%201.13255C1.54331%200.832802%201.05732%200.832802%200.757579%201.13255C0.457835%201.43229%200.457835%201.91827%200.757579%202.21802L5.04492%206.50535Z'%20fill='white'/%3e%3c/svg%3e`,Nv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10%2019C5.5544%2017.9895%202%2013.6998%202%209.18182V4.27273L10%201L18%204.27273V9.18182C18%2013.7015%2014.4456%2017.9895%2010%2019ZM3.6%205.09091V9.18182C3.64572%2011.0736%204.29629%2012.8979%205.45214%2014.3755C6.608%2015.8532%208.20545%2016.9028%2010%2017.3636C11.7946%2016.9028%2013.392%2015.8532%2014.5479%2014.3755C15.7037%2012.8979%2016.3543%2011.0736%2016.4%209.18182V5.09091L10%202.63636L3.6%205.09091Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M10%209.18185C11.1046%209.18185%2012%208.26607%2012%207.1364C12%206.00672%2011.1046%205.09094%2010%205.09094C8.89543%205.09094%208%206.00672%208%207.1364C8%208.26607%208.89543%209.18185%2010%209.18185Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M6%2012.4545C6.39431%2013.1894%206.97247%2013.804%207.67531%2014.2353C8.37815%2014.6666%209.18042%2014.8991%2010%2014.9091C10.8196%2014.8991%2011.6219%2014.6666%2012.3247%2014.2353C13.0275%2013.804%2013.6057%2013.1894%2014%2012.4545C13.98%2010.9033%2011.3264%2010%2010%2010C8.6664%2010%206.02%2010.9033%206%2012.4545Z'%20fill='%23C9C9E8'/%3e%3c/svg%3e`,Pv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6.66669%202.5H13.3334C14.2538%202.5%2015%203.24619%2015%204.16667V17.5L10%2015L5%2017.5V4.16667C5%203.24619%205.74621%202.5%206.66669%202.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.91669%207.5H12.0834'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.91669%2010.8333H10.8334'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15%205.83333H16.25C16.9404%205.83333%2017.5%206.39298%2017.5%207.08333V13.75C17.5%2014.4404%2016.9404%2015%2016.25%2015H15'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5%2015H3.75C3.05964%2015%202.5%2014.4404%202.5%2013.75V7.08333C2.5%206.39298%203.05964%205.83333%203.75%205.83333H5'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Fv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17%205.3335H3.66667C2.74619%205.3335%202%206.07969%202%207.00016V15.3335C2%2016.254%202.74619%2017.0002%203.66667%2017.0002H17C17.9205%2017.0002%2018.6667%2016.254%2018.6667%2015.3335V7.00016C18.6667%206.07969%2017.9205%205.3335%2017%205.3335Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.6667%2017V3.66667C13.6667%203.22464%2013.4911%202.80072%2013.1785%202.48816C12.866%202.17559%2012.442%202%2012%202H8.66667C8.22464%202%207.80072%202.17559%207.48816%202.48816C7.1756%202.80072%207%203.22464%207%203.66667V17'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Iv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M19.1667%2017.5V15.8333C19.1661%2015.0948%2018.9203%2014.3773%2018.4678%2013.7936C18.0153%2013.2099%2017.3818%2012.793%2016.6667%2012.6083'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M14.1667%2017.5V15.8333C14.1667%2014.9493%2013.8155%2014.1014%2013.1904%2013.4763C12.5652%2012.8512%2011.7174%2012.5%2010.8333%2012.5H4.16668C3.28262%2012.5%202.43478%2012.8512%201.80965%2013.4763C1.18453%2014.1014%200.833344%2014.9493%200.833344%2015.8333V17.5'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3333%202.60834C14.0504%202.79192%2014.6859%203.20892%2015.1397%203.7936C15.5935%204.37827%2015.8399%205.09736%2015.8399%205.8375C15.8399%206.57765%2015.5935%207.29674%2015.1397%207.88141C14.6859%208.46609%2014.0504%208.88309%2013.3333%209.06667'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.49999%209.16667C9.34094%209.16667%2010.8333%207.67428%2010.8333%205.83333C10.8333%203.99238%209.34094%202.5%207.49999%202.5C5.65904%202.5%204.16666%203.99238%204.16666%205.83333C4.16666%207.67428%205.65904%209.16667%207.49999%209.16667Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Lv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.33331%205.83333C3.33331%204.91286%204.07951%204.16667%204.99998%204.16667H11.6666C12.5871%204.16667%2013.3333%204.91286%2013.3333%205.83333V12.5C13.3333%2013.4205%2012.5871%2014.1667%2011.6666%2014.1667H4.99998C4.07951%2014.1667%203.33331%2013.4205%203.33331%2012.5V5.83333Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.24998%208.33333C6.24998%207.8731%206.62308%207.5%207.08331%207.5H9.16665C9.62688%207.5%209.99998%207.8731%209.99998%208.33333C9.99998%208.79357%209.62688%209.16667%209.16665%209.16667H7.08331C6.62308%209.16667%206.24998%208.79357%206.24998%208.33333Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5.83331%2011.6667H10.8333'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3333%207.5H15.8333C16.7538%207.5%2017.5%208.24619%2017.5%209.16667C17.5%2010.0871%2016.7538%2010.8333%2015.8333%2010.8333H13.3333'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3333%2014.1667L15.4166%2016.25'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.25%2017.5C16.9403%2017.5%2017.5%2016.9404%2017.5%2016.25C17.5%2015.5596%2016.9403%2015%2016.25%2015C15.5596%2015%2015%2015.5596%2015%2016.25C15%2016.9404%2015.5596%2017.5%2016.25%2017.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.49998%203.33333C3.19034%203.33333%203.74998%202.77369%203.74998%202.08333C3.74998%201.39298%203.19034%200.833333%202.49998%200.833333C1.80962%200.833333%201.24998%201.39298%201.24998%202.08333C1.24998%202.77369%201.80962%203.33333%202.49998%203.33333Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M3.41665%202.91667L4.99998%204.16667'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Rv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.5%2011.6667H11.6667V17.5001H17.5V11.6667Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.33333%2011.6667H2.5V17.5001H8.33333V11.6667Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M17.5%202.5H11.6667V8.33333H17.5V2.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.33333%202.5H2.5V8.33333H8.33333V2.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,zv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.33331%208.33333H16.6666V16.25C16.6666%2016.7102%2016.2936%2017.0833%2015.8333%2017.0833H4.16665C3.70641%2017.0833%203.33331%2016.7102%203.33331%2016.25V8.33333Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66669%208.33333V5.41667C6.66669%204.95643%207.03978%204.58333%207.50002%204.58333H12.5C12.9603%204.58333%2013.3334%204.95643%2013.3334%205.41667V8.33333'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.5%208.33333H17.5'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'/%3e%3cpath%20d='M7.5%2012.0833H12.5'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'/%3e%3cpath%20d='M10%209.58333V14.5833'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'/%3e%3cpath%20d='M5.83331%202.91667H14.1666'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'/%3e%3c/svg%3e`,Bv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M10%201C5.02991%201%201%205.02991%201%2010C1%2014.9701%205.02991%2019%2010%2019C14.9701%2019%2019%2014.9701%2019%2010C19%205.02991%2014.9701%201%2010%201ZM10%2017.4732C5.87366%2017.4732%202.52679%2014.1263%202.52679%2010C2.52679%205.87366%205.87366%202.52679%2010%202.52679C14.1263%202.52679%2017.4732%205.87366%2017.4732%2010C17.4732%2014.1263%2014.1263%2017.4732%2010%2017.4732Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M12.242%206.07661C11.6393%205.54826%2010.8437%205.25897%209.99999%205.25897C9.15624%205.25897%208.36071%205.55027%207.75803%206.07661C7.13124%206.62504%206.78571%207.36232%206.78571%208.15183V8.30451C6.78571%208.3929%206.85803%208.46522%206.94642%208.46522H7.91071C7.9991%208.46522%208.07142%208.3929%208.07142%208.30451V8.15183C8.07142%207.26589%208.93727%206.54469%209.99999%206.54469C11.0627%206.54469%2011.9286%207.26589%2011.9286%208.15183C11.9286%208.77661%2011.4866%209.34915%2010.8016%209.61232C10.3757%209.77504%2010.0141%2010.0603%209.7549%2010.434C9.49173%2010.8157%209.35512%2011.2737%209.35512%2011.7378V12.1697C9.35512%2012.2581%209.42745%2012.3304%209.51584%2012.3304H10.4801C10.5685%2012.3304%2010.6408%2012.2581%2010.6408%2012.1697V11.7137C10.6419%2011.5186%2010.7017%2011.3285%2010.8124%2011.1679C10.9231%2011.0074%2011.0797%2010.8839%2011.2616%2010.8137C12.4469%2010.3576%2013.2123%209.31299%2013.2123%208.15183C13.2143%207.36232%2012.8687%206.62504%2012.242%206.07661ZM9.19642%2014.4197C9.19642%2014.6328%209.28108%2014.8372%209.43178%2014.9879C9.58248%2015.1386%209.78687%2015.2233%209.99999%2015.2233C10.2131%2015.2233%2010.4175%2015.1386%2010.5682%2014.9879C10.7189%2014.8372%2010.8036%2014.6328%2010.8036%2014.4197C10.8036%2014.2066%2010.7189%2014.0022%2010.5682%2013.8515C10.4175%2013.7008%2010.2131%2013.6161%209.99999%2013.6161C9.78687%2013.6161%209.58248%2013.7008%209.43178%2013.8515C9.28108%2014.0022%209.19642%2014.2066%209.19642%2014.4197Z'%20fill='%23C9C9E8'/%3e%3c/svg%3e`,Vv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M15%2018.3333C16.3807%2018.3333%2017.5%2017.214%2017.5%2015.8333C17.5%2014.4526%2016.3807%2013.3333%2015%2013.3333C13.6193%2013.3333%2012.5%2014.4526%2012.5%2015.8333C12.5%2017.214%2013.6193%2018.3333%2015%2018.3333Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5%2012.5C6.38071%2012.5%207.5%2011.3807%207.5%2010C7.5%208.61929%206.38071%207.5%205%207.5C3.61929%207.5%202.5%208.61929%202.5%2010C2.5%2011.3807%203.61929%2012.5%205%2012.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.15833%2011.2584L12.85%2014.575'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15%206.66669C16.3807%206.66669%2017.5%205.5474%2017.5%204.16669C17.5%202.78598%2016.3807%201.66669%2015%201.66669C13.6193%201.66669%2012.5%202.78598%2012.5%204.16669C12.5%205.5474%2013.6193%206.66669%2015%206.66669Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12.8417%205.42499L7.15833%208.74165'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Hv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.6667%201.66669H5.00001C4.55798%201.66669%204.13406%201.84228%203.8215%202.15484C3.50894%202.4674%203.33334%202.89133%203.33334%203.33335V16.6667C3.33334%2017.1087%203.50894%2017.5326%203.8215%2017.8452C4.13406%2018.1578%204.55798%2018.3334%205.00001%2018.3334H15C15.442%2018.3334%2015.866%2018.1578%2016.1785%2017.8452C16.4911%2017.5326%2016.6667%2017.1087%2016.6667%2016.6667V6.66669L11.6667%201.66669Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3333%2014.1667H6.66666'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3333%2010.8333H6.66666'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.33332%207.5H7.49999H6.66666'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.6667%201.66669V6.66669H16.6667'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Uv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_530_15536)'%3e%3cpath%20d='M10%2012.5C11.3807%2012.5%2012.5%2011.3807%2012.5%2010C12.5%208.61929%2011.3807%207.5%2010%207.5C8.61929%207.5%207.5%208.61929%207.5%2010C7.5%2011.3807%208.61929%2012.5%2010%2012.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.1667%2012.5C16.0557%2012.7513%2016.0227%2013.0301%2016.0717%2013.3005C16.1207%2013.5708%2016.2496%2013.8202%2016.4417%2014.0166L16.4917%2014.0666C16.6466%2014.2214%2016.7696%2014.4052%2016.8534%2014.6076C16.9373%2014.8099%2016.9805%2015.0268%2016.9805%2015.2458C16.9805%2015.4648%2016.9373%2015.6817%2016.8534%2015.884C16.7696%2016.0864%2016.6466%2016.2702%2016.4917%2016.425C16.3369%2016.5799%2016.1531%2016.7029%2015.9507%2016.7867C15.7484%2016.8706%2015.5315%2016.9138%2015.3125%2016.9138C15.0935%2016.9138%2014.8766%2016.8706%2014.6743%2016.7867C14.4719%2016.7029%2014.2881%2016.5799%2014.1333%2016.425L14.0833%2016.375C13.8869%2016.1829%2013.6375%2016.054%2013.3672%2016.005C13.0968%2015.956%2012.818%2015.989%2012.5667%2016.1C12.3202%2016.2056%2012.11%2016.381%2011.9619%2016.6046C11.8139%2016.8282%2011.7344%2017.0902%2011.7333%2017.3583V17.5C11.7333%2017.942%2011.5577%2018.3659%2011.2452%2018.6785C10.9326%2018.991%2010.5087%2019.1666%2010.0667%2019.1666C9.62465%2019.1666%209.20073%2018.991%208.88817%2018.6785C8.5756%2018.3659%208.40001%2017.942%208.40001%2017.5V17.425C8.39356%2017.1491%208.30427%2016.8816%208.14377%2016.6572C7.98326%2016.4328%207.75896%2016.2619%207.50001%2016.1666C7.24866%2016.0557%206.96985%2016.0226%206.69952%2016.0716C6.42919%2016.1207%206.17974%2016.2495%205.98334%2016.4416L5.93334%2016.4916C5.77855%2016.6466%205.59474%2016.7695%205.39241%2016.8534C5.19008%2016.9373%204.9732%2016.9805%204.75418%2016.9805C4.53515%2016.9805%204.31827%2016.9373%204.11594%2016.8534C3.91361%2016.7695%203.7298%2016.6466%203.57501%2016.4916C3.42005%2016.3369%203.29712%2016.153%203.21324%2015.9507C3.12937%2015.7484%203.0862%2015.5315%203.0862%2015.3125C3.0862%2015.0935%203.12937%2014.8766%203.21324%2014.6742C3.29712%2014.4719%203.42005%2014.2881%203.57501%2014.1333L3.62501%2014.0833C3.81712%2013.8869%203.946%2013.6375%203.99501%2013.3671C4.04403%2013.0968%204.01094%2012.818%203.90001%2012.5666C3.79437%2012.3202%203.61897%2012.11%203.3954%2011.9619C3.17182%2011.8138%202.90983%2011.7344%202.64168%2011.7333H2.50001C2.05798%2011.7333%201.63406%2011.5577%201.3215%2011.2452C1.00894%2010.9326%200.833344%2010.5087%200.833344%2010.0666C0.833344%209.62462%201.00894%209.2007%201.3215%208.88813C1.63406%208.57557%202.05798%208.39998%202.50001%208.39998H2.57501C2.85084%208.39353%203.11835%208.30424%203.34276%208.14374C3.56717%207.98323%203.73811%207.75893%203.83334%207.49998C3.94427%207.24863%203.97736%206.96982%203.92835%206.69949C3.87933%206.42916%203.75046%206.17971%203.55834%205.98331L3.50834%205.93331C3.35338%205.77852%203.23045%205.59471%203.14658%205.39238C3.0627%205.19005%203.01953%204.97317%203.01953%204.75415C3.01953%204.53512%203.0627%204.31824%203.14658%204.11591C3.23045%203.91358%203.35338%203.72977%203.50834%203.57498C3.66313%203.42002%203.84695%203.29709%204.04928%203.21321C4.25161%203.12934%204.46848%203.08617%204.68751%203.08617C4.90654%203.08617%205.12341%203.12934%205.32574%203.21321C5.52807%203.29709%205.71189%203.42002%205.86668%203.57498L5.91668%203.62498C6.11308%203.81709%206.36252%203.94597%206.63285%203.99498C6.90318%204.044%207.182%204.01091%207.43334%203.89998H7.50001C7.74648%203.79434%207.95669%203.61894%208.10475%203.39537C8.25282%203.17179%208.33227%202.9098%208.33334%202.64165V2.49998C8.33334%202.05795%208.50894%201.63403%208.8215%201.32147C9.13406%201.00891%209.55798%200.833313%2010%200.833313C10.442%200.833313%2010.866%201.00891%2011.1785%201.32147C11.4911%201.63403%2011.6667%202.05795%2011.6667%202.49998V2.57498C11.6677%202.84313%2011.7472%203.10513%2011.8953%203.3287C12.0433%203.55228%2012.2535%203.72768%2012.5%203.83331C12.7514%203.94424%2013.0302%203.97733%2013.3005%203.92832C13.5708%203.8793%2013.8203%203.75043%2014.0167%203.55831L14.0667%203.50831C14.2215%203.35335%2014.4053%203.23042%2014.6076%203.14655C14.8099%203.06267%2015.0268%203.0195%2015.2458%203.0195C15.4649%203.0195%2015.6817%203.06267%2015.8841%203.14655C16.0864%203.23042%2016.2702%203.35335%2016.425%203.50831C16.58%203.6631%2016.7029%203.84692%2016.7868%204.04925C16.8706%204.25158%2016.9138%204.46845%2016.9138%204.68748C16.9138%204.90651%2016.8706%205.12338%2016.7868%205.32571C16.7029%205.52804%2016.58%205.71186%2016.425%205.86665L16.375%205.91665C16.1829%206.11305%2016.054%206.36249%2016.005%206.63282C15.956%206.90315%2015.9891%207.18197%2016.1%207.43331V7.49998C16.2056%207.74645%2016.381%207.95666%2016.6046%208.10472C16.8282%208.25279%2017.0902%208.33224%2017.3583%208.33331H17.5C17.942%208.33331%2018.366%208.50891%2018.6785%208.82147C18.9911%209.13403%2019.1667%209.55795%2019.1667%209.99998C19.1667%2010.442%2018.9911%2010.8659%2018.6785%2011.1785C18.366%2011.4911%2017.942%2011.6666%2017.5%2011.6666H17.425C17.1569%2011.6677%2016.8949%2011.7472%2016.6713%2011.8952C16.4477%2012.0433%2016.2723%2012.2535%2016.1667%2012.5V12.5Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_530_15536'%3e%3crect%20width='20'%20height='20'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,Wv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M1%204.33333C1%203.18274%201.93274%202.25%203.08333%202.25H16.4167C17.5673%202.25%2018.5%203.18274%2018.5%204.33333V16C18.5%2017.1506%2017.5673%2018.0833%2016.4167%2018.0833H3.08333C1.93274%2018.0833%201%2017.1506%201%2016V4.33333ZM3.08333%203.08333C2.39298%203.08333%201.83333%203.64298%201.83333%204.33333V16C1.83333%2016.6904%202.39298%2017.25%203.08333%2017.25H16.4167C17.107%2017.25%2017.6667%2016.6904%2017.6667%2016V4.33333C17.6667%203.64298%2017.107%203.08333%2016.4167%203.08333H3.08333Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M1%204.33333C1%203.18274%201.93274%202.25%203.08333%202.25H16.4167C17.5673%202.25%2018.5%203.18274%2018.5%204.33333V6.83333C18.5%207.06345%2018.3135%207.25%2018.0833%207.25H1.41667C1.18655%207.25%201%207.06345%201%206.83333V4.33333ZM3.08333%203.08333C2.39298%203.08333%201.83333%203.64298%201.83333%204.33333V6.41667H17.6667V4.33333C17.6667%203.64298%2017.107%203.08333%2016.4167%203.08333H3.08333Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M4.33333%201V3.91667H3.5V1H4.33333Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10.1667%201V3.91667H9.33334V1H10.1667Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M16%201V3.91667H15.1667V1H16Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.53453%2015.2573C6.43104%2015.1538%206.38944%2015.0036%206.42493%2014.8616L7.01419%2012.5046C7.03251%2012.4313%207.07039%2012.3644%207.12379%2012.311L10.0701%209.36472C10.5582%208.87657%2011.3497%208.87657%2011.8378%209.36472L12.4271%209.95398C12.9152%2010.4421%2012.9152%2011.2336%2012.4271%2011.7217L9.48081%2014.668C9.42741%2014.7214%209.3605%2014.7593%209.28724%2014.7776L6.93022%2015.3669C6.78823%2015.4024%206.63802%2015.3608%206.53453%2015.2573ZM8.97316%2013.9972L11.8378%2011.1325C12.0006%2010.9698%2012.0006%2010.706%2011.8378%2010.5432L11.2486%209.95398C11.0859%209.79126%2010.822%209.79126%2010.6593%209.95398L7.79465%2012.8186L7.40181%2014.39L8.97316%2013.9972Z'%20fill='%23C9C9E8'%20stroke='%23C9C9E8'%20stroke-width='0.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Gv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_530_15505)'%3e%3cpath%20d='M18.3333%201.66669L9.16666%2010.8334'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M18.3333%201.66669L12.5%2018.3334L9.16666%2010.8334L1.66666%207.50002L18.3333%201.66669Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_530_15505'%3e%3crect%20width='20'%20height='20'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,Kv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_7154_21562)'%3e%3cpath%20d='M4.10156%208.64844H8.24219V9.82031H4.10156V8.64844Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M4.10156%2010.9922H8.24219V12.1641H4.10156V10.9922Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M4.10156%2013.3359H8.24219V14.5078H4.10156V13.3359Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M18.2422%2011.3516H20V0.804688H9.41406V3.96074H4.10156C2.80922%203.96074%201.75781%205.01215%201.75781%206.30449V14.5076C1.75781%2014.9344%201.87301%2015.3345%202.07312%2015.6795H0V16.2654C0%2017.8809%201.31426%2019.1951%202.92969%2019.1951H17.0703C18.6857%2019.1951%2020%2017.8809%2020%2016.2654V15.6795H17.9269C18.127%2015.3345%2018.2422%2014.9344%2018.2422%2014.5076V11.3516ZM10.5859%201.97656H18.8281V10.1797H12.1429L10.5859%2011.7112V1.97656ZM1.27227%2016.8513H7.07031V18.0232H2.92969C2.16578%2018.0232%201.5141%2017.5334%201.27227%2016.8513ZM11.7578%2016.8513V18.0232H8.24219V16.8513H11.7578ZM17.0703%2018.0232H12.9297V16.8513H18.7277C18.4859%2017.5334%2017.8342%2018.0232%2017.0703%2018.0232ZM4.10156%2015.6795C3.45539%2015.6795%202.92969%2015.1538%202.92969%2014.5076V6.30445C2.92969%205.65828%203.45539%205.13258%204.10156%205.13258H9.41406V14.5075L12.6227%2011.3515H17.0703V14.5076C17.0703%2015.1538%2016.5446%2015.6795%2015.8984%2015.6795H4.10156Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M17.6367%208.42184C17.6367%207.64664%2017.3213%206.88887%2016.7714%206.34258L16.4648%206.0368V4.90625C16.4648%203.93699%2015.6763%203.14844%2014.707%203.14844C13.7378%203.14844%2012.9492%203.93699%2012.9492%204.90625V6.03691L12.6437%206.34152C12.0931%206.88793%2011.7773%207.64617%2011.7773%208.42188V9.00781H17.6367V8.42184ZM13.0507%207.8359C13.1386%207.58801%2013.2814%207.35973%2013.4702%207.17234L14.1211%206.52328V4.90625C14.1211%204.58316%2014.3839%204.32031%2014.707%204.32031C15.0301%204.32031%2015.293%204.58316%2015.293%204.90625V6.52313L15.9448%207.17336C16.1331%207.36016%2016.2756%207.5882%2016.3634%207.83594H13.0507V7.8359Z'%20fill='%23C9C9E8'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_7154_21562'%3e%3crect%20width='20'%20height='20'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,qv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_6415_8719)'%3e%3cpath%20d='M10.0391%208.88672H11.0156C11.3392%208.88672%2011.6016%208.62438%2011.6016%208.30078C11.6016%207.97719%2011.3392%207.71484%2011.0156%207.71484H10.0391C9.71547%207.71484%209.45312%207.97719%209.45312%208.30078C9.45312%208.62438%209.71547%208.88672%2010.0391%208.88672Z'%20fill='white'/%3e%3cpath%20d='M7.53906%207.71484H6.5625C6.23891%207.71484%205.97656%207.97719%205.97656%208.30078C5.97656%208.62438%206.23891%208.88672%206.5625%208.88672H7.53906C7.86266%208.88672%208.125%208.62438%208.125%208.30078C8.125%207.97719%207.86266%207.71484%207.53906%207.71484Z'%20fill='white'/%3e%3cpath%20d='M13.5156%208.88672H14.4922C14.8158%208.88672%2015.0781%208.62438%2015.0781%208.30078C15.0781%207.97719%2014.8158%207.71484%2014.4922%207.71484H13.5156C13.192%207.71484%2012.9297%207.97719%2012.9297%208.30078C12.9297%208.62438%2013.192%208.88672%2013.5156%208.88672Z'%20fill='white'/%3e%3cpath%20d='M4.0625%2010.3516H3.08594C2.76234%2010.3516%202.5%2010.6139%202.5%2010.9375C2.5%2011.2611%202.76234%2011.5234%203.08594%2011.5234H4.0625C4.38609%2011.5234%204.64844%2011.2611%204.64844%2010.9375C4.64844%2010.6139%204.38609%2010.3516%204.0625%2010.3516Z'%20fill='white'/%3e%3cpath%20d='M7.53906%2010.3516H6.5625C6.23891%2010.3516%205.97656%2010.6139%205.97656%2010.9375C5.97656%2011.2611%206.23891%2011.5234%206.5625%2011.5234H7.53906C7.86266%2011.5234%208.125%2011.2611%208.125%2010.9375C8.125%2010.6139%207.86266%2010.3516%207.53906%2010.3516Z'%20fill='white'/%3e%3cpath%20d='M11.6016%2010.9375C11.6016%2010.6139%2011.3392%2010.3516%2011.0156%2010.3516H10.0391C9.71547%2010.3516%209.45312%2010.6139%209.45312%2010.9375C9.45312%2011.2611%209.71547%2011.5234%2010.0391%2011.5234H11.0156C11.3392%2011.5234%2011.6016%2011.2611%2011.6016%2010.9375Z'%20fill='white'/%3e%3cpath%20d='M4.0625%2012.9883H3.08594C2.76234%2012.9883%202.5%2013.2506%202.5%2013.5742C2.5%2013.8978%202.76234%2014.1602%203.08594%2014.1602H4.0625C4.38609%2014.1602%204.64844%2013.8978%204.64844%2013.5742C4.64844%2013.2506%204.38609%2012.9883%204.0625%2012.9883Z'%20fill='white'/%3e%3cpath%20d='M7.53906%2012.9883H6.5625C6.23891%2012.9883%205.97656%2013.2506%205.97656%2013.5742C5.97656%2013.8978%206.23891%2014.1602%206.5625%2014.1602H7.53906C7.86266%2014.1602%208.125%2013.8978%208.125%2013.5742C8.125%2013.2506%207.86266%2012.9883%207.53906%2012.9883Z'%20fill='white'/%3e%3cpath%20d='M17.5781%2010.9014V3.32031C17.5781%202.13566%2016.6143%201.17188%2015.4297%201.17188H14.2969V0.585938C14.2969%200.262344%2014.0345%200%2013.7109%200C13.3873%200%2013.125%200.262344%2013.125%200.585938V1.17188H11.0156V0.585938C11.0156%200.262344%2010.7533%200%2010.4297%200C10.1061%200%209.84375%200.262344%209.84375%200.585938V1.17188H7.73438V0.585938C7.73438%200.262344%207.47203%200%207.14844%200C6.82484%200%206.5625%200.262344%206.5625%200.585938V1.17188H4.45312V0.585938C4.45312%200.262344%204.19078%200%203.86719%200C3.54359%200%203.28125%200.262344%203.28125%200.585938V1.17188H2.14844C0.963789%201.17188%200%202.13566%200%203.32031V15.0391C0%2016.0083%200.788555%2016.7969%201.75781%2016.7969H10.5321C11.2184%2018.6643%2013.0147%2020%2015.1172%2020C17.8096%2020%2020%2017.8096%2020%2015.1172C20%2013.3217%2019.0257%2011.7496%2017.5781%2010.9014ZM1.17188%203.32031C1.17188%202.78184%201.60996%202.34375%202.14844%202.34375H3.28125V2.92969C3.28125%203.25328%203.54359%203.51562%203.86719%203.51562C4.19078%203.51562%204.45312%203.25328%204.45312%202.92969V2.34375H6.5625V2.92969C6.5625%203.25328%206.82484%203.51562%207.14844%203.51562C7.47203%203.51562%207.73438%203.25328%207.73438%202.92969V2.34375H9.84375V2.92969C9.84375%203.25328%2010.1061%203.51562%2010.4297%203.51562C10.7533%203.51562%2011.0156%203.25328%2011.0156%202.92969V2.34375H13.125V2.92969C13.125%203.25328%2013.3873%203.51562%2013.7109%203.51562C14.0345%203.51562%2014.2969%203.25328%2014.2969%202.92969V2.34375H15.4297C15.9682%202.34375%2016.4062%202.78184%2016.4062%203.32031V5.07812H1.17188V3.32031ZM1.75781%2015.625C1.43473%2015.625%201.17188%2015.3621%201.17188%2015.0391V6.25H16.4062V10.4074C15.9954%2010.2948%2015.5632%2010.2344%2015.1172%2010.2344C12.4248%2010.2344%2010.2344%2012.4248%2010.2344%2015.1172C10.2344%2015.2886%2010.2434%2015.458%2010.2607%2015.625H1.75781ZM15.1172%2018.8281C13.071%2018.8281%2011.4062%2017.1634%2011.4062%2015.1172C11.4062%2013.071%2013.071%2011.4062%2015.1172%2011.4062C17.1634%2011.4062%2018.8281%2013.071%2018.8281%2015.1172C18.8281%2017.1634%2017.1634%2018.8281%2015.1172%2018.8281Z'%20fill='white'/%3e%3cpath%20d='M17.0703%2014.5312H15.7031V13.1641C15.7031%2012.8405%2015.4408%2012.5781%2015.1172%2012.5781C14.7936%2012.5781%2014.5312%2012.8405%2014.5312%2013.1641V15.1172C14.5312%2015.4408%2014.7936%2015.7031%2015.1172%2015.7031H17.0703C17.3939%2015.7031%2017.6562%2015.4408%2017.6562%2015.1172C17.6562%2014.7936%2017.3939%2014.5312%2017.0703%2014.5312Z'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_6415_8719'%3e%3crect%20width='20'%20height='20'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,Jv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M18.415%208.82125C18.21%208.71313%2017.9606%208.72938%2017.7694%208.86063L11.8056%2012.9894L10.3562%2011.9856C10.1419%2011.8375%209.85875%2011.8375%209.64437%2011.9856L8.19438%2012.9894L3.0275%209.4125L5.32188%208.03563C5.61813%207.85813%205.71375%207.47438%205.53625%207.17813C5.35875%206.88188%204.97438%206.78625%204.67875%206.96375L1.55375%208.83875C1.37%208.94875%201.25%209.17563%201.25%209.375V16.875C1.25%2017.9088%202.09125%2018.75%203.125%2018.75H16.875C17.9088%2018.75%2018.75%2017.9088%2018.75%2016.875V9.375C18.75%209.1425%2018.6206%208.92938%2018.415%208.82125ZM2.51%2016.925C2.50875%2016.9075%202.5%2016.8925%202.5%2016.875V10.5681L7.09625%2013.75L2.51%2016.925ZM3.87625%2017.5L10%2013.26L16.1244%2017.5H3.87625ZM17.5%2016.875C17.5%2016.8925%2017.4912%2016.9075%2017.49%2016.925L12.9037%2013.75L17.5%2010.5681V16.875Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M13.3644%208.7025C13.5975%208.60562%2013.75%208.3775%2013.75%208.125V2.5C13.75%202.2475%2013.5975%202.01937%2013.3644%201.9225C13.13%201.825%2012.8619%201.87937%2012.6831%202.05812C11.6162%203.125%209.95937%203.125%208.75%203.125H7.8125C6.60625%203.125%205.625%204.10625%205.625%205.3125C5.625%206.44875%206.49937%207.37437%207.60875%207.47937L8.1375%2010.1225C8.20438%2010.4587%208.53187%2010.6806%208.87312%2010.6125C9.21187%2010.545%209.43125%2010.2156%209.36312%209.87687L8.8875%207.5C10.0831%207.50125%2011.655%207.53812%2012.6831%208.56625C12.8619%208.74562%2013.13%208.79937%2013.3644%208.7025ZM8.125%206.25H7.8125C7.29562%206.25%206.875%205.82937%206.875%205.3125C6.875%204.79562%207.29562%204.375%207.8125%204.375H8.125V6.25ZM12.5%206.905C11.4719%206.3725%2010.3263%206.27437%209.375%206.25562V4.36937C10.3263%204.35062%2011.4719%204.2525%2012.5%203.72V6.905Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M16.25%204.6875H17.5C17.845%204.6875%2018.125%204.9675%2018.125%205.3125C18.125%205.6575%2017.845%205.9375%2017.5%205.9375H16.25C15.905%205.9375%2015.625%205.6575%2015.625%205.3125C15.625%204.9675%2015.905%204.6875%2016.25%204.6875Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M17.2488%202.1875C17.4213%202.48625%2017.3188%202.86875%2017.02%203.04125L15.9375%203.66625C15.6413%203.8375%2015.2575%203.73875%2015.0838%203.4375C14.9113%203.13875%2015.0138%202.75625%2015.3125%202.58375L16.395%201.95875C16.6931%201.78562%2017.0763%201.88812%2017.2488%202.1875Z'%20fill='%23C9C9E8'/%3e%3cpath%20d='M15.0838%207.1875C15.2563%206.88813%2015.6388%206.78562%2015.9375%206.95875L17.02%207.58375C17.3194%207.75625%2017.4213%208.13875%2017.2488%208.4375C17.075%208.73813%2016.6913%208.8375%2016.395%208.66625L15.3125%208.04125C15.0132%207.86875%2014.9113%207.48625%2015.0838%207.1875Z'%20fill='%23C9C9E8'/%3e%3c/svg%3e`,Yv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M20%204.35092C20%203.33607%2019.1743%202.51041%2018.1595%202.51041H1.84052C0.825863%202.51045%200.000351564%203.33572%200%204.35123V4.35155V15.6484C0%2016.676%200.834066%2017.4896%201.84114%2017.4896H18.1588C19.1863%2017.4896%2020%2016.6555%2020%2015.6484V4.35155C20%204.35147%2020%204.35139%2020%204.35131C20%204.35119%2020%204.35108%2020%204.35092ZM1.84052%203.68233H18.1595C18.5282%203.68233%2018.8281%203.98229%2018.8281%204.3519C18.8281%204.54831%2018.7305%204.73061%2018.5668%204.83967L10.3713%2010.3036C10.1458%2010.454%209.8543%2010.454%209.62875%2010.3036C9.62875%2010.3036%201.43301%204.83956%201.43317%204.83967C1.43321%204.83971%201.43305%204.8396%201.43301%204.83956C1.2695%204.73061%201.17188%204.54831%201.17188%204.35092C1.17188%203.98225%201.47184%203.68233%201.84052%203.68233ZM18.1589%2016.3177H1.84114C1.47633%2016.3177%201.17188%2016.0227%201.17188%2015.6484V6.07394L8.97867%2011.2786C9.2889%2011.4854%209.64445%2011.5888%2010%2011.5888C10.3556%2011.5888%2010.7112%2011.4854%2011.0214%2011.2786L18.8281%206.07394V15.6485C18.8281%2016.0132%2018.5332%2016.3177%2018.1589%2016.3177Z'%20fill='%23586888'/%3e%3c/svg%3e`,Xv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.6666%201.66666H4.99992C4.55789%201.66666%204.13397%201.84225%203.82141%202.15481C3.50885%202.46737%203.33325%202.8913%203.33325%203.33332V16.6667C3.33325%2017.1087%203.50885%2017.5326%203.82141%2017.8452C4.13397%2018.1577%204.55789%2018.3333%204.99992%2018.3333H14.9999C15.4419%2018.3333%2015.8659%2018.1577%2016.1784%2017.8452C16.491%2017.5326%2016.6666%2017.1087%2016.6666%2016.6667V6.66666L11.6666%201.66666Z'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3334%2014.1667H6.66675'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3334%2010.8333H6.66675'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.33341%207.5H7.50008H6.66675'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.6667%201.66666V6.66666H16.6667'%20stroke='%23C9C9E8'%20stroke-width='1.6'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e`,Zv=`data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M15.3077%2011.0205C15.6349%2010.7536%2016.1175%2010.7725%2016.4226%2011.0775L19.1309%2013.7858C19.4562%2014.1112%2019.4562%2014.6387%2019.1309%2014.9641C18.8055%2015.2895%2018.278%2015.2895%2017.9526%2014.9641L16.6667%2013.6784V18.3333C16.6667%2018.7935%2016.2936%2019.1666%2015.8334%2019.1666C15.3733%2019.1666%2015.0002%2018.7934%2015.0001%2018.3333V13.6784L13.7142%2014.9641C13.3888%2015.2895%2012.8613%2015.2895%2012.5359%2014.9641C12.2107%2014.6387%2012.2106%2014.1111%2012.5359%2013.7858L15.2442%2011.0775L15.3077%2011.0205ZM13.3334%203.33331C14.2539%203.33331%2015.0001%204.0795%2015.0001%204.99998V9.16665H13.3334V8.33331H3.33341V11.6666H10.0001V13.3333H3.33341C2.41294%2013.3333%201.66675%2012.5871%201.66675%2011.6666V4.99998C1.66675%204.0795%202.41294%203.33331%203.33341%203.33331H13.3334ZM3.33341%206.24998H13.3334V4.99998H3.33341V6.24998Z'%20fill='%23C9C9E8'/%3e%3c/svg%3e`;function Qv(e){return!e||typeof e!=`string`?`User`:e.split(` `).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function $v(e){let t=(e||`User`).split(` `).filter(Boolean);return`${t[0]?.charAt(0)||`U`}${t.length>1?t.at(-1)?.charAt(0):``}`.toUpperCase()}function ey(e){let t=(e||`User`).charAt(0).toUpperCase(),n=JSON.parse(localStorage.getItem(`colorMap`)||`{}`);if(n[t])return n[t];let r=[`#0053a5`,`#1677ff`,`#15803d`,`#f97316`,`#6366f1`,`#8b5cf6`],i=r[t.charCodeAt(0)%r.length];return localStorage.setItem(`colorMap`,JSON.stringify({...n,[t]:i})),i}function ty({leftOffset:e}){let r=(0,d.useNavigate)(),i=(0,d.useLocation)(),a=localStorage.getItem(`companyName`)||`Zinnext`,o=localStorage.getItem(`userName`)||localStorage.getItem(`preferred_Username`)||`User`,u=localStorage.getItem(`preferred_Username`)||o,f=localStorage.getItem(`roleId`)||``,p=Qv(o),m=$v(p);function h(){t.h(),r(`/login`,{replace:!0})}let g=[{key:`profile-name`,label:(0,l.jsxs)(`div`,{className:`app-layout-profile-summary`,children:[(0,l.jsx)(s.Avatar,{size:42,style:{backgroundColor:ey(p)},children:m}),(0,l.jsxs)(`div`,{className:`app-layout-profile-copy`,children:[(0,l.jsx)(n.En,{variant:`body-strong`,truncate:!0,className:`app-layout-profile-name`,children:p}),f&&(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,className:`app-layout-profile-role`,children:f})]})]}),disabled:!0},{type:`divider`},{key:`dashboard`,label:(0,l.jsxs)(d.Link,{to:`/dashboard`,className:`app-layout-menu-link`,children:[(0,l.jsx)(c.AppstoreOutlined,{}),`Dashboard`]})},{key:`my-profile`,label:(0,l.jsxs)(d.Link,{to:`/my-profile`,className:`app-layout-menu-link`,children:[(0,l.jsx)(c.UserOutlined,{}),`My Profile`]})},{type:`divider`},{key:`logout`,label:(0,l.jsxs)(`span`,{className:`app-layout-menu-link app-layout-menu-danger`,children:[(0,l.jsx)(c.LogoutOutlined,{}),`Logout`]}),onClick:h}];return(0,l.jsxs)(`header`,{className:`app-layout-header`,style:{left:e},children:[(0,l.jsx)(`div`,{className:`app-layout-company`,children:(0,l.jsx)(n.En,{variant:`body-strong`,truncate:!0,className:`app-layout-company-name`,children:a})}),(0,l.jsxs)(`div`,{className:`app-layout-header-actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Inbox`,children:(0,l.jsx)(d.Link,{to:`/inbox`,className:i.pathname===`/inbox`?`app-layout-icon-btn is-active`:`app-layout-icon-btn`,"aria-label":`Inbox`,children:(0,l.jsx)(`img`,{src:Yv,alt:``,"aria-hidden":`true`,className:`app-layout-icon-img`})})}),(0,l.jsx)(`div`,{className:`app-layout-header-divider`}),(0,l.jsxs)(`div`,{className:`app-layout-user`,children:[(0,l.jsx)(s.Avatar,{size:30,style:{backgroundColor:ey(p)},children:m}),(0,l.jsx)(n.En,{variant:`label`,truncate:!0,className:`app-layout-user-name`,children:u}),(0,l.jsx)(s.Dropdown,{menu:{items:g},trigger:[`click`],placement:`bottomRight`,classNames:{root:`app-layout-user-dropdown`},children:(0,l.jsx)(`button`,{type:`button`,className:`app-layout-dropdown-btn`,"aria-label":`Open user menu`,children:(0,l.jsx)(c.DownOutlined,{})})})]})]})]})}var{Sider:ny}=s.Layout,ry={Dashboard:Rv,Jobs:Fv,Candidates:Iv,Submissions:Gv,Network:Vv,ClientManagement:Lv,Clients:Lv,clients:Lv,EmployerManagement:zv,Employers:zv,employers:zv,ReferralManagement:zv,Referral:zv,Referrals:zv,referrals:zv,Scheduler:Wv,Admin:Nv,Reports:Hv,Settings:Uv,Help:Bv,onboarding:Kv,Onboarding:Kv,assignments:Pv,Assignments:Pv,assignment:Pv,Assignment:Pv,timesheet:qv,Timesheet:qv,billing:Xv,Billing:Xv,payroll:Zv,Payroll:Zv,campaign:Jv,Campaign:Jv,addTestCase:Hv,viewTestCase:Wv,manageModules:Uv,bulkUpload:c.UploadOutlined,"bulk-upload":c.UploadOutlined};function iy(e){let t=localStorage.getItem(e);if(!t||t===`undefined`||t===`null`||t.trim()===``)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e:Array.isArray(e?.menu)?e.menu:Array.isArray(e?.menus?.menu)?e.menus.menu:[]}catch(t){return console.error(`Error parsing ${e}:`,t),[]}}function ay(e){let t=e.replace(/^\/+/,``);if(!t)return[`dashboard`];let n=t.split(`/`);return[t,n[0],n.at(-1)].filter(Boolean)}function oy({icon:e,itemKey:t}){let n=t===`bulk-upload`?c.UploadOutlined:t===`assignments`?Pv:t===`employers`?zv:ry[e];return n?typeof n==`string`?(0,l.jsx)(`img`,{src:n,alt:``,className:`app-sidebar-menu-icon`,"aria-hidden":`true`}):(0,l.jsx)(n,{className:`app-sidebar-menu-icon`,"aria-hidden":`true`}):null}function sy(e){return e.map(e=>({key:e.key,icon:(0,l.jsx)(oy,{icon:e.icon,itemKey:e.key}),label:e.label,disabled:e.status===`inactive`,children:Array.isArray(e.children)?sy(e.children):void 0}))}function cy(e){let t;try{t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)}catch{return e}let n=Object.entries(t).reduce((e,[t,n])=>({...e,[String(t).trim().toLowerCase()]:n}),{}),r=Object.keys(n),i=e=>n[e]??n[r.find(t=>t===`${e}s`||`${t}s`===e)??``];return e.flatMap(e=>{let t=[e.key,e.label].map(e=>String(e??``).trim().toLowerCase()).map(i).find(Boolean)?.view;if(t!=null&&![!0,1,`1`].includes(t))return[];let n=Array.isArray(e.children)?cy(e.children):void 0;return[{...e,children:n}]})}function ly(e){return new Set(e.flatMap(e=>[String(e?.key??``).trim().toLowerCase(),...Array.isArray(e?.children)?[...ly(e.children)]:[]]).filter(Boolean))}function uy(e){return[!0,1,`1`].includes(e)}function dy(e){return String(e).split(/[\s_\-/]+/).filter(Boolean).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function fy(e){return!(!e||/^\d+$/.test(e)||e.includes(`/`))}function py(e){let t;try{t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)}catch{return e}if(!t||typeof t!=`object`||Array.isArray(t))return e;let n=ly(e),r=Object.entries(t).flatMap(([e,t])=>{let r=String(e).trim().toLowerCase();return!fy(r)||n.has(r)||!uy(t?.view)?[]:(n.add(r),[{key:r,icon:r,label:dy(r),status:`active`}])});return[...e,...r]}function my(e){let t=e.some(e=>e.key===`addTestCase`),n=e.some(e=>e.key===`bulk-upload`);if(!t||n)return e;let r=[...e],i=r.findIndex(e=>e.key===`manageModules`);return r.splice(i>=0?i+1:r.length,0,{key:`bulk-upload`,icon:`bulk-upload`,label:`Bulk upload`,status:`active`}),r}function hy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.client??e?.clients;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function gy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.employers??e?.employer;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function _y(e){if(e.some(e=>e.key===`clients`||e.key===`client`)||!hy())return e;let t=[...e],n=t.findIndex(e=>e.key===`jobs`);return t.splice(n>=0?n:t.length,0,{key:`clients`,icon:`ClientManagement`,label:`Client Management`,status:`active`}),t}function vy(e){let t=e.some(e=>e.key===`employers`||e.key===`employer`),n=e.some(e=>e.key===`clients`||e.key===`client`),r=gy()||n||hy();if(t||!r)return e;let i=[...e],a=i.findIndex(e=>e.key===`jobs`);return i.splice(a>=0?a:i.length,0,{key:`employers`,icon:`EmployerManagement`,label:`Employer Management`,status:`active`}),i}function yy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.referrals??e?.referral;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function by(e){let t=e.some(e=>e.key===`referrals`||e.key===`referral`),n=e.some(e=>e.key===`employers`||e.key===`employer`),r=yy()||gy()||n||hy();if(t||!r)return e;let i=[...e],a=i.findIndex(e=>e.key===`employers`||e.key===`employer`),o=i.findIndex(e=>e.key===`jobs`),s=a>=0?a+1:o>=0?o:i.length;return i.splice(s,0,{key:`referrals`,icon:`ReferralManagement`,label:`Referral Management`,status:`active`}),i}function xy(e){try{let t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)?.[e];return t&&[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function Sy(e){let t=[...e],n=t.findIndex(e=>e.key===`assignments`),r=n>=0?n+1:t.length;for(let[e,n]of[[`billing`,`Billing`],[`payroll`,`Payroll`]])!t.some(t=>t.key===e)&&xy(e)&&(t.splice(r,0,{key:e,icon:e,label:n,status:`active`}),r+=1);return t}function Cy(e){return e.filter(e=>{let t=String(e.key??``).toLowerCase(),n=String(e.label??``).toLowerCase();return!t.includes(`vendor`)&&n!==`vendors`}).map(e=>Array.isArray(e.children)?{...e,children:Cy(e.children)}:e)}function wy({collapsed:e,onToggle:t}){let n=(0,d.useNavigate)(),r=(0,d.useLocation)(),[i,a]=(0,o.useState)([]),c=(0,o.useMemo)(()=>ay(r.pathname),[r.pathname]);(0,o.useEffect)(()=>{c.length>0&&localStorage.setItem(`activeKey`,c[0])},[c]);let u=(0,o.useMemo)(()=>sy(cy(py(Sy(my(by(vy(_y(Cy(iy(`menu`)))))))))),[]);function f(){e||a([]),t()}function p({key:e}){n(`/${e}`)}return(0,l.jsx)(ny,{trigger:null,collapsible:!0,collapsed:e,width:200,collapsedWidth:60,className:`app-sidebar`,children:(0,l.jsxs)(`div`,{className:`app-sidebar-panel`,children:[(0,l.jsx)(`div`,{className:`app-sidebar-brand`,children:(0,l.jsxs)(`div`,{className:`app-sidebar-logo`,children:[(0,l.jsx)(`img`,{src:Av,alt:``,className:`app-sidebar-logo-icon`}),(0,l.jsx)(`img`,{src:jv,alt:`Zinnext`,className:`app-sidebar-logo-text`})]})}),(0,l.jsx)(`button`,{type:`button`,className:`app-sidebar-toggle`,onClick:f,"aria-label":e?`Expand sidebar`:`Collapse sidebar`,children:(0,l.jsx)(`img`,{src:Mv,alt:``,"aria-hidden":`true`})}),(0,l.jsx)(`div`,{className:`app-sidebar-body`,children:(0,l.jsx)(s.Menu,{mode:`inline`,theme:`dark`,selectedKeys:c,openKeys:e?[]:i,items:u,onClick:p,onOpenChange:a,className:`app-sidebar-menu`})})]})})}var Ty=`You're not logged in`,Ey=`You haven't logged into this session. Please login to access the data.`;function Dy(){try{return!!t.u()}catch{return!1}}function Oy({children:e,title:t=Ty,message:n=Ey,loginPath:r=`/login`,loginLabel:i=`Go to Login`,onLogin:a,fallback:u}){let[d,f]=(0,o.useState)(Dy);return(0,o.useEffect)(()=>{let e=()=>f(Dy());return window.addEventListener(`auth:login`,e),window.addEventListener(`auth:logout`,e),window.addEventListener(`storage`,e),window.addEventListener(`focus`,e),()=>{window.removeEventListener(`auth:login`,e),window.removeEventListener(`auth:logout`,e),window.removeEventListener(`storage`,e),window.removeEventListener(`focus`,e)}},[]),d?e:u===void 0?(0,l.jsx)(`div`,{className:`ct-auth-guard`,children:(0,l.jsx)(`div`,{className:`ct-auth-guard__card`,children:(0,l.jsx)(s.Result,{status:`403`,icon:(0,l.jsx)(c.LockOutlined,{className:`ct-auth-guard__icon`}),title:t,subTitle:n,extra:(0,l.jsx)(s.Button,{type:`primary`,size:`large`,onClick:()=>{if(typeof a==`function`){a();return}typeof window<`u`&&window.location.assign(r)},children:i})})})}):u}Oy.propTypes={children:f.default.node,title:f.default.node,message:f.default.node,loginPath:f.default.string,loginLabel:f.default.node,onLogin:f.default.func,fallback:f.default.node};var ky={"candidate-onboarding":`onboarding`,"candidate-assignment":`assignments`,candidate:`candidates`,job:`jobs`,submission:`submissions`,client:`clients`,employer:`employers`,referral:`referrals`,timesheet:`timesheets`},Ay=new Set([``,`dashboard`,`my-profile`,`profile`,`viewall-sticky`,`select-project`,`addtestcase`,`managemodules`,`viewtestcase`,`test-cases`,`zinnext-home`,`lms-home`,`test`]);function jy(e){return String(e??``).split(`?`)[0].split(`#`)[0].replace(/^\/+/,``).split(`/`)[0].trim().toLowerCase()}function My(e){let t=jy(e);return!t||Ay.has(t)?``:ky[t]??t}function Ny({children:e}){let t=(0,d.useLocation)(),n=(0,d.useNavigate)(),r=My(t.pathname),{canView:i}=lr(r);if(r&&!i){let e=r.replace(/[-_]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase());return(0,l.jsx)(`div`,{className:`ct-auth-guard`,children:(0,l.jsx)(`div`,{className:`ct-auth-guard__card`,children:(0,l.jsx)(s.Result,{status:`403`,icon:(0,l.jsx)(c.LockOutlined,{className:`ct-auth-guard__icon`}),title:`Access Denied`,subTitle:`You do not have View access to the ${e} module. Please contact your administrator if you need access.`,extra:(0,l.jsx)(s.Button,{type:`primary`,size:`large`,onClick:()=>n(`/dashboard`),children:`Go to Dashboard`})})})})}return e}var Py=60;function Fy({children:e}){let[t,n]=(0,o.useState)(!0);return(0,l.jsxs)(`div`,{className:`app-layout-shell`,children:[(0,l.jsx)(wy,{collapsed:t,onToggle:()=>n(e=>!e)}),(0,l.jsx)(ty,{leftOffset:60}),(0,l.jsx)(`main`,{className:`app-layout-main`,style:{marginLeft:60,paddingTop:Py},children:(0,l.jsx)(`div`,{className:`app-layout-content`,children:(0,l.jsx)(Oy,{children:(0,l.jsx)(Ny,{children:e??(0,l.jsx)(d.Outlet,{})})})})})]})}function Iy({onLogin:e,defaultRedirectPath:r=`/`}){let[i,a]=(0,o.useState)(!1),[u,f]=(0,o.useState)(``),p=(0,d.useNavigate)(),m=(0,d.useLocation)(),h=m.state?.from?.pathname||r,g=new URLSearchParams(m.search).get(`session_expired`)===`1`;async function _(n){f(``),a(!0);try{let r=await t.m({email:n.email,user_pwd:n.user_pwd});if(e?.(r),t.p()){p(`/select-project`,{replace:!0});return}p(h,{replace:!0})}catch(e){f(e.message||`Unable to login. Please check your credentials.`)}finally{a(!1)}}return(0,l.jsxs)(`div`,{className:`auth-login-page`,children:[(0,l.jsx)(`section`,{className:`auth-login-bg`,style:{background:n.On.brand},children:(0,l.jsxs)(`div`,{className:`auth-login-static-section`,children:[(0,l.jsx)(`div`,{children:(0,l.jsx)(`img`,{src:Ov,alt:``,className:`auth-login-img-one`})}),(0,l.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,l.jsx)(`img`,{src:kv,alt:``,className:`auth-login-img-two`})}),(0,l.jsx)(n.En,{as:`p`,variant:`body`,color:`inverse`,size:`2xl`,weight:`regular`,align:`right`,className:`auth-login-tagline`,children:`Best in class processes in a box.`})]})}),(0,l.jsx)(`section`,{className:`auth-login-form-layout`,children:(0,l.jsx)(`div`,{className:`auth-login-form-container`,children:(0,l.jsxs)(`div`,{className:`auth-login-form-shell`,children:[g&&(0,l.jsx)(`div`,{className:`auth-login-session-expired-container`,children:(0,l.jsx)(`div`,{className:`auth-login-slide-in`,children:(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,icon:(0,l.jsx)(c.ExclamationCircleFilled,{style:{fontSize:30,color:`#FFC107`}}),message:(0,l.jsxs)(`div`,{className:`auth-login-alert-message-container`,children:[(0,l.jsx)(s.Divider,{className:`auth-login-alert-divider`,type:`vertical`}),(0,l.jsx)(`div`,{className:`auth-login-alert-text`,children:`Session expired. Please log in again.`})]}),className:`auth-login-session-expired-alert`})})}),(0,l.jsxs)(`div`,{className:`auth-login-brand`,children:[(0,l.jsx)(`img`,{src:`/favicon.ico`,alt:``,className:`auth-login-logo`}),(0,l.jsx)(n.En,{variant:`h3`,color:`primary`,weight:`bold`,className:`auth-login-brand-text`,children:`Zinnext`})]}),(0,l.jsx)(`div`,{className:`auth-login-body`,children:(0,l.jsxs)(`div`,{className:`auth-login-sign-body`,children:[(0,l.jsx)(n.En,{variant:`h2`,color:`primary`,weight:`bold`,align:`center`,className:`auth-login-title`,children:`Sign in`}),(0,l.jsx)(`div`,{className:`auth-login-form-con`,children:(0,l.jsxs)(s.Form,{className:`v1-form auth-login-form`,layout:`vertical`,requiredMark:!1,onFinish:_,autoComplete:`off`,children:[(0,l.jsx)(s.Form.Item,{label:`Email`,name:`email`,rules:[{type:`email`,required:!0,message:`Enter valid email.`}],children:(0,l.jsx)(s.Input,{size:`large`,placeholder:`Your work email`,autoComplete:`email`})}),(0,l.jsx)(s.Form.Item,{label:`Password`,name:`user_pwd`,rules:[{required:!0,message:`Mandatory field.`}],children:(0,l.jsx)(s.Input.Password,{size:`large`,placeholder:`Enter password`,autoComplete:`current-password`})}),(0,l.jsx)(s.Form.Item,{className:`auth-login-forgot-row`,children:(0,l.jsx)(s.Button,{type:`link`,className:`auth-login-forgot`,htmlType:`button`,children:`Forgot Password?`})}),u&&(0,l.jsx)(s.Form.Item,{children:(0,l.jsx)(n.En,{color:`danger`,variant:`body`,children:u})}),(0,l.jsx)(s.Button,{className:`auth-login-submit`,block:!0,size:`large`,type:`primary`,htmlType:`submit`,loading:i,id:`znxt-signin`,children:`Sign in`}),(0,l.jsx)(s.Form.Item,{className:`auth-login-divider-row`,children:(0,l.jsx)(s.Divider,{children:`Or`})}),(0,l.jsxs)(n.En,{as:`p`,variant:`body`,color:`secondary`,align:`center`,className:`auth-login-signup-text`,children:[`Not registered yet?`,` `,(0,l.jsx)(s.Button,{type:`link`,htmlType:`button`,className:`auth-login-signup`,id:`znxt-signup`,children:`Sign up`})]})]})})]})})]})})})]})}var Ly=e.t({addCTFlow:()=>ab,addCTModule:()=>$y,addCTSubmodule:()=>nb,addLmsFlow:()=>Yy,addTestFlow:()=>Gy,addTestingOption:()=>Uy,bulkInsertTestSteps:()=>Jy,deleteCTFlow:()=>lb,getActionFieldRules:()=>Wy,getCTFlow:()=>ob,getCTFlows:()=>ib,getCTModules:()=>Qy,getCTNextStep:()=>sb,getCTProjects:()=>Zy,getCTSubmodules:()=>tb,getLmsFlows:()=>Xy,getTestFlows:()=>Ky,getTestingOptions:()=>Hy,setCTModuleStatus:()=>eb,setCTSubmoduleStatus:()=>rb,updateCTFlow:()=>cb,validateTestSteps:()=>qy});async function Ry(e){return t.t(t.x,e)}async function zy(e,n){let r=await t.o(t.x,e,{method:`POST`,body:JSON.stringify(n)});return r.data??r}async function By(e,n){let r=await t.o(t.x,e,{method:`PUT`,body:JSON.stringify(n)});return r.data??r}async function Vy(e){let n=await t.o(t.x,e,{method:`DELETE`});return n.data??n}async function Hy(e){return Ry(`/testing-modules?type=${encodeURIComponent(e)}`)}async function Uy({name:e,type:t}){return zy(`/testing-modules`,{name:e,type:t})}async function Wy(){return Ry(`/test-action-field-rules`)}async function Gy(e){return zy(`/test-flows`,e)}async function Ky({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),Ry(`/test-flows?${s.toString()}`)}async function qy(e){return zy(`/test-steps/validate`,e)}async function Jy(e){return zy(`/test-steps/bulk-insert`,e)}async function Yy(e){return zy(`/lms-flows`,e)}async function Xy({limit:e=10,offset:t=0,search:n=``,module:r=``,keyword:i=``,tags:a=``,active:o}={}){let s=new URLSearchParams({limit:String(e),offset:String(t)});return n&&s.append(`search`,n),r&&s.append(`module`,r),i&&s.append(`keyword`,i),a&&s.append(`tags`,a),o!=null&&o!==``&&s.append(`active`,String(o)),Ry(`/lms-flows?${s.toString()}`)}async function Zy({activeOnly:e=!1}={}){let t=new URLSearchParams;e&&t.append(`active`,`1`);let n=t.toString();return Ry(`/ct/projects${n?`?${n}`:``}`)}async function Qy({project:e=``,activeOnly:t=!1}={}){let n=new URLSearchParams;e&&n.append(`project`,e),t&&n.append(`active`,`1`);let r=n.toString();return Ry(`/ct/modules${r?`?${r}`:``}`)}async function $y({project:e,modulename:t}){return zy(`/ct/modules`,{project:e,modulename:t})}async function eb(e,t){return By(`/ct/modules/status`,{id:e,active:t})}async function tb({project:e=``,module:t=``,activeOnly:n=!1}={}){let r=new URLSearchParams;e&&r.append(`project`,e),t&&r.append(`module`,t),n&&r.append(`active`,`1`);let i=r.toString();return Ry(`/ct/submodules${i?`?${i}`:``}`)}async function nb({project:e,modulename:t,submodulename:n}){return zy(`/ct/submodules`,{project:e,modulename:t,submodulename:n})}async function rb(e,t){return By(`/ct/submodules/status`,{id:e,active:t})}async function ib({project:e=``,module:t=``,submodule:n=``,product_parent_ID:r=``,module_parent_ID:i=``,submodule_parent_ID:a=``,actions:o=``,search:s=``,active:c,limit:l=1e3,offset:u=0}={}){let d=new URLSearchParams({limit:String(l),offset:String(u)}),f=r||e,p=i||t,m=a||n;return f&&d.append(`product_parent_ID`,f),p&&d.append(`module_parent_ID`,p),m&&d.append(`submodule_parent_ID`,m),o&&d.append(`actions`,o),s&&d.append(`search`,s),c!=null&&c!==``&&d.append(`active`,String(c)),Ry(`/ct/flows?${d.toString()}`)}async function ab(e){return zy(`/ct/flows`,e)}async function ob(e){return Ry(`/ct/flows/${encodeURIComponent(e)}`)}async function sb({project:e,module:t,submodule:n,product_parent_ID:r,module_parent_ID:i,submodule_parent_ID:a}){return Ry(`/ct/flows/next-step?${new URLSearchParams({product_parent_ID:String(r||e),module_parent_ID:String(i||t),submodule_parent_ID:String(a||n)}).toString()}`)}async function cb(e,t){return By(`/ct/flows/${encodeURIComponent(e)}`,t)}async function lb(e){return Vy(`/ct/flows/${encodeURIComponent(e)}`)}var ub=`zinnext`;function db(){let[e]=s.Form.useForm(),r=(0,d.useNavigate)(),[i,a]=(0,o.useState)([]),[u,f]=(0,o.useState)(!1),[p,m]=(0,o.useState)(``);(0,o.useEffect)(()=>{let n=!0;return Promise.resolve().then(()=>Zy({activeOnly:!0})).then(r=>{if(!n)return;let i=r?.items??[];a(i);let o=t.l(),s=i.find(e=>e.id===o?.id)||i.find(e=>e.projectname?.toLowerCase()===ub)||i[0];s&&e.setFieldsValue({project:s.id})}).catch(e=>{console.error(`Unable to load projects:`,e),n&&m(`Unable to load projects. Please try again.`)}),()=>{n=!1}},[e]);function h(e){let n=i.find(t=>t.id===e.project);if(!n){m(`Please select a project.`);return}f(!0),t._({id:n.id,name:n.projectname}),r(`/addTestCase`,{replace:!0})}return(0,l.jsxs)(`div`,{className:`auth-login-page`,children:[(0,l.jsx)(`section`,{className:`auth-login-bg`,style:{background:n.On.brand},children:(0,l.jsxs)(`div`,{className:`auth-login-static-section`,children:[(0,l.jsx)(`div`,{children:(0,l.jsx)(`img`,{src:Ov,alt:``,className:`auth-login-img-one`})}),(0,l.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,l.jsx)(`img`,{src:kv,alt:``,className:`auth-login-img-two`})}),(0,l.jsx)(n.En,{as:`p`,variant:`body`,color:`inverse`,size:`2xl`,weight:`regular`,align:`right`,className:`auth-login-tagline`,children:`Best in class processes in a box.`})]})}),(0,l.jsx)(`section`,{className:`auth-login-form-layout`,children:(0,l.jsx)(`div`,{className:`auth-login-form-container`,children:(0,l.jsxs)(`div`,{className:`auth-login-form-shell`,children:[(0,l.jsxs)(`div`,{className:`auth-login-brand`,children:[(0,l.jsx)(`img`,{src:`/favicon.ico`,alt:``,className:`auth-login-logo`}),(0,l.jsx)(n.En,{variant:`h3`,color:`primary`,weight:`bold`,className:`auth-login-brand-text`,children:`Zinnext`})]}),(0,l.jsx)(`div`,{className:`auth-login-body`,children:(0,l.jsxs)(`div`,{className:`auth-login-sign-body`,children:[(0,l.jsx)(n.En,{variant:`h2`,color:`primary`,weight:`bold`,align:`center`,className:`auth-login-title`,children:`Select Project`}),(0,l.jsx)(`div`,{className:`auth-login-form-con`,children:(0,l.jsxs)(s.Form,{form:e,className:`v1-form auth-login-form`,layout:`vertical`,requiredMark:!1,onFinish:h,autoComplete:`off`,children:[(0,l.jsx)(s.Form.Item,{label:`Project`,name:`project`,rules:[{required:!0,message:`Select a project.`}],children:(0,l.jsx)(s.Select,{size:`large`,showSearch:!0,optionFilterProp:`label`,placeholder:`Select project`,prefix:(0,l.jsx)(c.ProjectOutlined,{}),options:i.map(e=>({value:e.id,label:e.projectname}))})}),p&&(0,l.jsx)(s.Form.Item,{children:(0,l.jsx)(n.En,{color:`danger`,variant:`body`,children:p})}),(0,l.jsx)(s.Button,{className:`auth-login-submit`,block:!0,size:`large`,type:`primary`,htmlType:`submit`,loading:u,id:`znxt-select-project`,children:`Continue`})]})})]})})]})})})]})}function fb(e,t){function n(n){return(0,l.jsx)(Oy,{...t,children:(0,l.jsx)(e,{...n})})}return n.displayName=`withAuthGuard(${e.displayName||e.name||`Component`})`,n}var pb=`${t.v}`;async function mb(e,n={}){let r=t.u(),i=await fetch(`${pb}${e}`,{...n,headers:{"Content-Type":`application/json`,...t.A({"X-App-Id":String(t.y)}),...r?{Authorization:`Bearer ${r}`}:{},...n.headers??{}}}),a=await i.json().catch(()=>({}));if(!i.ok)throw Error(a?.error??a?.message??`Request failed: ${i.status}`);return a?.data??a}function hb(e,t=[]){if(Array.isArray(e))return e;for(let n of[...t,`data`,`result`,`rows`,`items`])if(Array.isArray(e?.[n]))return e[n];for(let n of t){if(Array.isArray(e?.data?.[n]))return e.data[n];if(Array.isArray(e?.result?.[n]))return e.result[n]}return[]}function gb(e){let t=e.user_id??e.userId??e.UserId??e.legacyUserId??e.legacy_user_id??e.id??e._id,n=e.user_type_id??e.roleId??e.role_id??e.RoleId,r=e.first_name??e.firstName??``,i=e.last_name??e.lastName??``,a=e.reporting_id??e.reportingId??e.reportingManagerId??e.managerId??0;return{...e,user_id:t,userId:t,legacyUserId:e.legacyUserId??e.legacy_user_id??t,username:e.username??e.userName??e.user_name??`${r}${i}`.trim(),userName:e.userName??e.username??e.user_name??`${r}${i}`.trim(),first_name:r,firstName:r,last_name:i,lastName:i,email:e.email,mobile:e.mobile??e.phoneNumber??e.phone_number??e.mobile_number,mobileNumber:e.mobileNumber??e.mobile_number??e.mobile??e.phoneNumber??e.phone_number,user_type_id:n,role_id:n,roleId:n,reporting_id:a,reportingId:a,profile_image:e.profile_image??e.photoLocation??e.photo_location,status:yb(e.status??e.active_status)}}function _b(e){let t=e.user_type_id??e.role_id??e.roleId??e.id;return{...e,user_type_id:t,user_type_name:e.user_type_name??e.role_name??e.roleName??e.name,description:e.description??e.role_description??e.roleDescription??``,status:yb(e.status??e.active_status??`ACTIVE`)}}function vb(e){let t=e.menu_id??e.menuId??e.legacyMenuId??e.id,n=e.parent_menu_id??e.parentMenuId,r=e.menu_name??e.menuName??e.name??e.label;return{...e,menu_id:t,menu_name:r,menu_key:e.menu_key??e.menuKey??e.key,api_url:e.api_url??e.apiUrl??e.route??``,menu_type:e.menu_type??e.menuType??e.placement??`MENU`,parent_menu_id:n||null,component_name:e.component_name??e.componentName??``,display_order:e.display_order??e.displayOrder??t??0,status:yb(e.status)}}function yb(e){if(e===!0||e===1||e===`1`)return`ACTIVE`;let t=String(e??`ACTIVE`).trim().toUpperCase();return t===`ACTIVE`||t===`ENABLED`?`ACTIVE`:`INACTIVE`}function bb(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function xb(e){if(e==null||e===``)return 0;let t=Number(e);return Number.isFinite(t)&&t>0?t:e}function Sb(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}function Cb(){return{tenantId:localStorage.getItem(`tenantId`)||void 0,businessId:localStorage.getItem(`businessId`)||void 0,businessUnitId:localStorage.getItem(`businessUnitId`)||void 0}}function wb(e){let n=e.username??e.user_name??e.userName,r=e.first_name??e.firstName??``,i=e.last_name??e.lastName??``,a=bb(e.user_type_id??e.role_id??e.roleId),o=xb(e.reporting_id??e.reportingId??e.managerId),s=e.mobile??e.mobileNumber??e.mobile_number??e.phone_number,c=yb(e.status??e.activeStatus)===`ACTIVE`,l=String(t.y),u=Sb(e.updated_by??e.updatedBy),d=Sb(e.created_by??e.createdBy);return{...e,...Cb(),appId:l,app_id:l,userName:n,user_name:n,username:n,firstName:r,first_name:r,lastName:i,last_name:i,email:e.email,user_pwd:e.password??e.user_pwd,password:e.password??e.user_pwd,phoneNumber:s,phone_number:s,mobileNumber:s,mobile_number:s,roleId:a,role_id:a,user_type_id:a,reportingId:o,reporting_id:o,activeStatus:c,status:c?`ACTIVE`:`INACTIVE`,statusText:c?`ACTIVE`:`INACTIVE`,updatedBy:u,updated_by:u,createdBy:d,created_by:d}}function Tb(e){let t=String(e.menu_type??e.menuType??e.placement??`MENU`).toUpperCase();return{...e,menuName:e.menu_name,name:e.menu_name,menuKey:e.menu_key,key:e.menu_key,parentMenuId:Number(e.parent_menu_id??0),placement:t===`FOOTER`?`footer`:`main`,icon:e.icon,status:e.status}}function Eb(e){if(e&&typeof e==`object`&&!Array.isArray(e))return Eb(e.value??e.access_value??e.accessValue??e.permissionValue??e.enabled);if(e===!0||e===1||e===`1`)return!0;let t=String(e??``).trim().toLowerCase();return t===`true`||t===`yes`||t===`active`}function Db(e){return Eb(e)?`1`:`0`}function Ob(e){return(Array.isArray(e)?e:Object.entries(e??{}).map(([e,t])=>({...t,menu_name:e}))).map(e=>{let t=e.menu_id??e.menuId,n=e.menu_name??e.menuName??e.name??String(t??``),r=Object.entries(e.permissions??{}).reduce((e,[t,n])=>(e[t]={...n,permission_id:n?.permission_id??n?.permissionId??n?.id,permission_key:n?.permission_key??n?.permissionKey??t,value:Db(n?.value??n?.access_value??n?.accessValue??n?.permissionValue??n?.enabled??n)},e),{});return{...e,menu_id:t,menu_name:n,menu_key:e.menu_key??e.menuKey??n,permissions:r}})}function kb(e,t,n=[]){return{roleId:e,menus:t.reduce((e,t)=>{let n=t.menu_name??t.menuName??t.menu_key??String(t.menu_id),r=t.permission_key??t.permissionKey;return r?(e[n]||(e[n]={menuId:t.menu_id??t.menuId,permissions:{}}),e[n].permissions[r]={id:t.permission_id??t.permissionId,value:Db(t.access_value??t.accessValue??t.value??t.permissionValue??t.enabled)},e):e},{}),menuOrder:n}}function Ab({limit:e=10,offset:t=0,search:n=``,type:r=``,sort:i=``}={}){let a=new URLSearchParams({limit:String(e),offset:String(t)});return n&&a.set(`searchquery`,n),r&&a.set(`type`,r),i&&a.set(`sortBy`,i),mb(`/get-all-users?${a.toString()}`).then(e=>({users:hb(e,[`users`]).map(gb),total:Number(e?.totalCount??e?.total??0)||0}))}function jb(e){return mb(`/get-users?roleId=${encodeURIComponent(e)}`).then(e=>hb(e,[`users`]).map(gb))}function Mb(e){return mb(`/create-user`,{method:`POST`,body:JSON.stringify(wb(e))})}function Nb(e,t){return mb(`/update-user?userId=${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(wb(t))})}function Pb(e){return mb(`/delete-user?userId=${encodeURIComponent(e)}`,{method:`PUT`})}function Fb(){return mb(`/get-roles`).then(e=>[...hb(e,[`zinnext_default`]),...hb(e,[`custom_roles`])].map(_b))}function Ib(e){return mb(`/add-custom-role`,{method:`POST`,body:JSON.stringify({importedPermissionId:Number(e.imported_permission_id??0),newRoleName:e.user_type_name,roleDescription:e.description??``,menuIds:e.visible_menu_ids??[]})}).then(_b)}function Lb(e,t){return mb(`/custom-roles/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({roleName:t.user_type_name,role_name:t.user_type_name,roleDescription:t.description??``,description:t.description??``,status:+(yb(t.status)===`ACTIVE`),statusText:yb(t.status)})}).then(_b)}function Rb(e){return mb(`/custom-roles/${encodeURIComponent(e)}`,{method:`DELETE`})}function zb(){return mb(`/admin/menu-modules`).then(e=>hb(e).map(vb))}function Bb(e){return mb(`/admin/menu-modules`,{method:`POST`,body:JSON.stringify(Tb(e))})}function Vb(e,t){return mb(`/admin/menu-modules/${e}`,{method:`PUT`,body:JSON.stringify(Tb(t))})}function Hb(e){return mb(`/admin/menu-modules/${e}`,{method:`DELETE`})}function Ub(){return mb(`/admin/menu-actions`)}function Wb(e){return mb(`/get-role-details?roleid=${encodeURIComponent(e)}`).then(Ob)}function Gb(e,t){return mb(`/edit-role-details`,{method:`PUT`,body:JSON.stringify(kb(e,t,[...new Set(t.map(e=>e.menu_key??e.menuName??e.menu_name).filter(Boolean))]))})}var Kb={po:[],msa:[],sourcing:[`jobs`],assign:[`jobs`],approve:[`submissions`,`onboarding`,`assignments`,`timesheet`,`vendors`,`test cases`],move_onboard:[`submissions`],change_status:[`jobs`,`candidates`,`submissions`,`onboarding`,`assignments`],candidate_self:[`candidates`],candidate_all:[`candidates`],my_jobs:[`jobs`],all_jobs:[`jobs`],reject:[`submissions`,`onboarding`,`assignments`,`timesheet`,`vendors`,`test cases`],viewProposedRate:[`submissions`],po_msa:[`onboarding`],reApprove:[`onboarding`],sendApprove:[`onboarding`]};function qb(e,t){let n=String(t??``).trim().toLowerCase(),r=Object.keys(Kb).find(e=>e.toLowerCase()===n),i=r?Kb[r]:void 0;return!i||i.includes(String(e??``).trim().toLowerCase())}function Z({title:e,icon:t,extra:n,children:r,variant:i=`default`,...a}){let o=t||e?(0,l.jsxs)(`span`,{className:`app-card-title`,children:[t&&(0,l.jsx)(`span`,{className:`app-card-title-icon`,children:t}),e]}):void 0;return(0,l.jsx)(s.Card,{className:`app-card app-card--${i}`,title:o,extra:n,...a,children:r})}var{Text:Jb}=s.Typography,{Option:Yb}=s.Select,Xb=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`},{key:`billing`,label:`Billing`},{key:`payroll`,label:`Payroll`}],Zb=[{key:``,label:`Text`,icon:(0,l.jsx)(`span`,{style:{fontSize:14,fontWeight:700},children:`Aa`})},{key:`badge`,label:`Badge`,icon:(0,l.jsx)(c.TagsOutlined,{style:{fontSize:16}})},{key:`avatar`,label:`Avatar`,icon:(0,l.jsx)(c.UserOutlined,{style:{fontSize:16}})},{key:`link`,label:`Link`,icon:(0,l.jsx)(c.LinkOutlined,{style:{fontSize:16}})}],Qb=[{color:`#52c41a`,bg:`#f6ffed`},{color:`#1677ff`,bg:`#e6f7ff`},{color:`#fa8c16`,bg:`#fff7e6`},{color:`#ff4d4f`,bg:`#fff2f0`},{color:`#722ed1`,bg:`#f9f0ff`},{color:`#13c2c2`,bg:`#e6fffb`},{color:`#eb2f96`,bg:`#fff0f6`},{color:`#faad14`,bg:`#fffbe6`}],$b={job:`jobs`,candidate:`candidates`,submissions:`submissions`,billing:`billing`,payroll:`payroll`};function ex(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function tx(e){if(typeof e==`string`)return{key:e,apiModule:e,label:ex(e)};let t=e?.menuKey??e?.key??e?.moduleKey??e?.value??e?.module??e?.apiModule??e?.name??e?.modulename??e?.menuName;return t?{key:t,apiModule:e?.apiModule??e?.api_module??e?.module??e?.value??e?.menuKey??e?.key??e?.name??e?.modulename??e?.menuName??t,label:e?.label??e?.moduleLabel??e?.moduleName??e?.name??e?.modulename??e?.menuName??ex(t)}:null}function nx(e){let t=Array.isArray(e)&&e.length?e:Xb,n=new Set,r=t.map(tx).filter(Boolean).filter(e=>!n.has(e.key)&&(n.add(e.key),!0));return r.length?r:Xb}function rx({field:e,collections:t,collFields:r,subfields:i,onCollectionChange:a,onLookupFieldChange:u,addSecondaryField:d,removeSecondaryField:f,addActionButton:p,updateActionButton:m,removeActionButton:h,moduleKey:g,fieldKey:_,update:v}){let[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)({}),[C,w]=(0,o.useState)(!1);function T(e){v(e===`common`?{commonStyle:{color:`#1677ff`,bg:`#e6f7ff`,variant:`badge`},valueStyles:[]}:{commonStyle:null})}function E(t){v({commonStyle:{...e.commonStyle??{color:`#595959`,bg:`#f5f5f5`,variant:`badge`},...t}})}function D(){v({valueStyles:[...e.valueStyles??[],{value:``,label:``,color:`#595959`,bg:`#f5f5f5`,variant:`badge`}]})}function O(t,n){let r=[...e.valueStyles??[]];r[t]={...r[t],...n},v({valueStyles:r})}function k(t){v({valueStyles:(e.valueStyles??[]).filter((e,n)=>n!==t)})}async function A(){w(!0);try{let t=await Un(e.apiModule??$b[g]??g,_,``,50,0),n=(Array.isArray(t)?t:t?.data??[]).map((e,t)=>{let n=typeof e==`object`?e.value??e.label??``:String(e),r=typeof e==`object`?e.label??e.value??``:String(e);return{value:String(n),label:String(r),variant:`badge`,...Qb[t%Qb.length]}});if(n.length===0){s.message.info(`No values found for this field`);return}v({valueStyles:n})}catch{s.message.error(`Could not detect values`)}finally{w(!1)}}async function j(e,t){S(t=>({...t,[e]:!0}));try{let r=await n.yi(t);m(e,{iconUrl:r?.iconUrl??r?.url??``,iconPath:r?.iconPath??r?.path??``})}catch{s.message.error(`Icon upload failed`)}finally{S(t=>({...t,[e]:!1}))}return!1}let M=e.renderType??``,N=!!e.commonStyle,P=e.commonStyle??{},F=e.valueStyles??[],I=e.renderConfig??{};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsx)(`div`,{className:`uss-detail-label`,children:`Display Style`}),(0,l.jsx)(`div`,{className:`uss-detail-row`,children:Zb.map(e=>(0,l.jsxs)(`button`,{className:`uss-render-type-btn${M===e.key?` active`:``}`,onClick:()=>v({renderType:e.key,commonStyle:null,valueStyles:[],renderConfig:null}),children:[e.icon,(0,l.jsx)(`span`,{children:e.label})]},e.key))}),M===`badge`&&(0,l.jsxs)(`div`,{className:`uss-badge-config`,children:[(0,l.jsxs)(s.Radio.Group,{size:`small`,value:N?`common`:`perValue`,onChange:e=>T(e.target.value),style:{marginBottom:8},children:[(0,l.jsx)(s.Radio,{value:`perValue`,children:`Per value`}),(0,l.jsx)(s.Radio,{value:`common`,children:`Same for all`})]}),N&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,flexWrap:`wrap`},children:[(0,l.jsx)(s.Tooltip,{title:`Text color`,children:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4},children:[(0,l.jsx)(`input`,{type:`color`,value:P.color||`#595959`,style:{width:28,height:24,border:`none`,cursor:`pointer`,padding:0},onChange:e=>E({color:e.target.value})}),(0,l.jsx)(Jb,{style:{fontSize:10},children:`Text`})]})}),(0,l.jsx)(s.Tooltip,{title:`Background color`,children:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4},children:[(0,l.jsx)(`input`,{type:`color`,value:P.bg||`#f5f5f5`,style:{width:28,height:24,border:`none`,cursor:`pointer`,padding:0},onChange:e=>E({bg:e.target.value})}),(0,l.jsx)(Jb,{style:{fontSize:10},children:`BG`})]})}),(0,l.jsx)(s.Select,{size:`small`,style:{width:80},value:P.variant||`badge`,options:[{value:`badge`,label:`Badge`},{value:`dot`,label:`Dot`},{value:`tag`,label:`Tag`}],onChange:e=>E({variant:e})}),(0,l.jsx)(`span`,{style:{padding:`1px 12px`,borderRadius:20,fontSize:11,fontWeight:500,color:P.color||`#595959`,background:P.bg||`#f5f5f5`},children:`Preview`})]}),!N&&(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#555`,fontWeight:600},children:`Value → Style mapping`}),(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(s.Button,{size:`small`,loading:C,onClick:A,children:`Auto-detect values`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:D,children:`Add`})]})]}),F.length===0&&(0,l.jsx)(Jb,{type:`secondary`,style:{fontSize:12},children:`Click "Auto-detect values" to populate from live data, or "Add" to map manually.`}),F.map((e,t)=>(0,l.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr 62px 62px 54px 26px`,gap:5,alignItems:`center`,marginBottom:6},children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:`raw value`,value:e.value??``,onChange:e=>O(t,{value:e.target.value})}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`display label`,value:e.label??``,onChange:e=>O(t,{label:e.target.value})}),(0,l.jsx)(s.Tooltip,{title:`Text color`,children:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:3},children:[(0,l.jsx)(`input`,{type:`color`,value:e.color||`#595959`,style:{width:28,height:24,border:`none`,cursor:`pointer`,padding:0},onChange:e=>O(t,{color:e.target.value})}),(0,l.jsx)(Jb,{style:{fontSize:10},children:`Text`})]})}),(0,l.jsx)(s.Tooltip,{title:`Background color`,children:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:3},children:[(0,l.jsx)(`input`,{type:`color`,value:e.bg||`#f5f5f5`,style:{width:28,height:24,border:`none`,cursor:`pointer`,padding:0},onChange:e=>O(t,{bg:e.target.value})}),(0,l.jsx)(Jb,{style:{fontSize:10},children:`BG`})]})}),(0,l.jsx)(`span`,{style:{padding:`1px 6px`,borderRadius:20,fontSize:11,fontWeight:500,textAlign:`center`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,color:e.color||`#595959`,background:e.bg||`#f5f5f5`},children:e.label||e.value||`…`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.CloseOutlined,{}),onClick:()=>k(t)})]},t))]})]}),(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Array item field (latest item)`}),(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,style:{width:`100%`},placeholder:i.length>0?`Select a child field from the array`:`Enter child field, e.g. clientBudgetStart`,value:I.lastItemField||void 0,options:i.map(e=>({value:e,label:e})),onChange:e=>v({renderConfig:{...I,lastItemField:e??``}}),onSearch:e=>{i.includes(e)},popupRender:e=>(0,l.jsxs)(l.Fragment,{children:[e,(0,l.jsx)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid var(--color-border-muted)`},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Custom child field`,value:I.lastItemField||``,onChange:e=>v({renderConfig:{...I,lastItemField:e.target.value.trim()}})})})]})}),(0,l.jsx)(Jb,{type:`secondary`,style:{display:`block`,marginTop:4,fontSize:10},children:`For an array such as jobPayDetails, ListView displays this field from the last array element.`})]}),M===`avatar`&&(0,l.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr 80px`,gap:8,marginTop:8},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Name field`}),(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,style:{width:`100%`},placeholder:`e.g. recruiterName`,value:I.labelField||void 0,options:i.length>0?i.map(e=>({value:e,label:e})):[],onChange:e=>v({renderConfig:{...I,labelField:e??``}})})]}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Color field (opt.)`}),(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,style:{width:`100%`},placeholder:`color`,value:I.colorField||void 0,options:i.length>0?i.map(e=>({value:e,label:e})):[],onChange:e=>v({renderConfig:{...I,colorField:e??``}})})]}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Max visible`}),(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:1,max:10,value:I.maxVisible||3,onChange:e=>v({renderConfig:{...I,maxVisible:Number(e.target.value)||3}})})]})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsx)(`div`,{className:`uss-detail-label`,children:`Display Template`}),(0,l.jsx)(hg,{value:e.displayTemplate??``,onChange:e=>v({displayTemplate:e}),placeholder:`e.g. {{firstName}} {{lastName}}`})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsx)(`div`,{className:`uss-detail-label`,children:`Default Value`}),(0,l.jsx)(s.Input,{size:`small`,allowClear:!0,value:e.defaultValue??``,onChange:e=>v({defaultValue:e.target.value}),placeholder:`Shown when data is empty, e.g. N/A`}),(0,l.jsx)(Jb,{type:`secondary`,style:{display:`block`,marginTop:4,fontSize:10},children:`Used only when this column resolves to an empty, null, missing, or unavailable value.`})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsx)(`div`,{className:`uss-detail-label`,children:`Empty / Group Value Rules`}),(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Jb,{style:{fontSize:11},children:`Treat numeric 0 as empty`}),(0,l.jsx)(Jb,{type:`secondary`,style:{display:`block`,fontSize:10},children:`Useful for integer fields where 0 means the value was not provided.`})]}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!I.treatZeroAsEmpty,onChange:e=>v({renderConfig:{...I,treatZeroAsEmpty:e}})})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Jb,{style:{fontSize:11},children:`Clean grouped template when a value is empty`}),(0,l.jsxs)(Jb,{type:`secondary`,style:{display:`block`,fontSize:10},children:[`Example: `,(0,l.jsx)(`code`,{children:`{{field1}} - {{field2}}`}),` shows only field2 when field1 is empty, without the extra dash.`]})]}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!I.cleanEmptyTemplateSeparators,onChange:e=>v({renderConfig:{...I,cleanEmptyTemplateSeparators:e}})})]})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsxs)(`div`,{className:`uss-detail-label`,children:[`Link`,(0,l.jsx)(s.Switch,{size:`small`,style:{marginLeft:8},checked:!!e.isLink,onChange:e=>v({isLink:e})})]}),e.isLink&&(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6,paddingTop:4},children:[(0,l.jsx)(hg,{value:e.linkTemplate??``,onChange:e=>v({linkTemplate:e}),placeholder:`e.g. /jobs/{{jobId}}`}),(0,l.jsxs)(`div`,{className:`uss-detail-row`,children:[(0,l.jsxs)(s.Select,{size:`small`,value:e.linkType??`internal`,onChange:e=>v({linkType:e}),style:{width:120},children:[(0,l.jsx)(Yb,{value:`internal`,children:`internal`}),(0,l.jsx)(Yb,{value:`external`,children:`external`})]}),(0,l.jsxs)(s.Select,{size:`small`,value:e.linkTarget??`_self`,onChange:e=>v({linkTarget:e}),style:{width:100},children:[(0,l.jsx)(Yb,{value:`_self`,children:`_self`}),(0,l.jsx)(Yb,{value:`_blank`,children:`_blank`})]})]})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsx)(`div`,{className:`uss-detail-label`,children:`Secondary Fields`}),(0,l.jsx)(`div`,{className:`uss-detail-row`,style:{flexWrap:`wrap`},children:(e.secondaryFields??[]).map(e=>(0,l.jsxs)(`span`,{className:`uss-secondary-tag`,children:[e,(0,l.jsx)(`button`,{onClick:()=>f(e),children:`×`})]},e))}),(0,l.jsxs)(`div`,{className:`uss-detail-row`,children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:`Add field key`,value:y,onChange:e=>b(e.target.value),onPressEnter:()=>{d(y),b(``)},style:{width:160}}),(0,l.jsx)(s.Button,{size:`small`,type:`link`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{d(y),b(``)},children:`Add`})]}),e.secondaryFields?.length>0&&(0,l.jsxs)(`div`,{style:{marginTop:4,display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`var(--color-text-muted)`},children:`Separator:`}),(0,l.jsx)(s.Input,{size:`small`,value:e.secondarySeparator??``,placeholder:`·`,style:{width:64},onChange:e=>v({secondarySeparator:e.target.value})})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsxs)(`div`,{className:`uss-detail-label`,children:[`Lookup (FK resolve)`,(0,l.jsx)(s.Switch,{size:`small`,style:{marginLeft:8},checked:!!e.lookup,onChange:e=>v({lookup:e?{collection:``,displayField:``,valueField:``,projectFields:[]}:null})})]}),e.lookup&&(0,l.jsxs)(`div`,{className:`uss-lookup-grid`,children:[(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Collection`}),(0,l.jsx)(s.Select,{size:`small`,value:e.lookup?.collection??``,onChange:a,showSearch:!0,placeholder:`Select collection`,style:{flex:1},children:t.map(e=>(0,l.jsx)(Yb,{value:e,children:e},e))})]}),(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Tenant scoped`}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.lookup?.tenantScoped,onChange:t=>u(e.fieldKey,{tenantScoped:t})})]}),(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Source Field`}),(0,l.jsx)(s.Input,{size:`small`,value:e.lookup?.localField??``,placeholder:`Defaults to ${e.fieldKey}`,onChange:t=>u(e.fieldKey,{localField:t.target.value}),style:{flex:1}})]}),r.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Value Field`}),(0,l.jsx)(s.Select,{size:`small`,value:e.lookup?.valueField??``,onChange:t=>u(e.fieldKey,{valueField:t}),placeholder:`ID field`,style:{flex:1},children:r.map(e=>(0,l.jsx)(Yb,{value:e,children:e},e))})]}),(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Display Field`}),(0,l.jsx)(s.Select,{size:`small`,value:e.lookup?.displayField??``,onChange:t=>u(e.fieldKey,{displayField:t}),placeholder:`Label field`,style:{flex:1},children:[...r,...i].map(e=>(0,l.jsx)(Yb,{value:e,children:e},e))})]})]})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsxs)(`div`,{className:`uss-detail-label`,children:[`Derived Array Value`,(0,l.jsx)(s.Switch,{size:`small`,style:{marginLeft:8},checked:!!e.derived,onChange:e=>v({derived:e?{type:`arrayField`,source:``,matchField:``,matchValue:``,valueField:``,default:null}:null})})]}),e.derived&&(0,l.jsx)(`div`,{className:`uss-lookup-grid`,children:[[`Source array`,`source`,`e.g. stages`],[`Match field`,`matchField`,`e.g. stageCode`],[`Match value`,`matchValue`,`e.g. PO_MSA`],[`Value field`,`valueField`,`e.g. status`]].map(([t,n,r])=>(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:t}),(0,l.jsx)(s.Input,{size:`small`,value:e.derived?.[n]??``,placeholder:r,onChange:t=>v({derived:{...e.derived,[n]:t.target.value}})})]},n))})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsxs)(`div`,{className:`uss-detail-label`,children:[`Computed Value`,(0,l.jsx)(s.Switch,{size:`small`,style:{marginLeft:8},checked:!!e.computed,onChange:e=>v({computed:e?{type:`arithmetic`,operator:`subtract`,operands:[],default:0}:null})})]}),e.computed&&(0,l.jsxs)(`div`,{className:`uss-lookup-grid`,children:[(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Computed Type`}),(0,l.jsx)(s.Select,{size:`small`,value:e.computed?.type===`workflowStageCount`?`workflowStageCount`:`arithmetic`,style:{flex:1},options:[{value:`arithmetic`,label:`Arithmetic`},{value:`workflowStageCount`,label:`Workflow Stage Count`}],onChange:e=>v({computed:e===`workflowStageCount`?{type:`workflowStageCount`,collection:`workflow_instances`,localField:`_id`,foreignField:`entityId`,module:g===`job`?`jobs`:g,workflowType:`HiringPipeline`,entityType:`Job`,stageId:``,default:0}:{type:`arithmetic`,operator:`subtract`,operands:[],default:0}})})]}),e.computed?.type===`workflowStageCount`?(0,l.jsxs)(l.Fragment,{children:[[[`Collection`,`collection`,`workflow_instances`],[`Source Job Field`,`localField`,`_id`],[`Workflow Entity Field`,`foreignField`,`entityId`],[`Module`,`module`,`jobs`],[`Workflow Type`,`workflowType`,`HiringPipeline`],[`Entity Type`,`entityType`,`Job`],[`Stage ID`,`stageId`,`pipeline / submitted / shortlisted`]].map(([t,n,r])=>(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:t}),(0,l.jsx)(s.Input,{size:`small`,value:e.computed?.[n]??``,placeholder:r,onChange:t=>v({computed:{...e.computed,[n]:t.target.value}})})]},n)),(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Default Count`}),(0,l.jsx)(s.Input,{size:`small`,type:`number`,value:e.computed?.default??0,onChange:t=>v({computed:{...e.computed,default:Number(t.target.value)||0}})})]}),(0,l.jsx)(Jb,{type:`secondary`,style:{fontSize:10},children:`All matching workflow_instances rows for the job are summed for this stage.`})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,l.jsx)(`span`,{className:`uss-lookup-label`,children:`Operator`}),(0,l.jsx)(s.Select,{size:`small`,value:e.computed?.operator??`subtract`,style:{flex:1},options:[`add`,`subtract`,`multiply`,`divide`,`percentage`,`ifNull`].map(e=>({value:e,label:e})),onChange:t=>v({computed:{...e.computed,type:`arithmetic`,operator:t}})})]}),(0,l.jsx)(Jb,{style:{fontSize:11},children:`Operands JSON (field or value entries)`}),(0,l.jsx)(s.Input.TextArea,{rows:3,defaultValue:JSON.stringify(e.computed?.operands??[],null,2),placeholder:`[{"field":"billRate"},{"field":"payRate"}]`,onBlur:t=>{try{let n=JSON.parse(t.target.value||`[]`);if(!Array.isArray(n))throw Error(`Operands must be an array`);v({computed:{...e.computed,type:`arithmetic`,operands:n}})}catch(e){s.message.error(e.message||`Invalid operands JSON`)}}},JSON.stringify(e.computed?.operands??[]))]})]})]}),(0,l.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,l.jsxs)(`div`,{className:`uss-detail-label`,style:{display:`flex`,justifyContent:`space-between`},children:[(0,l.jsxs)(`span`,{children:[`Action Buttons `,(0,l.jsx)(`span`,{style:{fontSize:11,fontWeight:400,color:`var(--color-text-muted)`},children:`(max 3)`})]}),(e.actionButtons??[]).length<3&&(0,l.jsx)(s.Button,{type:`link`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:p,children:`Add Icon`})]}),(e.actionButtons??[]).map((e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`div`,{className:`uss-action-btn-row`,children:[(0,l.jsx)(s.Upload,{showUploadList:!1,beforeUpload:e=>(j(t,e),!1),accept:`image/*`,children:(0,l.jsx)(s.Tooltip,{title:`Click to upload icon`,children:(0,l.jsx)(`div`,{className:`uss-action-btn-icon-slot`,children:x[t]?(0,l.jsx)(s.Spin,{size:`small`}):e.iconUrl?(0,l.jsx)(`img`,{src:e.iconUrl,alt:`action-${t}`,style:{width:`100%`,height:`100%`,objectFit:`cover`}}):(0,l.jsx)(c.UploadOutlined,{style:{color:`#aaa`,fontSize:14}})})})}),(0,l.jsx)(s.Input,{size:`small`,value:e.name??``,onChange:e=>m(t,{name:e.target.value}),placeholder:`Tooltip (e.g. Edit)`,style:{width:110}}),(0,l.jsxs)(s.Radio.Group,{size:`small`,value:e.type??`page`,onChange:e=>m(t,{type:e.target.value}),children:[(0,l.jsx)(s.Radio,{value:`page`,children:`Page`}),(0,l.jsx)(s.Radio,{value:`popup`,children:`Popup`})]}),(0,l.jsx)(s.Input,{size:`small`,value:e.routeUrl??``,onChange:e=>m(t,{routeUrl:e.target.value}),placeholder:`Route URL (e.g. /jobs/:_id)`,prefix:(0,l.jsx)(c.LinkOutlined,{style:{color:`#bbb`}}),style:{flex:1}}),(0,l.jsx)(s.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>h(t),children:`✕`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,paddingLeft:36},children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#999`,whiteSpace:`nowrap`},children:`Permission:`}),(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,value:e.permissionKey||void 0,onChange:e=>m(t,{permissionKey:e??``}),placeholder:`Always visible`,style:{width:180},options:[{value:`edit`},{value:`delete`},{value:`add`},{value:`view`}]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,paddingLeft:36,marginTop:4,flexWrap:`wrap`},children:[(0,l.jsx)(Jb,{style:{fontSize:11,color:`#999`,whiteSpace:`nowrap`},children:`Show only if:`}),(0,l.jsx)(s.Input,{size:`small`,value:e.showIfField??``,onChange:e=>m(t,{showIfField:e.target.value}),placeholder:`field (e.g. createdBy)`,style:{width:180}}),(0,l.jsx)(s.Select,{size:`small`,value:e.showIfOperator||`eq`,style:{width:130},onChange:e=>m(t,{showIfOperator:e}),options:ix}),![`isEmpty`,`notEmpty`].includes(e.showIfOperator||`eq`)&&(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.showIfValue?[e.showIfValue]:[],style:{width:200},onChange:e=>m(t,{showIfValue:e[e.length-1]??``}),placeholder:`value or {currentUserId}`,options:[{value:`{currentUserId}`,label:`{currentUserId} — signed-in user`}],filterOption:(e,t)=>(t?.label??t?.value??``).toLowerCase().includes(e.toLowerCase())}),e.showIfField&&(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.CloseOutlined,{}),onClick:()=>m(t,{showIfField:``,showIfOperator:``,showIfValue:``})})]})]},t))]})]})}var ix=[{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`},{value:`notEmpty`,label:`is not empty`},{value:`contains`,label:`contains`},{value:`includes`,label:`list includes (exact)`},{value:`notIncludes`,label:`list excludes (exact)`}],ax=[{label:`Module data (distinct)`,value:`module`},{label:`Masters collection`,value:`master`},{label:`Group value`,value:`group`}],ox=[`select`,`radio`,`checkbox`],sx=[{label:`Dropdown`,value:`dropdown`},{label:`Checkbox`,value:`checkbox`},{label:`Radio`,value:`radio`},{label:`Date Range`,value:`datepicker`},{label:`Number Range`,value:`number-range`}];function cx({field:e,update:t,configType:n,collections:r,collFields:i,onCollectionChange:a,onLookupFieldChange:o,availableFields:c=[]}){let u=ox.includes(e.type),d=!!e.lookup;function f(e){t({lookup:e?{collection:``,displayField:``,valueField:``,projectFields:[]}:null})}return(0,l.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Editable`}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>t({isEditable:e})})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Mandatory`}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>t({ismandatory:e})})]}),n===`filter`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Value Input`}),(0,l.jsx)(s.Select,{size:`small`,value:e.filterInputType??`dropdown`,onChange:e=>t({filterInputType:e}),options:sx,style:{width:140}})]}),n===`filter`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Default`}),(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.isDefaultFilter,onChange:e=>t({isDefaultFilter:e})})]}),n===`filter`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Lookup`}),(0,l.jsx)(s.Switch,{size:`small`,checked:d,onChange:f})]}),n===`filter`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,minWidth:360},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Group Value Fields`}),(0,l.jsx)(s.Select,{size:`small`,mode:`multiple`,allowClear:!0,value:Array.isArray(e.filterGroupFields)?e.filterGroupFields:[],onChange:e=>t({filterGroupFields:e}),options:(c??[]).map(e=>({label:e.fieldName??e.label??e.fieldKey,value:e.fieldKey})).filter(e=>e.value),placeholder:`e.g. First Name + Last Name`,style:{minWidth:250}})]}),(e.filterGroupFields??[]).length>1&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Group Separator`}),(0,l.jsx)(s.Input,{size:`small`,value:e.filterGroupSeparator??` `,onChange:e=>t({filterGroupSeparator:e.target.value}),placeholder:`space`,style:{width:90}})]})]}),n===`filter`&&d&&(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,l.jsx)(s.Select,{size:`small`,value:e.lookup?.collection||void 0,onChange:a,showSearch:!0,placeholder:`Collection`,style:{width:160},options:(r??[]).map(e=>({label:e,value:e}))}),(i??[]).length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Select,{size:`small`,value:e.lookup?.valueField||void 0,onChange:t=>o(e.fieldKey,{valueField:t}),showSearch:!0,placeholder:`Value field (ID)`,style:{width:160},options:(i??[]).map(e=>({label:e,value:e}))}),(0,l.jsx)(s.Input,{size:`small`,value:e.lookup?.displayField??``,onChange:t=>o(e.fieldKey,{displayField:t.target.value}),placeholder:`Display field (e.g. name)`,style:{width:180}})]})]}),u&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Source`}),(0,l.jsx)(s.Select,{size:`small`,value:e.dataSource??`module`,onChange:e=>t({dataSource:e,groupName:``}),options:ax,style:{width:170}})]}),(e.dataSource??`module`)===`group`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(Jb,{style:{fontSize:12},children:`Group Name`}),(0,l.jsx)(s.Input,{size:`small`,value:e.groupName??``,onChange:e=>t({groupName:e.target.value}),placeholder:`e.g. skills`,style:{width:120}})]})]})]})}function lx({field:e,index:t,configType:r,moduleKey:i,onUpdate:a,onReorder:u,collections:d,onFetchCollFields:f,dragFromRef:p,availableFields:m}){let[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(e.fieldName),[x,S]=(0,o.useState)([]),[C,w]=(0,o.useState)([]),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(!1);(0,o.useEffect)(()=>{queueMicrotask(()=>{b(e.fieldName)})},[e.fieldName]),(0,o.useEffect)(()=>{if(!h||r!==`listView`||!e.fieldKey)return;let t=!1,a=e.apiModule??$b[i]??i;return n._r(a,e.fieldKey).then(e=>{t||w(Array.isArray(e)?e:[])}).catch(()=>{t||w([])}),()=>{t=!0}},[h,r,e.apiModule,e.fieldKey,i]);function k(e){p.current=t,e.dataTransfer.effectAllowed=`move`,O(!0)}function A(){O(!1),E(!1)}function j(e){e.preventDefault(),E(!0)}function M(){E(!1)}function N(e){e.preventDefault(),E(!1),p.current!==null&&p.current!==t&&u(p.current,t),p.current=null}function P(e){a(t,e)}function F(){v(!1);let t=y.trim();t&&t!==e.fieldName?P({fieldName:t}):b(e.fieldName)}async function I(t){P({lookup:{...e.lookup,collection:t,displayField:``,valueField:``,projectFields:[]}});let n=await f(t);S(n)}async function L(t,r){if(P({lookup:{...e.lookup,...r}}),r.valueField)try{w(await n._r(i,t))}catch{w([])}}function R(t){let n=e.secondaryFields??[];!t||n.includes(t)||P({secondaryFields:[...n,t]})}function z(t){P({secondaryFields:(e.secondaryFields??[]).filter(e=>e!==t)})}function B(){let t=e.actionButtons??[];t.length>=3||P({actionButtons:[...t,{name:``,iconUrl:``,iconPath:``,type:`page`,routeUrl:``,permissionKey:``}]})}function V(t,n){let r=[...e.actionButtons??[]];r[t]={...r[t],...n},P({actionButtons:r})}function ee(t){let n=[...e.actionButtons??[]];n.splice(t,1),P({actionButtons:n})}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{draggable:!0,onDragStart:k,onDragEnd:A,onDragOver:j,onDragLeave:M,onDrop:N,className:`uss-field-row${T?` drag-over`:``}${D?` dragging`:``}`,style:{gridTemplateColumns:`24px 1fr 80px 56px`},children:[(0,l.jsx)(`span`,{className:`uss-drag-handle`,children:(0,l.jsx)(c.HolderOutlined,{})}),(0,l.jsxs)(`span`,{className:`uss-field-name`,children:[e.isVirtual&&(0,l.jsx)(`span`,{className:`uss-virtual-tag`,children:`virtual`}),_?(0,l.jsx)(`input`,{autoFocus:!0,value:y,onChange:e=>b(e.target.value),onBlur:F,onKeyDown:t=>{t.key===`Enter`&&F(),t.key===`Escape`&&(v(!1),b(e.fieldName))},onClick:e=>e.stopPropagation()}):(0,l.jsx)(s.Tooltip,{title:`Double-click to rename`,children:(0,l.jsx)(`span`,{style:{cursor:`text`,borderBottom:`1px dashed var(--color-border-muted)`},onDoubleClick:e=>{e.stopPropagation(),v(!0)},children:e.fieldName})}),(0,l.jsx)(`span`,{className:`uss-field-key`,children:e.fieldKey})]}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:e.isVisible,onChange:e=>P({isVisible:e})})}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:h?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.RightOutlined,{}),onClick:()=>g(e=>!e),style:{color:`var(--color-text-muted)`}})})]}),h&&(0,l.jsx)(`div`,{className:`uss-detail-panel`,children:r===`listView`?(0,l.jsx)(rx,{field:e,collections:d,collFields:x,subfields:C,onCollectionChange:I,onLookupFieldChange:L,addSecondaryField:R,removeSecondaryField:z,addActionButton:B,updateActionButton:V,removeActionButton:ee,moduleKey:i,fieldKey:e.fieldKey,update:P}):(0,l.jsx)(cx,{field:e,update:P,configType:r,collections:d,collFields:x,onCollectionChange:I,onLookupFieldChange:L,availableFields:m})})]})}function ux({role:e,configType:t}){let[r,i]=(0,o.useState)({}),[a,c]=(0,o.useState)({}),[u,d]=(0,o.useState)({}),[f,p]=(0,o.useState)(Xb),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)({}),[v,y]=(0,o.useState)(`job`),[b,x]=(0,o.useState)([]),S=(0,o.useRef)({}),C=(0,o.useRef)(null),w=(0,o.useCallback)(async(r=e,i=t)=>{let[a,o]=await Promise.all([n.yr().catch(()=>[]),n.vr()]),s=nx(a);if(!i||i===`listView`){let e=await n.Hr(r,i,s);return{tabs:s,colls:o,fields:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.fields])),visibilityModes:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.dataVisibilityMode??`all`])),ownerFields:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,t.dataOwnerField??`createdBy`]))}}return{tabs:s,colls:o,fields:await n.Vr(r,i,s),visibilityModes:{},ownerFields:{}}},[t,e]);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return queueMicrotask(()=>{h(!0),(async()=>{try{let{tabs:e,colls:n,fields:r,visibilityModes:a,ownerFields:o}=await w();if(t)return;p(e),x(n),y(t=>e.some(e=>e.key===t)?t:e[0]?.key??``),i(r),c(a??{}),d(o??{})}catch{t||s.message.error(`Failed to load field config`)}finally{t||h(!1)}})()}),()=>{t=!0}},[w,e]);let T=r[v]??[];function E(e,t){i(n=>({...n,[e]:typeof t==`function`?t(n[e]??[]):t}))}function D(e,t){E(v,n=>n.map((n,r)=>r===e?{...n,...t}:n))}function O(e,t){E(v,n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t}))})}async function k(e){if(S.current[e])return S.current[e];try{let t=await n.Sr(e);return S.current[e]=t,t}catch{return[]}}async function A(){let r=v;_(e=>({...e,[r]:!0}));try{await n.mi(e,r,T,t,f,a[r]??`all`,u[r]??`createdBy`),s.message.success(`Saved`)}catch{s.message.error(`Save failed`)}finally{_(e=>({...e,[r]:!1}))}}return(0,l.jsxs)(s.Spin,{spinning:m,children:[(0,l.jsx)(s.Tabs,{size:`small`,activeKey:v,onChange:y,items:f.map(e=>({key:e.key,label:e.label}))}),(!t||t===`listView`)&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,margin:`4px 0 14px`},children:[(0,l.jsx)(Jb,{strong:!0,style:{minWidth:120},children:`Data Visibility`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:290},value:a[v]??`all`,onChange:e=>c(t=>({...t,[v]:e})),options:[{value:`all`,label:`All Data`},{value:`reportingManager`,label:`Reporting Manager Wise`},{value:`self`,label:`My Created Data`}]}),(0,l.jsx)(Jb,{type:`secondary`,children:`Reporting Manager Wise shows data owned by the user and users reporting under them.`})]}),(!t||t===`listView`)&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,margin:`-4px 0 14px`},children:[(0,l.jsx)(Jb,{strong:!0,style:{minWidth:120},children:`Created By Field`}),(0,l.jsx)(s.Input,{size:`small`,style:{width:290},value:u[v]??`createdBy`,placeholder:`createdBy`,onChange:e=>d(t=>({...t,[v]:e.target.value})),onBlur:()=>d(e=>({...e,[v]:String(e[v]||``).trim()||`createdBy`}))}),(0,l.jsx)(Jb,{type:`secondary`,children:`Defaults to createdBy. Change this only when the module stores its creator/owner user ID in another field.`})]}),(0,l.jsxs)(`div`,{className:`uss-field-header`,style:{gridTemplateColumns:`24px 1fr 80px 56px`},children:[(0,l.jsx)(`span`,{}),(0,l.jsx)(`span`,{children:`Field`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,l.jsx)(`span`,{})]}),(0,l.jsxs)(`div`,{className:`uss-field-list`,children:[T.length===0&&!m&&(0,l.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),T.map((e,n)=>(0,l.jsx)(lx,{field:e,index:n,configType:t,moduleKey:v,onUpdate:D,onReorder:O,collections:b,onFetchCollFields:k,dragFromRef:C,availableFields:T},`${e.fieldKey??n}-${v}`))]}),(0,l.jsx)(`div`,{className:`uss-modal-footer`,children:(0,l.jsxs)(s.Button,{type:`primary`,size:`small`,loading:g[v],onClick:A,children:[`Save `,f.find(e=>e.key===v)?.label]})})]})}function dx(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}var fx=[`menuKey`,`menu_key`,`MENUKEY`,`module`,`key`,`moduleKey`,`value`,`apiModule`,`name`,`modulename`,`menuName`,`menu_name`,`MENUNAME`],px=[`menuName`,`menu_name`,`MENUNAME`,`label`,`moduleLabel`,`moduleName`,`name`,`modulename`];function mx(e,t){for(let n of t){let t=e?.[n];if(t==null)continue;let r=String(t).trim();if(r)return r}}function hx(e){if(typeof e==`string`)return{value:e,label:dx(e)};let t=mx(e,fx);return t?{value:t,label:mx(e,px)??dx(t)}:null}function gx(e){let t=new Set;return(Array.isArray(e)?e:[]).map(hx).filter(Boolean).filter(e=>!t.has(e.value)&&(t.add(e.value),!0))}var _x=Object.freeze({clientId:``,region:``}),{Text:vx}=s.Typography;function yx(e,t){return{...e,enabled:t,fields:e.fields.map(e=>({...e}))}}function bx(e,t){return{...e,editable:t,fields:e.fields.map(e=>({...e}))}}function xx({role:e}){let[t,r]=(0,o.useState)([]),[i,a]=(0,o.useState)(``),[u,d]=(0,o.useState)([]),[f,p]=(0,o.useState)(!1),[m,h]=(0,o.useState)(!1),g=_x,_=(0,o.useCallback)(async()=>gx(await n.yr().catch(()=>[])).map(({value:e,label:t})=>({key:e,label:t})),[]);(0,o.useEffect)(()=>{let e=!1;return queueMicrotask(()=>{_().then(t=>{e||(r(t),a(e=>t.some(t=>t.key===e)?e:t[0]?.key??``))})}),()=>{e=!0}},[_]);let v=(0,o.useCallback)(async(t,r)=>{if(!e||!t){d([]);return}p(!0);try{let i=await n.zr(e,t,r);d(Array.isArray(i)?i:[])}catch{s.message.error(`Failed to load form permissions`),d([])}finally{p(!1)}},[e]);(0,o.useEffect)(()=>{queueMicrotask(()=>{v(i,g)})},[i,g,v]);function y(e,t){d(n=>n.map(n=>n.name===e?yx(n,t):n))}function b(e,t){d(n=>n.map(n=>n.name===e?bx(n,t):n))}function x(e,t,n){d(r=>r.map(r=>r.name===e?{...r,fields:r.fields.map(e=>e.field===t?{...e,enabled:n}:e)}:r))}function S(e,t,n){d(r=>r.map(r=>r.name===e?{...r,fields:r.fields.map(e=>e.field===t?{...e,editable:n}:e)}:r))}async function C(){h(!0);try{await n.ai(e,i,u),s.message.success(`Saved`)}catch{s.message.error(`Save failed`)}finally{h(!1)}}return(0,l.jsxs)(s.Spin,{spinning:f,children:[(0,l.jsx)(s.Tabs,{size:`small`,activeKey:i,onChange:a,items:t.map(e=>({key:e.key,label:e.label}))}),(0,l.jsxs)(`div`,{className:`fg-expanded-fields`,style:{marginTop:8},children:[u.length===0&&!f&&(0,l.jsx)(s.Empty,{description:`No form groups configured for this module.`}),u.map(e=>(0,l.jsxs)(`div`,{className:`fg-field-card`,style:{flexDirection:`column`,alignItems:`stretch`},children:[(0,l.jsxs)(`div`,{className:`fg-field-card-inner`,style:{padding:`8px 12px`},children:[(0,l.jsxs)(`span`,{className:`uss-field-name`,style:{flex:1},children:[(0,l.jsx)(`strong`,{children:e.label}),e.locked&&(0,l.jsx)(s.Tooltip,{title:`Every field in this group is disabled globally in Form Groups`,children:(0,l.jsx)(c.LockOutlined,{style:{marginLeft:6,color:`var(--color-text-muted)`}})})]}),(0,l.jsxs)(s.Space,{size:16,children:[(0,l.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,l.jsx)(vx,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Show`}),(0,l.jsx)(s.Switch,{size:`small`,checked:e.enabled,disabled:e.locked,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:t=>y(e.name,t)})]}),(0,l.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,l.jsx)(vx,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Editable`}),(0,l.jsx)(s.Switch,{size:`small`,checked:e.editable!==!1,disabled:e.locked||!e.enabled,checkedChildren:`Yes`,unCheckedChildren:`No`,onChange:t=>b(e.name,t)})]})]})]}),(0,l.jsx)(`div`,{className:`fg-expanded-fields`,style:{padding:`4px 12px 10px 28px`,opacity:e.enabled?1:.5},children:e.fields.map(t=>(0,l.jsxs)(`div`,{className:`fg-field-row`,style:{justifyContent:`space-between`},children:[(0,l.jsxs)(`span`,{className:`fg-field-row-info`,children:[(0,l.jsx)(`span`,{className:`fg-field-row-label`,children:t.label}),(0,l.jsx)(`span`,{className:`fg-field-row-key`,children:t.field}),t.locked&&(0,l.jsx)(s.Tooltip,{title:`Disabled globally in Form Groups — a role can never re-enable it`,children:(0,l.jsx)(c.LockOutlined,{style:{color:`var(--color-text-muted)`}})})]}),(0,l.jsxs)(s.Space,{size:16,children:[(0,l.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,l.jsx)(vx,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Show`}),(0,l.jsx)(s.Switch,{size:`small`,checked:t.enabled,disabled:t.locked||!e.enabled,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:n=>x(e.name,t.field,n)})]}),(0,l.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,l.jsx)(vx,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Editable`}),(0,l.jsx)(s.Switch,{size:`small`,checked:t.editable!==!1,disabled:t.locked||!e.enabled||!t.enabled||e.editable===!1,checkedChildren:`Yes`,unCheckedChildren:`No`,onChange:n=>S(e.name,t.field,n)})]})]})]},t.field))})]},e.name))]}),u.length>0&&(0,l.jsx)(`div`,{className:`uss-modal-footer`,children:(0,l.jsxs)(s.Button,{type:`primary`,size:`small`,loading:m,onClick:C,children:[`Save `,t.find(e=>e.key===i)?.label]})}),(0,l.jsxs)(vx,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:8},children:[`Groups and fields are read from Form Groups. `,(0,l.jsx)(`b`,{children:`Show`}),` hides a group/field from the add & edit form; `,(0,l.jsx)(`b`,{children:`Editable`}),` keeps it visible but read-only (disabled). Everything is shown and editable by default. A role can only ever narrow what Form Groups already enables — never re-enable something disabled globally.`]})]})}var{Text:Sx,Title:Cx}=s.Typography,wx=(e,t)=>`${e}::${t}`,Tx=e=>String(e??``).trim().toLowerCase();function Ex(e){let t=Tx(e);for(let e of[`details`,`detail`])if(t.endsWith(e)){let n=t.slice(0,-e.length);if(n)return n}return``}function Dx(e,t){let[n,r]=[Tx(e),Tx(t)],i=e=>e.replace(/s$/,``);return i(Ex(n))===i(r)||i(Ex(r))===i(n)}function Ox(e){let t=new Set;return(e??[]).forEach(e=>{t.add(e.key),(e.children??[]).forEach(n=>t.add(wx(e.key,n.key)))}),t}function kx({role:e}){let t=Number(e?.roleId??0),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)(``),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(new Set),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)([]),C=(0,o.useMemo)(()=>x.filter(e=>Dx(e,a)),[x,a]);(0,o.useEffect)(()=>{n.ur().then(e=>{let t=gx(e).map(e=>e.value);i(t),u(e=>e||t[0]||``)}).catch(()=>i([])),n.Wr().then(e=>S([...new Set((Array.isArray(e)?e:[]).map(e=>String(e?.module??``).trim()).filter(Boolean))])).catch(()=>S([]))},[]);let w=(0,o.useCallback)(async()=>{if(a){m(!0);try{let e=await n.Wr(a);f(Array.isArray(e)?e:[])}catch(e){s.message.error(e.message),f([])}finally{m(!1)}}},[a]);(0,o.useEffect)(()=>{queueMicrotask(()=>{w()})},[w]);let T=(0,o.useCallback)(e=>{let t=d.filter(t=>t.roleId===e);return t.find(e=>e.module===a)??t[0]??null},[d,a]),E=(0,o.useMemo)(()=>T(0),[T]),D=(0,o.useMemo)(()=>T(t),[T,t]),O=(0,o.useMemo)(()=>E?.rowActions??D?.rowActions??[],[E,D]);(0,o.useEffect)(()=>{queueMicrotask(()=>{v(Ox(D?D.rowActions:O)),b(!1)})},[D,O]);function k(e,t,n=[]){v(r=>{let i=new Set(r);return t?(i.add(e),n.forEach(e=>i.add(e))):(i.delete(e),n.forEach(e=>i.delete(e))),i}),b(!0)}async function A(){let r=O.filter(e=>_.has(e.key)).map(e=>e.children?.length?{...e,children:e.children.filter(t=>_.has(wx(e.key,t.key)))}:e);g(!0);try{D?await n.gi(D.id??D._id,r):await n.Qn({module:a,roleId:t,rowActions:r}),s.message.success(`Actions saved for ${e?.roleName??`role`}`),await w()}catch(e){s.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&w()}finally{g(!1)}}async function j(){if(D){g(!0);try{await n.cr(D.id??D._id),s.message.success(`Role override removed — this role now inherits the default actions`),await w()}catch(e){s.message.error(e.message)}finally{g(!1)}}}let M=[{title:`Action`,key:`identity`,render:(e,t)=>(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(Sx,{strong:!0,children:t.label||t.key}),(0,l.jsx)(Sx,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`behaviour`,width:220,render:(e,t)=>(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(s.Tag,{color:`blue`,style:{width:`fit-content`},children:t.actionType}),(0,l.jsx)(Sx,{type:`secondary`,ellipsis:{tooltip:!0},style:{maxWidth:190},children:t.actionType===`group`?`${(t.children??[]).length} child action(s)`:t.popupKey||t.routeTemplate||t.apiPath||t.copyField||t.documentField||`—`})]})},{title:`Enabled for this role`,key:`enabled`,width:160,render:(e,t)=>(0,l.jsx)(s.Switch,{checked:_.has(t.key),onChange:e=>k(t.key,e,(t.children??[]).map(e=>wx(t.key,e.key)))})}],N=e=>[{title:`Child Action`,key:`identity`,render:(e,t)=>(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(Sx,{strong:!0,children:t.label||t.key}),(0,l.jsx)(Sx,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`behaviour`,width:220,render:(e,t)=>(0,l.jsx)(Sx,{type:`secondary`,children:t.popupKey||t.routeTemplate||t.apiPath||t.actionType})},{title:`Enabled`,key:`enabled`,width:160,render:(t,n)=>(0,l.jsx)(s.Switch,{disabled:!_.has(e.key),checked:_.has(wx(e.key,n.key)),onChange:t=>k(wx(e.key,n.key),t)})}];return(0,l.jsxs)(`section`,{className:`admin-editor`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Cx,{level:4,children:`Role Actions`}),(0,l.jsxs)(Sx,{type:`secondary`,children:[`Enable or disable row actions for `,e?.roleName??`this role`,`. The action library itself is managed in Configurations → Actions.`]})]}),(0,l.jsxs)(s.Space,{children:[D&&(0,l.jsx)(s.Popconfirm,{title:`Remove this role's override and inherit the default actions?`,okText:`Reset`,okType:`danger`,onConfirm:j,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.UndoOutlined,{}),loading:h,children:`Reset to Default`})}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:w,loading:p,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:h,disabled:!y||!a,onClick:A,children:`Save`})]})]}),(0,l.jsxs)(s.Space,{style:{marginBottom:12},wrap:!0,children:[(0,l.jsxs)(`label`,{children:[(0,l.jsx)(Sx,{type:`secondary`,style:{display:`block`,marginBottom:4,fontSize:12},children:`Module`}),(0,l.jsx)(s.Select,{showSearch:!0,optionFilterProp:`label`,style:{width:220},mode:`tags`,maxCount:1,value:a?[a]:[],placeholder:`Pick or type a module key`,onChange:e=>u(String(e[e.length-1]??``).trim()),options:r.map(e=>({value:e,label:e}))})]}),(0,l.jsxs)(`div`,{style:{paddingTop:20},children:[D?(0,l.jsx)(s.Tag,{color:`green`,children:`Role override active`}):(0,l.jsx)(s.Tag,{color:`orange`,children:`Inheriting default (All Roles) — Save creates an override`}),y&&(0,l.jsx)(Sx,{type:`warning`,style:{marginLeft:8},children:`Unsaved changes`})]})]}),C.length>0&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`This override also applies to: ${C.join(`, `)}`,description:`Those surfaces (e.g. the detail view) keep their own extra actions — only the ones you turn off here are hidden from them.`}),!p&&!O.length&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`No actions configured for this module yet.`,description:`Define the actions first in Configurations → Actions (Action library), then enable them per role here.`}),(0,l.jsx)(s.Spin,{spinning:p,children:(0,l.jsx)(s.Table,{dataSource:O.map((e,t)=>({...e,_rowKey:e.key||t})),rowKey:`_rowKey`,columns:M,pagination:!1,size:`small`,expandable:{rowExpandable:e=>e.actionType===`group`&&(e.children??[]).length>0,expandedRowRender:e=>(0,l.jsx)(s.Table,{dataSource:(e.children??[]).map((e,t)=>({...e,_rowKey:e.key||t})),rowKey:`_rowKey`,columns:N(e),pagination:!1,size:`small`})}})})]})}var Ax=[{label:`Equals (=)`,value:`eq`},{label:`Not equals (≠)`,value:`neq`},{label:`Has any value`,value:`truthy`},{label:`Is empty`,value:`falsy`},{label:`Is one of (comma-separated)`,value:`in`},{label:`Is not one of (comma-separated)`,value:`notIn`},{label:`Has at least one row (addRow group)`,value:`notEmpty`}],jx=[`eq`,`neq`,`in`,`notIn`],Mx=e=>jx.includes(e??`eq`),Nx=`unique`,Px=[{label:`Exact (compare as stored)`,value:`exact`},{label:`Trim whitespace`,value:`trim`},{label:`Trim + lowercase`,value:`trimLower`},{label:`Email (trim + lowercase)`,value:`email`},{label:`Digits only (phone/ID)`,value:`digitsOnly`}],Fx=[{label:`On blur (recommended)`,value:`blur`},{label:`On submit only`,value:`submit`}],Ix=`trim`,Lx=`blur`,Rx=[{label:`Look at the field (recommended)`,value:`field`},{label:`Also keep a hidden copy`,value:`index`}],zx=`field`,Bx=new Set(Rx.map(e=>e.value)),Vx=new Set([`blur`,`submit`,`change`]),Hx=new Set([`file`,`text-editor`,`checkbox`]),Ux=`Uniqueness currently supports scalar values only — a single value compared against a single stored value.`;function Wx(e={}){let t=String(e.type??`text`),n=e=>({supported:!1,reason:`${e} ${Ux}`});return Hx.has(t)?n(`${t===`text-editor`?`Rich text`:t===`file`?`File`:`Checkbox`} fields cannot be checked for uniqueness.`):t===`tagify`?n(`Tag fields store a list of values.`):e.multiSelect?n(`Multi-select fields store a list of values.`):e.multiple?n(`Multi-value fields store a list of values.`):e.addRow?n(`Repeatable fields store one value per row.`):Array.isArray(e.subFields)&&e.subFields.length?n(`Fields with sub-fields store one object per row.`):e.dataType===`array`?n(`Fields sent as an array store a list of values.`):{supported:!0,reason:``}}var Gx=/^[A-Za-z_][A-Za-z0-9_-]*$/;function Kx(e){let t=String(e??``);if(!t.trim())return`Collection field is required`;if(t!==t.trim())return`Remove the surrounding spaces`;if(t.includes(`\0`))return`Path contains a null byte`;if(t.includes(`$`))return`Path may not contain "$"`;let n=t.split(`.`);for(let e of n){if(!e)return`Path has an empty segment — use a.b, not a..b`;if(!Gx.test(e))return`Invalid path segment "${e}" — letters, digits, _ and - only`}return``}function qx(e={}){return String(e.payloadKey??``).trim()||String(e.field??``).trim()}function Jx(e={}){return{collectionField:qx(e),normalizer:Ix,skipBlank:!0,validateOn:Lx,enforcement:zx}}var Yx=new Set(Px.map(e=>e.value));function Xx(e,t={}){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},r=Jx(t),i=String(n.collectionField??``).trim()||r.collectionField,a=Yx.has(n.normalizer)?n.normalizer:r.normalizer,o=Vx.has(n.validateOn)?n.validateOn:r.validateOn,s=n.skipBlank===void 0||n.skipBlank===null?r.skipBlank:!!n.skipBlank,c=Bx.has(n.enforcement)?n.enforcement:r.enforcement,l={...n,collectionField:i,normalizer:a,skipBlank:s,validateOn:o,enforcement:c},u=$x(n.alsoCheck);return u.length?l.alsoCheck=u:delete l.alsoCheck,l}function Zx(){return{module:``,collection:``,collectionField:``,normalizer:``,message:``,excludeFrom:{path:``,matchField:``}}}function Qx(e){let t=e&&typeof e==`object`&&!Array.isArray(e)?e:{},n=t.excludeFrom&&typeof t.excludeFrom==`object`?t.excludeFrom:{},r={...t,module:String(t.module??``).trim(),collection:String(t.collection??``).trim(),collectionField:String(t.collectionField??``).trim(),normalizer:String(t.normalizer??``).trim(),message:String(t.message??``).trim()},i=String(n.path??``).trim(),a=String(n.matchField??``).trim();return i?r.excludeFrom={...n,path:i,matchField:a}:delete r.excludeFrom,r}function $x(e){return Array.isArray(e)?e.map(Qx).filter(e=>e.module||e.collection):[]}function eS(e={}){let t=[],n=String(e.module??``).trim(),r=String(e.collection??``).trim();!n&&!r&&t.push(`Name a module (preferred) or a collection to also check.`),r&&!n&&(r.includes(`.`)?t.push(`Collection must be a single name, not a path.`):Kx(r)&&t.push(`Collection: ${Kx(r)}`));let i=String(e.collectionField??``).trim();i&&Kx(i)&&t.push(`Field in that collection: ${Kx(i)}`);let a=String(e.excludeFrom?.path??``).trim();a&&Kx(a)&&t.push(`Exclusion path: ${Kx(a)}`);let o=String(e.excludeFrom?.matchField??``).trim();return o&&Kx(o)&&t.push(`Exclusion match field: ${Kx(o)}`),t}function tS(e,t={}){if(!e||e.type!==`unique`)return[];let n=[],r=Wx(t);r.supported||n.push(r.reason),String(e.message??``).trim()||n.push(`An error message is required — it is what the user sees.`);let i=e.value&&typeof e.value==`object`?e.value:{},a=Kx(i.collectionField);return a&&n.push(a),(Array.isArray(i.alsoCheck)?i.alsoCheck:[]).forEach((e,t)=>{Object.entries(e??{}).some(([e,t])=>e===`excludeFrom`?!!(String(t?.path??``).trim()||String(t?.matchField??``).trim()):!!String(t??``).trim())&&eS(e).forEach(e=>n.push(`Also check #${t+1}: ${e}`))}),n}function nS(e){return!!e&&e.type===`unique`}function rS(e){return(e?.validations??[]).some(nS)}function iS(e){return(e?.validations??[]).find(nS)??null}function aS({primaryModule:e=``,groupTargetModule:t=``,field:n={},config:r={},collectionForModule:i}={}){let a=String(t??``).trim()||String(e??``).trim();return{module:a,collection:typeof i==`function`?String(i(a)??``).trim():``,formField:String(n.field??``).trim(),storedField:String(r.collectionField??``).trim()||qx(n),isCrossModule:!!String(t??``).trim()&&String(t).trim()!==String(e??``).trim()}}var{Paragraph:oS,Text:sS}=s.Typography;function cS({open:e,scope:t,action:r,title:i,description:a,confirmLabel:u=`Confirm`,danger:d=!1,onCancel:f,onVerified:p,onConfirm:m}){let[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(``),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)(``),T=(0,o.useRef)(!1);async function E(){if(!(!t||!r)){b(!0),w(``);try{let e=await n.Xr(t,r);v(e?.data?.email||e?.email||`the registered approver`),s.message.success(`OTP sent`)}catch(e){w(e?.message||`Could not send the OTP`)}finally{b(!1)}}}(0,o.useEffect)(()=>{e&&!T.current&&(T.current=!0,g(``),w(``),v(``),E()),e||(T.current=!1)},[e]);async function D(){if(!h.trim()){w(`Enter the OTP sent to your email`);return}S(!0),w(``);try{let e=m?await m(h.trim()):await n.Wn(t,r,h.trim());s.message.success(e?.data?.message||e?.message||`Done`),p?.(e)}catch(e){w(e?.message||`Verification failed — check the code and try again`)}finally{S(!1)}}return(0,l.jsxs)(s.Modal,{open:e,onCancel:f,title:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` `,i]}),destroyOnClose:!0,maskClosable:!x,footer:[(0,l.jsx)(s.Button,{onClick:f,disabled:x,children:`Cancel`},`cancel`),(0,l.jsx)(s.Button,{type:`primary`,danger:d,loading:x,onClick:D,children:u},`ok`)],children:[a&&(0,l.jsx)(oS,{type:`secondary`,style:{fontSize:13,marginBottom:8},children:a}),(0,l.jsxs)(oS,{type:`secondary`,style:{fontSize:13},children:[`This is a protected action. A one-time code has been emailed to`,` `,(0,l.jsx)(sS,{strong:!0,children:_||`…`}),`. Enter it below to continue.`]}),(0,l.jsx)(s.Input,{size:`large`,inputMode:`numeric`,placeholder:`Enter OTP`,value:h,maxLength:6,onChange:e=>g(e.target.value.replace(/\D/g,``)),onPressEnter:D,autoFocus:!0}),C&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:C,style:{marginTop:12}}),(0,l.jsx)(`div`,{style:{marginTop:12},children:(0,l.jsx)(s.Button,{type:`link`,size:`small`,loading:y,onClick:E,style:{padding:0},children:`Resend code`})})]})}var{Text:lS}=s.Typography,uS={locked:!0,forceShow:!1,forceReq:!1},dS=(e,t)=>e.field===t.field&&e.locked===t.locked&&e.forceShow===t.forceShow&&e.forceReq===t.forceReq;function fS({moduleOptions:e=[]}){let[t,r]=(0,o.useState)(``),[i,a]=(0,o.useState)([]),[u,d]=(0,o.useState)([]),[f,p]=(0,o.useState)([]),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1);(0,o.useEffect)(()=>{!t&&e.length&&r(e[0].value)},[e,t]);let v=(0,o.useCallback)(async e=>{if(e){h(!0);try{let[t,r]=await Promise.all([n.fr(e).catch(()=>[]),n.Lr(e).catch(()=>[])]),i=new Set,o=[];(Array.isArray(t)?t:[]).forEach(e=>{(e.fields??[]).forEach(t=>{let n=String(t.field??``).trim();!n||i.has(n)||(i.add(n),o.push({value:n,label:`${t.label??n} · ${n}`,group:e.label??e.name,configuredShow:Number(t.show??0)===1,configuredReq:Number(t.req??0)===1}))})}),a(o);let s=(Array.isArray(r)?r:[]).map(n.Jr).filter(Boolean);p(s),d(s)}catch(e){s.message.error(e?.message||`Could not load default fields`)}finally{h(!1)}}},[]);(0,o.useEffect)(()=>{queueMicrotask(()=>{v(t)})},[t,v]);let y=(0,o.useMemo)(()=>{if(u.length!==f.length)return!0;let e=e=>e.field,t=[...u].sort((t,n)=>e(t).localeCompare(e(n))),n=[...f].sort((t,n)=>e(t).localeCompare(e(n)));return t.some((e,t)=>!dS(e,n[t]))},[u,f]),b=(0,o.useCallback)(e=>i.find(t=>t.value===e),[i]),x=e=>{d(t=>{let n=new Map(t.map(e=>[e.field,e]));return e.map(e=>n.get(e)??{field:e,...uS})})},S=(e,t,n)=>{d(r=>r.map(r=>r.field===e?{...r,[t]:n}:r))};async function C(e){let r=await n.ri(t,u,e);return p(u),r}let w=[{title:`Field`,dataIndex:`field`,key:`field`,render:e=>{let t=b(e);return(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(lS,{style:{fontSize:13},children:t?.label?.split(` · `)[0]??e}),(0,l.jsxs)(lS,{type:`secondary`,style:{fontSize:11},children:[(0,l.jsx)(`code`,{children:e}),t?` · configured ${t.configuredShow?`shown`:`hidden`}, ${t.configuredReq?`required`:`optional`}`:` · not in this module’s form groups`]})]})}},{title:(0,l.jsx)(s.Tooltip,{title:`Freeze this field's Show/Required switches in Form Groups. Does not change the form.`,children:`Locked`}),key:`locked`,width:110,align:`center`,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:t.locked,onChange:e=>S(t.field,`locked`,e)})},{title:(0,l.jsx)(s.Tooltip,{title:`Override the field's own Show flag to ON in the add/edit form.`,children:`Force shown`}),key:`forceShow`,width:130,align:`center`,render:(e,t)=>{let n=b(t.field);return(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Switch,{size:`small`,checked:t.forceShow,onChange:e=>S(t.field,`forceShow`,e)}),t.forceShow&&n&&!n.configuredShow?(0,l.jsx)(s.Tag,{color:`orange`,style:{margin:0},children:`overrides`}):null]})}},{title:(0,l.jsx)(s.Tooltip,{title:`Override the field's own Required flag to ON in the add/edit form.`,children:`Force required`}),key:`forceReq`,width:140,align:`center`,render:(e,t)=>{let n=b(t.field);return(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Switch,{size:`small`,checked:t.forceReq,onChange:e=>S(t.field,`forceReq`,e)}),t.forceReq&&n&&!n.configuredReq?(0,l.jsx)(s.Tag,{color:`orange`,style:{margin:0},children:`overrides`}):null]})}},{title:``,key:`remove`,width:48,align:`right`,render:(e,t)=>(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>d(e=>e.filter(e=>e.field!==t.field))})}],T=u.filter(e=>{let t=b(e.field);return t?e.forceShow&&!t.configuredShow||e.forceReq&&!t.configuredReq:!1}).length;return(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.SafetyCertificateOutlined,{}),title:`Default Fields`,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,optionFilterProp:`label`,style:{width:220},placeholder:`Module`,value:t||void 0,options:e,onChange:r}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.SaveOutlined,{}),disabled:!t||!y,onClick:()=>_(!0),children:`Save (OTP)`})]}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsxs)(lS,{type:`secondary`,style:{fontSize:13,display:`block`,marginBottom:12},children:[(0,l.jsx)(`b`,{children:`Locked`}),` freezes a field's Show / Required switches in Form Groups — it does not change the form. `,(0,l.jsx)(`b`,{children:`Force shown`}),` and `,(0,l.jsx)(`b`,{children:`Force required`}),` override the field's own settings when the form renders. A field added here is `,(0,l.jsx)(`b`,{children:`locked only`}),`; turn the other two on deliberately. Changing this list requires an OTP emailed to the approver.`]}),(0,l.jsxs)(s.Spin,{spinning:m,children:[(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,optionFilterProp:`label`,style:{width:`100%`},placeholder:`Add fields to lock`,value:u.map(e=>e.field),options:i,onChange:x,maxTagCount:`responsive`}),u.length>0&&(0,l.jsx)(s.Table,{style:{marginTop:12},size:`small`,rowKey:`field`,dataSource:u,columns:w,pagination:!1}),T>0&&(0,l.jsx)(s.Alert,{style:{marginTop:12},type:`warning`,showIcon:!0,message:`${T} field${T===1?``:`s`} will be forced against its own Form Groups setting`,description:`Those fields are marked “overrides”. The Form Groups editor will show the forced value, not the stored one.`}),!m&&i.length===0&&(0,l.jsx)(s.Alert,{style:{marginTop:12},type:`info`,showIcon:!0,message:`This module has no form-group fields yet — configure its Form Groups first.`})]}),(0,l.jsx)(cS,{open:g,scope:`defaultFields`,action:`save`,title:`Confirm Default Fields change`,description:`Locking a module's fields, or forcing them shown/required, is a protected action.`,confirmLabel:`Verify & Save`,onCancel:()=>_(!1),onConfirm:C,onVerified:()=>{_(!1),v(t)}})]})}function pS(e){return(e??[]).filter(e=>e?.label||e?.value).map(e=>{let t={...e},n=String(t.module??``).trim();return n?t.module=n:delete t.module,t})}var{Text:mS}=s.Typography,hS={reset:{action:`reset`,title:`Reset all form groups`,confirmLabel:`Reset All`,danger:!0,description:`This reseeds every module in this workspace back to the built-in default groups, discarding current customizations.`},save:{action:`save`,title:`Save current as default`,confirmLabel:`Save Default`,danger:!1,description:`Snapshots the current form groups for all modules as the saved default you can restore to later.`},restore:{action:`restore`,title:`Restore saved default`,confirmLabel:`Restore Default`,danger:!0,description:`Replaces the current form groups for all modules with the last saved default.`}},gS=km.filter(({key:e})=>e!==`custom`).map(({key:e,label:t})=>({value:e,label:t})),_S=[{label:`Full span`,value:`full`},{label:`None (start empty)`,value:`none`}],vS=[`#0053a5`,`#52c41a`,`#722ed1`,`#fa8c16`,`#eb2f96`,`#13c2c2`],yS=[{label:`Text`,value:`text`},{label:`Number`,value:`number`},{label:`Email`,value:`email`},{label:`Date`,value:`date`},{label:`Time Picker`,value:`time`},{label:`Location`,value:`location`},{label:`Select`,value:`select`},{label:`Radio`,value:`radio`},{label:`Checkbox`,value:`checkbox`},{label:`Tagify`,value:`tagify`},{label:`Textarea`,value:`textarea`},{label:`Text Editor`,value:`text-editor`},{label:`File`,value:`file`}],bS=[{label:`Keywords (chips + mandatory star)`,value:`keywords`},{label:`Multi Select`,value:`multiselect`},{label:`Date Range`,value:`daterange`},{label:`Range Slider`,value:`range`},{label:`Date Range (with presets)`,value:`daterangePreset`}],xS=[{label:`query (all search fields)`,value:`query`},{label:`excludeKeywords`,value:`excludeKeywords`},{label:`skills`,value:`skills`},{label:`jobTitle`,value:`jobTitle`},{label:`designation`,value:`designation`},{label:`currentLocation`,value:`currentLocation`},{label:`experience.from`,value:`experience.from`},{label:`experience.to`,value:`experience.to`},{label:`experience.from + to (range)`,value:`experience.from,experience.to`},{label:`workExperienceYears`,value:`workExperienceYears`},{label:`sourceType`,value:`sourceType`},{label:`createdFrom + createdTo (date range)`,value:`createdFrom,createdTo`}],SS=[`keywords`],CS=[{label:`Full row`,value:24},{label:`Half row`,value:12},{label:`One third`,value:8},{label:`One quarter`,value:6}],wS=[{label:`Include (match these)`,value:`include`},{label:`Exclude (must not match)`,value:`exclude`}],TS=[{label:`Slider + From/To`,value:`both`},{label:`Slider only`,value:`slider`},{label:`From / To only`,value:`inputs`}],ES=[{label:`Static (define options here)`,value:`static`},{label:`Masters collection`,value:`master`},{label:`Module data (distinct)`,value:`module`},{label:`Collection lookup (FK)`,value:`lookup`},{label:`Group value`,value:`group`},{label:`Location Master (Country/State/City)`,value:`locationMaster`}],DS=[{label:`Country`,value:`country`},{label:`State (needs a Country field)`,value:`state`},{label:`City (needs a Country + State field)`,value:`city`}],OS=[{label:`Required`,value:`required`,hasValue:!1},{label:`Min length/value`,value:`min`,hasValue:!0,valueType:`number`,placeholder:`e.g. 2`},{label:`Max length/value`,value:`max`,hasValue:!0,valueType:`number`,placeholder:`e.g. 100`},{label:`Pattern (regex)`,value:`pattern`,hasValue:!0,valueType:`text`,placeholder:`^[A-Za-z]+$`},{label:`Email (reject numeric-only address)`,value:`email`,hasValue:!1},{label:`Phone format`,value:`phone`,hasValue:!1},{label:`On or after another date field`,value:`dateAfterField`,hasValue:!0,valueType:`text`,placeholder:`startDate`,dateOnly:!0,messageOptional:!0},{label:`On or before another date field`,value:`dateBeforeField`,hasValue:!0,valueType:`text`,placeholder:`endDate`,dateOnly:!0,messageOptional:!0},{label:`Before another time field`,value:`timeBeforeField`,hasValue:!0,valueType:`text`,placeholder:`endTime`,messageOptional:!0},{label:`After another time field`,value:`timeAfterField`,hasValue:!0,valueType:`text`,placeholder:`startTime`,messageOptional:!0},{label:`File types allowed`,value:`fileType`,hasValue:!0,valueType:`text`,placeholder:`pdf,doc,jpg`,messageOptional:!0},{label:`Max file size (MB)`,value:`fileSize`,hasValue:!0,valueType:`number`,placeholder:`e.g. 5`,messageOptional:!0},{label:`Max files count`,value:`maxFiles`,hasValue:!0,valueType:`number`,placeholder:`e.g. 3`,messageOptional:!0},{label:`Greater than or equal to field`,value:`greaterThanField`,hasValue:!0,valueType:`text`,placeholder:`experienceRequiredFrom`},{label:`Greater than field (strict)`,value:`strictGreaterThanField`,hasValue:!0,valueType:`text`,placeholder:`numberOfPosition`},{label:`Less than field (strict)`,value:`strictLessThanField`,hasValue:!0,valueType:`text`,placeholder:`experienceRequiredTo`},{label:`Less than or equal to field`,value:`lessThanOrEqualField`,hasValue:!0,valueType:`text`,placeholder:`experienceRequiredTo`},{label:`Max field with fallback`,value:`maxFieldWithFallback`,hasValue:!0,valueType:`text`,placeholder:`group.preferredToField,group.fallbackFromField`},{label:`Disable previous dates`,value:`noPastDate`,hasValue:!1,messageOptional:!0,dateOnly:!0},{label:`Disable future dates`,value:`noFutureDate`,hasValue:!1,messageOptional:!0,dateOnly:!0},{label:`Min age (years)`,value:`minAge`,hasValue:!0,valueType:`number`,placeholder:`e.g. 18`,messageOptional:!0,dateOnly:!0},{label:`Max from another field`,value:`maxFromField`,hasValue:!1,needsField:!0,messageOptional:!0},{label:`Unique value / Already present check`,value:Nx,hasValue:!0,valueType:`object`}],kS=Ax,AS=jx,jS=[{label:`Auto (infer from field)`,value:`auto`},{label:`String`,value:`string`},{label:`Number`,value:`number`},{label:`Boolean`,value:`boolean`},{label:`Array`,value:`array`},{label:`Object`,value:`object`},{label:`Date (ISO)`,value:`date`}],MS=[{label:`(none)`,value:``},{label:`String`,value:`string`},{label:`Number`,value:`number`},{label:`Boolean`,value:`boolean`}],NS=[{label:`Auto (value as-is)`,value:`auto`},{label:`Value only — { key: id }`,value:`value`},{label:`Label only — { key: "India" }`,value:`label`},{label:`Full object — { id, name }`,value:`object`},{label:`Custom template`,value:`custom`},{label:`Skip (never send)`,value:`skip`}],PS={required:`red`,min:`orange`,max:`gold`,pattern:`purple`,email:`blue`,phone:`cyan`,dateAfterField:`volcano`,dateBeforeField:`orange`,fileType:`cyan`,fileSize:`blue`,maxFiles:`geekblue`,greaterThanField:`lime`,strictGreaterThanField:`green`,strictLessThanField:`cyan`,lessThanOrEqualField:`blue`,maxFieldWithFallback:`purple`,maxFromField:`volcano`,noPastDate:`geekblue`,noFutureDate:`magenta`,minAge:`green`,unique:`magenta`};function FS(e){return OS.find(t=>t.value===e)??{hasValue:!1}}function IS(e){return[{key:`all`,label:`All`,color:`#8c8c8c`},...e.map((e,t)=>({key:e.key,label:e.label,color:vS[t%vS.length]}))]}function LS(e){return Object.fromEntries(e.map(({key:e})=>[e,{groups:[],loading:!1,loaded:!1,error:``}]))}function RS(e){if(e==null)return;if(typeof e==`object`)return e;let t=String(e).trim();if(t)try{let e=JSON.parse(t);return e&&typeof e==`object`?e:void 0}catch{return}}function zS(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}function BS(e,t){t.payloadKey&&(e.payloadKey=t.payloadKey),t.prefillFrom&&(e.prefillFrom=t.prefillFrom),t.prefillAsHint&&(e.prefillAsHint=!0,String(t.prefillHintLabel??``).trim()&&(e.prefillHintLabel=String(t.prefillHintLabel).trim())),t.prefillFromModule&&(e.prefillFromModule=t.prefillFromModule);let n=(Array.isArray(t.prefillWhen)?t.prefillWhen:[]).filter(e=>e&&e.field&&e.value!==void 0&&e.value!==``&&(e.clearValue?!0:e.setValue!==void 0&&e.setValue!==``)).map(e=>e.clearValue?{field:e.field,value:e.value,clearValue:!0}:e);n.length&&(e.prefillWhen=n,t.prefillWhenReset===!1&&(e.prefillWhenReset=!1),t.prefillWhenExclusive===!0&&(e.prefillWhenExclusive=!0)),t.dataType&&t.dataType!==`auto`&&(e.dataType=t.dataType),t.elementType&&(e.elementType=t.elementType),t.payloadMode&&t.payloadMode!==`auto`&&(e.payloadMode=t.payloadMode),t.valueKey&&(e.valueKey=t.valueKey),t.displayKey&&(e.displayKey=t.displayKey),t.defaultValue!==void 0&&t.defaultValue!==``&&(e.defaultValue=t.defaultValue),t.richValue&&(e.richValue=!0),t.omitEmpty&&(e.omitEmpty=!0);let r=RS(t.payloadTemplate);r&&(e.payloadTemplate=r);let i=RS(t.transformRule);return i&&(e.transformRule=i),e}var VS=[{label:`equals`,value:`eq`},{label:`not equals`,value:`ne`},{label:`in`,value:`in`},{label:`not in`,value:`nin`},{label:`is not empty`,value:`notEmpty`},{label:`is empty`,value:`empty`}],HS=[`currentUserId`,`currentRoleId`,`currentUserName`,`currentUserEmail`,`currentReportingId`,`tenantId`,`businessId`,`businessUnitId`];function US(e){return Array.isArray(e)?e.filter(e=>e&&e.field).map(e=>{let t=e.valuesFrom??null,n=t&&t.match?Object.keys(t.match)[0]??``:``,r=n?t.match[n]:void 0,i=r&&typeof r==`object`&&typeof r.$valueFrom==`string`,a=i?``:(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return e;let t=Object.keys(e);return t.length===1&&(t[0]===`$in`||t[0]===`$eq`)?e[t[0]]:e})(r);return{field:e.field??``,op:e.op??`eq`,valueSource:t?`collection`:e.valueFrom?`identity`:`literal`,value:Array.isArray(e.value)?e.value.join(`, `):e.value??``,valueFrom:e.valueFrom??``,srcCollection:t?.collection??``,srcValueField:t?.valueField??``,srcMatchField:n,srcMatchValue:Array.isArray(a)?a.join(`, `):a??``,srcMatchValueFrom:i?r.$valueFrom:``,srcRecursive:t?.recursive??!1,srcRecursiveField:t?.recursiveField??``}}):[]}function WS(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=String(n?.field??``).trim();if(!e)continue;let r=String(n?.op??`eq`).trim()||`eq`,i={field:e,op:r};if(r===`notEmpty`||r===`empty`){t.push(i);continue}let a=n.valueSource??(n.srcCollection?`collection`:n.valueFrom?`identity`:`literal`);if(a===`collection`){let e=String(n.srcCollection??``).trim();if(!e)continue;let t={collection:e,valueField:String(n.srcValueField??``).trim()||`_id`},r=String(n.srcMatchField??``).trim();if(r){let e=String(n.srcMatchValueFrom??``).trim(),i=String(n.srcMatchValue??``).trim();e?t.match={[r]:{$valueFrom:e}}:i&&(t.match={[r]:i.includes(`,`)?i.split(`,`).map(e=>e.trim()).filter(Boolean):i})}if(n.srcRecursive){t.recursive=!0;let e=String(n.srcRecursiveField??``).trim()||r;e&&(t.recursiveField=e)}i.valuesFrom=t}else if(a===`identity`){let e=String(n.valueFrom??``).trim();if(!e)continue;i.valueFrom=e}else{let e=n.value;if(e==null||String(e).trim()===``)continue;let t=String(e).trim();i.value=t.includes(`,`)?t.split(`,`).map(e=>e.trim()).filter(Boolean):t}t.push(i)}return t}function GS(e=[]){let t=[];for(let n of e??[]){let e=n?.label||n?.field||`field`;for(let r of n?.validations??[])for(let i of tS(r,n))t.push(`${e}: ${i}`)}return t}function KS(e){let t={};return[`title`,`body`,`ok`,`cancel`].forEach(n=>{let r=String(e?.[n]??``).trim();r&&(t[n]=r)}),Object.keys(t).length?t:null}var qS=Object.freeze({mode:`newestFirst`,startField:`startDate`,endField:`endDate`}),JS=Object.freeze({field:`startDate`,tieBreak:`endDate`,direction:`desc`,inProgressField:`currentStudyingHere`,inProgressFirst:!0,confirmMove:!0}),YS=Object.freeze({levelField:`qualification`,requireBelow:!0,message:`You have entered only a higher qualification — {missing} is also required.`});function XS(e=[]){return e.filter(e=>String(e?.field??``).trim()!==``).map((e,t)=>{let n=(e.validations??[]).filter(e=>e?.type).map(t=>{let n=FS(t.type),r={type:t.type,message:t.message??``};if(n.hasValue&&t.value!==``&&t.value!==void 0&&t.value!==null?r.value=n.valueType===`object`?t.type===`unique`?Xx(t.value,e):t.value:n.valueType===`number`?Number(t.value):t.value:n.valueType===`object`&&t.type===`unique`&&(r.value=Jx(e)),n.needsField){let e=String(t.field??``).trim();e&&(r.field=e)}if(t.type===`dateAfterField`||t.type===`dateBeforeField`){t.strict&&(r.strict=!0);let e=Number(t.minGap?.value);Number.isFinite(e)&&e>0&&(r.minGap={value:e,unit:t.minGap?.unit||`month`});let n=String(t.minGapFrom??``).trim();n&&(r.minGapFrom=n)}return r}),r={label:e.label,field:e.field,type:e.type??`text`,show:+!!e.show,req:+!!e.req,edit:+!!e.edit,order:t,formatter:e.formatter??``,validations:n};if(e.col!==void 0&&e.col!==null&&e.col!==``&&Number(e.col)>0&&(r.col=Number(e.col)),e.showOnAdd===!1&&(r.showOnAdd=!1),e.addRow){r.addRow=!0,e.minRows!==void 0&&e.minRows!==``&&Number(e.minRows)>0&&(r.minRows=Number(e.minRows)),e.maxRows!==void 0&&e.maxRows!==``&&Number(e.maxRows)>0&&(r.maxRows=Number(e.maxRows)),e.initialRows!==void 0&&e.initialRows!==``&&(r.initialRows=Number(e.initialRows)),e.addLabel&&(r.addLabel=e.addLabel);let t=(e.subFields??[]).filter(e=>e&&e.field);t.length&&(r.subFields=t.map(e=>{let t={field:String(e.field).trim(),label:e.label??e.field,type:e.type??`text`,show:1,edit:1,req:+!!e.req};if(e.col!==void 0&&e.col!==``&&Number(e.col)>0&&(t.col=Number(e.col)),e.payloadKey&&(t.payloadKey=String(e.payloadKey).trim()),[`select`,`radio`,`checkbox`].includes(t.type)){let n=e.dataSource??`static`;t.dataSource=n,t.type===`select`&&(t.multiSelect=e.multiSelect??!1),n===`master`&&(t.masterName=e.masterName??``),n===`group`&&(t.groupName=e.groupName??``),n===`static`&&(t.options=pS(e.options)),n===`lookup`&&(t.lookupCollection=e.lookupCollection??``,t.displayField=e.displayField??``,e.displayField2&&(t.displayField2=e.displayField2),t.valueField=e.valueField??`_id`,e.lookupFilterField&&e.lookupFilterValueFrom&&(t.lookupFilterField=e.lookupFilterField,t.lookupFilterValueFrom=e.lookupFilterValueFrom))}return t}))}if(e.placeholder&&(r.placeholder=e.placeholder),e.hidePlaceholder&&(r.hidePlaceholder=!0),e.combineKey&&(r.combineKey=e.combineKey),e.combineLabel&&(r.combineLabel=e.combineLabel),e.combineRole&&(r.combineRole=e.combineRole),e.combineToggleLabel&&(r.combineToggleLabel=e.combineToggleLabel),e.combineToggleTarget&&(r.combineToggleTarget=e.combineToggleTarget),e.combineWidth!==void 0&&e.combineWidth!==``&&Number(e.combineWidth)>0&&(r.combineWidth=Number(e.combineWidth)),e.combineWrap&&(r.combineWrap=!0),e.combineSpan!==void 0&&e.combineSpan!==``&&[12,24].includes(Number(e.combineSpan))&&(r.combineSpan=Number(e.combineSpan)),e.defaultOnEdit&&(r.defaultOnEdit=!0),e.noPrefill&&(r.noPrefill=!0),e.emptyValues!==void 0&&e.emptyValues!==``&&(r.emptyValues=String(e.emptyValues).split(`,`).map(e=>e.trim()).filter(e=>e!==``)),e.valuePaths!==void 0&&e.valuePaths!==``&&(r.valuePaths=String(e.valuePaths).split(`,`).map(e=>e.trim()).filter(e=>e!==``)),e.clientScope&&(r.clientScope=!0,e.clientGateMessage&&(r.clientGateMessage=e.clientGateMessage),e.clientGateResetOnChange&&(r.clientGateResetOnChange=!0)),e.visiblePermission&&(r.visiblePermission=String(e.visiblePermission).trim()),e.editablePermission&&(r.editablePermission=String(e.editablePermission).trim()),e.infoEnabled&&e.infoText&&(r.infoEnabled=!0,r.infoText=e.infoText),e.tooltip&&(r.tooltip=String(e.tooltip)),e.booleanApiKey){let t=String(e.booleanApiKey).split(`,`).map(e=>e.trim()).filter(Boolean);t.length&&(r.booleanApiKey=t.length>1?t:t[0])}if(e.booleanCapable&&Um(r.booleanApiKey)&&(r.booleanCapable=!0),r.booleanCapable&&e.booleanPlaceholder&&(r.booleanPlaceholder=String(e.booleanPlaceholder).trim()),e.type===`keywords`){e.isPrimaryKeyword&&(r.isPrimaryKeyword=!0),e.showMandatoryOption&&(r.showMandatoryOption=!0),String(e.keywordRole??``).trim().toLowerCase()===`exclude`&&(r.keywordRole=`exclude`);let t=String(e.keywordGroup??``).trim();t&&t!==e.field&&(r.keywordGroup=t);let n=String(e.keywordFields??``).split(`,`).map(e=>e.trim()).filter(Boolean);n.length&&(r.keywordFields=n),e.maxKeywords!==void 0&&e.maxKeywords!==``&&Number(e.maxKeywords)>0&&(r.maxKeywords=Number(e.maxKeywords))}if(e.hideInBooleanMode&&(r.hideInBooleanMode=!0),e.type===`range`&&String(e.defaultRange??``).trim()===`full`&&(r.defaultRange=`full`),e.type===`daterangePreset`&&String(e.defaultPreset??``).trim()&&(r.defaultPreset=String(e.defaultPreset).trim()),(e.type===`number`||e.type===`range`)&&(e.min!==void 0&&e.min!==``&&(r.min=Number(e.min)),e.max!==void 0&&e.max!==``&&(r.max=Number(e.max))),e.type===`range`){e.display&&e.display!==`both`&&(r.display=e.display);let t=String(e.minLabel??``).trim(),n=String(e.maxLabel??``).trim(),i=String(e.unit??``).trim();t&&(r.minLabel=t),n&&(r.maxLabel=n),i&&(r.unit=i);let a=String(e.rangeKeys??``).split(`,`).map(e=>e.trim()).filter(Boolean);a.length===2&&(r.rangeKeys=a)}e.type===`daterangePreset`&&e.filterField&&(r.filterField=String(e.filterField).trim()),e.type===`checkbox`&&e.hideSelectAll&&(r.hideSelectAll=!0),BS(r,e),e.type===`file`&&(r.multiple=e.multiple??!1,r.maxCount=r.multiple?Number(e.maxCount??5):1,e.fileKey&&(r.fileKey=e.fileKey),e.fileNameKey&&(r.fileNameKey=e.fileNameKey),e.fileUrlKey&&(r.fileUrlKey=e.fileUrlKey),e.accept&&e.accept!==`any`&&(r.accept=e.accept));let i=(Array.isArray(e.showIf?.conditions)?e.showIf.conditions:[]).filter(e=>e?.field&&String(e.field).trim()).map(e=>{let t={field:String(e.field).trim(),operator:e.operator??`eq`};return AS.includes(t.operator)&&e.value!=null&&e.value!==``&&(t.value=e.value),t});if((e.showIf?.field||i.length)&&(r.showIf={},e.showIf?.field&&(r.showIf.field=e.showIf.field,r.showIf.operator=e.showIf.operator??`eq`,AS.includes(r.showIf.operator)&&e.showIf.value!=null&&e.showIf.value!==``&&(r.showIf.value=e.showIf.value)),i.length&&(r.showIf.conditions=i,r.showIf.logic=e.showIf?.logic===`or`?`or`:`and`)),e.labelWhen?.field&&e.labelWhen?.label&&(r.labelWhen={field:String(e.labelWhen.field).trim(),operator:e.labelWhen.operator??`eq`,label:String(e.labelWhen.label).trim()},AS.includes(r.labelWhen.operator)&&e.labelWhen.value!=null&&e.labelWhen.value!==``&&(r.labelWhen.value=e.labelWhen.value)),e.colWhenField&&Number(e.colWhenCol)>0){let t={field:String(e.colWhenField).trim(),operator:e.colWhenOperator??`eq`,col:Number(e.colWhenCol)};AS.includes(t.operator)&&e.colWhenValue!=null&&e.colWhenValue!==``&&(t.value=e.colWhenValue),r.colWhen=[t]}if(e.verifyAction){if(r.verifyAction=e.verifyAction,e.verifyResultField&&(r.verifyResultField=String(e.verifyResultField).trim()),e.verifyTimestampField&&(r.verifyTimestampField=String(e.verifyTimestampField).trim()),e.verifyIdleLabel&&(r.verifyIdleLabel=String(e.verifyIdleLabel).trim()),e.verifyRetryLabel&&(r.verifyRetryLabel=String(e.verifyRetryLabel).trim()),e.verifySuccessLabel&&(r.verifySuccessLabel=String(e.verifySuccessLabel).trim()),e.verifyLockedWhenFields){let t=dp(e.verifyLockedWhenFields);t.length&&(r.verifyLockedWhenFields=t.join(`,`))}e.verifyLockedLabel&&(r.verifyLockedLabel=String(e.verifyLockedLabel).trim())}if(e.disabledByField&&(r.disabledByField=String(e.disabledByField).trim()),e.requiredIfField&&(r.requiredIfField=String(e.requiredIfField).trim()),e.overrideEnabled){let t=String(e.overrideSkipValidations??``).split(`,`).map(e=>e.trim()).filter(Boolean);if(t.length){let n={skipValidations:t};e.overrideLabel&&(n.label=String(e.overrideLabel).trim()),e.overrideField&&(n.field=String(e.overrideField).trim()),e.overrideConfirmTitle&&(n.confirmTitle=String(e.overrideConfirmTitle).trim()),e.overrideConfirmBody&&(n.confirmBody=String(e.overrideConfirmBody).trim()),e.overrideConfirmOkText&&(n.confirmOkText=String(e.overrideConfirmOkText).trim()),e.overrideConfirmCancelText&&(n.confirmCancelText=String(e.overrideConfirmCancelText).trim()),e.overrideStore===!1&&(n.store=!1),r.overrideCheckbox=n}}if(e.linkedClearField){let t=String(e.linkedClearField).split(`,`).map(e=>e.trim()).filter(Boolean);t.length===1?r.linkedClearField=t[0]:t.length>1&&(r.linkedClearField=t)}e.clearGroupOnChange&&(r.clearGroupOnChange=!0),e.splitDialCodeInto&&(r.splitDialCodeInto=String(e.splitDialCodeInto).trim()),e.checkDuplicateOnBlur&&(r.checkDuplicateOnBlur=!0);let a=String(e.helpText??``).split(`
|
|
4
4
|
`).map(e=>e.trim()).filter(Boolean);if(a.length===1?r.helpText=a[0]:a.length>1&&(r.helpText=a),e.rowHierarchyEnabled&&(r.rowHierarchy=e.rowHierarchy??qS),e.autofillFrom)try{let t=typeof e.autofillFrom==`string`?JSON.parse(e.autofillFrom):e.autofillFrom;Array.isArray(t)&&t.length>0&&(r.autofillFrom=t)}catch{}Array.isArray(e.aiActions)&&e.aiActions.length>0&&(r.aiActions=e.aiActions.filter(e=>e?.key&&e?.label&&e?.serviceKey&&e?.endpointPath).map(e=>({key:e.key,label:e.label,trigger:e.trigger||`click`,serviceKey:e.serviceKey,endpointPath:e.endpointPath,bodyType:e.bodyType||`json`,inputs:(e.inputs||[]).filter(e=>e?.param&&e?.sourceField).map(e=>({param:e.param,sourceField:e.sourceField,kind:e.kind||`text`,...e.transform?{transform:e.transform}:{},...e.group?{group:e.group}:{},...e.required?{required:!0}:{},...Number(e.minWords)>0?{minWords:Number(e.minWords)}:{}})),...String(e.responseDataPath||``).trim()?{responseDataPath:String(e.responseDataPath).trim()}:{},...String(e.position||``).trim()?{position:String(e.position).trim()}:{},...e.confirmWhen&&e.confirmWhen!==`never`?{confirmWhen:e.confirmWhen}:{},...KS(e.confirmMessages)?{confirmMessages:KS(e.confirmMessages)}:{}})));let o=e.validator?.type;if(o){r.validator={type:o},e.validator.title&&(r.validator.title=e.validator.title);let t=Number(e.validator.maxLength);!isNaN(t)&&t>0&&(r.validator.maxLength=t);let n=Number(e.validator.maxChars);!isNaN(n)&&n>0&&(r.validator.maxChars=n)}if(e.type===`location`&&(r.multiSelect=e.multiSelect??!1),[`select`,`radio`,`checkbox`].includes(e.type)){let t=e.dataSource??`static`;if(r.dataSource=t,e.type===`select`&&(r.multiSelect=e.multiSelect??!1),e.allowCustomValues&&(r.allowCustomValues=!0,e.tokenSeparators!==void 0&&String(e.tokenSeparators)!==``&&(r.tokenSeparators=String(e.tokenSeparators))),e.optionsFromField&&(r.optionsFromField=String(e.optionsFromField).trim()),t===`master`&&(r.masterName=e.masterName??``),t===`group`&&(r.groupName=e.groupName??``,e.groupRoleContains&&(r.groupRoleContains=String(e.groupRoleContains).trim())),t===`locationMaster`&&(r.locationLevel=e.locationLevel||`country`,(r.locationLevel===`state`||r.locationLevel===`city`)&&e.locationCountryFrom&&(r.locationCountryFrom=String(e.locationCountryFrom).trim()),r.locationLevel===`city`&&e.locationStateFrom&&(r.locationStateFrom=String(e.locationStateFrom).trim())),t===`static`&&(r.options=pS(e.options)),t===`lookup`){r.lookupCollection=e.lookupCollection??``,r.displayField=e.displayField??``,e.displayField2&&(r.displayField2=e.displayField2),r.valueField=e.valueField??`_id`,e.lookupFilterField&&e.lookupFilterValueFrom&&(r.lookupFilterField=e.lookupFilterField,r.lookupFilterValueFrom=e.lookupFilterValueFrom);let t=WS(e.lookupFilters);t.length&&(r.lookupFilters=t);let n=String(e.optionsRequireExtraField??``).trim();if(n){r.optionsRequireExtraField=n;let t=String(e.optionsRequireExtraValue??``).trim();t&&(r.optionsRequireExtraValue=t)}let i=String(e.optionsHierarchyParentField??``).trim();if(i&&(r.optionsHierarchyParentField=i,r.optionsHierarchySelfFrom=String(e.optionsHierarchySelfFrom??``).trim()||`currentUserId`),e.quickCreate){r.quickCreate=!0,e.quickCreateModule&&(r.quickCreateModule=e.quickCreateModule),e.quickCreateLabel&&String(e.quickCreateLabel).trim().toLowerCase()!==`add more`&&(r.quickCreateLabel=String(e.quickCreateLabel).trim());let t=e.quickCreateNotice;if(t?.enabled){let e={enabled:!0};[`title`,`message`,`recordNameField`,`recordLabel`,`creatorLabel`].forEach(n=>{let r=String(t[n]??``).trim();r&&(e[n]=r)}),e.showCreator=t.showCreator!==!1,e.showRecordName=t.showRecordName!==!1,r.quickCreateNotice=e}}e.quickEdit&&(r.quickEdit=!0,e.quickEditModule&&(r.quickEditModule=e.quickEditModule),e.quickEditLabel&&String(e.quickEditLabel).trim().toLowerCase()!==`add more`&&(r.quickEditLabel=String(e.quickEditLabel).trim()),e.quickEditIdFrom&&(r.quickEditIdFrom=e.quickEditIdFrom))}}for(let[t,n]of Object.entries(e))n!=null&&n!==``&&(t in r||QS.has(t)||(r[t]=n));return r})}function ZS({collection:e,displayField:t,valueField:r,value:i,labelValue:a,onChange:c}){let[u,d]=(0,o.useState)([]),[f,p]=(0,o.useState)(!1),m=(0,o.useRef)(``),h=()=>{let i=`${e}|${t}|${r}`;!e||!t||m.current===i||(p(!0),n.jr(e,t,r||`_id`).then(e=>{m.current=i,d(e)}).catch(()=>d([])).finally(()=>p(!1)))},g=i&&!u.some(e=>e.value===i)?[{label:a||i,value:i},...u]:u;return(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,loading:f,placeholder:e?`Pick from ${e}`:`Configure a lookup first`,disabled:!e||!t,style:{width:220},optionFilterProp:`label`,options:g,value:i||void 0,onDropdownVisibleChange:e=>{e&&h()},onChange:(e,t)=>c(e??``,t?.label??``),getPopupContainer:()=>document.body})}var QS=new Set(`label.field.type.show.req.edit.order.formatter.validations.showOnAdd.addRow.minRows.maxRows.initialRows.addLabel.subFields.placeholder.hidePlaceholder.combineKey.combineLabel.combineRole.combineToggleLabel.combineToggleTarget.combineWidth.combineWrap.combineSpan.defaultOnEdit.noPrefill.emptyValues.valuePaths.clientScope.clientGateMessage.clientGateResetOnChange.visiblePermission.editablePermission.infoEnabled.infoText.tooltip.helpText.payloadKey.prefillFrom.prefillFromModule.dataType.elementType.prefillAsHint.prefillHintLabel.payloadMode.valueKey.displayKey.defaultValue.richValue.omitEmpty.payloadTemplate.transformRule.multiple.maxCount.fileKey.fileNameKey.fileUrlKey.accept.showIf.labelWhen.colWhen.colWhenField.colWhenOperator.colWhenValue.colWhenCol.verifyAction.verifyResultField.verifyTimestampField.prefillWhen.prefillWhenReset.prefillWhenExclusive.verifyIdleLabel.verifyRetryLabel.verifySuccessLabel.verifyLockedWhenFields.verifyLockedLabel.disabledByField.requiredIfField.linkedClearField.clearGroupOnChange.splitDialCodeInto.overrideCheckbox.overrideEnabled.overrideLabel.overrideField.overrideSkipValidations.overrideConfirmTitle.overrideConfirmBody.overrideConfirmOkText.overrideConfirmCancelText.overrideStore.checkDuplicateOnBlur.rowHierarchy.exclusiveInGroup.autofillFrom.aiActions.validator.dataSource.masterName.groupName.groupRoleContains.options.multiSelect.lookupCollection.displayField.displayField2.valueField.lookupFilterField.lookupFilterValueFrom.lookupFilters.locationLevel.locationCountryFrom.locationStateFrom.optionsRequireExtraField.optionsRequireExtraValue.optionsHierarchyParentField.optionsHierarchySelfFrom.allowCustomValues.tokenSeparators.optionsFromField.quickCreate.quickCreateModule.quickCreateLabel.quickCreateNotice.quickEdit.quickEditModule.quickEditLabel.quickEditIdFrom.value.documentPreview.displayAs.renderType.renderOptions`.split(`.`)),$S=new Set(`module.name.label.addRow.order.fields.hideGroup.hideGroupInForm.moduleName.linkField.linkTypeField.parentRefField.hierarchyLevel.hierarchyParent.hierarchyLinkField.writeRefs.dependsOn.optionalWrite.appendHistory.allowCollapse.defaultCollapsed.historyField.historyFields.historyTimestampField.historyLabels.historyLabelFrom.historyAfterGroup.historyAmountFields.historyCurrencyFields.historyUnitFields.minRows.maxRows.initialRows.requireOne.requireValidatedField.requireValidatedFieldMessage.submitDisabledMessage.allowInProgress.inProgressMessage.orderBy.orderByEnabled.levelRule.levelRuleEnabled.regionRules.linkGroup.mergeInto.mergePosition.infoEnabled.infoText.toggleEnabled.toggleLabel.toggleField.afterSubmit.showIf.showIfField.showIfOperator.showIfValue.disabled.disabledIf.disabledIfField.disabledIfOperator.disabledIfValue.formActions.afterSubmitMode.afterSubmitTarget.submitMessages.submitMsgAddSuccess.submitMsgEditSuccess.submitMsgAddError.submitMsgEditError.submitMsgSuppress.id._id.rows.toggleValue`.split(`.`));function eC(e){return{...e,show:e.show===1,req:e.req===1,edit:e.edit===1,showOnAdd:e.showOnAdd!==!1,addRow:e.addRow??!1,minRows:e.minRows??``,maxRows:e.maxRows??``,initialRows:e.initialRows??``,addLabel:e.addLabel??``,subFields:Array.isArray(e.subFields)?e.subFields.map(e=>({field:e.field??``,label:e.label??``,type:e.type??`text`,req:e.req===1||e.req===!0,col:e.col??``,payloadKey:e.payloadKey??``,dataSource:e.dataSource??`static`,multiSelect:e.multiSelect??!1,masterName:e.masterName??``,groupName:e.groupName??``,options:Array.isArray(e.options)?e.options:[],lookupCollection:e.lookupCollection??``,displayField:e.displayField??``,displayField2:e.displayField2??``,valueField:e.valueField??`_id`,lookupFilterField:e.lookupFilterField??``,lookupFilterValueFrom:e.lookupFilterValueFrom??``})):[],placeholder:e.placeholder??``,hidePlaceholder:e.hidePlaceholder??!1,clientScope:e.clientScope??!1,clientGateMessage:e.clientGateMessage??``,clientGateResetOnChange:e.clientGateResetOnChange??!1,visiblePermission:e.visiblePermission??``,editablePermission:e.editablePermission??``,infoEnabled:e.infoEnabled??!1,infoText:e.infoText??``,tooltip:e.tooltip??``,helpText:Array.isArray(e.helpText)?e.helpText.join(`
|
|
5
5
|
`):e.helpText??``,formatter:e.formatter??``,combineKey:e.combineKey??``,combineLabel:e.combineLabel??``,combineRole:e.combineRole??``,combineToggleLabel:e.combineToggleLabel??``,combineToggleTarget:e.combineToggleTarget??``,combineWidth:e.combineWidth??``,combineWrap:e.combineWrap??!1,combineSpan:e.combineSpan??``,defaultOnEdit:e.defaultOnEdit??!1,noPrefill:e.noPrefill??!1,emptyValues:Array.isArray(e.emptyValues)?e.emptyValues.join(`, `):e.emptyValues??``,valuePaths:Array.isArray(e.valuePaths)?e.valuePaths.join(`, `):e.valuePaths??``,booleanCapable:e.booleanCapable??!1,booleanApiKey:Array.isArray(e.booleanApiKey)?e.booleanApiKey.join(`,`):e.booleanApiKey??``,booleanPlaceholder:e.booleanPlaceholder??``,col:e.col??void 0,isPrimaryKeyword:e.isPrimaryKeyword??!1,showMandatoryOption:e.showMandatoryOption??!1,keywordRole:e.keywordRole??`include`,keywordGroup:e.keywordGroup??e.field??``,keywordFields:Array.isArray(e.keywordFields)?e.keywordFields.join(`, `):e.keywordFields??``,maxKeywords:e.maxKeywords??``,hideInBooleanMode:e.hideInBooleanMode??!1,min:e.min??``,max:e.max??``,defaultRange:e.defaultRange??void 0,defaultPreset:e.defaultPreset??void 0,display:e.display??`both`,minLabel:e.minLabel??``,maxLabel:e.maxLabel??``,unit:e.unit??``,rangeKeys:Array.isArray(e.rangeKeys)?e.rangeKeys.join(`,`):e.rangeKeys??``,filterField:e.filterField??``,hideSelectAll:e.hideSelectAll??!1,dataSource:e.dataSource??`static`,masterName:e.masterName??``,groupName:e.groupName??``,groupRoleContains:e.groupRoleContains??``,options:e.options??[],lookupCollection:e.lookupCollection??``,displayField:e.displayField??``,displayField2:e.displayField2??``,valueField:e.valueField??`_id`,lookupFilterField:e.lookupFilterField??``,lookupFilterValueFrom:e.lookupFilterValueFrom??``,locationLevel:e.locationLevel??`country`,locationCountryFrom:e.locationCountryFrom??``,locationStateFrom:e.locationStateFrom??``,lookupFilters:US(e.lookupFilters),optionsRequireExtraField:e.optionsRequireExtraField??``,optionsRequireExtraValue:e.optionsRequireExtraValue??``,optionsHierarchyParentField:e.optionsHierarchyParentField??``,optionsHierarchySelfFrom:e.optionsHierarchySelfFrom??``,allowCustomValues:e.allowCustomValues??!1,tokenSeparators:e.tokenSeparators??``,optionsFromField:e.optionsFromField??``,quickCreate:e.quickCreate??!1,quickCreateModule:e.quickCreateModule??``,quickCreateLabel:e.quickCreateLabel??``,quickEdit:e.quickEdit??!1,quickEditModule:e.quickEditModule??``,quickEditLabel:e.quickEditLabel??``,quickEditIdFrom:e.quickEditIdFrom??``,quickCreateNotice:{enabled:e.quickCreateNotice?.enabled??!1,title:e.quickCreateNotice?.title??``,message:e.quickCreateNotice?.message??``,showCreator:e.quickCreateNotice?.showCreator!==!1,showRecordName:e.quickCreateNotice?.showRecordName!==!1,recordNameField:e.quickCreateNotice?.recordNameField??``,recordLabel:e.quickCreateNotice?.recordLabel??``,creatorLabel:e.quickCreateNotice?.creatorLabel??``},multiSelect:e.multiSelect??!1,multiple:e.multiple??!1,maxCount:e.maxCount??5,accept:e.accept??`any`,fileKey:e.fileKey??``,fileNameKey:e.fileNameKey??``,fileUrlKey:e.fileUrlKey??``,payloadKey:e.payloadKey??``,prefillFrom:e.prefillFrom??``,prefillAsHint:!!e.prefillAsHint,prefillHintLabel:e.prefillHintLabel??``,prefillFromModule:e.prefillFromModule??``,prefillWhen:Array.isArray(e.prefillWhen)?e.prefillWhen:[],prefillWhenReset:e.prefillWhenReset!==!1,prefillWhenExclusive:e.prefillWhenExclusive===!0,dataType:e.dataType??`auto`,elementType:e.elementType??``,payloadMode:e.payloadMode??`auto`,valueKey:e.valueKey??``,displayKey:e.displayKey??``,defaultValue:e.defaultValue??``,richValue:e.richValue??!1,omitEmpty:e.omitEmpty??!1,payloadTemplate:zS(e.payloadTemplate),transformRule:zS(e.transformRule),showIf:e.showIf?.field||e.showIf?.conditions?.length?{field:e.showIf.field??``,operator:e.showIf.operator??`eq`,value:e.showIf.value??``,logic:e.showIf.logic===`or`?`or`:`and`,conditions:Array.isArray(e.showIf.conditions)?e.showIf.conditions.map(e=>({field:e.field??``,operator:e.operator??`eq`,value:e.value??``})):[]}:{field:``,operator:`eq`,value:``,logic:`and`,conditions:[]},labelWhen:e.labelWhen?.field?{field:e.labelWhen.field,operator:e.labelWhen.operator??`eq`,value:e.labelWhen.value??``,label:e.labelWhen.label??``}:{field:``,operator:`eq`,value:``,label:``},colWhenField:(Array.isArray(e.colWhen)?e.colWhen[0]?.field:e.colWhen?.field)??``,colWhenOperator:(Array.isArray(e.colWhen)?e.colWhen[0]?.operator:e.colWhen?.operator)??`eq`,colWhenValue:(Array.isArray(e.colWhen)?e.colWhen[0]?.value:e.colWhen?.value)??``,colWhenCol:(Array.isArray(e.colWhen)?e.colWhen[0]?.col:e.colWhen?.col)??void 0,verifyAction:e.verifyAction??``,verifyResultField:e.verifyResultField??``,verifyTimestampField:e.verifyTimestampField??``,verifyIdleLabel:e.verifyIdleLabel??``,verifyRetryLabel:e.verifyRetryLabel??``,verifySuccessLabel:e.verifySuccessLabel??``,verifyLockedWhenFields:dp(e.verifyLockedWhenFields).join(`, `),verifyLockedLabel:e.verifyLockedLabel??``,validations:(e.validations??[]).map(t=>({type:t.type,value:t.type===`unique`?Xx(t.value,e):t.value??``,field:t.field??``,message:t.message??``,strict:!!t.strict,minGap:{value:t.minGap?.value??``,unit:t.minGap?.unit??`month`},minGapFrom:t.minGapFrom??``})),validator:{type:e.validator?.type??``,title:e.validator?.title??``,maxLength:e.validator?.maxLength??``,maxChars:e.validator?.maxChars??``},disabledByField:e.disabledByField??``,requiredIfField:e.requiredIfField??``,overrideEnabled:!!e.overrideCheckbox,overrideLabel:e.overrideCheckbox?.label??``,overrideField:e.overrideCheckbox?.field??``,overrideSkipValidations:Array.isArray(e.overrideCheckbox?.skipValidations)?e.overrideCheckbox.skipValidations.join(`, `):e.overrideCheckbox?.skipValidations??``,overrideConfirmTitle:e.overrideCheckbox?.confirmTitle??``,overrideConfirmBody:e.overrideCheckbox?.confirmBody??``,overrideConfirmOkText:e.overrideCheckbox?.confirmOkText??``,overrideConfirmCancelText:e.overrideCheckbox?.confirmCancelText??``,overrideStore:e.overrideCheckbox?.store!==!1,linkedClearField:Array.isArray(e.linkedClearField)?e.linkedClearField.join(`, `):e.linkedClearField??``,clearGroupOnChange:!!e.clearGroupOnChange,splitDialCodeInto:e.splitDialCodeInto??``,checkDuplicateOnBlur:!!e.checkDuplicateOnBlur,rowHierarchyEnabled:!!e.rowHierarchy,rowHierarchy:e.rowHierarchy??null,autofillFrom:Array.isArray(e.autofillFrom)?JSON.stringify(e.autofillFrom,null,2):e.autofillFrom??``,aiActions:Array.isArray(e.aiActions)?e.aiActions.map(e=>({...e,inputs:(e.inputs??[]).map(e=>({...e,minWords:e.minWords??``})),responseDataPath:e.responseDataPath??``,confirmWhen:e.confirmWhen??`never`,confirmMessages:{title:e.confirmMessages?.title??``,body:e.confirmMessages?.body??``,ok:e.confirmMessages?.ok??``,cancel:e.confirmMessages?.cancel??``},position:e.position??``})):[]}}function tC(e,t,n,r,i){if(!t||!n||!String(r??``).trim())return``;let a=new Map;i.forEach(e=>{e.moduleName&&a.set(e.moduleName,e)});let o=[`${t}.${r.trim()}`],s=n,c=new Set([t]),l=0;for(;s&&s!==e&&l<10;){if(c.has(s))return``;c.add(s);let e=a.get(s);if(!e||!e.hierarchyLinkField)return o.unshift(s),o.join(` → `);o.unshift(`${e.moduleName}.${e.hierarchyLinkField}`),s=e.hierarchyParent,l+=1}if(s===e)o.unshift(e);else return``;return o.join(` → `)}function nC(){let[e,t]=(0,o.useState)({});return(0,o.useEffect)(()=>{let e=!1;return n.Ir().then(n=>{e||t(n??{})}).catch(()=>{}),()=>{e=!0}},[]),(0,o.useMemo)(()=>t=>e[String(t??``).trim().toLowerCase()]??``,[e])}function rC({form:e,fieldItems:t,add:r,remove:i,move:a,absBase:o,moduleFieldOptions:u,dragIndexRef:d,dragOverIndex:f,setDragOverIndex:p,onFieldKeySelect:m,expandedFieldKeys:h,onToggleField:g,defaultFieldRules:_=new Map,uniqueTarget:v={primaryModule:``,getTargetModule:()=>``,collectionForModule:()=>``}}){let y=[...o,`fields`];return(0,l.jsxs)(l.Fragment,{children:[t.map(({key:t,name:r,...o},b)=>{let x=[...y,r],S=e.getFieldValue(x)??{},C=h&&!h.has(b),w=e.getFieldValue(`formType`)===`search`;return(0,l.jsx)(`div`,{draggable:!0,onDragStart:()=>{d.current=b},onDragEnd:()=>{d.current=null,p(null)},onDragOver:e=>{e.preventDefault(),p(b)},onDragLeave:()=>p(null),onDrop:e=>{e.preventDefault();let t=d.current;t!==null&&t!==b&&a(t,b),d.current=null,p(null)},className:`fg-field-card${f===b?` fg-drag-over`:``}`,children:(0,l.jsxs)(`div`,{className:`fg-field-card-inner`,children:[(0,l.jsx)(`span`,{className:`fg-drag-handle`,children:(0,l.jsx)(c.HolderOutlined,{})}),C?(0,l.jsxs)(`div`,{className:`fg-field-summary`,children:[(0,l.jsxs)(`button`,{type:`button`,className:`fg-field-summary-main`,onClick:()=>g(b),children:[(0,l.jsx)(c.RightOutlined,{className:`fg-field-summary-chevron`}),(0,l.jsxs)(`span`,{children:[(0,l.jsx)(`strong`,{children:S.label||S.field||`Field ${b+1}`}),(0,l.jsxs)(`small`,{children:[S.field||`Field key not set`,` · `,S.type||`text`]})]})]}),(0,l.jsxs)(s.Space,{size:4,children:[S.req&&(0,l.jsx)(s.Tag,{color:`red`,children:`Required`}),S.show===!1&&(0,l.jsx)(s.Tag,{children:`Hidden`}),(0,l.jsx)(s.Tooltip,{title:`Edit field settings`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>g(b)})}),(0,l.jsx)(s.Tooltip,{title:`Remove field`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.MinusCircleOutlined,{}),onClick:()=>i(r)})})]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-field-body`,children:[h&&(0,l.jsxs)(`button`,{type:`button`,className:`fg-field-collapse-btn`,onClick:()=>g(b),children:[(0,l.jsx)(c.DownOutlined,{}),` Collapse field`]}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`field`],label:`Field`,style:{marginBottom:10},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.AutoComplete,{options:u,placeholder:`Search or type field key…`,filterOption:(e,t)=>(t?.searchLabel??``).includes(e.toLowerCase()),onSelect:e=>m(e,r),className:`fg-mono-input`})}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsx)(s.Form.Item,{...o,name:[r,`label`],label:`Label`,style:{marginBottom:8,flex:2},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Display label`})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`type`],label:`Type`,style:{marginBottom:8,flex:2},initialValue:`text`,children:(0,l.jsx)(s.Select,{size:`small`,options:w?[...yS,...bS]:yS})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`formatter`],label:`Formatter`,style:{marginBottom:8,flex:2},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`name / phone…`})})]}),(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Layout / Combine`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`col`],label:`Width`,style:{marginBottom:0},tooltip:`How much of the row this field takes. Blank uses the form's default (half a row on most forms). Use Full row for controls that need the space, such as a keyword chip box.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,style:{width:130},placeholder:`Default`,options:CS})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineKey`],label:`Combine Key`,style:{marginBottom:0},tooltip:`Fields with the same key render together as one visual block. Payload stays unchanged.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. client_rate`,style:{width:150},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineLabel`],label:`Combined Label`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Client Rate`,style:{width:160}})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineRole`],label:`Role`,style:{marginBottom:0},children:(0,l.jsx)(s.Select,{size:`small`,style:{width:120},allowClear:!0,options:[{label:`Primary`,value:`primary`},{label:`From`,value:`from`},{label:`To`,value:`to`},{label:`Currency`,value:`currency`},{label:`Unit`,value:`unit`}]})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineToggleLabel`],label:`Toggle Label`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Range`,style:{width:130}})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineToggleTarget`],label:`Toggle Target`,style:{marginBottom:0},tooltip:`Field key hidden until the combined-field slider is enabled. Example: clientRateTo.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`target field key`,style:{width:150},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineWidth`],label:`Width`,style:{marginBottom:0},tooltip:`Width weight of this box inside the combined block. Set the same key's fields to e.g. 2 & 1 for 2:1, or 1/2/3 for 1:2:3. Blank/0 = equal share.`,children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:0,step:.5,placeholder:`1`,style:{width:80}})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineWrap`],label:`Wrap`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`Allow this combined block to wrap to another line. Useful for wider controls such as document upload rows.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[r,`combineSpan`],label:`Block Span`,style:{marginBottom:0},tooltip:`How much row width this combined block uses. Blank keeps the existing automatic layout.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,placeholder:`Auto`,style:{width:110},options:[{label:`Half`,value:12},{label:`Full`,value:24}]})})]})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{if(e(`formType`)!==`search`||!e(`booleanSearchEnabled`))return null;let t=e([...x,`type`])??`text`,n=e([...x,`booleanApiKey`]),i=SS.includes(t)&&Vm.includes(n);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Boolean Search`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`booleanApiKey`],label:`Boolean API key`,style:{marginBottom:0},tooltip:`Which boolean-search request parameter this field fills. Needed by plain fields too — without it the field is not sent in Boolean mode.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,style:{width:240},placeholder:`Not sent`,options:xS})}),i?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`booleanCapable`],label:`Boolean capable`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`When the user turns the Boolean toggle on, this field becomes an AND/OR/NOT expression box. Fields left off keep their normal control in both modes.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),e([...x,`booleanCapable`])&&(0,l.jsx)(s.Form.Item,{name:[r,`booleanPlaceholder`],label:`Example expression`,style:{marginBottom:0},tooltip:`Shown inside this field's expression box. Give an example using THIS field's own vocabulary — blank falls back to one generic example shared by every boolean field.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:360},placeholder:`e.g., (Java OR J2EE) AND "Spring Boot" NOT PHP`})})]}):SS.includes(t)&&(0,l.jsx)(`span`,{className:`fg-options-hint`,children:`Boolean mode belongs to the common Keywords field. Use a Keywords field mapped to the query API key.`})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{if(e(`formType`)!==`search`||e([...x,`type`])!==`keywords`)return null;let t=e([...x,`keywordRole`])===`exclude`;return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Keyword Search`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`keywordRole`],label:`Role`,style:{marginBottom:0},initialValue:`include`,tooltip:`Include fields contribute the keywords to match. An Exclude field contributes keywords that must NOT match — point it at another field's group to attach it.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:200},options:wS})}),(0,l.jsx)(s.Form.Item,{name:[r,`keywordGroup`],label:`Group`,style:{marginBottom:0},tooltip:`Which keyword group this field feeds. Two fields naming the same group are merged into one — that is how an Exclude box attaches to its Keywords box. Blank uses the field's own key.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:200},placeholder:`same as field key`})}),(0,l.jsx)(s.Form.Item,{name:[r,`keywordFields`],label:`Search in fields`,style:{marginBottom:0},tooltip:`Comma-separated database paths this field's keywords match against, e.g. skills or currentLocation, projectLocation. Leave blank to search the entire resume (every configured search field).`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:320},placeholder:`blank = entire resume`})}),!t&&(0,l.jsx)(s.Form.Item,{name:[r,`showMandatoryOption`],label:`Mandatory star`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Shows a star on every keyword chip and a 'Mark all keywords as mandatory' checkbox below the box. Starred keywords must all match; unstarred ones only need one match between them. Off means plain chips.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[r,`isPrimaryKeyword`],label:`Primary (owns Boolean)`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`The one field that draws the Boolean toggle and becomes the AND/OR/NOT expression box. Set this on exactly one field per form — without it the form shows no Boolean toggle at all.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[r,`maxKeywords`],label:`Max keywords`,style:{marginBottom:0},tooltip:`How many chips this box accepts. Blank means 50.`,children:(0,l.jsx)(s.InputNumber,{size:`small`,min:1,style:{width:110},placeholder:`50`})}),t&&(0,l.jsx)(`span`,{className:`fg-options-hint`,children:`Exclude fields never show stars — a mandatory exclusion has no meaning.`})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e(`formType`)!==`search`||!e(`booleanSearchEnabled`)?null:(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Boolean Mode`}),(0,l.jsx)(`div`,{className:`fg-options-controls`,children:(0,l.jsx)(s.Form.Item,{name:[r,`hideInBooleanMode`],label:`Hide when Boolean is on`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Removes this field from the form while the Boolean toggle is on, and stops it being submitted. Use it for controls the expression already covers.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})})})]})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e(`formType`)!==`search`||e([...x,`type`])!==`checkbox`?null:(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Select All`}),(0,l.jsx)(`div`,{className:`fg-options-controls`,children:(0,l.jsx)(s.Form.Item,{name:[r,`hideSelectAll`],label:`Show 'All' checkbox`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,getValueProps:e=>({checked:!e}),normalize:e=>!e,tooltip:`On by default. Turn off if this field's options should never offer a select-everything shortcut.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Shown`,unCheckedChildren:`Hidden`})})})]})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]);return[`range`,`number`].includes(t)?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:t===`range`?`Range`:`Bounds`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`min`],label:`Min`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,placeholder:`0`,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[r,`max`],label:`Max`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,placeholder:`30`,style:{width:90}})}),t===`range`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`defaultRange`],label:`Default`,style:{marginBottom:0},tooltip:`Full span means the From/To boxes arrive holding Min and Max, and that range is applied to every search — records with no value for this field will not appear until the user changes it. None starts the field empty and filters nothing.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,style:{width:170},placeholder:`None`,options:_S})}),(0,l.jsx)(s.Form.Item,{name:[r,`display`],label:`Show as`,style:{marginBottom:0},initialValue:`both`,tooltip:`Drag bar, plain From/To boxes, or both. Switch to From / To if the horizontal slider is not wanted.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:170},options:TS})}),(0,l.jsx)(s.Form.Item,{name:[r,`minLabel`],label:`Start label`,style:{marginBottom:0},tooltip:`What the LOW end reads as under the track. Blank shows the Min number itself.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`0`,style:{width:110}})}),(0,l.jsx)(s.Form.Item,{name:[r,`maxLabel`],label:`End label`,style:{marginBottom:0},tooltip:`What the HIGH end reads as under the track. Use it to mark an open ceiling: with Max 30, "30+" reads as "30 or more" where a bare 30 reads as an exact value. Blank shows the Max number itself.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`30+`,style:{width:110}})}),(0,l.jsx)(s.Form.Item,{name:[r,`unit`],label:`Unit`,style:{marginBottom:0},tooltip:`Caption shown after the From / To boxes, e.g. Years. Leave blank when the field label already names the unit.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Years`,style:{width:110}})}),(0,l.jsx)(s.Form.Item,{name:[r,`rangeKeys`],label:`From / To params`,style:{marginBottom:0},tooltip:`Comma-separated query params this range fills in normal search, e.g. experienceFrom,experienceTo. Blank uses <field>From / <field>To.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`experienceFrom,experienceTo`,style:{width:220},className:`fg-mono-input`})})]})]})]}):null}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`type`])===`daterangePreset`?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Date Filter`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`filterField`],label:`Filter Field`,style:{marginBottom:0},tooltip:`Mongo field this range filters on, e.g. createdAt. Blank uses the field's own key. Normal search only — in Boolean mode the range is sent via the Boolean API key instead (createdFrom + createdTo), which the boolean-search API accepts but does not filter on yet.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`createdAt`,style:{width:200},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`defaultPreset`],label:`Default`,style:{marginBottom:0},tooltip:`Which preset the field arrives on. This is a REAL value — it is applied to every search, not just shown, so records outside the window will not appear until the user changes it. Blank means the field starts empty and filters nothing.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,style:{width:190},placeholder:`None`,options:gS})})]})]}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{if(e([...x,`type`])!==`file`)return null;let t=e([...x,`multiple`]);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`File Options`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`accept`],label:`Allowed Content`,style:{marginBottom:0},initialValue:`any`,tooltip:`Restrict what this upload accepts. A file outside the selected category is rejected on upload. Overrides the 'File types allowed' validation rule.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:230},options:n.pt})}),(0,l.jsx)(s.Form.Item,{name:[r,`multiple`],label:`Upload Mode`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Multiple`,unCheckedChildren:`Single`})}),t&&(0,l.jsx)(s.Form.Item,{name:[r,`maxCount`],label:`Max files`,style:{marginBottom:0},initialValue:5,rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:2,placeholder:`e.g. 5`,style:{width:80}})}),(0,l.jsx)(s.Form.Item,{name:[r,`fileKey`],label:`File Key`,style:{marginBottom:0},tooltip:`Multipart field name sent to the server. Leave blank to use the field key. Set to 'file' for the jobs service.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. file`,style:{width:120},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`fileNameKey`],label:`Name Key`,style:{marginBottom:0},tooltip:`Stored object key that contains the uploaded file name. Leave blank for automatic detection.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. passportUploadName`,style:{width:180},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`fileUrlKey`],label:`URL Key`,style:{marginBottom:0},tooltip:`Stored object key that contains the file location/path. Leave blank for automatic detection.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. passportCopyLocation`,style:{width:190},className:`fg-mono-input`})})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]);if(![`select`,`radio`,`checkbox`,`location`].includes(t))return null;let i=t===`location`,a=e([...x,`dataSource`])??`static`;return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:i?`Location selection`:`Options / Values`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[!i&&(0,l.jsx)(s.Form.Item,{name:[r,`dataSource`],label:`Source`,style:{marginBottom:0},initialValue:`static`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:190},options:ES})}),(t===`select`||i)&&(0,l.jsx)(s.Form.Item,{name:[r,`multiSelect`],label:`Multi Select`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Multi`,unCheckedChildren:`Single`})}),a===`master`&&(0,l.jsx)(s.Form.Item,{name:[r,`masterName`],label:`Master Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter master name`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. tracker`,style:{width:140}})}),a===`group`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`groupName`],label:`Group Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter group name`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. users`,style:{width:140}})}),String(e([...x,`groupName`])??``).toLowerCase().trim()===`users`&&(0,l.jsx)(s.Form.Item,{name:[r,`groupRoleContains`],label:`Only roles containing`,style:{marginBottom:0},tooltip:`List only users whose role name CONTAINS this word (case-insensitive) — e.g. 'manager' matches Delivery Manager, Onboarding Manager, Submission Manager, etc. Blank = every user.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. manager`,style:{width:160}})})]}),a===`locationMaster`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`locationLevel`],label:`Level`,style:{marginBottom:0},initialValue:`country`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:220},options:DS})}),[`state`,`city`].includes(e([...x,`locationLevel`]))&&(0,l.jsx)(s.Form.Item,{name:[r,`locationCountryFrom`],label:`Country field`,style:{marginBottom:0},rules:[{required:!0,message:`Pick the Country field`}],tooltip:`The sibling field on this form that holds the selected country. This field's options are filtered to that country's states/cities and it stays disabled until that field has a value.`,children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:220},placeholder:`e.g. address.country`,options:(e(y)??[]).map((e,t)=>({candidate:e,index:t})).filter(({candidate:e,index:t})=>t!==r&&e?.field).map(({candidate:e})=>({value:e.field,label:`${e.label||e.field} (${e.field})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})}),e([...x,`locationLevel`])===`city`&&(0,l.jsx)(s.Form.Item,{name:[r,`locationStateFrom`],label:`State field`,style:{marginBottom:0},rules:[{required:!0,message:`Pick the State field`}],tooltip:`The sibling field on this form that holds the selected state.`,children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:220},placeholder:`e.g. address.state`,options:(e(y)??[]).map((e,t)=>({candidate:e,index:t})).filter(({candidate:e,index:t})=>t!==r&&e?.field).map(({candidate:e})=>({value:e.field,label:`${e.label||e.field} (${e.field})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})})]})]}),!i&&(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`allowCustomValues`],label:`Allow typed values`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Let users enter a value that is not in the option list above. The typed text is stored as-is.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Typed OK`,unCheckedChildren:`List only`})}),e([...x,`allowCustomValues`])&&(0,l.jsx)(s.Form.Item,{name:[r,`tokenSeparators`],label:`Token separators`,style:{marginBottom:0},tooltip:`Characters that finish the typed entry and start a new one. Default is a comma, so 'React,Node' becomes two values. Leave blank to require Enter.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`,`,style:{width:90},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`optionsFromField`],label:`Restrict options to field`,style:{marginBottom:0},tooltip:`Show only the options whose value matches the current value of ANOTHER field on this form. Blank = show every option. Example: point a rate-unit picker at the job's unit field so a recruiter cannot switch units.`,children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:230},placeholder:`blank = all options`,options:(e(y)??[]).map((e,t)=>({candidate:e,index:t})).filter(({candidate:e,index:t})=>t!==r&&e?.field).map(({candidate:e})=>({value:e.field,label:`${e.label||e.field} (${e.field})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})})]}),!i&&a===`static`&&(0,l.jsxs)(`div`,{className:`fg-static-options`,children:[(0,l.jsx)(`span`,{className:`fg-static-options-hint`,children:`Label / Value pairs`}),[`checkbox`,`radio`].includes(t)&&e(`formType`)===`search`&&(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:`Locked options are pre-selected and cannot be unchecked by the user. Module lets one option answer from a different module, so its results tab gets that module's own columns and row actions.`}),(0,l.jsx)(s.Form.List,{name:[r,`options`],children:(n,{add:r,remove:i})=>(0,l.jsxs)(l.Fragment,{children:[n.map(({key:n,name:r})=>(0,l.jsxs)(`div`,{className:`fg-option-row`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`label`],style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Label`})}),(0,l.jsx)(s.Form.Item,{name:[r,`value`],style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Value`,className:`fg-mono-input`})}),[`checkbox`,`radio`].includes(t)&&e(`formType`)===`search`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`module`],style:{marginBottom:0,flex:1},tooltip:`Module key this option's results tab is served by, e.g. dice. The tab then gets that module's own columns and row actions instead of the form's. Blank = use the form's module.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Module (optional)`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`locked`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Pre-selected on load and cannot be unchecked.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Locked`,unCheckedChildren:`Free`})})]}),(0,l.jsx)(c.MinusCircleOutlined,{onClick:()=>i(r),className:`fg-remove-icon`})]},n)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>r({label:``,value:``}),className:`fg-add-option-btn`,children:`Add Option`})]})})]}),a===`module`&&(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Options fetched from the module's distinct field values at runtime.`}),a===`group`&&(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Use "users" to load all users from the MongoDB-backed user collection.`}),a===`lookup`&&(0,l.jsxs)(`div`,{className:`fg-lookup-block`,children:[(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:8},children:`Cross-collection lookup — shows label, stores FK value.`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`lookupCollection`],label:`Collection`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendors`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`displayField`],label:`Display Field`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendorContact.firstName`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`displayField2`],label:`Display Field 2`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendorContact.lastName`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`valueField`],label:`Value Field (FK)`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,l.jsx)(s.Form.Item,{name:[r,`lookupFilterField`],label:`Filter Field`,style:{marginBottom:0,flex:1},tooltip:`Optional DB field to filter lookup rows by. Example: _id or clientId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. _id`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`lookupFilterValueFrom`],label:`Filter Value From`,style:{marginBottom:0,flex:1},tooltip:`Optional form/scope field that provides the filter value. Example: clientId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. clientId`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-lookup-conditions`,style:{marginTop:12},children:[(0,l.jsxs)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:[(0,l.jsx)(`b`,{children:`Dropdown conditions`}),` — every condition must match (AND). Evaluated on the server, so they restrict the data, not just the UI.`]}),(0,l.jsx)(s.Form.List,{name:[r,`lookupFilters`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t,...i})=>(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`,flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{...i,name:[t,`field`],label:`Field`,style:{marginBottom:0,flex:1,minWidth:140},tooltip:`Field on the lookup collection to test. Example: roleId, legacyUserId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. roleId`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`op`],label:`Operator`,style:{marginBottom:0,width:130},initialValue:`eq`,children:(0,l.jsx)(s.Select,{size:`small`,options:VS})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`valueSource`],label:`Value from`,style:{marginBottom:0,width:160},initialValue:`literal`,tooltip:`Literal = a fixed value. Signed-in user = resolved from the auth token on the server. Another collection = a sub-query supplying the values.`,children:(0,l.jsx)(s.Select,{size:`small`,options:[{label:`Literal value`,value:`literal`},{label:`Signed-in user`,value:`identity`},{label:`Another collection`,value:`collection`}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{let n=[`fields`,r,`lookupFilters`,t],a=e([...n,`op`])??`eq`;if(a===`notEmpty`||a===`empty`)return(0,l.jsx)(`span`,{className:`fg-source-hint`,style:{flex:1},children:`No value needed.`});let o=e([...n,`valueSource`])??`literal`;return o===`identity`?(0,l.jsx)(s.Form.Item,{...i,name:[t,`valueFrom`],label:`Identity`,style:{marginBottom:0,flex:1,minWidth:170},children:(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,placeholder:`currentUserId`,options:HS.map(e=>({label:e,value:e}))})}):o===`collection`?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcCollection`],label:`Collection`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. roles`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcValueField`],label:`Value field`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcMatchField`],label:`Where field`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. roleName`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcMatchValue`],label:`Equals`,style:{marginBottom:0,flex:1,minWidth:120},tooltip:`Fixed value. Comma-separate for a list. Ignored when an Identity is chosen next to it.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. RECRUITER`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcMatchValueFrom`],label:`…or identity`,style:{marginBottom:0,flex:1,minWidth:150},tooltip:`Match against the signed-in user instead of a fixed value — resolved on the server.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,placeholder:`none`,options:HS.map(e=>({label:e,value:e}))})}),(0,l.jsx)(s.Form.Item,{...i,name:[t,`srcRecursive`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Keep following the chain outward — e.g. a reporting tree, so the whole downline is included and not just direct reports.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Chain`,unCheckedChildren:`Direct`})})]}):(0,l.jsx)(s.Form.Item,{...i,name:[t,`value`],label:`Value`,style:{marginBottom:0,flex:1,minWidth:150},tooltip:`Comma-separate for a list.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Active`,className:`fg-mono-input`})})}}),(0,l.jsx)(s.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>n(t),children:`Remove`})]},e)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,onClick:()=>t({op:`eq`,valueSource:`literal`}),children:`+ Add condition`})]})})]}),(0,l.jsxs)(`div`,{className:`fg-lookup-row-filters`,style:{marginTop:12},children:[(0,l.jsxs)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:[(0,l.jsx)(`b`,{children:`Option filters (in-browser)`}),` — narrow the returned options by a value on each record, and/or to the signed-in user's reporting line.`]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`optionsRequireExtraField`],label:`Match Field`,style:{marginBottom:0,flex:1},tooltip:`Field on the looked-up record to test, e.g. roleId. Left empty, no value filter is applied.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. roleId`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`optionsRequireExtraValue`],label:`Match Value(s)`,style:{marginBottom:0,flex:1},tooltip:`Allowed value, or several separated by commas (e.g. 10, 13). Empty means the field must be exactly true.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`empty = must be true`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`optionsHierarchyParentField`],label:`Reports-To Field`,style:{marginBottom:0,flex:1},tooltip:`Field holding each record's parent id, in the same id space as the Value Field (e.g. reportingId). Set it to show only people below the signed-in user — directly or through any number of levels. The signed-in user is not listed.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. reportingId`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`optionsHierarchySelfFrom`],label:`Whose Line`,style:{marginBottom:0,flex:1},tooltip:`Whose reporting line to keep. Defaults to the signed-in user.`,children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,placeholder:`currentUserId`,options:[{label:`Signed-in user (currentUserId)`,value:`currentUserId`}]})})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`quickCreate`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Adds a button inside this dropdown so someone can create a new record without leaving the form. When they save, it is selected here automatically.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Add button`,unCheckedChildren:`No add`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateModule`],label:`What it creates`,style:{marginBottom:0,flex:1},tooltip:`Which list the new record is added to. Leave blank to use the Collection set above.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`same as Collection above`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickEdit`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Adds a button so someone can edit the record they have selected, without leaving the form.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Edit button`,unCheckedChildren:`No edit`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickEditModule`],label:`What it edits`,style:{marginBottom:0,flex:1},tooltip:`Which list the edited record belongs to. Leave blank to use the Collection set above.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`same as Collection above`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickEditIdFrom`],label:`Edit which record`,style:{marginBottom:0,flex:1},tooltip:`Normally the record chosen in THIS box. If the thing to edit is chosen in a different box, name that box here — e.g. a recruiter row that should edit its employer names employerId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. employerId`,className:`fg-mono-input`})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>{let t=e([...x,`quickCreateModule`])||e([...x,`lookupCollection`])||``,i=e([...x,`quickEditModule`])||e([...x,`lookupCollection`])||``;return(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateLabel`],label:`Add button wording`,style:{marginBottom:0,flex:1},tooltip:`Leave blank and the button names what it adds, worked out from the list above. Only type something here if you want different wording.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:n.dt({quickCreateModule:t},t)})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickEditLabel`],label:`Edit button wording`,style:{marginBottom:0,flex:1},tooltip:`Leave blank and the button names what it edits. The popup heading matches the button, so the two always agree.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:n.ft({quickEditModule:i},i)})})]})}}),(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Leave both blank unless you need different wording. The buttons name the thing they act on — "Add New Employer", "Edit Employer" — instead of a vague "Add More", and the popup heading matches the button that opened it.`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`enabled`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Show a popup right after a record is created here, warning that it still needs an Organization Admin to configure forms, workflows and permissions.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Notice`,unCheckedChildren:`No Notice`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`title`],label:`Notice Title`,style:{marginBottom:0,flex:1},tooltip:`Popup title. Default: New record created.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`New record created`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`recordNameField`],label:`Name Field`,style:{marginBottom:0,flex:1},tooltip:`Key on the created record holding its display name. Empty = the Display Field above, then any name-like key.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`defaults to Display Field`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`showRecordName`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Show the created record's name in the popup.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Name`,unCheckedChildren:`No Name`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`recordLabel`],label:`Name Label`,style:{marginBottom:0,flex:1},tooltip:`Label for the record-name line, e.g. Client name. Default: Record name.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Record name`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`showCreator`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Show who created the record.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Creator`,unCheckedChildren:`No Creator`})}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`creatorLabel`],label:`Creator Label`,style:{marginBottom:0,flex:1},tooltip:`Label for the creator line. Default: Created by.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Created by`})})]}),(0,l.jsx)(s.Form.Item,{name:[r,`quickCreateNotice`,`message`],label:`Notice Message`,style:{marginTop:8,marginBottom:0},tooltip:`Leave empty to use the standard wording asking the recruiter to contact their Organization Admin before proceeding.`,children:(0,l.jsx)(s.Input.TextArea,{size:`small`,rows:3,placeholder:`Leave empty for the standard message`})})]})]})}}),(0,l.jsxs)(`div`,{className:`fg-toggles-row`,children:[(()=>{let e=_.get(S.field),t=e?.locked===!0,n=e?.forceShow===!0,i=e?.forceReq===!0,a=e=>t?`Locked by Default Fields${e?` — always ${e}`:``}`:void 0;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{...o,name:[r,`show`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Show`,unCheckedChildren:`Hide`,checked:n?!0:void 0,disabled:t,title:a(n?`shown`:``)})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`req`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Req`,unCheckedChildren:`Opt`,checked:i?!0:void 0,disabled:t,title:a(i?`required`:``)})})]})})(),(0,l.jsx)(s.Form.Item,{...o,name:[r,`showOnAdd`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,tooltip:`Show this field on Add. Turn off for edit-only fields.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Add`,unCheckedChildren:`No Add`})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`edit`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Edit`,unCheckedChildren:`Read`})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`addRow`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Let users repeat this single field (add/remove multiple values). Ignored when this field's group is itself Add Row.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Repeat`,unCheckedChildren:`Single`})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`clientScope`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Use this field as the client-selector gate. It shows as the top 'Select Client' picker and is hidden from the form body (no duplicate client card).`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Client Gate`,unCheckedChildren:`Client Gate`})}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`infoEnabled`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,tooltip:`Show an info icon next to this field label in add/edit forms.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Info`,unCheckedChildren:`Info`})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`addRow`])?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Repeat Field Options`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`minRows`],label:`Min Values`,style:{marginBottom:0},tooltip:`Minimum values the user must keep. Delete is disabled at this count.`,children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:0,placeholder:`0`,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[r,`initialRows`],label:`Initial Values`,style:{marginBottom:0},tooltip:`How many empty inputs to show on a fresh Add (0 = show only the + button).`,children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:0,placeholder:`1`,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[r,`maxRows`],label:`Max Values`,style:{marginBottom:0},tooltip:`Maximum values allowed. The + button hides at this count. Blank = unlimited.`,children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:0,placeholder:`∞`,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[r,`addLabel`],label:`Add Button Label`,style:{marginBottom:0},tooltip:`Custom text for the add button. Defaults to 'Add <label>'.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Add Skill`,style:{width:170}})})]}),(0,l.jsxs)(`div`,{className:`fg-subfields-block`,style:{marginTop:10},children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Sub-fields (repeat a group together)`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`leave empty to repeat a single value`})]}),(0,l.jsx)(s.Form.List,{name:[r,`subFields`],children:(t,{add:n,remove:r})=>(0,l.jsxs)(`div`,{children:[t.map(({key:t,name:n,...i})=>(0,l.jsxs)(`div`,{className:`fg-subfield-row`,style:{marginBottom:10},children:[(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{...i,name:[n,`field`],label:`Key`,rules:[{required:!0,message:`Key`},{pattern:/^[a-zA-Z0-9_]+$/,message:`a-z 0-9 _`}],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. question`,style:{width:140},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{...i,name:[n,`label`],label:`Label`,rules:[{required:!0,message:`Label`}],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Question`,style:{width:150}})}),(0,l.jsx)(s.Form.Item,{...i,name:[n,`type`],label:`Type`,initialValue:`text`,style:{marginBottom:0},children:(0,l.jsx)(s.Select,{size:`small`,options:yS,style:{width:130}})}),(0,l.jsx)(s.Form.Item,{...i,name:[n,`req`],label:`Required`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{...i,name:[n,`col`],label:`Width`,tooltip:`Grid span: 12 = half row, 24 = full row. Blank = 12.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,placeholder:`12`,style:{width:70}})}),(0,l.jsx)(s.Tooltip,{title:`Remove sub-field`,children:(0,l.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>r(n),"aria-label":`Remove sub-field`,children:(0,l.jsx)(c.MinusCircleOutlined,{})})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:()=>{let t=e([...x,`subFields`,n,`type`]);if(![`select`,`radio`,`checkbox`].includes(t))return null;let r=e([...x,`subFields`,n,`dataSource`])??`static`;return(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Options / Values`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:[n,`dataSource`],label:`Source`,style:{marginBottom:0},initialValue:`static`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:190},options:ES})}),t===`select`&&(0,l.jsx)(s.Form.Item,{name:[n,`multiSelect`],label:`Multi Select`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Multi`,unCheckedChildren:`Single`})}),r===`master`&&(0,l.jsx)(s.Form.Item,{name:[n,`masterName`],label:`Master Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter master name`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. tracker`,style:{width:140}})}),r===`group`&&(0,l.jsx)(s.Form.Item,{name:[n,`groupName`],label:`Group Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter group name`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. users`,style:{width:140}})})]}),r===`static`&&(0,l.jsxs)(`div`,{className:`fg-static-options`,children:[(0,l.jsx)(`span`,{className:`fg-static-options-hint`,children:`Label / Value pairs`}),(0,l.jsx)(s.Form.List,{name:[n,`options`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t})=>(0,l.jsxs)(`div`,{className:`fg-option-row`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`label`],style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Label`})}),(0,l.jsx)(s.Form.Item,{name:[t,`value`],style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Value`,className:`fg-mono-input`})}),(0,l.jsx)(c.MinusCircleOutlined,{onClick:()=>n(t),className:`fg-remove-icon`})]},e)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({label:``,value:``}),className:`fg-add-option-btn`,children:`Add Option`})]})})]}),r===`group`&&(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Use "users" to load all users from the MongoDB-backed user collection.`}),r===`lookup`&&(0,l.jsxs)(`div`,{className:`fg-lookup-block`,children:[(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:8},children:`Cross-collection lookup — shows label, stores FK value.`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsx)(s.Form.Item,{name:[n,`lookupCollection`],label:`Collection`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendors`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[n,`displayField`],label:`Display Field`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendorContact.firstName`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[n,`displayField2`],label:`Display Field 2`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. vendorContact.lastName`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[n,`valueField`],label:`Value Field (FK)`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,l.jsx)(s.Form.Item,{name:[n,`lookupFilterField`],label:`Filter Field`,style:{marginBottom:0,flex:1},tooltip:`Optional DB field to filter lookup rows by. Example: _id or clientId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. _id`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[n,`lookupFilterValueFrom`],label:`Filter Value From`,style:{marginBottom:0,flex:1},tooltip:`Optional form/scope field that provides the filter value. Example: clientId.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. clientId`,className:`fg-mono-input`})})]})]})]})}})]},t)),(0,l.jsx)(s.Button,{type:`dashed`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>n({type:`text`,req:!1}),children:`Add Sub-field`})]})})]})]}):null}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,l.jsx)(s.Form.Item,{name:[r,`placeholder`],label:`Placeholder`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Admin-controlled placeholder`})}),(0,l.jsx)(s.Form.Item,{name:[r,`hidePlaceholder`],label:`Hide Placeholder`,valuePropName:`checked`,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Hidden`,unCheckedChildren:`Shown`})})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,l.jsx)(s.Form.Item,{name:[r,`visiblePermission`],label:`Visible permission key`,style:{marginBottom:0,flex:1},tooltip:`Menu-permission key ('<module>.<key>', e.g. submission.viewRate) gating whether this field is rendered at all. Leave blank to show to everyone (subject to the Show toggle above). Add matching keys in Admin → Permissions.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. submission.viewRate`})}),(0,l.jsx)(s.Form.Item,{name:[r,`editablePermission`],label:`Editable permission key`,style:{marginBottom:0,flex:1},tooltip:`Menu-permission key gating whether this field can be edited. Users without it see the field disabled with a tooltip. Leave blank to allow everyone (subject to the Edit toggle above).`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. submission.editRate`})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`clientScope`])?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Client Gate Message`}),(0,l.jsx)(s.Form.Item,{name:[r,`clientGateMessage`],style:{marginBottom:0},children:(0,l.jsx)(s.Input.TextArea,{rows:2,placeholder:`Message shown below 'Select Client' in the add form (leave blank for default)`})}),(0,l.jsx)(s.Form.Item,{name:[r,`clientGateResetOnChange`],valuePropName:`checked`,style:{margin:`10px 0 0`},tooltip:`When the selected client changes or is cleared, remove every value already entered in the form before loading the new client configuration.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Reset form on client change`,unCheckedChildren:`Keep form values`})})]}):null}),(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[(0,l.jsx)(c.InfoCircleOutlined,{}),` Help Text`]}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`tooltip`],label:`Tooltip`,style:{marginBottom:8},tooltip:`Hover help for this field. Works on every control — including fields rendered without a label, where the info icon below cannot appear. Use this one unless you specifically need the icon.`,children:(0,l.jsx)(s.Input.TextArea,{rows:2,placeholder:`Shown when users hover this field`})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e([...x,`infoEnabled`])?(0,l.jsx)(s.Form.Item,{name:[r,`infoText`],label:`Info icon text`,style:{marginBottom:0},rules:[{required:!0,message:`Enter info message`}],tooltip:`Legacy pair (Info switch above + this text). Renders an icon inside the field label, so it never shows on a label-less field. Ignored when a Tooltip is set.`,children:(0,l.jsx)(s.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the info icon`})}):null})]}),(0,l.jsx)(s.Form.Item,{...o,name:[r,`helpText`],label:`Extra Text`,tooltip:`Small grey text under the field. Put EACH LINE on its own line — they render stacked. Use one line for the rule ("Supports .pdf, .doc, .docx up to 2MB") and another for the reason ("Upload the résumé first — we can read the details out of it"). Run together in one paragraph, the second half gets skipped.`,children:(0,l.jsx)(s.Input.TextArea,{rows:3,placeholder:`Supports: .pdf, .doc, .docx up to 2MB
|
|
6
6
|
Upload the résumé first — we can read the details straight from it`})}),(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Checks against other records and other rows`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`checkDuplicateOnBlur`],label:`Check for an existing record`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`Put this on the email (or phone) box. When someone finishes typing it, we look for a record that already matches and offer to open it. Catching it here saves them filling in the whole form first. The fields compared are set in Automations → Check for someone already on file.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`On blur`,unCheckedChildren:`Off`})}),(0,l.jsx)(s.Form.Item,{name:[r,`rowHierarchyEnabled`],label:`Keep rows in date order`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`For a date inside a repeat section that is listed newest-first. Once the first row has dates, the calendar greys out any date that would overlap it in the rows below — you cannot have finished an earlier course after starting a later one. The user sees what is available while choosing, instead of being told afterwards.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Enforced`,unCheckedChildren:`Off`})})]}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`These two only make sense in the right place: the duplicate check on the box that identifies a person, and the date order on a start/end date inside a repeat section that lists the most recent first.`})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`showIf`,`field`]),n=e([...x,`showIf`,`operator`])??`eq`,i=AS.includes(n);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Show Condition`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`showIf`,`field`],label:`Show only when field`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`field key — blank = always show`,style:{width:210},className:`fg-mono-input`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`showIf`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:130},options:kS,getPopupContainer:()=>document.body})}),i&&(0,l.jsx)(s.Form.Item,{name:[r,`showIf`,`value`],label:`Value`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. yes`,style:{width:100},className:`fg-mono-input`})})]})]}),t&&(0,l.jsx)(s.Form.List,{name:[r,`showIf`,`conditions`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(`div`,{style:{marginTop:8},children:[e.length>0&&(0,l.jsx)(s.Form.Item,{name:[r,`showIf`,`logic`],label:`Combine when`,style:{marginBottom:6},initialValue:`and`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:190},getPopupContainer:()=>document.body,options:[{value:`and`,label:`All must match (AND)`},{value:`or`,label:`Any can match (OR)`}]})}),e.map(e=>(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:t})=>{let r=t([...x,`showIf`,`conditions`,e.name,`operator`])??`eq`,i=AS.includes(r);return(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:[e.name,`field`],label:`And field`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`field key`,style:{width:180},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[e.name,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:130},options:kS,getPopupContainer:()=>document.body})}),i&&(0,l.jsx)(s.Form.Item,{name:[e.name,`value`],label:`Value`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`comma for list`,style:{width:130},className:`fg-mono-input`})}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,onClick:()=>n(e.name),children:`Remove`})]})}},e.key)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,style:{marginTop:4},onClick:()=>t({field:``,operator:`eq`,value:``}),children:`+ Add condition`})]})}),t&&(0,l.jsxs)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:[`Hidden until “`,t,`”`,i?` ${n===`eq`?`equals`:n===`neq`?`does not equal`:n===`in`?`is one of`:`is not one of`} the value above.`:` ${n===`truthy`?`has any value.`:n===`notEmpty`?`has at least one row.`:`is empty.`}`,` `,`Add more conditions below to require several at once.`]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`labelWhen`,`field`]),n=e([...x,`labelWhen`,`operator`])??`eq`,i=AS.includes(n);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Label`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`labelWhen`,`field`],label:`Watch field`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`blank = use normal label`,style:{width:190},className:`fg-mono-input`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`labelWhen`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:130},options:kS,getPopupContainer:()=>document.body})}),i&&(0,l.jsx)(s.Form.Item,{name:[r,`labelWhen`,`value`],label:`Value`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`labelWhen`,`label`],label:`Alternate label`,style:{marginBottom:0},rules:[{required:!0,message:`Enter alternate label`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. Employer Rate`,style:{width:170}})})]})]}),t&&(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Only the displayed label changes. The field key and submitted payload stay unchanged.`})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`colWhenField`]),n=e([...x,`colWhenOperator`])??`eq`,i=AS.includes(n);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Width`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`colWhenField`],label:`Watch field`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`blank = always use Width`,style:{width:190},className:`fg-mono-input`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`colWhenOperator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:130},options:kS,getPopupContainer:()=>document.body})}),i&&(0,l.jsx)(s.Form.Item,{name:[r,`colWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`colWhenCol`],label:`Width when matched`,style:{marginBottom:0},rules:[{required:!0,message:`Enter a width (1-24)`}],children:(0,l.jsx)(s.InputNumber,{size:`small`,min:1,max:24,style:{width:150},placeholder:`e.g. 6`})})]})]}),t&&(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`While the condition holds this field uses the width above (24 = full row); otherwise it falls back to Width. Layout only — the payload is unchanged.`})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`verifyAction`]);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Field Verification`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`verifyAction`],label:`Action`,style:{marginBottom:0},children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,placeholder:`None`,style:{width:130},options:[{label:`Email`,value:`email`}]})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`verifyResultField`],label:`Result field`,style:{marginBottom:0},rules:[{required:!0,message:`Result field is required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifyTimestampField`],label:`Timestamp field`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. validatedAt`,style:{width:150},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifyIdleLabel`],label:`Initial text`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Verify Email`,style:{width:130}})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifyRetryLabel`],label:`Retry text`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Re Verify`,style:{width:120}})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifySuccessLabel`],label:`Success text`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Valid`,style:{width:110}})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifyLockedWhenFields`],label:`Locked when fields`,style:{marginBottom:0},tooltip:`Comma-separated sibling field keys on the same row (e.g. isAccountCreate). When ALL of them are true AND the result field is true, the edit form shows a fixed, non-clickable label instead of the Verify button. Blank = never locked.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. isAccountCreate`,style:{width:190},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`verifyLockedLabel`],label:`Locked text`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Verified`,style:{width:110}})})]})]}),t&&(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Changing the verified value resets the result and disables any configured validation gate. \xA0Locked-when fields mark a value that can no longer be re-checked (an account already exists for it) — the edit form then shows the locked text and no button.`})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]),n=e([...x,`dataType`])??`auto`,i=e([...x,`payloadMode`])??`auto`,a=[`select`,`radio`,`checkbox`].includes(t),o=[`label`,`object`,`custom`].includes(i);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Payload Mapping`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`payloadKey`],label:`Payload Key`,style:{marginBottom:8},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`defaults to field key`,style:{width:180},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`prefillFrom`],label:`Prefill From`,tooltip:`Source path to inherit this field's value from when the record is created by prefilling another module (e.g. submission ← candidate). Dotted paths allowed, e.g. passport.passportNumber.`,style:{marginBottom:8},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`source key (cross-module prefill)`,style:{width:200},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`prefillAsHint`],label:`Show instead of filling`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`On: the prefilled value is shown as a note UNDER the field and the box stays empty. Use it for anything that must be decided fresh each time — a rate carried forward looks helpful, but a number already in the box gets submitted unread.`,children:(0,l.jsx)(s.Switch,{size:`small`})}),(0,l.jsx)(s.Form.Item,{name:[r,`prefillHintLabel`],label:`Note wording`,style:{marginBottom:0},tooltip:`Shown under the field. "{value}" is replaced by the previous value. Blank uses "Last recorded: {value}".`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:260},placeholder:`Last recorded: {value}`})}),(0,l.jsx)(s.Form.Item,{name:[r,`prefillFromModule`],label:`Prefill From Module`,tooltip:`Prefill this field from ANOTHER module's record linked in the URL instead of the default source — e.g. 'job' makes Quick Submit fill this field from the current job (with Prefill From naming the job's key, e.g. mspreqId). Leave blank for the normal prefill source.`,style:{marginBottom:8},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. job`,style:{width:160},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e,setFieldValue:t})=>{let n=e([`fields`,r,`prefillWhen`])??[],i=e([`fields`,r,`lookupCollection`]),a=e([`fields`,r,`displayField`]),o=e([`fields`,r,`valueField`])||`_id`,u=(e,i)=>{let a=n.map((t,n)=>n===e?{...t,...i}:t);t([`fields`,r,`prefillWhen`],a)};return(0,l.jsxs)(`div`,{style:{width:`100%`,margin:`4px 0 8px`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,l.jsx)(mS,{type:`secondary`,style:{fontSize:12},children:`Conditional Default — when a field matches, set this field to a chosen record (or tick Clear to empty it instead)`}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],[...n,{field:``,value:``,setValue:``}]),children:`Add`})]}),n.length>0&&(0,l.jsx)(s.Form.Item,{name:[r,`prefillWhenReset`],valuePropName:`checked`,initialValue:!0,style:{marginBottom:0,marginTop:6},tooltip:`When the watched field changes to a value with NO matching row above (e.g. Contract Type switches away from W2), clear this field back out — but only if it still holds exactly the default a rule set (a value the admin/user picked themselves is never touched). Off keeps the old default in place.`,children:(0,l.jsx)(s.Checkbox,{children:`Reset this field when the condition no longer matches`})}),n.length>0&&(0,l.jsx)(s.Form.Item,{name:[r,`prefillWhenExclusive`],valuePropName:`checked`,initialValue:!1,style:{marginBottom:0,marginTop:2},tooltip:`Treat each record chosen above as EXCLUSIVE to its condition: it is offered in this dropdown only while its row matches, and is removed from the list entirely the rest of the time (including before the watched field is filled in). Use it when the record is only ever a valid choice under that condition — not merely its default. Off (the default) leaves the dropdown offering everything, as before.`,children:(0,l.jsx)(s.Checkbox,{children:`Offer the chosen record ONLY while its condition matches (hide it otherwise)`})}),n.map((e,d)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`,marginTop:6},children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:`when field (e.g. contractType)`,className:`fg-mono-input`,style:{width:180},value:e.field,onChange:e=>u(d,{field:e.target.value})}),(0,l.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`=`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`value (e.g. W2-Fulltime)`,className:`fg-mono-input`,style:{width:150},value:e.value,onChange:e=>u(d,{value:e.target.value})}),(0,l.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`→`}),e.clearValue?(0,l.jsx)(mS,{type:`secondary`,style:{fontSize:12,width:220},children:`clear this field`}):(0,l.jsx)(ZS,{collection:i,displayField:a,valueField:o,value:e.setValue,labelValue:e.setValueLabel,onChange:(e,t)=>u(d,{setValue:e,setValueLabel:t})}),(0,l.jsx)(s.Checkbox,{checked:!!e.clearValue,onChange:e=>u(d,{clearValue:e.target.checked}),children:(0,l.jsx)(`span`,{style:{fontSize:12},children:`Clear`})}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],n.filter((e,t)=>t!==d))})]},d))]})}}),(0,l.jsx)(s.Form.Item,{name:[r,`dataType`],label:`Data Type`,style:{marginBottom:8},initialValue:`auto`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:170},options:jS,getPopupContainer:()=>document.body})}),n===`array`&&(0,l.jsx)(s.Form.Item,{name:[r,`elementType`],label:`Array Element Type`,style:{marginBottom:8},children:(0,l.jsx)(s.Select,{size:`small`,style:{width:130},options:MS,getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[r,`payloadMode`],label:`Payload Mode`,style:{marginBottom:8},initialValue:`auto`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:210},options:NS,getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[r,`defaultValue`],label:`Default Value`,style:{marginBottom:8},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`optional`,style:{width:130}})}),(0,l.jsx)(s.Form.Item,{name:[r,`defaultOnEdit`],label:`Default on Edit`,valuePropName:`checked`,style:{marginBottom:8},tooltip:`When the stored value is empty, show Default Value in edit form. Keep off for fields that should remain blank on edit.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[r,`noPrefill`],label:`No Prefill`,valuePropName:`checked`,style:{marginBottom:8},tooltip:`Always render this field blank on edit instead of showing the stored value. For fields that capture a NEW entry each time rather than the record's current state — e.g. Billing Update's Amount Received, where each save records one more client payment.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[r,`emptyValues`],label:`Empty Values`,style:{marginBottom:8},tooltip:`Comma separated stored values that should render as blank in edit form. Example: 0, candidate`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. 0, candidate`,style:{width:170}})}),(0,l.jsx)(s.Form.Item,{name:[r,`valuePaths`],label:`Value Paths`,style:{marginBottom:8},tooltip:`Comma separated read paths for edit/detail prefill. Supports array filters like socialProfiles[type=linkedin].value.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`linkedIn, socialProfiles[type=linkedin].value`,style:{width:300},className:`fg-mono-input`})})]}),(o||a)&&(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsx)(s.Form.Item,{name:[r,`valueKey`],label:`Value Key (id)`,style:{marginBottom:8,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. id`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[r,`displayKey`],label:`Display Key (label)`,style:{marginBottom:8,flex:1},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. name`,className:`fg-mono-input`})}),a&&(0,l.jsx)(s.Form.Item,{name:[r,`richValue`],label:`Keep label`,valuePropName:`checked`,style:{marginBottom:8},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})})]}),i===`custom`&&(0,l.jsxs)(`div`,{style:{marginBottom:8},children:[(0,l.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Payload Template (JSON) — tokens: `,`{{value}} {{label}} {{raw.field}}`]}),(0,l.jsx)(s.Form.Item,{name:[r,`payloadTemplate`],style:{marginBottom:0},children:(0,l.jsx)(s.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "countryId": "{{value}}", "countryName": "{{label}}" }`})})]}),(0,l.jsxs)(`details`,{style:{marginTop:4},children:[(0,l.jsx)(`summary`,{className:`fg-source-hint`,style:{cursor:`pointer`},children:`Advanced: transform rule / omit empty`}),(0,l.jsxs)(`div`,{style:{marginTop:6},children:[(0,l.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Transform Rule (JSON) — e.g. `,`{ "map": { "true": "high", "false": "medium" } }`]}),(0,l.jsx)(s.Form.Item,{name:[r,`transformRule`],style:{marginBottom:6},children:(0,l.jsx)(s.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "map": { "true": "high" }, "default": "medium" }`})}),(0,l.jsx)(s.Form.Item,{name:[r,`omitEmpty`],label:`Omit when empty`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Omit`,unCheckedChildren:`Send`})})]})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]);if([`select`,`radio`,`checkbox`,`date`,`time`,`file`,`location`].includes(t))return null;let i=e([...x,`validator`,`type`]),a=i&&![`email`,`websiteUrl`,`jobDescription`].includes(i),o=i===`jobDescription`;return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Input Validator`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`validator`,`type`],label:`Type`,style:{marginBottom:0},children:(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,placeholder:`None — no char restriction`,style:{width:260},options:n.St})}),a&&(0,l.jsx)(s.Form.Item,{name:[r,`validator`,`maxLength`],label:`Max Length`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:1,placeholder:`e.g. 55`,style:{width:90}})}),o&&(0,l.jsx)(s.Form.Item,{name:[r,`validator`,`maxChars`],label:`Max Chars`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:1,placeholder:`1500`,style:{width:90}})}),i&&(0,l.jsx)(s.Form.Item,{name:[r,`validator`,`title`],label:`Error Title`,style:{marginBottom:0},tooltip:`Used in error messages. Defaults to the field label when blank.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:e([...x,`label`])||`Field`,style:{width:180}})})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]),n=t===`checkbox`,i=t===`select`&&e([...x,`dataSource`])===`lookup`;return!n&&!i?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Grey this out when a tick-box is ticked`}),(0,l.jsx)(s.Form.Item,{name:[r,`disabledByField`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`sibling field key (e.g. currentlyPursuing)`,className:`fg-mono-input`,style:{width:260}})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Name a tick-box in the same section. While it is ticked, this box is greyed out and cannot be typed in. Use it when the answer stops applying — for example an End Date once "still working here" is ticked. To HIDE the box completely instead of greying it out, use Show Condition above with the operator "is empty/false".`}),(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Require this once a sibling field has a value`}),(0,l.jsx)(s.Form.Item,{name:[r,`requiredIfField`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`sibling field key (e.g. empSigninAuthAlternatePhone)`,className:`fg-mono-input`,style:{width:260}})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Name a field in the same section. This field becomes mandatory only once that sibling has a value — e.g. an alternate phone's country code required only after the alternate phone number itself is entered. Works independently of the Required toggle above.`}),(0,l.jsxs)(`div`,{style:{marginTop:14},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Put the country code in its own box`}),(0,l.jsx)(s.Form.Item,{name:[r,`splitDialCodeInto`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. contactCountryCode`,className:`fg-mono-input`,style:{width:260}})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`For phone-number boxes. When a number arrives with its country code attached — from a parsed résumé, or copied from somewhere else — the code is put into the box you name here and only the number stays in this one. Leave blank to keep the value exactly as it arrives. If a number comes in with no country code, the other box is left alone rather than being filled with a guess.`})]})]}):n?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Empty another box when this is ticked`}),(0,l.jsx)(s.Form.Item,{name:[r,`linkedClearField`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`sibling field key to clear (e.g. endDate)`,className:`fg-mono-input`,style:{width:260}})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Name the box to empty when someone ticks this. Example: ticking "Currently working here" clears the End Date, so an old date cannot be left behind by accident. You can name more than one box by separating them with commas.`}),(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)(s.Form.Item,{name:[r,`exclusiveInGroup`],valuePropName:`checked`,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`One row only`,unCheckedChildren:`Any row`})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Only one row of a repeatable group may have this checked — e.g. Currently Working Here / Currently Pursuing. Once a row is ticked the box is disabled on every other row; untick it to move the claim. No effect outside a repeatable group.`})]})]}):i?(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`When this changes, clear the rest of the group`}),(0,l.jsx)(s.Form.Item,{name:[r,`clearGroupOnChange`],valuePropName:`checked`,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Clear`,unCheckedChildren:`Keep`})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Turn this on when the other fields in this group describe whatever is picked here. Example: the Employer box. Email, phone and recruiter all belong to the employer that was selected, so if someone picks a different employer those details are now the wrong company's — and because the boxes still look filled in, nobody notices. With this on, they are emptied the moment the selection changes, ready for the new one. Inside a repeat section only that row is cleared.`}),(0,l.jsxs)(`div`,{style:{marginTop:14},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Autofill Fields (JSON)`}),(0,l.jsx)(s.Form.Item,{name:[r,`autofillFrom`],style:{marginBottom:0},children:(0,l.jsx)(s.Input.TextArea,{rows:3,className:`fg-mono-input`,placeholder:`[{"optionKey":"vendorContact.email","targetField":"vendorEmail"}]`})}),(0,l.jsxs)(`p`,{className:`fg-source-hint`,children:[`Copy details from the record someone picks into other boxes in this group, so they do not have to type them again. Example: choosing a recruiter fills in their email and phone. One entry per box:`,(0,l.jsx)(`b`,{children:` optionKey`}),` is where the value sits on the picked record, and`,(0,l.jsx)(`b`,{children:` targetField`}),` is the box to put it in.`]})]})]}):null}}),(0,l.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,l.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,l.jsx)(c.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,l.jsx)(`span`,{className:`fg-val-title`,children:`Validations`})]}),(0,l.jsx)(s.Form.List,{name:[r,`validations`],children:(t,{add:n,remove:i})=>(0,l.jsxs)(l.Fragment,{children:[t.map(({key:t,name:n})=>(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:t})=>{let a=t([...y,r,`validations`,n,`type`]),o=FS(a),u=t([...y,r,`type`]),d=a===`dateAfterField`||a===`dateBeforeField`,f=(t(y)??[]).map((e,t)=>({candidate:e,index:t})).filter(({candidate:e,index:t})=>t!==r&&e?.type===`date`&&e?.field).map(({candidate:e})=>({value:e.field,label:`${e.label||e.field} (${e.field})`})),p=(t(y)??[]).map((e,t)=>({candidate:e,index:t})).filter(({candidate:e,index:t})=>t!==r&&e?.field).map(({candidate:e})=>({value:e.field,label:`${e.label||e.field} (${e.field})`})),m=OS.filter(e=>u===`date`?e.dateOnly||e.value===`required`||e.value===`unique`:!e.dateOnly).map(e=>({label:e.label,value:e.value})),h=a===Nx,g=t([...y,r])??{},_=Wx(g),b=[...y,r,`validations`,n,`value`],x=h?Xx(t(b),g):null,S=h?aS({primaryModule:v.primaryModule,groupTargetModule:v.getTargetModule(),field:g,config:x,collectionForModule:v.collectionForModule}):null,C=(t(y)??[]).filter(e=>e?.field).map(e=>{let t=String(e.payloadKey??``).trim()||e.field;return{value:t,label:`${e.label||e.field} (${t})`}});return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-val-row`,children:[(0,l.jsx)(s.Form.Item,{name:[n,`type`],style:{marginBottom:0},rules:[{required:!0,message:`Pick type`},{validator:(e,t)=>t===`unique`&&!_.supported?Promise.reject(Error(_.reason)):Promise.resolve()}],children:(0,l.jsx)(s.Select,{size:`small`,placeholder:u===`date`?`Date condition`:`Type`,style:{width:210},listHeight:400,getPopupContainer:()=>document.body,options:m,onChange:t=>{if(t===`unique`){let t=e.getFieldValue(b);e.setFieldValue(b,Xx(t,e.getFieldValue([...y,r])??{}))}else typeof e.getFieldValue(b)==`object`&&e.setFieldValue(b,``)}})}),o.hasValue&&!h&&(0,l.jsx)(s.Form.Item,{name:[n,`value`],style:{marginBottom:0},children:d?(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,placeholder:`Related date field`,style:{width:210},options:f,optionFilterProp:`label`,getPopupContainer:()=>document.body}):(0,l.jsx)(s.Input,{size:`small`,type:o.valueType===`number`?`number`:`text`,placeholder:o.placeholder,style:{width:90}})}),o.needsField&&(0,l.jsx)(s.Form.Item,{name:[n,`field`],style:{marginBottom:0},rules:[{required:!0,message:`Pick the capping field`}],children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:210},placeholder:`capped by field, e.g. totalExperience`,options:p,filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[n,`message`],style:{marginBottom:0,flex:1},rules:o.messageOptional?[]:[{required:!0,whitespace:!0,message:`Message required`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:o.messageOptional?`Optional — uses default`:h?`e.g. Email already present`:`Error message shown to user`})}),(0,l.jsx)(c.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>i(n)})]}),d&&(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Start and end date rules`}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[n,`strict`],label:`Must be different days`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`On: the start and end cannot be the same day. Pick 7 July as the start and the calendar greys out 7 July and everything before it on the end date. Off: the same day is allowed on both.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Different days`,unCheckedChildren:`Same day OK`})}),(0,l.jsx)(s.Form.Item,{name:[n,`minGap`,`value`],label:`Smallest gap allowed`,style:{marginBottom:0},tooltip:`How far apart the two dates must be at least. The calendar greys out everything closer than this, so it is clear before anyone picks — not an error afterwards. Leave blank if any gap is fine.`,children:(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:0,placeholder:`e.g. 6`,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[n,`minGap`,`unit`],label:`Unit`,style:{marginBottom:0},initialValue:`month`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:110},getPopupContainer:()=>document.body,options:[{label:`Days`,value:`day`},{label:`Weeks`,value:`week`},{label:`Months`,value:`month`},{label:`Years`,value:`year`}]})}),(0,l.jsx)(s.Form.Item,{name:[n,`minGapFrom`],label:`Let the user choose the gap`,style:{marginBottom:0},tooltip:`Optional. Name a dropdown on the same row that lets the user pick the gap themselves — for example a Duration box offering '6 months'. Whatever they choose is used instead of the fixed gap above; if they leave it empty, the fixed gap applies.`,children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:190},placeholder:`e.g. duration`,options:p,filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})})]})]}),h&&(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Uniqueness settings`}),_.supported?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[n,`value`,`collectionField`],label:`Collection field`,style:{marginBottom:0},tooltip:`The key this value is stored under in the target collection. Dot paths allowed, e.g. passport.passportNumber. Defaults to the field's payload key.`,rules:[{validator:(e,t)=>{let n=Kx(t);return n?Promise.reject(Error(n)):Promise.resolve()}}],children:(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:220},className:`fg-mono-input`,placeholder:S?.storedField||`stored key`,options:C,filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[n,`value`,`normalizer`],label:`Normalization`,style:{marginBottom:0},tooltip:`How the value is normalised on BOTH sides before comparing. The server applies the same rule.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:210},options:Px,getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[n,`value`,`validateOn`],label:`Check when`,style:{marginBottom:0},tooltip:`Blur checks as soon as the user leaves the field. Either way the value is re-checked authoritatively on submit.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:190},options:Fx,getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[n,`value`,`skipBlank`],label:`Skip blank`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`On: two records that both left this field empty are not duplicates. Turn off only when a blank must itself be unique.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Skip`,unCheckedChildren:`Check`})}),(0,l.jsx)(s.Form.Item,{name:[n,`value`,`enforcement`],label:`How it is checked`,style:{marginBottom:0},tooltip:`Look at the field: checking email means reading the email of every other record. Nothing extra is stored. Keep a hidden copy: also saves a tidied-up copy of the value on the record and puts a database rule on it — only needed if two people might create the very same value at the exact same moment, and it needs the database rule to be created first.`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:220},options:Rx,getPopupContainer:()=>document.body})})]}),(0,l.jsxs)(`p`,{className:`fg-source-hint`,style:{marginTop:6},children:[`Target module: `,(0,l.jsx)(`code`,{children:S?.module||`—`}),` · `,`Target collection: `,(0,l.jsx)(`code`,{children:S?.collection||`resolved on the server`}),` · `,`Form field: `,(0,l.jsx)(`code`,{children:S?.formField||`—`}),` · `,`Stored field: `,(0,l.jsx)(`code`,{children:S?.storedField||`—`})]}),S?.isCrossModule&&(0,l.jsxs)(`p`,{className:`fg-source-hint`,children:[`This group writes to `,(0,l.jsx)(`code`,{children:S.module}),` through its Target Collection, so the value is checked for uniqueness there — not in the module you are editing.`]}),(0,l.jsx)(s.Form.List,{name:[n,`value`,`alsoCheck`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(`div`,{style:{marginTop:8},children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Also check these collections`}),e.map(({key:e,name:t,...r})=>(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`,marginTop:4},children:[(0,l.jsx)(s.Form.Item,{...r,name:[t,`module`],label:`Module`,style:{marginBottom:0},tooltip:`Preferred. Resolved to a collection on the SERVER through the module registry — the browser never names a collection.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. users`})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`collection`],label:`or Collection`,style:{marginBottom:0},tooltip:`Only when the target is not a registered module. A single collection name — never a path.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`(optional)`})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`collectionField`],label:`Field there`,style:{marginBottom:0},tooltip:`The stored key in THAT collection. Defaults to this field's own key.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. email`})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`excludeFrom`,`path`],label:`Exclude ids from`,style:{marginBottom:0},tooltip:`Path is read on the record being edited (array paths allowed, e.g. recruiters.accountUserId); Match field is the key those ids are stored under in the other collection (blank = _id). Without it, every record that has already provisioned a value there becomes impossible to edit.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:190},className:`fg-mono-input`,placeholder:`e.g. recruiters.accountUserId`})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`excludeFrom`,`matchField`],label:`matched on`,style:{marginBottom:0},tooltip:`Path is read on the record being edited (array paths allowed, e.g. recruiters.accountUserId); Match field is the key those ids are stored under in the other collection (blank = _id). Without it, every record that has already provisioned a value there becomes impossible to edit.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:140},className:`fg-mono-input`,placeholder:`_id`})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`message`],label:`Message`,style:{marginBottom:0},tooltip:`Optional override. Blank uses the rule's own message — the user is never told which collection matched.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:200},placeholder:`(uses rule message)`})}),(0,l.jsx)(c.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginBottom:6},onClick:()=>n(t)})]},e)),(()=>{let e=(x?.alsoCheck??[]).flatMap((e,t)=>eS(e).map(e=>`#${t+1}: ${e}`));return e.length?(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,style:{marginTop:6},message:e[0]}):null})(),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t(Zx()),children:`Add collection`}),(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Path is read on the record being edited (array paths allowed, e.g. recruiters.accountUserId); Match field is the key those ids are stored under in the other collection (blank = _id). Without it, every record that has already provisioned a value there becomes impossible to edit.`})]})})]}):(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginTop:4},message:`Uniqueness is not available for this field type`,description:_.reason})]})]})}},t)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>n({type:``,value:``,field:``,message:``}),className:`fg-add-val-btn`,children:`Add Validation`})]})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...y,r,`overrideEnabled`]),n=(e([...y,r,`validations`])??[]).map(e=>typeof e==`string`?e:e?.type).filter(Boolean);return(0,l.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,l.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,l.jsx)(c.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,l.jsx)(`span`,{className:`fg-val-title`,children:`Override checkbox`})]}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`overrideEnabled`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Adds a checkbox beside this field's label that lifts the validations you name below, after asking the user to confirm. Use it where a rule is right almost always and wrong occasionally — e.g. a rate cap a manager has genuinely agreed to exceed.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[r,`overrideSkipValidations`],label:`Lifts validations`,style:{marginBottom:0},rules:[{required:!0,message:`Name at least one validation type`}],tooltip:`Which validation TYPES the checkbox suspends. Everything you do NOT name keeps validating — so an override can lift a rate cap without also switching off 'must be a number'.`,children:(0,l.jsx)(s.Select,{size:`small`,mode:`tags`,style:{minWidth:260},placeholder:`e.g. maxFieldWithFallback`,options:n.map(e=>({label:e,value:e})),tokenSeparators:[`,`],getPopupContainer:()=>document.body})}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideLabel`],label:`Checkbox label`,style:{marginBottom:0},tooltip:`Say what becomes allowed, not 'override'. e.g. 'Rate agreed above the job's client rate'.`,children:(0,l.jsx)(s.Input,{size:`small`,style:{width:280},placeholder:`e.g. Rate agreed above the job rate`})}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideField`],label:`Stored as`,style:{marginBottom:0},tooltip:`The record key the flag is stored under. Leave blank for an automatic, collision-free key derived from this field's own key.`,children:(0,l.jsx)(s.Input,{size:`small`,className:`fg-mono-input`,style:{width:200},placeholder:`blank = automatic`})}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideStore`],label:`Record it`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,tooltip:`On (default): the flag is saved on the record, so a value that breaks a documented rule is explained rather than looking like the rule failed. Off: the override applies to this form session only.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Saved`,unCheckedChildren:`Session`})})]})]}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-options-controls`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[r,`overrideConfirmTitle`],label:`Confirm title`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,style:{width:300},placeholder:`blank = a sensible default`})}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideConfirmOkText`],label:`Confirm button`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,style:{width:200},placeholder:`e.g. Yes, remove the limit`})}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideConfirmCancelText`],label:`Cancel button`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,style:{width:200},placeholder:`e.g. Keep the limit`})})]}),(0,l.jsx)(s.Form.Item,{name:[r,`overrideConfirmBody`],label:`Confirm message`,style:{marginBottom:0,marginTop:8},tooltip:`State plainly what is being given up. Blank uses a default that names this field and says the override is recorded.`,children:(0,l.jsx)(s.Input.TextArea,{size:`small`,rows:2,placeholder:`blank = a sensible default naming this field`})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Ticking the box asks the user to confirm before the limit comes off; unticking it restores the limit silently. Either way the field re-validates immediately.`})]})]})}}),(0,l.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,l.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,l.jsx)(c.ThunderboltOutlined,{className:`fg-val-icon`}),(0,l.jsx)(`span`,{className:`fg-val-title`,children:`AI Actions`})]}),(0,l.jsx)(s.Form.List,{name:[r,`aiActions`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t})=>(0,l.jsxs)(`div`,{className:`fg-ai-action-card`,children:[(0,l.jsxs)(`div`,{className:`fg-val-row`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`key`],style:{marginBottom:0},rules:[{required:!0,message:`Key`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`key (e.g. generateJD)`,style:{width:150}})}),(0,l.jsx)(s.Form.Item,{name:[t,`label`],style:{marginBottom:0},rules:[{required:!0,message:`Label`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Button label`,style:{width:170}})}),(0,l.jsx)(s.Form.Item,{name:[t,`trigger`],style:{marginBottom:0},initialValue:`click`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:100},options:[{label:`Click`,value:`click`},{label:`Upload`,value:`upload`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`bodyType`],style:{marginBottom:0},initialValue:`json`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:110},options:[{label:`JSON`,value:`json`},{label:`Multipart`,value:`multipart`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`position`],style:{marginBottom:0},children:(0,l.jsx)(s.Select,{size:`small`,style:{width:150},placeholder:`Button position`,allowClear:!0,options:[{label:`Top Left`,value:`top-left`},{label:`Top Center`,value:`top-center`},{label:`Top Right`,value:`top-right`},{label:`Bottom Left`,value:`bottom-left`},{label:`Bottom Center`,value:`bottom-center`},{label:`Bottom Right`,value:`bottom-right`}]})}),(0,l.jsx)(c.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>n(t)})]}),(0,l.jsxs)(`div`,{className:`fg-val-row`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`serviceKey`],style:{marginBottom:0},rules:[{required:!0,message:`Service key`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Service key (e.g. pyOps)`,style:{width:170}})}),(0,l.jsx)(s.Form.Item,{name:[t,`endpointPath`],style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Endpoint path`}],children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`/v1/promtJD`,className:`fg-mono-input`})})]}),(0,l.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Inputs (form field → request param) — mark an input "Required", or give it a Min Words count, to make the button stay disabled until that field has a value (or enough words). Inputs sharing the same "group" gate as one unit: either one satisfies it (e.g. a JD file OR JD text).`}),(0,l.jsx)(s.Form.List,{name:[t,`inputs`],children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t})=>(0,l.jsxs)(`div`,{className:`fg-val-row`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`param`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`param`,style:{width:100}})}),(0,l.jsx)(s.Form.Item,{name:[t,`sourceField`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`source field`,className:`fg-mono-input`,style:{width:150}})}),(0,l.jsx)(s.Form.Item,{name:[t,`kind`],style:{marginBottom:0},initialValue:`text`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:90},options:[{label:`Text`,value:`text`},{label:`File`,value:`file`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`transform`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`transform`,style:{width:120}})}),(0,l.jsx)(s.Form.Item,{name:[t,`group`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`group (either/or)`,style:{width:130}})}),(0,l.jsx)(s.Form.Item,{name:[t,`minWords`],style:{marginBottom:0},children:(0,l.jsx)(s.InputNumber,{size:`small`,min:0,placeholder:`min words`,style:{width:100}})}),(0,l.jsx)(s.Form.Item,{name:[t,`required`],valuePropName:`checked`,style:{marginBottom:0},children:(0,l.jsx)(s.Checkbox,{children:`Required`})}),(0,l.jsx)(c.MinusCircleOutlined,{className:`fg-remove-icon`,onClick:()=>n(t)})]},e)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({kind:`text`}),children:`Add Input`})]})})]}),(0,l.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Where the details sit in the reply (optional)`}),(0,l.jsx)(s.Form.Item,{name:[t,`responseDataPath`],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. data`,className:`fg-mono-input`,style:{width:200}})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`Most services reply with the details wrapped in something, often called "data". Name that wrapper here. Leave blank if the reply IS the details. Whatever comes back is matched to this form's boxes by name, exactly the way an Edit form fills itself in.`})]}),(0,l.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,l.jsx)(`span`,{className:`fg-options-label`,children:`Before filling in the form`}),(0,l.jsx)(s.Form.Item,{name:[t,`confirmWhen`],style:{marginBottom:0},initialValue:`targetsFilled`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:320},getPopupContainer:()=>document.body,options:[{value:`targetsFilled`,label:`Ask only if it would overwrite something (recommended)`},{value:`always`,label:`Always ask first`},{value:`never`,label:`Never ask — just fill it in`}]})}),(0,l.jsx)(`p`,{className:`fg-source-hint`,children:`With the recommended setting, uploading a file to an empty form just fills it in — no interruption. If someone has already typed things in and then uploads a file, they are asked before their work is replaced.`}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e([...x,`aiActions`,t,`confirmWhen`])===`never`?null:(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{name:[t,`confirmMessages`,`title`],label:`Question heading`,style:{marginBottom:0,flex:`1 1 220px`},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Fill the form from this file?`})}),(0,l.jsx)(s.Form.Item,{name:[t,`confirmMessages`,`body`],label:`Explanation`,style:{marginBottom:0,flex:`1 1 320px`},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`We read details from the uploaded file. Applying them will replace what you have already entered.`})}),(0,l.jsx)(s.Form.Item,{name:[t,`confirmMessages`,`ok`],label:`Yes button`,style:{marginBottom:0,flex:`0 1 160px`},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Parse & fill`})}),(0,l.jsx)(s.Form.Item,{name:[t,`confirmMessages`,`cancel`],label:`No button`,style:{marginBottom:0,flex:`0 1 180px`},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`Keep what I typed`})})]})})]})]},e)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({trigger:`click`,bodyType:`json`,inputs:[]}),className:`fg-add-val-btn`,children:`Add AI Action`})]})})]})]}),(0,l.jsx)(s.Tooltip,{title:`Remove field`,children:(0,l.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>i(r),"aria-label":`Remove field`,children:(0,l.jsx)(c.MinusCircleOutlined,{})})})]})]})},t)}),(0,l.jsx)(s.Button,{type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{r({type:`text`,show:!0,req:!1,edit:!0,dataSource:`static`,masterName:``,options:[]}),g?.(t.length,!0)},block:!0,className:`fg-add-field-btn`,children:`Add Field`})]})}function iC({open:e,editingGroup:t,defaultModule:r,moduleOptions:i,allGroupsByModule:a,onClose:u,onSaved:d,onSaveGroup:f}){let[p]=s.Form.useForm(),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(r),[v,y]=(0,o.useState)({}),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)(()=>new Map),[w,T]=(0,o.useState)(null),[E,D]=(0,o.useState)(()=>new Set),[O,k]=(0,o.useState)(`settings`),[A,j]=(0,o.useState)(!1),M=(0,o.useRef)({}),N=(0,o.useRef)(null),P=nC();(0,o.useEffect)(()=>{if(!e||!g)return;let t=!1;return n.Lr(g).then(e=>{t||C(n.Yr(e))}).catch(()=>{t||C(new Map)}),()=>{t=!0}},[e,g]);async function F(e){if(!(!e||M.current[e])){M.current[e]=`loading`,x(!0);try{let t=await n.Rr(e);y(n=>({...n,[e]:t})),M.current[e]=`loaded`}catch{delete M.current[e]}finally{x(!1)}}}(0,o.useEffect)(()=>{if(!e)return;let n=t?.module??r;_(n),t?p.setFieldsValue({module:t.module,name:t.name,label:t.label,addRow:t.addRow??!1,hideGroup:t.hideGroup??!1,hideGroupInForm:t.hideGroupInForm??!1,moduleName:t.moduleName??``,linkMode:t.parentRefField?`forward`:`reverse`,linkField:t.linkField??``,linkTypeField:t.linkTypeField??``,parentRefField:t.parentRefField??``,writeRefs:t.writeRefs??[],dependsOn:t.dependsOn??[],optionalWrite:t.optionalWrite??!1,hierarchyLevel:t.hierarchyLevel??void 0,hierarchyParent:t.hierarchyParent??void 0,hierarchyLinkField:t.hierarchyLinkField??``,allowCollapse:t.allowCollapse??!1,defaultCollapsed:t.defaultCollapsed??!1,appendHistory:t.appendHistory??!1,historyField:[t.historyField,...t.historyFields??[]].filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t).join(`, `),historyTimestampField:t.historyTimestampField??``,historyLabels:Object.entries(t.historyLabels??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyLabelFrom:Object.entries(t.historyLabelFrom??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyAfterGroup:t.historyAfterGroup??``,historyAmountFields:Object.entries(t.historyAmountFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyCurrencyFields:Object.entries(t.historyCurrencyFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyUnitFields:Object.entries(t.historyUnitFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),minRows:t.minRows??``,maxRows:t.maxRows??``,initialRows:t.initialRows??``,requireOne:t.requireOne??!1,allowInProgress:t.allowInProgress!==!1,inProgressMessage:t.inProgressMessage??``,orderByEnabled:!!t.orderBy,levelRuleEnabled:!!t.levelRule,orderBy:t.orderBy??null,levelRule:t.levelRule??null,regionRules:t.regionRules??null,requireValidatedField:t.requireValidatedField??``,linkGroup:t.linkGroup??``,mergeInto:t.mergeInto??``,mergePosition:t.mergePosition??`bottom`,showIfField:t.showIf?.field??``,showIfOperator:t.showIf?.operator??`notEmpty`,showIfValue:t.showIf?.value??``,disabledIfField:t.disabledIf?.field??``,disabledIfOperator:t.disabledIf?.operator??`notEmpty`,disabledIfValue:t.disabledIf?.value??``,submitDisabledMessage:t.submitDisabledMessage??``,infoEnabled:t.infoEnabled??!1,infoText:t.infoText??``,toggleEnabled:t.toggleEnabled??!1,toggleLabel:t.toggleLabel??``,toggleField:t.toggleField??``,afterSubmitMode:t.afterSubmit?.mode??void 0,afterSubmitTarget:t.afterSubmit?.target??``,formActions:(t.formActions??[]).map(e=>({label:e.label??``,tone:e.tone===`primary`?`primary`:`default`,afterSubmitMode:e.afterSubmit?.mode??`stay`,afterSubmitTarget:e.afterSubmit?.target??``,enabledWhenField:e.enabledWhen?.field??``,enabledWhenOperator:e.enabledWhen?.operator??`notEmpty`,enabledWhenValue:e.enabledWhen?.value??``})),submitMsgAddSuccess:t.submitMessages?.addSuccess??``,submitMsgEditSuccess:t.submitMessages?.editSuccess??``,submitMsgAddError:t.submitMessages?.addError??``,submitMsgEditError:t.submitMessages?.editError??``,submitMsgSuppress:t.submitMessages?.suppress??!1,order:t.order??0,fields:[...t.fields??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(eC)}):(p.resetFields(),p.setFieldsValue({module:n,addRow:!1,hideGroup:!1,hideGroupInForm:!1,moduleName:``,linkMode:`reverse`,linkField:``,linkTypeField:``,parentRefField:``,hierarchyLevel:void 0,hierarchyParent:void 0,hierarchyLinkField:``,allowCollapse:!1,defaultCollapsed:!1,appendHistory:!1,historyField:``,historyTimestampField:``,historyLabels:``,historyLabelFrom:``,historyAfterGroup:``,historyAmountFields:``,historyCurrencyFields:``,historyUnitFields:``,minRows:``,requireOne:!1,allowInProgress:!0,inProgressMessage:``,orderByEnabled:!1,levelRuleEnabled:!1,orderBy:null,levelRule:null,regionRules:null,mergeInto:``,mergePosition:`bottom`,showIfField:``,showIfOperator:`notEmpty`,showIfValue:``,disabledIfField:``,disabledIfOperator:`notEmpty`,disabledIfValue:``,submitDisabledMessage:``,formActions:[],infoEnabled:!1,toggleEnabled:!1,afterSubmitMode:void 0,afterSubmitTarget:``,order:0,fields:[]})),F(n)},[e,t,r,p]);function I(e){_(e),F(e)}function L(){D(new Set),k(`settings`),j(!1),u()}function R(e){k(e),e===`fields`&&j(!0)}function z(e,t=!1){D(n=>{let r=new Set(n);return t?r.add(e):r.has(e)?r.delete(e):r.add(e),r})}function B(e){let n=a[e]??[],r=new Set;return n.forEach(e=>{t&&e.id===t.id||(e.fields??[]).forEach(e=>{e.field&&r.add(e.field)})}),r}function V(e,t){let n=(v[g]??[]).find(t=>t.value===e);if(!n)return;let r=p.getFieldValue([`fields`,t])??{};p.setFieldValue([`fields`,t],{...r,field:n.value,label:n.label,type:n.type??`text`})}function ee(e){let t=B(e);return(v[e]??[]).map(e=>({value:e.value,disabled:t.has(e.value),label:(0,l.jsxs)(`span`,{style:{opacity:t.has(e.value)?.4:1},children:[e.label,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value}),t.has(e.value)&&(0,l.jsx)(`span`,{className:`fg-field-taken-hint`,children:`(in another group)`})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function te(){try{let e=await p.validateFields(),r={...p.getFieldsValue(!0),...e,fields:p.getFieldValue(`fields`)??[]},i=GS(r.fields);if(i.length){s.message.error(`Uniqueness rule cannot be saved — ${i[0]}`);return}if(r.moduleName){let e=r.name||r.label||`this group`,n=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();if(n||i){if(r.linkMode===`forward`){s.message.error(`Group "${e}": Hierarchy cannot be combined with a forward link (parentRefField) — choose one linkage mode.`);return}if(!n||!i){s.message.error(`Group "${e}": set both "Parent collection" and "Store parent id in field" to use Hierarchy.`);return}if(n===r.moduleName){s.message.error(`Group "${e}": Hierarchy parent cannot be this group's own Target Collection.`);return}let o=(a[r.module]??[]).filter(e=>!t||e.id!==t.id),c=new Map;o.forEach(e=>{e.moduleName&&c.set(e.moduleName,e.hierarchyParent??null)}),c.set(r.moduleName,n);let l=n,u=new Set([r.moduleName]),d=!1;for(;l&&l!==r.module;){if(u.has(l)){d=!0;break}u.add(l),l=c.get(l)??null}if(d){s.message.error(`Group "${e}": this Hierarchy parent chain loops back on itself — pick a different Parent collection.`);return}}}h(!0);let o={module:r.module,name:r.name,label:r.label,addRow:r.addRow??!1,order:Number(r.order??0),fields:XS(r.fields??[])};if(r.hideGroup&&(o.hideGroup=!0),r.hideGroupInForm&&(o.hideGroupInForm=!0),r.moduleName){if(o.moduleName=r.moduleName,r.linkMode===`forward`){let e=String(r.parentRefField??``).trim();e&&(o.parentRefField=e)}else{let e=String(r.linkField??``).trim(),t=String(r.linkTypeField??``).trim();e&&(o.linkField=e),t&&(o.linkTypeField=t)}let e=(r.writeRefs??[]).filter(e=>e?.fromModule&&e?.targetField);e.length&&(o.writeRefs=e.map(e=>({fromModule:e.fromModule.trim(),targetField:e.targetField.trim()})));let t=(r.dependsOn??[]).map(e=>String(e).trim()).filter(Boolean);t.length&&(o.dependsOn=t),r.optionalWrite&&(o.optionalWrite=!0);let n=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();n&&i&&(o.hierarchyParent=n,o.hierarchyLinkField=i);let a=Number(r.hierarchyLevel);Number.isFinite(a)&&a>0&&(o.hierarchyLevel=a)}let c=String(r.historyField??``).split(`,`).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t);if(r.allowCollapse&&(o.allowCollapse=!0,r.defaultCollapsed&&(o.defaultCollapsed=!0)),r.appendHistory&&c.length){o.appendHistory=!0,o.historyField=c[0],c.length>1&&(o.historyFields=c.slice(1)),String(r.historyTimestampField??``).trim()&&(o.historyTimestampField=r.historyTimestampField.trim());let e=e=>{let t={};return String(e??``).split(`,`).forEach(e=>{let n=e.indexOf(`=`);if(n<1)return;let r=e.slice(0,n).trim(),i=e.slice(n+1).trim();r&&i&&c.includes(r)&&(t[r]=i)}),t},t=e(r.historyLabels);Object.keys(t).length&&(o.historyLabels=t);let n=e(r.historyLabelFrom);Object.keys(n).length&&(o.historyLabelFrom=n);let i=e(r.historyAmountFields);Object.keys(i).length&&(o.historyAmountFields=i);let a=e(r.historyCurrencyFields);Object.keys(a).length&&(o.historyCurrencyFields=a);let s=e(r.historyUnitFields);Object.keys(s).length&&(o.historyUnitFields=s),String(r.historyAfterGroup??``).trim()&&(o.historyAfterGroup=r.historyAfterGroup.trim())}if(r.addRow&&r.minRows!==void 0&&r.minRows!==``&&(o.minRows=Number(r.minRows)),r.addRow&&r.initialRows!==void 0&&r.initialRows!==``&&(o.initialRows=Number(r.initialRows)),r.addRow&&r.maxRows!==void 0&&r.maxRows!==``&&(o.maxRows=Number(r.maxRows)),r.addRow&&String(r.requireValidatedField??``).trim()&&(o.requireValidatedField=r.requireValidatedField.trim()),r.addRow&&r.requireOne&&(o.requireOne=!0),r.allowInProgress===!1){o.allowInProgress=!1;let e=String(r.inProgressMessage??``).trim();e&&(o.inProgressMessage=e)}if(r.orderByEnabled&&(o.orderBy=r.orderBy??JS),r.levelRuleEnabled&&(o.levelRule=r.levelRule??YS),r.regionRules&&(o.regionRules=r.regionRules),r.addRow&&r.linkGroup&&(o.linkGroup=r.linkGroup.trim()),String(r.mergeInto??``).trim()&&(o.mergeInto=r.mergeInto.trim(),r.mergePosition===`top`&&(o.mergePosition=`top`)),String(r.showIfField??``).trim()){let e=r.showIfOperator||`notEmpty`;o.showIf={field:r.showIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.showIfValue??``).trim()&&(o.showIf.value=r.showIfValue.trim())}if(String(r.submitDisabledMessage??``).trim()&&(o.submitDisabledMessage=r.submitDisabledMessage.trim()),String(r.disabledIfField??``).trim()){let e=r.disabledIfOperator||`notEmpty`;o.disabledIf={field:r.disabledIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.disabledIfValue??``).trim()&&(o.disabledIf.value=r.disabledIfValue.trim())}r.infoEnabled&&r.infoText&&(o.infoEnabled=!0,o.infoText=r.infoText),r.toggleEnabled&&r.toggleField&&(o.toggleEnabled=!0,o.toggleLabel=r.toggleLabel||`Toggle`,o.toggleField=r.toggleField),r.afterSubmitMode&&(o.afterSubmit={mode:r.afterSubmitMode},(r.afterSubmitMode===`route`||r.afterSubmitMode===`detail`)&&(o.afterSubmit.target=(r.afterSubmitTarget||``).trim()));let l=(r.formActions??[]).filter(e=>String(e?.label??``).trim());l.length&&(o.formActions=l.map(e=>{let t={label:e.label.trim(),tone:e.tone===`primary`?`primary`:`default`},n=e.afterSubmitMode||`stay`;if(t.afterSubmit={mode:n},(n===`route`||n===`detail`)&&(t.afterSubmit.target=String(e.afterSubmitTarget??``).trim()),String(e.enabledWhenField??``).trim()){let n=e.enabledWhenOperator||`notEmpty`;t.enabledWhen={field:e.enabledWhenField.trim(),operator:n},[`eq`,`neq`,`in`,`notIn`].includes(n)&&String(e.enabledWhenValue??``).trim()&&(t.enabledWhen.value=e.enabledWhenValue.trim())}return t}));let u={};if((r.submitMsgAddSuccess||``).trim()&&(u.addSuccess=r.submitMsgAddSuccess.trim()),(r.submitMsgEditSuccess||``).trim()&&(u.editSuccess=r.submitMsgEditSuccess.trim()),(r.submitMsgAddError||``).trim()&&(u.addError=r.submitMsgAddError.trim()),(r.submitMsgEditError||``).trim()&&(u.editError=r.submitMsgEditError.trim()),r.submitMsgSuppress&&(u.suppress=!0),Object.keys(u).length&&(o.submitMessages=u),t)for(let[e,n]of Object.entries(t))n!=null&&n!==``&&(e in o||$S.has(e)||(o[e]=n));f?(await f(o,t),s.message.success(t?`Group updated`:`Group created`)):t?(await n.ci(t.id,o),s.message.success(`Group updated`)):(await n.Kn(o),s.message.success(`Group created`)),D(new Set),k(`settings`),j(!1),d()}catch(e){if(e?.errorFields)return;s.message.error(e.message||`Could not save group`)}finally{h(!1)}}let ne=(0,o.useMemo)(()=>ee(g||r),[a,r,t,g,v]);return(0,l.jsx)(s.Modal,{open:e,onCancel:L,width:1080,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal fg-group-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[t?(0,l.jsx)(c.EditOutlined,{}):(0,l.jsx)(c.PlusOutlined,{}),t?` Edit Form Group`:` New Form Group`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:L,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:m,onClick:te,icon:t?(0,l.jsx)(c.EditOutlined,{}):(0,l.jsx)(c.PlusOutlined,{}),children:t?`Update Group`:`Create Group`})]}),children:(0,l.jsxs)(s.Form,{form:p,layout:`vertical`,className:`fg-form fg-editor-form fg-group-editor-form`,children:[(0,l.jsxs)(`div`,{className:`fg-group-editor-tabs`,role:`tablist`,"aria-label":`Form group editor sections`,children:[(0,l.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`settings`,className:O===`settings`?`is-active`:``,onClick:()=>R(`settings`),children:[(0,l.jsx)(`span`,{className:`fg-editor-tab-number`,children:`1`}),(0,l.jsxs)(`span`,{children:[(0,l.jsx)(`strong`,{children:`Group settings`}),(0,l.jsx)(`small`,{children:`Name, behaviour and display options`})]})]}),(0,l.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`fields`,className:O===`fields`?`is-active`:``,onClick:()=>R(`fields`),children:[(0,l.jsx)(`span`,{className:`fg-editor-tab-number`,children:`2`}),(0,l.jsxs)(`span`,{children:[(0,l.jsx)(`strong`,{children:`Fields`}),(0,l.jsxs)(`small`,{children:[t?.fields?.length??0,` configured fields`]})]})]})]}),(0,l.jsxs)(`div`,{className:`fg-group-editor-panel${O===`settings`?` is-active`:``}`,children:[(0,l.jsxs)(`div`,{className:`fg-form-section fg-group-settings-card`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Group Info`}),(0,l.jsx)(s.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,l.jsx)(s.Select,{options:i,placeholder:`Select module`,onChange:I})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Group Label`,rules:[{required:!0,message:`Label is required`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. Work Experience`})}),(0,l.jsx)(s.Form.Item,{name:`name`,label:`Group Name (key)`,rules:[{required:!0,message:`Name is required`},{pattern:/^[a-z0-9_]+$/,message:`Lowercase letters, numbers, underscores only`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. work_experience`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`moduleName`,label:`Target Collection (optional)`,tooltip:`Route THIS group's fields to a different collection instead of the default module record. Groups sharing the same target merge into one linked record. Leave blank for default behaviour.`,children:(0,l.jsx)(s.AutoComplete,{options:i.map(e=>({value:e.value,label:e.label})),placeholder:`Default (this module's own record)`,allowClear:!0,filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase()),className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Linkage`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`how this collection links to the main record (ids stored as ObjectId)`})]}),(0,l.jsx)(s.Form.Item,{name:`linkMode`,style:{marginBottom:8},children:(0,l.jsxs)(s.Radio.Group,{optionType:`button`,buttonStyle:`solid`,size:`small`,children:[(0,l.jsx)(s.Radio.Button,{value:`reverse`,children:`Target stores this record’s id (child→parent)`}),(0,l.jsx)(s.Radio.Button,{value:`forward`,children:`This record stores the target’s id (lookup)`})]})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e(`linkMode`)===`forward`?(0,l.jsx)(s.Form.Item,{name:`parentRefField`,label:`Reference field on THIS record`,tooltip:`A field on the main record that holds the target document's _id (as ObjectId), e.g. employerRef. On edit it selects which target document to load and update.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. employerRef`,className:`fg-mono-input`,style:{width:260}})}):(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:`linkField`,label:`Link field on target (optional)`,tooltip:`Field on the TARGET document that stores this record's _id (as ObjectId), e.g. jobRef. Leave blank to use the default parentId / parentModule linkage.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. jobRef`,className:`fg-mono-input`,style:{width:220}})}),(0,l.jsx)(s.Form.Item,{name:`linkTypeField`,label:`Parent-type field (optional)`,tooltip:`Field on the target document recording WHICH module the parent is (e.g. parentType), so one collection can serve several parent modules.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. parentType`,className:`fg-mono-input`,style:{width:220}})})]})})]}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Hierarchy`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`chain this collection under another collection of the same form`})]}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,l.jsx)(s.Form.Item,{name:`hierarchyLevel`,label:`Level`,tooltip:`Explicit ordering when several collections chain together — level 1 is written first.`,style:{marginBottom:0},children:(0,l.jsx)(s.InputNumber,{min:1,max:99,style:{width:120}})}),(0,l.jsx)(s.Form.Item,{name:`hierarchyParent`,label:`Parent collection`,tooltip:`What this collection is chained under: the main record, or another group's Target Collection.`,style:{marginBottom:0,minWidth:260},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,placeholder:`No hierarchy (default)`,optionFilterProp:`label`,options:(()=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=a[t]??[],o=new Set,s=[];return t&&(s.push({value:t,label:`Main record (${t})`}),o.add(t)),i.forEach(e=>{let t=e.moduleName;!t||t===n||o.has(t)||(o.add(t),s.push({value:t,label:t}))}),s})()})}),(0,l.jsx)(s.Form.Item,{name:`hierarchyLinkField`,label:`Store parent id in field`,tooltip:`Field on THIS collection holding the parent's _id (stored as ObjectId).`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. trainerId`,className:`fg-mono-input`,style:{width:200}})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=a[t]??[],o=tC(t,n,e(`hierarchyParent`),e(`hierarchyLinkField`),i);return o?(0,l.jsx)(mS,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:o}):null}})]}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,l.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Linked-write dependencies`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`inject ids created by other writes of this same form submit`})]}),(0,l.jsx)(s.Form.List,{name:`writeRefs`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(`div`,{children:[e.map(({key:e,name:t,...r})=>(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`,marginBottom:6},children:[(0,l.jsx)(s.Form.Item,{...r,name:[t,`fromModule`],label:`Id from (module)`,rules:[{required:!0,message:`Module`}],style:{marginBottom:0},children:(0,l.jsx)(s.AutoComplete,{options:i.map(e=>({value:e.value})),placeholder:`e.g. users (or this module)`,style:{width:220},className:`fg-mono-input`,filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase())})}),(0,l.jsx)(s.Form.Item,{...r,name:[t,`targetField`],label:`Store into field`,rules:[{required:!0,message:`Field`}],style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. userId or links.userId`,style:{width:220},className:`fg-mono-input`})}),(0,l.jsx)(s.Tooltip,{title:`Remove dependency`,children:(0,l.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove dependency`,children:(0,l.jsx)(c.MinusCircleOutlined,{})})})]},e)),(0,l.jsx)(s.Button,{type:`dashed`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({fromModule:``,targetField:``}),children:`Add Dependency`})]})}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{marginTop:10},children:[(0,l.jsx)(s.Form.Item,{name:`dependsOn`,label:`Runs after (ordering only)`,tooltip:`Other Target Collections this write must wait for, without injecting an id.`,style:{marginBottom:0,flex:1},children:(0,l.jsx)(s.Select,{mode:`tags`,placeholder:`e.g. users`,options:i.map(e=>({value:e.value,label:e.value}))})}),(0,l.jsx)(s.Form.Item,{name:`optionalWrite`,label:`Optional write`,valuePropName:`checked`,tooltip:`On: a failure of this write is logged but the submit still succeeds (best-effort). Off (default): a failure rolls back EVERY write of this submit.`,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{checkedChildren:`Best-effort`,unCheckedChildren:`Required`})})]})]}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`allowCollapse`);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Collapsible section`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`let users fold this section away — useful on long forms`})]}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:`allowCollapse`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`On: the section header shows a chevron that opens and closes it, on both the Add and Edit forms. Off (default): no chevron, the section is always open.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Collapsible`,unCheckedChildren:`Always open`})}),t&&(0,l.jsx)(s.Form.Item,{name:`defaultCollapsed`,label:`Start closed`,valuePropName:`checked`,style:{marginBottom:0},tooltip:`On: the section is already folded away when the form opens, and the user opens it if they need it. Use it for the parts most records leave alone, so the form opens on the fields that are filled in every time.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Closed`,unCheckedChildren:`Open`})})]})]})}}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`appendHistory`);return(0,l.jsxs)(`div`,{className:`fg-options-block`,children:[(0,l.jsxs)(`span`,{className:`fg-options-label`,children:[`Append as history`,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`keep every past save instead of overwriting (e.g. rate negotiation history)`})]}),(0,l.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,l.jsx)(s.Form.Item,{name:`appendHistory`,valuePropName:`checked`,style:{marginBottom:0},children:(0,l.jsx)(s.Switch,{checkedChildren:`Append`,unCheckedChildren:`Off`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`historyField`,label:`Array field`,rules:[{required:!0,message:`Required`}],tooltip:`The record key(s) holding the append-only array(s) — usually the prefix(es) this group's own fields already write through. Comma-separate to keep an independent history per prefix, e.g. candidateBudget, proposedRate, referralRate.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. proposedRate, candidateBudget`,style:{width:240},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyTimestampField`,label:`Timestamp key`,tooltip:`Key stamped onto each saved entry. Blank defaults to 'timestamp'.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`timestamp`,style:{width:140},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyLabels`,label:`Detail headings`,tooltip:`Heading shown for each history block in the detail view, as container=Label pairs, comma-separated. Blank derives it from the first field under that container — which also picks up that field's Conditional Label, so the heading can change per record.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidateBudget=Candidate Rate, proposedRate=Proposed Rate`,style:{width:320},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyLabelFrom`,label:`Heading from field`,tooltip:`Take each block's heading from a specific field's label, as container=fieldKey pairs. Use this when the heading must follow a Conditional Label on a field other than the first one.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidateBudget=candidateBudget.candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyAmountFields`,label:`Amount key`,tooltip:`Which sub-key of a stored entry holds the amount, as container=subKey pairs, comma-separated. Blank uses the first field this group configures under that container that is not a currency/symbol/unit/type key — correct for almost every group.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyCurrencyFields`,label:`Currency key`,tooltip:`Which sub-key holds the currency (code or symbol), as container=subKey pairs. Blank prefers a configured symbol field that actually carries a symbol, otherwise the configured currency field.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetCurrency`,style:{width:320},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyUnitFields`,label:`Unit key`,tooltip:`Which sub-key holds the rate unit (Hourly / Daily / …), as container=subKey pairs. Blank uses the configured unit field under that container.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetUnit`,style:{width:320},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`historyAfterGroup`,label:`Show after group`,tooltip:`Group key the history card is rendered after in the detail view. Blank places it after the employer group, or last when there is none.`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`employer_details`,style:{width:200},className:`fg-mono-input`})})]})]}),t&&(0,l.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:6},children:`Every save adds a new entry to the end of the array — the detail view and edit form always show the latest one, exactly like a normal field.`})]})}}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,l.jsx)(s.Form.Item,{name:`order`,label:`Display Order`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:100}})}),(0,l.jsx)(s.Form.Item,{name:`addRow`,label:`Allow Add Row`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:`hideGroup`,label:`Hide Group`,valuePropName:`checked`,tooltip:`Hide this group entirely from Add/Edit forms — not rendered, not validated, not submitted.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,l.jsx)(s.Form.Item,{name:`hideGroupInForm`,label:`Hide in Form only`,valuePropName:`checked`,tooltip:`Hide this group from the Add/Edit forms but KEEP it on the detail view. For groups whose values are filled by the system and should be read, never typed — e.g. a submission's Job Information. (Hide Group above hides it in both places.)`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Form hidden`,unCheckedChildren:`Shown`})}),(0,l.jsx)(s.Form.Item,{label:`Show group when`,tooltip:`Gate the whole group on another field's live value — the group only appears once the condition matches (e.g. the Employer group opens after Contract Type is chosen). Leave the field blank to always show.`,children:(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`showIfField`,noStyle:!0,children:(0,l.jsx)(s.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,l.jsx)(s.Form.Item,{name:`showIfOperator`,noStyle:!0,children:(0,l.jsx)(s.Select,{style:{width:`30%`},options:[{value:`notEmpty`,label:`is set`},{value:`isEmpty`,label:`is empty`},{value:`eq`,label:`equals`},{value:`neq`,label:`not equals`},{value:`in`,label:`in list`},{value:`notIn`,label:`not in list`}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.showIfOperator!==t.showIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`showIfOperator`))?(0,l.jsx)(s.Form.Item,{name:`showIfValue`,noStyle:!0,children:(0,l.jsx)(s.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,l.jsx)(s.Form.Item,{name:`disabled`,label:`Disable Group`,valuePropName:`checked`,tooltip:`Make the whole group card read-only — it still renders and submits, but no field can be edited.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Read-only`,unCheckedChildren:`Editable`})}),(0,l.jsx)(s.Form.Item,{label:`Disable group when`,tooltip:`Make the whole group read-only while another field's live value satisfies this condition (same shape as 'Show group when'). Leave the field blank for no conditional disable.`,children:(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`disabledIfField`,noStyle:!0,children:(0,l.jsx)(s.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,l.jsx)(s.Form.Item,{name:`disabledIfOperator`,noStyle:!0,children:(0,l.jsx)(s.Select,{style:{width:`30%`},options:[{value:`notEmpty`,label:`is set`},{value:`isEmpty`,label:`is empty`},{value:`eq`,label:`equals`},{value:`neq`,label:`not equals`},{value:`in`,label:`in list`},{value:`notIn`,label:`not in list`}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.disabledIfOperator!==t.disabledIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`disabledIfOperator`))?(0,l.jsx)(s.Form.Item,{name:`disabledIfValue`,noStyle:!0,children:(0,l.jsx)(s.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,l.jsx)(s.Form.Item,{name:`submitDisabledMessage`,label:`Disabled submit tooltip`,tooltip:`Shown on hover over the form's Create/Update button WHILE it is disabled, so the user knows why they can't submit. Leave blank for the built-in default.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. Complete all mandatory fields`,allowClear:!0})}),(0,l.jsx)(s.Form.Item,{name:`minRows`,label:`Min Rows`,tooltip:`Minimum rows users must keep. Delete is disabled at this count.`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:`maxRows`,label:`Max Rows`,tooltip:`Maximum rows users can add. The Add button hides once this count is reached. Blank/0 = unlimited.`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:`initialRows`,label:`Initial Rows`,tooltip:`How many empty rows to show on load (0 = show only the + button).`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:`requireOne`,label:`Row Required`,valuePropName:`checked`,tooltip:`When users add a row, at least one field in that row must be filled.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:`requireValidatedField`,label:`Require Validated Field`,tooltip:`A boolean field key on every row (e.g. isValid, set by a field's Verify action). The form's Submit button stays disabled until every row has it set to true. Blank = no gate.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`allowInProgress`,label:`Allow "still ongoing" rows`,valuePropName:`checked`,initialValue:!0,tooltip:`Turn OFF where a person may only submit something they have FINISHED — for example a market where a company will not accept a course that is still being studied. When off, ticking the ongoing box on a row stops the form being submitted and shows the message below.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Allowed`,unCheckedChildren:`Must be finished`})}),(0,l.jsx)(s.Form.Item,{name:`inProgressMessage`,label:`Message when not allowed`,tooltip:`Shown when someone ticks the ongoing box in a market that does not accept it. Say what they should do, not just that it is wrong.`,style:{flex:`1 1 320px`},children:(0,l.jsx)(s.Input,{placeholder:`A completed qualification is required — an in-progress course cannot be submitted.`})}),(0,l.jsx)(s.Form.Item,{name:`orderByEnabled`,label:`Keep rows newest-first`,valuePropName:`checked`,tooltip:`Keeps this section's rows in date order with the most recent at the top. If someone fills in a row whose dates make it the newest, they are asked whether to move it up — nothing is ever reordered behind their back.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,l.jsx)(s.Form.Item,{name:`levelRuleEnabled`,label:`Require lower levels too`,valuePropName:`checked`,tooltip:`For qualification lists. When on, entering only a higher qualification (a Master's) asks for the lower one (a Bachelor's) as well. Turn OFF for markets where a higher qualification alone is acceptable. The levels themselves are edited in Masters → Degree Level.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,l.jsx)(s.Form.Item,{name:`linkGroup`,label:`Link Group`,tooltip:`Groups sharing the same value here stay row-synced — adding or removing a row in one adds/removes the matching row in every linked group, while each keeps its own card and its own submitted data. Leave blank for an independent group. Only applies when Allow Add Row is on.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. workHistory`,style:{width:160},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`mergeInto`,label:`Show inside another section`,tooltip:`Display these fields inside a different section's card instead of giving them a card of their own — type that section's name. This only changes where they APPEAR: what gets saved, and any rules on this group, stay exactly as they are. Leave blank to keep its own card.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. submission_current_employer`,style:{width:220},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`mergePosition`,label:`Merge Position`,initialValue:`bottom`,tooltip:`Whether these fields appear above or below the other card's own fields. Choose Above when this group holds the answer the other fields depend on — for example Contract Type, which decides what the Employer fields show. Below it, people are asked to fill in a section before they reach the box that unlocks it.`,children:(0,l.jsx)(s.Select,{style:{width:140},options:[{label:`Below host fields`,value:`bottom`},{label:`Above host fields`,value:`top`}]})}),(0,l.jsx)(s.Form.Item,{name:`infoEnabled`,label:`Group Info`,valuePropName:`checked`,initialValue:!1,children:(0,l.jsx)(s.Switch,{checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,l.jsx)(s.Form.Item,{name:`toggleEnabled`,label:`Group Switch`,valuePropName:`checked`,initialValue:!1,children:(0,l.jsx)(s.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`infoEnabled`)?(0,l.jsx)(s.Form.Item,{name:`infoText`,label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,l.jsx)(s.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`toggleEnabled`)?(0,l.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,l.jsx)(s.Form.Item,{name:`toggleLabel`,label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1},children:(0,l.jsx)(s.Input,{placeholder:`e.g. Fresher`})}),(0,l.jsx)(s.Form.Item,{name:`toggleField`,label:`Payload Field`,rules:[{required:!0,message:`Enter payload field`},{pattern:/^[A-Za-z_][\w.]*$/,message:`Use a valid key, dot path allowed`}],style:{flex:1},children:(0,l.jsx)(s.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,l.jsx)(`div`,{className:`fg-inline-row`,children:(0,l.jsx)(s.Form.Item,{name:`afterSubmitMode`,label:`After Submit`,tooltip:`What happens once this module's Add/Edit form submits successfully. Leave blank to keep the current default navigation.`,children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`Default (current behavior)`,style:{width:220},options:[{value:`stay`,label:`Stay on Current Page`},{value:`back`,label:`Go Back`},{value:`route`,label:`Navigate to a Route`},{value:`detail`,label:`Navigate to Record Detail`}]})})}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`afterSubmitMode`);return t!==`route`&&t!==`detail`?null:(0,l.jsx)(s.Form.Item,{name:`afterSubmitTarget`,label:`Navigation Target`,tooltip:`An in-app path. Use :id for the created/updated record's id, or :fieldName for any submitted field value.`,rules:[{required:!0,message:`Enter a navigation target`},{pattern:/^\//,message:`Must be an in-app path starting with /`}],children:(0,l.jsx)(s.Input,{placeholder:`/trainers/:id`,className:`fg-mono-input`})})}}),(0,l.jsx)(s.Form.Item,{label:`Additional submit buttons`,tooltip:`Extra buttons beside Create — each creates the record then navigates per its own After-Submit, optionally enabled only once a field is filled.`,children:(0,l.jsx)(s.Form.List,{name:`formActions`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(`div`,{className:`fg-form-actions-list`,children:[e.map(({key:e,name:t})=>(0,l.jsxs)(`div`,{className:`fg-form-action-row`,style:{border:`1px solid #eee`,borderRadius:8,padding:10,marginBottom:8},children:[(0,l.jsxs)(s.Space,{wrap:!0,align:`start`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`label`],label:`Button Label`,rules:[{required:!0,message:`Label`}],style:{marginBottom:8},children:(0,l.jsx)(s.Input,{placeholder:`e.g. Create and Source Candidate`,style:{width:240}})}),(0,l.jsx)(s.Form.Item,{name:[t,`tone`],label:`Type`,style:{marginBottom:8},children:(0,l.jsx)(s.Select,{style:{width:130},options:[{value:`primary`,label:`Primary`},{value:`default`,label:`Secondary`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`afterSubmitMode`],label:`After Submit`,style:{marginBottom:8},children:(0,l.jsx)(s.Select,{style:{width:180},options:[{value:`stay`,label:`Stay on page`},{value:`back`,label:`Go back`},{value:`route`,label:`Navigate to a route`},{value:`detail`,label:`Record detail`}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`route`,`detail`].includes(e([`formActions`,t,`afterSubmitMode`]))?(0,l.jsx)(s.Form.Item,{name:[t,`afterSubmitTarget`],label:`Target`,style:{marginBottom:8},rules:[{pattern:/^\//,message:`Must start with /`}],children:(0,l.jsx)(s.Input,{placeholder:`/jobs/:id/source`,className:`fg-mono-input`,style:{width:200}})}):null}),(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>n(t),style:{marginTop:28}})]}),(0,l.jsxs)(s.Space,{wrap:!0,align:`start`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`enabledWhenField`],label:`Enable when field`,style:{marginBottom:0},tooltip:`Keep the button disabled until this record field satisfies the condition (e.g. Assign To is set). Blank = always enabled.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. assignedTo`,style:{width:200}})}),(0,l.jsx)(s.Form.Item,{name:[t,`enabledWhenOperator`],label:`Condition`,style:{marginBottom:0},children:(0,l.jsx)(s.Select,{style:{width:130},options:[{value:`notEmpty`,label:`is set`},{value:`isEmpty`,label:`is empty`},{value:`eq`,label:`equals`},{value:`neq`,label:`not equals`},{value:`in`,label:`in list`},{value:`notIn`,label:`not in list`}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e([`formActions`,t,`enabledWhenOperator`]))?(0,l.jsx)(s.Form.Item,{name:[t,`enabledWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`Value(s)`,style:{width:160}})}):null})]})]},e)),(0,l.jsx)(s.Button,{type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({tone:`primary`,afterSubmitMode:`stay`,enabledWhenOperator:`notEmpty`}),children:`Add submit button`})]})})}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,l.jsx)(s.Form.Item,{name:`submitMsgAddSuccess`,label:`Add Success Message`,tooltip:'Toast shown after a successful Add. ${module} is replaced with the module name. Blank = default "<Module> has added successfully".',children:(0,l.jsx)(s.Input,{placeholder:"${module} has added successfully",style:{width:280}})}),(0,l.jsx)(s.Form.Item,{name:`submitMsgEditSuccess`,label:`Edit Success Message`,tooltip:'Toast shown after a successful Edit. ${module} is replaced with the module name. Blank = default "<Module> has Updated successfully".',children:(0,l.jsx)(s.Input,{placeholder:"${module} has Updated successfully",style:{width:280}})})]}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,l.jsx)(s.Form.Item,{name:`submitMsgAddError`,label:`Add Error Message`,tooltip:`Toast shown when Add fails. Blank = show the server's error.`,children:(0,l.jsx)(s.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,l.jsx)(s.Form.Item,{name:`submitMsgEditError`,label:`Edit Error Message`,tooltip:`Toast shown when Edit fails. Blank = show the server's error.`,children:(0,l.jsx)(s.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,l.jsx)(s.Form.Item,{name:`submitMsgSuppress`,label:`Hide Success Toast`,valuePropName:`checked`,tooltip:`Prevent the success message for this module's Add/Edit (errors always show).`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Shown`})})]})]}),(0,l.jsxs)(`div`,{className:`fg-editor-next-row`,children:[(0,l.jsx)(mS,{type:`secondary`,children:`Next, review the fields included in this group.`}),(0,l.jsx)(s.Button,{type:`primary`,onClick:()=>R(`fields`),children:`Continue to Fields`})]})]}),A&&(0,l.jsxs)(`div`,{className:`fg-group-editor-panel${O===`fields`?` is-active`:``}`,children:[(0,l.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,l.jsx)(`span`,{className:`fg-fields-title`,children:`Fields`}),(0,l.jsx)(`span`,{className:`fg-fields-hint`,children:`Open only the field you want to change`}),b&&(0,l.jsx)(s.Spin,{size:`small`}),!b&&ne.length>0&&(0,l.jsxs)(`span`,{className:`fg-fields-hint`,children:[ne.length,` fields available`]})]}),(0,l.jsx)(s.Form.List,{name:`fields`,children:(e,{add:t,remove:n,move:i})=>rC({form:p,fieldItems:e,add:t,remove:n,move:i,absBase:[],moduleFieldOptions:ne,fieldsLoading:b,dragIndexRef:N,dragOverIndex:w,setDragOverIndex:T,onFieldKeySelect:(e,t)=>V(e,t),expandedFieldKeys:E,onToggleField:z,defaultFieldRules:S,uniqueTarget:{primaryModule:p.getFieldValue(`module`)||r||``,getTargetModule:()=>p.getFieldValue(`moduleName`)||``,collectionForModule:P}})})]})]})})}function aC({groups:e,onEdit:t,onDelete:n,onCopy:r,onPaste:i,canPaste:a,onReorder:u}){let d=(0,o.useRef)(null),f=[...e].sort((e,t)=>(e.order??0)-(t.order??0)),p=typeof u==`function`&&f.length>1,m=(e,t)=>{let n=[...f],[r]=n.splice(e,1);n.splice(t,0,r),u(n)},h=(0,o.useMemo)(()=>{function e({"data-row-index":e,...t}){return e===void 0?(0,l.jsx)(`tr`,{...t}):(0,l.jsx)(`tr`,{...t,draggable:!0,onDragStart:()=>{d.current=e},onDragOver:e=>{e.preventDefault()},onDrop:t=>{t.preventDefault();let n=d.current;d.current=null,n!==null&&n!==e&&m(n,e)},style:{...t.style||{},cursor:`grab`}})}return e},[f,u]),g=[...p?[{title:``,key:`drag`,width:34,align:`center`,render:()=>(0,l.jsx)(c.HolderOutlined,{className:`fg-drag-handle`,style:{cursor:`grab`,color:`var(--color-text-secondary)`}})}]:[],{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(mS,{strong:!0,style:{color:`var(--color-text-heading)`},children:e}),t.hideGroup&&(0,l.jsx)(s.Tag,{color:`default`,children:`Hidden`}),!t.hideGroup&&t.hideGroupInForm&&(0,l.jsx)(s.Tag,{color:`default`,children:`Detail only`}),t.moduleName&&(0,l.jsxs)(s.Tag,{color:`purple`,children:[`→ `,t.moduleName]}),t.hierarchyParent&&(0,l.jsxs)(s.Tag,{color:`gold`,children:[`L`,t.hierarchyLevel??`?`,` ← `,t.hierarchyParent]})]})},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Add Row`,dataIndex:`addRow`,key:`addRow`,align:`center`,width:90,render:e=>e?(0,l.jsx)(s.Tag,{color:`blue`,style:{margin:0},children:`Yes`}):(0,l.jsx)(s.Tag,{color:`default`,style:{margin:0},children:`No`})},{title:`Order`,dataIndex:`order`,key:`order`,align:`center`,width:72,render:e=>(0,l.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,align:`center`,width:76,render:e=>(0,l.jsx)(s.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:132,render:(e,o)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Copy settings`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.CopyOutlined,{}),onClick:()=>r(o),className:`fg-action-btn`})}),(0,l.jsx)(s.Tooltip,{title:`Paste copied settings into this group`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.SnippetsOutlined,{}),disabled:!a,onClick:()=>i(o),className:`fg-action-btn`})}),(0,l.jsx)(s.Tooltip,{title:`Edit group`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>t(o),className:`fg-action-btn`})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this group?`,description:`All field mappings inside will be removed.`,onConfirm:()=>n(o.id),okText:`Delete`,okButtonProps:{danger:!0},children:(0,l.jsx)(s.Tooltip,{title:`Delete group`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}];return(0,l.jsx)(s.Table,{rowKey:e=>e.id??e.name,dataSource:f,columns:g,pagination:!1,className:`fg-table`,components:p?{body:{row:h}}:void 0,onRow:p?(e,t)=>({"data-row-index":t,dragCtx:{from:d,onMove:m}}):void 0,locale:{emptyText:(0,l.jsx)(s.Empty,{description:`No groups configured for this module yet.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})},expandable:{expandedRowRender:e=>(e.fields??[]).length===0?(0,l.jsx)(mS,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`}):(0,l.jsx)(`div`,{className:`fg-expanded-fields`,children:(e.fields??[]).map(e=>{let t={master:`geekblue`,module:`cyan`,lookup:`volcano`,static:`default`},n={master:`master: ${e.masterName||`?`}`,module:`module`,lookup:`lookup: ${e.lookupCollection||`?`} → ${e.displayField||`?`}`,static:`static (${(e.options??[]).length})`};return(0,l.jsxs)(`div`,{className:`fg-field-row`,children:[(0,l.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,l.jsx)(`span`,{className:`fg-field-row-label`,children:e.label}),(0,l.jsx)(`span`,{className:`fg-field-row-key`,children:e.field}),(0,l.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,e.type,`)`]}),[`select`,`radio`,`checkbox`].includes(e.type)&&e.dataSource&&(0,l.jsx)(s.Tag,{color:t[e.dataSource]??`default`,style:{fontSize:10,marginLeft:6},children:n[e.dataSource]??e.dataSource})]}),(0,l.jsxs)(`div`,{className:`fg-field-row-flags`,children:[e.show===1&&(0,l.jsx)(s.Tag,{color:`blue`,style:{marginRight:4},children:`Show`}),e.showOnAdd===!1&&(0,l.jsx)(s.Tag,{color:`orange`,style:{marginRight:4},children:`Edit only`}),e.req===1&&(0,l.jsx)(s.Tag,{color:`red`,style:{marginRight:4},children:`Required`}),e.edit===1&&(0,l.jsx)(s.Tag,{color:`green`,style:{marginRight:4},children:`Editable`}),e.formatter&&(0,l.jsxs)(s.Tag,{color:`purple`,style:{marginRight:4},children:[`fmt: `,e.formatter]})]}),(e.validations??[]).length>0&&(0,l.jsxs)(`div`,{className:`fg-field-row-validations`,children:[(0,l.jsx)(c.CheckCircleOutlined,{style:{color:`var(--color-brand)`,fontSize:11,marginRight:4}}),(e.validations??[]).map((t,n)=>{let r=t.type===`unique`,i=r?String(t.value?.collectionField??e.payloadKey??e.field??``):t.value,a=i!==void 0&&i!==``?i:t.field??``,o=r?`Stored field`:t.field&&(t.value===void 0||t.value===``)?`Field`:`Value`;return(0,l.jsx)(s.Tooltip,{title:`${a===``?``:`${o}: ${a} — `}${t.message}`,children:(0,l.jsxs)(s.Tag,{color:PS[t.type]??`default`,style:{cursor:`default`,fontFamily:`monospace`,fontSize:10},children:[t.type,a===``?``:`(${a})`]})},n)})]})]},e.field)})}),rowExpandable:()=>!0}})}function oC({open:e,editingForm:t,moduleOptions:r,onClose:i,onSaved:a}){let[u]=s.Form.useForm(),[d,f]=(0,o.useState)(!1),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)({}),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(null),x=(0,o.useRef)({}),S=(0,o.useRef)(null),C=nC();async function w(e){if(!(!e||x.current[e])){v(!0);try{let t=await n.Rr(e);g(n=>({...n,[e]:t})),x.current[e]=!0}catch{}finally{v(!1)}}}(0,o.useEffect)(()=>{if(!e){x.current={},g({});return}if(t){let e=t.module;m(e),u.setFieldsValue({module:e,formType:t.formType||`popup`,action:t.action,label:t.label,booleanSearchEnabled:t.booleanSearchEnabled??!1,booleanSearchEndpoint:t.booleanSearchEndpoint??``,booleanDefaultSourceType:t.booleanDefaultSourceType??``,searchEndpoint:t.searchEndpoint??``,actionButtonEnabled:t.actionButtonEnabled??!1,actionButtonLabel:t.actionButtonLabel??``,actionButtonUrl:t.actionButtonUrl??``,actionButtonTarget:t.actionButtonTarget??`_self`,groups:(t.groups??[]).map(e=>({...e,hideGroup:e.hideGroup??!1,hideGroupInForm:e.hideGroupInForm??!1,moduleName:e.moduleName??``,infoEnabled:e.infoEnabled??!1,infoText:e.infoText??``,minRows:e.minRows??``,initialRows:e.initialRows??``,requireOne:e.requireOne??!1,linkGroup:e.linkGroup??``,toggleEnabled:e.toggleEnabled??!1,toggleLabel:e.toggleLabel??``,toggleField:e.toggleField??``,fields:(e.fields??[]).map(eC)}))}),w(e)}else u.resetFields(),u.setFieldsValue({groups:[],formType:`popup`}),m(``)},[e,t,u]);function T(e){m(e),w(e)}function E(){return(h[p]??[]).map(e=>({value:e.value,label:(0,l.jsxs)(`span`,{children:[e.label,(0,l.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function D(){try{let e=await u.validateFields(),r=(e.groups??[]).flatMap(e=>GS(e?.fields));if(r.length){s.message.error(`Uniqueness rule cannot be saved — ${r[0]}`);return}f(!0);let i={module:e.module,formType:e.formType,action:e.action.trim(),label:e.label,...e.formType===`search`&&e.booleanSearchEnabled?{booleanSearchEnabled:!0,booleanSearchEndpoint:String(e.booleanSearchEndpoint??``).trim(),...e.booleanDefaultSourceType?{booleanDefaultSourceType:e.booleanDefaultSourceType}:{}}:{},searchEndpoint:e.formType===`search`?String(e.searchEndpoint??``).trim():``,actionButtonEnabled:!!e.actionButtonEnabled,actionButtonLabel:String(e.actionButtonLabel??``).trim(),actionButtonUrl:String(e.actionButtonUrl??``).trim(),actionButtonTarget:e.actionButtonTarget||`_self`,groups:(e.groups??[]).map(e=>({label:e.label,name:e.name,addRow:e.addRow??!1,...e.hideGroup?{hideGroup:!0}:{},...e.hideGroupInForm?{hideGroupInForm:!0}:{},...e.moduleName?{moduleName:e.moduleName}:{},...e.moduleName&&(e.writeRefs??[]).length?{writeRefs:e.writeRefs}:{},...e.moduleName&&(e.dependsOn??[]).length?{dependsOn:e.dependsOn}:{},...e.moduleName&&e.optionalWrite?{optionalWrite:!0}:{},...e.moduleName&&e.linkField?{linkField:e.linkField}:{},...e.moduleName&&e.linkTypeField?{linkTypeField:e.linkTypeField}:{},...e.moduleName&&e.parentRefField?{parentRefField:e.parentRefField}:{},...e.moduleName&&e.hierarchyParent&&e.hierarchyLinkField?{hierarchyParent:e.hierarchyParent,hierarchyLinkField:e.hierarchyLinkField}:{},...e.moduleName&&Number.isFinite(Number(e.hierarchyLevel))&&Number(e.hierarchyLevel)>0?{hierarchyLevel:Number(e.hierarchyLevel)}:{},...e.appendHistory&&e.historyField?{appendHistory:!0,historyField:e.historyField,...e.historyTimestampField?{historyTimestampField:e.historyTimestampField}:{}}:{},...e.addRow&&e.minRows!==void 0&&e.minRows!==``?{minRows:Number(e.minRows)}:{},...e.addRow&&e.initialRows!==void 0&&e.initialRows!==``?{initialRows:Number(e.initialRows)}:{},...e.addRow&&e.requireOne?{requireOne:!0}:{},...e.addRow&&e.linkGroup?{linkGroup:e.linkGroup.trim()}:{},order:Number(e.order??0),fields:XS(e.fields??[]),...e.infoEnabled&&e.infoText?{infoEnabled:!0,infoText:e.infoText}:{}}))};t?(await n.li(t.id,{...t,...i}),s.message.success(`Custom form updated`)):(await n.qn(i),s.message.success(`Custom form created`)),a()}catch(e){if(e?.errorFields)return;s.message.error(e.message||`Could not save custom form`)}finally{f(!1)}}let O=E();return(0,l.jsx)(s.Modal,{open:e,onCancel:i,width:1120,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[t?(0,l.jsx)(c.EditOutlined,{}):(0,l.jsx)(c.PlusOutlined,{}),t?` Edit Custom Form`:` New Custom Form`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:i,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:d,onClick:D,icon:t?(0,l.jsx)(c.EditOutlined,{}):(0,l.jsx)(c.PlusOutlined,{}),children:t?`Update`:`Create`})]}),children:(0,l.jsxs)(s.Form,{form:u,layout:`vertical`,className:`fg-form fg-editor-form`,children:[(0,l.jsxs)(`div`,{className:`fg-form-section fg-editor-sticky-section`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Form Identity`}),(0,l.jsx)(s.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,l.jsx)(s.Select,{options:r,placeholder:`Select module`,onChange:T})}),(0,l.jsx)(s.Form.Item,{name:`formType`,label:`Form Type`,rules:[{required:!0,message:`Form Type is required`}],initialValue:`popup`,children:(0,l.jsx)(s.Select,{placeholder:`Select form type`,options:[{label:`Search`,value:`search`},{label:`Popup`,value:`popup`}]})}),(0,l.jsx)(s.Form.Item,{name:`action`,label:`Action Key`,extra:`Unique identifier used as ?action= in the URL (e.g. quickAdd, popup)`,rules:[{required:!0,message:`Action is required`},{pattern:/^[a-zA-Z0-9_-]+$/,message:`Letters, numbers, hyphens, underscores only`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. quickAdd`,className:`fg-mono-input`,disabled:!!t})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Display Label`,rules:[{required:!0,message:`Label is required`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. Quick Add Job`})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{if(e(`formType`)!==`search`)return null;let t=e(`booleanSearchEnabled`);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`searchEndpoint`,label:`Search Endpoint`,extra:`Routes every search on this form — traditional and boolean — through one endpoint. Leave blank to use the common module list API.`,children:(0,l.jsx)(s.Input,{placeholder:`/candidates/boolean-search`,className:`fg-mono-input`,allowClear:!0})}),(0,l.jsx)(s.Form.Item,{name:`booleanSearchEnabled`,label:`Enable Boolean Search`,valuePropName:`checked`,initialValue:!1,extra:`Adds a Boolean toggle to this search form. Off means the form behaves exactly as it does today.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`booleanSearchEndpoint`,label:`Boolean Endpoint`,rules:[{required:!0,message:`Required while Boolean Search is enabled`}],extra:`Backend path used in Boolean mode, e.g. /candidates/boolean-search`,children:(0,l.jsx)(s.Input,{placeholder:`/candidates/boolean-search`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`booleanDefaultSourceType`,label:`Default Source Type`,extra:`Sent as sourceType when the form has no source field. Leave blank for 'internal'.`,children:(0,l.jsx)(s.Input,{placeholder:`internal,dice`,className:`fg-mono-input`})})]})]})}}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`actionButtonEnabled`,label:`Show Link Button`,valuePropName:`checked`,initialValue:!1,extra:`Adds one button beside Reset/Search that navigates to another screen. Off means no button renders at all.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),e(`actionButtonEnabled`)&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`actionButtonLabel`,label:`Button Label`,rules:[{required:!0,message:`Required while the link button is on`}],extra:`Text shown on the button, e.g. Job Description`,children:(0,l.jsx)(s.Input,{placeholder:`Job Description`})}),(0,l.jsx)(s.Form.Item,{name:`actionButtonUrl`,label:`Destination`,rules:[{required:!0,message:`Required while the link button is on`},{validator:(e,t)=>{let n=String(t??``).trim();return n?!n.startsWith(`/`)||n.startsWith(`//`)?Promise.reject(Error(`Must be an in-app path starting with a single /`)):/^[a-z][a-z0-9+.-]*:/i.test(n)?Promise.reject(Error(`External and scheme: URLs are not allowed`)):Promise.resolve():Promise.resolve()}}],extra:`In-app path. :tokens resolve against the record the search runs for, e.g. /jobs/detailview?id=:jobId&tab=details`,children:(0,l.jsx)(s.Input,{placeholder:`/jobs/detailview?id=:jobId&tab=details`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`actionButtonTarget`,label:`Open In`,initialValue:`_self`,children:(0,l.jsx)(s.Select,{size:`small`,style:{width:180},options:[{label:`Same tab`,value:`_self`},{label:`New tab`,value:`_blank`}]})})]})]})})]}),(0,l.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,l.jsx)(`span`,{className:`fg-fields-title`,children:`Groups`}),(0,l.jsx)(`span`,{className:`fg-fields-hint`,children:`Each group holds a set of form fields`}),_&&(0,l.jsx)(s.Spin,{size:`small`})]}),(0,l.jsx)(s.Form.List,{name:`groups`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t})=>(0,l.jsxs)(`div`,{className:`fg-form-section`,style:{marginBottom:16},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:10},children:[(0,l.jsxs)(`span`,{className:`fg-form-section-label`,style:{marginBottom:0},children:[`Group `,t+1]}),(0,l.jsx)(s.Tooltip,{title:`Remove group`,children:(0,l.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove group`,children:(0,l.jsx)(c.MinusCircleOutlined,{})})})]}),(0,l.jsxs)(`div`,{className:`fg-inline-row`,style:{flexWrap:`wrap`,marginBottom:8},children:[(0,l.jsx)(s.Form.Item,{name:[t,`label`],label:`Group Label`,rules:[{required:!0,message:`Required`}],style:{flex:2,marginBottom:8},children:(0,l.jsx)(s.Input,{placeholder:`e.g. Basic Info`})}),(0,l.jsx)(s.Form.Item,{name:[t,`name`],label:`Group Key`,rules:[{required:!0,message:`Required`},{pattern:/^[a-z0-9_]+$/,message:`Lowercase, numbers, underscores`}],style:{flex:2,marginBottom:8},children:(0,l.jsx)(s.Input,{placeholder:`e.g. basicInfo`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[t,`addRow`],label:`Add Row`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[t,`hideGroup`],label:`Hide Group`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},tooltip:`Hide this group entirely from Add/Edit forms — not rendered, not validated, not submitted.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,l.jsx)(s.Form.Item,{name:[t,`moduleName`],label:`Target Collection`,style:{marginBottom:8,flex:2},tooltip:`Route THIS group's fields to a different collection instead of the default module record. Leave blank for default behaviour.`,children:(0,l.jsx)(s.AutoComplete,{size:`small`,options:r.map(e=>({value:e.value,label:e.label})),placeholder:`Default`,allowClear:!0,filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase()),className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[t,`minRows`],label:`Min Rows`,style:{marginBottom:8},tooltip:`Minimum rows users must keep. Delete is disabled at this count.`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:80}})}),(0,l.jsx)(s.Form.Item,{name:[t,`initialRows`],label:`Initial Rows`,style:{marginBottom:8},tooltip:`How many empty rows to show on load (0 = show only the + button).`,children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:80}})}),(0,l.jsx)(s.Form.Item,{name:[t,`requireOne`],label:`Row Required`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},tooltip:`When users add a row, at least one field in that row must be filled.`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,l.jsx)(s.Form.Item,{name:[t,`linkGroup`],label:`Link Group`,style:{marginBottom:8},tooltip:`Groups sharing the same value here stay row-synced — adding or removing a row in one adds/removes the matching row in every linked group, while each keeps its own card and its own submitted data. Leave blank for an independent group.`,children:(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. workHistory`,style:{width:130},className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:[t,`infoEnabled`],label:`Group Info`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,l.jsx)(s.Form.Item,{name:[t,`toggleEnabled`],label:`Group Switch`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,l.jsx)(s.Form.Item,{name:[t,`order`],label:`Order`,initialValue:0,style:{marginBottom:8},children:(0,l.jsx)(s.Input,{type:`number`,min:0,style:{width:70}})})]}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`infoEnabled`])?(0,l.jsx)(s.Form.Item,{name:[t,`infoText`],label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,l.jsx)(s.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`toggleEnabled`])?(0,l.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,l.jsx)(s.Form.Item,{name:[t,`toggleLabel`],label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1,marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. Fresher`})}),(0,l.jsx)(s.Form.Item,{name:[t,`toggleField`],label:`Payload Field`,rules:[{required:!0,message:`Enter payload field`},{pattern:/^[A-Za-z_][\w.]*$/,message:`Use a valid key, dot path allowed`}],style:{flex:1,marginBottom:0},children:(0,l.jsx)(s.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,l.jsx)(`div`,{className:`fg-fields-header`,style:{marginTop:4,marginBottom:8},children:(0,l.jsx)(`span`,{className:`fg-fields-title`,style:{fontSize:12},children:`Fields`})}),(0,l.jsx)(s.Form.List,{name:[t,`fields`],children:(e,{add:n,remove:r,move:i})=>rC({form:u,fieldItems:e,add:n,remove:r,move:i,absBase:[`groups`,t],moduleFieldOptions:O,fieldsLoading:_,dragIndexRef:S,dragOverIndex:y,setDragOverIndex:b,onFieldKeySelect:(e,n)=>{let r=(h[p]??[]).find(t=>t.value===e);if(!r)return;let i=u.getFieldValue([`groups`,t,`fields`,n])??{};u.setFieldValue([`groups`,t,`fields`,n],{...i,field:r.value,label:r.label,type:r.type??`text`})},uniqueTarget:{primaryModule:p||``,getTargetModule:()=>u.getFieldValue([`groups`,t,`moduleName`])||``,collectionForModule:C}})})]},e)),(0,l.jsx)(s.Button,{type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),block:!0,style:{marginBottom:16},onClick:()=>t({label:``,name:``,addRow:!1,order:e.length,fields:[]}),children:`Add Group`})]})})]})})}function sC({moduleOptions:e}){let[t,r]=(0,o.useState)([]),[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(!1),[f,p]=(0,o.useState)(null);function m(){a(!0),n.Cr().then(e=>r(e)).catch(e=>s.message.error(e.message||`Could not load custom forms`)).finally(()=>a(!1))}(0,o.useEffect)(()=>{m()},[]);async function h(e){try{await n.tr(e.id),s.message.success(`Custom form deleted`),m()}catch(e){s.message.error(e.message||`Could not delete custom form`)}}return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`fg-tab-toolbar`,style:{marginBottom:12},children:(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{p(null),d(!0)},children:`New Custom Form`})}),(0,l.jsx)(s.Spin,{spinning:i,children:(0,l.jsx)(s.Table,{rowKey:e=>e.id??e.action,dataSource:t,columns:[{title:`Module`,dataIndex:`module`,key:`module`,render:e=>(0,l.jsx)(s.Tag,{color:`blue`,children:e})},{title:`Action Key`,dataIndex:`action`,key:`action`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Label`,dataIndex:`label`,key:`label`,render:e=>(0,l.jsx)(mS,{strong:!0,style:{color:`var(--color-text-heading)`},children:e})},{title:`Groups`,dataIndex:`groups`,key:`groups`,align:`center`,width:76,render:e=>(0,l.jsx)(s.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:100,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit form`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{p(t),d(!0)},className:`fg-action-btn`})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this custom form?`,description:`All configured groups will be lost.`,onConfirm:()=>h(t),okText:`Delete`,okButtonProps:{danger:!0},children:(0,l.jsx)(s.Tooltip,{title:`Delete form`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}],pagination:!1,className:`fg-table`,locale:{emptyText:(0,l.jsx)(s.Empty,{description:`No custom forms yet. Click 'New Custom Form' to create one.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})}})}),(0,l.jsx)(oC,{open:u,editingForm:f,moduleOptions:e,onClose:()=>{d(!1),p(null)},onSaved:()=>{d(!1),p(null),m()}})]})}function cC(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)({}),[d,f]=(0,o.useState)(`all`),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(null),[_,v]=(0,o.useState)(null),[y,b]=(0,o.useState)(`module`),[x,S]=(0,o.useState)([]),[C,w]=(0,o.useState)({clientId:``,region:``}),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(null),k=IS(e),A=e.map(e=>({value:e.key,label:e.label}));(0,o.useEffect)(()=>{n.yr().then(e=>{let n=gx(e).map(({value:e,label:t})=>({key:e,label:t}));t(n);let r=IS(n);u(LS(r)),F(`all`,r)}).catch(()=>t([])).finally(()=>i(!1))},[]),(0,o.useEffect)(()=>{n.dr({limit:200}).then(S).catch(()=>S([]))},[]);function j(e,t){u(n=>({...n,[e]:{...n[e],...t}}))}let M=e=>e!==`all`&&!!(C.clientId||C.region),N=e=>M(e)?C:{},P=e=>M(e)?`${C.clientId}|${C.region}`:``;function F(e,t){if(!(t??k).find(t=>t.key===e))return;let r=P(e);j(e,{loading:!0,error:``}),n.fr(e===`all`?``:e,N(e)).then(t=>j(e,{groups:t,loading:!1,loaded:!0,scopeKey:r})).catch(t=>j(e,{error:t.message||`Could not load groups`,loading:!1}))}function I(e){F(e,null)}function L(e){f(e),(!a[e]?.loaded||a[e]?.scopeKey!==P(e))&&I(e)}function R(){g(null),m(!0)}function z(e){g(e),m(!0)}function B(){m(!1),g(null)}async function V(){B(),I(d),d!==`all`&&I(`all`)}async function ee(e){try{await n.$n(e,ie()),s.message.success(`Group deleted`),I(d),d!==`all`&&I(`all`)}catch(e){s.message.error(e.message||`Could not delete group`)}}async function te(e){let t=e.map((e,t)=>({g:e,index:t})).filter(({g:e,index:t})=>Number(e.order??0)!==t&&e.id);if(t.length)try{await Promise.all(t.map(({g:e,index:t})=>n.ci(e.id,{...e,order:t},ie(e.module||d)))),s.message.success(`Group order updated`),I(d),d!==`all`&&I(`all`)}catch(e){s.message.error(e.message||`Could not reorder groups`),I(d)}}function ne(e){v(hS[e])}function re(e){let t={...C,...e};if(w(t),u(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=n===d?r:{...r,loaded:!1};return t}),d===`all`)return;let r=t.clientId||t.region?t:{};j(d,{loading:!0,error:``}),n.fr(d,r).then(e=>j(d,{groups:e,loading:!1,loaded:!0,scopeKey:t.clientId||t.region?`${t.clientId}|${t.region}`:``})).catch(e=>j(d,{error:e.message||`Could not load scoped groups`,loading:!1}))}function ie(){return N(d)}function H(e){O(JSON.parse(JSON.stringify(e))),s.message.success(`Copied settings from ${e.label||e.name}`)}async function ae(e){if(D)try{let t={...e,addRow:D.addRow??e.addRow,payloadKey:D.payloadKey??e.payloadKey,fields:JSON.parse(JSON.stringify(D.fields??[]))};await n.ci(e.id,t,ie(e.module||d)),s.message.success(`Pasted settings into ${e.label||e.name}`),I(d),d!==`all`&&I(`all`)}catch(e){s.message.error(e.message||`Could not paste settings`)}}function oe(){v(null),u(LS(k)),I(d),d!==`all`&&I(`all`)}let se=k.map(({key:e,label:t,color:n})=>{let r=a[e]??{groups:[],loading:!1,loaded:!1,error:``},i=[...r.groups].sort((e,t)=>(e.order??0)-(t.order??0));return{key:e,label:(0,l.jsxs)(`span`,{className:`fg-tab-label`,children:[(0,l.jsx)(`span`,{className:`fg-tab-dot`,style:{background:n}}),t,(0,l.jsx)(s.Badge,{count:r.groups.length,showZero:!0,color:n,size:`small`})]}),children:(0,l.jsxs)(`div`,{className:`fg-tab-content`,children:[r.error&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:r.error,style:{marginBottom:12}}),(0,l.jsx)(`div`,{className:`fg-tab-toolbar`,children:(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),disabled:e===`all`,onClick:()=>{f(e),R()},children:`Add Group`})}),(0,l.jsx)(s.Spin,{spinning:r.loading,children:(0,l.jsx)(aC,{groups:i,onEdit:z,onDelete:ee,onCopy:H,onPaste:ae,canPaste:!!D,onReorder:e===`all`?void 0:te})})]})}}),ce=d===`all`?A[0]?.value??`jobs`:d,U=k.find(e=>e.key===ce)?.label??ce,le=[{key:`module`,label:`Module Form`,children:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Z,{children:(0,l.jsxs)(`div`,{className:`fg-scope-toolbar`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{children:(0,l.jsxs)(mS,{type:`secondary`,style:{fontSize:12},children:[`Select a client to edit that client's field list for the module tab you are on — any module, not just Jobs. Leave blank for the default module config. Until the client has a config of its own you are shown the default; the first save copies it into a client-scoped config. A record rendered against a client — a Job, or a Submission through its job — uses that client's list here and falls back to the default when the client has none. The `,(0,l.jsx)(`b`,{children:`All`}),` tab always shows the defaults.`]})}),M(d)&&(0,l.jsx)(`div`,{style:{marginTop:6},children:(0,l.jsx)(s.Tag,{color:`processing`,children:`Editing ${x.find(e=>(e._id??e.id)===C.clientId)?.clientName??`client`} config for ${d}`})})]}),(0,l.jsxs)(s.Space,{wrap:!0,size:8,children:[(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,showSearch:!0,placeholder:`Client`,style:{width:240},value:C.clientId||void 0,optionFilterProp:`label`,options:x.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>re({clientId:e??``})}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>I(d),children:`Reload`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),disabled:d===`all`,onClick:()=>E(!0),children:`Preview`})]})]})}),(0,l.jsx)(Z,{children:(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Tabs,{activeKey:d,onChange:L,items:se,size:`middle`,className:`fg-tabs`})})}),(0,l.jsx)(iC,{open:p,editingGroup:h,defaultModule:d===`all`?A[0]?.value??``:d,moduleOptions:A,allGroupsByModule:Object.fromEntries(Object.entries(a).filter(([e])=>e!==`all`).map(([e,t])=>[e,t.groups??[]])),onClose:B,onSaved:V,onSaveGroup:(e,t)=>t?n.ci(t.id,e,ie(e.module)):n.Kn(e,ie(e.module))}),(0,l.jsx)(s.Drawer,{open:T,onClose:()=>E(!1),width:`92vw`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.EyeOutlined,{}),` `,U,` Add Form Preview`]}),classNames:{body:`fg-preview-body`},destroyOnClose:!0,children:(0,l.jsx)(vc,{moduleName:ce,clientId:C.clientId,region:C.region,cancelPath:`/${ce}`,onSubmit:async()=>s.message.info(`Preview only. No record was created.`),breadcrumbItems:[{label:`Admin`},{label:`Form Groups`},{label:`${U} Preview`}]},`${ce}-${C.clientId}-${C.region}`)})]})},{key:`custom`,label:`Custom Form`,children:(0,l.jsx)(Z,{children:(0,l.jsx)(sC,{moduleOptions:A})})},{key:`defaultFields`,label:`Default Fields`,children:(0,l.jsx)(fS,{moduleOptions:A})}];return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),title:`Form Groups`,extra:y===`module`?(0,l.jsxs)(s.Space,{size:8,wrap:!0,children:[(0,l.jsx)(s.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>ne(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>ne(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all form groups`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>ne(`reset`)}]},children:(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.MoreOutlined,{}),children:`Workspace defaults`})}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),onClick:R,children:`New Group`})]}):null,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsxs)(mS,{type:`secondary`,style:{fontSize:13},children:[(0,l.jsx)(`strong`,{children:`Module Form`}),` — configure the default add/edit form for each module.`,` `,(0,l.jsx)(`strong`,{children:`Custom Form`}),` — create standalone named forms (module + action) for context-specific flows such as quick-add or popup forms.`]})]}),(0,l.jsx)(Z,{styles:{body:{padding:`0 0`}},children:(0,l.jsx)(s.Tabs,{activeKey:y,onChange:b,items:le,size:`middle`,className:`fg-top-tabs`,tabBarStyle:{padding:`0 16px`,margin:0},destroyInactiveTabPane:!1})}),(0,l.jsx)(cS,{open:!!_,scope:`formGroups`,action:_?.action,title:_?.title,description:_?.description,confirmLabel:_?.confirmLabel,danger:_?.danger,onCancel:()=>v(null),onVerified:oe})]})}var lC=`databaseFields`,uC=`__detail_database_fields__`;function dC(e){return e?.detailOnlySource===!0||e?.id===`__detail_database_fields__`}function fC(e,t){let n=new Set(t),r=[];for(let t of e??[]){let e=String(t?.field??``).trim();!e||n.has(e)||(n.add(e),r.push({field:e,label:String(t?.label??``).trim()||e,type:String(t?.type??``).trim()||`text`,show:1,edit:0,req:0,detailOnlySource:!0}))}return r}function pC(e,t){let n=Array.isArray(e)?e:[],r=fC(t,n.flatMap(e=>(e.fields??[]).map(e=>e.field)));if(!r.length)return n;let i=n.reduce((e,t)=>Math.max(e,Number(t.order)||0),0);return[...n,{id:uC,name:lC,label:`Database Fields`,order:i+1,hideGroupInForm:!0,detailOnlySource:!0,fields:r}]}function mC(e,t){let n={};return(Array.isArray(t)?t:[]).forEach(e=>{let t=String(e?.name??``).trim(),r=String(e?.label??``).trim();t&&r&&(n[t]=r)}),{groups:(Array.isArray(e)?e:[]).map(e=>{let t=e.inheritedLabel??e.label??e.name;return Object.prototype.hasOwnProperty.call(n,e.name)?{...e,inheritedLabel:t,label:n[e.name]}:{...e,inheritedLabel:t}}),labels:n}}function hC(e){return Object.entries(e??[]).map(([e,t])=>({name:String(e).trim(),label:String(t??``).trim()})).filter(e=>e.name&&e.label)}var gC=`2026-08-06T13:33:00.000Z`,{Text:Q}=s.Typography,_C,vC=new Map;function yC(){return _C||=n.vr().catch(e=>{throw _C=void 0,e}),_C}function bC(e){return vC.has(e)||vC.set(e,n.Sr(e).catch(t=>{throw vC.delete(e),t})),vC.get(e)}var xC={reset:{action:`reset`,title:`Reset all detail config`,confirmLabel:`Reset All`,danger:!0,description:`Clears every detail-view override for all modules in this workspace, so the detail view falls back to the plain form-group fields.`},save:{action:`save`,title:`Save current as default`,confirmLabel:`Save Default`,danger:!1,description:`Snapshots the current detail config for all modules as the saved default you can restore to later.`},restore:{action:`restore`,title:`Restore saved default`,confirmLabel:`Restore Default`,danger:!0,description:`Replaces the current detail config for all modules with the last saved default.`},discoverFields:{action:`discoverFields`,title:`Read fields from database`,confirmLabel:`Read Fields`,danger:!1,description:`Reads field names and types from this module’s registered database collection and imports only that metadata into Detail Groups. Record values are never returned.`}},SC=[{label:`Default`,value:`default`},{label:`Title Case On`,value:`on`},{label:`Off (raw text)`,value:`off`}],CC=e=>e===!0?`on`:e===!1?`off`:`default`,wC=e=>e===`on`||e!==`off`&&void 0,TC=e=>e===!0||e===1||e===`1`;function EC(e){let t=new Set,n=[];for(let r of e??[])for(let e of r.fields??[])!e.field||t.has(e.field)||(t.add(e.field),n.push({key:e.field,label:e.label??e.field,type:e.type??`text`,group:r.label??r.name,validations:Array.isArray(e.validations)?e.validations:[],lookupDefaults:e.lookupCollection?{lookupCollection:e.lookupCollection,displayField:e.displayField??``,displayField2:e.displayField2??``,valueField:e.valueField||`_id`}:{}}));return n}function DC(e,t){if(!t)return null;let n={field:e};t.label&&(n.label=t.label),t.prefix&&(n.prefix=t.prefix),t.suffix&&(n.suffix=t.suffix),t.color&&(n.color=t.color),(t.capitalize===!0||t.capitalize===!1)&&(n.capitalize=t.capitalize),(t.hidden===!0||t.hidden===!1)&&(n.hidden=t.hidden),t.hideInDetail===!0&&(n.hideInDetail=!0),(t.hideWhenEmpty===!0||t.hideWhenEmptyInDetail===!0)&&(n.hideWhenEmpty=!0,t.hideWhenEmptyInDetail===!0&&(n.hideWhenEmptyInDetail=!0)),t.hideWhenZero===!0&&(n.hideWhenZero=!0),t.hidePartLabel===!0&&(n.hidePartLabel=!0),t.ignoreLabelWhenInDetail===!0&&(n.ignoreLabelWhenInDetail=!0);let r=(t.labelWhen??[]).filter(e=>String(e?.field??``).trim()&&String(e?.label??``).trim()).map(e=>{let t={field:String(e.field).trim(),operator:e.operator||`eq`,label:String(e.label).trim()};return Mx(t.operator)&&e.value!=null&&e.value!==``&&(t.value=String(e.value)),t});r.length&&(n.labelWhen=r);let i=t.renderType||(t.documentPreview?`document`:t.displayAs===`tag`?`tag`:t.displayAs===`text`?`text`:``);i&&i!==`auto`&&(n.renderType=i);let a={};for(let[e,n]of Object.entries(t.renderOptions??{}))n!==void 0&&n!==``&&n!==!1&&(a[e]=n);return Object.keys(a).length&&(n.renderOptions=a),t.lookupCollection&&(n.lookupCollection=t.lookupCollection,n.displayField=t.displayField||``,t.displayField2&&(n.displayField2=t.displayField2),n.valueField=t.valueField||`_id`),Object.keys(n).length>1?n:null}function OC(e){return(e??[]).filter(e=>e.key&&(e.fields??[]).length).map(e=>{let t={key:e.key,label:e.label||e.key,fields:e.fields};return e.template&&(t.template=e.template),e.valueMaps&&Object.keys(e.valueMaps).length&&(t.valueMaps=e.valueMaps),e.separator&&(t.separator=e.separator),e.prefix&&(t.prefix=e.prefix),e.suffix&&(t.suffix=e.suffix),e.color&&(t.color=e.color),(e.capitalize===!0||e.capitalize===!1)&&(t.capitalize=e.capitalize),e.group&&(t.group=e.group),e.hideSources===!1&&(t.hideSources=!1),t})}function kC(e){return Number(e?.show??1)===0}function AC(e,t){let n=[];return{nextGroups:(e??[]).map(e=>{if(dC(e))return e;let r=!1,i=(e.fields??[]).map(e=>{let n=t[e.field];if(!n||n.hidden===void 0)return e;let i=+!n.hidden;return Number(e.show??1)===i?e:(r=!0,{...e,show:i})}),a=r?{...e,fields:i}:e;return r&&n.push(a),a}),changed:n}}function jC({value:e,onChange:t}){return(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:`#0053a5`,value:e??``,onChange:e=>t(e.target.value),className:`fg-mono-input`,prefix:(0,l.jsx)(c.BgColorsOutlined,{style:{color:e||`#bbb`}})}),(0,l.jsx)(`input`,{type:`color`,value:/^#[0-9a-f]{6}$/i.test(e??``)?e:`#0053a5`,onChange:e=>t(e.target.value),style:{width:32,border:`1px solid #d9d9d9`,borderLeft:0,cursor:`pointer`,padding:0},"aria-label":`Pick colour`})]})}function MC({fieldMeta:e,rules:t,ignore:n,fieldOptions:r,onChangeRules:i,onChangeIgnore:a}){let o=Array.isArray(t)?t:[],u=e?.labelWhen,d=o.length===0&&!!(u?.field&&u?.label),f=(e,t)=>i(o.map((n,r)=>r===e?{...n,...t}:n)),p=e=>i(o.filter((t,n)=>n!==e));return(0,l.jsxs)(`div`,{className:`fg-form-section`,style:{marginTop:14,marginBottom:0},children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Conditional Label`}),(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:[`Show a different label depending on another field's value on the record. The first matching rule wins; if none match, the label above (`,(0,l.jsx)(`b`,{children:e?.label}),`) is used. Detail view only — the add/edit forms are unaffected.`]}),d&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:10},message:`Inheriting from Form Groups: "${u.label}" when ${u.field} ${u.operator??`eq`} ${u.value??``}`,description:(0,l.jsx)(s.Button,{size:`small`,type:`link`,style:{padding:0},onClick:()=>i([{field:u.field,operator:u.operator??`eq`,value:u.value??``,label:u.label}]),children:`Override it here`})}),o.map((e,t)=>{let n=Mx(e.operator);return(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,l.jsxs)(`div`,{style:{flex:1.4},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`When field`}),(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,mode:`tags`,maxCount:1,style:{width:`100%`},placeholder:`e.g. contractType`,optionFilterProp:`label`,options:r,value:e.field?[e.field]:[],onChange:e=>f(t,{field:String(e[e.length-1]??``).trim()})})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Is`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},options:Ax,value:e.operator??`eq`,onChange:e=>f(t,{operator:e})})]}),n&&(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`C2C`,value:e.value??``,onChange:e=>f(t,{value:e.target.value}),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1.2},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Show label`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`Employer Rate`,value:e.label??``,onChange:e=>f(t,{label:e.target.value})})]}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>p(t)})]},t)}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>i([...o,{field:``,operator:`eq`,value:``,label:``}]),children:`Add rule`}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!n,onChange:e=>a(!e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Use conditional labels in the detail view`})]}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:`Turn off to always show the static label here, ignoring both the rules above and the one from Form Groups.`})]})}function NC({open:e,fieldMeta:t,value:r,moduleFieldOptions:i,onClose:a,onSave:u}){let[d,f]=(0,o.useState)(()=>({...r??{}})),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)(`display`);(0,o.useEffect)(()=>{if(!e||_!==`lookup`)return;let t=!1;return yC().then(e=>{t||m(e.map(e=>typeof e==`string`?e:e.name??e.value??``).filter(Boolean))}).catch(()=>{}),()=>{t=!0}},[_,e]),(0,o.useEffect)(()=>{if(!e||_!==`lookup`||!d.lookupCollection)return;let t=!1;return bC(d.lookupCollection).then(e=>{t||g(e.map(e=>typeof e==`string`?e:e.value??e.field??e.label??``).filter(Boolean))}).catch(()=>{}),()=>{t=!0}},[_,e,d.lookupCollection]);let y=(e,t)=>f(n=>({...n,[e]:t})),b=e=>{g([]),f(t=>({...t,lookupCollection:e}))},x=p.map(e=>({value:e})),S=h.map(e=>({value:e})),C=d.renderOptions??{},w=(e,t)=>y(`renderOptions`,{...C,[e]:t||void 0}),T=d.renderType||(d.documentPreview?`document`:d.displayAs===`tag`?`tag`:d.displayAs===`text`?`text`:`auto`),E=[`tag`,`tags`,`chip`,`badge`].includes(T),D=[`text`,`tag`,`tags`,`chip`,`badge`,`link`,`email`,`phone`].includes(T);return(0,l.jsxs)(s.Modal,{open:e,onCancel:a,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal detail-field-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.EditOutlined,{}),` `,t?.label,(0,l.jsx)(`code`,{className:`fg-field-key-hint`,style:{marginLeft:8},children:t?.key})]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:a,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>u(d),children:`Apply`})]}),children:[(0,l.jsxs)(`div`,{className:`detail-editor-nav`,role:`tablist`,"aria-label":`Field settings`,children:[(0,l.jsx)(s.Button,{type:_===`display`?`primary`:`text`,onClick:()=>v(`display`),children:`Display`}),(0,l.jsx)(s.Button,{type:_===`lookup`?`primary`:`text`,onClick:()=>v(`lookup`),children:`Reference lookup`})]}),_===`display`&&(0,l.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Display`}),(0,l.jsxs)(`div`,{style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label override`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:t?.label,value:d.label??``,onChange:e=>y(`label`,e.target.value)})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. $`,value:d.prefix??``,onChange:e=>y(`prefix`,e.target.value)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. yrs`,value:d.suffix??``,onChange:e=>y(`suffix`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,l.jsx)(jC,{value:d.color,onChange:e=>y(`color`,e)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},options:SC,value:CC(d.capitalize),onChange:e=>y(`capitalize`,wC(e))})]})]}),!t?.detailOnly&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!d.hidden,onChange:e=>y(`hidden`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Hide this field everywhere (detail view and the add/edit form)`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!d.hideInDetail,onChange:e=>y(`hideInDetail`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:t?.detailOnly?`Hide this database field from the detail view`:`Hide in the detail view only (keep it in the add/edit form)`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!d.hideWhenEmpty||!!d.hideWhenEmptyInDetail,onChange:e=>f(t=>({...t,hideWhenEmpty:e,hideWhenEmptyInDetail:e?t.hideWhenEmptyInDetail:!1}))}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Hide when empty — drop this field (and a combined block left with nothing to show) instead of printing a heading over a dash`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!d.hidePartLabel,onChange:e=>y(`hidePartLabel`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Hide this part's label inside a combined block — show just the value (e.g. “12 Days”, not “12 · Unit Days”)`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!d.hideWhenZero,onChange:e=>y(`hideWhenZero`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Treat 0 as empty — hide this field when its value is 0 or blank (e.g. the end of a rate range that was never filled in, so "92 - 0" shows as just "92")`})]}),(0,l.jsx)(MC,{fieldMeta:t,rules:d.labelWhen,ignore:d.ignoreLabelWhenInDetail,fieldOptions:i,onChangeRules:e=>y(`labelWhen`,e),onChangeIgnore:e=>y(`ignoreLabelWhenInDetail`,e)}),(0,l.jsxs)(`div`,{style:{marginTop:14},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Render Type`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:T,onChange:e=>y(`renderType`,e),options:n.Ft}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:4},children:`How this field is displayed in the detail view — entirely config-driven.`})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Empty text`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:hu[T]??hu.default,value:C.emptyText??``,onChange:e=>w(`emptyText`,e.target.value)}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:4},children:`What to show when this particular field is empty — for example "No LinkedIn profile added". Leave blank to use the wording set for its type in Display Defaults.`})]}),T===`document`&&(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Document mode`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:C.documentMode||`preview`,onChange:e=>w(`documentMode`,e),options:n.Pt})]}),D&&(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Text transform`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:C.textTransform||`none`,onChange:e=>w(`textTransform`,e===`none`?void 0:e),options:n.It})]}),E&&(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Tag colour`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`geekblue / #0053a5`,value:C.tagColor??``,onChange:e=>w(`tagColor`,e.target.value),className:`fg-mono-input`})]}),T===`date`&&(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Date format (dayjs tokens)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`DD/MM/YYYY`,value:C.dateFormat??``,onChange:e=>w(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),T===`phone`&&(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Country-code field on the record`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`e.g. countryCode or contact.countryCode`,value:C.countryCodeField??``,onChange:e=>w(`countryCodeField`,e.target.value),className:`fg-mono-input`}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:4},children:`Leave blank to auto-detect a sibling code key. Nothing is prefixed when the record carries no code and no global fallback is set.`})]}),(T===`currency`||T===`budget`)&&(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Currency symbol`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`$ / ₹ / £`,value:C.currencySymbol??``,onChange:e=>w(`currencySymbol`,e.target.value)})]}),T===`budget`&&(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Unit (e.g. Monthly)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`Monthly`,value:C.unit??``,onChange:e=>w(`unit`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!C.showEmpty,onChange:e=>w(`showEmpty`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Show empty values`})]})]}),_===`lookup`&&(0,l.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Reference Lookup (id → name)`}),(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:[`For fields that store a foreign-key id. The detail API resolves the name from the target collection and returns `,(0,l.jsx)(`code`,{children:`{ id, value }`}),`.`]}),(0,l.jsxs)(`div`,{style:{marginBottom:10},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Collection`}),(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:`100%`},options:x,placeholder:`e.g. vendors`,value:d.lookupCollection??``,onChange:b,filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase()),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field`}),(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:`100%`},options:S,placeholder:`e.g. vendorCompanyName`,value:d.displayField??``,onChange:e=>y(`displayField`,e),filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase()),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field 2`}),(0,l.jsx)(s.AutoComplete,{size:`small`,style:{width:`100%`},options:S,placeholder:`e.g. lastName`,value:d.displayField2??``,onChange:e=>y(`displayField2`,e),filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase()),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value Field (FK)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`_id`,value:d.valueField??``,onChange:e=>y(`valueField`,e.target.value),className:`fg-mono-input`})]})]})]})]})}function PC(e){let t=[];return Object.entries(e??{}).forEach(([e,n])=>{Object.entries(n??{}).forEach(([n,r])=>t.push({field:e,from:n,to:r}))}),t}function FC(e){let t={};for(let n of e??[])!n.field||!n.from||(t[n.field]={...t[n.field]??{},[n.from]:n.to??``});return t}function IC({open:e,merge:t,fieldOptions:n,groupOptions:r,onClose:i,onSave:a}){let[u,d]=(0,o.useState)(()=>({key:``,label:``,fields:[],separator:` - `,template:``,prefix:``,suffix:``,color:``,capitalize:void 0,group:``,hideSources:!0,...t??{},mapRows:PC(t?.valueMaps)})),f=(e,t)=>d(n=>({...n,[e]:t})),p=(e,t)=>d(n=>{let r=[...n.mapRows??[]];return r[e]={...r[e],...t},{...n,mapRows:r}}),m=e=>d(t=>({...t,mapRows:(t.mapRows??[]).filter((t,n)=>n!==e)}));return(0,l.jsx)(s.Modal,{open:e,onCancel:i,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.MergeCellsOutlined,{}),` `,t?`Edit Merged Field`:`New Merged Field`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:i,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!u.key?.trim())return s.message.error(`A merge key is required`);if(!/^[a-z0-9_]+$/.test(u.key))return s.message.error(`Key: lowercase letters, numbers, underscores only`);if(!(u.fields??[]).length)return s.message.error(`Pick at least one source field`);let{mapRows:e,...t}=u;a({...t,valueMaps:FC(e)})},children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Merged Field`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`experience_range`,value:u.key??``,onChange:e=>f(`key`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`Experience`,value:u.label??``,onChange:e=>f(`label`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Source fields (combined in order)`}),(0,l.jsx)(s.Select,{mode:`multiple`,size:`small`,style:{width:`100%`},placeholder:`Pick fields to combine`,options:n,value:u.fields??[],onChange:e=>f(`fields`,e),optionFilterProp:`label`})]}),(0,l.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Template `,(0,l.jsx)(`span`,{style:{color:`#94a3b8`},children:`(optional — overrides separator)`})]}),(0,l.jsx)(s.Input.TextArea,{rows:2,value:u.template??``,onChange:e=>f(`template`,e.target.value),placeholder:`{clientBudgetStart} - {clientBudgetEnd} {clientBudgetCurrency}/{clientBudgetUnit}`,className:`fg-mono-input`}),(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:[`A field with no value takes its joining punctuation with it, so a rate with no end shows `,(0,l.jsx)(`code`,{children:`80 $/hour`}),` rather than `,(0,l.jsx)(`code`,{children:`80 - $/hour`}),`. That only applies to pure connectors (`,(0,l.jsx)(`code`,{children:`-`}),` `,(0,l.jsx)(`code`,{children:`/`}),` `,(0,l.jsx)(`code`,{children:`,`}),` `,(0,l.jsx)(`code`,{children:`|`}),` `,(0,l.jsx)(`code`,{children:`:`}),` and spaces) — literal words you type, like `,(0,l.jsx)(`code`,{children:`Rate:`}),`, are always kept. Put spacing in the template itself, never inside a Value Map: a mapped value like `,(0,l.jsx)(`code`,{children:`" hour"`}),` adds a gap the template cannot see, which is how `,(0,l.jsx)(`code`,{children:`$/hour`}),` came out as `,(0,l.jsx)(`code`,{children:`$ / hour`}),`.`]}),(u.fields??[]).length>0&&(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:4,marginTop:6},children:(u.fields??[]).map(e=>(0,l.jsxs)(s.Tag,{color:`blue`,style:{cursor:`pointer`,margin:0},onClick:()=>f(`template`,`${u.template??``}{${e}}`),children:[`+ `,`{${e}}`]},e))}),(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:[`Click a chip to insert a field. Everything else (spaces, “/”, “-”) is kept literally. Result e.g. `,(0,l.jsx)(`code`,{children:`60 - 80 $/Monthly`}),`.`]})]}),(0,l.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value mappings (raw → display)`}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),disabled:!(u.fields??[]).length,onClick:()=>d(e=>({...e,mapRows:[...e.mapRows??[],{field:e.fields?.[0]??``,from:``,to:``}]})),children:`Add`})]}),(u.mapRows??[]).map((e,t)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6,alignItems:`center`},children:[(0,l.jsx)(s.Select,{size:`small`,style:{flex:1.4},placeholder:`field`,value:e.field||void 0,options:(u.fields??[]).map(e=>({value:e,label:e})),onChange:e=>p(t,{field:e})}),(0,l.jsx)(s.Input,{size:`small`,style:{flex:1},placeholder:`Monthly`,value:e.from,onChange:e=>p(t,{from:e.target.value})}),(0,l.jsx)(`span`,{style:{color:`#94a3b8`},children:`→`}),(0,l.jsx)(s.Input,{size:`small`,style:{flex:1},placeholder:`mon`,value:e.to,onChange:e=>p(t,{to:e.target.value})}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>m(t)})]},t)),!(u.mapRows??[]).length&&(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:`e.g. Monthly → mon, Daily → day, Yearly → yr. Unmapped values stay as-is.`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Separator `,(0,l.jsx)(`span`,{style:{color:`#94a3b8`},children:`(used when no template)`})]}),(0,l.jsx)(s.Input,{size:`small`,placeholder:` - `,value:u.separator??``,onChange:e=>f(`separator`,e.target.value)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Place in group`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},allowClear:!0,placeholder:`(first source's group)`,options:r,value:u.group||void 0,onChange:e=>f(`group`,e??``)})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,l.jsx)(s.Input,{size:`small`,value:u.prefix??``,onChange:e=>f(`prefix`,e.target.value)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`yrs`,value:u.suffix??``,onChange:e=>f(`suffix`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,l.jsx)(jC,{value:u.color,onChange:e=>f(`color`,e)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},options:SC,value:CC(u.capitalize),onChange:e=>f(`capitalize`,wC(e))})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:u.hideSources!==!1,onChange:e=>f(`hideSources`,e)}),(0,l.jsx)(Q,{style:{fontSize:13},children:`Hide the source fields after merging`})]})]})})}function LC({open:e,module:t,onClose:n}){let[r,i]=(0,o.useState)(``),[a,u]=(0,o.useState)(``),d=()=>{let e=r.trim();if(!e)return s.message.warning(`Enter a record _id to preview`);u(e)};return(0,l.jsxs)(s.Drawer,{open:e,onClose:n,width:720,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.EyeOutlined,{}),` Detail Preview — `,t]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Preview renders the live detail view`,description:`This is the real detail component reading saved configuration. Save your changes first to see them here.`}),(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`,marginBottom:14},children:[(0,l.jsx)(s.Input,{placeholder:`Paste a record _id (24-char ObjectId)`,value:r,onChange:e=>i(e.target.value),onPressEnter:d,className:`fg-mono-input`}),(0,l.jsx)(s.Button,{type:`primary`,onClick:d,children:`Load`})]}),a?(0,l.jsx)(Yu,{moduleName:t,id:a},`${t}-${a}`):(0,l.jsx)(s.Empty,{description:`Load a record to preview its detail view.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})]})}var RC=[{label:`Common (no region profile)`,value:``},{label:`United States (US)`,value:`US`},{label:`United Kingdom (UK)`,value:`UK`},{label:`India (IND)`,value:`IND`}],zC=[{key:`default`,label:`Any value`,placeholder:hu.default},{key:`group`,label:`Empty group`,placeholder:`No <group name> added`},{key:`document`,label:`Document`,placeholder:hu.document},{key:`date`,label:`Date`,placeholder:hu.date},{key:`phone`,label:`Phone`,placeholder:hu.phone},{key:`email`,label:`Email`,placeholder:hu.email},{key:`link`,label:`Link`,placeholder:hu.link},{key:`skills`,label:`Skills/tags`,placeholder:hu.skills}];function BC(e){let t={};return[`s3BaseUrl`,`dateFormat`,`dateTimeFormat`,`phoneFormat`,`booleanTrueLabel`,`booleanFalseLabel`,`emptyPlaceholder`,`separator`].forEach(n=>{e?.[n]!==void 0&&e?.[n]!==``&&(t[n]=e[n])}),typeof e?.phoneCountryCode==`string`&&(t.phoneCountryCode=e.phoneCountryCode),Array.isArray(e?.documentNameOrder)&&e.documentNameOrder.length&&(t.documentNameOrder=e.documentNameOrder),e?.emptyTexts&&typeof e.emptyTexts==`object`&&(t.emptyTexts={...e.emptyTexts}),typeof e?.timeZone==`string`&&(t.timeZone=e.timeZone),typeof e?.region==`string`&&(t.region=e.region),typeof e?.showTimeZoneLabel==`boolean`&&(t.showTimeZoneLabel=e.showTimeZoneLabel),t}function VC({open:e,onClose:t}){let[r,i]=(0,o.useState)(()=>({...n.Bn()})),[a,u]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return n.Tr().then(e=>{t||i(t=>({...t,...BC(e)}))}).catch(()=>{}),()=>{t=!0}},[e]);let d=(e,t)=>i(n=>({...n,[e]:t})),f=(0,o.useMemo)(()=>n.Nn(r).map(({value:e,label:t})=>({value:e,label:t})),[r.timeZoneAliases]),p=async()=>{u(!0);try{let e={s3BaseUrl:(r.s3BaseUrl??``).trim(),dateFormat:(r.dateFormat??``).trim(),dateTimeFormat:(r.dateTimeFormat??``).trim(),showTimeZoneLabel:r.showTimeZoneLabel!==!1,phoneFormat:(r.phoneFormat??``).trim(),phoneCountryCode:(r.phoneCountryCode??``).trim(),booleanTrueLabel:r.booleanTrueLabel??``,booleanFalseLabel:r.booleanFalseLabel??``,emptyPlaceholder:r.emptyPlaceholder??``,emptyTexts:r.emptyTexts??{},timeZone:(r.timeZone??``).trim(),region:(r.region??``).trim(),separator:r.separator??``,documentNameOrder:Array.isArray(r.documentNameOrder)?r.documentNameOrder:[]};await n.ei(e),n.Rn(e),s.message.success(`Display defaults saved`),t()}catch(e){s.message.error(e?.message||`Could not save defaults`)}finally{u(!1)}},m={fontSize:12,display:`block`,marginBottom:4};return(0,l.jsxs)(s.Drawer,{open:e,onClose:t,width:460,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.SettingOutlined,{}),` Display Defaults`]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>i({...n.Ln}),children:`Reset to built-in`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:a,onClick:p,children:`Save Defaults`})]}),children:[(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Documents / Files`}),(0,l.jsxs)(`div`,{style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`S3 Base URL`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:n.Ln.s3BaseUrl,value:r.s3BaseUrl??``,onChange:e=>d(`s3BaseUrl`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Document name priority (first match wins)`}),(0,l.jsx)(s.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`name, documentName, uploadedFileName…`,value:r.documentNameOrder??[],onChange:e=>d(`documentNameOrder`,e)})]})]}),(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Value Formatting`}),(0,l.jsxs)(`div`,{style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Date format (dayjs tokens)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`DD MMM YYYY`,value:r.dateFormat??``,onChange:e=>d(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Phone format (digit groups, e.g. 3-3-4 → 999-878-3413)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`3-3-4`,value:r.phoneFormat??``,onChange:e=>d(`phoneFormat`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Fallback country code (leave blank — recommended)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`blank = no code`,value:r.phoneCountryCode??``,onChange:e=>d(`phoneCountryCode`,e.target.value),className:`fg-mono-input`}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:4},children:`Used ONLY when a record carries no dial code of its own. It ships empty on purpose: a number that never stated a country is shown without one, rather than being stamped with a code someone assumed. Set it only if this tenant really is single-country.`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — true`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`Yes`,value:r.booleanTrueLabel??``,onChange:e=>d(`booleanTrueLabel`,e.target.value)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — false`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`No`,value:r.booleanFalseLabel??``,onChange:e=>d(`booleanFalseLabel`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Region`}),(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,style:{width:`100%`},placeholder:`Common — every group uses its own defaults`,value:r.region||void 0,onChange:e=>d(`region`,e??``),options:RC,getPopupContainer:()=>document.body}),(0,l.jsx)(Q,{type:`secondary`,style:{...m,marginTop:4},children:`Different markets expect different things. Choosing one here switches the rules that have been set up for it — for example whether someone may be put forward while still studying, which is normal in the US and UK but not in India. Leave it on Common if the same rules suit everyone.`})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Application time zone`}),(0,l.jsx)(s.Select,{size:`small`,showSearch:!0,allowClear:!0,style:{width:`100%`},placeholder:`Use each viewer's own browser time zone`,optionFilterProp:`label`,value:r.timeZone||void 0,onChange:e=>d(`timeZone`,e??``),options:f,getPopupContainer:()=>document.body}),(0,l.jsx)(Q,{type:`secondary`,style:{...m,marginTop:4},children:r.timeZone?`Everyone now sees and enters times in ${n.Fn({...r,timeZone:r.timeZone})}, whichever country they are working from — so an interview slot means the same thing to all of them. Plain dates such as a date of birth are not affected.`:`Not set — everyone sees times in their own computer’s time zone, so the same interview can appear at two different times to two people.`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Date and time format`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`MMM DD, YYYY | hh:mm A`,value:r.dateTimeFormat??``,onChange:e=>d(`dateTimeFormat`,e.target.value)}),(0,l.jsxs)(Q,{type:`secondary`,style:{...m,marginTop:4},children:[`Used wherever a moment is shown — when a record was created or last changed, activity entries, interview slots. Example:`,(0,l.jsxs)(`b`,{children:[` `,n.jn(gC,{...r,showTimeZoneLabel:r.showTimeZoneLabel!==!1})||`—`]})]})]}),(0,l.jsxs)(`div`,{style:{flex:`0 0 200px`},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Show the time zone`}),(0,l.jsx)(`div`,{children:(0,l.jsx)(s.Switch,{size:`small`,checked:r.showTimeZoneLabel!==!1,onChange:e=>d(`showTimeZoneLabel`,e),checkedChildren:`Shown`,unCheckedChildren:`Hidden`})}),(0,l.jsxs)(Q,{type:`secondary`,style:{...m,marginTop:4},children:[`Adds a small "`,n.In(r),`" after every time, so nobody has to guess whose clock it is. Only times get it — plain dates never do.`]})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Empty placeholder`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`-`,value:r.emptyPlaceholder??``,onChange:e=>d(`emptyPlaceholder`,e.target.value)})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:`Object / array separator`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:` - `,value:r.separator??``,onChange:e=>d(`separator`,e.target.value)})]})]}),(0,l.jsxs)(`div`,{style:{marginTop:18},children:[(0,l.jsx)(Q,{strong:!0,style:{fontSize:12},children:`Empty-value text by kind`}),(0,l.jsx)(Q,{type:`secondary`,style:{...m,marginTop:2},children:`What people see where there is nothing to show. A dash tells them nothing — "No experience added" tells them the record is fine and that part is simply empty. Leave a box blank to use the built-in wording; a single field or section can still say something different.`}),(0,l.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:zC.map(({key:e,label:t,placeholder:n})=>(0,l.jsxs)(`div`,{style:{flex:`1 1 190px`},children:[(0,l.jsx)(Q,{type:`secondary`,style:m,children:t}),(0,l.jsx)(s.Input,{size:`small`,placeholder:n,value:r.emptyTexts?.[e]??``,onChange:t=>d(`emptyTexts`,{...r.emptyTexts??{},[e]:t.target.value})})]},e))})]})]})]})}function HC(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(``),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)({}),[y,b]=(0,o.useState)([]),[x,S]=(0,o.useState)([]),[C,w]=(0,o.useState)({}),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(``),[k,A]=(0,o.useState)(!1),[j,M]=(0,o.useState)(null),[N,P]=(0,o.useState)(null),[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)(!1),[z,B]=(0,o.useState)(null),[V,ee]=(0,o.useState)(0),[te,ne]=(0,o.useState)(``),[re,ie]=(0,o.useState)([]),[H,ae]=(0,o.useState)(``),[oe,se]=(0,o.useState)(``),[ce,U]=(0,o.useState)({});function le(e){B(xC[e])}async function ue(e,t,r,i){if(dC(e))return;let a=d;f(n=>n.map(n=>n.id===e.id?{...n,[t]:r}:n)),U(n=>({...n,[`${e.id}:${t}`]:!0}));try{await n.ci(e.id,{...e,[t]:r}),s.message.success(r?i.on:i.off)}catch(e){f(a),s.message.error(e?.message||`Could not update group visibility`)}finally{U(n=>{let r={...n};return delete r[`${e.id}:${t}`],r})}}async function de(e,t,r){if(dC(e))return;let i=String(r??``).trim();if(i===String(e?.[t]??``).trim())return;let a=d;f(n=>n.map(n=>n.id===e.id?{...n,[t]:i}:n));try{await n.ci(e.id,{...e,[t]:i}),s.message.success(`Empty text saved`)}catch(e){f(a),s.message.error(e?.message||`Could not save empty text`)}}let fe=(e,t)=>ue(e,`hideGroup`,t,{on:`Group hidden from add/edit forms and the detail view`,off:`Group is visible again`}),pe=(e,t)=>ue(e,`hideGroupInDetail`,t,{on:`Group hidden from the detail view only — add/edit forms keep it`,off:`Group is visible in the detail view again`}),W=(e,t)=>ue(e,`ignoreShowIfInDetail`,t,{on:`Group always shows in the detail view, even when its Show Condition fails`,off:`Group follows its Show Condition in the detail view`});function me(){B(null),ee(e=>e+1)}(0,o.useEffect)(()=>{n.dr({limit:200}).then(ie).catch(()=>ie([]))},[]),(0,o.useEffect)(()=>{n.yr().then(e=>{let n=gx(e).map(({value:e,label:t})=>({key:e,label:t}));t(n),n.length&&u(n[0].key)}).catch(()=>t([])).finally(()=>i(!1))},[]),(0,o.useEffect)(()=>{if(!a)return;let e=!1;return(async()=>{E(!0),O(``);try{let[t,r]=await Promise.all([n.fr(a,{clientId:H}).catch(e=>{if(e?.status===404)return[];throw e}),n.wr(a,{clientId:H})]);if(e)return;let i=r.sourceFields??[],o=mC(pC(t,i),r.groups??[]),s=o.groups;se(r.clientId??``),S(i),w(o.labels),f(s),m(EC(s)),g(s.map(e=>({value:e.name,label:e.label??e.name})));let c={};(r.fields??[]).forEach(e=>{c[e.field]=e}),v(c),b(r.merges??[])}catch(t){e||O(t?.message||`Failed to load configuration`)}finally{e||E(!1)}})(),()=>{e=!0}},[a,V,H]);let he=(0,o.useMemo)(()=>p.map(e=>({value:e.key,label:`${e.label} (${e.key})`})),[p]);async function ge(){A(!0);try{let e=Object.entries(_).map(([e,t])=>DC(e,t)).filter(Boolean),{nextGroups:t,changed:r}=AC(d,_);await n.$r({module:a,fields:e,merges:OC(y),sourceFields:x,groups:hC(C),clientId:H}),r.length&&(f(t),m(EC(t)),g(t.map(e=>({value:e.name,label:e.label??e.name})))),se(H),s.message.success(H?`Detail view configuration saved for this client`:`Detail view configuration saved`)}catch(e){s.message.error(e?.message||`Could not save configuration`)}finally{A(!1)}}function _e(e,t){let n=e?.name;if(!n)return;let r=String(t??``),i=e.inheritedLabel??e.label??n;w(e=>{let t={...e};return!r.trim()||r.trim()===i?delete t[n]:t[n]=r,t}),f(e=>e.map(e=>e.name===n?{...e,inheritedLabel:i,label:r.trim()||i}:e))}function G(e){v(t=>({...t,[j.key]:{...e,field:j.key}})),M(null)}function K(e){v(t=>{let n={...t};return delete n[e],n})}function ve(e){b(t=>{let n=[...t];return N.index===null?n.push(e):n[N.index]=e,n}),P(null)}function ye(e,t,n=!1){v(r=>{let i=r[e]??{field:e};return n?{...r,[e]:{...i,hideInDetail:t,hidden:void 0}}:{...r,[e]:{...i,hidden:t}}})}let be=e=>{if(!e)return null;let t=[];e.label&&t.push((0,l.jsx)(s.Tag,{color:`blue`,children:`label`},`l`)),(e.prefix||e.suffix)&&t.push((0,l.jsx)(s.Tag,{color:`geekblue`,children:`±fix`},`ps`)),e.color&&t.push((0,l.jsx)(s.Tag,{color:e.color,children:`colour`},`c`)),e.capitalize===!0&&t.push((0,l.jsx)(s.Tag,{color:`purple`,children:`Title`},`cap`)),e.capitalize===!1&&t.push((0,l.jsx)(s.Tag,{color:`default`,children:`raw`},`cap`)),e.lookupCollection&&t.push((0,l.jsxs)(s.Tag,{color:`volcano`,children:[`lookup: `,e.lookupCollection]},`lk`)),e.ignoreLabelWhenInDetail&&t.push((0,l.jsx)(s.Tag,{color:`default`,children:`static label`},`ilw`));let n=e.renderType||(e.documentPreview?`document`:e.displayAs);return n&&n!==`auto`&&t.push((0,l.jsx)(s.Tag,{color:`cyan`,children:n},`rt`)),t.length?t:(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},xe=[{title:`Group`,dataIndex:`label`,key:`label`,render:(e,t)=>{let n=t.inheritedLabel??e??t.name,r=C[t.name]??``;return(0,l.jsxs)(s.Space,{size:6,direction:`vertical`,style:{width:`100%`},children:[(0,l.jsxs)(s.Space,{size:6,style:{width:`100%`},children:[(0,l.jsx)(s.Input,{size:`small`,value:r||(e??t.name)||``,placeholder:n,onChange:e=>_e(t,e.target.value),style:{fontWeight:600}}),dC(t)&&(0,l.jsx)(s.Tag,{color:`cyan`,children:`Detail only`})]}),r&&r!==n&&(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:11},children:[`Detail only · Form Groups shows “`,n,`”`]}),(0,l.jsx)(s.Button,{type:`link`,size:`small`,style:{padding:0,height:`auto`,fontSize:11},onClick:()=>_e(t,``),children:`reset`})]})]})}},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Order`,dataIndex:`order`,key:`order`,width:72,align:`center`,render:e=>(0,l.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,width:76,align:`center`,render:e=>(0,l.jsx)(s.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:`Customized`,key:`cust`,width:100,align:`center`,render:(e,t)=>{let n=(t.fields??[]).filter(e=>_[e.field]).length;return n?(0,l.jsx)(s.Tag,{color:`blue`,style:{margin:0},children:n}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Hide Group`,key:`hideGroup`,width:110,align:`center`,render:(e,t)=>dC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:TC(t.hideGroup)?`Hidden from add/edit forms AND the detail view`:`Visible in both — same flag as Form Groups`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:TC(t.hideGroup),loading:!!ce[`${t.id}:hideGroup`],onChange:e=>fe(t,e)})})},{title:`Show Condition`,key:`ignoreShowIfInDetail`,width:130,align:`center`,render:(e,t)=>{if(dC(t))return(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`});let n=t.showIf?.field?`${t.showIf.field} ${t.showIf.operator??`eq`} ${t.showIf.value??``}`.trim():null;return n?(0,l.jsx)(s.Tooltip,{title:TC(t.ignoreShowIfInDetail)?`Always shown, ignoring "${n}"`:`Hidden in the detail view unless "${n}"`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Always`,unCheckedChildren:`Follow`,checked:TC(t.ignoreShowIfInDetail),loading:!!ce[`${t.id}:ignoreShowIfInDetail`],onChange:e=>W(t,e)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Empty Text`,key:`emptyText`,width:220,render:(e,t)=>TC(t.addRow)?(0,l.jsx)(s.Input,{size:`small`,defaultValue:t.emptyText??``,placeholder:`No ${String(t.label??t.name??``).toLowerCase()} added`,onBlur:e=>de(t,`emptyText`,e.target.value),onPressEnter:e=>e.currentTarget.blur()}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},{title:`Hide in Detail`,key:`hideGroupInDetail`,width:120,align:`center`,render:(e,t)=>dC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:TC(t.hideGroupInDetail)?`Hidden from the DETAIL VIEW only — the add/edit forms still show this group`:`Shown in the detail view. Hide here to remove it from the detail view without touching the forms`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:TC(t.hideGroupInDetail),loading:!!ce[`${t.id}:hideGroupInDetail`],onChange:e=>pe(t,e)})})}],Se=e=>{let t=e.fields??[],n=dC(e);return t.length?(0,l.jsx)(`div`,{className:`fg-expanded-fields`,children:t.map(t=>{let r=_[t.field],i=n?!!r?.hideInDetail:r?.hidden??kC(t),a={key:t.field,label:t.label??t.field,type:t.type??`text`,group:e.label??e.name,detailOnly:n,labelWhen:t.labelWhen,lookupDefaults:t.lookupCollection?{lookupCollection:t.lookupCollection,displayField:t.displayField??``,displayField2:t.displayField2??``,valueField:t.valueField||`_id`}:{}};return(0,l.jsxs)(`div`,{className:`fg-field-row`,children:[(0,l.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,l.jsx)(`span`,{className:`fg-field-row-label`,children:r?.label||t.label}),(0,l.jsx)(`span`,{className:`fg-field-row-key`,children:t.field}),(0,l.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,t.type,`)`]}),rS(t)&&(0,l.jsx)(s.Tooltip,{title:(()=>{let e=iS(t);return`Configured unique in Form Groups on "${e?.value?.collectionField||t.payloadKey||t.field}"${e?.message?` — "${e.message}"`:``}. Edit it there; this screen is display only.`})(),children:(0,l.jsx)(s.Tag,{color:`magenta`,style:{marginLeft:6},children:`Unique`})}),(()=>{let e=(r?.labelWhen??[]).filter(e=>e?.field&&e?.label),n=e.length?e:t.labelWhen?.field&&t.labelWhen?.label?[t.labelWhen]:[];if(!n.length)return null;let i=r?.ignoreLabelWhenInDetail;return(0,l.jsx)(s.Tooltip,{title:i?`Conditional labels ignored here — the detail view always shows "${t.label}"`:`${e.length?`Set in Detail Groups`:`Inherited from Form Groups`} — ${n.map(e=>`"${e.label}" when ${e.field} ${e.operator??`eq`} ${e.value??``}`.trim()).join(`; `)}`,children:(0,l.jsxs)(s.Tag,{color:i?`default`:e.length?`purple`:`blue`,style:{marginLeft:6},children:[`⇄ `,n[0].label,n.length>1?` +${n.length-1}`:``]})})})()]}),(0,l.jsx)(`div`,{className:`fg-field-row-flags`,children:be(r)}),(0,l.jsxs)(s.Space,{size:4,style:{marginLeft:`auto`},children:[(0,l.jsx)(s.Tooltip,{title:n?i?`Hidden from the detail view`:`Visible in the detail view`:i?`Hidden in form and detail view`:`Visible`,children:(0,l.jsx)(s.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:i,onChange:e=>ye(t.field,e,n)})}),(0,l.jsx)(s.Tooltip,{title:`Customize field`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>M(a)})}),r&&(0,l.jsx)(s.Tooltip,{title:`Reset to default`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>K(t.field)})})]})]},t.field)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`})},Ce=(0,o.useMemo)(()=>{let e=te.trim().toLowerCase();return[...d].filter(t=>!e||[t.label,t.name,...(t.fields??[]).flatMap(e=>[e.label,e.field,e.type])].some(t=>String(t??``).toLowerCase().includes(e))).sort((e,t)=>(e.order??0)-(t.order??0))},[d,te]),we=[{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(`span`,{children:[(0,l.jsx)(Q,{strong:!0,children:e||t.key}),(0,l.jsx)(`span`,{className:`fg-field-key-hint`,children:t.key})]})},{title:`Fields`,dataIndex:`fields`,key:`fields`,render:e=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(e??[]).map(e=>(0,l.jsx)(s.Tag,{children:e},e))})},{title:`Format`,key:`sep`,width:220,render:(e,t)=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:t.template?.trim()?t.template:`join: ${t.separator||` - `}`})},{title:``,key:`actions`,width:90,align:`right`,render:(e,t,n)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>P({index:n,merge:t})})}),(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>b(e=>e.filter((e,t)=>t!==n))})})]})}],Te=e.map(e=>({key:e.key,label:e.label}));return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.BgColorsOutlined,{}),title:`Detail Groups`,extra:(0,l.jsxs)(s.Space,{size:8,wrap:!0,children:[(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.DatabaseOutlined,{}),disabled:!a,onClick:()=>le(`discoverFields`),children:`Read Database Fields`}),(0,l.jsx)(s.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>le(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>le(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all detail settings`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>le(`reset`)}]},children:(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.MoreOutlined,{}),children:`Workspace defaults`})}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.SettingOutlined,{}),onClick:()=>R(!0),children:`Display Defaults`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),disabled:!a,onClick:()=>I(!0),children:`Preview`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:k,disabled:!a,onClick:ge,children:`Save Configuration`})]}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsxs)(`div`,{className:`fg-scope-toolbar`,style:{marginBottom:12},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Select a client to edit a client-scoped detail view for this module. Leave blank for the module default. A record belonging to a client automatically uses that client's detail config, falling back to the default when the client has none.`}),(0,l.jsxs)(s.Space,{wrap:!0,size:8,children:[(0,l.jsx)(s.Select,{size:`small`,allowClear:!0,showSearch:!0,placeholder:`Client (default)`,style:{width:240},value:H||void 0,optionFilterProp:`label`,options:re.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>ae(e??``)}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>ee(e=>e+1),children:`Reload`})]})]}),H&&!oe&&!T&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`This client has no detail config of its own yet`,description:`You are viewing the module default. Saving now creates a config for this client only — the default and every other client are left untouched.`}),!T&&x.length>0&&(0,l.jsx)(s.Alert,{type:`success`,showIcon:!0,style:{marginBottom:12},message:`${x.length} database field${x.length===1?``:`s`} available to this detail view`,description:`These fields are stored only in Detail configuration and do not appear in Add or Edit forms. Read Database Fields again to refresh the list after the collection schema changes.`}),(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:13},children:`Customize how each module's detail view renders: per-field label, prefix/suffix, colour, capitalization, hide, reference lookups (id → name), and merged display fields. These overrides are applied on top of Form Groups and the add/edit forms are unaffected — except "Hide Group", which is the same flag Form Groups uses, so hiding a group here (or there) hides it in both places. "Hide in Detail" hides the group from the detail view only, leaving the forms untouched.`})]}),(0,l.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,l.jsxs)(s.Spin,{spinning:r,children:[(0,l.jsx)(s.Tabs,{activeKey:a,onChange:u,items:Te.map(e=>({...e,children:null})),className:`admin-module-tabs`}),D&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:D,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:T,children:[(0,l.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,l.jsx)(s.Input,{allowClear:!0,prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search groups or fields`,value:te,onChange:e=>ne(e.target.value)}),(0,l.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[d.length,` groups · `,p.length,` fields`,x.length?` · ${x.length} from database`:``]})]}),(0,l.jsx)(s.Table,{rowKey:e=>e.id??e.name,dataSource:Ce,columns:xe,pagination:!1,size:`small`,className:`fg-table`,expandable:{expandedRowRender:Se,rowExpandable:()=>!0},locale:{emptyText:(0,l.jsx)(s.Empty,{description:`Select a module to see its groups and fields.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})}}),(0,l.jsxs)(`div`,{style:{margin:`20px 0 8px`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,l.jsxs)(Q,{strong:!0,children:[(0,l.jsx)(c.MergeCellsOutlined,{}),` Merged Fields`]}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),disabled:!a,onClick:()=>P({index:null,merge:null}),children:`Add Merge`})]}),(0,l.jsx)(s.Table,{rowKey:`key`,dataSource:y,columns:we,pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,l.jsx)(s.Empty,{description:`No merged fields. Combine e.g. 'from' + 'to' into one.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]})}),(0,l.jsx)(NC,{open:!!j,fieldMeta:j,value:j?{...j.lookupDefaults,..._[j.key]??{}}:null,moduleFieldOptions:he,onClose:()=>M(null),onSave:G},j?.key??`field-closed`),(0,l.jsx)(IC,{open:!!N,merge:N?.merge,fieldOptions:he,groupOptions:h,onClose:()=>P(null),onSave:ve},N?`merge-${N.index??`new`}`:`merge-closed`),(0,l.jsx)(VC,{open:L,onClose:()=>R(!1)}),(0,l.jsx)(LC,{open:F,module:a,onClose:()=>I(!1)}),(0,l.jsx)(cS,{open:!!z,scope:`detailConfig`,action:z?.action,title:z?.title,description:z?.description,confirmLabel:z?.confirmLabel,danger:z?.danger,onCancel:()=>B(null),onVerified:me,onConfirm:z?.action===`discoverFields`?e=>n.lr({module:a,clientId:H,otp:e}):void 0})]})}var UC=`/admin/email-templates`,WC=`/email-templates`;function GC(e){return e?.data??e}async function KC({offset:e=0,limit:n=20,search:r=``,module:i=``,action:a=``,active:o}={}){let s=new URLSearchParams({offset:String(e),limit:String(n)});r&&s.set(`search`,r),i&&s.set(`module`,i),a&&s.set(`action`,a),o!==void 0&&s.set(`active`,String(o));let c=GC(await t.o(t.x,`${UC}?${s}`))??{};return{items:Array.isArray(c.items)?c.items:[],totalCount:Number(c.totalCount??0)}}async function qC(e){return GC(await t.o(t.x,`${UC}/${encodeURIComponent(e)}`))}async function JC(e){return t.o(t.x,UC,{method:`POST`,body:JSON.stringify(e)})}async function YC(e,n){return t.o(t.x,`${UC}/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(n)})}async function XC(e){return t.o(t.x,`${UC}/${encodeURIComponent(e)}`,{method:`DELETE`})}async function ZC({module:e=``,action:n=``}={}){let r=new URLSearchParams;e&&r.set(`module`,e),n&&r.set(`action`,n);let i=r.toString()?`?${r}`:``,a=GC(await t.o(t.x,`${WC}${i}`));return Array.isArray(a)?a:[]}async function QC(e){return GC(await t.o(t.x,`${WC}/${encodeURIComponent(e)}`))}async function $C(){let e=GC(await t.o(t.x,`/signature/placeHolder?module=userSignature`))??{},n=Array.isArray(e.Keys)?e.Keys:Array.isArray(e.keys)?e.keys:[];return{placeHolderStart:e.placeHolderStart??`{{`,placeHolderEnd:e.placeHolderEnd??`}}`,module:e.module??`userSignature`,keys:n}}async function ew({offset:e=0,limit:n=20,search:r=``}={}){let i=new URLSearchParams({offset:String(e),limit:String(n),sortBy:`new`,searchValue:r}),a=GC(await t.o(t.x,`/signature/homePage?${i}`))??{},o=Array.isArray(a.data)?a.data.map(e=>({...e,isActive:e.isActive??e.status??!1})):[];return{items:o,totalCount:Number(a.totalCount??o.length)}}async function tw(e){return GC(await t.o(t.x,`/signature/editPreview?signatureId=${encodeURIComponent(e)}`))}async function nw(e){return t.o(t.x,`/signature/add`,{method:`POST`,body:JSON.stringify(e)})}async function rw(e){return t.o(t.x,`/signature/edit`,{method:`PUT`,body:JSON.stringify(e)})}async function iw(e){return t.o(t.x,`/signature/delete?signatureId=${encodeURIComponent(e)}`,{method:`DELETE`})}async function aw(e,n){return t.o(t.x,`/signature/statusUpdate?signatureId=${encodeURIComponent(e)}&status=${n}`,{method:`PUT`})}var ow={reset:{action:`reset`,title:`Reset all row actions`,confirmLabel:`Reset All`,danger:!0,description:`This clears every configured row action for every module in this workspace. Actions have no built-in defaults, so this leaves every module with no actions until reconfigured.`},save:{action:`save`,title:`Save current as default`,confirmLabel:`Save Default`,danger:!1,description:`Snapshots the current row actions for all modules and roles as the saved default you can restore to later.`},restore:{action:`restore`,title:`Restore saved default`,confirmLabel:`Restore Default`,danger:!0,description:`Replaces the current row actions for all modules and roles with the last saved default.`}},{Text:sw}=s.Typography,cw=[{value:`delete`,label:`delete (trash)`},{value:`edit`,label:`edit (pencil)`},{value:`mail`,label:`mail (envelope)`},{value:`shareAlt`,label:`shareAlt (share)`},{value:`swap`,label:`swap (arrows)`},{value:`thunderbolt`,label:`thunderbolt (lightning)`},{value:`userAdd`,label:`userAdd (add user)`},{value:`userSwitch`,label:`userSwitch (switch user)`}],lw=[{value:`navigate`,label:`Navigate (open page)`},{value:`modal`,label:`Modal (open popup)`},{value:`api`,label:`API (call endpoint)`},{value:`copy`,label:`Copy (clipboard)`},{value:`document`,label:`Document (open viewer)`},{value:`group`,label:`Group (submenu of child actions)`}],uw=[`GET`,`POST`,`PUT`,`DELETE`],dw=[`quick-submit`,`add-notes`,`mail`,`change-status`,`tag-to-job`,`add-to-groups`,`self-assign`,`others-assign`,`delete`,`vendor-share`,`sticky-notes`,`move-to-onboarding`,`approve-rate`,`reject`,`add-batch-candidate`],fw={key:``,label:``,icon:``,actionType:`navigate`,routeTemplate:``,linkTarget:`_self`,apiMethod:`POST`,apiPath:``,popupKey:``,popupStateText:``,copyField:``,documentField:``,allowedTabs:[],popupFieldName:``,popupFieldDataSource:``,popupFieldMasterName:``,popupFieldLabelKey:``,popupFieldValueKey:``,permission:``,permissionModule:``,permissionAction:``,permissionKey:``,allowMultiple:!1,danger:!1,showInList:!0,showInDetail:!1,detailPlacement:`more`,requireJobId:!1,doneLabel:``,doneField:``,doneOperator:`notEmpty`,doneValue:``,doneTone:`success`},pw=[{value:`notEmpty`,label:`is set (not empty)`},{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`}];function mw(){return`action_${Date.now()}`}function hw({open:e,initial:t,isChild:n,popupForms:r,templateOptions:i,permissionModules:a,permissionActions:u,onClose:d,onSave:f}){let[p]=s.Form.useForm(),[m,h]=(0,o.useState)(!1),g=s.Form.useWatch(`actionType`,p)??`navigate`,_=s.Form.useWatch(`showInDetail`,p)??!1,v=s.Form.useWatch(`popupKey`,p)??``,y=s.Form.useWatch(`doneOperator`,p)??`notEmpty`;(0,o.useEffect)(()=>{if(e){let[e=``,n=``]=(t?.permission??``).split(`.`);p.setFieldsValue({...fw,...t,permissionModule:e,permissionAction:n,popupStateText:t?.popupState?JSON.stringify(t.popupState,null,2):``,doneField:t?.doneWhen?.field??``,doneOperator:t?.doneWhen?.operator??`notEmpty`,doneValue:t?.doneWhen?.value??``,doneLabel:t?.doneLabel??``,doneTone:t?.doneTone??`success`,popupFieldName:t?.popupFieldOverrides?.[0]?.name??``,popupFieldDataSource:t?.popupFieldOverrides?.[0]?.dataSource??``,popupFieldMasterName:t?.popupFieldOverrides?.[0]?.masterName??``,popupFieldLabelKey:t?.popupFieldOverrides?.[0]?.labelKey??``,popupFieldValueKey:t?.popupFieldOverrides?.[0]?.valueKey??``})}},[e,t,p]);let b=async()=>{let e=await p.validateFields(),t;if(e.popupStateText?.trim())try{t=JSON.parse(e.popupStateText)}catch{p.setFields([{name:`popupStateText`,errors:[`Enter valid JSON`]}]);return}let n={...e};delete n.popupStateText;let{permissionModule:r,permissionAction:i}=n;delete n.permissionModule,delete n.permissionAction,n.permission=r&&i?`${r}.${i}`:``;let{doneField:a,doneOperator:o,doneValue:s}=n;if(delete n.doneField,delete n.doneOperator,delete n.doneValue,a?.trim()){let e=o||`notEmpty`,t=e===`eq`||e===`ne`;n.doneWhen={field:a.trim(),operator:e,...t?{value:(s??``).trim()}:{}},n.doneLabel?.trim()||(n.doneLabel=``)}else n.doneWhen=void 0,n.doneLabel=``;(n.actionType!==`modal`||![`mail`,`vendor-share`].includes(n.popupKey))&&delete n.defaultTemplateId,(n.actionType!==`modal`||n.popupKey!==`mail`)&&delete n.requireJobId;let{popupFieldName:c,popupFieldDataSource:l,popupFieldMasterName:u,popupFieldLabelKey:d,popupFieldValueKey:m}=n;delete n.popupFieldName,delete n.popupFieldDataSource,delete n.popupFieldMasterName,delete n.popupFieldLabelKey,delete n.popupFieldValueKey;let g=c?.trim()||(n.popupKey===`change-status`?`status`:``),_=d?.trim()||(u?.trim()===`clientSubmissions`?`clientSubmissionStatusText`:``),v=m?.trim()||(u?.trim()===`clientSubmissions`?`clientSubmissionStatusText`:``);n.popupFieldOverrides=n.actionType===`modal`&&g&&l?[{name:g,dataSource:l,...l===`master`?{masterName:u?.trim()}:{},..._?{labelKey:_}:{},...v?{valueKey:v}:{}}]:void 0,h(!0);try{await f({...n,...t?{popupState:t}:{popupState:void 0}})}finally{h(!1)}},x=[...dw.map(e=>({value:e,label:`${e} (built-in)`})),...r.map(e=>({value:e.action,label:`${e.label} (${e.action})`}))].filter((e,t,n)=>n.findIndex(t=>t.value===e.value)===t);return(0,l.jsx)(s.Modal,{title:`${t?.key?`Edit`:`Add`}${n?` Child`:``} Action`,width:720,open:e,onCancel:d,onOk:b,confirmLoading:m,okText:`Save Action`,okButtonProps:{icon:(0,l.jsx)(c.SaveOutlined,{})},className:`fg-editor-modal action-editor-modal`,children:(0,l.jsxs)(s.Form,{form:p,layout:`vertical`,initialValues:fw,className:`action-editor-form`,children:[(0,l.jsx)(`div`,{className:`action-editor-intro`,children:`Choose what the action does, then decide where it appears and who can use it.`}),(0,l.jsxs)(`div`,{className:`action-editor-grid`,children:[(0,l.jsx)(s.Form.Item,{name:`key`,label:`Key`,rules:[{required:!0,message:`Key is required`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. sourceCandidates`})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Label`,rules:[{required:!0,message:`Label is required`}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. Source Candidates`})}),(0,l.jsx)(s.Form.Item,{name:`icon`,label:`Icon`,rules:[{required:!1,message:`Icon is required`}],children:(0,l.jsx)(s.Select,{options:cw,placeholder:`Select icon`,allowClear:!0})}),(0,l.jsx)(s.Form.Item,{name:`actionType`,label:`Action Type`,rules:[{required:!0}],children:(0,l.jsx)(s.Select,{options:lw})})]}),g===`group`&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`Group actions don't run anything themselves.`,description:`This action renders as a submenu. Save it, then use "Add Child Action" on its row to configure what appears inside (e.g. Tag To Job, Send Mail, Add Notes).`,style:{marginBottom:16}}),g!==`group`&&(0,l.jsx)(`div`,{className:`action-editor-section-title`,children:`Behaviour`}),g===`navigate`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`routeTemplate`,label:`Route Template`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. /app/jobs/edit/:_id`})}),(0,l.jsx)(s.Form.Item,{name:`linkTarget`,label:`Open in`,tooltip:`New tab is useful for a reference page the user shouldn't lose their place to (e.g. Open JD from Quick Submit).`,children:(0,l.jsx)(s.Select,{options:[{value:`_self`,label:`Same tab`},{value:`_blank`,label:`New tab`}]})})]}),g===`modal`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`popupKey`,label:`Popup`,rules:[{required:!0,message:`Select a popup`}],tooltip:`Admin popup forms and built-in popup integrations are listed together.`,children:(0,l.jsx)(s.Select,{showSearch:!0,optionFilterProp:`label`,options:x,placeholder:`Select popup form`})}),(0,l.jsx)(s.Form.Item,{name:`popupStateText`,label:`Popup Context (JSON, optional)`,tooltip:`Static context passed to the popup, for example {"notesfor":"candidate"}`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,placeholder:`{"notesfor":"candidate"}`})}),(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`apiMethod`,label:`Submit Method`,style:{width:150},children:(0,l.jsx)(s.Select,{options:uw.map(e=>({value:e,label:e}))})}),(0,l.jsx)(s.Form.Item,{name:`apiPath`,label:`Submit API (optional)`,style:{flex:1},tooltip:`Leave empty to use the built-in handler for the selected popup key.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. /module-data-update`})})]}),(0,l.jsx)(`div`,{className:`action-editor-section-title`,children:`Popup Dropdown Source`}),(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`popupFieldName`,label:`Field Name`,style:{width:`28%`},tooltip:`The popup field to override. For Change Status, use "status".`,children:(0,l.jsx)(s.Input,{placeholder:`status`})}),(0,l.jsx)(s.Form.Item,{name:`popupFieldDataSource`,label:`Source`,style:{width:`24%`},children:(0,l.jsx)(s.Select,{allowClear:!0,options:[{value:`master`,label:`Master`}],placeholder:`Default`})}),(0,l.jsx)(s.Form.Item,{name:`popupFieldMasterName`,label:`Master Name`,style:{width:`48%`},children:(0,l.jsx)(s.Input,{placeholder:`clientSubmissions`})})]}),(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`popupFieldLabelKey`,label:`Label Key`,style:{width:`50%`},children:(0,l.jsx)(s.Input,{placeholder:`clientSubmissionStatusText`})}),(0,l.jsx)(s.Form.Item,{name:`popupFieldValueKey`,label:`Value Key`,style:{width:`50%`},children:(0,l.jsx)(s.Input,{placeholder:`clientSubmissionStatusText`})})]})]}),g===`modal`&&[`mail`,`vendor-share`].includes(v)&&(0,l.jsx)(s.Form.Item,{name:`defaultTemplateId`,label:`Default Email Template`,tooltip:`This template is selected and loaded automatically whenever this action opens the mail composer.`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`No default — user selects in composer`})}),g===`modal`&&v===`mail`&&(0,l.jsx)(s.Form.Item,{name:`requireJobId`,label:`Require Job ID`,valuePropName:`checked`,tooltip:`Show a Job ID field in this mail popup. When a valid Job ID is entered, the job-aware bulk-mail API loads the configured Candidate template subject and content. Leave off for modules that do not need a Job ID.`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Required`,unCheckedChildren:`Not required`})}),g===`api`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:`apiMethod`,label:`API Method`,children:(0,l.jsx)(s.Select,{options:uw.map(e=>({value:e,label:e}))})}),(0,l.jsx)(s.Form.Item,{name:`apiPath`,label:`API Path`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. /jobs/:_id`})})]}),g===`copy`&&(0,l.jsx)(s.Form.Item,{name:`copyField`,label:`Record Field to Copy`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. email or applicantRefrenceId`})}),g===`document`&&(0,l.jsx)(s.Form.Item,{name:`documentField`,label:`Document Field`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`e.g. resume or attachment`})}),(0,l.jsx)(`div`,{className:`action-editor-section-title`,children:`Availability and access`}),(0,l.jsx)(s.Form.Item,{name:`allowedTabs`,label:`Allowed Tabs (optional)`,tooltip:`Leave empty to show on every tab.`,children:(0,l.jsx)(s.Select,{mode:`tags`,tokenSeparators:[`,`],placeholder:`e.g. allJobs`})}),(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`permissionModule`,label:`Role Permission — Module (optional)`,style:{width:`50%`},tooltip:`Which module's RBAC permission gates this action. Leave both empty to show for every permitted role.`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. job`,options:a.map(e=>({value:e,label:e}))})}),(0,l.jsx)(s.Form.Item,{name:`permissionAction`,label:`Role Permission — Action`,style:{width:`50%`},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. edit`,options:u.map(e=>({value:e,label:e}))})})]}),(0,l.jsx)(s.Form.Item,{name:`permissionKey`,label:`Permission Key (row-level gate)`,tooltip:`Maps to record.actionPermission.<key>. Leave blank to always show.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. edit, sourceCandidates, sharePermission`})}),(0,l.jsxs)(`div`,{className:`action-toggle-grid`,children:[(0,l.jsx)(s.Form.Item,{name:`allowMultiple`,label:`Multiple Records`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})}),(0,l.jsx)(s.Form.Item,{name:`danger`,label:`Danger`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})}),(0,l.jsx)(s.Form.Item,{name:`showInList`,label:`Show in List`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})}),(0,l.jsx)(s.Form.Item,{name:`showInDetail`,label:`Show in Detail`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})]}),_&&(0,l.jsx)(s.Form.Item,{name:`detailPlacement`,label:`Detail Placement`,children:(0,l.jsx)(s.Select,{options:[{value:`primary`,label:`Primary button`},{value:`more`,label:`More actions menu`}]})}),(0,l.jsx)(`div`,{className:`action-editor-section-title`,children:`Done state (optional)`}),(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Turn this action into a disabled success label once a condition is met.`,description:`Example: when the record field "onboardingStatus" is set, "Move to Onboarding" shows as a disabled "Moved to Onboarded". Leave the field blank to disable.`}),(0,l.jsx)(s.Form.Item,{name:`doneLabel`,label:`Done Label`,tooltip:`Text shown once the done condition is met (e.g. Moved to Onboarded). Falls back to the normal label if blank.`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. Moved to Onboarded`})}),(0,l.jsxs)(s.Space.Compact,{block:!0,children:[(0,l.jsx)(s.Form.Item,{name:`doneField`,label:`When Record Field`,style:{width:`40%`},tooltip:`A field on the record to test (dotted paths allowed, e.g. onboardingStatus).`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. onboardingStatus`})}),(0,l.jsx)(s.Form.Item,{name:`doneOperator`,label:`Condition`,style:{width:`30%`},children:(0,l.jsx)(s.Select,{options:pw})}),(0,l.jsx)(s.Form.Item,{name:`doneValue`,label:`Value`,style:{width:`30%`},hidden:y!==`eq`&&y!==`ne`,children:(0,l.jsx)(s.Input,{placeholder:`e.g. In Progress`})})]}),(0,l.jsx)(s.Form.Item,{name:`doneTone`,label:`Done Colour`,children:(0,l.jsx)(s.Select,{options:[{value:`success`,label:`Success (green)`},{value:`primary`,label:`Primary (blue)`},{value:`danger`,label:`Danger (red)`}]})})]})})}function gw(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(``),[a,u]=(0,o.useState)([]),[d,f]=(0,o.useState)(null),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(null),[C,w]=(0,o.useState)(!1),[T,E]=(0,o.useState)(null),[D,O]=(0,o.useState)([]),[k,A]=(0,o.useState)([]),[j,M]=(0,o.useState)(null),[N,P]=(0,o.useState)(``),[F,I]=(0,o.useState)([]),[L,R]=(0,o.useState)([]);(0,o.useEffect)(()=>{n.Nr().then(e=>{let n=gx(e);t(n),i(e=>e||n[0]?.value||``)}).catch(()=>{t([])})},[]),(0,o.useEffect)(()=>{Promise.all([n.Nr().catch(()=>[]),n.Mr().catch(()=>[])]).then(([e,t])=>{I([...new Set(e.map(e=>e.MENUNAME??e.menuName).filter(Boolean))]),R([...new Set(t.map(e=>e.permissionKey??e.PERMISSIONKEY).filter(Boolean))])})},[]);let z=(0,o.useCallback)(async()=>{if(r){v(!0),S(null),u([]);try{let e=await n.Wr(r);u(e)}catch(e){S(e.message)}finally{v(!1)}}},[r]);(0,o.useEffect)(()=>{queueMicrotask(()=>{z()})},[z]),(0,o.useEffect)(()=>{Promise.all([n.Cr(r,`popup`).catch(()=>[]),ZC({module:r}).catch(()=>[])]).then(([e,t])=>{O(e),A(t.map(e=>({value:e._id??e.id,label:`${e.name} · ${e.action}`})))})},[r]),(0,o.useEffect)(()=>{queueMicrotask(()=>{let e=a.filter(e=>e.roleId===0),t=e.find(e=>e.module===r)??e[0];f(t??null),m(t?t.rowActions??[]:[]),g(!1)})},[r,a]);let B=async()=>{b(!0);try{if(d)await n.gi(d.id??d._id,p),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:p}:e)),s.message.success(`Config saved`);else{let e=await n.Qn({module:r,roleId:0,rowActions:p}),t=e?.data??e;f(t),u(e=>[...e,t]),s.message.success(`Config created`)}g(!1)}catch(e){s.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}finally{b(!1)}},V=async()=>{if(d)try{await n.cr(d.id??d._id),s.message.success(`Config deleted`),await z()}catch(e){s.message.error(e.message)}},[ee,te]=(0,o.useState)(null),ne=(e=null)=>{te(typeof e==`string`?e:null),E(null),w(!0)},re=(e,t=null)=>{te(t),E(e),w(!0)},ie=async e=>{let t;t=ee?p.map(t=>{if(t.key!==ee)return t;let n=t.children??[],r=T?n.map(t=>t.key===T.key?{...t,...e}:t):[...n,{...fw,...e,_localKey:mw()}];return{...t,children:r}}):T?p.map(t=>t.key===T.key?{...t,...e}:t):[...p,{...fw,...e,_localKey:mw()}];try{if(d)await n.gi(d.id??d._id,t),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:t}:e)),s.message.success(`Config saved`);else{let e=await n.Qn({module:r,roleId:0,rowActions:t}),i=e?.data??e;f(i),u(e=>[...e,i]),s.message.success(`Config created`)}m(t),g(!1),w(!1)}catch(e){s.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}},H=(e,t=null)=>{m(t?n=>n.map(n=>n.key===t?{...n,children:(n.children??[]).filter(t=>t.key!==e)}:n):t=>t.filter(t=>t.key!==e)),g(!0)},ae=(e,t)=>{m(n=>{let r=[...n],i=e+t;return i<0||i>=r.length?n:([r[e],r[i]]=[r[i],r[e]],r)}),g(!0)};function oe(e){M(ow[e])}function se(){M(null),z()}let ce=(0,o.useMemo)(()=>{let e=N.trim().toLowerCase();return e?p.filter(t=>[t.label,t.key,t.actionType,t.popupKey,t.routeTemplate,t.apiPath,t.permissionKey].some(t=>String(t??``).toLowerCase().includes(e))):p},[p,N]),U=[{title:`Order`,key:`order`,width:76,render:(e,t)=>(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{size:`small`,type:`text`,disabled:t._actionIndex===0,onClick:()=>ae(t._actionIndex,-1),children:`↑`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,disabled:t._actionIndex===p.length-1,onClick:()=>ae(t._actionIndex,1),children:`↓`})]})},{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(sw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(sw,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(s.Tag,{color:`blue`,children:t.actionType}),(0,l.jsx)(sw,{type:`secondary`,ellipsis:{tooltip:!0},children:t.actionType===`group`?`${(t.children??[]).length} child action${(t.children??[]).length===1?``:`s`}`:t.popupKey||t.routeTemplate||t.apiPath||t.copyField||t.documentField||`No destination`})]})},{title:`Visible in`,key:`visibility`,width:210,render:(e,t)=>(0,l.jsxs)(s.Space,{size:[4,4],wrap:!0,children:[t.showInList&&(0,l.jsx)(s.Tag,{color:`green`,children:`List`}),(t.showInDetail??t.showInList)&&(0,l.jsxs)(s.Tag,{color:`purple`,children:[`Detail · `,t.detailPlacement||`more`]}),t.allowMultiple&&(0,l.jsx)(s.Tag,{children:`Multi-select`}),t.danger&&(0,l.jsx)(s.Tag,{color:`red`,children:`Destructive`}),!t.showInList&&!(t.showInDetail??t.showInList)&&(0,l.jsx)(sw,{type:`secondary`,children:`Nowhere`})]})},{title:`Access`,key:`access`,width:170,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(sw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(sw,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:110,fixed:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{children:[t.actionType===`group`&&(0,l.jsx)(s.Tooltip,{title:`Add child action`,children:(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>ne(t.key)})}),(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>re(t)})}),(0,l.jsx)(s.Popconfirm,{title:`Remove this action?`,onConfirm:()=>H(t.key),okText:`Remove`,okType:`danger`,children:(0,l.jsx)(s.Tooltip,{title:`Remove`,children:(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}],le=e=>[{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(sw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(sw,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(s.Tag,{color:`blue`,children:t.actionType}),(0,l.jsx)(sw,{type:`secondary`,ellipsis:{tooltip:!0},children:t.popupKey||t.routeTemplate||t.apiPath||t.copyField||t.documentField||`No destination`})]})},{title:`Access`,key:`access`,width:170,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(sw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(sw,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:80,fixed:`right`,render:(t,n)=>(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>re(n,e)})}),(0,l.jsx)(s.Popconfirm,{title:`Remove this child action?`,onConfirm:()=>H(n.key,e),okText:`Remove`,okType:`danger`,children:(0,l.jsx)(s.Tooltip,{title:`Remove`,children:(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}];return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ToolOutlined,{}),title:`Actions`,extra:(0,l.jsx)(s.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>oe(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>oe(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all actions`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>oe(`reset`)}]},children:(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.MoreOutlined,{}),children:`Workspace defaults`})}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(sw,{type:`secondary`,children:`Build one action once, then control its List and Detail placement, permissions, tabs, and multi-select behaviour.`})]}),(0,l.jsx)(Z,{styles:{body:{padding:`14px 18px`}},children:(0,l.jsxs)(`div`,{className:`admin-config-context`,children:[(0,l.jsxs)(`div`,{className:`admin-config-context-copy`,children:[(0,l.jsx)(sw,{strong:!0,children:`Configuration context`}),(0,l.jsx)(sw,{type:`secondary`,children:`Choose a module. This is the default action library for all roles — per-role overrides are set in User Types → Config → Actions.`})]}),(0,l.jsxs)(`div`,{className:`admin-config-context-controls`,children:[(0,l.jsxs)(`label`,{className:`admin-config-control`,children:[(0,l.jsx)(sw,{type:`secondary`,style:{display:`block`,marginBottom:4,fontSize:12},children:`Module`}),(0,l.jsx)(s.Select,{showSearch:!0,optionFilterProp:`label`,style:{width:220},mode:`tags`,maxCount:1,placeholder:`Pick or type a module key`,value:r?[r]:[],onChange:e=>i(String(e[e.length-1]??``).trim()),options:e.map(e=>({value:e.value,label:e.label===e.value?e.value:`${e.label} (${e.value})`}))})]}),(0,l.jsx)(`div`,{className:`admin-config-reload`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:z,loading:_,children:`Reload`})})]})]})}),x&&(0,l.jsx)(s.Alert,{type:`error`,message:x,showIcon:!0}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ToolOutlined,{}),title:(0,l.jsxs)(s.Space,{wrap:!0,children:[(0,l.jsxs)(`span`,{children:[p.length,` configured action`,p.length===1?``:`s`]}),d?(0,l.jsx)(s.Tag,{color:`green`,children:`Default config loaded (All Roles)`}):(0,l.jsx)(s.Tag,{color:`orange`,children:`No config — will create on Save`})]}),extra:(0,l.jsxs)(s.Space,{wrap:!0,children:[d&&(0,l.jsx)(s.Popconfirm,{title:`Delete this entire config?`,onConfirm:V,okText:`Delete`,okType:`danger`,children:(0,l.jsx)(s.Button,{danger:!0,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{}),children:`Delete Config`})}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>ne(),children:`New action`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:y,disabled:!h,onClick:B,children:`Save Config`})]}),children:[(0,l.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,l.jsx)(s.Input,{allowClear:!0,prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search actions`,value:N,onChange:e=>P(e.target.value)}),h&&(0,l.jsx)(sw,{type:`warning`,children:`Unsaved changes`})]}),(0,l.jsx)(s.Spin,{spinning:_,children:(0,l.jsx)(s.Table,{dataSource:ce.map((e,t)=>({...e,_actionIndex:p.indexOf(e),_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:U,pagination:!1,size:`small`,className:`fg-table admin-config-table`,scroll:{x:820},locale:{emptyText:`No actions configured. Click "Add Action" to start.`},expandable:{rowExpandable:e=>e.actionType===`group`,expandedRowRender:e=>(0,l.jsx)(s.Table,{dataSource:(e.children??[]).map((e,t)=>({...e,_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:le(e.key),pagination:!1,size:`small`,className:`fg-table admin-config-table`,locale:{emptyText:`No child actions yet. Use the + button on this row to add one (e.g. Tag To Job, Send Mail, Add Notes).`}})}})})]}),(0,l.jsx)(hw,{open:C,initial:T,isChild:!!ee,popupForms:D,templateOptions:k,permissionModules:F,permissionActions:L,onClose:()=>w(!1),onSave:ie}),(0,l.jsx)(cS,{open:!!j,scope:`rowActions`,action:j?.action,title:j?.title,description:j?.description,confirmLabel:j?.confirmLabel,danger:j?.danger,onCancel:()=>M(null),onVerified:se})]})}var{Text:_w,Title:vw}=s.Typography,yw=[{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`},{value:`notEmpty`,label:`is not empty`},{value:`contains`,label:`contains`},{value:`includes`,label:`list includes (exact)`},{value:`notIncludes`,label:`list does not include (exact)`},{value:`fieldEq`,label:`field = field`},{value:`scope`,label:`view scope`}],bw=[{value:`{currentUserId}`,label:`{currentUserId} — the signed-in user`}],xw=[{value:`myJobs`,label:`My Jobs`},{value:`allJobs`,label:`All Jobs`}],Sw=[`eq`,`ne`,`contains`,`includes`,`notIncludes`],Cw=`scope`,ww=`fieldEq`,Tw=[{name:`Fulfilled jobs — block sourcing`,description:`When a job status is fulfilled and has no recruiters, hide source & quick-submit buttons.`,conditions:[{field:`jobRecruitmentStatus`,operator:`eq`,value:`fulfilled`,compareField:``},{field:`recruiters`,operator:`isEmpty`,value:``,compareField:``}],blockedActions:[`sourceCandidates`,`quickSubmit`],isActive:!0},{name:`All Jobs scope — restrict actions`,description:`When viewing All Jobs, hide sourcing, quick-submit, change-status, notes and share.`,conditions:[{field:``,operator:`scope`,value:`allJobs`,compareField:``}],blockedActions:[`sourceCandidates`,`quickSubmit`,`changeStatus`,`addNotes`,`share`],isActive:!0},{name:`Target submission reached — block sourcing`,description:`When targetSubmission equals submissionCount, no more sourcing is needed.`,conditions:[{field:`targetSubmission`,operator:`fieldEq`,value:``,compareField:`submissionCount`}],blockedActions:[`sourceCandidates`,`quickSubmit`],isActive:!0}],Ew=()=>({field:``,operator:`eq`,value:``,compareField:``}),Dw=()=>({name:``,description:``,conditions:[Ew()],blockedActions:[],disabledActions:[],allowedActions:[],isActive:!0});function Ow(e){return yw.find(t=>t.value===e)?.label??e}function kw(e){return e.operator===Cw?`scope = ${e.value}`:e.operator===ww?`${e.field} = field:${e.compareField}`:[`isEmpty`,`notEmpty`].includes(e.operator)?`${e.field} ${Ow(e.operator)}`:`${e.field} ${Ow(e.operator)} "${e.value}"`}function Aw(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(``),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(null),[y,b]=(0,o.useState)(Dw()),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)(!1),[T,E]=(0,o.useState)([]),[D,O]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=!1;return queueMicrotask(()=>{i(!0),n.ur().then(n=>{if(e)return;let r=gx(n);t(r),u(e=>r.some(t=>t.value===e)?e:r[0]?.value??``)}).catch(()=>{e||(t([]),u(``))}).finally(()=>{e||i(!1)})}),()=>{e=!0}},[]);function k(e){m(!0),n.Pr(e).then(e=>f(Array.isArray(e)?e:[])).catch(()=>f([])).finally(()=>m(!1))}function A(e){n.Rr(e).then(e=>{let t=(Array.isArray(e)?e:[]).map(e=>({value:e.field??e.fieldKey??e.key??e.name,label:`${e.label??e.fieldName??e.name} (${e.field??e.fieldKey??e.key??e.name})`})).filter(e=>e.value);E(t)}).catch(()=>E([]))}function j(e){n.Wr(e).then(e=>{let t=new Set;(Array.isArray(e)?e:[]).forEach(e=>{(e.rowActions??[]).forEach(e=>{e.key&&t.add(e.key)})}),O([...t].map(e=>({value:e,label:e})))}).catch(()=>O([]))}(0,o.useEffect)(()=>{queueMicrotask(()=>{if(!a){f([]),E([]),O([]);return}k(a),A(a),j(a)})},[a]);function M(){v(null),b(Dw()),g(!0)}function N(e){v(e),b({name:e.name??``,description:e.description??``,conditions:e.conditions?.length?e.conditions.map(e=>({...e})):[Ew()],blockedActions:e.blockedActions??[],disabledActions:e.disabledActions??[],allowedActions:e.allowedActions??[],isActive:e.isActive??!0}),g(!0)}async function P(){if(y.name.trim()){S(!0);try{_?(await n.fi(_.id,y),s.message.success(`Rule updated`)):(await n.Xn({...y,module:a}),s.message.success(`Rule created`)),g(!1),k(a)}catch(e){s.message.error(e.message)}finally{S(!1)}}}async function F(e){try{await n.ar(e.id),s.message.success(`Rule deleted`)}catch(e){s.message.error(e.message)}k(a)}async function I(){w(!0);try{for(let e of Tw)await n.Xn({...e,module:a});s.message.success(`Default job rules created`),k(a)}catch(e){s.message.error(e.message)}finally{w(!1)}}function L(e,t){b(n=>({...n,conditions:n.conditions.map((n,r)=>r===e?{...n,...t}:n)}))}function R(){b(e=>({...e,conditions:[...e.conditions,Ew()]}))}function z(e){b(t=>({...t,conditions:t.conditions.filter((t,n)=>n!==e)}))}return(0,l.jsxs)(`div`,{style:{padding:`24px 0`},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,marginBottom:8,flexWrap:`wrap`},children:[(0,l.jsx)(vw,{level:5,style:{margin:0},children:`Action Rules`}),(0,l.jsx)(s.Select,{options:e,value:a,loading:r,placeholder:`Select module`,onChange:u,style:{width:200}}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.PlusOutlined,{}),type:`primary`,disabled:!a,onClick:M,children:`Add Rule`}),(a===`job`||a===`jobs`)&&(0,l.jsx)(s.Tooltip,{title:`Create the 3 standard job rules that replace the hardcoded backend logic`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ThunderboltOutlined,{}),loading:C,onClick:I,children:`Seed Job Defaults`})})]}),(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16,fontSize:12},message:(0,l.jsxs)(`span`,{children:[`Rules are evaluated `,(0,l.jsx)(`b`,{children:`per row`}),` in the list view using the record's own field values. When `,(0,l.jsx)(`b`,{children:`all conditions`}),` of a rule match, the listed action buttons are hidden for that row. The `,(0,l.jsx)(`b`,{children:`key`}),` of each blocked action must match what is set in `,(0,l.jsx)(`b`,{children:`Row Actions`}),` config.`]})}),(0,l.jsx)(s.Table,{columns:[{title:`Rule Name`,dataIndex:`name`,key:`name`,width:200,render:(e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsx)(_w,{strong:!0,children:e}),t.description?(0,l.jsx)(`div`,{children:(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:11},children:t.description})}):null]})},{title:`Conditions (ALL must match)`,key:`conditions`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,direction:`vertical`,children:(t.conditions??[]).map((e,t)=>(0,l.jsx)(s.Tag,{style:{fontFamily:`monospace`,fontSize:11,margin:0},children:kw(e)},t))})},{title:`Blocked Row Actions`,key:`blockedActions`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(t.blockedActions??[]).map(e=>(0,l.jsx)(s.Tag,{color:`volcano`,children:e},e))})},{title:`Disabled Row Actions`,key:`disabledActions`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(t.disabledActions??[]).map(e=>(0,l.jsx)(s.Tag,{color:`gold`,children:e},e))})},{title:`Only These Allowed`,key:`allowedActions`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(t.allowedActions??[]).map(e=>(0,l.jsx)(s.Tag,{color:`green`,children:e},e))})},{title:`Active`,dataIndex:`isActive`,key:`isActive`,width:70,render:e=>(0,l.jsx)(s.Tag,{color:e?`green`:`default`,children:e?`On`:`Off`})},{title:``,key:`act`,width:80,render:(e,t)=>(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.EditOutlined,{}),size:`small`,type:`text`,onClick:()=>N(t)})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this rule?`,onConfirm:()=>F(t),children:(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),size:`small`,type:`text`})})})]})}],dataSource:d,loading:p,rowKey:`id`,size:`small`,pagination:!1,locale:{emptyText:a?`No rules yet. Click "Add Rule" to get started.`:`No modules found. Configure modules first.`}}),(0,l.jsx)(s.Drawer,{open:h,title:_?`Edit: ${_.name}`:`Add Action Rule`,width:620,onClose:()=>g(!1),footer:(0,l.jsxs)(s.Space,{style:{float:`right`},children:[(0,l.jsx)(s.Button,{onClick:()=>g(!1),children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:x,onClick:P,children:`Save Rule`})]}),children:(0,l.jsxs)(s.Form,{layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{label:`Rule Name`,required:!0,children:(0,l.jsx)(s.Input,{value:y.name,placeholder:`e.g. Fulfilled jobs — block sourcing`,onChange:e=>b(t=>({...t,name:e.target.value}))})}),(0,l.jsx)(s.Form.Item,{label:`Description`,children:(0,l.jsx)(s.Input.TextArea,{rows:2,value:y.description,placeholder:`Explain when this rule applies`,onChange:e=>b(t=>({...t,description:e.target.value}))})}),(0,l.jsx)(s.Form.Item,{label:`Active`,children:(0,l.jsx)(s.Switch,{checked:y.isActive,onChange:e=>b(t=>({...t,isActive:e}))})}),(0,l.jsxs)(s.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Conditions `,(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:12},children:`(ALL must match for the rule to fire)`})]}),y.conditions.map((e,t)=>(0,l.jsxs)(`div`,{style:{background:`#fafafa`,border:`1px solid #f0f0f0`,borderRadius:6,padding:`10px 12px`,marginBottom:8},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`,flexWrap:`wrap`},children:[(0,l.jsx)(s.Form.Item,{label:`Operator`,style:{marginBottom:0,minWidth:140},children:(0,l.jsx)(s.Select,{options:yw,value:e.operator,style:{width:140},onChange:e=>L(t,{operator:e,value:``,compareField:``})})}),e.operator!==Cw&&(0,l.jsxs)(s.Form.Item,{label:`Record Field`,style:{marginBottom:0,flex:1,minWidth:180},children:[(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.field?[e.field]:[],options:T,style:{width:`100%`},placeholder:`Select or type field name`,onChange:e=>L(t,{field:e[e.length-1]??``}),filterOption:(e,t)=>(t?.label??t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`Field from the record (e.g. `,(0,l.jsx)(`code`,{children:`jobRecruitmentStatus`}),`, `,(0,l.jsx)(`code`,{children:`recruiters`}),`)`]})]}),Sw.includes(e.operator)&&(0,l.jsxs)(s.Form.Item,{label:`Value`,style:{marginBottom:0,minWidth:180},children:[(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.value?[e.value]:[],options:bw,style:{width:200},placeholder:`e.g. "fulfilled"`,onChange:e=>L(t,{value:e[e.length-1]??``}),filterOption:(e,t)=>(t?.label??t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`Type a literal, or pick `,(0,l.jsx)(`code`,{children:`{currentUserId}`}),` for the signed-in user.`]})]}),e.operator===Cw&&(0,l.jsxs)(s.Form.Item,{label:`Scope Value`,style:{marginBottom:0,minWidth:140},children:[(0,l.jsx)(s.Select,{options:xw,value:e.value||void 0,style:{width:150},placeholder:`Select scope`,onChange:e=>L(t,{value:e})}),(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:11},children:`Current view tab (myJobs / allJobs)`})]}),e.operator===ww&&(0,l.jsxs)(s.Form.Item,{label:`Compare To Field`,style:{marginBottom:0,minWidth:160},children:[(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.compareField?[e.compareField]:[],options:T,style:{width:170},placeholder:`Select or type field`,onChange:e=>L(t,{compareField:e[e.length-1]??``}),filterOption:(e,t)=>(t?.label??t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`e.g. `,(0,l.jsx)(`code`,{children:`submissionCount`})]})]}),(0,l.jsx)(`div`,{style:{paddingTop:22},children:(0,l.jsx)(s.Button,{danger:!0,disabled:y.conditions.length<=1,icon:(0,l.jsx)(c.DeleteOutlined,{}),size:`small`,type:`text`,onClick:()=>z(t)})})]}),(0,l.jsx)(`div`,{style:{marginTop:6},children:(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`Preview: `,(0,l.jsx)(`code`,{style:{color:`#1677ff`},children:kw(e)})]})})]},t)),(0,l.jsx)(s.Button,{size:`small`,style:{marginBottom:16},onClick:R,children:`+ Add Condition`}),(0,l.jsxs)(s.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Blocked Row Actions`,(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(hidden when this rule fires)`})]}),(0,l.jsxs)(s.Form.Item,{children:[(0,l.jsx)(s.Select,{mode:`tags`,style:{width:`100%`},value:y.blockedActions,options:D,placeholder:`Select or type action key (e.g. sourceCandidates, quickSubmit)`,onChange:e=>b(t=>({...t,blockedActions:e})),filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`Must match the `,(0,l.jsx)(`b`,{children:`key`}),` of a Row Action (configured in Admin → Row Actions). Common job keys: `,(0,l.jsx)(`code`,{children:`sourceCandidates`}),`, `,(0,l.jsx)(`code`,{children:`quickSubmit`}),`,`,` `,(0,l.jsx)(`code`,{children:`changeStatus`}),`, `,(0,l.jsx)(`code`,{children:`share`}),`, `,(0,l.jsx)(`code`,{children:`addNotes`}),`, `,(0,l.jsx)(`code`,{children:`assign`}),`.`]})]}),(0,l.jsxs)(s.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Disabled Row Actions`,(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(stay visible, greyed out, when this rule fires)`})]}),(0,l.jsxs)(s.Form.Item,{children:[(0,l.jsx)(s.Select,{mode:`tags`,style:{width:`100%`},value:y.disabledActions,options:D,placeholder:`Select or type action key (e.g. approveSubmission, rejectSubmission)`,onChange:e=>b(t=>({...t,disabledActions:e})),filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`Unlike Blocked, a disabled action keeps its normal spot and label — it's just unclickable, with this rule's `,(0,l.jsx)(`b`,{children:`Description`}),` shown as the reason on hover. Use this when the user should still see the action exists (e.g. Approve/Reject while awaiting a resubmission) instead of it disappearing.`]})]}),(0,l.jsxs)(s.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Only These Actions Allowed`,(0,l.jsx)(_w,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(everything else is hidden when this rule fires)`})]}),(0,l.jsxs)(s.Form.Item,{children:[(0,l.jsx)(s.Select,{mode:`tags`,style:{width:`100%`},value:y.allowedActions,options:D,placeholder:`Leave empty unless you want an allow-list (e.g. delete)`,onChange:e=>b(t=>({...t,allowedActions:e})),filterOption:(e,t)=>(t?.value??``).toLowerCase().includes(e.toLowerCase())}),(0,l.jsxs)(_w,{type:`secondary`,style:{fontSize:11},children:[`The `,(0,l.jsx)(`b`,{children:`inverse`}),` of Blocked. Use it for "when this happens, only these remain" — e.g. an inactive job where only `,(0,l.jsx)(`code`,{children:`delete`}),`should show. Prefer it over listing every other action in Blocked: an allow-list keeps working when a new action is added later, whereas a blocked list silently lets the new one through on exactly the records the rule exists to lock down.`,(0,l.jsx)(`br`,{}),`Leave it `,(0,l.jsx)(`b`,{children:`empty`}),` for any normal rule — an allow-list that names nothing would hide everything.`]})]})]})})]})}function jw(){return(0,l.jsx)(s.Tabs,{defaultActiveKey:`actions`,className:`admin-config-tabs`,destroyOnHidden:!1,items:[{key:`actions`,label:`Action library`,icon:(0,l.jsx)(c.ThunderboltOutlined,{}),children:(0,l.jsx)(gw,{})},{key:`rules`,label:`Visibility rules`,icon:(0,l.jsx)(c.ApartmentOutlined,{}),children:(0,l.jsx)(Aw,{})}]})}var{Text:Mw}=s.Typography,Nw={name:``,module:``,action:``,clientId:``,description:``,toMail:[],ccMail:[],bccMail:[],subject:``,body:``,isActive:!0},Pw=e=>e?._id??e?.id;function Fw(e){return String(e??``).trim().replace(/^{{\s*/,``).replace(/\s*}}$/,``).trim().replace(/^\./,``).trim()}function Iw(...e){let t=new Set;return e.forEach(e=>{let n=/{{\.?([\w.]+)}}/g,r;for(;(r=n.exec(String(e??``)))!==null;)t.add(r[1])}),t}var Lw=[{key:`proposedRate`,value:`proposedRate.candidateProposedRate`,label:`Proposed Rate (Latest)`,type:`number`,arrayMode:`last`},{key:`jobBillRate`,value:`clientBudget.clientBudgetStart`,label:`Job Bill Rate`,type:`number`}];function Rw(e){return String(e??``).trim().toLowerCase().replace(/[^a-z0-9]/g,``).replace(/s$/,``)===`submission`}function zw({open:e,templateId:t,modules:r,clients:i,onClose:a,onSaved:c}){let[u]=s.Form.useForm(),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)([]),[x,S]=(0,o.useState)({});async function C(e){if(!e){v([]);return}let t=await n.Wr(e).catch(()=>[]),r=new Map;t.forEach(e=>(e.rowActions??[]).forEach(e=>{e.key&&r.set(e.key,e.label||e.key)})),v([...r].map(([e,t])=>({value:e,label:t})))}async function w(){let e=await Promise.all((r??[]).map(async e=>{let t=e.value,r=(await n.Rr(t).catch(()=>[])).map(n=>{let r=n.value??n.field??n.fieldKey??n.key??n.name,i=n.path??n.value??n.field??n.fieldKey??n.key??n.name;return{key:Fw(r),value:Fw(i),label:n.label??n.fieldName??n.name??n.value,moduleName:t,moduleLabel:e.label??t,type:String(n.type??``).trim().toLowerCase(),arrayMode:n.arrayMode??n.placeholderArrayMode??``}}).filter(e=>e.key&&e.value);if(!Rw(t))return r;let i=new Set(Lw.map(e=>e.key)),a=Lw.map(n=>({...n,moduleName:t,moduleLabel:e.label??t}));return[...r.filter(e=>!i.has(e.key)),...a]}));b(e.flat())}(0,o.useEffect)(()=>{if(!e)return;let n=!1;return queueMicrotask(()=>{g(!0),w().catch(()=>{}),(t?qC(t):Promise.resolve(Nw)).then(e=>{if(n)return;let t={...Nw,...e,action:e?.action?[e.action]:[],clientId:e?.clientIdStr||(typeof e?.clientId==`string`?e.clientId:``)};u.setFieldsValue(t),f(t.body||``);let r={};(e?.placeholders??e?.placeHolder??[]).forEach(e=>{(e?.holders??[]).forEach(t=>{if(t?.key){let n=Fw(t.key);r[n]={moduleName:e.moduleName,value:Fw(t.value),type:t.type??``,arrayMode:t.arrayMode??``}}})}),S(r),C(t.module)}).catch(e=>s.message.error(e?.message||`Could not load template`)).finally(()=>{n||g(!1)})}),()=>{n=!0}},[u,e,t,r]);function T(e){let t=`{{.${e.key}}}`;S(t=>({...t,[e.key]:{moduleName:e.moduleName,value:e.value,type:e.type,arrayMode:e.arrayMode??``}})),f(e=>`${e}${e?` `:``}${t}`),s.message.success(`Inserted ${t} from ${e.moduleLabel||e.moduleName}`)}function E(e,t){let n=x[e];if(n?.moduleName&&n?.value)return n;let r=y.filter(t=>t.key===e),i=r.find(e=>e.moduleName===t)??r[0];return i?{moduleName:i.moduleName,value:i.value,type:i.type,arrayMode:i.arrayMode??``}:null}async function D(){try{let e=await u.validateFields();if(!d.trim()){s.message.error(`Message body is required`);return}m(!0);let n=Iw(e.subject,d),r=new Map;n.forEach(t=>{let n=E(t,e.module);n&&(r.has(n.moduleName)||r.set(n.moduleName,[]),r.get(n.moduleName).push({key:t,value:n.value,...n.type?{type:n.type}:{},...n.arrayMode?{arrayMode:n.arrayMode}:{}}))});let i=[...r].map(([e,t])=>({moduleName:e,holders:t})),a={...e,action:Array.isArray(e.action)?e.action.at(-1):e.action,body:d,placeholders:i};a.clientId||delete a.clientId,t?await YC(t,a):await JC(a),s.message.success(t?`Template updated`:`Template created`),c()}catch(e){e?.errorFields||s.message.error(e?.message||`Could not save template`)}finally{m(!1)}}let O=(0,o.useMemo)(()=>{let e=new Map;return y.forEach(t=>{e.has(t.moduleName)||e.set(t.moduleName,{label:t.moduleLabel,fields:[]}),e.get(t.moduleName).fields.push(t)}),[...e].map(([e,t])=>({moduleName:e,...t}))},[y]);return(0,l.jsx)(s.Drawer,{open:e,onClose:a,width:`min(920px, 96vw)`,title:t?`Edit email template`:`New email template`,destroyOnClose:!0,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{onClick:a,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:p,onClick:D,children:t?`Update`:`Create`})]}),children:(0,l.jsxs)(s.Form,{form:u,layout:`vertical`,initialValues:Nw,disabled:h,className:`template-editor-form`,children:[(0,l.jsxs)(`div`,{className:`template-editor-grid`,children:[(0,l.jsx)(s.Form.Item,{name:`name`,label:`Template name`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`Candidate introduction`})}),(0,l.jsx)(s.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0}],children:(0,l.jsx)(s.Select,{showSearch:!0,optionFilterProp:`label`,options:r,onChange:e=>{u.setFieldValue(`action`,``),C(e)}})}),(0,l.jsx)(s.Form.Item,{name:`action`,label:`Action`,rules:[{required:!0}],tooltip:`Pick a Row Action, or TYPE a system action key. Not every email comes from a row action — the credentials mail sent when an employer's recruiters are provisioned uses "accountCreated", which is raised by a workflow and so never appears in this list.`,children:(0,l.jsx)(s.Select,{showSearch:!0,mode:`tags`,maxCount:1,optionFilterProp:`label`,options:_,placeholder:`Select a row action, or type a system key (e.g. accountCreated)`})}),(0,l.jsx)(s.Form.Item,{name:`clientId`,label:`Client scope (optional)`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`Available to every client`})})]}),(0,l.jsx)(s.Form.Item,{name:`description`,label:`Description`,children:(0,l.jsx)(s.Input.TextArea,{rows:2})}),(0,l.jsxs)(`div`,{className:`template-editor-grid template-editor-grid--three`,children:[(0,l.jsx)(s.Form.Item,{name:`toMail`,label:`Default To`,children:(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,l.jsx)(s.Form.Item,{name:`ccMail`,label:`Default Cc`,children:(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,l.jsx)(s.Form.Item,{name:`bccMail`,label:`Default Bcc`,children:(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})})]}),(0,l.jsx)(s.Form.Item,{name:`subject`,label:`Subject`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`Email subject`})}),(0,l.jsx)(s.Form.Item,{label:`Message`,required:!0,children:(0,l.jsx)(n.Tn,{value:d,onChange:f,placeholder:`Write the reusable email body…`})}),(0,l.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,l.jsx)(Mw,{strong:!0,children:`All module placeholders`}),(0,l.jsx)(Mw,{type:`secondary`,children:`Placeholders from every configured module are available. Click or drag one into the message. Document placeholders (📎) are attached to the outgoing email automatically.`}),O.map(e=>(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)(Mw,{type:`secondary`,strong:!0,children:e.label||e.moduleName}),(0,l.jsx)(`div`,{className:`template-placeholder-list`,children:e.fields.map(t=>(0,l.jsx)(s.Tooltip,{title:`${t.label||t.key} · ${t.value}${t.arrayMode===`last`?` · uses last array item`:``}${[`file`,`document`,`attachment`].includes(t.type)?` · attaches document to email`:``}`,children:(0,l.jsx)(s.Tag,{color:[`file`,`document`,`attachment`].includes(t.type)?`purple`:`blue`,draggable:!0,style:{cursor:`grab`},onDragStart:e=>{let n=`{{.${t.key}}}`;e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.setData(`text/html`,n),e.dataTransfer.effectAllowed=`copy`,S(e=>({...e,[t.key]:{moduleName:t.moduleName,value:t.value,type:t.type,arrayMode:t.arrayMode??``}}))},onClick:()=>T(t),children:[`file`,`document`,`attachment`].includes(t.type)?`📎 {{.${t.key}}}`:`${t.arrayMode===`last`?`↧ `:``}{{.${t.key}}}`})},`${e.moduleName}:${t.key}:${t.value}`))})]},e.moduleName)),!O.length&&(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No module fields available`})]}),(0,l.jsx)(s.Form.Item,{name:`isActive`,label:`Available in mail composer`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})]})})}function Bw(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(1),[h,g]=(0,o.useState)(20),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)([]),[x,S]=(0,o.useState)(null),[C,w]=(0,o.useState)(!1),T=(0,o.useMemo)(()=>_.map(e=>({value:e.key??e.module??e.value,label:e.label??e.name??e.key??e.module??e.value})).filter(e=>e.value),[_]);function E(e=p,n=h,r=d){u(!0),KC({offset:(e-1)*n,limit:n,search:r}).then(({items:e,totalCount:n})=>{t(e),i(n)}).catch(e=>s.message.error(e?.message||`Could not load templates`)).finally(()=>u(!1))}(0,o.useEffect)(()=>{queueMicrotask(()=>{E(1,h,``)})},[]),(0,o.useEffect)(()=>{Promise.all([n.yr(),n.dr({limit:200})]).then(([e,t])=>{v(gx(e).map(({value:e,label:t})=>({key:e,label:t}))),b(t)}).catch(()=>{})},[]);async function D(e,n){let r=Pw(e);try{await YC(r,{...e,isActive:n}),t(e=>e.map(e=>Pw(e)===r?{...e,isActive:n}:e))}catch(e){s.message.error(e?.message||`Could not update status`)}}async function O(e){try{await XC(e),s.message.success(`Template deleted`),E(1),m(1)}catch(e){s.message.error(e?.message||`Could not delete template`)}}let k=[{title:`Template`,key:`template`,width:300,ellipsis:!0,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell templates-primary-cell`,children:[(0,l.jsx)(Mw,{strong:!0,ellipsis:{tooltip:t.name},children:t.name}),(0,l.jsx)(Mw,{type:`secondary`,ellipsis:{tooltip:t.description||t.subject},children:t.description||t.subject||`No description`})]})},{title:`Module`,dataIndex:`module`,key:`module`,width:140,ellipsis:!0,responsive:[`sm`],render:e=>e?(0,l.jsx)(s.Tag,{color:`blue`,children:e}):`—`},{title:`Action`,dataIndex:`action`,key:`action`,width:180,ellipsis:!0,responsive:[`md`],render:e=>e?(0,l.jsx)(Mw,{code:!0,ellipsis:{tooltip:e},children:e}):`—`},{title:`Recipients`,key:`recipients`,width:130,responsive:[`lg`],render:(e,t)=>`${(t.toMail?.length??0)+(t.ccMail?.length??0)+(t.bccMail?.length??0)} defaults`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:e,onChange:e=>D(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{S(Pw(t)),w(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this template?`,onConfirm:()=>O(Pw(t)),children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],A=y.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e._id})).filter(e=>e.value);return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.MailOutlined,{}),title:`Email templates`,extra:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{S(null),w(!0)},children:`New template`}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(Mw,{type:`secondary`,children:`Create reusable, module-aware email content. Modules, actions and placeholders are read from DB configuration.`})]}),(0,l.jsxs)(Z,{title:`${r} template${r===1?``:`s`}`,extra:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>E(),children:`Reload`}),children:[(0,l.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,l.jsx)(s.Input,{allowClear:!0,prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search templates`,value:d,onChange:e=>{let t=e.target.value;f(t),m(1),E(1,h,t)}})}),(0,l.jsx)(`div`,{className:`templates-table-viewport`,children:(0,l.jsx)(s.Table,{rowKey:Pw,columns:k,dataSource:e,loading:a,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:914,y:`calc(100vh - 410px)`},pagination:{current:p,pageSize:h,total:r,showSizeChanger:!0,responsive:!0,onChange:(e,t)=>{m(e),g(t),E(e,t)}}})})]}),(0,l.jsx)(zw,{open:C,templateId:x,modules:T,clients:A,onClose:()=>w(!1),onSaved:()=>{w(!1),E()}})]})}function Vw({open:e,signatureId:t,onClose:r,onSaved:i}){let[a,c]=(0,o.useState)(``),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)({module:`userSignature`,keys:[]}),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1);(0,o.useEffect)(()=>{if(!e)return;let n=!1;return queueMicrotask(()=>{_(!0),Promise.all([t?tw(t):Promise.resolve(null),$C()]).then(([e,t])=>{n||(c(e?.signatureName??``),d(e?.signature??``),p(t??{module:`userSignature`,keys:[]}))}).catch(()=>{n||s.message.error(`Could not load signature details`)}).finally(()=>{n||_(!1)})}),()=>{n=!0}},[e,t]);function v(e){let t=`{{.${e.key}}}`;d(e=>`${e}${e?` `:``}${t}`)}async function y(){if(!a.trim())return s.message.error(`Signature name is required`);if(!u.trim())return s.message.error(`Signature content is required`);h(!0);try{let e=Iw(u),n=(f.keys??[]).filter(t=>e.has(t.key)).map(e=>({key:e.key,value:e.value})),r={signatureId:t,signatureName:a,signature:u,signatureLogoPath:``,placeHolder:n.length?[{moduleName:f.module||`userSignature`,holders:n}]:[]};t?await rw(r):await nw(r),s.message.success(t?`Signature updated`:`Signature created`),i()}catch(e){s.message.error(e?.message||`Could not save signature`)}finally{h(!1)}}let b=e=>{let t=String(e?.key??``).trim().toLowerCase(),n=String(e?.value??``).trim().toLowerCase();return[`role_id`,`role_name`,`user_role`,`reporting_manager`].includes(t)||[`role`,`role_name`,`role id`,`role_id`,`reporting_manager`,`reporting manager`].includes(n)},x=(f.keys??[]).filter(e=>!b(e)),S=(f.keys??[]).filter(b),C=e=>(0,l.jsx)(`div`,{className:`template-placeholder-list`,children:e.map(e=>(0,l.jsx)(s.Tooltip,{title:`Mongo field: ${e.value}`,children:(0,l.jsx)(s.Tag,{color:`blue`,style:{cursor:`pointer`},onClick:()=>v(e),children:`{{.${e.key}}}`})},e.key))});return(0,l.jsx)(s.Drawer,{open:e,onClose:r,width:`min(820px, 96vw)`,title:t?`Edit signature`:`New signature`,destroyOnClose:!0,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:m,onClick:y,children:t?`Update`:`Create`})]}),children:(0,l.jsxs)(s.Form,{layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{label:`Signature name`,required:!0,children:(0,l.jsx)(s.Input,{value:a,onChange:e=>c(e.target.value)})}),(0,l.jsx)(s.Form.Item,{label:`Signature content`,required:!0,children:(0,l.jsx)(n.Tn,{value:u,onChange:d,placeholder:`Create the reusable signature…`})}),(0,l.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,l.jsx)(Mw,{strong:!0,children:`Signature placeholders`}),(0,l.jsx)(Mw,{type:`secondary`,children:`Click a placeholder to add it to the signature. Values resolve from MongoDB users and roles when mail is generated.`}),g?(0,l.jsx)(Mw,{type:`secondary`,children:`Loading placeholders…`}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)(Mw,{strong:!0,children:`User details`}),C(x)]}),(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)(Mw,{strong:!0,children:`Role details`}),C(S)]}),!f.keys?.length&&(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No signature placeholders available`})]})]})]})})}function Hw(){let[e,t]=(0,o.useState)([]),[n,r]=(0,o.useState)(0),[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(1),[m,h]=(0,o.useState)(20),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(null);function b(e=f,n=m,i=u){a(!0),ew({offset:(e-1)*n,limit:n,search:i}).then(({items:e,totalCount:n})=>{t(e),r(n)}).catch(()=>s.message.error(`Could not load signatures`)).finally(()=>a(!1))}(0,o.useEffect)(()=>{queueMicrotask(()=>{b(1,m,``)})},[]);async function x(e,n){try{await aw(e.signatureId,n),t(t=>t.map(t=>t.signatureId===e.signatureId?{...t,isActive:n}:t))}catch{s.message.error(`Could not update status`)}}async function S(e){try{await iw(e),s.message.success(`Signature deleted`),p(1),b(1)}catch{s.message.error(`Could not delete signature`)}}return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsx)(Z,{icon:(0,l.jsx)(c.MailOutlined,{}),title:`Signature templates`,extra:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{y(null),_(!0)},children:`New signature`}),children:(0,l.jsx)(Mw,{type:`secondary`,children:`Existing company and user signatures from the shared DB.`})}),(0,l.jsxs)(Z,{title:`${n} signature${n===1?``:`s`}`,children:[(0,l.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,l.jsx)(s.Input,{allowClear:!0,prefix:(0,l.jsx)(c.SearchOutlined,{}),value:u,placeholder:`Search signatures`,onChange:e=>{d(e.target.value),p(1),b(1,m,e.target.value)}})}),(0,l.jsx)(`div`,{className:`templates-table-viewport`,children:(0,l.jsx)(s.Table,{rowKey:`signatureId`,dataSource:e,columns:[{title:`Signature`,dataIndex:`templateName`,key:`name`,width:300,ellipsis:!0,render:e=>(0,l.jsx)(Mw,{strong:!0,ellipsis:{tooltip:e},children:e||`Untitled signature`})},{title:`Created`,dataIndex:`createdDt`,key:`created`,width:150,responsive:[`md`],render:e=>e?new Date(e).toLocaleDateString():`—`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:e,onChange:e=>x(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{y(t.signatureId),_(!0)}}),(0,l.jsx)(s.Popconfirm,{title:`Delete this signature?`,onConfirm:()=>S(t.signatureId),children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],loading:i,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:614,y:`calc(100vh - 410px)`},pagination:{current:f,pageSize:m,total:n,responsive:!0,onChange:(e,t)=>{p(e),h(t),b(e,t)}}})})]}),(0,l.jsx)(Vw,{open:g,signatureId:v,onClose:()=>_(!1),onSaved:()=>{_(!1),b()}})]})}function Uw(){return(0,l.jsx)(s.Tabs,{defaultActiveKey:`email`,className:`admin-config-tabs`,items:[{key:`email`,label:`Email templates`,children:(0,l.jsx)(Bw,{})},{key:`signature`,label:`Signatures`,children:(0,l.jsx)(Hw,{})}]})}var{Text:Ww}=s.Typography,Gw={serviceKey:``,label:``,baseUrl:``,authHeader:``,authValue:``,enabled:!0};function Kw({open:e,service:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[c,u]=(0,o.useState)(!1);(0,o.useEffect)(()=>{e&&a.setFieldsValue({...Gw,...t,authValue:``})},[e,t,a]);async function d(){try{let e=await a.validateFields();u(!0),await n.Zr(e),s.message.success(`AI service saved`),i()}catch(e){e?.errorFields||s.message.error(e?.message||`Could not save AI service`)}finally{u(!1)}}return(0,l.jsx)(s.Drawer,{open:e,onClose:r,width:`min(560px, 96vw)`,title:t?`Edit AI service`:`New AI service`,destroyOnClose:!0,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:c,onClick:d,children:`Save`})]}),children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,initialValues:Gw,children:[(0,l.jsx)(s.Form.Item,{name:`serviceKey`,label:`Service Key`,rules:[{required:!0,message:`Service key is required`}],tooltip:`Referenced by an AI Action's Service Key on any form field (e.g. pyOps).`,children:(0,l.jsx)(s.Input,{placeholder:`pyOps`,disabled:!!t,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Label`,children:(0,l.jsx)(s.Input,{placeholder:`Resume/JD Parsing Service`})}),(0,l.jsx)(s.Form.Item,{name:`baseUrl`,label:`Base URL`,rules:[{required:!0,message:`Base URL is required`}],children:(0,l.jsx)(s.Input,{placeholder:`https://ai.example.com`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`authHeader`,label:`Auth Header (optional)`,children:(0,l.jsx)(s.Input,{placeholder:`x-api-key`,className:`fg-mono-input`})}),(0,l.jsx)(s.Form.Item,{name:`authValue`,label:`Auth Value`,tooltip:`Write-only — leave blank to keep the currently saved value.`,children:(0,l.jsx)(s.Input.Password,{placeholder:t?`Unchanged`:``})}),(0,l.jsx)(s.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})]})})}function qw(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null);function p(){i(!0),n.pr().then(e=>t(Array.isArray(e)?e:[])).catch(e=>s.message.error(e?.message||`Could not load AI services`)).finally(()=>i(!1))}(0,o.useEffect)(()=>{queueMicrotask(()=>{p()})},[]);async function m(e,r){try{await n.Zr({...e,enabled:r}),t(t=>t.map(t=>t.serviceKey===e.serviceKey?{...t,enabled:r}:t))}catch(e){s.message.error(e?.message||`Could not update AI service`)}}async function h(e){try{await n.er(e),s.message.success(`AI service deleted`),p()}catch(e){s.message.error(e?.message||`Could not delete AI service`)}}return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ThunderboltOutlined,{}),title:`AI Services`,extra:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New service`}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(Ww,{type:`secondary`,children:`Register the AI/automation backends that admin-configured "AI Actions" (Generate/Parse-style buttons on any form field) call. A field's AI Action names a Service Key here — no URL is ever hardcoded in the app.`})]}),(0,l.jsx)(Z,{title:`${e.length} service${e.length===1?``:`s`}`,extra:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:p,children:`Reload`}),children:(0,l.jsx)(s.Table,{rowKey:`serviceKey`,columns:[{title:`Service`,key:`service`,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(Ww,{strong:!0,children:t.label||t.serviceKey}),(0,l.jsx)(Ww,{type:`secondary`,code:!0,children:t.serviceKey})]})},{title:`Base URL`,dataIndex:`baseUrl`,key:`baseUrl`,ellipsis:!0,render:e=>(0,l.jsx)(Ww,{code:!0,ellipsis:{tooltip:e},children:e})},{title:`Auth Header`,dataIndex:`authHeader`,key:`authHeader`,width:140,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,key:`enabled`,width:90,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:e,onChange:e=>m(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this AI service?`,onConfirm:()=>h(t.serviceKey),children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],dataSource:e,loading:r,className:`fg-table`,size:`small`})}),(0,l.jsx)(Kw,{open:a,service:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:Jw}=s.Typography,Yw={integrationKey:``,label:``,category:`GENERAL`,updateMethod:`MANUAL`,enabled:!0,provider:``,baseUrl:``,authType:`API_KEY`,authHeader:`x-api-key`,authValue:``,clientId:``,clientSecret:``,tokenUrl:``,createPath:``,statusPath:``,testPath:``,webhookSecret:``,targetModule:``,targetField:``,stageMatchField:``,stageMatchValue:``,stageStatusField:``,providerStatusPath:``,providerReferencePath:``,statusMappings:[{providerStatus:``,applicationStatus:``}]},Xw=[{label:`API Key`,value:`API_KEY`},{label:`Bearer Token`,value:`BEARER_TOKEN`},{label:`Basic Authentication`,value:`BASIC_AUTH`},{label:`OAuth 2.0 Client Credentials`,value:`OAUTH2_CLIENT_CREDENTIALS`}];function Zw(e){let t=Object.fromEntries((e.statusMappings??[]).filter(e=>e?.providerStatus&&e?.applicationStatus).map(e=>[e.providerStatus.trim(),e.applicationStatus.trim()])),n={...e,statusMapping:e.updateMethod===`API`?{targetModule:e.targetModule,targetField:e.targetField,stageMatchField:e.stageMatchField,stageMatchValue:e.stageMatchValue,stageStatusField:e.stageStatusField,providerStatusPath:e.providerStatusPath,providerReferencePath:e.providerReferencePath,values:t}:void 0};return[`statusMappings`,`targetModule`,`targetField`,`stageMatchField`,`stageMatchValue`,`stageStatusField`,`providerStatusPath`,`providerReferencePath`].forEach(e=>delete n[e]),n}function Qw({open:e,integration:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[u,d]=(0,o.useState)(!1),[f,p]=(0,o.useState)(!1),m=s.Form.useWatch(`updateMethod`,a),h=s.Form.useWatch(`authType`,a),g=m===`API`,_=h===`OAUTH2_CLIENT_CREDENTIALS`;(0,o.useEffect)(()=>{if(!e)return;let n=t?.statusMapping??{};a.setFieldsValue({...Yw,...t,authValue:``,clientSecret:``,webhookSecret:``,targetModule:n.targetModule??``,targetField:n.targetField??``,stageMatchField:n.stageMatchField??``,stageMatchValue:n.stageMatchValue??``,stageStatusField:n.stageStatusField??``,providerStatusPath:n.providerStatusPath??``,providerReferencePath:n.providerReferencePath??``,statusMappings:Object.entries(n.values??{}).map(([e,t])=>({providerStatus:e,applicationStatus:t})).concat(Object.keys(n.values??{}).length?[]:[{providerStatus:``,applicationStatus:``}])})},[a,t,e]);async function v(){try{let e=Zw(await a.validateFields());d(!0),await n.ti(e),s.message.success(`Integration saved`),i()}catch(e){e?.errorFields||s.message.error(e?.message||`Could not save integration`)}finally{d(!1)}}async function y(){try{let e=await a.validateFields([`integrationKey`,`baseUrl`,`testPath`,`authType`,`authHeader`,`authValue`,`clientId`,`clientSecret`,`tokenUrl`]);p(!0);let t=await n.si(Zw({...a.getFieldsValue(!0),...e}));s.message.success(t?.message||`Connection successful${t?.statusCode?` (${t.statusCode})`:``}`)}catch(e){e?.errorFields||s.message.error(e?.message||`Connection test failed`)}finally{p(!1)}}return(0,l.jsx)(s.Drawer,{open:e,onClose:r,width:`min(680px, 96vw)`,title:t?`Edit ${t.label}`:`Add Integration`,destroyOnClose:!0,extra:(0,l.jsxs)(s.Space,{children:[g&&(0,l.jsx)(s.Button,{loading:f,onClick:y,children:`Test Connection`}),(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:u,onClick:v,children:`Save`})]}),children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,initialValues:Yw,children:[(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`label`,label:`Integration Name`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`Background Check`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`integrationKey`,label:`Integration Key`,rules:[{required:!0},{pattern:/^[a-z][a-z0-9_-]{1,63}$/,message:`Use lowercase letters, numbers, _ or -`}],children:(0,l.jsx)(s.Input,{placeholder:`bgc`,disabled:!!t})})})]}),(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`category`,label:`Category`,children:(0,l.jsx)(s.Select,{options:[{value:`ONBOARDING`,label:`Onboarding`},{value:`HRMS`,label:`HRMS`},{value:`PAYROLL`,label:`Payroll`},{value:`ESIGNATURE`,label:`E-Signature`},{value:`VMS`,label:`VMS`},{value:`GENERAL`,label:`General / Custom`}]})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})})]}),(0,l.jsx)(s.Form.Item,{name:`updateMethod`,label:`Update Method`,rules:[{required:!0}],children:(0,l.jsx)(s.Radio.Group,{optionType:`button`,buttonStyle:`solid`,options:[{label:`Manual Update`,value:`MANUAL`},{label:`API Integration`,value:`API`}]})}),!g&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`This integration will use manual updates.`}),g&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Alert,{type:t?.credentialsConfigured?`success`:`warning`,showIcon:!0,message:t?.credentialsConfigured?`Credentials configured`:`Credentials required`,description:`Secrets are write-only. Leave a secret blank while editing to keep its current value.`,style:{marginBottom:16}}),(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`provider`,label:`Provider`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`Provider name`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`baseUrl`,label:`API Base URL`,rules:[{required:!0,type:`url`}],children:(0,l.jsx)(s.Input,{placeholder:`https://api.provider.com`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`createPath`,label:`Create/Submit Path`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`/v1/requests`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`statusPath`,label:`Status Path`,rules:[{required:!0}],tooltip:`Use {referenceId} as a placeholder.`,children:(0,l.jsx)(s.Input,{placeholder:`/v1/requests/{referenceId}`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`testPath`,label:`Test Connection Path`,rules:[{required:!0}],tooltip:`A safe GET endpoint used only to validate URL and credentials.`,children:(0,l.jsx)(s.Input,{placeholder:`/v1/health`})})})]}),(0,l.jsx)(s.Form.Item,{name:`authType`,label:`Authentication Type`,rules:[{required:!0}],children:(0,l.jsx)(s.Select,{options:Xw})}),_?(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`clientId`,label:`Client ID`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`clientSecret`,label:`Client Secret`,children:(0,l.jsx)(s.Input.Password,{placeholder:t?.credentialsConfigured?`Unchanged`:`Required`})})}),(0,l.jsx)(s.Col,{xs:24,children:(0,l.jsx)(s.Form.Item,{name:`tokenUrl`,label:`Token URL`,rules:[{required:!0,type:`url`}],children:(0,l.jsx)(s.Input,{})})})]}):(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`authHeader`,label:`Authentication Header`,children:(0,l.jsx)(s.Input,{placeholder:`x-api-key`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`authValue`,label:`API Credential`,children:(0,l.jsx)(s.Input.Password,{placeholder:t?.credentialsConfigured?`Unchanged`:`Required`})})})]}),(0,l.jsx)(s.Form.Item,{name:`webhookSecret`,label:`Webhook Signing Secret (optional)`,children:(0,l.jsx)(s.Input.Password,{placeholder:t?.webhookConfigured?`Unchanged`:``})}),(0,l.jsxs)(Z,{title:`Status Mapping`,children:[(0,l.jsx)(Jw,{type:`secondary`,children:`Map a status from the provider response into a module field or a matching workflow stage.`}),(0,l.jsxs)(s.Row,{gutter:16,style:{marginTop:16},children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`targetModule`,label:`Target Module`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`onboarding`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`targetField`,label:`Target Field`,rules:[{required:!0}],tooltip:`Use stages for a stage-array update, or a direct field name.`,children:(0,l.jsx)(s.Input,{placeholder:`stages`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`providerStatusPath`,label:`Provider Status JSON Path`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`data.status`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{name:`providerReferencePath`,label:`Provider Reference JSON Path`,children:(0,l.jsx)(s.Input,{placeholder:`data.id`})})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsx)(s.Form.Item,{name:`stageMatchField`,label:`Stage Match Field`,children:(0,l.jsx)(s.Input,{placeholder:`stageCode`})})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsx)(s.Form.Item,{name:`stageMatchValue`,label:`Stage Match Value`,children:(0,l.jsx)(s.Input,{placeholder:`BGC`})})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsx)(s.Form.Item,{name:`stageStatusField`,label:`Stage Status Field`,children:(0,l.jsx)(s.Input,{placeholder:`status`})})})]}),(0,l.jsx)(Jw,{strong:!0,children:`Status Values`}),(0,l.jsx)(s.Form.List,{name:`statusMappings`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(s.Space,{direction:`vertical`,style:{width:`100%`,marginTop:8},children:[e.map(e=>(0,l.jsxs)(s.Row,{gutter:12,children:[(0,l.jsx)(s.Col,{flex:`1 1 220px`,children:(0,l.jsx)(s.Form.Item,{...e,name:[e.name,`providerStatus`],rules:[{required:!0,message:`Provider status is required`}],children:(0,l.jsx)(s.Input,{placeholder:`Provider status, e.g. completed`})})}),(0,l.jsx)(s.Col,{flex:`1 1 220px`,children:(0,l.jsx)(s.Form.Item,{...e,name:[e.name,`applicationStatus`],rules:[{required:!0,message:`Application status is required`}],children:(0,l.jsx)(s.Input,{placeholder:`Zinnext status, e.g. CLEARED`})})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{danger:!0,onClick:()=>n(e.name),children:`Remove`})})]},e.key)),(0,l.jsx)(s.Button,{type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({providerStatus:``,applicationStatus:``}),children:`Add Status Mapping`})]})})]})]})]})})}function $w(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null),p=(0,o.useCallback)(()=>{i(!0),n.Or().then(e=>t(Array.isArray(e)?e:[])).catch(e=>s.message.error(e?.message||`Could not load integrations`)).finally(()=>i(!1))},[]);(0,o.useEffect)(()=>{queueMicrotask(p)},[p]);async function m(e){try{await n.nr(e),s.message.success(`Integration deleted`),p()}catch(e){s.message.error(e?.message||`Could not delete integration`)}}return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ApiOutlined,{}),title:`Integrations`,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`Add Integration`})]}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(Jw,{type:`secondary`,children:`Configure reusable manual or API integrations for onboarding, payroll, e-signature, VMS, HRMS, and custom workflows.`})]}),(0,l.jsx)(Z,{title:`${e.length} integration${e.length===1?``:`s`}`,children:(0,l.jsx)(s.Table,{rowKey:`integrationKey`,columns:[{title:`Integration`,key:`name`,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(Jw,{strong:!0,children:t.label}),(0,l.jsx)(Jw,{type:`secondary`,code:!0,children:t.integrationKey})]})},{title:`Category`,dataIndex:`category`,width:130,render:e=>e||`GENERAL`},{title:`Method`,dataIndex:`updateMethod`,width:110,render:e=>(0,l.jsx)(s.Tag,{color:e===`API`?`blue`:`default`,children:e})},{title:`Provider`,dataIndex:`provider`,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,width:90,render:e=>(0,l.jsx)(s.Tag,{color:e?`green`:`default`,children:e?`Yes`:`No`})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}}),(0,l.jsx)(s.Popconfirm,{title:`Delete this integration?`,onConfirm:()=>m(t.integrationKey),children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],dataSource:e,loading:r,size:`small`,className:`fg-table`})}),(0,l.jsx)(Qw,{open:a,integration:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:$}=s.Typography;function eT({rows:e,onChange:t,keyPlaceholder:n,valuePlaceholder:r}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,l.jsxs)(`div`,{children:[e.map((e,t)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,l.jsx)(s.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,l.jsx)(`span`,{style:{color:`#94a3b8`,alignSelf:`center`},children:`→`}),(0,l.jsx)(s.Input,{size:`small`,style:{flex:1},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`})]})}function tT({rows:e,onChange:t,keyPlaceholder:n=`field`,valuePlaceholder:r=`literal or {{field.path}}`}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,l.jsxs)(`div`,{children:[e.map((e,t)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,l.jsx)(s.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,l.jsx)(s.Input,{size:`small`,style:{flex:1.6},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`}),(0,l.jsxs)($,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:[`Values are read as JSON when possible (true, 123, ["a","b"]) — otherwise kept as literal text. Use `,(0,l.jsx)(`code`,{children:`{{field.path}}`}),` to reference a payload field, or `,(0,l.jsx)(`code`,{children:`{{now}}`}),` for the current time.`]})]})}function nT(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:String(t??``)}))}function rT(e){let t={};for(let n of e??[])n.key?.trim()&&(t[n.key.trim()]=n.value??``);return t}function iT(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)}))}function aT(e){let t={};for(let n of e??[]){if(!n.key?.trim())continue;let e=n.value;if(typeof e==`string`){let t=e.trim();if(t!==``)try{e=JSON.parse(t)}catch{}}t[n.key.trim()]=e}return t}function oT({open:e,rule:t,onClose:n,onSave:r}){let[i,a]=(0,o.useState)(()=>({sourceModule:``,sourceIdField:``,required:!1,...t??{},fieldMapRows:nT(t?.fieldMap)})),u=(e,t)=>a(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.DatabaseOutlined,{}),` `,t?`Edit Denormalize Rule`:`New Denormalize Rule`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:n,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!i.sourceModule?.trim())return s.message.error(`Source module is required`);if(!i.sourceIdField?.trim())return s.message.error(`Source id field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:rT(e)})},children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source module`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`job`,value:i.sourceModule??``,onChange:e=>u(`sourceModule`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source id field (on THIS payload)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`jobId`,value:i.sourceIdField??``,onChange:e=>u(`sourceIdField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!i.required,onChange:e=>u(`required`,e)}),(0,l.jsx)($,{style:{fontSize:13},children:`Required — block the write if the source record can't be found`})]}),(0,l.jsxs)(`div`,{style:{marginTop:16},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source field → this payload's field)`}),(0,l.jsx)(eT,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`jobTitle`,valuePlaceholder:`jobTitle`})]})]})})}function sT({open:e,rule:t,onClose:n,onSave:r}){let[i,a]=(0,o.useState)(()=>({sourceField:``,targetField:``,sourceCollection:``,idField:``,idOutputKey:``,stampNow:``,...t??{},fieldMapRows:nT(t?.fieldMap)})),u=(e,t)=>a(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.ApartmentOutlined,{}),` `,t?`Edit Array Enrichment`:`New Array Enrichment`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:n,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return s.message.error(`Source field is required`);if(!i.targetField?.trim())return s.message.error(`Target field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:rT(e)})},children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (array of ids on this payload)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`recruitersData`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Target field (enriched array written here)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`recruiters`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source collection`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`users (default)`,value:i.sourceCollection??``,onChange:e=>u(`sourceCollection`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Id field on that collection`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`legacyUserId (default)`,value:i.idField??``,onChange:e=>u(`idField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{style:{marginTop:16},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source collection field → output key)`}),(0,l.jsx)(eT,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`firstName`,valuePlaceholder:`recruiterName`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also write the matched id as`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`recruiterId`,value:i.idOutputKey??``,onChange:e=>u(`idOutputKey`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also stamp the current time as`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`assignedDateTime`,value:i.stampNow??``,onChange:e=>u(`stampNow`,e.target.value),className:`fg-mono-input`})]})]})]})})}function cT({open:e,rule:t,onClose:n,onSave:r}){let[i,a]=(0,o.useState)(()=>({sourceField:``,targetField:``,uploadedFileNameField:``,uniqueNameField:``,uploadedAtField:``,uploadedByField:``,arrayMode:!1,nameFromField:``,nameOutputField:``,historyField:``,historySnapshotKey:``,historyReason:``,...t??{},staticFieldRows:nT(t?.staticFields),arrayFieldNameRows:nT(t?.arrayFieldNames)})),u=(e,t)=>a(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:n,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.DatabaseOutlined,{}),` `,t?`Edit File Field Map`:`New File Field Map`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:n,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return s.message.error(`Source field (the multipart upload key) is required`);if(!i.targetField?.trim())return s.message.error(`Target field is required`);let{staticFieldRows:e,arrayFieldNameRows:t,...n}=i;r({...n,staticFields:rT(e),arrayFieldNames:rT(t)})},children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Turns one uploaded file field into a nested object (or array of objects) instead of a flat S3 path string — for schemas like a candidate's resume/passport/visa that store location + filename + who/when as sub-fields.`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (multipart upload key)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Target field `,i.arrayMode?`(array)`:`(location sub-field)`]}),(0,l.jsx)(s.Input,{size:`small`,placeholder:i.arrayMode?`documents`:`resume.location`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!i.arrayMode,onChange:e=>u(`arrayMode`,e)}),(0,l.jsx)($,{style:{fontSize:13},children:`Array mode — every uploaded file becomes one element (e.g. "documents")`})]}),i.arrayMode?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Sub-field names (location / uploadedFileName / uniqueName → this schema's names)`}),(0,l.jsx)(eT,{rows:i.arrayFieldNameRows??[],onChange:e=>u(`arrayFieldNameRows`,e),keyPlaceholder:`location`,valuePlaceholder:`documentCopyLocation`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Take each element's display name from (payload array field)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`documents`,value:i.nameFromField??``,onChange:e=>u(`nameFromField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...reading its field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`documentName`,value:i.nameOutputField??``,onChange:e=>u(`nameOutputField`,e.target.value),className:`fg-mono-input`})]})]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Original filename field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume.uploadedFileName`,value:i.uploadedFileNameField??``,onChange:e=>u(`uploadedFileNameField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Unique name field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume.uniqueName`,value:i.uniqueNameField??``,onChange:e=>u(`uniqueNameField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-at field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume.uploadedAt`,value:i.uploadedAtField??``,onChange:e=>u(`uploadedAtField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-by field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume.uploadedBy`,value:i.uploadedByField??``,onChange:e=>u(`uploadedByField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Static fields (literal value written alongside the upload)`}),(0,l.jsx)(eT,{rows:i.staticFieldRows??[],onChange:e=>u(`staticFieldRows`,e),keyPlaceholder:`resume.source`,valuePlaceholder:`candidate`})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Append a snapshot to (history array field)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resumeHistory`,value:i.historyField??``,onChange:e=>u(`historyField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...under snapshot key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`resume`,value:i.historySnapshotKey??``,onChange:e=>u(`historySnapshotKey`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...with reason`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`Initial resume upload`,value:i.historyReason??``,onChange:e=>u(`historyReason`,e.target.value),className:`fg-mono-input`})]})]})]})]})})}function lT({open:e,rule:t,onClose:n,onSave:r}){let[i,a]=(0,o.useState)(()=>({name:``,seedField:``,direction:`up`,stopRole:0,includeSeed:!0,...t??{}})),u=(e,t)=>a(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:n,width:620,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.ApartmentOutlined,{}),` `,t?`Edit Hierarchy Expansion`:`New Hierarchy Expansion`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:n,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!i.name?.trim())return s.message.error(`Name is required — this is how RelatedUpdates/Notify reference the result`);if(!/^[a-zA-Z0-9_]+$/.test(i.name))return s.message.error(`Name: letters, numbers, underscores only`);r(i)},children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Name`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`chain`,value:i.name??``,onChange:e=>u(`name`,e.target.value),className:`fg-mono-input`}),(0,l.jsxs)($,{type:`secondary`,style:{fontSize:11},children:[`Referenced as `,(0,l.jsx)(`code`,{children:`{{hierarchy.`+(i.name||`name`)+`}}`})]})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Seed field (blank = the caller)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`recruitersData`,value:i.seedField??``,onChange:e=>u(`seedField`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Direction`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:i.direction||`up`,onChange:e=>u(`direction`,e),options:[{value:`up`,label:`Up — toward admin (reporting chain)`},{value:`down`,label:`Down — toward subordinates (team)`}]})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Stop at role id (up only, 0 = walk to the top)`}),(0,l.jsx)(s.InputNumber,{size:`small`,style:{width:`100%`},min:0,value:i.stopRole??0,onChange:e=>u(`stopRole`,e??0),disabled:i.direction!==`up`})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:i.includeSeed!==!1,onChange:e=>u(`includeSeed`,e)}),(0,l.jsx)($,{style:{fontSize:13},children:`Include the seed user(s) themselves in the result`})]})]})})}function uT({open:e,rule:t,hierarchyNames:n,onClose:r,onSave:i}){let[a,u]=(0,o.useState)(()=>({collectionName:``,targetModule:``,matchField:``,scopeTenant:!1,forEach:``,insertMode:!!(t?.insertIfMissing&&Object.keys(t.insertIfMissing).length),...t??{},extraFilterRows:iT(t?.extraFilter),pullRows:iT(t?.pull),pushRows:iT(t?.push),setRows:iT(t?.set),setIfNonBlankRows:iT(t?.setIfNonBlank),insertIfMissingRows:iT(t?.insertIfMissing)})),d=(e,t)=>u(n=>({...n,[e]:t})),f=()=>{if(!a.collectionName?.trim()&&!a.targetModule?.trim())return s.message.error(`Set either a collection name or a target module`);let{extraFilterRows:e,pullRows:t,pushRows:n,setRows:r,setIfNonBlankRows:o,insertIfMissingRows:c,insertMode:l,...u}=a;i({...u,extraFilter:aT(e),pull:l?{}:aT(t),push:l?{}:aT(n),set:l?{}:aT(r),setIfNonBlank:l?{}:aT(o),insertIfMissing:l?aT(c):{}})},p=(n??[]).map(e=>({value:`hierarchy.${e}`,label:`{{hierarchy.${e}}}`}));return(0,l.jsx)(s.Modal,{open:e,onCancel:r,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` `,t?`Edit Related Update`:`New Related Update`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:f,children:`Apply`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsx)(`div`,{className:`fg-form-section-label`,children:`Target`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Collection name (used verbatim)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`hiringProgress`,value:a.collectionName??``,onChange:e=>d(`collectionName`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`— or — target module`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`job`,value:a.targetModule??``,onChange:e=>d(`targetModule`,e.target.value),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Match field (this payload's field holding the target _id)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`jobId (blank for a tenant-scoped board)`,value:a.matchField??``,onChange:e=>d(`matchField`,e.target.value),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Repeat once per element of (ForEach)`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},allowClear:!0,showSearch:!0,placeholder:`e.g. {{hierarchy.chain}}`,value:a.forEach||void 0,onChange:e=>d(`forEach`,e??``),options:p})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!a.scopeTenant,onChange:e=>d(`scopeTenant`,e)}),(0,l.jsx)($,{style:{fontSize:13},children:`Scope filter to the caller's tenant/business/businessUnit`})]}),(0,l.jsxs)(`div`,{style:{marginTop:14},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Extra filter (merged into the match filter)`}),(0,l.jsx)(tT,{rows:a.extraFilterRows??[],onChange:e=>d(`extraFilterRows`,e),keyPlaceholder:`recruiterId`,valuePlaceholder:`{"$in":"{{hierarchy.chain}}"}`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:18},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!a.insertMode,onChange:e=>d(`insertMode`,e)}),(0,l.jsx)($,{style:{fontSize:13},children:`Insert-only-if-missing (seed a new document instead of updating an existing one)`})]}),a.insertMode?(0,l.jsxs)(`div`,{style:{marginTop:10},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Document to insert when the filter matches nothing`}),(0,l.jsx)(tT,{rows:a.insertIfMissingRows??[],onChange:e=>d(`insertIfMissingRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})]}):(0,l.jsx)(s.Tabs,{size:`small`,style:{marginTop:10},items:[{key:`pull`,label:`Pull`,children:(0,l.jsx)(tT,{rows:a.pullRows??[],onChange:e=>d(`pullRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"candidateId":"{{applicantId}}"}`})},{key:`push`,label:`Push`,children:(0,l.jsx)(tT,{rows:a.pushRows??[],onChange:e=>d(`pushRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"status":"{{submissionStatus}}"}`})},{key:`set`,label:`Set`,children:(0,l.jsx)(tT,{rows:a.setRows??[],onChange:e=>d(`setRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})},{key:`setIfNonBlank`,label:`Set if non-blank`,children:(0,l.jsx)(tT,{rows:a.setIfNonBlankRows??[],onChange:e=>d(`setIfNonBlankRows`,e),keyPlaceholder:`resume.location`,valuePlaceholder:`{{resume.location}}`})}]})]})})}function dT({icon:e,title:t,description:n,rules:r,columns:i,onAdd:a,onEdit:o,onDelete:u}){return(0,l.jsxs)(Z,{title:(0,l.jsxs)(`span`,{children:[e,` `,t]}),extra:(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:a,children:`Add`}),styles:{body:{paddingTop:8}},children:[n&&(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:n}),(0,l.jsx)(s.Table,{rowKey:(e,t)=>t,dataSource:r,columns:[...i,{title:``,key:`actions`,width:80,align:`right`,render:(e,t,n)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>o(n,t)})}),(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>u(n)})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`Not configured`})}})]})}var fT={sequence:null,duplicateCheck:null,fileVersioning:null,denormalizations:[],arrayEnrichments:[],fileFieldMaps:[],sanitizeFields:[],defaults:{},hierarchyExpands:[],relatedUpdates:[],notify:null,cacheInvalidate:[]};function pT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(``),[d,f]=(0,o.useState)({storage:`mongo`}),[p,m]=(0,o.useState)(`mongo`),[h,g]=(0,o.useState)(fT),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)(null),[T,E]=(0,o.useState)(null),[D,O]=(0,o.useState)(null),[k,A]=(0,o.useState)(null),[j,M]=(0,o.useState)(null);(0,o.useEffect)(()=>{n.yr().then(e=>{let n=gx(e).map(({value:e,label:t})=>({key:e,label:t}));t(n),n.length&&u(n[0].key)}).catch(()=>t([])).finally(()=>i(!1))},[]),(0,o.useEffect)(()=>{if(!a)return;let e=!1;return(async()=>{v(!0),S(``);try{let t=await n.Fr(a);if(e)return;let r=t.gateway??{storage:`mongo`};f(r),m(r.storage||`mongo`),g({...fT,...t.strategies??{}})}catch(t){e||S(t?.message||`Failed to load automations`)}finally{e||v(!1)}})(),()=>{e=!0}},[a]);let N=(0,o.useMemo)(()=>(h.hierarchyExpands??[]).map(e=>e.name).filter(Boolean),[h.hierarchyExpands]);function P(e,t){g(n=>({...n,[e]:t}))}function F(e,t){g(n=>{let r=n.duplicateCheck??{},i=[...r.stages??[]];return i[e]=t,{...n,duplicateCheck:{...r,stages:i}}})}function I(){b(!0);let e={...h,denormalizations:h.denormalizations?.length?h.denormalizations:void 0,arrayEnrichments:h.arrayEnrichments?.length?h.arrayEnrichments:void 0,fileFieldMaps:h.fileFieldMaps?.length?h.fileFieldMaps:void 0,sanitizeFields:h.sanitizeFields?.length?h.sanitizeFields:void 0,hierarchyExpands:h.hierarchyExpands?.length?h.hierarchyExpands:void 0,relatedUpdates:h.relatedUpdates?.length?h.relatedUpdates:void 0,cacheInvalidate:h.cacheInvalidate?.length?h.cacheInvalidate:void 0,defaults:Object.keys(h.defaults??{}).length?h.defaults:void 0};n.ni(a,{gateway:d,strategies:e}).then(()=>{m(d.storage||`mongo`),s.message.success(`Automations saved`)}).catch(e=>s.message.error(e?.message||`Could not save automations`)).finally(()=>b(!1))}function L(){if((d.storage||`mongo`)!==p){s.Modal.confirm({title:`Change how this module persists writes?`,content:`You're switching ${a} from "${p}" to "${d.storage}". `+(d.storage===`mongo`?`This module will stop calling its downstream service and this gateway will own the write + every Strategy below.`:`This module will stop using the Strategies below and go back to calling its downstream service.`)+` Make sure the downstream service / e2e checks are ready before confirming.`,okText:`Confirm cutover`,okButtonProps:{danger:!0},onOk:I});return}I()}let R=[{title:`Source module`,dataIndex:`sourceModule`,key:`sourceModule`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Source id field`,dataIndex:`sourceIdField`,key:`sourceIdField`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,l.jsx)(s.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})},{title:`Required`,dataIndex:`required`,key:`required`,width:90,render:e=>e?(0,l.jsx)(s.Tag,{color:`volcano`,children:`Required`}):(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`optional`})}],z=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`From collection`,key:`coll`,render:(e,t)=>t.sourceCollection||`users`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,l.jsx)(s.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})}],B=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Mode`,dataIndex:`arrayMode`,key:`arrayMode`,width:100,render:e=>e?(0,l.jsx)(s.Tag,{color:`blue`,children:`Array`}):(0,l.jsx)(s.Tag,{children:`Single`})},{title:`History`,dataIndex:`historyField`,key:`historyField`,render:e=>e||(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`—`})}],V=[{title:`Name`,dataIndex:`name`,key:`name`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:`{{hierarchy.`+e+`}}`})},{title:`Seed field`,dataIndex:`seedField`,key:`seedField`,render:e=>e||(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`caller`})},{title:`Direction`,dataIndex:`direction`,key:`direction`,render:e=>(0,l.jsx)(s.Tag,{color:e===`down`?`blue`:`purple`,children:e===`down`?`Down — team`:`Up — chain`})},{title:`Stop role`,dataIndex:`stopRole`,key:`stopRole`,width:90,render:e=>e||(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`top`})}],ee=[{title:`Target`,key:`target`,render:(e,t)=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:t.collectionName||t.targetModule})},{title:`Match`,key:`match`,render:(e,t)=>t.matchField||(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`tenant-scoped`})},{title:`For each`,key:`forEach`,render:(e,t)=>t.forEach?(0,l.jsx)(s.Tag,{color:`geekblue`,children:`{{${t.forEach}}}`}):(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`once`})},{title:`Mode`,key:`mode`,render:(e,t)=>Object.keys(t.insertIfMissing??{}).length?(0,l.jsx)(s.Tag,{color:`green`,children:`Insert if missing`}):(0,l.jsx)(s.Tag,{children:`Update`})}],te=e.map(e=>({key:e.key,label:e.label}));return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ThunderboltOutlined,{}),title:`Automations`,extra:(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:y,disabled:!a,onClick:L,children:`Save Automations`}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)($,{type:`secondary`,style:{fontSize:13},children:`Config-driven side-effects the common CRUD gateway runs around a create — reference ids, duplicate checks, cross-module field snapshots, reporting-chain hierarchy expansion, board updates, notifications, cache invalidation. Nothing here is module-specific: the same engine serves every module.`})]}),(0,l.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,l.jsxs)(s.Spin,{spinning:r,children:[(0,l.jsx)(s.Tabs,{activeKey:a,onChange:u,items:te.map(e=>({...e,children:null})),className:`admin-module-tabs`}),x&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:x,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:_,children:[(0,l.jsxs)(Z,{title:`Gateway`,styles:{body:{paddingTop:8}},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Selects how a write to this module persists. "Proxy" forwards to a downstream microservice (which owns every side-effect below itself). "Mongo" makes THIS gateway own the write and run every Strategy configured below.`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Storage`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:d.storage||`mongo`,onChange:e=>f(t=>({...t,storage:e})),options:[{value:`mongo`,label:`Mongo — this gateway owns the write`},{value:`proxy`,label:`Proxy — forward to a downstream service`}]})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`File field key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`file`,value:d.fileKey??``,onChange:e=>f(t=>({...t,fileKey:e.target.value})),className:`fg-mono-input`})]})]}),d.storage===`proxy`&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL env var`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`JOBS_SERVICE_URL`,value:d.baseUrlEnv??``,onChange:e=>f(t=>({...t,baseUrlEnv:e.target.value})),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL (fallback)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`http://...`,value:d.baseUrl??``,onChange:e=>f(t=>({...t,baseUrl:e.target.value})),className:`fg-mono-input`})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Create path`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`/v1/jobs`,value:d.createPath??``,onChange:e=>f(t=>({...t,createPath:e.target.value})),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update path (%s = id)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`/v1/edit/%s`,value:d.updatePath??``,onChange:e=>f(t=>({...t,updatePath:e.target.value})),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update method`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:d.updateMethod||`PUT`,onChange:e=>f(t=>({...t,updateMethod:e})),options:[`PUT`,`POST`,`PATCH`].map(e=>({value:e,label:e}))})]})]})]})]}),(0,l.jsxs)(Z,{title:`Reference ID (Sequence)`,styles:{body:{paddingTop:8}},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.sequence,onChange:e=>P(`sequence`,e?{field:``,prefix:``,counterKey:``}:null)}),(0,l.jsxs)($,{style:{fontSize:13},children:[`Generate a "`,`{prefix}{n}`,`" reference id on create`]})]}),h.sequence&&(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Payload field`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`submissionId`,value:h.sequence.field??``,onChange:e=>P(`sequence`,{...h.sequence,field:e.target.value}),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`sub`,value:h.sequence.prefix??``,onChange:e=>P(`sequence`,{...h.sequence,prefix:e.target.value}),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counter key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`submissions`,value:h.sequence.counterKey??``,onChange:e=>P(`sequence`,{...h.sequence,counterKey:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,l.jsxs)(Z,{title:`Check for someone already on file`,styles:{body:{paddingTop:8}},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Before a new record is saved, look for one that already matches. This is what stops the same person being added twice under slightly different details.`}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.duplicateCheck,onChange:e=>P(`duplicateCheck`,e?{stages:[],policy:`prompt`,displayFields:[],message:``}:null)}),(0,l.jsx)($,{style:{fontSize:13},children:`Check before saving a new record`})]}),h.duplicateCheck&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:6},children:[(0,l.jsx)(`b`,{children:`Checks run in order, top first, and stop at the first match.`}),` Put your most certain check first — matching an email or a phone number is near proof; matching a name alone is only a maybe, so it belongs lower down.`]}),(h.duplicateCheck.stages??[]).map((e,t)=>(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,l.jsxs)(`div`,{style:{flex:1.6},children:[(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Check `,t+1,` — compare these`]}),(0,l.jsx)(s.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`email, contactNumber`,value:e.fields??[],onChange:n=>F(t,{...e,fields:n})})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counts as a match when`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:e.match??`all`,onChange:n=>F(t,{...e,match:n}),options:[{value:`any`,label:`Any one of them matches`},{value:`all`,label:`All of them match`}]})]}),(0,l.jsxs)(`div`,{style:{flex:.8},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How sure is it?`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:e.weight??`strong`,onChange:n=>F(t,{...e,weight:n}),options:[{value:`strong`,label:`Almost certainly the same`},{value:`weak`,label:`Possibly the same`}]})]}),(0,l.jsxs)(`div`,{style:{flex:2},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`What to tell the user`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`A candidate with this email already exists — {name}, last updated {age}.`,value:e.message??``,onChange:n=>F(t,{...e,message:n.target.value})})]}),(0,l.jsx)(s.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:(h.duplicateCheck.stages??[]).filter((e,n)=>n!==t)}),children:`Remove`})]},t)),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,style:{marginBottom:12},onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:[...h.duplicateCheck.stages??[],{fields:[],match:`any`,weight:`strong`}]}),children:`Add another check`}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`When a match is found`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:h.duplicateCheck.policy??`prompt`,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,policy:e}),options:[{value:`prompt`,label:`Ask, and offer to update the existing one`},{value:`block`,label:`Refuse to save, and name the existing one`}]})]}),(0,l.jsxs)(`div`,{style:{flex:1.2},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which details identify the record`}),(0,l.jsx)(s.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.duplicateCheck.displayFields??[],onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,displayFields:e})})]})]}),(0,l.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:10},children:(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where to open the existing record`}),(0,l.jsx)(s.Input,{size:`small`,className:`fg-mono-input`,placeholder:`/candidate/edit/:id`,value:h.duplicateCheck.editRoute??``,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,editRoute:e.target.value})})]})}),(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[`The page that opens when someone chooses to update the record you already have. Use `,(0,l.jsx)(`b`,{children:`:id`}),` where the record's id goes. This has to be filled in — it cannot be worked out, because addresses follow no single pattern (this app uses `,(0,l.jsx)(`code`,{children:`/candidate/edit/:id`}),` but `,(0,l.jsx)(`code`,{children:`/clients/edit/:id`}),`). Left blank, the dialog still appears and simply does not navigate, rather than sending anyone to a page that does not exist.`]}),(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:8},children:[`In any message you can use `,(0,l.jsx)(`b`,{children:`{name}`}),` for the matched record and`,(0,l.jsxs)(`b`,{children:[` `,`{age}`]}),` for how long ago it was last touched ("about 2 months ago"). `,(0,l.jsx)(`b`,{children:`{updatedOn}`}),` gives the date instead. Only the details listed above are shown — nothing else about the record is revealed.`]})]})]}),(0,l.jsxs)(Z,{title:`Keep previous versions of an uploaded file`,styles:{body:{paddingTop:8}},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Normally a new upload replaces the old one and it is gone. Turn this on and the last few are kept instead — useful when someone sends an updated CV and you may want to look back at the earlier one. Everywhere in the app still shows the newest; the older ones sit behind it.`}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.fileVersioning,onChange:e=>P(`fileVersioning`,e?{fields:[],keep:2,historyKey:``,s3Prefix:``,deleteEvicted:!1}:null)}),(0,l.jsx)($,{style:{fontSize:13},children:`Keep previous uploads`})]}),h.fileVersioning&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{style:{marginBottom:10},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`},children:`Where the older versions are kept`}),(0,l.jsxs)(s.Radio.Group,{size:`small`,value:h.fileVersioning.store===`documents`?`documents`:`record`,onChange:e=>{let t=e.target.value,n={...h.fileVersioning,store:t===`documents`?`documents`:``};t===`documents`&&(n.linkField=n.linkField||`documentIds`,n.clearRecordKeys=n.clearRecordKeys?.length?n.clearRecordKeys:(n.fields??[]).flatMap(e=>[`${e}History`,`${e}Versions`])),P(`fileVersioning`,n)},children:[(0,l.jsx)(s.Radio,{value:`documents`,children:`In Documents (recommended)`}),(0,l.jsx)(s.Radio,{value:`record`,children:`On the record itself`})]}),(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[(0,l.jsx)(`b`,{children:`In Documents`}),` keeps the file and all its earlier versions in one place, the same place every other document lives. The record just points at it — so when a candidate is submitted for a job, the submission shows the very same file, and replacing it updates both at once. `,(0,l.jsx)(`b`,{children:`On the record itself`}),` is the older way: each record keeps its own copy of the history, which is why the same résumé could end up recorded several times over and the copies could disagree.`]})]}),h.fileVersioning.store===`documents`&&(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:10},children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`List of attached documents is kept in`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`documentIds`,value:h.fileVersioning.linkField??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,linkField:e.target.value})})]}),(0,l.jsxs)(`div`,{style:{flex:1.6},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Old history fields to clear off the record`}),(0,l.jsx)(s.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resumeHistory`,value:h.fileVersioning.clearRecordKeys??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,clearRecordKeys:e})})]})]}),(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1.4},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which uploads`}),(0,l.jsx)(s.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resume`,value:h.fileVersioning.fields??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,fields:e})})]}),(0,l.jsxs)(`div`,{style:{flex:.7},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How many to keep`}),(0,l.jsx)(s.Input,{size:`small`,type:`number`,min:1,value:h.fileVersioning.keep??2,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,keep:Number(e.target.value)||1})})]}),(0,l.jsxs)(`div`,{style:{flex:1.4},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where the files are grouped`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`candidates/{recordId}/resume`,value:h.fileVersioning.s3Prefix??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,s3Prefix:e.target.value})})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.fileVersioning.deleteEvicted,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,deleteEvicted:e})}),(0,l.jsx)($,{style:{fontSize:13},children:`Also delete the file once it drops off the end`})]}),(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:`Leave that switch OFF unless you are sure. With it off, an older file simply stops being shown and can still be recovered. With it on, it is deleted from storage permanently and cannot be brought back. Keeping 2 means a third upload pushes the first one off the end.`})]})]}),(0,l.jsx)(dT,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`Denormalizations`,description:`Copy fields from ANOTHER module's record onto this payload before insert (e.g. a submission snapshotting job title/client).`,rules:h.denormalizations??[],columns:R,onAdd:()=>w({index:null,rule:null}),onEdit:(e,t)=>w({index:e,rule:t}),onDelete:e=>P(`denormalizations`,(h.denormalizations??[]).filter((t,n)=>n!==e))}),(0,l.jsx)(dT,{icon:(0,l.jsx)(c.ApartmentOutlined,{}),title:`Array Enrichments`,description:`Enrich a payload array of ids (e.g. recruitersData) into objects carrying looked-up fields (name, email) before insert.`,rules:h.arrayEnrichments??[],columns:z,onAdd:()=>E({index:null,rule:null}),onEdit:(e,t)=>E({index:e,rule:t}),onDelete:e=>P(`arrayEnrichments`,(h.arrayEnrichments??[]).filter((t,n)=>n!==e))}),(0,l.jsx)(dT,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`File Field Maps`,description:`Turn an uploaded file field into a nested object (location + filename + who/when) or an array of such objects, instead of a flat S3 path string — needed for schemas like resume/passport/visa.`,rules:h.fileFieldMaps??[],columns:B,onAdd:()=>O({index:null,rule:null}),onEdit:(e,t)=>O({index:e,rule:t}),onDelete:e=>P(`fileFieldMaps`,(h.fileFieldMaps??[]).filter((t,n)=>n!==e))}),(0,l.jsxs)(Z,{title:`Sanitize Fields`,styles:{body:{paddingTop:8}},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Trim and HTML-escape these payload fields before anything else runs — basic XSS-safety for free-text fields (e.g. firstName/lastName) that might later be embedded in an HTML activity comment or email.`}),(0,l.jsx)(s.Select,{mode:`tags`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.sanitizeFields??[],onChange:e=>P(`sanitizeFields`,e)})]}),(0,l.jsxs)(Z,{title:`Defaults`,styles:{body:{paddingTop:8}},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Set a field only when the payload doesn't already carry a non-blank value — status defaults, empty arrays.`}),(0,l.jsx)(tT,{rows:iT(h.defaults),onChange:e=>P(`defaults`,aT(e)),keyPlaceholder:`internalSubmissionStatus.internalSubmissionStatusText`,valuePlaceholder:`"Under Evaluation"`})]}),(0,l.jsx)(dT,{icon:(0,l.jsx)(c.ApartmentOutlined,{}),title:`Hierarchy Expansions`,description:`Walk the reporting chain up (toward admin) or down (toward a team) from a seed user, publishing the result as {{hierarchy.<name>}} for Related Updates / Notify to use.`,rules:h.hierarchyExpands??[],columns:V,onAdd:()=>A({index:null,rule:null}),onEdit:(e,t)=>A({index:e,rule:t}),onDelete:e=>P(`hierarchyExpands`,(h.hierarchyExpands??[]).filter((t,n)=>n!==e))}),(0,l.jsx)(dT,{icon:(0,l.jsx)(c.ThunderboltOutlined,{}),title:`Related Updates`,description:`Best-effort side-effect writes to other collections after a successful insert — board state, activity logs. Combine with ForEach + a Hierarchy Expansion to seed one document per user in a chain.`,rules:h.relatedUpdates??[],columns:ee,onAdd:()=>M({index:null,rule:null}),onEdit:(e,t)=>M({index:e,rule:t}),onDelete:e=>P(`relatedUpdates`,(h.relatedUpdates??[]).filter((t,n)=>n!==e))}),(0,l.jsxs)(Z,{title:`Notify`,styles:{body:{paddingTop:8}},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.notify,onChange:e=>P(`notify`,e?{action:``,subjectDefault:``,bodyDefault:``,toReportingManager:!1,toHierarchy:``}:null)}),(0,l.jsx)($,{style:{fontSize:13},children:`Send a best-effort email after a successful insert`})]}),h.notify&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Action (matched against an EmailTemplates doc)`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`internalSubmit`,value:h.notify.action??``,onChange:e=>P(`notify`,{...h.notify,action:e.target.value}),className:`fg-mono-input`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Notify entire hierarchy chain`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},allowClear:!0,placeholder:`pick a Hierarchy Expansion`,value:h.notify.toHierarchy||void 0,onChange:e=>P(`notify`,{...h.notify,toHierarchy:e??``}),options:N.map(e=>({value:e,label:e}))})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:!!h.notify.toReportingManager,onChange:e=>P(`notify`,{...h.notify,toReportingManager:e})}),(0,l.jsx)($,{style:{fontSize:13},children:`Also notify the caller's direct reporting manager`})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default subject`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`New submission`,value:h.notify.subjectDefault??``,onChange:e=>P(`notify`,{...h.notify,subjectDefault:e.target.value})})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default body (used when no EmailTemplates doc matches)`}),(0,l.jsx)(s.Input.TextArea,{rows:4,value:h.notify.bodyDefault??``,onChange:e=>P(`notify`,{...h.notify,bodyDefault:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,l.jsxs)(Z,{title:`Cache Invalidate`,styles:{body:{paddingTop:8}},children:[(0,l.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:[`Redis key patterns (with `,`{{field}}`,` tokens) to SCAN+DEL after a successful insert.`]}),(0,l.jsx)(s.Select,{mode:`tags`,style:{width:`100%`},placeholder:`jobs:{{tenantId}}:{{businessId}}:{{businessUnitId}}:*`,value:h.cacheInvalidate??[],onChange:e=>P(`cacheInvalidate`,e)})]})]})]})}),(0,l.jsx)(oT,{open:!!C,rule:C?.rule,onClose:()=>w(null),onSave:e=>{P(`denormalizations`,C.index===null?[...h.denormalizations??[],e]:(h.denormalizations??[]).map((t,n)=>n===C.index?e:t)),w(null)}},C?`denorm-${C.index??`new`}`:`denorm-closed`),(0,l.jsx)(sT,{open:!!T,rule:T?.rule,onClose:()=>E(null),onSave:e=>{P(`arrayEnrichments`,T.index===null?[...h.arrayEnrichments??[],e]:(h.arrayEnrichments??[]).map((t,n)=>n===T.index?e:t)),E(null)}},T?`enrich-${T.index??`new`}`:`enrich-closed`),(0,l.jsx)(cT,{open:!!D,rule:D?.rule,onClose:()=>O(null),onSave:e=>{P(`fileFieldMaps`,D.index===null?[...h.fileFieldMaps??[],e]:(h.fileFieldMaps??[]).map((t,n)=>n===D.index?e:t)),O(null)}},D?`filemap-${D.index??`new`}`:`filemap-closed`),(0,l.jsx)(lT,{open:!!k,rule:k?.rule,onClose:()=>A(null),onSave:e=>{P(`hierarchyExpands`,k.index===null?[...h.hierarchyExpands??[],e]:(h.hierarchyExpands??[]).map((t,n)=>n===k.index?e:t)),A(null)}},k?`hier-${k.index??`new`}`:`hier-closed`),(0,l.jsx)(uT,{open:!!j,rule:j?.rule,hierarchyNames:N,onClose:()=>M(null),onSave:e=>{P(`relatedUpdates`,j.index===null?[...h.relatedUpdates??[],e]:(h.relatedUpdates??[]).map((t,n)=>n===j.index?e:t)),M(null)}},j?`ru-${j.index??`new`}`:`ru-closed`)]})}var{Text:mT}=s.Typography,hT=[`beforeCreate`,`afterCreate`,`beforeUpdate`,`afterUpdate`,`beforeDelete`,`afterDelete`],gT=[`sanitizeFields`,`generateSequence`,`duplicateCheck`,`copyFields`,`arrayEnrich`,`setDefaults`,`resolve`,`updateRelated`,`notify`,`invalidateCache`,`webhook`,`linkDocuments`,`captureFileUrls`],_T={linkDocuments:{text:`Share one record’s uploaded files with another, without making a second copy. Used so a submission shows the candidate’s résumé and paperwork, and anything uploaded during the submission appears on the candidate too. Both records get the list of document ids written onto them.`,sample:{sourceModule:`candidates`,sourceIdField:`applicantId`,targetModule:`submissions`,linkField:`documentIds`,fieldNames:[],backLink:!0}},captureFileUrls:{text:`File a document that was generated elsewhere and handed to us as a link — a formatted résumé or an attestation PDF — so it sits with every other attachment instead of being a loose field on the record.`,sample:{linkField:`documentIds`,files:[{urlField:`resumeUrl`,nameField:`resumeFileName`,fieldName:`formattedResume`,defaultName:`Formatted Resume.pdf`},{urlField:`attestationUrl`,nameField:`attestationFileName`,fieldName:`attestation`,defaultName:`Attestation.pdf`}]}}};function vT(e){return JSON.stringify(e??{},null,2)}function yT({action:e,onChange:t,onRemove:n}){let[r,i]=(0,o.useState)(()=>vT(e.config)),[a,u]=(0,o.useState)(!1);return(0,l.jsxs)(`div`,{style:{border:`1px solid #e2e8f0`,borderRadius:8,padding:10,marginTop:8},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:[(0,l.jsx)(s.Select,{size:`small`,style:{width:200},showSearch:!0,value:e.type||void 0,placeholder:`action type`,options:gT.map(e=>({value:e})),onChange:n=>{let r=e.config&&Object.keys(e.config).length>0,i=_T[n]?.sample;t(r||!i?{...e,type:n}:{...e,type:n,config:i})}}),a&&(0,l.jsx)(s.Tag,{color:`red`,children:`invalid JSON`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),style:{marginLeft:`auto`},onClick:n})]}),_T[e.type]&&(0,l.jsx)(`p`,{style:{margin:`8px 0 0`,fontSize:12,color:`#64748b`,lineHeight:1.5},children:_T[e.type].text}),(0,l.jsx)(s.Input.TextArea,{rows:Math.min(14,Math.max(3,r.split(`
|
|
7
|
-
`).length)),value:r,className:`fg-mono-input`,style:{marginTop:8,fontSize:12},onChange:n=>{i(n.target.value);try{t({...e,config:JSON.parse(n.target.value||`{}`)}),u(!1)}catch{u(!0)}}})]})}function bT({open:e,doc:t,moduleOptions:n,onClose:r,onSave:i}){let[a,u]=(0,o.useState)(()=>({key:``,module:``,event:`afterCreate`,order:10,isActive:!0,condition:{},actions:[],...t??{}})),[d,f]=(0,o.useState)(()=>vT(t?.condition)),[p,m]=(0,o.useState)(!1),h=(e,t)=>u(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:r,width:840,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.ApartmentOutlined,{}),` `,t?`Edit Workflow`:`New Workflow`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!a.key?.trim())return s.message.error(`Key is required`);if(!a.module?.trim())return s.message.error(`Module is required`);if(p)return s.message.error(`Condition JSON is invalid`);if(!(a.actions??[]).length)return s.message.error(`At least one action is required`);if((a.actions??[]).some(e=>!e.type))return s.message.error(`Every action needs a type`);let e={...a};delete e.id,delete e._id,i(e)},children:`Save Workflow`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`jobs-create-after`,value:a.key??``,onChange:e=>h(`key`,e.target.value),className:`fg-mono-input`,disabled:!!t})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Module`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},showSearch:!0,value:a.module||void 0,options:n,onChange:e=>h(`module`,e),placeholder:`jobs`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Event`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:a.event,options:hT.map(e=>({value:e})),onChange:e=>h(`event`,e)})]}),(0,l.jsxs)(`div`,{style:{width:90},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Order`}),(0,l.jsx)(s.InputNumber,{size:`small`,style:{width:`100%`},value:a.order??10,onChange:e=>h(`order`,e??10)})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:a.isActive!==!1,onChange:e=>h(`isActive`,e)}),(0,l.jsx)(mT,{style:{fontSize:13},children:`Active`})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:12},children:[`Condition (all must match the payload; empty = always run) `,p&&(0,l.jsx)(s.Tag,{color:`red`,children:`invalid JSON`})]}),(0,l.jsx)(s.Input.TextArea,{rows:2,value:d,className:`fg-mono-input`,style:{fontSize:12},onChange:e=>{f(e.target.value);try{h(`condition`,JSON.parse(e.target.value||`{}`)),m(!1)}catch{m(!0)}}})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginTop:14},children:[(0,l.jsx)(mT,{strong:!0,style:{fontSize:13},children:`Actions (run in order)`}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>h(`actions`,[...a.actions??[],{type:``,config:{}}]),children:`Add Action`})]}),(a.actions??[]).map((e,t)=>(0,l.jsx)(yT,{action:e,onChange:e=>h(`actions`,a.actions.map((n,r)=>r===t?e:n)),onRemove:()=>h(`actions`,a.actions.filter((e,n)=>n!==t))},t)),(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:8},children:[`Config supports `,(0,l.jsx)(`code`,{children:`{{field.path}}`}),`, `,(0,l.jsx)(`code`,{children:`{{now}}`}),`, `,(0,l.jsx)(`code`,{children:`{{__userId}}`}),`,`,` `,(0,l.jsx)(`code`,{children:`{{__userName}}`}),`, and `,(0,l.jsx)(`code`,{children:`{{hierarchy.<name>}}`}),` from a `,(0,l.jsx)(`code`,{children:`resolve`}),` action.`]})]})})}function xT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)(!0),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(null),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(0);(0,o.useEffect)(()=>{let e=!1;return n.qr(`workflows`).then(n=>{e||t(n)}).catch(t=>{e||f(t?.message||`Failed to load workflows`)}).finally(()=>{e||u(!1)}),()=>{e=!0}},[_]),(0,o.useEffect)(()=>{n.yr().then(e=>i(gx(e).map(({value:e,label:t})=>({value:e,label:t})))).catch(()=>i([]))},[]);let y=()=>{u(!0),f(``),v(e=>e+1)};async function b(e){try{await n.ii(`workflows`,e),s.message.success(`Workflow "${e.key}" saved`),m(null),y()}catch(e){s.message.error(e?.message||`Could not save workflow`)}}async function x(e){try{await n.sr(`workflows`,e),s.message.success(`Workflow "${e}" deleted`),y()}catch(e){s.message.error(e?.message||`Could not delete workflow`)}}async function S(e,t){let r={...e};delete r.id,delete r._id;try{await n.ii(`workflows`,{...r,isActive:t}),y()}catch(e){s.message.error(e?.message||`Could not update workflow`)}}let C=(0,o.useMemo)(()=>e.filter(e=>!h||e.module===h),[e,h]);return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ApartmentOutlined,{}),title:`Workflows`,extra:(0,l.jsxs)(s.Space,{size:8,children:[(0,l.jsx)(s.Select,{size:`small`,style:{minWidth:160},allowClear:!0,placeholder:`Filter by module`,options:r,value:h||void 0,onChange:e=>g(e??``)}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:y,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>m({doc:null}),children:`New Workflow`})]}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:13},children:[`Event-driven behavior per module — reference ids, duplicate checks, snapshots, hierarchy fan-outs, board updates, notifications, cache — executed by the platform Workflow Engine on every create/update/delete.`,(0,l.jsx)(s.Tag,{style:{marginLeft:8},children:`before*`}),` actions can block the write; `,(0,l.jsx)(s.Tag,{children:`after*`}),` actions are best-effort.`]})]}),(0,l.jsxs)(Z,{styles:{body:{paddingTop:8}},children:[d&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:d,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:a,children:[(0,l.jsxs)(`div`,{style:{marginBottom:8},children:[(0,l.jsx)(s.Badge,{count:C.length,showZero:!0,color:`var(--color-brand)`}),` `,(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`workflows`})]}),(0,l.jsx)(s.Table,{rowKey:`key`,dataSource:C,columns:[{title:`Key`,dataIndex:`key`,key:`key`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Module`,dataIndex:`module`,key:`module`,width:130,render:e=>(0,l.jsx)(s.Tag,{color:`geekblue`,children:e})},{title:`Event`,dataIndex:`event`,key:`event`,width:130,render:e=>(0,l.jsx)(s.Tag,{color:String(e).startsWith(`before`)?`purple`:`green`,children:e})},{title:`Actions`,key:`acts`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(t.actions??[]).map((e,t)=>(0,l.jsx)(s.Tag,{style:{margin:0},children:e.type},t))})},{title:`Order`,dataIndex:`order`,key:`order`,width:70,align:`center`},{title:`Active`,key:`active`,width:80,align:`center`,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:t.isActive!==!1,onChange:e=>S(t,e)})},{title:``,key:`ops`,width:90,align:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>m({doc:t})})}),(0,l.jsx)(s.Popconfirm,{title:`Delete workflow "${t.key}"?`,onConfirm:()=>x(t.key),children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,l.jsx)(s.Empty,{description:`No workflows configured.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]}),(0,l.jsx)(bT,{open:!!p,doc:p?.doc,moduleOptions:r,onClose:()=>m(null),onSave:b},p?p.doc?.key??`new`:`closed`)]})}var{Text:ST}=s.Typography,CT=e=>e?._id??e?.id,wT=`masters`;function TT(){return{tenantId:localStorage.getItem(`tenantId`)||``,businessId:localStorage.getItem(`businessId`)||``,businessUnitId:localStorage.getItem(`businessUnitId`)||``}}function ET(e){return e&&typeof e==`object`?e.$oid??e.oid??e.id??``:e??``}function DT(e,t){return t.map(t=>ET(e?.[t])).find(e=>e!=null&&e!==``)??``}function OT(e,t){return[[t.tenantId,[`tid`,`tenantId`]],[t.businessId,[`bid`,`businessId`]],[t.businessUnitId,[`buid`,`businessUnitId`]]].every(([t,n])=>{if(!t)return!0;let r=String(DT(e,n));return!r||r===String(t)})}function kT(e){return Array.isArray(e?.masterFeeds)?e.masterFeeds:[]}function AT(e){return e.reduce((e,t)=>Math.max(e,Number(t?.uniqueId)||0),0)+1}function jT(e){return Array.isArray(e?.taxHistory)?e.taxHistory:[]}function MT(e){let t=e?.taxValue;if(t!=null&&t!==``)return Number(t);let n=jT(e).at(-1),r=n?.taxValue??n?.value;return r!=null&&r!==``?Number(r):void 0}function NT(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(t)}function PT(e){let t=jT(e).at(-1);return t?.updatedAt??t?.timestamp??e?.updatedAt}function FT({open:e,record:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[c,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),h=(0,o.useRef)(null),g=!!t;(0,o.useEffect)(()=>{e&&queueMicrotask(()=>{a.resetFields(),a.setFieldsValue({name:t?.name??void 0,taxValue:MT(t)}),f(t?.name?[{label:t.name,value:t.name}]:[])})},[e,t,a]);function _(e){if(h.current&&clearTimeout(h.current),!e||e.trim().length<2){f([]);return}m(!0),h.current=setTimeout(()=>{n.Ar(e.trim()).then(f).catch(()=>f([])).finally(()=>m(!1))},350)}async function v(){let e=await a.validateFields(),r=Number(e.taxValue),o={name:e.name,taxValue:r,taxHistory:{taxValue:r}};u(!0);try{g?await n.pi(`locations`,CT(t),o):await n.Zn(`locations`,o),s.message.success(g?`Tax updated`:`Location and tax created`),i()}catch(e){s.message.error(e?.message||`Could not save location and tax`)}finally{u(!1)}}return(0,l.jsx)(s.Modal,{open:e,onCancel:r,onOk:v,confirmLoading:c,destroyOnHidden:!0,title:g?`Edit Tax — ${t?.name??``}`:`New Location`,children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`name`,label:`Location`,rules:[{required:!0,message:`Location is required`}],tooltip:g?`Location cannot be changed once created — only the tax is editable.`:`Search and pick from the location master.`,children:(0,l.jsx)(s.Select,{showSearch:!0,disabled:g,placeholder:`Type at least 2 characters to search…`,filterOption:!1,onSearch:_,notFoundContent:p?`Searching…`:null,options:d})}),(0,l.jsx)(s.Form.Item,{name:`taxValue`,label:`Tax`,rules:[{required:!0,message:`Tax is required`},{type:`number`,min:0,max:100,message:`Tax must be between 0 and 100`}],children:(0,l.jsx)(s.InputNumber,{style:{width:`100%`},min:0,max:100,step:.01,suffix:`%`,placeholder:`8.875`,autoFocus:g})})]})})}function IT({record:e}){let t=[...jT(e)].reverse();return t.length?(0,l.jsx)(s.Space,{direction:`vertical`,size:4,style:{padding:`4px 8px`},children:t.map((e,t)=>(0,l.jsxs)(s.Space,{size:10,children:[(0,l.jsxs)(s.Tag,{color:t===0?`green`:`default`,style:{margin:0},children:[e.taxValue??e.value,`%`]}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:12},children:NT(e.updatedAt??e.timestamp)}),t===0&&(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:12},children:`(current)`})]},t))}):(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No tax history yet`})}function LT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null);function p(){i(!0),n.Kr(`locations`).then(({items:e})=>t(e)).catch(e=>s.message.error(e?.message||`Could not load locations`)).finally(()=>i(!1))}(0,o.useEffect)(()=>{queueMicrotask(p)},[]);async function m(e){try{await n.or(`locations`,e),s.message.success(`Location deleted`),p()}catch(e){s.message.error(e?.message||`Could not delete location`)}}return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsx)(Z,{title:`${e.length} location${e.length===1?``:`s`}`,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New location`})]}),children:(0,l.jsx)(s.Table,{rowKey:CT,columns:[{title:`Location`,dataIndex:`name`,key:`name`},{title:`Tax`,key:`taxValue`,width:100,render:(e,t)=>{let n=MT(t);return Number.isFinite(n)?(0,l.jsxs)(s.Tag,{color:`blue`,children:[n,`%`]}):`—`}},{title:`Tax updated`,key:`taxUpdatedAt`,render:(e,t)=>NT(PT(t))},{title:`Created`,key:`createdAt`,responsive:[`lg`],render:(e,t)=>NT(t?.createdAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit tax`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this location?`,onConfirm:()=>m(CT(t)),children:(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}],dataSource:e,loading:r,size:`small`,pagination:!1,className:`fg-table`,expandable:{expandedRowRender:e=>(0,l.jsx)(IT,{record:e}),rowExpandable:e=>jT(e).length>0},locale:{emptyText:`No locations yet. Click "New location" to add one.`}})}),(0,l.jsx)(FT,{open:a,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}function RT({open:e,record:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[u,d]=(0,o.useState)(!1),f=!!t,p=s.Form.useWatch(`masterName`,a),m=s.Form.useWatch(`masterFeeds`,a)??[],h=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(p??t?.masterName??``).trim().toLowerCase()),g=m.map(e=>({label:String(e?.name??``).trim()||`Status ${e?.uniqueId??``}`,value:Number(e?.uniqueId)})).filter(e=>Number.isInteger(e.value)&&e.value>0);function _(e,t){if(!t){a.setFieldValue([`masterFeeds`,e,`isInitialStatus`],!1);return}(a.getFieldValue(`masterFeeds`)??[]).forEach((t,n)=>{a.setFieldValue([`masterFeeds`,n,`isInitialStatus`],n===e)})}function v(e,t){a.setFieldValue([`masterFeeds`,e,`isTerminalStatus`],t),t&&a.setFieldValue([`masterFeeds`,e,`allowedNextStatusIds`],[])}(0,o.useEffect)(()=>{e&&queueMicrotask(()=>{a.resetFields();let e=t?.masterName??``,n=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(e).trim().toLowerCase()),r=kT(t),i=r.length?r.map(e=>({...e})):[{uniqueId:1,name:``,type:`neutral`,status:!0,isdeleted:!1}];if(n&&!i.some(e=>e?.status!==!1&&e?.isdeleted!==!0&&e?.isInitialStatus===!0)){let e=i.findIndex(e=>e?.status!==!1&&e?.isdeleted!==!0);e>=0&&(i=i.map((t,n)=>({...t,isInitialStatus:n===e,isTerminalStatus:t?.isTerminalStatus===!0,allowedNextStatusIds:Array.isArray(t?.allowedNextStatusIds)?t.allowedNextStatusIds:[]})))}a.setFieldsValue({masterName:e,schemaVersion:t?.schemaVersion??1,masterFeeds:i})})},[e,t,a]),(0,o.useEffect)(()=>{!e||!h||(Number(a.getFieldValue(`schemaVersion`))||1)<2&&a.setFieldValue(`schemaVersion`,2)},[e,h,a]);async function y(){let e=await a.validateFields(),r=TT(),o=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(e.masterName??``).trim().toLowerCase()),c=(e.masterFeeds??[]).map((e,t)=>{let n=Number(e.uniqueId)||t+1,r=o&&e.isTerminalStatus===!0,i=o&&!r?[...new Set((e.allowedNextStatusIds??[]).map(Number).filter(e=>Number.isInteger(e)&&e>0&&e!==n))]:[];return{uniqueId:n,name:String(e.name??``).trim(),type:String(e.type??``).trim(),status:e.status!==!1,...o?{isInitialStatus:e.isInitialStatus===!0,isTerminalStatus:r,allowedNextStatusIds:i}:{},isdeleted:e.isdeleted===!0}}).filter(e=>e.name);if(o){let e=c.filter(e=>e.status&&!e.isdeleted&&e.isInitialStatus);if(e.length===0){let t=c.findIndex(e=>e.status&&!e.isdeleted);t>=0&&(c[t]={...c[t],isInitialStatus:!0},e=[c[t]],a.setFieldValue([`masterFeeds`,t,`isInitialStatus`],!0))}if(e.length!==1){s.message.error(`Client Submission Status must have exactly one active Initial Status.`);return}}let l={...r,tid:r.tenantId,bid:r.businessId,buid:r.businessUnitId,schemaVersion:o?Math.max(2,Number(e.schemaVersion)||2):Number(e.schemaVersion)||1,masterName:e.masterName.trim(),masterFeeds:c};d(!0);try{f?await n.pi(wT,CT(t),l):await n.Zn(wT,l),s.message.success(f?`Master value updated`:`Master value created`),i()}catch(e){s.message.error(e?.message||`Could not save master value`)}finally{d(!1)}}return(0,l.jsx)(s.Modal,{open:e,onCancel:r,onOk:y,confirmLoading:u,destroyOnHidden:!0,title:f?`Edit Master Feed`:`New Master Feed`,width:1040,children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`masterName`,label:`Master Name`,rules:[{required:!0,message:`Master name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`blacklistType`,autoFocus:!f,disabled:f})}),(0,l.jsx)(s.Form.Item,{name:`schemaVersion`,label:`Schema Version`,children:(0,l.jsx)(s.InputNumber,{min:1,style:{width:`100%`}})}),(0,l.jsx)(s.Form.List,{name:`masterFeeds`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(s.Space,{direction:`vertical`,style:{width:`100%`},size:10,children:[e.map(({key:e,name:t})=>(0,l.jsxs)(s.Space,{align:`baseline`,wrap:!0,children:[(0,l.jsx)(s.Form.Item,{name:[t,`uniqueId`],label:`ID`,rules:[{required:!0,message:`ID required`}],children:(0,l.jsx)(s.InputNumber,{min:1,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[t,`name`],label:`Name`,rules:[{required:!0,message:`Name required`}],children:(0,l.jsx)(s.Input,{placeholder:`Dropdown label`,style:{width:280}})}),(0,l.jsx)(s.Form.Item,{name:[t,`type`],label:`Type`,children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`Select type`,style:{width:120},options:[{label:`Positive`,value:`positive`},{label:`Neutral`,value:`neutral`},{label:`Negative`,value:`negative`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`status`],label:`Status`,initialValue:!0,children:(0,l.jsx)(s.Select,{style:{width:110},options:[{label:`Active`,value:!0},{label:`Inactive`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`isdeleted`],label:`Deleted`,initialValue:!1,children:(0,l.jsx)(s.Select,{style:{width:110},options:[{label:`No`,value:!1},{label:`Yes`,value:!0}]})}),h&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[t,`isInitialStatus`],label:`Initial`,initialValue:!1,tooltip:`The initial status is the only option shown before a candidate has a client submission status. Only one active initial status is allowed.`,children:(0,l.jsx)(s.Select,{style:{width:100},onChange:e=>_(t,e===!0),options:[{label:`Yes`,value:!0},{label:`No`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`isTerminalStatus`],label:`End Status`,initialValue:!1,tooltip:`End Status stops the configured client submission flow. Once reached, Change Status is hidden and no next statuses are allowed.`,children:(0,l.jsx)(s.Select,{style:{width:105},onChange:e=>v(t,e===!0),options:[{label:`Yes`,value:!0},{label:`No`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:(e,n)=>e?.masterFeeds?.[t]?.isTerminalStatus!==n?.masterFeeds?.[t]?.isTerminalStatus||e?.masterFeeds?.[t]?.uniqueId!==n?.masterFeeds?.[t]?.uniqueId||e?.masterFeeds!==n?.masterFeeds,children:({getFieldValue:e})=>{let n=e([`masterFeeds`,t,`isTerminalStatus`])===!0,r=Number(e([`masterFeeds`,t,`uniqueId`]));return(0,l.jsx)(s.Form.Item,{name:[t,`allowedNextStatusIds`],label:`Allowed Next Statuses`,tooltip:n?`End Status cannot move to another status.`:`Only these statuses will appear after the current status is saved.`,children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,disabled:n,placeholder:n?`End status`:`Select next statuses`,style:{minWidth:280},options:g.filter(e=>e.value!==r)})})}})]}),(0,l.jsx)(s.Tooltip,{title:`Remove row`,children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>n(t)})})]},e)),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({uniqueId:AT(a.getFieldValue(`masterFeeds`)??[]),name:``,type:`neutral`,status:!0,isdeleted:!1,...h?{isInitialStatus:!1,isTerminalStatus:!1,allowedNextStatusIds:[]}:{}}),children:`Add feed value`})]})})]})})}function zT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null),[p,m]=(0,o.useState)(``);function h(){let e=TT();i(!0),n.Kr(wT,{limit:500}).then(({items:n})=>{let r=n.filter(t=>OT(t,e));t(r)}).catch(e=>s.message.error(e?.message||`Could not load master values`)).finally(()=>i(!1))}(0,o.useEffect)(()=>{queueMicrotask(h)},[]);async function g(e){try{await n.or(wT,e),s.message.success(`Master value deleted`),h()}catch(e){s.message.error(e?.message||`Could not delete master value`)}}let _=p?e.filter(e=>String(e?.masterName??``).toLowerCase()===p.toLowerCase()):e,v=[...new Set(e.map(e=>e?.masterName).filter(Boolean))].sort((e,t)=>String(e).localeCompare(String(t))).map(e=>({label:e,value:e}));return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsx)(Z,{title:`${_.length} master${_.length===1?``:`s`}`,extra:(0,l.jsxs)(s.Space,{wrap:!0,children:[(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,placeholder:`Filter master name`,value:p||void 0,options:v,onChange:e=>m(e??``),style:{minWidth:220}}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:h,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New master`})]}),children:(0,l.jsx)(s.Table,{rowKey:CT,columns:[{title:`Master Name`,dataIndex:`masterName`,key:`masterName`,width:180},{title:`Feed Values`,key:`masterFeeds`,render:(e,t)=>(0,l.jsx)(s.Space,{wrap:!0,children:kT(t).filter(e=>!e.isdeleted).map(e=>(0,l.jsx)(s.Tag,{color:e.status===!1?`default`:`blue`,children:e.name},e.uniqueId??e.name))})},{title:`Count`,key:`count`,width:90,render:(e,t)=>kT(t).filter(e=>!e.isdeleted).length},{title:`Updated`,key:`updatedAt`,responsive:[`lg`],render:(e,t)=>NT(t?.updatedAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this master?`,onConfirm:()=>g(CT(t)),children:(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}],dataSource:_,loading:r,size:`small`,pagination:{pageSize:10,showSizeChanger:!0},className:`fg-table`,locale:{emptyText:`No masters yet. Click "New master" to add one.`}})}),(0,l.jsx)(RT,{open:a,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),h()}})]})}function BT(){return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`Master Collections`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:13},children:`Create, update, and delete master documents, then customize multiple dropdown values inside masterFeeds. Records are saved with the current tenant, business, business unit, and master name.`})]}),(0,l.jsx)(zT,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`Location Tax Master`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:13},children:`Pick a location from the master list and set its tax. Once added, only the tax can be changed — every change is kept in a timeline with its timestamp. Expand a row to see the full tax history.`})]}),(0,l.jsx)(LT,{})]})}var{Text:VT,Title:HT}=s.Typography;function UT(){let[e]=s.Form.useForm(),[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null),[p,m]=(0,o.useState)(!1);async function h(){i(!0);try{n(await zb())}catch(e){s.message.error(e.message||`Unable to load menus`)}finally{i(!1)}}(0,o.useEffect)(()=>{h()},[]);let g=(0,o.useMemo)(()=>t.filter(e=>!d||e.menu_id!==d.menu_id).map(e=>({label:e.menu_name,value:e.menu_id})),[d,t]);function _(){f(null),e.resetFields(),e.setFieldsValue({menu_type:`MENU`,display_order:t.length+1,status:`ACTIVE`}),m(!0)}function v(t){f(t),e.setFieldsValue(t),m(!0)}async function y(e){u(!0);try{d?await Vb(d.menu_id,e):await Bb(e),s.message.success(d?`Menu updated`:`Menu created`),m(!1),await h()}catch(e){s.message.error(e.message||`Unable to save menu`)}finally{u(!1)}}async function b(e){try{await Hb(e),s.message.success(`Menu deleted`),await h()}catch(e){s.message.error(e.message||`Unable to delete menu`)}}return(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(HT,{level:4,children:`Menus`}),(0,l.jsx)(VT,{type:`secondary`,children:`Manage records in the MongoDB menus collection.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:_,children:`Add Menu`})]}),(0,l.jsx)(s.Table,{rowKey:`menu_id`,loading:r,columns:[{title:`Name`,dataIndex:`menu_name`},{title:`Key`,dataIndex:`menu_key`,render:e=>(0,l.jsx)(s.Tag,{children:e})},{title:`Route / API`,dataIndex:`api_url`},{title:`Type`,dataIndex:`menu_type`,width:110},{title:`Order`,dataIndex:`display_order`,width:80},{title:`Status`,dataIndex:`status`,width:100,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Edit menu`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>v(t)}),(0,l.jsx)(s.Popconfirm,{title:`Delete menu?`,onConfirm:()=>b(t.menu_id),children:(0,l.jsx)(s.Button,{"aria-label":`Delete menu`,danger:!0,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],dataSource:t,size:`small`,pagination:{pageSize:10}}),(0,l.jsx)(s.Modal,{title:d?`Edit Menu`:`Add Menu`,open:p,onCancel:()=>m(!1),onOk:()=>e.submit(),confirmLoading:a,destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,onFinish:y,children:[(0,l.jsx)(s.Form.Item,{name:`menu_name`,label:`Menu name`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{})}),(0,l.jsx)(s.Form.Item,{name:`menu_key`,label:`Menu key`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`jobs`})}),(0,l.jsx)(s.Form.Item,{name:`api_url`,label:`Route / API URL`,children:(0,l.jsx)(s.Input,{placeholder:`/jobs`})}),(0,l.jsx)(s.Form.Item,{name:`component_name`,label:`Component`,children:(0,l.jsx)(s.Input,{placeholder:`Jobs`})}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{name:`menu_type`,label:`Type`,children:(0,l.jsx)(s.Select,{options:[{value:`MENU`},{value:`FOOTER`},{value:`CHILD`}]})}),(0,l.jsx)(s.Form.Item,{name:`parent_menu_id`,label:`Parent`,children:(0,l.jsx)(s.Select,{allowClear:!0,options:g})})]}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{name:`display_order`,label:`Display order`,children:(0,l.jsx)(s.InputNumber,{min:0})}),(0,l.jsx)(s.Form.Item,{name:`status`,label:`Status`,children:(0,l.jsx)(s.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]}),(0,l.jsx)(s.Form.Item,{name:`icon`,label:`Icon`,children:(0,l.jsx)(s.Input,{placeholder:`AppstoreOutlined`})})]})})]})}var WT=`/admin/global`;function GT(e){let t=e?.data??e;return t&&typeof t==`object`&&`data`in t&&`total`in t?{items:t.data??[],total:t.total??0}:{items:Array.isArray(t)?t:[],total:Array.isArray(t)?t.length:0}}function KT(e={}){let t=new URLSearchParams;Object.entries(e).forEach(([e,n])=>{n!=null&&n!==``&&t.append(e,String(n))});let n=t.toString();return n?`?${n}`:``}function qT(e,t){let n=String(e||``).trim().toLowerCase();if(!n)throw Error(`regionPath: a region key is required`);return`/admin/regions/${encodeURIComponent(n)}${t}`}async function JT({includeInactive:e=!1,signal:n}={}){let r=await t.o(t.x,`${WT}/regions${KT({includeInactive:e||void 0})}`,{signal:n}),i=r?.data??r;return Array.isArray(i)?i:[]}async function YT(e,{allowEmpty:n=!1,signal:r}={}){return t.o(t.x,`${WT}/regions${KT({allowEmpty:n||void 0})}`,{method:`POST`,body:JSON.stringify(e),signal:r})}async function XT(e,{signal:n}={}){return t.o(t.x,`${WT}/regions/${encodeURIComponent(e)}`,{method:`DELETE`,signal:n})}async function ZT({signal:e}={}){let n=await t.o(t.x,`${WT}/platform-access`,{signal:e}),r=n?.data??n;return Array.isArray(r)?r:[]}async function QT(e,{signal:n}={}){return t.o(t.x,`${WT}/platform-access`,{method:`POST`,body:JSON.stringify(e),signal:n})}async function $T(e,{signal:n}={}){return t.o(t.x,`${WT}/platform-access/${encodeURIComponent(e)}`,{method:`DELETE`,signal:n})}async function eE({signal:e}={}){try{return await JT({signal:e}),!0}catch(e){if(e?.name===`AbortError`)throw e;return!1}}async function tE({search:e,regionKey:n,limit:r=25,offset:i=0,signal:a}={}){return GT(await t.o(t.x,`${WT}/users${KT({search:e,regionKey:n,limit:r,offset:i})}`,{signal:a}))}async function nE({regionKey:e,action:n,limit:r=50,offset:i=0,signal:a}={}){return GT(await t.o(t.x,`${WT}/audit${KT({regionKey:e,action:n,limit:r,offset:i})}`,{signal:a}))}async function rE(e,{signal:n}={}){let r=await t.o(t.x,qT(e,`/detail-defaults`),{signal:n});return r?.data??r??{}}async function iE(e,n,{signal:r}={}){return t.o(t.x,qT(e,`/detail-defaults`),{method:`POST`,body:JSON.stringify(n),signal:r})}async function aE(e,{signal:n}={}){return GT(await t.o(t.x,qT(e,`/users`),{signal:n}))}async function oE(e,{signal:n}={}){return GT(await t.o(t.x,qT(e,`/roles`),{signal:n}))}var sE=[{value:`regions.read`,label:`Read regions & config`},{value:`config.write`,label:`Write regional config`},{value:`users.read`,label:`Read users across regions`},{value:`users.write`,label:`Move users / memberships`},{value:`access.admin`,label:`Grant & revoke platform access`}];async function cE({signal:e}={}){let n=await t.o(t.x,`${WT}/defaults`,{signal:e}),r=n?.data??n??{};return{regions:r.regions??[],common:r.common??{}}}async function lE(e,{regionKeys:n,signal:r}={}){return t.o(t.x,`${WT}/defaults`,{method:`PUT`,body:JSON.stringify({values:e,regionKeys:n??[]}),signal:r})}var uE=[{name:`phoneCountryCode`,label:`Phone country code`,placeholder:`+1`,emptyMeans:`Print no dial code at all.`},{name:`phoneFormat`,label:`Phone format`,placeholder:`3-3-4`},{name:`dateFormat`,label:`Date format`,placeholder:`DD MMM YYYY`,help:`Calendar dates only — no time, no zone.`},{name:`dateTimeFormat`,label:`Date & time format`,placeholder:`DD MMM YYYY, hh:mm A`},{name:`timeZone`,label:`Time zone`,placeholder:`Asia/Kolkata`,emptyMeans:`Each viewer sees their own browser's zone.`},{name:`booleanTrueLabel`,label:`Yes label`,placeholder:`Yes`},{name:`booleanFalseLabel`,label:`No label`,placeholder:`No`},{name:`emptyPlaceholder`,label:`Empty placeholder`,placeholder:`-`},{name:`separator`,label:`Separator`,placeholder:` · `},{name:`s3BaseUrl`,label:`S3 base URL`,placeholder:`https://…`},{name:`region`,label:`Region profile`,placeholder:`US / UK / IND`,help:`Key into FormGroup.regionRules. Usually set per region, not globally.`}];async function dE({serviceKey:e=`pyOps`,signal:n}={}){let r=await t.o(t.x,`${WT}/ai-services${KT({serviceKey:e})}`,{signal:n}),i=r?.data??r??{};return{serviceKey:i.serviceKey??e,regions:i.regions??[],missingRegions:i.missingRegions??[],consistent:!!i.consistent}}async function fE(e,{regionKeys:n,signal:r}={}){return t.o(t.x,`${WT}/ai-services`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...e,regionKeys:n??[]}),signal:r})}var{Text:pE}=s.Typography;function mE({regions:e}){let[t,n]=(0,o.useState)(!0),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)([]),[d,f]=(0,o.useState)({}),[p,m]=(0,o.useState)({}),[h,g]=(0,o.useState)([]),_=(0,o.useRef)(null),v=(0,o.useCallback)(async()=>{_.current?.abort();let e=new AbortController;_.current=e,n(!0);try{let{regions:t,common:n}=await cE({signal:e.signal});u(t),f(n),m({})}catch(e){e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load defaults`)}finally{n(!1)}},[]);(0,o.useEffect)(()=>(queueMicrotask(v),()=>_.current?.abort()),[v]);let y=(0,o.useMemo)(()=>(a.length?a:e).map(e=>e.regionKey||e.key),[a,e]),b=h.length?h:y,x=Object.keys(p),S=async()=>{if(!x.length){s.message.info(`Nothing changed`);return}i(!0);try{await lE(p,{regionKeys:h}),s.message.success(`Updated ${x.length} setting${x.length===1?``:`s`} across ${b.length} region${b.length===1?``:`s`}`),await v()}catch(e){s.message.error(e?.message||`Could not save defaults`)}finally{i(!1)}};if(t)return(0,l.jsx)(`div`,{style:{padding:48,textAlign:`center`},children:(0,l.jsx)(s.Spin,{})});if(!y.length)return(0,l.jsx)(s.Empty,{description:`No active regions. Register regions before setting defaults across them.`});let C=[{title:`Setting`,dataIndex:`label`,key:`label`,width:210,render:(e,t)=>(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(pE,{strong:!0,children:e}),(0,l.jsx)(pE,{type:`secondary`,style:{fontSize:11},children:t.name})]})},...a.map(e=>({title:e.label?.trim()||e.regionKey,key:e.regionKey,width:150,render:(t,n)=>{if(!Object.prototype.hasOwnProperty.call(e.values||{},n.name))return(0,l.jsx)(s.Tooltip,{title:`Never set for this region — it falls back to the built-in default.`,children:(0,l.jsx)(pE,{type:`secondary`,style:{fontSize:12},children:`not set`})});let r=e.values[n.name];return r===``?(0,l.jsx)(s.Tooltip,{title:n.emptyMeans||`Explicitly set to empty.`,children:(0,l.jsx)(s.Tag,{color:`blue`,children:`empty`})}):(0,l.jsx)(pE,{style:{fontSize:12},children:String(r)})}})),{title:`Set for all`,key:`edit`,width:220,render:(e,t)=>{let n=Object.prototype.hasOwnProperty.call(p,t.name);return(0,l.jsxs)(s.Space,{direction:`vertical`,size:2,style:{width:`100%`},children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:t.placeholder,value:n?p[t.name]:void 0,status:n?`warning`:void 0,onChange:e=>m(n=>({...n,[t.name]:e.target.value}))}),n&&(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,style:{padding:0,height:18,fontSize:11},onClick:()=>m(e=>{let n={...e};return delete n[t.name],n}),children:`cancel`}),p[t.name]===``&&t.emptyMeans&&(0,l.jsx)(s.Tooltip,{title:t.emptyMeans,children:(0,l.jsx)(s.Tag,{color:`blue`,style:{fontSize:10,margin:0},children:`will save as empty`})})]})]})}}],w=uE.map(e=>({...e,key:e.name})),T=w.filter(e=>!Object.prototype.hasOwnProperty.call(d,e.name)).length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,icon:(0,l.jsx)(c.GlobalOutlined,{}),style:{marginBottom:12},message:`These settings are written into every region you select`,description:(0,l.jsxs)(l.Fragment,{children:[`They drive how dates, times, phone numbers and empty values render — in forms, detail views and cards alike. Each region keeps its own copy, so you can still override one afterwards.`,T>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`br`,{}),(0,l.jsx)(c.WarningOutlined,{style:{color:`#d46b08`}}),` `,(0,l.jsx)(pE,{strong:!0,children:T}),` of `,w.length,` settings are not currently identical across regions — the columns below show what each one holds.`]})]})}),(0,l.jsxs)(s.Space,{style:{marginBottom:12},wrap:!0,children:[(0,l.jsx)(pE,{strong:!0,children:`Apply to:`}),(0,l.jsx)(s.Checkbox,{checked:h.length===0,onChange:e=>g(e.target.checked?[]:y),children:`All regions`}),h.length>0&&(0,l.jsx)(s.Checkbox.Group,{value:h,onChange:g,options:a.map(e=>({label:e.label?.trim()||e.regionKey,value:e.regionKey}))}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:v,children:`Refresh`}),(0,l.jsx)(s.Button,{type:`primary`,loading:r,disabled:!x.length,onClick:S,children:x.length?`Save ${x.length} change${x.length===1?``:`s`} to ${b.length} region${b.length===1?``:`s`}`:`Save`})]}),(0,l.jsx)(s.Table,{size:`small`,rowKey:`name`,columns:C,dataSource:w,pagination:!1,scroll:{x:`max-content`}}),(0,l.jsx)(pE,{type:`secondary`,style:{display:`block`,marginTop:12,fontSize:12},children:`Only the rows you edit are sent. Everything else is left exactly as it is, per region.`})]})}var{Text:hE,Paragraph:gE}=s.Typography;function _E({regions:e=[]}){let[t]=s.Form.useForm(),[n,r]=(0,o.useState)(!0),[i,a]=(0,o.useState)(!1),[c,u]=(0,o.useState)([]),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!0),[h,g]=(0,o.useState)(``),[_]=(0,o.useState)(`pyOps`),v=(0,o.useRef)(null),y=(0,o.useCallback)(async()=>{v.current?.abort();let e=new AbortController;v.current=e,r(!0),g(``);try{let n=await dE({serviceKey:_,signal:e.signal});u(n.regions),f(n.missingRegions),m(n.consistent);let r=n.regions.find(e=>e.exists);t.setFieldsValue({serviceKey:n.serviceKey,baseUrl:r?.baseUrl??``,authHeader:r?.authHeader??``,enabled:!r||r.enabled})}catch(e){e?.name!==`AbortError`&&g(e?.message||`Failed to load AI services`)}finally{r(!1)}},[t,_]);(0,o.useEffect)(()=>(queueMicrotask(y),()=>v.current?.abort()),[y]);async function b(){let e;try{e=await t.validateFields()}catch{return}a(!0);try{let n={serviceKey:e.serviceKey,baseUrl:e.baseUrl,authHeader:e.authHeader??``,enabled:e.enabled!==!1};e.authValue&&(n.authValue=e.authValue);let r=await fE(n,{regionKeys:[]}),i=r?.data?.regions??r?.regions??[];s.message.success(`Applied to ${i.length||`all`} region${i.length===1?``:`s`}`),t.setFieldsValue({authValue:``}),await y()}catch(e){s.message.error(e?.message||`Could not apply`)}finally{a(!1)}}return(0,l.jsxs)(s.Spin,{spinning:n,children:[h&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:h,style:{marginBottom:12}}),!n&&d.length>0&&(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:12},message:`${d.length} region${d.length===1?``:`s`} cannot use AI actions`,description:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(gE,{style:{marginBottom:6},children:[(0,l.jsx)(`b`,{children:d.join(`, `)}),` `,d.length===1?`has`:`have`,` no`,` `,(0,l.jsx)(`code`,{children:_}),` registration, so every AI action there fails with “AI service is not configured for this tenant”.`]}),(0,l.jsx)(hE,{type:`secondary`,children:`Apply the settings below to all regions to fix this.`})]})}),!n&&d.length===0&&!p&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Regions disagree`,description:`Every region has the service, but not with the same base URL or enabled state.`}),(0,l.jsx)(s.Card,{size:`small`,title:`Apply ${_} to every region`,style:{marginBottom:16},children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,disabled:i,children:[(0,l.jsx)(s.Form.Item,{name:`serviceKey`,label:`Service key`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{disabled:!0})}),(0,l.jsx)(s.Form.Item,{name:`baseUrl`,label:`Base URL`,rules:[{required:!0,message:`Base URL is required`}],extra:(0,l.jsxs)(l.Fragment,{children:[`The action's endpoint path is appended to this — e.g.`,` `,(0,l.jsx)(`code`,{children:`/v1/parse`}),`. This URL is called by the `,(0,l.jsx)(`b`,{children:`backend`}),`, not the browser, so it must be reachable `,(0,l.jsx)(`b`,{children:`from the API server`}),`. A public URL works only if a reverse-proxy rule forwards it to the Python service`,(0,l.jsx)(`b`,{children:` with the path prefix stripped`}),`; an internal address (`,(0,l.jsx)(`code`,{children:`host:7020`}),`) needs no proxy rule at all.`]}),children:(0,l.jsx)(s.Input,{placeholder:`https://zinnext.com/pyOps`})}),(0,l.jsx)(s.Form.Item,{name:`authHeader`,label:`Auth header`,extra:`Optional, e.g. Authorization or x-api-key.`,children:(0,l.jsx)(s.Input,{placeholder:`x-api-key`})}),(0,l.jsx)(s.Form.Item,{name:`authValue`,label:`Credential`,extra:`Leave blank to keep the stored credential unchanged. It is never displayed.`,children:(0,l.jsx)(s.Input.Password,{placeholder:`unchanged`,autoComplete:`new-password`})}),(0,l.jsx)(s.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})}),(0,l.jsx)(s.Button,{type:`primary`,loading:i,onClick:b,children:`Apply to all regions`})]})}),(0,l.jsx)(s.Table,{size:`small`,rowKey:`regionKey`,columns:[{title:`Region`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(hE,{strong:!0,children:e||t.regionKey}),(0,l.jsx)(s.Tag,{children:t.regionKey})]})},{title:`Status`,key:`status`,width:150,render:(e,t)=>t.exists?(0,l.jsx)(s.Tag,{color:t.enabled?`green`:`orange`,children:t.enabled?`Configured`:`Disabled`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Not configured`})},{title:`Base URL`,dataIndex:`baseUrl`,key:`baseUrl`,render:e=>e?(0,l.jsx)(`code`,{children:e}):(0,l.jsx)(hE,{type:`secondary`,children:`—`})},{title:`Credential`,key:`auth`,width:120,render:(e,t)=>t.hasAuthValue?(0,l.jsx)(s.Tag,{color:`blue`,children:`Stored`}):(0,l.jsx)(hE,{type:`secondary`,children:`None`})}],dataSource:c,pagination:!1,locale:{emptyText:e.length?`No regions returned`:`No regions configured`}})]})}var{Text:vE,Title:yE}=s.Typography;function bE(){let[e,t]=(0,o.useState)(`regions`),[n,r]=(0,o.useState)([]),[i,a]=(0,o.useState)(!0),[u,d]=(0,o.useState)(null),f=(0,o.useRef)(null),p=(0,o.useCallback)(()=>{f.current?.abort();let e=new AbortController;return f.current=e,e.signal},[]),m=(0,o.useCallback)(async()=>{a(!0),d(null);try{let e=await JT({includeInactive:!0,signal:p()});r(e)}catch(e){if(e?.name===`AbortError`)return;d(e?.message||`Could not load regions`)}finally{a(!1)}},[p]);return(0,o.useEffect)(()=>(queueMicrotask(m),()=>f.current?.abort()),[m]),(0,l.jsxs)(`div`,{style:{padding:`4px 0`},children:[(0,l.jsxs)(s.Space,{align:`start`,style:{width:`100%`,justifyContent:`space-between`,marginBottom:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(yE,{level:4,style:{margin:0},children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Platform`]}),(0,l.jsx)(vE,{type:`secondary`,children:`Cross-region administration. Every action here is authorised server-side and recorded in the audit trail.`})]}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:m,children:`Refresh`})]}),u&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,style:{marginBottom:12},message:`Could not load platform data`,description:(0,l.jsxs)(l.Fragment,{children:[u,(0,l.jsx)(`br`,{}),(0,l.jsx)(vE,{type:`secondary`,children:`If this reads as a permission failure, your platform access may have been revoked, or your session may predate it — sign out and back in, then try again.`})]})}),(0,l.jsx)(s.Tabs,{activeKey:e,onChange:e=>{f.current?.abort(),t(e)},items:[{key:`regions`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.GlobalOutlined,{}),` Regions`]}),children:(0,l.jsx)(xE,{regions:n,loading:i,onChanged:m})},{key:`defaults`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SettingOutlined,{}),` Global Defaults`]}),children:(0,l.jsx)(mE,{regions:n})},{key:`ai-services`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApiOutlined,{}),` AI Services`]}),children:(0,l.jsx)(_E,{regions:n})},{key:`users`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.TeamOutlined,{}),` All Users`]}),children:(0,l.jsx)(TE,{regions:n})},{key:`access`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.KeyOutlined,{}),` Access`]}),children:(0,l.jsx)(EE,{})},{key:`audit`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AuditOutlined,{}),` Audit`]}),children:(0,l.jsx)(DE,{regions:n})}]})]})}function xE({regions:e,loading:t,onChanged:n}){let[r,i]=(0,o.useState)(null),[a,u]=(0,o.useState)(null);return t?(0,l.jsx)(`div`,{style:{padding:48,textAlign:`center`},children:(0,l.jsx)(s.Spin,{})}):e.length?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Space,{style:{marginBottom:16},children:(0,l.jsx)(s.Button,{type:`primary`,onClick:()=>i({}),children:`Register region`})}),(0,l.jsx)(s.Row,{gutter:[16,16],children:e.map(e=>(0,l.jsx)(s.Col,{xs:24,md:12,xl:8,children:(0,l.jsx)(s.Card,{size:`small`,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.GlobalOutlined,{}),(0,l.jsx)(`span`,{children:e.label?.trim()||e.key}),e.isHome&&(0,l.jsx)(s.Tag,{color:`blue`,children:`Your region`}),!e.isActive&&(0,l.jsx)(s.Tag,{children:`Inactive`})]}),extra:(0,l.jsx)(s.Tag,{color:`default`,children:e.key}),actions:[(0,l.jsx)(s.Button,{type:`link`,onClick:()=>i(e),children:`Edit`},`edit`),(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.SettingOutlined,{}),onClick:()=>u(e),children:`Display defaults`},`defaults`)],children:(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,style:{width:`100%`},children:[(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Users`})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{strong:!0,children:e.userCount??`—`})})]}),(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Region profile`})}),(0,l.jsx)(s.Col,{span:12,children:e.regionProfile?(0,l.jsx)(s.Tag,{color:`geekblue`,children:e.regionProfile}):(0,l.jsx)(s.Tooltip,{title:`No per-region rule overrides apply (FormGroup.regionRules is not used for this region).`,children:(0,l.jsx)(vE,{type:`secondary`,children:`none`})})})]}),(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Display defaults`})}),(0,l.jsx)(s.Col,{span:12,children:e.hasDisplayDefaults?(0,l.jsx)(s.Badge,{status:`success`,text:`configured`}):(0,l.jsx)(s.Tooltip,{title:`This region has no display-defaults document, so it falls back to the built-in formats.`,children:(0,l.jsx)(s.Badge,{status:`warning`,text:`not set`})})})]}),(0,l.jsx)(vE,{type:`secondary`,style:{fontSize:11,wordBreak:`break-all`},children:e.tenantId})]})})},e.key))}),(0,l.jsx)(SE,{region:r,onClose:()=>i(null),onSaved:n}),(0,l.jsx)(wE,{region:a,onClose:()=>u(null)})]}):(0,l.jsxs)(s.Empty,{description:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{children:`No regions registered yet.`}),(0,l.jsx)(vE,{type:`secondary`,children:`A region binds a name to one tenant / business / business-unit triple. Until one exists, nothing can be administered across regions.`})]}),children:[(0,l.jsx)(s.Button,{type:`primary`,onClick:()=>i({}),children:`Register the first region`}),(0,l.jsx)(SE,{region:r,onClose:()=>i(null),onSaved:n})]})}function SE({region:e,onClose:t,onSaved:n}){let[r]=s.Form.useForm(),[i,a]=(0,o.useState)(!1),c=e&&!e.key;if((0,o.useEffect)(()=>{e&&queueMicrotask(()=>r.setFieldsValue({isActive:!0,order:0,...e}))},[e,r]),!e)return null;let u=async(e=!1)=>{let i=await r.validateFields();a(!0);try{await YT(i,{allowEmpty:e}),s.message.success(`Region saved`),n?.(),t()}catch(e){String(e?.message||``).includes(`no users exist`)?s.Modal.confirm({title:`No users found for that tenant scope`,content:`Nothing in this database matches that tenant / business / business-unit triple. That usually means one of the ids has a typo — two live tenants already differ by a single character. Register it anyway only if the region is genuinely empty.`,okText:`Register anyway`,okButtonProps:{danger:!0},cancelText:`Let me check the ids`,onOk:()=>u(!0)}):s.message.error(e?.message||`Could not save region`)}finally{a(!1)}};return(0,l.jsxs)(s.Drawer,{open:!0,width:520,onClose:t,title:c?`Register region`:`Edit ${e.label||e.key}`,extra:(0,l.jsx)(s.Button,{type:`primary`,loading:i,onClick:()=>u(!1),children:`Save`}),children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16},message:`A region is a name for a tenant scope`,description:`It does not create or move data. It binds a stable key to an existing tenant / business / business-unit triple so that key can be used in URLs and audit records.`}),(0,l.jsxs)(s.Form,{form:r,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`key`,label:`Region key`,tooltip:`The identifier. It appears in URLs and audit rows, so it never changes once used. Lower-case, no spaces.`,rules:[{required:!0,message:`A region key is required`},{pattern:/^[a-z0-9][a-z0-9-]*$/,message:`Lower-case letters, digits and hyphens only`}],children:(0,l.jsx)(s.Input,{placeholder:`us`,disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Display name`,rules:[{required:!0,message:`A display name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`United States`})}),(0,l.jsx)(s.Form.Item,{name:`tenantId`,label:`Tenant ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{placeholder:`24-character ObjectId`,disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`businessId`,label:`Business ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`businessUnitId`,label:`Business Unit ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`regionProfile`,label:`Region profile`,tooltip:`Selects which FormGroup.regionRules profile applies. Leave blank for none.`,children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`none`,options:[{value:`US`},{value:`UK`},{value:`IND`}]})}),(0,l.jsx)(s.Form.Item,{name:`order`,label:`Display order`,children:(0,l.jsx)(s.InputNumber,{min:0,style:{width:`100%`}})}),(0,l.jsx)(s.Form.Item,{name:`isActive`,label:`Active`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})]}),!c&&(0,l.jsx)(s.Button,{danger:!0,block:!0,onClick:()=>s.Modal.confirm({title:`Deactivate ${e.label||e.key}?`,content:`It stops being selectable and stops resolving. The record is kept so historical audit rows still make sense.`,okText:`Deactivate`,okButtonProps:{danger:!0},onOk:async()=>{await XT(e.key),s.message.success(`Region deactivated`),n?.(),t()}}),children:`Deactivate region`})]})}var CE=[{name:`phoneCountryCode`,label:`Phone country code`,placeholder:`+1`,help:`Empty means print no dial code at all. That is a real setting, not a blank.`},{name:`phoneFormat`,label:`Phone format`,placeholder:`(###) ###-####`},{name:`dateFormat`,label:`Date format`,placeholder:`DD MMM YYYY`,help:`Calendar dates only — no time, no zone.`},{name:`dateTimeFormat`,label:`Date & time format`,placeholder:`DD MMM YYYY, hh:mm A`},{name:`timeZone`,label:`Time zone`,placeholder:`Asia/Kolkata`,help:`IANA name. Empty means each viewer sees their own zone.`},{name:`booleanTrueLabel`,label:`Yes label`,placeholder:`Yes`},{name:`booleanFalseLabel`,label:`No label`,placeholder:`No`},{name:`emptyPlaceholder`,label:`Empty placeholder`,placeholder:`-`},{name:`separator`,label:`Separator`,placeholder:` · `}];function wE({region:e,onClose:t}){let[n]=s.Form.useForm(),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),d=(0,o.useRef)(null);return(0,o.useEffect)(()=>{if(!e)return;d.current?.abort();let t=new AbortController;return d.current=t,queueMicrotask(()=>{i(!0),rE(e.key,{signal:t.signal}).then(e=>n.setFieldsValue(e||{})).catch(e=>{e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load defaults`)}).finally(()=>i(!1))}),()=>t.abort()},[e,n]),e?(0,l.jsxs)(s.Drawer,{open:!0,width:560,onClose:t,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.SettingOutlined,{}),`Display defaults — `,e.label||e.key]}),extra:(0,l.jsx)(s.Button,{type:`primary`,loading:a,onClick:async()=>{let r=await n.validateFields();u(!0);try{await iE(e.key,r),s.message.success(`Display defaults saved for ${e.label||e.key}`),t()}catch(e){s.message.error(e?.message||`Could not save defaults`)}finally{u(!1)}},children:`Save`}),children:[(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:16},message:`These apply to this region only`,description:`Everyone in ${e.label||e.key} will see dates, times and phone numbers rendered with these settings. Other regions are unaffected.`}),(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Form,{form:n,layout:`vertical`,children:CE.map(e=>(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,extra:e.help,children:(0,l.jsx)(s.Input,{placeholder:e.placeholder,allowClear:!0})},e.name))})})]}):null}function TE({regions:e}){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(),[m,h]=(0,o.useState)(1),g=(0,o.useRef)(null),_=(0,o.useCallback)(async()=>{g.current?.abort();let e=new AbortController;g.current=e,c(!0);try{let{items:t,total:r}=await tE({search:u,regionKey:f,limit:25,offset:(m-1)*25,signal:e.signal});n(t),i(r)}catch(e){e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load users`)}finally{c(!1)}},[u,f,m]);(0,o.useEffect)(()=>(queueMicrotask(_),()=>g.current?.abort()),[_]);let v=(0,o.useMemo)(()=>e.map(e=>({value:e.key,label:e.label?.trim()||e.key})),[e]);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.Space,{style:{marginBottom:16},wrap:!0,children:[(0,l.jsx)(s.Input.Search,{allowClear:!0,placeholder:`Search name or email`,style:{width:280},onSearch:e=>{h(1),d(e)}}),(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`All regions`,style:{width:200},options:v,onChange:e=>{h(1),p(e)}})]}),(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Only users in registered regions appear here`,description:`A tenant scope that is not registered as a region is deliberately excluded, so orphaned or mistyped tenants are not exposed through this screen.`}),(0,l.jsx)(s.Table,{rowKey:e=>e._id||e.email,size:`small`,loading:a,columns:[{title:`Email`,dataIndex:`email`,key:`email`},{title:`Name`,key:`name`,render:(e,t)=>t.userName||[t.firstName,t.lastName].filter(Boolean).join(` `)||`—`},{title:`Region`,key:`region`,render:(e,t)=>t.regionKey?(0,l.jsx)(s.Tag,{color:`blue`,children:t.regionLabel||t.regionKey}):(0,l.jsx)(s.Tooltip,{title:`This user's tenant scope is not registered as a region.`,children:(0,l.jsx)(s.Tag,{children:`unregistered`})})},{title:`Role ID`,dataIndex:`roleId`,key:`roleId`,width:90}],dataSource:t,pagination:{current:m,pageSize:25,total:r,showSizeChanger:!1,onChange:h,showTotal:e=>`${e} user${e===1?``:`s`}`}})]})}function EE(){let[e,t]=(0,o.useState)([]),[n,r]=(0,o.useState)(!1),[i,a]=(0,o.useState)(!1),[u]=s.Form.useForm(),d=(0,o.useCallback)(async()=>{r(!0);try{t(await ZT())}catch(e){s.message.error(e?.message||`Could not load platform access`)}finally{r(!1)}},[]);return(0,o.useEffect)(()=>{queueMicrotask(d)},[d]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:16},message:`Platform access spans every region`,description:`Grant it to as few people as possible, and prefer a time-boxed grant. Access is verified on every request, so revoking takes effect immediately rather than when a token expires.`}),(0,l.jsxs)(s.Space,{style:{marginBottom:16},children:[(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.ApiOutlined,{}),onClick:()=>a(!0),children:`Grant access`}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:d,children:`Refresh`})]}),(0,l.jsx)(s.Table,{rowKey:e=>e.userId,size:`small`,loading:n,columns:[{title:`Email`,dataIndex:`email`,key:`email`},{title:`Status`,key:`status`,render:(e,t)=>t.isActive?(0,l.jsx)(s.Badge,{status:`success`,text:`Active`}):(0,l.jsx)(s.Badge,{status:`default`,text:`Revoked`})},{title:`Scopes`,dataIndex:`scopes`,key:`scopes`,render:e=>(e||[]).map(e=>(0,l.jsx)(s.Tag,{children:e},e))},{title:``,key:`actions`,width:100,render:(e,t)=>t.isActive&&(0,l.jsx)(s.Button,{danger:!0,type:`link`,onClick:()=>s.Modal.confirm({title:`Revoke platform access for ${t.email}?`,content:`They keep their ordinary account and their own region. Cross-region administration stops working on their next request — not when their session expires.`,okText:`Revoke`,okButtonProps:{danger:!0},onOk:async()=>{try{await $T(t.userId),s.message.success(`Access revoked`),d()}catch(e){s.message.error(e?.message||`Could not revoke`)}}}),children:`Revoke`})}],dataSource:e}),(0,l.jsxs)(s.Modal,{open:i,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.UserOutlined,{}),`Grant platform access`]}),onCancel:()=>a(!1),okText:`Grant`,onOk:async()=>{let e=await u.validateFields();try{await QT(e),s.message.success(`Platform access granted`),a(!1),u.resetFields(),d()}catch(e){s.message.error(e?.message||`Could not grant access`)}},children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16},message:`This grants authority to an existing account`,description:`No password is created or changed here. The user must sign out and back in before it takes effect, because platform authority is keyed to an identifier older sessions do not carry.`}),(0,l.jsxs)(s.Form,{form:u,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`userId`,label:`User ID`,tooltip:`The user's stable Mongo _id — not their email and not a legacy numeric id. Copy it from the All Users tab.`,rules:[{required:!0,len:24,message:`A 24-character user _id is required`}],children:(0,l.jsx)(s.Input,{placeholder:`24-character ObjectId`})}),(0,l.jsx)(s.Form.Item,{name:`scopes`,label:`Scopes`,rules:[{required:!0,message:`Select at least one scope`}],children:(0,l.jsx)(s.Select,{mode:`multiple`,options:sE,placeholder:`Select scopes`})}),(0,l.jsx)(s.Form.Item,{name:`expiresAt`,label:`Expires`,extra:`Optional. RFC3339, e.g. 2026-12-31T23:59:59Z. Time-boxed access is safer.`,children:(0,l.jsx)(s.Input,{placeholder:`2026-12-31T23:59:59Z`})})]})]})]})}function DE({regions:e}){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)(),[f,p]=(0,o.useState)(1);return(0,o.useEffect)(()=>{let e=!1,t=new AbortController;return queueMicrotask(()=>{e||(c(!0),nE({regionKey:u,limit:50,offset:(f-1)*50,signal:t.signal}).then(({items:t,total:r})=>{e||(n(t),i(r))}).catch(e=>{e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load audit`)}).finally(()=>{e||c(!1)}))}),()=>{e=!0,t.abort()}},[u,f]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Space,{style:{marginBottom:16},children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`All regions`,style:{width:200},options:e.map(e=>({value:e.key,label:e.label?.trim()||e.key})),onChange:e=>{p(1),d(e)}})}),(0,l.jsx)(s.Table,{rowKey:e=>e._id||`${e.at}-${e.action}`,size:`small`,loading:a,columns:[{title:`When`,dataIndex:`at`,key:`at`,width:190,render:e=>e?new Date(e).toLocaleString():`—`},{title:`Actor`,dataIndex:`actorEmail`,key:`actorEmail`},{title:`Action`,dataIndex:`action`,key:`action`,render:e=>(0,l.jsx)(s.Tag,{children:e})},{title:`Region`,dataIndex:`targetRegion`,key:`targetRegion`,render:e=>e?(0,l.jsx)(s.Tag,{color:`blue`,children:e}):(0,l.jsx)(vE,{type:`secondary`,children:`platform`})},{title:`Route`,dataIndex:`route`,key:`route`,render:e=>(0,l.jsx)(vE,{type:`secondary`,style:{fontSize:12},children:e})}],dataSource:t,pagination:{current:f,pageSize:50,total:r,showSizeChanger:!1,onChange:p}})]})}var{Content:OE,Header:kE,Sider:AE}=s.Layout,{Text:jE,Title:ME}=s.Typography;function NE(e){return String(e??``).trim().replace(/[\s_-]+/g,` `).toUpperCase()}function PE(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function FE(e){return String(e||``).trim().toLowerCase()}function IE(e){return e?.key||e?.collectionName||e?.value||``}function LE(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=IE(e);if(!t)return;let o=FE(e.key||t),s=FE(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||PE(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=FE(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:PE(t),value:t,disabled:!1}))}),n}function RE(e){return NE(e?.user_type_name??e?.userTypeName??e?.name)===`SUPER ADMIN`}function zE(e){return`${e?.first_name??e?.firstName??``} ${e?.last_name??e?.lastName??``}`.trim()||e?.username||e?.userName||e?.email||`User ${e?.user_id??e?.userId??``}`}function BE(e){return e.flatMap(e=>{let t=e.menu_id??e.menuId??e.MenuID,n=e.menu_name??e.menuName??e.MenuName??`Menu ${t??``}`,r=e.menu_key??e.menuKey??e.MenuKey??``,i=e.permissions??e.Permissions??{};return Object.entries(i).map(([e,i])=>{let a=i.permission_id??i.permissionId??i.PermissionID,o=i.permission_key??i.permissionKey??i.PermissionKey??e,s=i.value??i.Value??i.access_value??i.accessValue??i;return{key:`${r??n??t}:${a??o}`,menuId:t,menuName:n,menuKey:r,permissionId:a,permissionKey:o,accessValue:+(Number(s)===1)}})})}function VE(e){return String(e.menuKey??e.menuName??e.menuId).trim().toLowerCase()}var HE=[{permissionId:null,permissionKey:`my_jobs`,permissionName:`My Jobs`},{permissionId:null,permissionKey:`all_jobs`,permissionName:`All Jobs`},{permissionId:null,permissionKey:`sendApprove`,permissionName:`Send Approve`}];function UE(e){let t=Array.isArray(e)?e:e?.permissions??e?.actions??e?.data??e,n=(Array.isArray(t)?t:Object.values(t??{})).map(e=>({permissionId:e.permission_id??e.permissionId??e.legacyPermissionId??e.id??null,permissionKey:e.permission_key??e.permissionKey??e.key,permissionName:e.permission_name??e.permissionName??e.name??e.label})).filter(e=>e.permissionKey),r=new Set(n.map(e=>String(e.permissionKey).trim().toLowerCase()));return HE.forEach(e=>{r.has(e.permissionKey.toLowerCase())||n.push(e)}),n}function WE(e={}){return String(e.permissionName??``).trim()||String(e.permissionKey??``).replaceAll(`_`,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function GE({title:e,description:t,selectedName:n,loading:r,saving:i,rows:a,onChange:o,onMove:u,onSave:d}){let f=Object.values(a.reduce((e,t)=>{let n=VE(t);return e[n]||(e[n]={key:n,menuName:t.menuName,menuKey:t.menuKey,permissions:[]}),e[n].permissions.push(t),e},{}));return(0,l.jsxs)(`section`,{className:`admin-editor`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:e}),(0,l.jsx)(jE,{type:`secondary`,children:n||t})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:i,disabled:!n||a.length===0,onClick:d,children:`Save`})]}),r?(0,l.jsx)(`div`,{className:`admin-loading`,children:(0,l.jsx)(s.Spin,{})}):f.length?(0,l.jsx)(s.Table,{size:`small`,rowKey:`key`,columns:[{title:`Menu`,dataIndex:`menuName`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-menu-order-cell`,children:[(0,l.jsxs)(`div`,{className:`admin-menu-cell`,children:[(0,l.jsx)(`span`,{children:e}),(0,l.jsx)(jE,{type:`secondary`,children:t.menuKey})]}),(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.ArrowUpOutlined,{}),onClick:()=>u(t.key,-1),"aria-label":`Move ${e} up`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.ArrowDownOutlined,{}),onClick:()=>u(t.key,1),"aria-label":`Move ${e} down`})]})]})},{title:`Actions`,dataIndex:`permissions`,render:e=>(0,l.jsx)(`div`,{className:`admin-permission-controls`,children:e.filter(e=>qb(e.menuName??e.menuKey,e.permissionKey)).map(e=>(0,l.jsx)(`label`,{className:`admin-permission-control`,children:(0,l.jsx)(s.Checkbox,{checked:e.accessValue===1,onChange:t=>o(e.key,+!!t.target.checked),"aria-label":`${e.menuName} ${e.permissionKey}`,children:WE(e)})},e.key))})}],dataSource:f,pagination:!1,scroll:{y:420}}):(0,l.jsx)(s.Empty,{description:`Select a record to customize permissions`})]})}function KE({onLogout:e}){let[r]=s.Form.useForm(),[i]=s.Form.useForm(),[a,u]=(0,o.useState)(`users`),[d,f]=(0,o.useState)(!0),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(0),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)([]),[j,M]=(0,o.useState)([]),[N,P]=(0,o.useState)([]),[F,I]=(0,o.useState)(null),[L,R]=(0,o.useState)([]),[z,B]=(0,o.useState)(!1),[V,ee]=(0,o.useState)(null),[te,ne]=(0,o.useState)(!1),[re,ie]=(0,o.useState)(null),[H,ae]=(0,o.useState)([]),[oe,se]=(0,o.useState)(!1),[ce,U]=(0,o.useState)(!1),[le,ue]=(0,o.useState)(null),[de,fe]=(0,o.useState)(!1),[pe,W]=(0,o.useState)(null),[me,he]=(0,o.useState)(`listView`),[ge,_e]=(0,o.useState)([]),[G,K]=(0,o.useState)([]),[ve,ye]=(0,o.useState)(!1),[be,xe]=(0,o.useState)(!1),Se=t.d(),Ce=(0,o.useMemo)(()=>ge.filter(e=>!e.disabled),[ge]),we=!ve&&Ce.length===0,Te=(0,o.useCallback)(async()=>{ye(!0);try{let[e,t]=await Promise.all([n.Er(),n.vr()]),r=LE(e.modules,t),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));_e(r),K(e=>e.filter(e=>i.has(e)))}catch{s.message.error(`Failed to load seed status`)}finally{ye(!1)}},[]);(0,o.useEffect)(()=>{Te()},[Te]);async function Ee(){if(G.length===0){s.message.warning(we?`All modules already seeded.`:`Select at least one module to seed.`);return}xe(!0);try{await n.oi(G),s.message.success(`User type field config seeded`),K([]),await Te()}catch(e){s.message.error(e?.message||`Seed failed`)}finally{xe(!1)}}async function De(){f(!0);try{let[e,t,n]=await Promise.allSettled([Fb(),zb(),Ub()]),r=e.status===`fulfilled`?e.value:[];e.status===`rejected`&&s.message.error(e.reason?.message||`Unable to load user types`),A(r??[]),M(t.status===`fulfilled`?t.value??[]:[]),P(n.status===`fulfilled`?UE(n.value):[]),I((r??[])[0]?.user_type_id??null)}catch(e){s.message.error(e.message||`Unable to load admin data`)}finally{f(!1)}}(0,o.useEffect)(()=>{queueMicrotask(()=>{De()})},[]);let Oe=(0,o.useCallback)(async()=>{O(!0);try{let{users:e,total:t}=await Ab({limit:C,offset:(x-1)*C,search:T});v(e??[]),b(t??0)}catch(e){s.message.error(e?.message||`Unable to load users`),v([]),b(0)}finally{O(!1)}},[x,C,T]);(0,o.useEffect)(()=>{Oe()},[Oe]),(0,o.useEffect)(()=>{queueMicrotask(()=>{if(!F){R([]);return}m(!0),Wb(F).then(e=>{let t=BE(e??[]),n=new Map(t.map(e=>[`${VE(e)}:${String(e.permissionKey).toLowerCase()}`,e.accessValue])),r=j.flatMap(e=>N.map(t=>{let r=String(e.menu_key??e.menu_name??e.menu_id).trim().toLowerCase(),i=String(t.permissionKey).toLowerCase();return{key:`${e.menu_key??e.menu_name??e.menu_id}:${t.permissionId??t.permissionKey}`,menuId:e.menu_id,menuName:e.menu_name,menuKey:e.menu_key,permissionId:t.permissionId,permissionKey:t.permissionKey,accessValue:n.get(`${r}:${i}`)??0}}));R(r)}).catch(e=>s.message.error(e.message||`Unable to load role permissions`)).finally(()=>m(!1))})},[F,j,N]);let ke=(0,o.useMemo)(()=>k.find(e=>e.user_type_id===F),[F,k]),Ae=(0,o.useMemo)(()=>k.reduce((e,t)=>({...e,[t.user_type_id]:t.user_type_name}),{}),[k]),je=(0,o.useMemo)(()=>_.reduce((e,t)=>({...e,[t.user_id]:zE(t)}),{}),[_]),Me=(0,o.useMemo)(()=>k.filter(e=>!RE(e)),[k]),Ne=(0,o.useMemo)(()=>_.filter(e=>!RE({user_type_id:e.user_type_id,user_type_name:Ae[e.user_type_id]})),[Ae,_]);(0,o.useEffect)(()=>{if(!z){ae([]);return}let e=Number(r.getFieldValue(`user_type_id`)??0);if(!e){ae([]);return}let t=!1;return se(!0),jb(e).then(e=>{t||ae(e.filter(e=>!V||e.user_id!==V.user_id))}).catch(e=>{t||(s.message.error(e.message||`Unable to load reporting users`),ae([]))}).finally(()=>{t||se(!1)}),()=>{t=!0}},[V,r,z]);let Pe=(0,o.useMemo)(()=>{let e=H.map(e=>({label:zE(e),value:e.user_id})),t=Number(V?.reporting_id??V?.reportingId??0);return!t||e.some(e=>Number(e.value)===t)?e:[{label:V?.reportingName??V?.reporting_name??je[t]??`User ${t}`,value:t},...e]},[V,H,je]),Fe=(0,o.useMemo)(()=>{let e=Me.map(e=>({label:e.user_type_name,value:e.user_type_id}));if(!V)return e;let t=Number(V.user_type_id??0);return e.some(e=>Number(e.value)===t)?e:[{label:Ae[t]??V.userType??V.roleName??(t>0?`Type ${t}`:`Unassigned`),value:t},...e]},[V,Me,Ae]);k.length,j.length;let Ie=[{key:`form-groups`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Form Groups`]}),title:`Form Groups`,description:`Build module add and edit form groups with validations, dropdowns, and custom forms.`,component:(0,l.jsx)(cC,{})},{key:`detail-groups`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.BgColorsOutlined,{}),` Detail Groups`]}),title:`Detail Groups`,description:`Control detail-view labels, rendering, lookups, merged fields, and display defaults.`,component:(0,l.jsx)(HC,{})},{key:`actions`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` Actions`]}),title:`Actions`,description:`Manage row action buttons and their visibility rules from one workspace.`,component:(0,l.jsx)(jw,{})},{key:`templates`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.MailOutlined,{}),` Templates`]}),title:`Templates`,description:`Manage reusable email templates and signatures.`,component:(0,l.jsx)(Uw,{})},{key:`ai-services`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` AI Services`]}),title:`AI Services`,description:`Register the AI and automation services used by admin-configured AI actions.`,component:(0,l.jsx)(qw,{})},{key:`bgc-integration`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Integrations`]}),title:`Integrations`,description:`Manage manual and API integrations used across application workflows.`,component:(0,l.jsx)($w,{})},{key:`automations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApartmentOutlined,{}),` Automations`]}),title:`Automations`,description:`Reference ids, duplicate checks, cross-module snapshots, reporting-chain hierarchy expansion, board updates, notifications, and cache invalidation — per module, config-driven.`,component:(0,l.jsx)(pT,{})},{key:`workflows`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApartmentOutlined,{}),` Workflows`]}),title:`Workflows`,description:`Event-driven behavior per module (beforeCreate/afterCreate/…): the metadata the platform Workflow Engine executes — where the jobs, candidates, and submissions create flows live.`,component:(0,l.jsx)(xT,{})},{key:`masters`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Masters`]}),title:`Masters`,description:`Shared Location and Tax lists used across modules (e.g. the submission form’s W2 employer section).`,component:(0,l.jsx)(BT,{})}],[Le,Re]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=new AbortController;return eE({signal:e.signal}).then(Re).catch(()=>Re(!1)),()=>e.abort()},[]);let ze=[...Le?[{key:`platform`,icon:(0,l.jsx)(c.SafetyCertificateOutlined,{}),label:`Platform`}]:[],{key:`users`,icon:(0,l.jsx)(c.UserOutlined,{}),label:`Users`},{key:`roles`,icon:(0,l.jsx)(c.TeamOutlined,{}),label:`User Types`},{key:`menus`,icon:(0,l.jsx)(c.MenuOutlined,{}),label:`Menus`},{key:`configurations`,icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),label:`Configurations`},{key:`integrations`,icon:(0,l.jsx)(c.SafetyCertificateOutlined,{}),label:`Integrations`}];function Be(e,t){R(n=>n.map(n=>n.key===e?{...n,accessValue:t}:n))}async function Ve(){g(!0);try{await Gb(F,L.map(e=>({menu_id:e.menuId,menu_name:e.menuName,menu_key:e.menuKey,permission_id:e.permissionId,permission_key:e.permissionKey,access_value:e.accessValue,updated_by:Se?.userId??null}))),s.message.success(`Role permissions updated`)}catch(e){s.message.error(e.message||`Unable to save role permissions`)}finally{g(!1)}}function q(){ee(null),r.resetFields(),r.setFieldsValue({status:`ACTIVE`,user_type_id:Me[0]?.user_type_id,reporting_id:0}),B(!0)}function J(e){ee(e),r.setFieldsValue({first_name:e.first_name,last_name:e.last_name,username:e.username,email:e.email,mobile:e.mobile,user_type_id:e.user_type_id,reporting_id:e.reporting_id??e.reportingId??0,profile_image:e.profile_image,status:e.status}),B(!0)}async function Y(e){ne(!0);try{let t={...e,status:e.status===1||e.status===`1`||e.status===!0?`ACTIVE`:e.status===0||e.status===`0`||e.status===!1?`INACTIVE`:String(e.status??`ACTIVE`).toUpperCase(),updated_by:Se?.userId??null,created_by:Se?.userId??null};t.password||delete t.password,V?(await Nb(V.user_id,t),s.message.success(`User updated`)):(await Mb(t),s.message.success(`User created`)),B(!1),ee(null),await Oe()}catch(e){s.message.error(e.message||`Unable to save user`)}finally{ne(!1)}}async function X(e){ie(e);try{await Pb(e),s.message.success(`User deleted`),await Oe()}catch(e){s.message.error(e.message||`Unable to delete user`)}finally{ie(null)}}function He(e,t){he(`listView`),W({kind:e,record:t}),e===`role`&&I(t.user_type_id)}function Ue(e,t){R(n=>{let r=[...new Set(n.map(VE))],i=r.indexOf(e),a=i+t;if(i<0||a<0||a>=r.length)return n;[r[i],r[a]]=[r[a],r[i]];let o=new Map(r.map((e,t)=>[e,t]));return[...n].sort((e,t)=>o.get(VE(e))-o.get(VE(t)))})}function We(){ue(null),i.resetFields(),i.setFieldsValue({status:`ACTIVE`}),U(!0)}function Ge(e){ue(e),U(!0),i.setFieldsValue(e)}async function Ke(e){fe(!0);try{let t=Se?.userId??null,n=!!le,r=n?await Lb(le.user_type_id,{...e,updated_by:t}):await Ib({...e,created_by:t,visible_menu_ids:[]}),i=r.user_type_id;s.message.success(n?`User type updated`:`User type created. Customize its menus and permissions.`),U(!1),await De(),I(i),n||(he(`permissions`),W({kind:`role`,record:{...e,...r,user_type_id:i,user_type_name:r.user_type_name??e.user_type_name}}))}catch(e){s.message.error(e.message||`Unable to save role`)}finally{fe(!1)}}async function qe(e){try{await Rb(e),s.message.success(`Role deleted`),await De()}catch(e){s.message.error(e.message||`Unable to delete role`)}}return(0,l.jsxs)(s.Layout,{className:`admin-shell`,children:[(0,l.jsx)(AE,{width:248,className:`admin-sider`,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-nav`,children:[(0,l.jsx)(jE,{className:`admin-sidebar-title`,children:`Admin Menu`}),(0,l.jsx)(s.Menu,{theme:`dark`,mode:`inline`,selectedKeys:[a],onClick:({key:e})=>u(e),items:ze})]})}),(0,l.jsx)(s.Layout,{children:(0,l.jsxs)(OE,{className:`admin-content`,children:[(0,l.jsx)(l.Fragment,{children:(0,l.jsx)(s.Tabs,{activeKey:a,onChange:u,tabBarStyle:{display:`none`},items:[{key:`users`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.UserOutlined,{}),` Users`]}),children:(0,l.jsx)(`div`,{className:`admin-stack`,children:(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Users`}),(0,l.jsx)(jE,{type:`secondary`,children:`Create and manage users with non-super-admin user types.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:q,children:`Add`})]}),(0,l.jsx)(Em,{listName:`Users`,loading:D,fields:[{label:`Name`,value:`first_name`,render:(e,t)=>`${e??``} ${t.last_name??``}`.trim()||t.username},{label:`Email`,value:`email`},{label:`User Type`,value:`user_type_id`,width:160,render:(e,t)=>Ae[e]||t?.userType||t?.user_type||(Number(e)>0?`Type ${e}`:`—`)},{label:`Reporting Manager`,value:`reporting_id`,width:180,render:(e,t)=>je[e]||t?.reportingName||t?.reporting_name||(Number(e)>0?`User ${e}`:`None`)},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:150,sorter:!1,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Edit user`,icon:(0,l.jsx)(c.EditOutlined,{}),size:`small`,onClick:()=>J(t)}),(0,l.jsx)(s.Popconfirm,{title:`Delete user?`,description:`This removes the user from the auth database.`,okText:`Delete`,okButtonProps:{danger:!0},onConfirm:()=>X(t.user_id),children:(0,l.jsx)(s.Button,{danger:!0,"aria-label":`Delete user`,icon:(0,l.jsx)(c.DeleteOutlined,{}),loading:re===t.user_id,size:`small`})})]})}],dataSource:Ne.map(e=>({...e,key:e.user_id})),total:y,current:x,pageSize:C,onPageChange:S,onPageSizeChange:e=>{w(e),S(1)},onSearch:e=>{E(e??``),S(1)},rowSelection:!1})]})})},{key:`roles`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.TeamOutlined,{}),` User Types`]}),children:(0,l.jsxs)(`div`,{className:`admin-stack`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,l.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:G,options:ge,placeholder:we?`All modules already seeded`:`Select modules or collections to seed`,disabled:ve||be||we,loading:ve,onChange:K,style:{width:`100%`}})}),(0,l.jsx)(s.Button,{type:`primary`,loading:be,disabled:ve||G.length===0,onClick:Ee,children:`Seed Field Config`})]}),(0,l.jsx)(jE,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:we?`Seed is disabled because all configured modules already have user type field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`User Types`}),(0,l.jsx)(jE,{type:`secondary`,children:`Role level permissions are inherited by users.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:We,children:`Add Role`})]}),(0,l.jsx)(Em,{listName:`User Types`,loading:d,fields:[{label:`User Type`,value:`user_type_name`},{label:`Description`,value:`description`},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:260,sorter:!1,render:(e,t)=>{let n=Number(t.role_type)===1;return(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Configure role`,size:`small`,onClick:()=>He(`role`,t),children:`Config`}),(0,l.jsx)(s.Button,{"aria-label":`Edit role`,disabled:!n,icon:(0,l.jsx)(c.EditOutlined,{}),size:`small`,onClick:()=>Ge(t)}),n&&!RE(t)&&(0,l.jsx)(s.Popconfirm,{title:`Delete role?`,onConfirm:()=>qe(t.user_type_id),children:(0,l.jsx)(s.Button,{"aria-label":`Delete role`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),size:`small`})})]})}}],dataSource:k.map(e=>({...e,key:e.user_type_id,roleId:e.user_type_id,roleName:e.user_type_name})),total:k.length,rowSelection:!1})]})]})},{key:`menus`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.MenuOutlined,{}),` Menus`]}),children:(0,l.jsx)(UT,{})},{key:`configurations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Configurations`]}),children:(0,l.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Configuration Center`}),(0,l.jsx)(jE,{type:`secondary`,children:`CORE-THEME admin modules embedded into the admin dashboard.`})]}),(0,l.jsxs)(s.Tag,{color:`blue`,children:[Ie.length,` configurations`]})]}),(0,l.jsx)(s.Tabs,{className:`admin-config-tabs`,defaultActiveKey:`form-groups`,tabPosition:`left`,items:Ie.map(e=>({key:e.key,label:e.label,children:(0,l.jsxs)(`div`,{className:`admin-config-panel`,children:[(0,l.jsx)(`div`,{className:`admin-config-panel-head`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:e.title}),(0,l.jsx)(jE,{type:`secondary`,children:e.description})]})}),(0,l.jsx)(`div`,{className:`admin-config-panel-body`,children:e.component})]})}))})]})},...Le?[{key:`platform`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Platform`]}),children:(0,l.jsx)(`section`,{className:`admin-section admin-config-workspace`,children:(0,l.jsx)(bE,{})})}]:[],{key:`integrations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Integrations`]}),children:(0,l.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,l.jsx)(`div`,{className:`admin-section-head`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Integrations`}),(0,l.jsx)(jE,{type:`secondary`,children:`Configure external services used by onboarding and other workflows.`})]})}),(0,l.jsx)(`div`,{className:`admin-config-panel`,children:(0,l.jsx)(`div`,{className:`admin-config-panel-body`,children:(0,l.jsx)($w,{})})})]})}]})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,title:`Configure User Type: ${pe?.record?.user_type_name??``}`,open:!!pe,onCancel:()=>W(null),footer:null,destroyOnHidden:!0,width:900,children:[(0,l.jsx)(`div`,{className:`uss-config-toggle`,style:{marginBottom:12},children:[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`},{key:`actions`,label:`Actions`}].map(e=>(0,l.jsx)(`button`,{type:`button`,className:`uss-config-btn${me===e.key?` active`:``}`,onClick:()=>he(e.key),children:e.label},e.key))}),pe&&me===`permissions`?(0,l.jsx)(GE,{title:`Role Permissions`,description:`Configure menu permissions for this user type`,selectedName:ke?.user_type_name,loading:p,saving:h,rows:L,onChange:Be,onMove:Ue,onSave:Ve}):pe&&me===`actions`?(0,l.jsx)(kx,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name}},`${pe.record?.user_type_id}-actions`):pe&&me===`form`?(0,l.jsx)(xx,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name}},`${pe.record?.user_type_id}-form`):pe?(0,l.jsx)(ux,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name},configType:me},`${pe.record?.user_type_id}-${me}`):null]}),(0,l.jsx)(s.Modal,{className:`admin-role-modal`,title:le?`Edit User Type`:`Create User Type`,open:ce,onCancel:()=>U(!1),onOk:()=>i.submit(),okText:le?`Save`:`Next`,confirmLoading:de,destroyOnHidden:!0,width:900,children:(0,l.jsxs)(s.Form,{form:i,layout:`vertical`,onFinish:Ke,children:[(0,l.jsx)(s.Form.Item,{name:`user_type_name`,label:`Role name`,rules:[{required:!0,message:`Role name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`Recruiter`})}),(0,l.jsx)(s.Form.Item,{name:`description`,label:`Description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3})}),(0,l.jsx)(s.Form.Item,{name:`status`,label:`Status`,children:(0,l.jsx)(s.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]})}),(0,l.jsx)(s.Modal,{className:`admin-user-modal`,title:V?`Edit User`:`Add User`,open:z,onCancel:()=>B(!1),onOk:()=>r.submit(),confirmLoading:te,destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:r,layout:`vertical`,requiredMark:!1,onFinish:Y,children:[(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{label:`First Name`,name:`first_name`,rules:[{required:!0,message:`First name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`John`})}),(0,l.jsx)(s.Form.Item,{label:`Last Name`,name:`last_name`,children:(0,l.jsx)(s.Input,{placeholder:`Doe`})})]}),(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[{required:!0,message:`Username is required`}],children:(0,l.jsx)(s.Input,{placeholder:`john.doe`})}),(0,l.jsx)(s.Form.Item,{label:`Email`,name:`email`,rules:[{required:!0,message:`Email is required`},{type:`email`,message:`Enter a valid email`}],children:(0,l.jsx)(s.Input,{placeholder:`john@example.com`})}),(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:V?[]:[{required:!0,message:`Password is required`}],children:(0,l.jsx)(s.Input.Password,{placeholder:V?`Leave empty to keep current password`:`Password`})}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{label:`Mobile`,name:`mobile`,children:(0,l.jsx)(s.Input,{placeholder:`9999999999`})}),(0,l.jsx)(s.Form.Item,{label:`User Type`,name:`user_type_id`,rules:[{required:!0,message:`User type is required`}],children:(0,l.jsx)(s.Select,{placeholder:`Select user type`,onChange:()=>{ae([]),queueMicrotask(()=>{let e=Number(r.getFieldValue(`user_type_id`)??0);e&&(se(!0),jb(e).then(e=>{ae(e.filter(e=>!V||e.user_id!==V.user_id))}).catch(e=>{s.message.error(e.message||`Unable to load reporting users`),ae([])}).finally(()=>{se(!1)}))})},options:Fe})})]}),(0,l.jsx)(s.Form.Item,{label:`Reporting Manager`,name:`reporting_id`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:oe,placeholder:`Select reporting manager`,optionFilterProp:`label`,options:[{label:`None`,value:0},...Pe]})}),(0,l.jsx)(s.Form.Item,{label:`Profile Image`,name:`profile_image`,children:(0,l.jsx)(s.Input,{placeholder:`https://...`})}),(0,l.jsx)(s.Form.Item,{label:`Status`,name:`status`,children:(0,l.jsx)(s.Select,{options:[{label:`ACTIVE`,value:`ACTIVE`},{label:`INACTIVE`,value:`INACTIVE`}]})})]})})]})})]})}var qE=KE;function JE(e,t){return String(e||t).replace(/\/\*$/,``).replace(/\/+$/,``)||t}function YE({loginPath:e=`/login`,adminPath:t=`/admin`,fallbackPath:n=`/`}){let r=(0,d.useNavigate)(),i=JE(e,`/login`),a=JE(t,`/admin`),o=`${a}/*`;return(0,l.jsxs)(d.Routes,{children:[(0,l.jsx)(d.Route,{path:i,element:(0,l.jsx)(Iy,{defaultRedirectPath:a,onLogin:()=>r(a,{replace:!0})})}),(0,l.jsx)(d.Route,{path:o,element:(0,l.jsx)(Oy,{loginPath:i,children:(0,l.jsx)(Fy,{children:(0,l.jsx)(qE,{onLogout:()=>r(i,{replace:!0})})})})}),(0,l.jsx)(d.Route,{path:n,element:(0,l.jsx)(d.Navigate,{to:a,replace:!0})}),(0,l.jsx)(d.Route,{path:`*`,element:(0,l.jsx)(d.Navigate,{to:a,replace:!0})})]})}function XE(e){return(0,l.jsx)(d.BrowserRouter,{children:(0,l.jsx)(YE,{...e})})}function ZE(e){return Array.isArray(e)?e.map(String).map(e=>e.trim()).filter(Boolean):String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)}function QE(e){return ZE(e).every(e=>/^[^,\s@]+@[^,\s@]+\.[^\s@]{2,}$/.test(e))}var{Text:$E}=s.Typography,eD=new Set([`file`,`document`,`attachment`]);function tD(e){return eD.has(String(e?.type??``).trim().toLowerCase())}function nD(e){return String(e??``).trim().toLowerCase().replace(/[^a-z0-9]/g,``)}function rD(e){return e?typeof e==`string`?e:String(typeof e==`object`?e?._id??e?.id??e?.$oid??``:e):``}function iD(e,t,n){if(!e)return``;let r=nD(t),i=nD(n);if(!r||r===i||r.replace(/s$/,``)===i.replace(/s$/,``))return rD(e?._id??e?.id);let a=r.replace(/s$/,``),o=[`${a}Id`,`${r}Id`,a,r,`${a}._id`,`${r}._id`];for(let t of o){let n=rD(cD(e,t));if(n)return n}return``}async function aD(e){let t=e?.fileUrl??e?.url??e?.downloadUrl;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load attachment ${e?.fileName||``}`.trim());let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.uniqueName??`attachment`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function oD(e,t,r){if(!t)return[];let i=[];(e?.placeholders??[]).forEach(e=>{(e?.holders??[]).filter(tD).forEach(a=>{let o=iD(t,e?.moduleName,r);o&&i.push((async()=>{let t=await n._n(e.moduleName,o,a.value);return Promise.all((t?.data??[]).map(aD))})())})});let a=(await Promise.all(i)).flat().filter(Boolean),o=new Set;return a.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!o.has(t)&&(o.add(t),!0)})}function sD(e,t){return[...new Set([...ZE(e),...ZE(t)])].join(`, `)}function cD(e,t,n=``){let r=String(n??``).trim().toLowerCase();return String(t??``).split(`.`).reduce((e,t)=>{let n=e;return Array.isArray(n)&&r===`last`&&(n=n.at(-1)),n?.[t]},e)}function lD(e,t,n){if(!n)return String(e??``);let r=new Map;return(t??[]).forEach(e=>(e.holders??[]).forEach(e=>{r.set(e.key,tD(e)?``:cD(n,e.value,e.arrayMode))})),String(e??``).replace(/{{\.?([\w.]+)}}/g,(e,t)=>{let n=r.get(t);return n==null?e:String(n)})}function uD({value:e,onChange:t,defaultTemplateId:r=``,ready:i=!0,title:a=`Mail`,hint:u,bccHint:d,afterBcc:f,beforeFields:p,className:m=``,contextRecords:h=[],moduleName:g=``}){let _=(0,o.useRef)(``),v=n=>t?.({...e,...n});async function y(t,n=!1){if(t)try{let r=await QC(t),i=h[0],a=await oD(r,i,g);v({to:sD(e.to,(r?.toMail??[]).map(e=>lD(e,r?.placeholders,i))),cc:sD(e.cc,(r?.ccMail??[]).map(e=>lD(e,r?.placeholders,i))),bcc:sD(e.bcc,(r?.bccMail??[]).map(e=>lD(e,r?.placeholders,i))),subject:lD(r?.subject,r?.placeholders,i),contents:lD(r?.body,r?.placeholders,i),attachments:a}),n||s.message.success(`Loaded ${r?.name||`email template`}`)}catch(e){n||s.message.error(e?.message||`Could not load email template`)}}return(0,o.useEffect)(()=>{!i||!r||_.current===r||(_.current=r,y(r,!0))},[r,i]),(0,l.jsxs)(`div`,{className:`common-mail-composer ${m}`.trim(),children:[(0,l.jsx)(`div`,{className:`mail-popup__header`,children:(0,l.jsxs)(`div`,{className:`mail-popup__header-brand`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,l.jsx)(c.MailOutlined,{})}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:a}),u&&(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__header-hint`,children:u})]})]})}),(0,l.jsxs)(`div`,{className:`mail-popup__body`,children:[p&&(0,l.jsxs)(l.Fragment,{children:[p,(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`To`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.to),onChange:e=>v({to:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:`Add email addresses`}),(0,l.jsxs)(`div`,{className:`mail-popup__cc-bcc-actions`,children:[!e.showCc&&(0,l.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>v({showCc:!0}),children:`Cc`}),!e.showBcc&&(0,l.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>v({showBcc:!0}),children:`Bcc`})]})]}),(0,l.jsx)(s.Divider,{}),e.showCc&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Cc`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.cc),onChange:e=>v({cc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`})]}),(0,l.jsx)(s.Divider,{})]}),e.showBcc&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Bcc`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.bcc),onChange:e=>v({bcc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:d})]}),f,(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Subject`}),(0,l.jsx)(s.Input,{variant:`borderless`,value:e.subject,onChange:e=>v({subject:e.target.value}),placeholder:`Enter subject`,className:`mail-popup__field-input`})]}),(0,l.jsx)(s.Divider,{}),!!e.attachments?.length&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Attachments`}),(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,padding:`4px 0`},children:e.attachments.map((e,t)=>(0,l.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,l.jsx)(c.PaperClipOutlined,{}),e.name]},`${e.name}:${e.size}:${t}`))})]}),(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__message-section`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__message-label`,children:`Message`}),(0,l.jsx)(n.Tn,{value:e.contents,onChange:e=>v({contents:e})})]})]})]})}var{Text:dD}=s.Typography,fD=/^[a-fA-F0-9]{24}$/,pD=new Set([`file`,`document`,`attachment`]);async function mD(e){let t=e?.fileUrl??e?.url??e?.downloadUrl;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load attachment ${e?.fileName||``}`.trim());let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.uniqueName??`attachment`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function hD(e,t,r=[]){let i=String(e??``);if(!i||!r.length||!t)return{contents:i,attachments:[]};let a=(await n.Rr(t).catch(()=>[])).filter(e=>pD.has(String(e?.type??``).trim().toLowerCase())).filter(e=>{let t=String(e?.value??e?.field??e?.fieldKey??e?.key??e?.name??``).replace(/^\./,``);return t&&(i.includes(`{{.${t}}}`)||i.includes(`{{${t}}}`))});if(!a.length)return{contents:i,attachments:[]};let o=[];for(let e of a){let a=String(e?.value??e?.field??e?.fieldKey??e?.key??e?.name??``).replace(/^\./,``);i=i.replaceAll(`{{.${a}}}`,``).replaceAll(`{{${a}}}`,``);for(let e of r){let r=String(e?._id??e?.id??``);if(!fD.test(r))continue;let i=await n._n(t,r,a).catch(()=>({data:[]})),s=await Promise.all((i?.data??[]).map(mD));o.push(...s.filter(Boolean))}}let s=new Set,c=o.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!s.has(t)&&(s.add(t),!0)});return{contents:i,attachments:c}}function gD(e){return e===!0?!0:typeof e==`number`?e===1:typeof e==`string`&&[`true`,`1`,`yes`,`y`,`on`].includes(e.trim().toLowerCase())}function _D(e){return[`candidate`,`candidates`].includes(String(e??``).trim().toLowerCase())}function vD(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&String(t).trim()!==``)return t}}function yD(e){return[vD(e,`jobReferenceId`,`clientJobId`,`jobCode`,`reqId`,`jobId`),vD(e,`jobTitle`,`title`,`name`)].filter(Boolean).join(` - `)||String(vD(e,`_id`,`id`)??`Job`)}function bD(e){let t=vD(e,`_id`,`id`,`jobId`);return t?{value:String(t),label:yD(e),raw:e}:null}function xD(e=[],t=[]){let n=[...t,`email`,`candidateEmail`,`candidate_email`,`emailId`,`mailId`,`alternateEmail`,`altEmail`,`basicDetails.email`,`basicDetails.alternateEmail`,`basicDetails.altEmail`,`candidate.email`,`candidate.emailId`,`submission.email`,`submission.candidateEmail`].filter(Boolean);return e.flatMap(e=>n.map(t=>vD(e,t))).flatMap(e=>Array.isArray(e)?e:[e]).flatMap(ZE)}function SD(e){return e?.data?.record??e?.record??e?.data??e}function CD(e){let t=vD(e,`jobId`,`job_id`,`job._id`,`job.id`,`jobs._id`,`jobs.id`);return typeof t==`object`?vD(t,`_id`,`id`,`$oid`):t}function wD(e={}){return{subject:e.subject??e.Subject??``,contents:e.contents??e.Contents??e.body??e.Body??``,toMail:e.toMail??e.ToMail??[],ccMail:e.ccMail??e.CcMail??[],bccMail:e.bccMail??e.BccMail??[]}}function TD(){let e=(0,d.useNavigate)(),{state:t={}}=(0,d.useLocation)(),{selectedIds:r=[],selectedRecords:i=[],recipients:a=[],subject:c=``,onSend:u,moduleName:f=``,popupAction:p={}}=t,m=gD(p.requireJobId)||gD(t.requireJobId)||_D(f),h=(0,o.useMemo)(()=>[p.recipientField,p.recipientPath,t.recipientField,t.recipientPath],[p.recipientField,p.recipientPath,t.recipientField,t.recipientPath]),g=r.join(`|`),_=(0,o.useMemo)(()=>[...a,...xD(i,h)],[a,i,h]),v=String(t.jobId??CD(i[0])??``).trim(),y=r[0]??i[0]?._id??i[0]?.id??``,[b,x]=(0,o.useState)(v),[S,C]=(0,o.useState)(m?v:String(v||y||``)),[w,T]=(0,o.useState)({to:[...new Set(_)].join(`, `),cc:``,bcc:``,subject:c,contents:``,attachments:[],showCc:!1,showBcc:!1}),[E,D]=(0,o.useState)(!S),[O,k]=(0,o.useState)(!1),[A,j]=(0,o.useState)([]),[M,N]=(0,o.useState)(!1),[P,F]=(0,o.useState)(!1),I=(0,o.useRef)(!1),L=(0,o.useRef)(``),R=(0,o.useRef)(0);(0,o.useEffect)(()=>{if(!_D(f)||I.current||ZE(w.to).length>0||r.length===0||L.current===g)return;let e=!1;return L.current=g,Promise.all(r.map(e=>n.pn(f,e).catch(()=>null))).then(t=>{if(e)return;let n=xD(t.map(SD).filter(Boolean),h);n.length&&T(e=>ZE(e.to).length>0?e:{...e,to:[...new Set(n)].join(`, `)})}),()=>{e=!0}},[w.to,f,h,g,r]),(0,o.useEffect)(()=>{if(!S){D(!0);return}let e=++R.current,t=!1;async function n(){D(!1),k(!0),T(e=>({...e,contents:``}));try{let n=wD(await vn(S)),r=await hD(n.contents||``,f,i),a=r.contents;if(a.trim())try{a=await yn(a,n.subject||c)}catch(n){!t&&e===R.current&&s.message.warning(n?.message||`Mail content formatting failed. Showing original content.`)}if(t||e!==R.current)return;T(e=>({...e,subject:n.subject||e.subject,to:n.toMail?.length?Array.isArray(n.toMail)?n.toMail.join(`, `):String(n.toMail):e.to,cc:n.ccMail?.length?Array.isArray(n.ccMail)?n.ccMail.join(`, `):String(n.ccMail):e.cc,bcc:n.bccMail?.length?Array.isArray(n.bccMail)?n.bccMail.join(`, `):String(n.bccMail):e.bcc,contents:a||r.contents||e.contents,attachments:r.attachments,showCc:e.showCc||!!n.ccMail?.length,showBcc:e.showBcc||!!n.bccMail?.length}))}catch(n){!t&&e===R.current&&m&&s.message.error(n?.message||`Could not load mail template for this Job ID`)}finally{!t&&e===R.current&&(D(!0),k(!1))}}return n(),()=>{t=!0}},[S,m]);function z(e=b){let t=String(e??``).trim();if(!fD.test(t)){C(``),t&&s.message.warning(`Enter a valid 24-character Job ID`);return}if(t===S){C(``),queueMicrotask(()=>C(t));return}C(t)}function B(e,t){if(!e){C(``),x(``);return}let n=t?.label??``;x(String(n||(e??``))),z(e)}function V(e){let t=String(e??``).trim();if(x(t),t.length<3){j([]);return}N(!0),ae(t).then(e=>{let t=(Array.isArray(e)?e:[]).map(bD).filter(Boolean);j(t)}).catch(e=>s.message.error(e?.message||`Unable to search jobs`)).finally(()=>N(!1))}let ee=E&&(!m||fD.test(S))&&ZE(w.to).length+ZE(w.cc).length+ZE(w.bcc).length>0&&QE(w.to)&&QE(w.cc)&&QE(w.bcc)&&w.subject.trim()&&w.contents.trim();async function te(){if(!(!ee||P)){F(!0);try{await bn({jobId:S,toMail:ZE(w.to),ccMail:ZE(w.cc),bccMail:ZE(w.bcc),subject:w.subject,contents:w.contents,attachments:w.attachments??[]}),s.message.success(`Mail sent successfully`),typeof u==`function`&&u({...w,message:w.contents,selectedIds:r}),e(-1)}catch(e){s.message.error(e?.message||`Failed to send mail`)}finally{F(!1)}}}function ne(e){e?.to!==w.to&&(I.current=!0),T(e)}return(0,l.jsx)(s.Drawer,{open:!0,placement:`right`,onClose:()=>e(-1),closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,l.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>e(-1),children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:P,disabled:!ee,onClick:te,children:`Send`})]}),children:(0,l.jsx)(s.Spin,{spinning:O,description:`Loading mail content...`,size:`large`,children:(0,l.jsx)(uD,{value:w,onChange:ne,moduleName:f,defaultTemplateId:m?``:p.defaultTemplateId??t.defaultTemplateId??``,ready:E,contextRecords:i,beforeFields:m?(0,l.jsxs)(`div`,{className:`mail-popup__job-row`,children:[(0,l.jsx)(dD,{type:`secondary`,className:`mail-popup__field-label`,children:`Job Title / ID`}),(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,filterOption:!1,value:S||void 0,searchValue:b,onSearch:V,onChange:B,onClear:()=>{C(``),x(``),j([])},placeholder:`Minimum 3 characters`,notFoundContent:M||O?(0,l.jsx)(s.Spin,{size:`small`}):null,options:A,className:`mail-popup__job-input`})]}):null})})})}var{Text:ED}=s.Typography,DD=e=>e===!0||e===1||e===`1`;function OD(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function kD(e){return e?e.name?e.name:e.fullName?e.fullName:e.firstName||e.lastName?[e.firstName,e.lastName].filter(Boolean).join(` `):e.candidateName??e.clientName??e.jobTitle??``:``}function AD(e){return e?e.email??e.emailId??e.emailAddress??``:``}function jD(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function MD(e,t){let n=String(e?.type??``).trim().toLowerCase(),r=`${e?.field??``} ${e?.label??``}`;if(!([`file`,`document`,`upload`].includes(n)||/resume|cv|document|attachment/i.test(r)))return e;let i=String(e?.field??``).trim().toLowerCase(),a=t.filter(e=>{let t=String(e?.fieldName??e?.field??e?.formField??e?.key??``).trim().toLowerCase();return t&&i&&t===i?!0:/resume|cv/i.test(r)?/resume|cv/i.test(`${t} ${e?.fileName??``} ${e?.name??``}`):!1}).map(t=>({name:t?.fileName||t?.name||t?.uploadedFileName||t?.originalName||e?.label||`Document`,url:t?.fileUrl||t?.downloadUrl||t?.signedUrl||t?.url||``,type:t?.mimeType||t?.contentType||t?.type})).filter(e=>e.url);return a.length?{...e,value:a,renderType:`document`}:e}function ND(e){let t=Vl(e);return[...e].filter(e=>!DD(e.hideGroup)&&!DD(e.hideGroupInDetail)).filter(e=>Hl(e,t)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,fields:[...e.fields??[]].filter(e=>String(e.field??``).trim()!==``&&(e.show===void 0||DD(e.show))&&Hl(e,t)).map(e=>({...e,label:Wl(e,t)})).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function PD({record:e}){let t=kD(e),n=AD(e),r=jD(e);return!t&&!n?null:(0,l.jsxs)(`div`,{className:`preview-profile-card`,children:[(0,l.jsxs)(`div`,{className:`preview-profile-card__info`,children:[(0,l.jsx)(s.Avatar,{className:`preview-profile-card__avatar`,children:OD(t)}),(0,l.jsxs)(`div`,{className:`preview-profile-card__text`,children:[t&&(0,l.jsx)(`span`,{className:`preview-profile-card__name`,children:t}),n&&(0,l.jsx)(`span`,{className:`preview-profile-card__email`,children:n})]})]}),r&&(0,l.jsx)(s.Tag,{className:`preview-profile-card__status`,children:r})]})}function FD({fields:e,centralDocuments:t=[],recordValueMap:r={}}){let[i,a]=(0,o.useState)([]),[s,c]=(0,o.useState)(0),[u,d]=(0,o.useState)(!1);if(!e?.length)return null;function f(e,t){a(e),c(t),d(!0)}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{className:`preview-field-grid`,children:e.map(e=>{let i=MD(e,t),a=i.value,o=i.renderType===`document`?n.Rt(a).filter(e=>e.url):[];return o.length?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:i.label}),(0,l.jsx)(`div`,{className:`preview-document-list`,children:o.map((e,t)=>(0,l.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>f(o,t),title:`Preview ${e.name||`document`}`,children:[(0,l.jsx)(`span`,{className:`preview-document-link__name`,children:e.name||`Document ${t+1}`}),(0,l.jsx)(`span`,{className:`preview-document-link__action`,children:`Preview`})]},`${e.url}-${t}`))})]},i.field??i.label):(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:i.label}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:(0,l.jsx)(Pu,{field:i,record:r})})]},i.field??i.label)})}),(0,l.jsx)(n.wn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function ID(){let e=(0,d.useNavigate)(),{moduleName:t=``,record:r=null}=(0,d.useLocation)().state??{},i=r?.id??r?._id,[a,c]=(0,o.useState)([]),[u,f]=(0,o.useState)(!!(t&&i)),[p,m]=(0,o.useState)(null),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)(0),y=(0,o.useRef)(null),b=(0,o.useRef)(null),x=(0,o.useRef)([]),S=(0,o.useRef)([]),C=(0,o.useMemo)(()=>ND(a),[a]),w=(0,o.useMemo)(()=>Vl(a),[a]);(0,o.useEffect)(()=>{if(!t||!i)return;let e=!1;return Promise.all([Gn({module:t,id:i,view:`detail`}),n._n(t,i).catch(()=>({data:[]}))]).then(([t,n])=>{e||(c(Array.isArray(t)?t:[]),g(Array.isArray(n)?n:n?.data??[]),f(!1))}).catch(t=>{e||(m(t.message||`Failed to load preview`),g([]),f(!1))}),()=>{e=!0}},[t,i]);function T(){e(-1)}function E(e,t){return e?.label??e?.name??`Section ${t+1}`}function D(e){let t=y.current,n=S.current[e];if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=(t.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+12,o=t.scrollTop+i.top-r.top-a;v(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function O(){let e=y.current;if(!e||!S.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;S.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),v(e=>e===n?e:n)}(0,o.useEffect)(()=>{let e=b.current,t=x.current[_];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth),i=Math.min(Math.max(0,n),r);typeof e.scrollTo==`function`?e.scrollTo({left:i,behavior:`smooth`}):e.scrollLeft=i},[_,C.length]);function k(){return C.length?(0,l.jsx)(`div`,{ref:b,className:`preview-stepper-wrap`,"aria-label":`Preview sections`,children:(0,l.jsx)(`div`,{className:`preview-stepper`,children:C.map((e,t)=>(0,l.jsxs)(`div`,{className:`preview-stepper__segment`,children:[(0,l.jsxs)(`button`,{type:`button`,className:`preview-stepper__item`,ref:e=>{x.current[t]=e},onClick:()=>D(t),"aria-current":_===t?`step`:void 0,title:`Go to ${E(e,t)}`,children:[(0,l.jsx)(`span`,{className:[`preview-stepper__circle`,t<_?`preview-stepper__circle--done`:``,t===_?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,l.jsx)(`span`,{className:[`preview-stepper__label`,t===_?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:E(e,t)})]}),t<C.length-1&&(0,l.jsx)(`span`,{className:[`preview-stepper__line`,t<_?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let A=(0,l.jsxs)(`div`,{className:`preview-modal-header`,children:[(0,l.jsx)(`span`,{className:`preview-modal-module`,children:t.toUpperCase()}),(0,l.jsx)(`span`,{className:`preview-modal-title`,children:t?` Details`:`Preview`})]}),j=(0,l.jsx)(`div`,{className:`wizard-footer preview-scroll-footer`,children:(0,l.jsx)(`div`,{className:`wizard-footer-nav`,children:(0,l.jsx)(s.Button,{onClick:T,children:`Close`})})});function M(){return!t||!i?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):u?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,l.jsx)(s.Spin,{size:`small`})}):p?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:p}):C.length?(0,l.jsx)(`div`,{className:`preview-section-list`,children:C.map((e,t)=>(0,l.jsxs)(`section`,{ref:e=>{S.current[t]=e},className:`preview-section-card`,"data-section-index":t,children:[(0,l.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,l.jsx)(`span`,{className:`preview-section-card__number`,children:t+1}),(0,l.jsx)(`span`,{className:`preview-section-card__title`,children:E(e,t)})]}),(0,l.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,l.jsx)(FD,{fields:e.fields,centralDocuments:h,recordValueMap:w}):(0,l.jsx)(ED,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??t))}):(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`No form groups found.`})}return(0,l.jsx)(s.Modal,{centered:!0,className:`wizard-modal preview-modal preview-scroll-modal`,footer:j,open:!0,title:A,width:`min(900px, calc(100vw - 32px))`,onCancel:T,mask:{closable:!1},children:(0,l.jsxs)(`div`,{ref:y,className:`wizard-body preview-scroll-body`,onScroll:O,children:[!u&&!p&&C.length>0&&k(),r&&(0,l.jsx)(PD,{record:r}),M()]})})}var{Text:LD}=s.Typography,{TextArea:RD}=s.Input,zD=[{key:`basic`,title:`Basic Info`,description:`General details`,fields:[{name:`firstName`,label:`First Name`,type:`input`,required:!0,placeholder:`Enter first name`,span:12},{name:`lastName`,label:`Last Name`,type:`input`,required:!0,placeholder:`Enter last name`,span:12},{name:`email`,label:`Email Address`,type:`input`,required:!0,placeholder:`Enter email address`,rules:[{type:`email`,message:`Please enter a valid email`}]},{name:`phone`,label:`Phone`,type:`input`,placeholder:`Enter phone number`}]},{key:`details`,title:`Details`,description:`Additional info`,fields:[{name:`role`,label:`Role`,type:`select`,required:!0,placeholder:`Select a role`,span:12,options:[{label:`Developer`,value:`developer`},{label:`Designer`,value:`designer`},{label:`Manager`,value:`manager`},{label:`Analyst`,value:`analyst`}]},{name:`department`,label:`Department`,type:`select`,placeholder:`Select department`,span:12,options:[{label:`Engineering`,value:`engineering`},{label:`Product`,value:`product`},{label:`Operations`,value:`operations`},{label:`Finance`,value:`finance`}]},{name:`notes`,label:`Notes`,type:`textarea`,placeholder:`Any additional notes...`}]},{key:`confirm`,title:`Confirm`,description:`Review & submit`,isReview:!0}];function BD(e){switch(e.type){case`select`:return(0,l.jsx)(s.Select,{placeholder:e.placeholder,options:e.options,style:{width:`100%`}});case`textarea`:return(0,l.jsx)(RD,{rows:3,placeholder:e.placeholder});case`number`:return(0,l.jsx)(s.InputNumber,{placeholder:e.placeholder,style:{width:`100%`}});default:return(0,l.jsx)(s.Input,{type:e.inputType||`text`,placeholder:e.placeholder})}}function VD({steps:e,form:t}){let n=t.getFieldsValue(),r=e.filter(e=>!e.isReview);return r.some(e=>(e.fields||[]).some(e=>n[e.name]!==void 0&&n[e.name]!==``))?(0,l.jsxs)(`div`,{className:`wizard-review-content`,children:[r.map(e=>(0,l.jsxs)(`div`,{className:`wizard-review-section`,children:[(0,l.jsx)(LD,{className:`wizard-review-section-title`,children:e.title}),(0,l.jsx)(`div`,{className:`wizard-review-grid`,children:(e.fields||[]).map(e=>{let t=n[e.name],r=t===void 0||t===``||t===null?`—`:String(t);return(0,l.jsxs)(`div`,{className:`wizard-review-row`,children:[(0,l.jsx)(`span`,{className:`wizard-review-label`,children:e.label}),(0,l.jsx)(`span`,{className:`wizard-review-separator`,children:`:`}),(0,l.jsx)(`span`,{className:`wizard-review-value`,children:r})]},e.name)})})]},e.key)),(0,l.jsxs)(`div`,{className:`wizard-review-confirm-note`,children:[(0,l.jsx)(c.CheckCircleOutlined,{className:`wizard-review-confirm-icon`}),(0,l.jsx)(LD,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,l.jsx)(`div`,{className:`wizard-review-empty`,children:(0,l.jsx)(LD,{type:`secondary`,children:`No data entered yet.`})})}function HD(){let[e]=s.Form.useForm(),t=(0,d.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=zD,onSubmit:a}=(0,d.useLocation)().state??{},[c,u]=(0,o.useState)(0),f=i[c],p=c===i.length-1,m=c===0;function h(){t(-1)}function g(){let t=(f.fields||[]).map(e=>e.name);e.validateFields(t.length>0?t:void 0).then(()=>{u(e=>e+1)})}function _(){u(e=>e-1)}function v(){let n=e.getFieldsValue();typeof a==`function`&&a(n),t(-1)}let y=i.map((e,t)=>({title:e.title,description:e.description,status:t<c?`finish`:t===c?`process`:`wait`})),b=r?`${n} — ${r}`:n;return(0,l.jsxs)(s.Modal,{open:!0,title:b,footer:(0,l.jsxs)(`div`,{className:`wizard-footer`,children:[(0,l.jsx)(s.Button,{onClick:h,children:`Cancel`}),(0,l.jsxs)(`div`,{className:`wizard-footer-nav`,children:[!m&&(0,l.jsx)(s.Button,{onClick:_,children:`Back`}),p?(0,l.jsx)(s.Button,{type:`primary`,onClick:v,children:`Submit`}):(0,l.jsx)(s.Button,{type:`primary`,onClick:g,children:`Next`})]})]}),onCancel:h,width:`min(680px, calc(100vw - 32px))`,centered:!0,className:`wizard-modal`,children:[(0,l.jsx)(`div`,{className:`wizard-steps-container`,children:(0,l.jsx)(s.Steps,{current:c,items:y,size:`small`,className:`wizard-steps`})}),(0,l.jsx)(`div`,{className:`wizard-body`,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,children:[i.filter(e=>!e.isReview).map((e,t)=>(0,l.jsx)(`div`,{style:{display:t===c?`block`:`none`},children:(0,l.jsx)(s.Row,{gutter:16,children:(e.fields||[]).map(e=>(0,l.jsx)(s.Col,{span:e.span||24,children:(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,rules:[...e.required?[{required:!0,message:`${e.label} is required`}]:[],...e.rules||[]],children:BD(e)})},e.name))})},e.key)),f.isReview&&(0,l.jsx)(VD,{steps:i,form:e})]})})]})}function UD({titleText:e,titleIcon:t}){let n=t===`delete`;return(0,l.jsxs)(`span`,{className:`dynamic-popup__header`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box${n?` dynamic-popup__header-icon-box--danger`:``}`,children:n?(0,l.jsx)(c.DeleteOutlined,{}):(0,l.jsx)(c.AppstoreOutlined,{})}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:e})]})}function WD({note:e,description:t,showSelectedCount:r,count:i,itemLabel:a,bodyText:o,deleteError:s}){return(0,l.jsxs)(l.Fragment,{children:[e&&(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,className:`dynamic-popup__note`,children:e}),t&&(0,l.jsx)(n.En,{variant:`body`,className:`dynamic-popup__description`,children:t}),r&&i>0&&(0,l.jsxs)(n.En,{variant:`body`,className:`dynamic-popup__selected-count`,children:[`Changing status for `,(0,l.jsx)(`strong`,{children:i}),` selected `,a,`.`]}),o&&(0,l.jsx)(n.En,{variant:`body`,children:o}),s&&(0,l.jsx)(n.En,{variant:`caption`,color:`danger`,className:`dynamic-popup__error`,children:s})]})}function GD({footerNote:e}){return e?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:e}):null}function KD(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function qD(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function JD(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isNaN(t)||t<=0?!1:t<=Date.now()+864e5}function YD(e){if(!JD(e))return``;let t=new Date(e),n=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=new Date,i=Math.round((n(r)-n(t))/864e5);if(i<=0)return`Today`;if(i===1)return`Yesterday`;if(i<=30)return`${i} days ago`;let a=(r.getFullYear()-t.getFullYear())*12+(r.getMonth()-t.getMonth());if(r.getDate()<t.getDate()&&--a,a=Math.max(1,a),a<12)return`${a} month${a===1?``:`s`} ago`;let o=Math.floor(a/12);return`${o} year${o===1?``:`s`} ago`}function XD(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,e?.updatedAt,...t.map(e=>e?.submittedAt||e?.updatedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function ZD(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,...t.map(e=>e?.submittedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function QD(e,t){if(typeof e==`string`)return{label:e,value:e};if(e?.label!==void 0&&e?.value!==void 0&&!t?.labelTemplate&&!t?.valueKey)return e;let{labelKey:n,valueKey:r,labelTemplate:i}=t??{},a=i?.includes(`{lastdate}`)?{...e,lastdate:YD(XD(e))}:e,o=(i?qD(KD(i,a)):null)||(n?e?.[n]:null)||e?.name||e?.fullName||e?.candidateName||e?.title||e?.displayName||e?.text||e?.applicantReferenceId||e?.applicantRefrenceId||String(Object.values(e||{})[0]??``),s=(r?e?.[r]:null)??e?.id??e?._id??e?.applicantReferenceId??e?.applicantRefrenceId??String(Object.values(e||{})[0]??``),c=e?.disabled===!0||e?.disable===!0,l=String(e?.optionNote??``).trim(),u={label:l?`${String(o)} — ${l}`:String(o),value:String(s),_raw:e};if(c&&(u.disabled=!0),l&&(u.title=l),e?.isSubmitted===!0||e?.alreadySubmitted===!0){u.alreadySubmitted=!0,u.existingSubmissionId=String(e?.existingSubmissionId??e?.jobSubmissionId??e?.submissionId??``);let t=e?.submittedAt||ZD(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||ZD(e);t&&(u.priorSubmittedAt=t)}return u}function $D(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>QD(t,e))}function eO(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var tO=`DD MMM YYYY`,nO=`DD MMM YYYY, h:mm A`;function rO(e,t){if(e==null||e===``)return``;let n=(0,u.default)(e);return n.isValid()?t===`relative`?YD(e)||(JD(e)?n.format(tO):`Not updated`):JD(e)?n.format(tO):``:String(e)}function iO(e,t){return e?String(e).includes(`{`)?qD(KD(e,t)):String(t?.[e]??e).trim():``}function aO(e){if(e?.alreadySubmitted){let t=e?.submittedAt?(0,u.default)(e.submittedAt):null;return{tone:`blocked`,tooltip:t?.isValid()?`Already submitted to this job on ${t.format(nO)}`:`Already submitted to this job — a candidate can only be submitted once per job`}}if(e?.isFromSubmission){let t=e?.priorSubmittedAt?(0,u.default)(e.priorSubmittedAt):null;return{tone:`history`,tooltip:t?.isValid()?`Previously submitted on ${t.format(nO)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function oO(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function sO({meta:e}){return(0,l.jsx)(`div`,{className:`dynamic-popup__option-dates`,children:e.map(e=>(0,l.jsxs)(o.Fragment,{children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-date-label`,children:e.label}),(0,l.jsx)(`span`,{className:`dynamic-popup__option-date-value`,children:e.text})]},e.label))})}function cO({option:e,layout:t}){let n=e?._raw??e??{},r=iO(t.id,n),i=iO(t.title,n)||String(e?.label??``),a=iO(t.subtitle,n),o=iO(t.titleAccent?.key,n),u=iO(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:rO(n?.[e.key],e.type)})).filter(e=>e.text),p=oO(e,n),m=aO(e);return(0,l.jsxs)(`div`,{className:`dynamic-popup__option`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-tick${m?` dynamic-popup__option-tick--${m.tone}`:``}`,children:m&&(0,l.jsx)(s.Tooltip,{title:m.tooltip,placement:`topLeft`,children:(0,l.jsx)(c.CheckCircleFilled,{"aria-label":m.tooltip})})}),(0,l.jsxs)(`div`,{className:`dynamic-popup__option-main`,children:[(0,l.jsxs)(`div`,{className:`dynamic-popup__option-head`,children:[r&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-id`,children:r}),(0,l.jsxs)(`span`,{className:`dynamic-popup__option-title`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-title-text`,children:i}),o&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-title-accent${u?` dynamic-popup__option-title-accent--${u}`:``}`,children:`${d}${o}`})]}),p&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-flag`,children:p})]}),a&&(0,l.jsx)(`div`,{className:`dynamic-popup__option-sub`,children:a})]}),e?.alreadySubmitted?(0,l.jsx)(`span`,{className:`dynamic-popup__option-onjob`,children:`On this job`}):f.length>0&&(0,l.jsx)(sO,{meta:f})]})}var{Text:lO}=s.Typography,{TextArea:uO}=s.Input,dO=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],fO=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function pO(e=[]){return e.map(e=>{if(!e||typeof e!=`object`)return e;let t=[e.value,e.user_id,e.userId,e.USER_ID,e.legacyUserId,e.id,e._id].find(e=>e!=null&&String(e).trim()!==``),n=t==null?``:String(t).trim();return{...e,value:n}}).filter(e=>typeof e!=`object`||!e||String(e.value??``).trim()!==``)}function mO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.Input,{value:t,onChange:n,placeholder:e.placeholder,maxLength:e.maxLength,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function hO({field:e,value:t,onChange:n}){return(0,l.jsx)(uO,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function gO({field:e,options:t,value:n,onChange:r}){let i=pO(t);return(0,l.jsx)(s.Select,{showSearch:!0,value:n,onChange:r,options:i,placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function _O({field:e,options:t,value:n,onChange:r}){let i=pO(t);return(0,l.jsx)(s.Select,{mode:`multiple`,showSearch:!0,value:n,onChange:r,options:i,placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function vO({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let o=pO(t),u=e.optionLayout,d=new Map(o.map(e=>[String(e?.value??``),e]));async function f(t,n){let r=n??d.get(String(t??``));(typeof e.onSelectGuard!=`function`||await e.onSelectGuard({value:t,option:r,field:e,popupContext:a,confirm:s.Modal.confirm})!==!1)&&i?.(t)}return(0,l.jsx)(s.Select,{showSearch:!0,filterOption:!1,notFoundContent:e.notFoundContent??null,value:r,onChange:f,options:o,placeholder:e.placeholder,onSearch:n,className:`dynamic-popup__field-select${u?` dynamic-popup__field-select--rich`:``}`,popupClassName:u?`dynamic-popup__option-dropdown`:void 0,listHeight:u?340:void 0,optionLabelProp:`label`,optionRender:u?e=>(0,l.jsx)(cO,{option:e?.data??e,layout:u}):void 0,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function yO({field:e,mentionOpts:t,onMentionSearch:n,value:r,onChange:i}){let a=Number(e.maxLength)>0?Number(e.maxLength):void 0,o=String(r??``).length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Mentions,{value:r,onChange:i,rows:e.rows??5,placeholder:e.placeholder,prefix:`@`,options:t,onSearch:n,maxLength:a,className:`dynamic-popup__mention-textarea`}),a?(0,l.jsxs)(`div`,{className:`dynamic-popup__char-count`,style:{textAlign:`right`,fontSize:12,marginTop:4,color:o>a*.9?`#b45309`:`#8c8c8c`},children:[o,` / `,a]}):null]})}function bO({field:e={},value:t={},onChange:n}){let r=t.period??`Hourly`,i=t.isRange??!1;function a(e){n?.({...t,...e})}(0,o.useEffect)(()=>{let e={};t.currency??(e.currency=`$`),t.period??(e.period=`Hourly`),Object.keys(e).length&&n?.({...t,...e})},[]);let c=Number(i?t.maxAmount:t.amount),u=i&&t.minAmount!=null&&t.maxAmount!=null&&Number(t.maxAmount)<=Number(t.minAmount),d=e.rateCeiling!=null&&Number.isFinite(c)&&c>Number(e.rateCeiling);return(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[i?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`From`,value:t.minAmount,onChange:e=>a({minAmount:e}),style:{flex:1}}),(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`To`,value:t.maxAmount,onChange:e=>a({maxAmount:e}),style:{flex:1}})]}):(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`0`,value:t.amount,onChange:e=>a({amount:e}),style:{flex:2}}),(0,l.jsx)(s.Select,{value:t.currency??`$`,options:dO,onChange:e=>a({currency:e}),style:{width:80}}),(0,l.jsx)(s.Select,{value:r,options:fO,onChange:e=>a({period:e}),style:{width:110}})]}),(u||d)&&(0,l.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,l.jsx)(lO,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,l.jsxs)(lO,{type:`danger`,style:{fontSize:12,display:`block`},children:[`Rate must not exceed the client rate (`,e.rateCeiling,`).`]})]}),(0,l.jsxs)(s.Space,{size:`small`,style:{marginTop:8},children:[(0,l.jsx)(s.Switch,{checked:i,onChange:e=>a({isRange:e})}),(0,l.jsx)(`span`,{children:`Range`})]})]})}function xO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.DatePicker,{value:t,onChange:n,placeholder:e.placeholder??`Select date`,style:{width:`100%`},format:`YYYY-MM-DD`})}function SO({field:e,checked:t,onChange:n}){return(0,l.jsx)(s.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function CO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.InputNumber,{value:t,onChange:n,min:e.min,max:e.max,placeholder:e.placeholder,style:{width:`100%`}})}function wO({options:e,value:t,onChange:n}){return(0,l.jsx)(s.Radio.Group,{value:t,onChange:n,options:e})}var TO={input:mO,text:mO,textarea:hO,select:gO,"multi-select":_O,"search-select":vO,"mention-textarea":yO,"candidate-rate":bO,"priority-checkbox":SO,"date-picker":xO,number:CO,radio:wO};function EO(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var DO=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function OO({form:e,fields:t,initialValues:r,dynamicOptions:i,popupContext:a,extraData:o,removedIds:c,setRemovedIds:u,showAlreadyAssigned:d,onValuesChange:f,getSearchHandler:p,getMentionSearchHandler:m,mentionOptions:h}){let g=(o?.recruitersData??[]).filter(e=>{let t=String(e?.user_id??e?.id??e?.userId??``);return t&&!c.includes(t)}),_=d&&o,v=new Set(d?g.map(e=>String(e?.user_id??e?.id??e?.userId??``).trim()).filter(Boolean):[]),y=e=>v.size===0||!Array.isArray(e)?e:e.filter(e=>!v.has(String((e&&typeof e==`object`?e.value??e.id:e)??``).trim()));return!t.length&&!_?null:(0,l.jsxs)(l.Fragment,{children:[_&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`dynamic-popup__already-assigned`,children:[(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,children:`Already Assigned People`}),(0,l.jsx)(`div`,{style:{marginTop:6,display:`flex`,flexWrap:`wrap`,gap:6},children:g.length===0?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,children:`No one is currently assigned to this job.`}):g.map(e=>{let t=String(e?.user_id??e?.id??e?.userId??``),n=e?.name??e?.user_name??e?.userName??e?.email??`Assigned user`;return(0,l.jsx)(s.Tag,{closable:!0,onClose:()=>{t&&u(e=>Array.from(new Set([...e,t])))},children:n},t||n)})})]}),(0,l.jsx)(s.Divider,{style:{margin:`12px 0`}})]}),t.length>0&&(0,l.jsx)(s.Form,{form:e,layout:`vertical`,initialValues:r,onValuesChange:(e,t)=>f(t),children:kO(t).map(e=>AO(e,e=>{let t=y(i[e.name]??$D(e,a)),r=p(e),o=m(e),c=h[e.name]??[],u=EO(e.type),d=TO[e.type],f=[];return e.required&&f.push({required:!0,message:`${e.label||`This field`} is required`}),typeof e.validator==`function`&&f.push({validator:(t,n)=>{let r=e.validator(n,a);return r?Promise.reject(Error(r)):Promise.resolve()}}),DO.has(e.type)&&f.push(n.on({label:e.label,field:e.name,type:e.type})),(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,rules:f,...u,children:d?(0,l.jsx)(d,{field:e,options:t,onSearch:r,mentionOpts:c,onMentionSearch:o,popupContext:a}):null},e.name)}))})]})}function kO(e){let t=[];for(let n of e){let e=t[t.length-1];n.inlineRow&&e?.inlineRow===n.inlineRow?e.fields.push(n):t.push({inlineRow:n.inlineRow,fields:[n]})}return t.map(e=>e.fields)}function AO(e,t){return e.length===1?t(e[0]):(0,l.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`},children:e.map((e,n)=>(0,l.jsx)(`div`,{style:{flex:n===0?2:1,minWidth:0},children:t(e)},e.name))},`row-${e.map(e=>e.name).join(`-`)}`)}function jO(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function MO(e){let t=e?.data??e;return Array.isArray(t)?t:Array.isArray(t?.data)?t.data:Array.isArray(t?.items)?t.items:Array.isArray(t?.rows)?t.rows:Array.isArray(t?.records)?t.records:[]}function NO(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function PO(e){if(e==null)return null;if(typeof e==`string`){let t=e.trim();return t?{label:t,value:t,_raw:{name:t}}:null}let t=String(e?.name??e?.clientSubmissionStatusText??e?.label??e?.text??``).trim();if(!t)return null;let n=Number(e?.id??e?.uniqueId??e?.clientSubmissionStatusId??e?.value??0)||0;return{label:t,value:t,_raw:{...e,...n>0?{id:n,uniqueId:n}:{},name:t,type:String(e?.type??e?.clientSubmissionStatusType??``).trim(),isInitialStatus:e?.isInitialStatus===!0,isTerminalStatus:e?.isTerminalStatus===!0,allowedNextStatusIds:Array.isArray(e?.allowedNextStatusIds)?e.allowedNextStatusIds.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}}}function FO(e,t){return NO(t)?PO(e):QD(e,t)}function IO(e){let t=e?.clientSubmissionStatus,n=Number((t&&typeof t==`object`?t?.clientSubmissionStatusId??t?.id??t?.uniqueId:void 0)??e?.clientSubmissionStatusId??e?.clientStatusId??e?.[`clientSubmissionStatus.clientSubmissionStatusId`]??0)||0,r=t&&typeof t==`object`?t?.clientSubmissionStatusText??t?.name??t?.text??t?.label:t;return{id:n,text:String(r??e?.clientSubmissionStatusText??e?.clientStatus??e?.clientStatusText??e?.[`clientSubmissionStatus.clientSubmissionStatusText`]??``).trim()}}function LO(e){let t=Number(e?.id??0)||0,n=String(e?.text??``).trim();return n&&n.toLowerCase()===`not submitted`?!0:t<=0&&!n}function RO(e){return Number(e?._raw?.id??e?._raw?.uniqueId??0)||0}function zO(e){let t=e?._raw?.allowedNextStatusIds;return Array.isArray(t)?t.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}function BO(e){let t=e?.data??e;return t?Array.isArray(t)?t[0]??null:t?.record&&typeof t.record==`object`?t.record:t?.data&&typeof t.data==`object`&&!Array.isArray(t.data)?t.data:typeof t==`object`?t:null:null}function VO(e){return(Array.isArray(e?.selectedRecords)?e.selectedRecords.filter(Boolean):[]).some(e=>!LO(IO(e)))?!0:!LO(IO(e??{}))}async function HO(e,n){if(VO(e))return e;let r=e?.selectedIds?.[0]??e?.selectedRecords?.[0]?._id??e?.selectedRecords?.[0]?.id;if(!r)return e;let i=String(e?.moduleName??`submissions`).trim()||`submissions`,a=new URLSearchParams({module:i,id:String(r)});n&&a.set(`app_id`,n);try{let r=BO(await t.o(t.x,`/module-data-detail?${a.toString()}`,{headers:n?{"X-App-Id":n}:void 0}));if(!r)return e;let i=Array.isArray(e?.selectedRecords)?e.selectedRecords:[];return{...e,selectedRecords:i.length?i.map((e,t)=>t===0?{...e,...r}:e):[r]}}catch(t){return console.warn(`[DynamicPopup] Could not load selected submission detail for client status transition:`,t),e}}function UO(e,t){if(!Array.isArray(e)||!e.length)return[];if(!e.some(e=>e?._raw?.isInitialStatus===!0||e?._raw?.isTerminalStatus===!0||Array.isArray(e?._raw?.allowedNextStatusIds)))return e;let n=Array.isArray(t?.selectedRecords)?t.selectedRecords.filter(Boolean):[],r={clientSubmissionStatus:t?.clientSubmissionStatus,clientSubmissionStatusId:t?.clientSubmissionStatusId,clientSubmissionStatusText:t?.clientSubmissionStatusText,clientStatus:t?.clientStatus,clientStatusId:t?.clientStatusId,clientStatusText:t?.clientStatusText,"clientSubmissionStatus.clientSubmissionStatusId":t?.[`clientSubmissionStatus.clientSubmissionStatusId`],"clientSubmissionStatus.clientSubmissionStatusText":t?.[`clientSubmissionStatus.clientSubmissionStatusText`]},i=n.length?n:[r];return e.filter(t=>i.every(n=>{let i=IO(n);if(LO(i)){let e=IO(r);LO(e)||(i=e)}if(LO(i))return t?._raw?.isInitialStatus===!0;let a=e.find(e=>{let t=RO(e),n=String(e?.label??``).trim();return i.id>0&&t===i.id||i.text&&n.toLowerCase()===i.text.toLowerCase()});return!a||a?._raw?.isTerminalStatus===!0?!1:zO(a).includes(RO(t))}))}function WO({open:e,config:n,api:r,fields:i,popupContext:a,formValues:s}){let[c,l]=(0,o.useState)({}),[u,d]=(0,o.useState)(null);return(0,o.useEffect)(()=>{e||(l({}),d(null))},[e]),(0,o.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=new AbortController;return i.forEach(e=>{!e.fetchOptionsKey||e.fetchOptionsParamKey||Promise.resolve(r.getOptions(e,void 0,a)).then(n=>{t.signal.aborted||l(t=>({...t,[e.name]:n}))}).catch(n=>{t.signal.aborted||console.error(`[DynamicPopup] Failed to load options for field "${e.name}":`,n)})}),()=>t.abort()},[e,r,n,i,a]),(0,o.useEffect)(()=>{if(!e||!n)return;let r=i.filter(jO);if(!r.length)return;let o=new AbortController;return r.forEach(e=>{let n=new URLSearchParams({masterName:e.masterName,offset:`0`,limit:String(e.limit??50)}),r=String(t.b??``).trim();r&&n.set(`app_id`,r),t.o(t.x,`/masters/dropdown?${n.toString()}`,{headers:r?{"X-App-Id":r}:void 0}).then(async t=>{if(o.signal.aborted)return;let n=MO(t).map(t=>FO(t,e)).filter(Boolean),i=a;if(NO(e)&&(i=await HO(a,r)),o.signal.aborted)return;let s=NO(e)?UO(n,i):n;l(t=>({...t,[e.name]:s}))}).catch(t=>{o.signal.aborted||console.error(`[DynamicPopup] Failed to load master options for field "${e.name}":`,t)})}),()=>o.abort()},[e,n,i,a]),(0,o.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=i.filter(e=>e.fetchOptionsKey&&e.fetchOptionsParamKey);if(!t.length)return;let o=new AbortController;return t.forEach(e=>{let t=s[e.fetchOptionsParamKey]??a[e.fetchOptionsParamKey],n={[e.fetchOptionsParamKey]:t};Promise.resolve(r.getOptions(e,n,a)).then(t=>{o.signal.aborted||l(n=>({...n,[e.name]:t}))}).catch(t=>{o.signal.aborted||console.error(`[DynamicPopup] Failed to load param-dependent options for "${e.name}":`,t)})}),()=>o.abort()},[e,r,n,i,s,a]),(0,o.useEffect)(()=>{if(!e||!n||!r.loadExtraData)return;let t=new AbortController;return Promise.resolve(r.loadExtraData(a)).then(e=>{t.signal.aborted||d(e)}).catch(e=>{t.signal.aborted||(console.error(`[DynamicPopup] Failed to load extra data:`,e),d(null))}),()=>t.abort()},[e,r,n,a]),{dynamicOptions:c,setDynamicOptions:l,extraData:u}}var GO=500,KO=3;function qO({api:e,open:t,fields:n=[],popupContext:r,setDynamicOptions:i}){let[a,s]=(0,o.useState)({}),c=(0,o.useRef)({}),l=(0,o.useRef)({}),u=(0,o.useRef)({}),d=(0,o.useCallback)((t,n)=>{let a=e.searchOptions??e.searchFetcher;if(typeof a!=`function`)return;l.current[t.name]?.abort();let o=new AbortController;return l.current[t.name]=o,Promise.resolve(a(t,n,r)).then(e=>{if(o.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];i(e=>({...e,[t.name]:n.map(e=>QD(e,t))}))}).catch(e=>{o.signal.aborted||console.error(`[DynamicPopup] Search failed for field "${t.name}":`,e)}),o},[e,r,i]),f=n.filter(e=>(e.searchFetchKey||e.searchFetcher)&&e.preloadOptions!==!1),p=f.map(e=>e.name).join(`|`),m=(0,o.useRef)({runSearch:d,preloadFields:f});(0,o.useEffect)(()=>{m.current={runSearch:d,preloadFields:f}}),(0,o.useEffect)(()=>{if(!t||!p)return;let{runSearch:e,preloadFields:n}=m.current,r=n.map(t=>e(t,``)).filter(Boolean);return()=>r.forEach(e=>e.abort())},[t,p]);function h(t){if(!t.searchFetchKey&&!t.searchFetcher||typeof(e.searchOptions??e.searchFetcher)!=`function`)return;let n=t.searchMinLength??KO;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},GO)}}function g(t){let n=e.getMentionOptions??e.mentionFetcher;if(typeof n==`function`)return e=>{u.current[t.name]?.abort();let i=new AbortController;u.current[t.name]=i,Promise.resolve(n(t,e,r)).then(e=>{if(i.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];s(e=>({...e,[t.name]:n.map(e=>({value:e.user_name??e.userName??e.username??String(e),label:e.user_name??e.userName??e.username??String(e)}))}))}).catch(e=>{i.signal.aborted||console.error(`[DynamicPopup] Mention search failed for field "${t.name}":`,e)})}}return{mentionOptions:a,getSearchHandler:h,getMentionSearchHandler:g}}function JO({form:e,config:t,api:n,popupContext:r,resolvedIds:i,dynamicOptions:a,extraData:c,removedIds:l,removalOnlySubmit:u=!1,fields:d,onClose:f,onSubmit:p}){let[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(null);async function v(e){let t={resolvedIds:i,dynamicOptions:a,extraData:c,removedIds:l};if(typeof n.submit==`function`)return n.submit(e,r,t);if(typeof p==`function`)return p(e,r,t)}function y(){if(t){if(!d.length){if(t.mode===`delete`&&typeof n.deleteItems==`function`){h(!0),_(null),Promise.resolve(n.deleteItems(i,r)).then(()=>{s.message.success(t.successMessage||`Deleted successfully`),f({success:!0})}).catch(e=>{let t=e?.message||`Delete failed. Please try again.`;_(t),h(!1),s.message.error(t)});return}if(typeof n.onOk==`function`){h(!0),Promise.resolve(n.onOk(r)).then(()=>f({success:!0})).catch(e=>{let t=e?.message||`Failed. Please try again.`;s.message.error(t),h(!1)});return}if(typeof n.submit==`function`){h(!0),Promise.resolve(v({})).then(e=>{e?.navigated||(s.message.success(t.successMessage||`Saved successfully`),f({success:!0}))}).catch(e=>{s.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>h(!1));return}f();return}if(u){h(!0),Promise.resolve(v(e.getFieldsValue())).then(e=>{e?.navigated||(s.message.success(t.successMessage||`Saved successfully`),f({success:!0}))}).catch(e=>{s.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>h(!1));return}e.validateFields().then(async e=>{h(!0);try{if((await v(e))?.navigated)return;s.message.success(t.successMessage||`Saved successfully`),f({success:!0})}catch(e){s.message.error(e?.message||`Failed. Please try again.`)}finally{h(!1)}}).catch(()=>{})}}function b(){h(!1),_(null)}return{handleOk:y,confirming:m,deleteError:g,resetSubmitState:b}}function YO({open:e=!0,config:t,context:n={},onClose:r,onSubmit:i,api:a={}}){let[c]=s.Form.useForm(),[d,f]=(0,o.useState)({}),[p,m]=(0,o.useState)([]),h=s.Form.useWatch([],c,{preserve:!0})??{},g=(0,o.useMemo)(()=>eO(n),[n]),{selectedIds:_=[],selectedRecords:v=[],moduleName:y=``}=g,b=(0,o.useMemo)(()=>_.map((e,t)=>{let n=v[t];return n?.id??n?._id??e}),[_,v]),x=(0,o.useMemo)(()=>t?typeof t.getFields==`function`?t.getFields(g):t.fields??[]:[],[t,g]),S=(0,o.useMemo)(()=>{let e={};return x.forEach(t=>{let n=g[t.initialValueKey];!t.initialValueKey||n===void 0||(e[t.name]=t.type===`date-picker`?(0,u.default)(n):n)}),e},[x,g]),{dynamicOptions:C,setDynamicOptions:w,extraData:T}=WO({open:e,config:t,api:a,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=qO({api:a,open:e,fields:x,popupContext:g,setDynamicOptions:w});function k(e){typeof r==`function`&&r(e)}let A=x.filter(e=>e.required),j=A.every(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0||typeof t==`object`&&!Array.isArray(t)&&Object.keys(t).length===0)}),M=(g.removedIds??[]).length,N=p.length>M,P=A.some(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0)}),{handleOk:F,confirming:I,deleteError:L,resetSubmitState:R}=JO({form:c,config:t,api:a,popupContext:g,resolvedIds:b,dynamicOptions:C,extraData:T,removedIds:p,removalOnlySubmit:!!t?.allowRemovalOnlySubmit&&N&&!P,fields:x,onClose:k,onSubmit:i});(0,o.useEffect)(()=>{e&&(c.resetFields(),f(S??{}),m(g.removedIds??[]),R())},[e,S]);let z=!!t?.autoSubmitWhenNoFields&&x.length===0;(0,o.useEffect)(()=>{!e||!z||F()},[e,z]);let B=_.length,V=String(y).replace(/s$/i,``),ee=B===1?V:y,te=v[0]??{},ne=t?.getTitleText?t.getTitleText(B,ee,te,g):t?.title,re=B===1?te.jobTitle??te.title??te.name??te.fullName??te.candidateName??null:null,ie=t?.getBodyText?t.getBodyText(B,V,ee,re,g):t?.bodyText??null,H=typeof t?.getNote==`function`?t.getNote(g):t?.note,ae=t?.disabledUntilFilled&&!j&&!N;if(!t||!e||z)return null;let oe=t.component;return oe?(0,l.jsx)(s.Modal,{open:e,title:t.title||t.getTitleText?(0,l.jsx)(UD,{titleText:ne,titleIcon:t.titleIcon}):null,footer:null,width:t.width??760,centered:!0,maskClosable:!1,onCancel:()=>k(),className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:(0,l.jsx)(oe,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,l.jsxs)(s.Modal,{open:e,title:(0,l.jsx)(UD,{titleText:ne,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:F,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:ae,loading:I},cancelButtonProps:{disabled:I},closable:!I,maskClosable:!1,width:t.width??480,centered:!0,className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:[(0,l.jsx)(WD,{note:H,description:t.description,showSelectedCount:t.showSelectedCount,count:B,itemLabel:ee,bodyText:ie,deleteError:L}),(0,l.jsx)(GD,{footerNote:t.footerNote}),(0,l.jsx)(OO,{form:c,fields:x,initialValues:S,dynamicOptions:C,popupContext:g,extraData:T,removedIds:p,setRemovedIds:m,showAlreadyAssigned:t.showAlreadyAssigned,onValuesChange:f,getSearchHandler:D,getMentionSearchHandler:O,mentionOptions:E})]})}var XO={mode:`delete`,getTitleText:(e,t)=>`Delete ${e>0?`${e} `:``}${t}`,titleIcon:`delete`,okText:`Delete`,okButtonDanger:!0,width:420,getBodyText:(e,t,n,r)=>r?`Are you sure you want to delete the ${r} ${t}?`:e>1?`Are you sure you want to delete ${e} selected ${n}?`:`Are you sure you want to delete this ${t}?`,footerNote:`This action cannot be undone.`,fields:[]},ZO={deleteItems:async(e,t)=>{await H(t.moduleName,e)}},QO=new Map;async function $O(e){return e?(QO.has(e)||QO.set(e,a.r({module:e}).catch(t=>(QO.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),QO.get(e)):[]}function ek(e=[],t){return e.some(e=>{let r=n.C(e,t);return r&&r.severity!==`allow`})}async function tk({targetModule:e,sourceModule:t,recordId:r,region:i}={}){let o={severity:`allow`,message:``,group:null};if(!e||!t||!r)return o;let s=i??n.Bn().region;try{let i=await $O(e);if(!ek(i,s))return o;let c=await a.r({module:t,id:r}),l={};for(let e of c){let t=e?.payloadKey||e?.name;t&&Array.isArray(e?.rows)&&(l[t]=e.rows)}return n.D(i,s,l)}catch(e){return console.warn(`[in-progress gate] check skipped:`,e),o}}var nk=`Already submitted`,rk=`submissions`,ik=`candidates`,ak=864e5,ok=90,sk=`This candidate was created or last updated more than 90 days ago. Only candidates created or updated within the last 90 days can be selected. Please update this candidate first.`,ck=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],lk=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function uk(e,t){for(let n of t){let t=e?.[n];if(!t)continue;let r=new Date(t);if(!Number.isNaN(r.getTime()))return r}return null}function dk(e){return uk(e,ck)}function fk(e){return uk(e,lk)}function pk(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();return Math.max(0,Math.floor((t(new Date)-t(e))/ak))}function mk(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function hk(e,t=ok){if(!e)return!1;let n=Date.now()-t*ak,r=dk(e),i=fk(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function gk(e){let t=dk(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=YD(t);return n?{createdAgo:n,createdAgoTone:mk(pk(t))}:{createdAgo:``,createdAgoTone:``}}function _k(e){return{...e,...gk(e),isStaleCandidate:hk(e)}}function vk(e){return String(e?.applicantId??e?._id??e?.id??``)}var yk=null;async function bk(){return yk||=n.Fr(ik).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),yk}async function xk(e){let t=vk(e);if(!t)return``;let n=await bk();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function Sk({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=vk(r);if(i){let e=await tk({targetModule:rk,sourceModule:ik,recordId:i});if(e.severity===`block`)return new Promise(t=>{n({title:`This candidate cannot be submitted`,content:e.message,okText:`Pick someone else`,cancelText:`Close`,onOk:()=>t(!1),onCancel:()=>t(!1)})})}if(!hk(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:sk,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await xk(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function Ck(e,t,n){return{...e,label:`${e.label} - ${nk}`,disabled:!0,title:`${nk}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var wk={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`quickSubmitJobList`){let e=n.selectedRecords?.[0]??{},r=e.id??e._id??n.selectedIds?.[0],i,a=!0;try{i=await we({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Kn({searchQuery:t,candidateId:r});i=Array.isArray(e?.data)?e.data:[]}let o=i.map(e=>({label:[e.jobReferenceId??e.clientJobReferenceId,e.jobTitle].filter(Boolean).join(` - `)||String(e._id??``),value:e._id??``,_raw:e}));if(a)return o.map(e=>{if(e._raw?.isSubmitted||e._raw?.alreadySubmitted)return Ck(e,e._raw?.jobSubmissionId||``,e._raw?.submittedAt||``);if(e._raw?.disable){let t=String(e._raw?.message??``).trim();return{...e,disabled:!0,label:t?`${e.label} - ${t}`:e.label,title:t}}return e});let s=await Ee({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?Ck(e,t.submissionId,t.submittedAt):e})}if(e.searchFetchKey===`quickSubmitCandidates`){let e=n.selectedRecords?.[0]??{},r=n.jobId??e.jobId??e.id??e._id??n.selectedIds?.[0],i,a=new Map;try{i=await Te({search:t,jobId:r})}catch{let e=await Zo({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await Ee({jobId:r,applicantIds:i.map(vk)}).catch(()=>new Map)}return i.map(e=>_k(e)).map(e=>{let t=a.get(vk(e));if(!(t||e?.isSubmitted===!0||e?.alreadySubmitted===!0))return e;let n=t?.submissionId||e?.jobSubmissionId||``,r=t?.submittedAt||e?.submittedAt||``;return{...e,disabled:!0,optionNote:nk,isSubmitted:!0,alreadySubmitted:!0,existingSubmissionId:n,...r?{submittedAt:r}:{}}})}return[]},submit:async(e,t,n)=>{let{navigate:r,selectedRecords:i=[],selectedIds:a=[],moduleName:o}=t,s=i[0]??{},c,l;t.jobId?(c=t.jobId,l=s.id??s._id??a[0]??``):o===`candidate`?(c=e.jobId??``,l=s.id??s._id??a[0]??``):(c=s.jobId??s.id??s._id??a[0]??``,l=e.candidate??``);let u=n?.dynamicOptions?.candidate?.find(e=>vk(e?._raw)===String(l)),d=n?.dynamicOptions?.jobId?.find(e=>String(e?.value)===String(c)),f=u?._raw?.isSubmitted||u?._raw?.alreadySubmitted||d?.alreadySubmitted||d?._raw?.isSubmitted||d?._raw?.alreadySubmitted;if(!c||!l)throw Error(`Select both a job and a candidate to quick submit.`);if(hk(u?._raw))throw Error(sk);let p=await tk({targetModule:rk,sourceModule:ik,recordId:l});if(p.severity===`block`)throw Error(p.message);let m=f,h=u?._raw?.existingSubmissionId||u?._raw?.jobSubmissionId||d?.existingSubmissionId||d?._raw?.jobSubmissionId||``;try{let e=await Ce({jobId:c,applicantId:l});m||=!!e?.exists,h=e?.submissionId||h}catch(e){throw Error(`Could not verify existing submissions (${e?.message??`request failed`}). Please try again.`,{cause:e})}if(m)throw Error(`This candidate is already submitted for this job${h?` (submission ${h})`:``}.`);let g=new URLSearchParams;l&&g.set(`candidateId`,l);let _=u?.priorSubmissionId||u?._raw?.submissionId||d?.priorSubmissionId||d?._raw?.submissionId||``;_?(g.set(`submissionId`,String(_)),g.set(`isFromSubmission`,`true`)):g.set(`isFromSubmission`,`false`);let v=Jo(Xo({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},Tk={title:`Submit`,okText:`Submit`,width:640,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getNote:e=>e.moduleName===`candidate`?`Note: Select a job to submit this candidate.`:`Note: Select a candidate to submit for this job`,getFields:e=>e.jobId?[]:e.moduleName===`candidate`?[{name:`jobId`,label:`Job list`,type:`search-select`,required:!0,placeholder:`Search Job ID / job name - or pick a recent job`,searchFetchKey:`quickSubmitJobList`,optionLayout:{id:`{jobReferenceId}`,title:`{jobTitle}`,subtitle:`{clientJobReferenceId}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]}}]:[{name:`candidate`,label:`Candidate`,type:`search-select`,required:!0,placeholder:`Search candidate name / email - or pick a recent candidate`,optionsKey:`candidateOptions`,searchFetchKey:`quickSubmitCandidates`,labelTemplate:`{applicantRefrenceId} - {firstName} {lastName} - {createdAgo}`,valueKey:`applicantId`,optionLayout:{id:`{applicantRefrenceId}`,title:`{firstName} {lastName}`,titleAccent:{key:`createdAgo`,toneKey:`createdAgoTone`,prefix:` - `},subtitle:`{designation} - {email}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]},onSelectGuard:Sk}]},Ek={title:`Add Notes & Share`,okText:`Save & Share`,width:480,fields:[{name:`notes`,label:`Notes`,type:`mention-textarea`,required:!0,rows:5,maxLength:2e3,placeholder:`Add your notes on the job. Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`}]},Dk=e=>e?.data??e;async function Ok({relatedId:e,notes:n,title:r,notesFor:i}){return Dk(await On(t.x,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var kk={getMentionOptions:async(e,t)=>oe(t),submit:async(e,t)=>{let n=Array.isArray(t.selectedIds)?t.selectedIds[0]:t.selectedIds;if(!n)throw Error(`Please select a record before adding a note.`);await Ok({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},Ak={name:`jobId`,label:`Job Title / ID`,type:`search-select`,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},jk={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},Mk={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[jk]:[Ak,jk]},Nk=e=>e?.data??e;function Pk(e){return Array.isArray(e)&&e.every(e=>e&&typeof e==`object`&&`Key`in e)?e.reduce((e,{Key:t,Value:n})=>(e[t]=n,e),{}):e}function Fk(e){return e?Array.isArray(e.data)?e.data.map(Pk):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(Pk):Array.isArray(e)?e.map(Pk):[]:[]}async function Ik(e=1,n=10){let r=await t.o(t.x,`/workflow/list/all?page=${e}&limit=${n}`),i=Nk(r),a=Array.isArray(i)?i:i?.data??[];return{items:a,total:Number(r?.total??i?.total)||a.length,page:e,limit:n}}async function Lk(e,n){let r=Nk(await t.o(t.x,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function Rk(e,n){if(!e||!n)return null;try{let r=new URLSearchParams({module:e,limit:`1`,offset:`0`,scope:`allJobs`,filters:JSON.stringify([{field:`_id`,op:`in`,values:[String(n)],operator:`and`}])}),i=Nk(await t.o(t.x,`/module-data-list?${r}`));if(Array.isArray(i))return i[0]??null;if(i?.data&&Array.isArray(i.data))return i.data[0]??null;let a=i?.rows??i?.records??i?.items??i?.list;return Array.isArray(a)?a[0]??null:i??null}catch(t){return console.error(`[getModuleRecordById] failed: ${e}/${n}`,t),null}}async function zk(e){return Nk(await t.o(t.T,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var Bk={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`};function Vk(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}}function Hk(e){let t=String(e??``).trim();return t?Bk[t.toLowerCase()]??t:``}function Uk(e,t){let n=Vk(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t;if(!n)return null;let r=(Vk(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[Vk(e,`firstName`,`first_name`),Vk(e,`lastName`,`last_name`)].filter(Boolean).join(` `))||void 0,i={candidateId:String(n),candidateName:r,phone:Vk(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:Vk(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:Vk(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:Vk(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:Vk(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:Vk(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:Vk(e,`screeningScore`,`screening.score`,`score`),assignedDate:Vk(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var Wk={searchOptions:async(e,t)=>e.searchFetchKey===`tagToJobJobList`?ae(t):[],submit:async(e,t)=>{let n=e.jobId??t.jobId,r=Hk(e.hiringStage??t.hiringStage),i=Array.isArray(t.selectedIds)?t.selectedIds:[],a=Array.isArray(t.selectedRecords)?t.selectedRecords:[],o=Math.max(i.length,a.length,1);for(let e=0;e<o;e+=1){let t=i[e]?String(i[e]):``,o=Uk(a[e]??{},t);await zk({jobId:n,module:`jobs`,currentStage:r,...o?{candidateDetails:o}:{}})}await le({jobId:n,candidateIds:t.selectedIds,hiringStage:r})}},Gk={title:`Change Status`,okText:`Apply`,width:420,showSelectedCount:!0,fields:[{name:`status`,label:`New Status`,type:`select`,required:!0,placeholder:`Select a status`,dataSource:`master`,masterName:`clientSubmissions`,labelKey:`name`,valueKey:`name`,initialValueKey:`currentStatus`,defaultOptions:[{label:`Active`,value:`active`},{label:`Inactive`,value:`inactive`},{label:`Pending`,value:`pending`},{label:`Closed`,value:`closed`}]}]};function Kk(e,t){let n=String(e??``).trim().toLowerCase();return(Array.isArray(t?.status)?t.status:[]).find(e=>String(e?.value??``).trim().toLowerCase()===n||String(e?.label??``).trim().toLowerCase()===n||String(e?._raw?.name??``).trim().toLowerCase()===n)??null}var qk={submit:async(e,t,n)=>{let r=Kk(e.status,n?.dynamicOptions),i=r?._raw??{},a={clientSubmissionStatusText:String(i.name??r?.label??e.status??``).trim(),clientSubmissionStatusId:Number(i.id??i.uniqueId??0)||0,clientSubmissionStatusType:String(i.type??``).trim()};await ie(t.moduleName,t.selectedIds,a)}},Jk={getTitleText:e=>`Remove ${e>1?`${e} Candidates`:`Candidate`} from Shortlist`,titleIcon:`delete`,okText:`Remove`,okButtonDanger:!0,width:420,getBodyText:e=>e>1?`Are you sure you want to remove ${e} selected candidates from the shortlist?`:`Are you sure you want to remove this candidate from the shortlist?`,footerNote:`The candidate will be moved back to the pipeline.`,fields:[]},Yk={onOk:async e=>{await De({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},Xk={title:`Add to Groups`,description:`Select a group to add the selected candidate(s) to`,okText:`Add to Group`,width:480,disabledUntilFilled:!0,fields:[{name:`groupId`,label:`Group`,type:`select`,required:!0,placeholder:`Select a group`,fetchOptionsKey:`candidateGroups`}]},Zk={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?ue():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await de({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},Qk=[{title:`Name`,key:`name`,render:(e,t)=>t.name||`${t.first_name??``} ${t.last_name??``}`.trim()||t.user_name||`Assigned user`},{title:`Role`,dataIndex:`role_name`,key:`role`,render:e=>e||`-`},{title:`Reporting`,dataIndex:`reporting_name`,key:`reporting`,render:e=>e||`-`}];function $k({selectedIds:e,onClose:t}){let n=e?.[0],[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)({assignedUsers:[],totalSubmissions:0,message:``}),[p,m]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=!1;return i(!0),Promise.all([pe(n).catch(t=>(e||s.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),he(n).catch(()=>({recruitersData:[]}))]).then(([t,n])=>{e||(f(t),m(Array.isArray(n?.recruitersData)?n.recruitersData:[]))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[n]);let h=async()=>{u(!0);try{await fe({jobIds:[n]}),s.message.success(`Job assigned successfully`),t?.({success:!0})}catch(e){s.message.error(e?.message??`Failed to assign job`)}finally{u(!1)}};if(r)return(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})});let g=p.map(e=>({user_id:e.recruiterId??e.id??e.user_id,name:e.name??``,role_name:e.role_name??e.roleName??``,reporting_name:e.reporting_name??e.reportingName??``})),_=new Map(g.map(e=>[String(e.user_id??``),e])),v=(d.assignedUsers?.length??0)>0?d.assignedUsers.map(e=>{let t=e.user_id??e.userId??e.recruiterId??e.id,n=_.get(String(t??``))??{};return{...e,user_id:t,name:n.name||e.name||``,role_name:n.role_name||e.role_name||e.roleName||``,reporting_name:n.reporting_name||e.reporting_name||e.reportingName||``}}):g,y=v.length>0;return(0,l.jsxs)(`div`,{className:`self-assign-popup-body`,children:[y?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{style:{fontWeight:700,marginBottom:8},children:`Team Members Allocated`}),(0,l.jsx)(s.Table,{columns:Qk,dataSource:v,pagination:!1,rowKey:e=>e.user_id??`${e.first_name}-${e.last_name}`,size:`small`,className:`mb-3 no-header-bg`,scroll:{y:200}}),(0,l.jsxs)(`div`,{className:`warning-card`,style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,l.jsx)(c.ExclamationCircleFilled,{style:{color:`#faad14`,fontSize:18}}),(0,l.jsx)(`div`,{style:{fontSize:13},children:`These users are already assigned to this job. Do you still want to assign yourself as well?`})]})]}):(0,l.jsx)(`div`,{style:{padding:`8px 0`},children:d.message||`No one is currently assigned to this job. Do you want to assign yourself?`}),(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,marginTop:24},children:[(0,l.jsx)(s.Button,{size:`small`,onClick:()=>t?.(),disabled:a,children:`No`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,onClick:h,loading:a,children:`Yes`})]})]})}$k.propTypes={selectedIds:f.default.array,onClose:f.default.func};var eA={title:`Self Assign`,width:480,className:`self-assign-modal`,component:$k},tA={submit:async()=>{}};function nA(e={}){let t=Array.isArray(e.jobPayDetails)?e.jobPayDetails[e.jobPayDetails.length-1]:e.jobPayDetails??e.clientBudget??{},n=Number(t.clientBudgetEnd),r=Number(t.clientBudgetStart);return Number.isFinite(n)&&n>0?n:Number.isFinite(r)&&r>0?r:null}var rA={getTitleText:(e,t,n)=>{let r=n?.jobTitle||n?.title||``;return r?`Assign - ${r}`:`Assign`},okText:`Assign`,width:520,disabledUntilFilled:!0,showAlreadyAssigned:!0,allowRemovalOnlySubmit:!0,getFields:e=>(nA(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},iA={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?me():[],loadExtraData:async e=>he(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await K({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},aA={title:`Add Sticky Notes`,getTitleText:(e,t,n,r)=>r.editingNoteId?`Edit Sticky Notes`:`Add Sticky Notes`,okText:`Save`,width:480,fields:[{name:`heading`,label:`Heading`,type:`input`,required:!0,placeholder:`Enter heading`,initialValueKey:`editingHeading`},{name:`targetDate`,label:`Target Date`,type:`date-picker`,required:!1,initialValueKey:`editingTargetDate`},{name:`comments`,label:`Comments`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Enter your note here... Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`,initialValueKey:`editingComments`}]},oA={getMentionOptions:async(e,t)=>oe(t),submit:async(e,t)=>{let n=e.targetDate?e.targetDate.toISOString():``;t.editingNoteId?await ce(t.editingNoteId,{title:e.heading,targetDate:n,notes:e.comments}):await se({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},sA={title:`Move to Onboarding`,bodyText:`Are you sure you want to move this candidate to onboarding?`,okText:`Yes`,cancelText:`No`,width:420,successMessage:`Moved to onboarding successfully`,successNavigate:`/onboarding`,fields:[{name:`sendOnboardingEmail`,type:`priority-checkbox`,checkboxLabel:`Send Onboarding Email`}]},cA={submit:async(e,t)=>{await ve({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function lA(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var uA={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function dA(e,t,n){let r=lA(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function fA(e){let t=e.selectedRecords?.[0]??{},n=dA(t,`candidateRate`,`candidateAcceptedRate`)??dA(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=dA(t,`candidateRate`,`candidateAcceptedCurrency`)??dA(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:dA(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??dA(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??uA[String(r??``).toUpperCase()]??(r||`$`),unit:dA(t,`candidateRate`,`candidateAcceptedPayUnit`)??dA(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var pA={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=fA(i);return`Candidate Rate: ${a?`${a.symbol}${a.amount}${a.unit?`/${a.unit}`:``}`:`-`}`},fields:[{name:`candidateProposedRate`,label:`Proposed Rate`,type:`number`,required:!0,placeholder:`Amount`,min:0,inlineRow:`proposedRate`,validator:(e,t)=>{if(e==null||e===``)return;let n=fA(t);if(n&&Number(e)<=Number(n.amount))return`Proposed rate must be greater than Candidate Rate`}},{name:`candidateProposedRateCurrency`,label:`Currency`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`$ USD`,value:`$`},{label:`₹ INR`,value:`₹`},{label:`€ EUR`,value:`€`}]},{name:`candidateProposedRateUnit`,label:`Unit`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`Year`,value:`yr`},{label:`Month`,value:`mo`},{label:`Week`,value:`wk`},{label:`Hour`,value:`hr`},{label:`Daily`,value:`day`}]},{name:`submitVia`,label:`Submit Via`,type:`radio`,required:!0,defaultOptions:[{label:`Mail`,value:`Mail`},{label:`VMS`,value:`VMS`}]}]},mA={submit:async(e,t)=>{let n=t.selectedIds[0];if(await ye(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await be(n)}catch{s.message.warning(`Approved. VMS notification could not be sent — use Send Mail to notify the client.`)}else s.message.info(`Approved — use Send Mail to notify the client.`)}};async function hA(e,n={}){let r=t.u();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.D}${e}`,{...n,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`,...n.headers}});if(i.status===401&&t.h(),!i.ok){let e=Error(`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return i.json()}async function gA(e){let t=await hA(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`manager`}).toString()}`);return t.data??t}function _A(e){return Array.isArray(e)?e[e.length-1]:e}function vA(e={}){let t=_A(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function yA(e,t={}){let n=_A((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=_A(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function bA(e={}){let t=String(e?.currencyRaw??``).trim().toUpperCase(),n=String(e?.currency??``).trim();return n&&!/^[A-Z]{3}$/i.test(n)?n:t===`USD`||n.toUpperCase()===`USD`?`$`:t===`INR`||n.toUpperCase()===`INR`?`₹`:t===`EUR`||n.toUpperCase()===`EUR`?`€`:t===`GBP`||n.toUpperCase()===`GBP`?`£`:n||t}function xA(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function SA(e,t={}){let n=Number(e);return Number.isFinite(n)?`${bA(t)}${n}/${xA(t)}`:``}function CA(e,t,n){if(n==null||n===``)return String(e??``);let r=String(e??``),i=String(n),a=!1,o=RegExp(`(<(?:td|th)[^>]*>[\\s\\S]*?${t}[\\s\\S]*?</(?:td|th)>\\s*<(?:td|th)[^>]*>)([\\s\\S]*?)(</(?:td|th)>)`,`gi`);r=r.replace(o,(e,t,n,r)=>(a=!0,`${t}${i}${r}`));let s=RegExp(`(<(?:strong|b)[^>]*>\\s*${t}\\s*:?\\s*</(?:strong|b)>\\s*)([\\s\\S]*?)(?=</(?:li|p|div)>)`,`gi`);if(r=r.replace(s,(e,t)=>(a=!0,`${t}${i}`)),!a){let e=RegExp(`(${t}\\s*:?[ \\t]*)([^<\\r\\n]*)`,`gi`);r=r.replace(e,(e,t)=>`${t}${i}`)}return r}function wA(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:vA(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:yA(r,i),l={proposedRate:o,jobBillRate:c},u=String(e??``).replace(/{{\.?((?:proposedRate)|(?:jobBillRate))}}/g,(e,t)=>{let n=l[t];return n==null?e:String(n)});return u=CA(u,`(?:Proposed\\s*Rate|Pay\\s*Rate)`,SA(o,n)),u=CA(u,`(?:Job\\s*)?Bill\\s*Rate`,SA(c,n)),u}function TA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var EA=(e,t)=>!!e&&e.toLowerCase()===TA(t).toLowerCase();function DA(e,t,n){let r=TA(t.submittedBy);return TA(EA(r,n)||EA(r,e.submitSource)||EA(r,e.supplierName)||EA(r,e.source)||EA(r,e.candidateSource)?``:r,e.signatureEmail)}function OA(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:DA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function kA(e){let t=e?.$oid??e?._id?.$oid??e?._id??e?.id?.$oid??e?.id??e;if(t==null||typeof t==`object`)return``;let n=String(t).trim();return/^[a-f\d]{24}$/i.test(n)?n:``}function AA(...e){for(let t of e){let e=[t?.jobId,t?.JobId,t?.job_id,t?.jobDetails?._id,t?.jobDetails?.id,t?.job?._id,t?.job?.id,t?.submission?.jobId,t?.submission?.JobId,t?.submission?.job_id,t?.submission?.jobDetails?._id,t?.submission?.jobDetails?.id,t?.submission?.job?._id,t?.submission?.job?.id,t?.recordMeta?.jobId,t?.recordMeta?.JobId,t?.recordMeta?.job_id,t?.submission?.recordMeta?.jobId,t?.submission?.recordMeta?.JobId,t?.submission?.recordMeta?.job_id].map(kA).find(Boolean);if(e)return e}return``}function jA(e){if(!e?.referralId)return{};let t=Number(e.referralRate??e.referalRate??0)||0,n=String(e.referralType??e.referalType??`RECURRING`).trim()||`RECURRING`,r=e.referralId??e.referalId;return{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0,referralDetails:{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0}}}function MA(e=``){return String(e??``).replace(/map\[[^\]]*(?:resume|document|attachment|file)[^\]]*\]/gi,``).replace(/<p>\s*<\/p>/gi,``).replace(/(?:<br\s*\/?>\s*){3,}/gi,`<br><br>`).trim()}function NA(...e){for(let t of e){let e=[t?.candidateId,t?.applicantId,t?.candidate?._id,t?.candidate?.id,t?.submission?.candidateId,t?.submission?.applicantId,t?.recordMeta?.candidateId,t?.recordMeta?.applicantId].map(kA).find(Boolean);if(e)return e}return``}async function PA(e){let t=e?.fileUrl??e?.downloadUrl??e?.url;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load ${e?.fileName||`resume`}`);let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.originalName??e?.uniqueName??`resume`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function FA(e,r,i){let a=[],o=await n._n(`submissions`,e,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=NA(r?.record?.submission,i,r?.record);if(!s){let n=await t.o(t.x,`/module/list?module=submissions&id=${encodeURIComponent(e)}`).catch(()=>({})),r=n?.data??n??{};s=NA((Array.isArray(r?.data)?r.data:Array.isArray(r)?r:[])[0])}if(s){let e=await n._n(`candidates`,s,`resume`).catch(()=>({data:[]}));a.push(...e?.data??[])}let c=(await Promise.all(a.map(PA))).filter(Boolean),l=new Set;return c.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!l.has(t)&&(l.add(t),!0)})}function IA(e={}){return{to:(e.to??e.To??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),cc:(e.cc??e.Cc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),bcc:(e.bcc??e.Bcc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),subject:e.subject??e.Subject??``,contents:MA(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function LA({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let a=n?.[0]??{},c=t?.[0]??k_(a),[u,d]=(0,o.useState)(null),[f,p]=(0,o.useState)(!0),[m,h]=(0,o.useState)([]),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(`vms`),[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)(!1),[A,j]=(0,o.useState)(!1),[M,N]=(0,o.useState)({to:``,cc:``,bcc:``,subject:``,contents:``,attachments:[],showCc:!1,showBcc:!1});(0,o.useEffect)(()=>{let e=!1;return gv(c,a).then(t=>{e||d(t)}).catch(t=>{e||(s.message.error(t?.message??`Unable to load finance details`),d({record:{submission:a},lookups:{},display:{}}))}).finally(()=>{e||p(!1)}),()=>{e=!0}},[c]),(0,o.useEffect)(()=>{let e=!1;return Tv().then(t=>{e||h(t)}).catch(()=>{}),()=>{e=!0}},[]);let P=async()=>{if(b){if(v===`mail`){_(!1),D(!0),k(!0);try{let[e,t]=await Promise.all([gA(c).then(IA),FA(c,u,a).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??a;N({to:wA(e.to,n,b,u,a),cc:wA(e.cc,n,b,u,a),bcc:wA(e.bcc,n,b,u,a),subject:wA(e.subject,n,b,u,a),contents:wA(e.contents,n,b,u,a),attachments:t,showCc:!!e.cc,showBcc:!!e.bcc})}catch(e){s.message.error(e?.message??`Unable to prepare approval mail`)}finally{k(!1)}return}T(!0);try{await ye(c,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...jA(S)}),s.message.success(`Submission approved`),_(!1),x(null),C(null),i?.({success:!0})}catch(e){s.message.error(e?.message??`Unable to approve submission`)}finally{T(!1)}}},F=!O&&ZE(M.to).length>0&&QE(M.to)&&QE(M.cc)&&QE(M.bcc)&&M.subject.trim()&&M.contents.trim(),I=async()=>{if(!b||!F||A)return;j(!0);let e={candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit};try{await ye(c,{...e,submitVia:`VMS`,...jA(S)});let t=AA(u?.record,a);if(!t)s.message.warning(`Submission approved, but job details were not available to send mail`);else try{await bn({jobId:t,toMail:ZE(M.to),ccMail:ZE(M.cc),bccMail:ZE(M.bcc),subject:M.subject,contents:M.contents,attachments:M.attachments??[]}),s.message.success(`Approval mail sent and submission approved`)}catch(e){s.message.warning(e?.message?`Submission approved, but mail was not sent: ${e.message}`:`Submission approved, but mail was not sent`)}D(!1),x(null),C(null),i?.({success:!0})}catch(e){s.message.error(e?.message??`Unable to send approval mail`)}finally{j(!1)}},L=(0,o.useMemo)(()=>({submissionApprove:async({computed:e,referral:t})=>{x(e),C(t??null),y(`vms`),_(!0)},submissionReject:async()=>{e?.navigate?.(`/popup/reject`,{replace:!0,state:{background:e?.background??null,selectedIds:t,selectedRecords:n,moduleName:r}})}}),[e,t,n,r]);return f||!u?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(av,{type:r_,record:u.record,lookups:u.lookups,identity:OA(a,u.display),referralOptions:m,currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:L,onClose:()=>i?.(),variant:`popup`}),(0,l.jsx)(s.Modal,{title:`Choose approval method`,open:g,okText:`Approve`,confirmLoading:w,onOk:P,onCancel:()=>{w||(_(!1),x(null),C(null))},children:(0,l.jsxs)(s.Radio.Group,{value:v,onChange:e=>y(e.target.value),style:{display:`grid`,gap:12},children:[(0,l.jsx)(s.Radio,{value:`vms`,children:`Via VMS`}),(0,l.jsx)(s.Radio,{value:`mail`,children:`Via Mail`})]})}),(0,l.jsx)(s.Drawer,{open:E,placement:`right`,onClose:()=>{A||D(!1)},closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,l.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>D(!1),disabled:A,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:A,disabled:!F,onClick:I,children:`Send`})]}),children:O?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsx)(uD,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??a]})})]})}LA.propTypes={context:f.default.object,selectedIds:f.default.array,selectedRecords:f.default.array,moduleName:f.default.string,onClose:f.default.func};var RA={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:LA},zA={submit:async()=>{}};function BA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var VA=(e,t)=>!!e&&e.toLowerCase()===BA(t).toLowerCase();function HA(e,t,n){let r=BA(t.submittedBy);return BA(VA(r,n)||VA(r,e.submitSource)||VA(r,e.supplierName)||VA(r,e.source)||VA(r,e.candidateSource)?``:r,e.signatureEmail)}function UA(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:HA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function WA(e){let t=Array.isArray(e)?e:[];for(let e=t.length-1;e>=0;--e)if(String(t[e]?.activityType??``).trim().toLowerCase()===`cfo rejected`)return t[e];return null}function GA(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function KA({selectedIds:e,selectedRecords:t,onClose:r}){let i=t?.[0]??{},a=e?.[0]??k_(i),[c,u]=(0,o.useState)(null),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(!0);(0,o.useEffect)(()=>{let e=!1;return m(!0),Promise.all([gv(a,i),n.dn(`submission`,a).catch(()=>[])]).then(([t,n])=>{if(e)return;let r=WA(n);f(k_(t?.meta?.workforceEngagementId??i?.onboarding?.workforceEngagementId??i?.workforceEngagementId));let a=t?.meta?.rejectReasonComments||r?.activityComments||``;u({...t,record:{...t.record,submission:{...t.record.submission,cfoRejectionReason:a?GA(a):``,cfoRejectedAt:t?.meta?.rejectedAt??r?.activityTime??null}}})}).catch(t=>{e||(s.message.error(t?.message??`Unable to load finance details`),u({record:{submission:i},lookups:{},display:{}}))}).finally(()=>{e||m(!1)}),()=>{e=!0}},[a]);let h=(0,o.useMemo)(()=>({submissionReapproveSend:async({computed:e})=>{await xe(d,{submissionId:a,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await ye(a,{candidateProposedRate:e.proposedRate,candidateProposedRateCurrency:e.currencyRaw??e.currency,candidateProposedRateUnit:e.rateUnit,submitVia:`Mail`,context:`resend`}),s.message.success(`Re-approved and sent for CFO approval`),r?.({success:!0})}}),[a,d,r]);return p||!c?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsx)(av,{type:s_,record:c.record,lookups:c.lookups,identity:UA(i,c.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}KA.propTypes={selectedIds:f.default.array,selectedRecords:f.default.array,onClose:f.default.func};var qA={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:KA},JA={submit:async()=>{}},YA=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],XA={title:`Reject`,okText:`Reject`,okButtonDanger:!0,width:480,successMessage:`Submission rejected successfully`,fields:[{name:`rejectReason`,label:`Rejection Reasons`,type:`select`,required:!0,placeholder:`Select rejection reasons`,defaultOptions:YA.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},ZA={submit:async(e,t)=>{let n=YA.find(t=>String(t.id)===String(e.rejectReason));await Se({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},QA={delete:XO,"quick-submit":Tk,"add-notes":Ek,"tag-to-job":Mk,"change-status":Gk,"remove-from-shortlist":Jk,"add-to-groups":Xk,"self-assign":eA,"others-assign":rA,"sticky-notes":aA,"move-to-onboarding":sA,"approve-rate":pA,"manager-approve":RA,"manager-reapprove":qA,reject:XA},$A={delete:ZO,"quick-submit":wk,"add-notes":kk,"tag-to-job":Wk,"change-status":qk,"remove-from-shortlist":Yk,"add-to-groups":Zk,"self-assign":tA,"others-assign":iA,"sticky-notes":oA,"move-to-onboarding":cA,"approve-rate":mA,"manager-approve":zA,"manager-reapprove":JA,reject:ZA};function ej(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function tj(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}return``}function nj(e){let t=String(tj(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(tj(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function rj(e){let t=tj(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[tj(e,`firstName`,`first_name`),tj(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function ij(e){return String(tj(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function aj(e){return String(tj(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function oj(e){return String(tj(e,`batchName`,`name`,`title`,`batch_name`))}function sj({open:e=!0,context:r={},onClose:i}){let[a,c]=(0,o.useState)([]),[u,d]=(0,o.useState)([]),[f,p]=(0,o.useState)(``),[m,h]=(0,o.useState)(!0),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(``),[b,x]=(0,o.useState)(new Map),S=String(r.selectedIds?.[0]??r.selectedRecords?.[0]?._id??r.selectedRecords?.[0]?.id??r.batchId??``);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return Promise.resolve().then(()=>(t||h(!0),Promise.all([n.bn(`onboarding`,200,0),n.bn(`batchCandidates`,1e3,0).catch(()=>[])]))).then(([e,n])=>{t||(c(ej(e)),x(new Map(ej(n).filter(nj).map(e=>[String(tj(e,`candidateId`,`candidate_id`)),e]).filter(([e])=>e))))}).catch(e=>{t||y(e.message||`Unable to load onboarding candidates`)}).finally(()=>{t||h(!1)}),()=>{t=!0}},[e]);let C=(0,o.useMemo)(()=>{let e=f.trim().toLowerCase();return e?a.filter(t=>[rj(t),tj(t,`email`,`candidateEmail`,`candidate_email`),tj(t,`status`,`onboardingStatus`,`onboarding_status`)].some(t=>String(t).toLowerCase().includes(e))):a},[a,f]);async function w(){if(!S){y(`Select a batch before adding candidates`);return}let e=a.filter(e=>u.includes(aj(e)));if(!e.length)return;let o=e.map(e=>({record:e,assignment:b.get(ij(e))})).filter(e=>e.assignment);if(o.length){let e=o.map(({record:e})=>rj(e)).join(`, `);y(`${e} ${o.length===1?`is`:`are`} already added to a batch. Each candidate can be added to only one batch.`);return}_(!0),y(``);try{let{userId:a}=t.s(),o=oj(r.selectedRecords?.[0])||oj(r);await Promise.all(e.map(e=>n.Zn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:o,candidateId:ij(e),workforceEngagementId:aj(e),source:`ONBOARDING`,assignmentStatus:`ASSIGNED`,assignedAt:new Date().toISOString(),assignedBy:a??0,isDeleted:!1}))),s.message.success(`${e.length} candidate${e.length===1?``:`s`} added to the batch`),i?.({refresh:!0})}catch(e){y(e.message||`Unable to add candidates to the batch`)}finally{_(!1)}}return(0,l.jsxs)(s.Modal,{open:e,title:`Add Candidate to Batch`,okText:`Add`,onOk:w,onCancel:()=>i?.(),okButtonProps:{disabled:u.length===0||!S,loading:g},cancelButtonProps:{disabled:g},closable:!g,maskClosable:!1,width:760,centered:!0,children:[v&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:v,style:{marginBottom:12}}),(0,l.jsx)(s.Input.Search,{allowClear:!0,placeholder:`Search onboarding candidates`,value:f,onChange:e=>p(e.target.value),style:{marginBottom:12}}),(0,l.jsx)(s.Table,{rowKey:e=>aj(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>rj(t)},{title:`Email`,key:`email`,render:(e,t)=>tj(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>tj(t,`status`,`onboardingStatus`,`onboarding_status`)||`—`}],dataSource:C,loading:m,size:`small`,pagination:{pageSize:10,showSizeChanger:!1},rowSelection:{selectedRowKeys:u,onChange:d,getCheckboxProps:e=>{let t=b.get(ij(e));return{disabled:!ij(e)||!aj(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var cj={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function lj(e){if(!e)return null;let t=[...e.groups??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>[...e.fields??[]].filter(e=>e.show!==0&&e.show!==!1).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,name:e.name??e.field,label:e.label??e.field,type:cj[String(e.type??`text`).toLowerCase()]??e.type??`input`,required:e.required??e.req===1,options:(e.options??[]).map(e=>({label:e.label??e.name??e.value,value:e.value??e.id??e.label}))}))),n=uj(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function uj(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function dj(e,t=[]){if(!e||!Array.isArray(t)||!t.length)return e;let n=new Map(t.filter(e=>e?.name).map(e=>[String(e.name),e]));return n.size?{...e,fields:(e.fields??[]).map(r=>{let i=n.get(String(r.name))??n.get(String(r.label))??(n.size===1&&(e.fields??[]).length===1?t[0]:null);if(!i)return r;let{name:a,...o}=i;return{...r,...o}})}:e}function fj({apiMap:e={},extraConfigs:r={}}){let i=(0,o.useMemo)(()=>({...$A,...e}),[e]),a=(0,o.useMemo)(()=>{let e={...QA};return Object.entries(r).forEach(([t,n])=>{e[t]={...e[t]??{},...n}}),e},[r]),{popupKey:s}=(0,d.useParams)(),c=(0,d.useNavigate)(),{state:u={}}=(0,d.useLocation)(),[f,p]=(0,o.useState)({key:``,config:null});(0,o.useEffect)(()=>{let e=!1;if(!s||!u.moduleName)return;let t=`${u.moduleName}:${s}`;return n.Cr(u.moduleName,`popup`,s).then(n=>{e||p({key:t,config:lj(n[0])})}).catch(()=>{e||p({key:t,config:null})}),()=>{e=!0}},[s,u.moduleName]);let m=(0,o.useMemo)(()=>{let e=a[s],t=`${u.moduleName}:${s}`,n=f.key===t?f.config:null;return dj(n?{...e,...n}:e,u.popupAction?.popupFieldOverrides)},[f,a,s,u.moduleName,u.popupAction?.popupFieldOverrides]),h=(0,o.useMemo)(()=>({selectedIds:u.selectedIds??[],selectedRecords:u.selectedRecords??[],moduleName:u.moduleName??``,navigate:c,background:u.background??null,...u.popupContext??{}}),[c,u.selectedIds,u.selectedRecords,u.moduleName,u.popupContext,u.background]),g=(0,o.useMemo)(()=>{let e=u.popupAction;return e?.apiPath?{submit:(n,r)=>{let i=String(e.apiMethod||`POST`).toUpperCase();return t.o(t.x,e.apiPath.startsWith(`/`)?e.apiPath:`/${e.apiPath}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({...n,selectedIds:r.selectedIds,selectedRecords:r.selectedRecords,moduleName:r.moduleName})})}}:{}},[u.popupAction]),_=e=>{let t=u.background;if(e?.success&&m?.successNavigate){c(m.successNavigate,{replace:!0,state:{refreshTimestamp:Date.now()}});return}if(e?.success&&t?.pathname){c(`${t.pathname}${t.search??``}`,{replace:!0,state:{...t.state??{},refreshTimestamp:Date.now()}});return}c(-1)};return s===`add-batch-candidate`?(0,l.jsx)(sj,{open:!0,context:h,onClose:_}):(0,l.jsx)(YO,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var pj={title:`Vendor Share`,maxVendorSelect:1e3,defaultTab:`myVendor`,defaultPageSize:10,vendorTabs:[{key:`myVendor`,label:`My Vendors`},{key:`allVendor`,label:`All Vendors`}],vendorColumns:[{title:`Vendor Name`,dataIndex:`vendorName`,key:`vendorName`},{title:`Email`,dataIndex:`vendorEmail`,key:`vendorEmail`},{title:`Location`,dataIndex:`vendorLocation`,key:`vendorLocation`},{title:`Updated On`,dataIndex:`updatedOn`,key:`updatedOn`}]},mj={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>_n({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>vn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>bn({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},hj=pj.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function gj(){let e=(0,d.useNavigate)(),t=(0,d.useLocation)(),{selectedIds:n=[],selectedRecords:r=[],recipients:i=[],subject:a=``,onSend:u,moduleName:f=``,popupAction:p={}}=t.state??{},m=n[0]??r[0]?._id??r[0]?.id,[h,g]=(0,o.useState)({to:i.join(`, `),cc:``,bcc:``,subject:a,contents:``,showCc:!1,showBcc:!1}),[_,v]=(0,o.useState)(!m),[y,b]=(0,o.useState)(pj.defaultTab),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)([]),[T,E]=(0,o.useState)(0),[D,O]=(0,o.useState)(0),[k,A]=(0,o.useState)(0),[j,M]=(0,o.useState)(1),[N,P]=(0,o.useState)(pj.defaultPageSize),[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!m)return;let e=!1;I(!0);let t=x?100:N,n=x?0:(j-1)*N;return mj.getVendorList({jobId:m,limit:t,offset:n,type:y}).then(t=>{if(e)return;let n=t?.data?.vendorList??t?.data??[],r=t?.data?.myVendorCount??0,i=t?.data?.allVendorCount??0;w(Array.isArray(n)?n:[]),E(r),O(i),A(y===`myVendor`?r:i)}).catch(()=>{e||(w([]),A(0))}).finally(()=>{e||I(!1)}),()=>{e=!0}},[m,y,j,N,x]),(0,o.useEffect)(()=>{m&&mj.getMailDetails(m).then(e=>g(t=>({...t,subject:e.subject||t.subject,contents:e.contents||t.contents,to:e.toMail?.length?Array.isArray(e.toMail)?e.toMail.join(`, `):String(e.toMail):t.to,cc:e.ccMail?.length?Array.isArray(e.ccMail)?e.ccMail.join(`, `):String(e.ccMail):t.cc}))).catch(()=>{}).finally(()=>v(!0))},[m]);let z=(0,o.useMemo)(()=>L.map(e=>C.find(t=>t.vendorId===e)?.vendorEmail??``).filter(Boolean),[L,C]),B=(0,o.useMemo)(()=>({...h,bcc:[...new Set([...ZE(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function V(e){let t=new Set(z);g({...e,bcc:ZE(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let ee=(ZE(B.to).length||ZE(B.bcc).length)&&QE(B.to)&&QE(B.cc)&&QE(B.bcc)&&B.subject.trim(),te=e=>e===`myVendor`?T:D;function ne(){e(-1)}function re(){ee&&mj.submit({jobId:m,toMail:ZE(B.to),ccMail:ZE(B.cc),bccMail:ZE(B.bcc),subject:B.subject,contents:B.contents}).then(t=>{t?.status===!0?(s.message.success(t?.data||`Mail sent successfully.`),typeof u==`function`&&u({...B,message:B.contents,selectedIds:n}),e(-1)):s.message.error(t?.message||t?.data||`Failed to send mail. Please try again.`)}).catch(e=>{s.message.error(e?.message||`Failed to send mail. Please try again.`)})}let ie=(0,o.useMemo)(()=>{if(!x)return C;let e=x.toLowerCase();return C.filter(t=>(t.vendorName??``).toLowerCase().includes(e)||(t.vendorEmail??``).toLowerCase().includes(e)||(t.vendorLocation??``).toLowerCase().includes(e))},[C,x]);return(0,l.jsx)(s.Drawer,{open:!0,placement:`right`,onClose:ne,closable:!1,rootClassName:`vendor-share`,width:`95%`,footer:(0,l.jsxs)(`div`,{className:`vendor-share__footer`,children:[(0,l.jsx)(s.Button,{onClick:ne,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,disabled:!ee,onClick:re,children:`Send`})]}),children:(0,l.jsxs)(`div`,{className:`vendor-share__body`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__left`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__vendor-header`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__vendor-header-row`,children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.CloseOutlined,{}),onClick:ne,size:`small`,style:{marginRight:8}}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,l.jsx)(c.TeamOutlined,{})}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:`Vendor List`}),(0,l.jsxs)(`div`,{className:`vendor-share__vendor-search`,children:[(0,l.jsx)(c.SearchOutlined,{className:`vendor-share__search-icon`}),(0,l.jsx)(s.Input,{variant:`borderless`,placeholder:`Search vendor`,value:x,onChange:e=>{S(e.target.value),M(1)},className:`vendor-share__search-input`})]})]}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-tabs`,children:pj.vendorTabs.map(e=>(0,l.jsxs)(`span`,{className:`vendor-share__vendor-tab${y===e.key?` vendor-share__vendor-tab--active`:``}`,onClick:()=>{b(e.key),M(1),R([])},children:[e.label,` (`,te(e.key),`)`]},e.key))})]}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-table-wrapper`,children:(0,l.jsx)(s.Table,{rowKey:e=>e.vendorId,columns:hj,dataSource:ie,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>pj.maxVendorSelect||R(e)}},scroll:{y:`calc(100vh - 340px)`}})}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-footer`,children:(0,l.jsx)(ze,{current:j,pageSize:N,total:k,onChange:e=>M(e),onPageSizeChange:e=>P(e)})})]}),(0,l.jsx)(`div`,{className:`vendor-share__right`,children:(0,l.jsx)(uD,{value:B,onChange:V,moduleName:f,defaultTemplateId:p.defaultTemplateId??t.state?.defaultTemplateId??``,ready:_,contextRecords:r,title:`Share`,hint:`Select vendors or add email addresses`,bccHint:`Vendor emails are added automatically`,afterBcc:L.length>0?(0,l.jsxs)(`div`,{className:`vendor-share__selected-count`,children:[L.length,` / `,pj.maxVendorSelect,` Vendors selected`]}):null})})]})})}var _j={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z][a-zA-Z-]*\.[a-zA-Z]{2,}$/,PHONE:/^[0-9]{10}$/,PASSWORD:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHABETS:/^[A-Za-z ]+$/,ALPHANUMERIC:/^(?!\s)[A-Za-z0-9 ]+$/,NUMBER:/^[0-9]+$/,URL:/^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+(com|org|net|in|co|io|gov|edu)(\/[^\s]*)?$/i,CANDIDATE_ID:/^[A-Za-z0-9-]+$/,REMARKS:/^[A-Za-z0-9\s.,'"\-()!?/@#$%&]*$/,DESIGNATION:/^[a-zA-Z0-9\s,.\-&()]{2,100}$/,DOB:/^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/,COMPANY_NAME:/^[A-Za-z0-9\s&.,'()-]+$/,FIRST_NAME:/^[A-Z][a-zA-Z]*$/,FULL_NAME:/^[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*$/,NO_SPACES:/^\S+$/,STARTS_WITH_CAPITAL:/^[A-Z].*$/},vj={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},yj={REQUIRED:e=>`Mandatory Field`,INVALID_EMAIL:`Please enter a valid email address.`,INVALID_PHONE:`Phone number must contain exactly 10 digits.`,INVALID_PASSWORD:`Password must contain uppercase, lowercase, number, special character and minimum 8 characters.`,INVALID_ALPHABETS:`Only alphabets and spaces are allowed.`,INVALID_ALPHANUMERIC:`Only letters, numbers and spaces are allowed.`,INVALID_NUMBER:`Only numbers are allowed.`,INVALID_URL:`Please enter a valid URL.`,INVALID_CANDIDATE_ID:e=>`${e} can contain only letters, numbers and hyphens.`,INVALID_REMARKS:`Remarks contain invalid characters.`,INVALID_DESIGNATION:`Designation contains invalid characters.`,INVALID_DOB:`DOB must be in MM/DD/YYYY format.`,INVALID_LINKEDIN:`Please enter a valid LinkedIn URL.`,INVALID_COMPANY_NAME:`Company name contains invalid characters.`,INVALID_FIRST_NAME:`First letter must be capital and spaces are not allowed.`,INVALID_FULL_NAME:`Each word must start with a capital letter.`,NO_SPACES_ALLOWED:`Spaces are not allowed.`,MUST_START_WITH_CAPITAL:`First letter must be capital.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,INVALID_FILE_SIZE:`File upload must be ${vj.MAX_FILE_SIZE} MB below.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,SINGLE_FILE_ONLY:`Only one file can be uploaded.`},bj={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},xj={REMARKS_MIN:10,REMARKS_MAX:250},Sj={removeSpaces:(e=``)=>e.replace(/\s/g,``),capitalizeFirstLetter:(e=``)=>e.charAt(0).toUpperCase()+e.slice(1),capitalizeWords:(e=``)=>e.replace(/\b\w/g,e=>e.toUpperCase()),removeExtraSpaces:(e=``)=>e.replace(/\s+/g,` `).trim(),firstNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),fullNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),phoneFormatter:(e=``)=>e.replace(/\D/g,``).slice(0,10),dobFormatter:(e=``)=>{let t=e.replace(/\D/g,``);return t.length<=2?t:t.length<=4?`${t.slice(0,2)}/${t.slice(2)}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t.slice(4,8)}`}},Cj={required:(e=`Field`)=>({required:!0,message:yj.REQUIRED(e)}),email:()=>({pattern:_j.EMAIL,message:yj.INVALID_EMAIL}),phone:()=>({pattern:_j.PHONE,message:yj.INVALID_PHONE}),password:()=>({pattern:_j.PASSWORD,message:yj.INVALID_PASSWORD}),alphabets:()=>({pattern:_j.ALPHABETS,message:yj.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:_j.ALPHANUMERIC,message:yj.INVALID_ALPHANUMERIC}),number:()=>({pattern:_j.NUMBER,message:yj.INVALID_NUMBER}),url:()=>({pattern:_j.URL,message:yj.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:_j.CANDIDATE_ID,message:yj.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:_j.REMARKS,message:yj.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${xj.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${xj.REMARKS_MAX} characters.`}),designation:()=>({pattern:_j.DESIGNATION,message:yj.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!_j.DOB.test(n))return Promise.reject(Error(yj.INVALID_DOB));let r=(0,u.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(yj.INVALID_DOB));let i=(0,u.default)().endOf(`day`);return r.isAfter(i)?Promise.reject(Error(`Date of Birth cannot be a future date.`)):i.diff(r,`year`)<21?Promise.reject(Error(`Age must be at least 21 years.`)):Promise.resolve()}}),linkedin:()=>({pattern:_j.LINKEDIN,message:yj.INVALID_LINKEDIN}),companyName:()=>({pattern:_j.COMPANY_NAME,message:yj.INVALID_COMPANY_NAME}),firstName:()=>({pattern:_j.FIRST_NAME,message:yj.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${bj.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${bj.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:bj.FIRST_NAME_MIN,message:yj.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:bj.FIRST_NAME_MAX,message:yj.FIRST_NAME_MAX}),remarksMinLength:()=>({min:xj.REMARKS_MIN,message:yj.REMARKS_MIN}),remarksMaxLength:()=>({max:xj.REMARKS_MAX,message:yj.REMARKS_MAX}),fullName:()=>({pattern:_j.FULL_NAME,message:yj.INVALID_FULL_NAME}),noSpaces:()=>({pattern:_j.NO_SPACES,message:yj.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:_j.STARTS_WITH_CAPITAL,message:yj.MUST_START_WITH_CAPITAL}),fileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();for(let e of t){let t=e.originFileObj||e;if(!(t.size/1024/1024<=vj.MAX_FILE_SIZE))return s.message.error(yj.INVALID_FILE_SIZE),Promise.reject(Error(yj.INVALID_FILE_SIZE));if(!vj.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(yj.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>vj.SINGLE_FILE_COUNT)return Promise.reject(Error(yj.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<vj.MAX_FILE_SIZE?vj.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(yj.INVALID_FILE_TYPE)):Promise.reject(Error(yj.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>vj.MULTI_FILE_COUNT)return Promise.reject(Error(yj.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<vj.MAX_FILE_SIZE))return Promise.reject(Error(yj.INVALID_FILE_SIZE));if(!vj.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(yj.INVALID_FILE_TYPE))}return Promise.resolve()}})},wj={beforeUpload:e=>[`image/jpeg`,`image/png`,`application/pdf`].includes(e.type)?e.size/1024/1024<=2?!1:(s.message.error(`File upload must be 2 MB below.`),s.Upload.LIST_IGNORE):(s.message.error(`Only JPG, PNG and PDF files are allowed.`),s.Upload.LIST_IGNORE)},Tj=()=>{let[e]=s.Form.useForm();return(0,l.jsx)(`div`,{style:{padding:24},children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,onFinish:e=>{console.log(`Form Values:`,e)},autoComplete:`off`,children:[(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Email`,name:`email`,rules:[Cj.required(`Email`),Cj.email()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Phone Number`,name:`phone`,rules:[Cj.required(`Phone Number`),Cj.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Sj.phoneFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:[Cj.required(`Password`),Cj.password()],children:(0,l.jsx)(s.Input.Password,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Full Name`,name:`fullName`,rules:[Cj.required(`Full Name`),Cj.alphabets(),Cj.firstNameMinLength(),Cj.firstNameMaxLength()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({fullName:Sj.firstNameFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[Cj.required(`Username`),Cj.alphanumeric()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({username:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Website URL`,name:`website`,rules:[Cj.required(`Website URL`),Cj.url()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({website:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`MSP Req ID`,name:`mspreqID`,rules:[Cj.required(`MSP Req ID`),Cj.candidateId(`MSP Req ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[Cj.required(`Candidate ID`),Cj.candidateId(`Candidate ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({candidateId:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(s.Form.Item,{label:`Remarks`,name:`remarks`,rules:[Cj.required(`Remarks`),Cj.remarks(),Cj.remarksMinLength(),Cj.remarksMaxLength()],children:(0,l.jsx)(s.Input.TextArea,{rows:4})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Designation`,name:`designation`,rules:[Cj.required(`Designation`),Cj.designation()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Date of Birth`,name:`dob`,rules:[Cj.dob()],children:(0,l.jsx)(s.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Sj.dobFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Company Name`,name:`companyName`,rules:[Cj.required(`Company Name`),Cj.companyName()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{name:`contractType`,label:`Contract Type`,children:(0,l.jsxs)(s.Select,{showSearch:!0,allowClear:!0,filterOption:(e,t)=>(t?.label??``).toLowerCase().includes(e.toLowerCase()),children:[(0,l.jsx)(s.Select.Option,{value:`C2C`,label:`C2C`,children:`C2C`}),(0,l.jsx)(s.Select.Option,{value:`W2-Contract`,label:`W2-Contract`,children:`W2-Contract`}),(0,l.jsx)(s.Select.Option,{value:`W2-Fulltime`,label:`W2-Fulltime`,children:`W2-Fulltime`}),(0,l.jsx)(s.Select.Option,{value:`1099`,label:`1099`,children:`1099`})]})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{name:`candidateProposedRateCurrency`,label:`Currency`,children:(0,l.jsxs)(s.Select,{showSearch:!0,allowClear:!0,children:[(0,l.jsx)(s.Select.Option,{value:`$`,children:`$`}),(0,l.jsx)(s.Select.Option,{value:`₹`,children:`₹`}),(0,l.jsx)(s.Select.Option,{value:`€`,children:`€`}),(0,l.jsx)(s.Select.Option,{value:`zł`,children:`zł`}),(0,l.jsx)(s.Select.Option,{value:`£`,children:`£`}),(0,l.jsx)(s.Select.Option,{value:`kr`,children:`kr`}),(0,l.jsx)(s.Select.Option,{value:`Fr`,children:`Fr`}),(0,l.jsx)(s.Select.Option,{value:`kr`,children:`kr`})]})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Resume new`,name:`resume`,children:(0,l.jsx)(s.Upload,{beforeUpload:wj.beforeUpload,maxCount:1,children:(0,l.jsx)(s.Button,{children:`Upload Resume`})})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Documents`,name:`documents`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Cj.multiFileUpload()],children:(0,l.jsx)(s.Upload,{multiple:!0,beforeUpload:wj.beforeUpload,children:(0,l.jsx)(s.Button,{children:`Upload Documents`})})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Upload File`,name:`file`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Cj.fileUpload()],children:(0,l.jsx)(s.Upload,{beforeUpload:wj.beforeUpload,maxCount:1,children:(0,l.jsx)(s.Button,{children:`Upload`})})})})]}),(0,l.jsx)(s.Row,{children:(0,l.jsx)(s.Form.List,{name:`users`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t,...r})=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{required:!0,...r,rules:[{required:!0,message:`First name is requried`}],name:[t,`first`],children:(0,l.jsx)(s.Input,{placeholder:`First Name`})})}),(0,l.jsx)(s.Col,{span:11,children:(0,l.jsx)(s.Form.Item,{...r,required:!0,name:[t,`last`],children:(0,l.jsx)(s.Input,{placeholder:`Last Name`})})}),(0,l.jsx)(s.Col,{span:1,children:(0,l.jsx)(c.MinusCircleOutlined,{onClick:()=>n(t)})})]})),(0,l.jsx)(s.Form.Item,{children:(0,l.jsx)(s.Button,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,l.jsx)(c.PlusOutlined,{}),children:`Add field`})})]})})}),(0,l.jsxs)(s.Form.Item,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,children:`Submit`}),(0,l.jsx)(s.Button,{style:{marginLeft:10},onClick:()=>e.resetFields(),children:`Reset`})]})]})})};function Ej({region:e,onExit:t}){if(!e||e.isHome)return null;let n=e.label?.trim()||e.key;return(0,l.jsxs)(`div`,{role:`status`,"aria-live":`polite`,style:{position:`sticky`,top:0,zIndex:1e3,display:`flex`,alignItems:`center`,gap:12,padding:`10px 16px`,background:`linear-gradient(90deg, #7c2d12 0%, #9a3412 100%)`,color:`#fff`,fontSize:14,fontWeight:600,boxShadow:`0 2px 8px rgba(0,0,0,.25)`,borderBottom:`2px solid #fdba74`},children:[(0,l.jsx)(c.GlobalOutlined,{style:{fontSize:16,flexShrink:0}}),(0,l.jsxs)(`span`,{style:{flex:1,minWidth:0},children:[`You are administering`,` `,(0,l.jsx)(`span`,{style:{background:`rgba(255,255,255,.18)`,padding:`2px 8px`,borderRadius:4,letterSpacing:`.02em`},children:n}),` — `,`changes here affect that region only, not your own.`]}),t&&(0,l.jsxs)(`button`,{type:`button`,onClick:t,style:{display:`inline-flex`,alignItems:`center`,gap:6,background:`rgba(255,255,255,.15)`,border:`1px solid rgba(255,255,255,.45)`,color:`#fff`,borderRadius:4,padding:`4px 12px`,fontSize:13,fontWeight:600,cursor:`pointer`,flexShrink:0},children:[(0,l.jsx)(c.SwapOutlined,{}),`Back to my region`]})]})}Ej.propTypes={region:f.default.shape({key:f.default.string,label:f.default.string,isHome:f.default.bool}),onExit:f.default.func},Ej.defaultProps={region:null,onExit:void 0};function Dj(e){return(0,l.jsx)(Fy,{children:(0,l.jsx)(KE,{...e})})}var{Text:Oj}=s.Typography,kj=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Aj={fileText:(0,l.jsx)(c.FileTextOutlined,{}),checkCircle:(0,l.jsx)(c.CheckCircleOutlined,{}),user:(0,l.jsx)(c.UserOutlined,{}),filter:(0,l.jsx)(c.FilterOutlined,{})};function jj({stats:e=kj}){return(0,l.jsx)(s.Card,{children:(0,l.jsx)(s.Row,{gutter:[12,12],children:e.map(e=>(0,l.jsx)(s.Col,{xs:24,sm:24,md:8,lg:8,xl:8,children:(0,l.jsxs)(s.Card,{className:`stats-inner-card`,children:[(0,l.jsxs)(s.Space,{align:`center`,children:[Aj[e.icon]??Aj.fileText,(0,l.jsx)(Oj,{children:e.label})]}),(0,l.jsx)(s.Statistic,{value:e.value})]})},e.label))})})}var{Text:Mj}=s.Typography;function Nj(e){return e?.USER_NAME??e?.user_name??e?.username??e?.name??e?.full_name??e?.fullName??e?.email??`User ${e?.USER_ID??e?.user_id??`?`}`}function Pj(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Nj(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function Fj(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(1),[p,m]=(0,o.useState)(10),[h,g]=(0,o.useState)(``),_=(0,o.useCallback)(async({offset:e,limit:r,searchQuery:a}={})=>{u(!0);try{let o=await n.gr({offset:e,limit:r,searchQuery:a??``}),s=(o.users??[]).map(Pj);t(s),i(o.total??s.length)}catch{s.message.error(`Failed to load users`)}finally{u(!1)}},[]);return(0,o.useEffect)(()=>{queueMicrotask(()=>{_({offset:(d-1)*p,limit:p,searchQuery:h})})},[_,d,p,h]),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.TeamOutlined,{}),title:`Users`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Users`,dataSource:e,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Mj,{strong:!0,style:{fontSize:13},children:e}),t._email&&(0,l.jsx)(`div`,{style:{fontSize:11,color:`var(--color-text-muted)`},children:t._email})]})},{label:`Role`,value:`_role`,width:180}],loading:a,total:r,current:d,pageSize:p,onPageChange:e=>f(e),onPageSizeChange:e=>{m(e),f(1)},onSearch:e=>{g(e),f(1)}})})}var{Text:Ij}=s.Typography,Lj=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Rj=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function zj({field:e,index:t,onToggle:n,onReorder:r}){let i=(0,o.useRef)(null),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(!1);function p(e){i.current=t,e.dataTransfer.effectAllowed=`move`,f(!0)}function m(){f(!1),u(!1)}function h(e){e.preventDefault(),u(!0)}function g(){u(!1)}function _(e){e.preventDefault(),u(!1),i.current!==null&&i.current!==t&&r(i.current,t),i.current=null}return(0,l.jsxs)(`div`,{draggable:!0,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g,onDrop:_,className:`uss-field-row with-edit${a?` drag-over`:``}${d?` dragging`:``}`,children:[(0,l.jsx)(`span`,{className:`uss-drag-handle`,children:(0,l.jsx)(c.HolderOutlined,{})}),(0,l.jsxs)(`span`,{className:`uss-field-name`,children:[e.fieldName,(0,l.jsx)(`span`,{className:`uss-field-key`,children:e.fieldKey})]}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:e.isVisible,onChange:e=>n(t,`isVisible`,e)})}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>n(t,`isEditable`,e)})}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>n(t,`ismandatory`,e)})})]})}function Bj({team:e,configType:t}){let[r,i]=(0,o.useState)({}),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)({}),[f,p]=(0,o.useState)(`job`);(0,o.useEffect)(()=>{e&&(c(!0),n.Gr(e,t).then(i).catch(()=>s.message.error(`Failed to load field config`)).finally(()=>c(!1)))},[e,t]);let m=r[f]??[];function h(e,t){i(n=>({...n,[e]:typeof t==`function`?t(n[e]??[]):t}))}function g(e,t,n){h(f,r=>r.map((r,i)=>i===e?{...r,[t]:n}:r))}function _(e,t){h(f,n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t}))})}async function v(){let r=f;d(e=>({...e,[r]:!0}));try{await n.vi(e,r,m,t),s.message.success(`Saved`)}catch{s.message.error(`Save failed`)}finally{d(e=>({...e,[r]:!1}))}}return(0,l.jsxs)(s.Spin,{spinning:a,children:[(0,l.jsx)(s.Tabs,{size:`small`,activeKey:f,onChange:p,items:Lj.map(e=>({key:e.key,label:e.label}))}),(0,l.jsxs)(`div`,{className:`uss-field-header with-edit`,children:[(0,l.jsx)(`span`,{}),(0,l.jsx)(`span`,{children:`Field`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Editable`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Mandatory`})]}),(0,l.jsxs)(`div`,{className:`uss-field-list`,children:[m.length===0&&!a&&(0,l.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),m.map((e,t)=>(0,l.jsx)(zj,{field:e,index:t,onToggle:g,onReorder:_},e.fieldKey??t))]}),(0,l.jsx)(`div`,{className:`uss-modal-footer`,children:(0,l.jsxs)(s.Button,{type:`primary`,size:`small`,loading:u[f],onClick:v,children:[`Save `,Lj.find(e=>e.key===f)?.label]})})]})}function Vj(){let[e,t]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(`listView`),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)(0),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)(!1),C=(0,o.useCallback)(async()=>{v(!0);try{let e=await n.hr();m(e.teams),g(e.total)}catch{s.message.error(`Failed to load teams`)}finally{v(!1)}},[]);(0,o.useEffect)(()=>{C()},[C]);function w(e){t(e),f(`listView`),i(!0)}function T(e){t(e),b(e.teamName??``),u(!0)}async function E(){if(!y.trim()){s.message.warning(`Team name is required`);return}S(!0);try{await n._i(e,{teamName:y.trim(),managerId:e.managerId,memberIds:e.memberIds}),s.message.success(`Team updated`),u(!1),C()}catch{s.message.error(`Failed to update team`)}finally{S(!1)}}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Z,{icon:(0,l.jsx)(c.TeamOutlined,{}),title:`Teams`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Teams`,dataSource:p,fields:[{label:`Team Name`,value:`teamName`,width:200},{label:`Manager`,value:`manager`,width:200},{label:`Members`,value:`memberCount`,width:90,sorter:!1},{label:`Actions`,value:`_actions`,width:160,sorter:!1,render:(e,t)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:4},children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>T(t),children:`Edit`}),(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>w(t),children:`Configure`})]})}],loading:_,total:h})}),(0,l.jsx)(s.Modal,{open:a,onCancel:()=>u(!1),title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.TeamOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),`Edit Team`]}),width:420,footer:null,destroyOnClose:!0,children:(0,l.jsxs)(`div`,{className:`uss-edit-team-body`,style:{paddingTop:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`uss-edit-team-label`,children:`Team Name`}),(0,l.jsx)(s.Input,{value:y,onChange:e=>b(e.target.value),onPressEnter:E,placeholder:`Enter team name`})]}),(0,l.jsxs)(`div`,{className:`uss-modal-footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>u(!1),children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:x,onClick:E,children:`Save`})]})]})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.TeamOutlined,{style:{color:`var(--color-brand)`}}),(0,l.jsxs)(`span`,{children:[`Configure: `,e?.teamName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,l.jsx)(`div`,{style:{marginBottom:12},children:(0,l.jsx)(`div`,{className:`uss-config-toggle`,children:Rj.map(e=>(0,l.jsx)(`button`,{className:`uss-config-btn${d===e.key?` active`:``}`,onClick:()=>f(e.key),children:e.label},e.key))})}),e&&(0,l.jsx)(Bj,{team:e,configType:d},`${e?.teamId}-${d}`)]})]})}var Hj=[`view`,`add`,`edit`,`delete`],Uj={view:`View`,add:`Add`,edit:`Edit`,delete:`Delete`,sourcing:`Sourcing`,assign:`Assign`,share:`Share`,change_status:`Status`,my_jobs:`My Jobs`,all_jobs:`All Jobs`,po_msa:`PO MSA`,reApprove:`ReApprove`,sendApprove:`Send Approve`};function Wj(e){return Uj[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Gj(e){let t=Hj.filter(t=>e.includes(t)),n=e.filter(e=>!Hj.includes(e)).sort();return[...t,...n]}function Kj(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Gj([...t])}function qj(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{qb(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function Jj(e={}){if(!e||typeof e!=`object`)return e;let t=Object.keys(e).find(e=>String(e).trim().toLowerCase()===`onboarding`);if(!t)return e;let n=e[t]??{},r={...n.permissions??{}};for(let e of[`sendApprove`,`reApprove`])Object.keys(r).some(t=>t.toLowerCase()===e.toLowerCase())||(r[e]={id:0,value:`0`});return{...e,[t]:{...n,permissions:r}}}function Yj({value:e,onSave:t,className:n}){let[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(e);(0,o.useEffect)(()=>{s(e)},[e]);function u(){i(!1);let n=a.trim();n&&n!==e?t(n):s(e)}return r?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input${n?` ${n}`:``}`,value:a,style:{width:Math.max(48,a.length*8)},onChange:e=>s(e.target.value),onBlur:u,onKeyDown:t=>{t.key===`Enter`&&u(),t.key===`Escape`&&(i(!1),s(e)),t.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,l.jsxs)(`span`,{className:`perm-editable-name${n?` ${n}`:``}`,onDoubleClick:e=>{e.stopPropagation(),i(!0)},children:[e,(0,l.jsx)(c.EditOutlined,{className:`perm-name-edit-icon`})]})}function Xj({entry:e,label:t,onToggle:n,onLabelSave:r}){let[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(t),f=e?.value===`1`,p=!!e;(0,o.useEffect)(()=>{d(t)},[t]);function m(){a(!1);let e=u.trim();e&&e!==t?r(e):d(t)}return(0,l.jsx)(s.Tooltip,{title:p?f?`Click to disable`:`Click to enable`:`Not applicable for this module`,children:(0,l.jsxs)(`div`,{className:`perm-action-pill${f?` on`:``}${p?``:` na`}`,onClick:()=>{!i&&p&&n()},children:[(0,l.jsx)(`span`,{className:`perm-action-pill-dot${f?` on`:``}`}),i?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-pill-input`,value:u,style:{width:Math.max(36,u.length*7)},onChange:e=>d(e.target.value),onBlur:m,onKeyDown:e=>{e.key===`Enter`&&m(),e.key===`Escape`&&(a(!1),d(t)),e.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,l.jsx)(`span`,{className:`perm-action-pill-label`,onDoubleClick:e=>{e.stopPropagation(),a(!0)},children:t}),f&&!i&&(0,l.jsx)(c.CheckOutlined,{className:`perm-action-pill-check`})]})})}function Zj({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let c=t?.permissions??{},u=n.filter(t=>qb(e,t)),d=u.filter(e=>c[e]?.value===`1`).length,f=u.filter(e=>c[e]).length,p=f>0&&d===f;return(0,l.jsxs)(`div`,{className:`perm-module-card${p?` all-on`:d>0&&!p?` some-on`:``}`,children:[(0,l.jsxs)(`div`,{className:`perm-module-card-header`,children:[(0,l.jsx)(Yj,{value:i,onSave:t=>o(e,t),className:`perm-module-card-name`}),f>0&&(0,l.jsxs)(`span`,{className:`perm-module-card-badge${d>0?` active`:``}`,children:[d,`/`,f]})]}),(0,l.jsx)(`div`,{className:`perm-module-card-body`,children:u.map(t=>(0,l.jsx)(Xj,{entry:c[t],label:a[t]??Wj(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function Qj({role:e,moduleLabels:t={},actionLabels:r={},onModuleLabelSave:i=()=>{},onActionLabelSave:a=()=>{}}){let[u,d]=(0,o.useState)({}),[f,p]=(0,o.useState)({}),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(!1),b=n.Br(e);(0,o.useEffect)(()=>{b&&(h(!0),y(!1),n.Ur(b).then(e=>{let t=Jj(e);d(t),p(t)}).catch(()=>s.message.error(`Failed to load permissions`)).finally(()=>h(!1)))},[b]);function x(e,t){y(!0),p(n=>{let r=n[e]??{menuId:u[e]?.menuId??0,permissions:{}},i=r.permissions?.[t]??{id:0,value:`0`};return{...n,[e]:{...r,permissions:{...r.permissions,[t]:{...i,value:i.value===`1`?`0`:`1`}}}}})}async function S(){_(!0);try{await n.hi(b,f),d(f),y(!1),s.message.success(`Permissions saved`)}catch(e){s.message.error(e?.message||`Save failed`)}finally{_(!1)}}let C=(0,o.useMemo)(()=>Object.keys(f).sort(),[f]),w=(0,o.useMemo)(()=>Kj(f),[f]),{enabled:T,total:E}=(0,o.useMemo)(()=>qj(f),[f]);return(0,l.jsxs)(s.Spin,{spinning:m,children:[(0,l.jsxs)(`div`,{className:`perm-panel-header`,children:[(0,l.jsxs)(`div`,{className:`perm-panel-title`,children:[(0,l.jsx)(c.LockOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),(0,l.jsx)(`span`,{children:e?.roleName}),!m&&E>0&&(0,l.jsxs)(s.Tag,{color:`blue`,style:{marginLeft:8,fontSize:11},children:[T,`/`,E,` enabled`]})]}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.UnlockOutlined,{}),loading:g,disabled:!v,onClick:S,children:`Save Changes`})]}),(0,l.jsxs)(`div`,{className:`perm-hint`,children:[(0,l.jsx)(c.InfoCircleOutlined,{className:`perm-hint-icon`}),(0,l.jsxs)(`span`,{children:[`Click a pill to toggle. `,(0,l.jsx)(`strong`,{children:`Double-click`}),` a module name or action label to rename it — labels are saved locally.`]})]}),C.length===0&&!m?(0,l.jsx)(`div`,{className:`perm-empty`,children:`No permission entries found for this role.`}):(0,l.jsx)(`div`,{className:`perm-cards-grid`,children:C.map(e=>(0,l.jsx)(Zj,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:t[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:a},e))})]})}var{Text:$j}=s.Typography,eM=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function tM(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function nM(e){return String(e||``).trim().toLowerCase()}function rM(e){return e?.key||e?.collectionName||e?.value||``}function iM(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=rM(e);if(!t)return;let o=nM(e.key||t),s=nM(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||tM(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=nM(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:tM(t),value:t,disabled:!1}))}),n}function aM(){let[e,t]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(`listView`),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(0),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)([]),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)(!1),T=(0,o.useMemo)(()=>_.filter(e=>!e.disabled),[_]),E=!x&&T.length===0,D=(0,o.useCallback)(async()=>{g(!0);try{let e=await n.mr();f(e.roles),m(e.total)}catch{s.message.error(`Failed to load roles`)}finally{g(!1)}},[]),O=(0,o.useCallback)(async()=>{S(!0);try{let[e,t]=await Promise.all([n.Er(),n.vr()]),r=iM(e.modules,t),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));v(r),b(e=>e.filter(e=>i.has(e)))}catch{s.message.error(`Failed to load seed status`)}finally{S(!1)}},[]);(0,o.useEffect)(()=>{D()},[D]),(0,o.useEffect)(()=>{O()},[O]);async function k(){if(y.length===0){s.message.warning(E?`All modules already seeded.`:`Select at least one module to seed.`);return}w(!0);try{await n.oi(y),s.message.success(`Role field config seeded`),b([]),await O()}catch(e){s.message.error(e?.message||`Seed failed`)}finally{w(!1)}}function A(e,n=`listView`){t(e),u(n),i(!0)}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,l.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:y,options:_,placeholder:E?`All modules already seeded`:`Select modules or collections to seed`,disabled:x||C||E,loading:x,onChange:b,style:{width:`100%`}})}),(0,l.jsx)(s.Button,{type:`primary`,loading:C,disabled:x||y.length===0,onClick:k,children:`Seed Field Config`})]}),(0,l.jsx)($j,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:E?`Seed is disabled because all configured modules already have role field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.SafetyOutlined,{}),title:`Roles`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Roles`,dataSource:d,fields:[{label:`Role Name`,value:`roleName`,width:200},{label:`Description`,value:`description`,width:240},{label:`Users`,value:`userCount`,width:70,sorter:!1},{label:`Actions`,value:`_configure`,width:200,sorter:!1,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>A(t),children:`Configure`}),(0,l.jsx)(s.Button,{size:`small`,type:`link`,icon:(0,l.jsx)(c.LockOutlined,{}),onClick:()=>A(t,`permissions`),children:`Permissions`})]})}],loading:h,total:p})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.SafetyOutlined,{style:{color:`var(--color-brand)`}}),(0,l.jsxs)(`span`,{children:[`Configure: `,e?.roleName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,l.jsx)(`div`,{style:{marginBottom:12},children:(0,l.jsx)(`div`,{className:`uss-config-toggle`,children:eM.map(e=>(0,l.jsx)(`button`,{className:`uss-config-btn${a===e.key?` active`:``}`,onClick:()=>u(e.key),children:e.label},e.key))})}),e&&(a===`permissions`?(0,l.jsx)(Qj,{role:e},e?.roleId):(0,l.jsx)(ux,{role:e,configType:a},`${e?.roleId}-${a}`))]})]})}var oM=`perm-module-labels`,sM=`perm-action-labels`;function cM(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function lM(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function uM({label:e,onSave:t,onDelete:n,loading:r}){let[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(e);function f(){a(!1);let n=u.trim();n&&n!==e?t(n):d(e)}return(0,l.jsxs)(`div`,{className:`perm-manage-row`,children:[i?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input`,value:u,style:{flex:1,minWidth:0},onChange:e=>d(e.target.value),onBlur:f,onKeyDown:t=>{t.key===`Enter`&&f(),t.key===`Escape`&&(a(!1),d(e))}}):(0,l.jsx)(`span`,{className:`perm-manage-row-label`,children:e}),(0,l.jsxs)(`div`,{className:`perm-manage-row-actions`,children:[(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{d(e),a(!0)},loading:r}),(0,l.jsx)(s.Popconfirm,{title:`Delete this item?`,onConfirm:n,okText:`Delete`,cancelText:`Cancel`,okType:`danger`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{}),danger:!0})})]})]})}function dM({open:e,onClose:t}){let[r,i]=(0,o.useState)(`modules`),[a,u]=(0,o.useState)([]),[d,f]=(0,o.useState)(!1),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)(``),[T,E]=(0,o.useState)(!1);(0,o.useEffect)(()=>{e&&(D(),O())},[e]);async function D(){f(!0);try{u(await n.Nr())}catch{s.message.error(`Failed to load modules`)}finally{f(!1)}}async function O(){b(!0);try{v(await n.Mr())}catch{s.message.error(`Failed to load actions`)}finally{b(!1)}}async function k(){let e=p.trim();if(!e){s.message.warning(`Enter a module name`);return}g(!0);try{let t=await n.Yn({menuName:e});u(e=>[...e,t]),m(``),s.message.success(`Module added`)}catch{s.message.error(`Failed to add module`)}finally{g(!1)}}async function A(e,t){try{await n.di(e,{menuName:t}),u(n=>n.map(n=>n.MENUID===e?{...n,MENUNAME:t}:n))}catch{s.message.error(`Failed to update module`)}}async function j(e){try{await n.ir(e),u(t=>t.filter(t=>t.MENUID!==e)),s.message.success(`Module deleted`)}catch{s.message.error(`Failed to delete module`)}}async function M(){let e=x.trim(),t=C.trim().toLowerCase().replace(/\s+/g,`_`);if(!e||!t){s.message.warning(`Enter both name and key`);return}E(!0);try{let r=await n.Jn({permissionName:e,permissionKey:t});v(e=>[...e,r]),S(``),w(``),s.message.success(`Action added`)}catch(e){s.message.error(e?.message?.includes(`409`)||e?.status===409?`Permission key already exists`:`Failed to add action`)}finally{E(!1)}}async function N(e,t){try{await n.ui(e,{permissionName:t}),v(n=>n.map(n=>n.permissionId===e?{...n,permissionName:t}:n))}catch{s.message.error(`Failed to update action`)}}async function P(e){try{await n.rr(e),v(t=>t.filter(t=>t.permissionId!==e)),s.message.success(`Action deleted`)}catch{s.message.error(`Failed to delete action`)}}let F=[{key:`modules`,label:`Modules`,children:(0,l.jsxs)(s.Spin,{spinning:d,children:[(0,l.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,l.jsx)(s.Input,{placeholder:`Module name`,value:p,onChange:e=>m(e.target.value),onPressEnter:k,style:{flex:1},size:`small`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),loading:h,onClick:k,children:`Add`})]}),(0,l.jsxs)(`div`,{className:`perm-manage-list`,children:[a.length===0&&!d&&(0,l.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No modules found`}),a.map(e=>(0,l.jsx)(uM,{label:e.MENUNAME,onSave:t=>A(e.MENUID,t),onDelete:()=>j(e.MENUID)},e.MENUID))]})]})},{key:`actions`,label:`Actions`,children:(0,l.jsxs)(s.Spin,{spinning:y,children:[(0,l.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,l.jsx)(s.Input,{placeholder:`Action name (e.g. Approve)`,value:x,onChange:e=>S(e.target.value),style:{flex:1},size:`small`}),(0,l.jsx)(s.Input,{placeholder:`Key (e.g. approve)`,value:C,onChange:e=>w(e.target.value),onPressEnter:M,style:{width:140},size:`small`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),loading:T,onClick:M,children:`Add`})]}),(0,l.jsxs)(`div`,{className:`perm-manage-list`,children:[_.length===0&&!y&&(0,l.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No actions found`}),_.map(e=>(0,l.jsx)(uM,{label:`${e.permissionName} (${e.permissionKey})`,onSave:t=>N(e.permissionId,t),onDelete:()=>P(e.permissionId)},e.permissionId))]})]})}];return(0,l.jsx)(s.Modal,{open:e,onCancel:t,title:(0,l.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.SettingOutlined,{style:{color:`var(--color-brand)`}}),`Manage Modules & Actions`]}),width:520,footer:null,destroyOnClose:!0,children:(0,l.jsx)(s.Tabs,{activeKey:r,onChange:i,size:`small`,items:F})})}function fM(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(null),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(()=>cM(oM)),[_,v]=(0,o.useState)(()=>cM(sM)),y=(0,o.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return lM(oM,r),r})},[]),b=(0,o.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return lM(sM,r),r})},[]);function x(){g({}),v({}),lM(oM,{}),lM(sM,{}),s.message.success(`Labels reset to defaults`)}let S=(0,o.useCallback)(async()=>{i(!0);try{let{roles:e}=await n.mr();t(e),e.length>0&&u(e[0])}catch{s.message.error(`Failed to load roles`)}finally{i(!1)}},[]);(0,o.useEffect)(()=>{S()},[S]);let C=(0,o.useMemo)(()=>{let t=d.trim().toLowerCase();return t?e.filter(e=>e.roleName.toLowerCase().includes(t)):e},[e,d]),w=Object.keys(h).length>0||Object.keys(_).length>0;return(0,l.jsxs)(`div`,{className:`perm-page`,children:[(0,l.jsxs)(Z,{className:`perm-left-card`,icon:(0,l.jsx)(c.SafetyOutlined,{}),title:`Roles`,bodyStyle:{padding:0},children:[(0,l.jsx)(`div`,{className:`perm-role-search`,children:(0,l.jsx)(s.Input,{prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search roles…`,allowClear:!0,size:`small`,value:d,onChange:e=>f(e.target.value)})}),(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsxs)(`div`,{className:`perm-role-list`,children:[C.length===0&&!r&&(0,l.jsx)(`div`,{className:`perm-role-empty`,children:`No roles found`}),C.map(e=>{let t=a?.roleId===e.roleId,n=e.description&&e.description!==`N/A`?e.description:e.roleType===0?`Default role`:`Custom role`;return(0,l.jsxs)(`div`,{className:`perm-role-item${t?` active`:``}`,onClick:()=>u(e),children:[(0,l.jsx)(`div`,{className:`perm-role-item-name`,children:e.roleName}),(0,l.jsx)(`div`,{className:`perm-role-item-desc`,children:n})]},e.roleId)})]})})]}),(0,l.jsx)(Z,{className:`perm-right-card`,icon:(0,l.jsx)(c.LockOutlined,{}),title:`Module Permissions`,extra:(0,l.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[w&&(0,l.jsx)(`button`,{className:`perm-reset-btn`,onClick:x,children:`Reset labels`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.SettingOutlined,{}),onClick:()=>m(!0),children:`Manage`})]}),bodyStyle:{padding:`12px 16px`},children:a?(0,l.jsx)(Qj,{role:a,moduleLabels:h,actionLabels:_,onModuleLabelSave:y,onActionLabelSave:b},a.roleId):(0,l.jsx)(`div`,{className:`perm-empty`,children:`Select a role from the left to manage its permissions.`})}),(0,l.jsx)(dM,{open:p,onClose:()=>m(!1)})]})}var{Title:pM,Text:mM}=s.Typography,hM=[{label:`In Progress`,value:107,sub:`Under review`,color:`blue`},{label:`Hired`,value:2,sub:`Onboarded`,color:`green`},{label:`Project Completed`,value:2,sub:`Project cycle closed`,color:`purple`},{label:`Archive`,value:2,sub:`No longer active`,color:`peach`}];function gM({items:e=hM}){return(0,l.jsx)(s.Card,{className:`onboarding-card`,title:(0,l.jsx)(pM,{level:5,children:`Onboarding`}),extra:(0,l.jsx)(s.Button,{type:`link`,children:`View all`}),children:(0,l.jsx)(s.Row,{gutter:[12,12],children:e.map(e=>(0,l.jsx)(s.Col,{xs:12,sm:6,md:6,lg:12,xl:12,children:(0,l.jsxs)(`div`,{className:`onboarding-item ${e.color}`,children:[(0,l.jsx)(mM,{className:`onboarding-item-label`,children:e.label}),(0,l.jsx)(s.Statistic,{value:e.value,className:`onboarding-stat`}),(0,l.jsx)(`div`,{className:`onboarding-item-footer`,children:(0,l.jsx)(mM,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:_M,Title:vM}=s.Typography,yM=[{group:`Dashboard`,items:[{id:`dashboard`,label:`Admin Dashboard`,icon:(0,l.jsx)(c.DashboardOutlined,{})}]},{group:`Settings`,items:[{id:`org`,label:`Organization`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Organization Settings`,desc:`Manage your company profile and location details`,cards:[{label:`Company Information`,icon:(0,l.jsx)(c.BankOutlined,{}),desc:`Manage company profile, address and business details.`},{label:`Location`,icon:(0,l.jsx)(c.BuildOutlined,{}),desc:`Manage office locations, branches and regions.`}]},{id:`users`,label:`Users`,icon:(0,l.jsx)(c.UserOutlined,{}),heading:`Users`,desc:`Manage platform users and configure their field views.`,component:`users`},{id:`teams`,label:`Teams`,icon:(0,l.jsx)(c.TeamOutlined,{}),heading:`Teams`,desc:`Organize users into teams and configure field visibility per team.`,component:`teams`},{id:`roles`,label:`Roles`,icon:(0,l.jsx)(c.SafetyOutlined,{}),heading:`Roles`,desc:`Control permissions and configure field visibility per role.`,component:`roles`},{id:`permissions`,label:`Permissions`,icon:(0,l.jsx)(c.LockOutlined,{}),heading:`Permissions`,desc:`Manage module-wise action permissions (view, add, edit, delete, and more) per role.`,component:`permissions`},{id:`templates`,label:`Templates`,icon:(0,l.jsx)(c.FileTextOutlined,{}),heading:`Templates`,desc:`Email and signature templates for communications`,component:`templates`},{id:`ai-services`,label:`AI Services`,icon:(0,l.jsx)(c.ThunderboltOutlined,{}),heading:`AI Services`,desc:`Register the AI/automation backends (base URL + auth) that admin-configured AI Actions call.`,component:`ai-services`},{id:`bgc-integration`,label:`Integrations`,icon:(0,l.jsx)(c.SafetyOutlined,{}),heading:`Integrations`,desc:`Manage manual and API integrations used across application workflows.`,component:`bgc-integration`}]},{group:`Clients`,items:[{id:`clients`,label:`Clients`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Clients`,desc:`Manage client accounts and settings`,cards:[{label:`Clients`,icon:(0,l.jsx)(c.BankOutlined,{}),desc:`Manage client companies and account details.`}]}]},{group:`Forms`,items:[{id:`form-groups`,label:`Form Groups`,icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),heading:`Form Groups`,desc:`Define field groups for module add/edit forms with validations and dropdown sources.`,component:`form-groups`},{id:`detail-groups`,label:`Detail Groups`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),heading:`Detail Groups`,desc:`Customize the detail view per module: labels, prefix/suffix, colour, capitalization, reference lookups and merged fields.`,component:`detail-groups`},{id:`row-actions`,label:`Actions`,icon:(0,l.jsx)(c.ToolOutlined,{}),heading:`Actions`,desc:`Configure which action buttons appear per row in each module's list view, scoped per role.`,component:`row-actions`}]},{group:`Master`,items:[{id:`jobs`,label:`Jobs`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),heading:`Jobs Master`,desc:`Configure job sources and status types`,cards:[{label:`Sources`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Manage job source master values.`},{label:`Job Status`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),desc:`Configure job workflow status.`}]},{id:`candidates`,label:`Candidates`,icon:(0,l.jsx)(c.UserOutlined,{}),heading:`Candidates Master`,desc:`Skills, sources and work authorization settings`,cards:[{label:`Sources`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Manage candidate source values.`},{label:`Skills`,icon:(0,l.jsx)(c.SettingOutlined,{}),desc:`Manage skill master data.`},{label:`Work Authorization`,icon:(0,l.jsx)(c.SafetyOutlined,{}),desc:`Manage visa and authorization types.`}]},{id:`submissions`,label:`Submissions`,icon:(0,l.jsx)(c.FileTextOutlined,{}),heading:`Submissions Master`,desc:`Rejection reasons and submission status configuration`,cards:[{label:`Rejection Reasons`,icon:(0,l.jsx)(c.FileTextOutlined,{}),desc:`Manage common rejection reasons.`},{label:`Client Submission Status`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),desc:`Manage client submission statuses.`}]},{id:`clientmaster`,label:`Client Master`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Client Master`,desc:`Payment terms, client types and contact types`,cards:[{label:`Payment Terms`,icon:(0,l.jsx)(c.FileTextOutlined,{}),desc:`Manage billing and payment terms.`},{label:`Client Type`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Classify client business types.`},{label:`Client Contact Type`,icon:(0,l.jsx)(c.TeamOutlined,{}),desc:`Manage client contact categories.`}]}]}],bM=[{label:`Sourced`,count:312,color:`#378ADD`,pct:35},{label:`Screened`,count:223,color:`#7F77DD`,pct:25},{label:`Interview`,count:161,color:`#1D9E75`,pct:18},{label:`Offered`,count:107,color:`#EF9F27`,pct:12},{label:`Rejected`,count:89,color:`#E24B4A`,pct:10}],xM=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],SM=[{text:`New candidate Ravi Kumar added to Java Developer role`,time:`2 min ago`,color:`#378ADD`},{text:`Submission approved by Acme Corp for Sr. React Dev`,time:`18 min ago`,color:`#1D9E75`},{text:`User Priya S. added to Recruiters team`,time:`1 hr ago`,color:`#7F77DD`},{text:`Job Data Analyst — TechFlow moved to archived`,time:`3 hr ago`,color:`#EF9F27`},{text:`Candidate rejected — work authorization mismatch`,time:`5 hr ago`,color:`#E24B4A`}];function CM(){return(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DashboardOutlined,{}),title:`Admin Dashboard`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(vM,{level:5,children:`Admin Dashboard`}),(0,l.jsx)(_M,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,l.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,l.jsx)(jj,{stats:[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`},{label:`Total Candidates`,value:4320,icon:`team`},{label:`Submissions`,value:892,icon:`fileText`}]})}),(0,l.jsxs)(`div`,{className:`admin-dashboard-mid-row`,children:[(0,l.jsx)(gM,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,l.jsx)(`div`,{className:`admin-pipeline-bar`,children:bM.map(e=>(0,l.jsx)(`div`,{className:`admin-pipeline-seg`,style:{width:`${e.pct}%`,background:e.color}},e.label))}),(0,l.jsx)(`div`,{className:`admin-pipeline-legend`,children:bM.map(e=>(0,l.jsxs)(`div`,{className:`admin-pipeline-legend-item`,children:[(0,l.jsx)(`span`,{className:`admin-pipeline-dot`,style:{background:e.color}}),e.label,` `,e.count]},e.label))}),(0,l.jsx)(`div`,{className:`admin-divider`}),(0,l.jsx)(_M,{strong:!0,style:{fontSize:12},children:`Submission status`}),(0,l.jsxs)(`div`,{className:`admin-sub-status-list`,style:{marginTop:6},children:[(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Pending client review`}),(0,l.jsx)(`span`,{className:`admin-badge warn`,children:`312`})]}),(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Client approved`}),(0,l.jsx)(`span`,{className:`admin-badge success`,children:`248`})]}),(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Rejected`}),(0,l.jsx)(`span`,{className:`admin-badge danger`,children:`89`})]})]})]})]}),(0,l.jsxs)(`div`,{className:`admin-dashboard-bottom-row`,children:[(0,l.jsx)(Z,{icon:(0,l.jsx)(c.BankOutlined,{}),title:`Top Clients`,extra:(0,l.jsx)(s.Button,{type:`link`,size:`small`,children:`View all`}),children:xM.map(e=>(0,l.jsxs)(`div`,{className:`admin-client-row`,children:[(0,l.jsxs)(`div`,{className:`admin-client-left`,children:[(0,l.jsx)(`div`,{className:`admin-client-icon`,children:(0,l.jsx)(c.BankOutlined,{})}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`admin-client-name`,children:e.name}),(0,l.jsxs)(`div`,{className:`admin-client-sub`,children:[e.jobs,` open jobs`]})]})]}),(0,l.jsxs)(`div`,{className:`admin-client-right`,children:[(0,l.jsx)(`div`,{className:`admin-client-val`,children:e.candidates}),(0,l.jsx)(`div`,{className:`admin-client-sub`,children:`candidates`})]})]},e.name))}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.BellOutlined,{}),title:`Recent Activity`,children:SM.map((e,t)=>(0,l.jsxs)(`div`,{className:`admin-activity-row`,children:[(0,l.jsx)(`div`,{className:`admin-activity-dot`,style:{background:e.color}}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`admin-activity-text`,children:e.text}),(0,l.jsx)(`div`,{className:`admin-activity-time`,children:e.time})]})]},t))})]}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.SettingOutlined,{}),title:`Admin Configuration Overview`,extra:(0,l.jsx)(s.Button,{type:`link`,size:`small`,children:`Manage`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Settings`}),[[`Organization`,2],[`User Settings`,4],[`Templates`,2]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Master`}),[[`Jobs`,2],[`Candidates`,3],[`Submissions`,2]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`System`}),[[`Total Groups`,4],[`Total Modules`,9],[`Config Items`,19]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsx)(_M,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function wM({activeSection:e,activeGroup:t,filteredCards:n,searchText:r,setSearchText:i,allItems:a,handleNav:o}){return(0,l.jsxs)(s.Row,{gutter:[16,16],children:[(0,l.jsx)(s.Col,{span:24,children:(0,l.jsxs)(Z,{icon:e?.icon,title:e?.heading,extra:(0,l.jsx)(s.Input,{className:`admin-search`,prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search settings…`,allowClear:!0,value:r,onChange:e=>i(e.target.value)}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(vM,{level:5,children:e?.heading}),(0,l.jsx)(_M,{type:`secondary`,children:e?.desc})]})}),(0,l.jsx)(s.Col,{xs:24,xl:16,style:{alignSelf:`flex-start`},children:(0,l.jsx)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Configuration Items`,extra:(0,l.jsxs)(_M,{type:`secondary`,children:[n.length,` item`,n.length===1?``:`s`]}),children:(0,l.jsx)(s.Row,{gutter:[14,14],children:n.length>0?n.map(e=>(0,l.jsx)(s.Col,{xs:24,sm:12,xl:8,children:(0,l.jsxs)(`div`,{className:`admin-config-item`,children:[(0,l.jsx)(`div`,{className:`admin-config-top-bar`}),(0,l.jsxs)(`div`,{className:`admin-config-body`,children:[(0,l.jsx)(`div`,{className:`admin-config-icon`,children:e.icon}),(0,l.jsxs)(`div`,{className:`admin-config-text`,children:[(0,l.jsx)(`span`,{className:`admin-config-label`,children:e.label}),(0,l.jsx)(`span`,{className:`admin-config-desc`,children:e.desc})]})]}),(0,l.jsx)(`div`,{className:`admin-config-divider`}),(0,l.jsx)(s.Button,{type:`link`,size:`small`,className:`admin-config-manage`,icon:(0,l.jsx)(c.RightOutlined,{}),iconPosition:`end`,children:`Manage`})]})},e.label)):(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(`div`,{className:`admin-config-empty`,children:(0,l.jsx)(s.Empty,{description:`No settings found`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})})})})})}),(0,l.jsx)(s.Col,{xs:24,xl:8,style:{alignSelf:`flex-start`},children:(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Section Overview`,children:[(0,l.jsx)(`div`,{className:`admin-overview-list`,children:yM.filter(e=>e.group!==`Dashboard`).map(e=>{let n=e.group===t?.group;return(0,l.jsxs)(`div`,{className:`admin-overview-item${n?` active`:``}`,onClick:()=>{let t=e.items[0];t&&o(t.id)},children:[(0,l.jsxs)(`div`,{className:`admin-overview-left`,children:[(0,l.jsx)(`div`,{className:`admin-overview-icon`,children:e.items[0]?.icon}),(0,l.jsxs)(`div`,{className:`admin-overview-text`,children:[(0,l.jsx)(`span`,{className:`admin-overview-name`,children:e.group}),(0,l.jsxs)(`span`,{className:`admin-overview-sub`,children:[e.items.length,` module`,e.items.length===1?``:`s`]})]})]}),(0,l.jsx)(`span`,{className:`admin-overview-count${n?` active`:``}`,children:e.items.length})]},e.group)})}),(0,l.jsxs)(`div`,{className:`admin-overview-footer`,children:[(0,l.jsx)(`span`,{className:`admin-overview-footer-label`,children:`Total configuration items`}),(0,l.jsx)(`span`,{className:`admin-overview-footer-value`,children:a.filter(e=>e.cards).reduce((e,t)=>e+t.cards.length,0)})]})]})})]})}function TM(){let[e,t]=(0,o.useState)(`dashboard`),[n,r]=(0,o.useState)(``),i=(0,o.useMemo)(()=>yM.flatMap(e=>e.items),[]),a=(0,o.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,o.useMemo)(()=>yM.find(t=>t.items.some(t=>t.id===e)),[e]),d=(0,o.useMemo)(()=>{if(!a?.cards)return[];let e=n.trim().toLowerCase();return e?a.cards.filter(t=>t.label.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)):a.cards},[a,n]),f=(0,o.useMemo)(()=>yM.map(e=>({key:e.group,type:`group`,label:e.group,children:e.items.map(e=>({key:e.id,icon:e.icon,label:e.label}))})),[]),p=e=>{t(e),r(``)};return e===`dashboard`||a?.heading,(0,l.jsxs)(`main`,{className:`admin-page`,children:[(0,l.jsx)(`div`,{className:`admin-breadcrumb`,children:(0,l.jsx)(s.Breadcrumb,{items:[{title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.HomeOutlined,{}),` Home`]})},{title:`Admin`}]})}),(0,l.jsxs)(s.Row,{gutter:[16,16],className:`admin-wrapper`,children:[(0,l.jsx)(s.Col,{xs:24,lg:6,xl:5,children:(0,l.jsxs)(Z,{title:`Admin Console`,icon:(0,l.jsx)(c.SettingOutlined,{}),children:[(0,l.jsxs)(`div`,{className:`admin-sidebar-banner`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-banner-title`,children:`Admin Panel`}),(0,l.jsx)(`span`,{className:`admin-sidebar-banner-sub`,children:`Configuration Center`}),(0,l.jsxs)(s.Row,{gutter:[8,0],children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Groups`}),(0,l.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:yM.length})]})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Modules`}),(0,l.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:i.length})]})})]})]}),(0,l.jsx)(s.Menu,{mode:`inline`,selectedKeys:[e],items:f,onClick:({key:e})=>p(e),className:`admin-sidebar-menu`})]})}),(0,l.jsx)(s.Col,{xs:24,lg:18,xl:19,children:e===`dashboard`?(0,l.jsx)(CM,{}):a?.component===`form-groups`?(0,l.jsx)(cC,{}):a?.component===`detail-groups`?(0,l.jsx)(HC,{}):a?.component===`row-actions`?(0,l.jsx)(jw,{}):a?.component===`users`?(0,l.jsx)(Fj,{}):a?.component===`teams`?(0,l.jsx)(Vj,{}):a?.component===`roles`?(0,l.jsx)(aM,{}):a?.component===`permissions`?(0,l.jsx)(fM,{}):a?.component===`templates`?(0,l.jsx)(Uw,{}):a?.component===`ai-services`?(0,l.jsx)(qw,{}):a?.component===`bgc-integration`?(0,l.jsx)($w,{}):(0,l.jsx)(wM,{activeSection:a,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:EM}=s.Typography;function DM(){let e=(0,d.useNavigate)(),{state:t}=(0,d.useLocation)(),n=t?.moduleName||`stickyNotes`,r=t?.title||`Sticky Notes`,i={...t?.request,params:{...t?.request?.params,limit:200,offset:0}};return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.ArrowLeftOutlined,{}),onClick:()=>e(-1),style:{marginBottom:12},children:`Back`}),(0,l.jsx)(Lt,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:OM,Title:kM}=s.Typography,AM=10485760,jM=`/templates/test_cases_flow_template.base64.txt`,MM=`test_cases_flow_template.xlsx`,NM=`module | subModule | step_order | description | actions | key | value | expected | scenario`,PM={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},FM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function IM(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result).split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)})}function LM(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function RM(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function zM({errors:e}){return(0,l.jsx)(`div`,{className:`bulk-tooltip-errors`,children:(e??[]).map((e,t)=>(0,l.jsx)(`div`,{children:e.message},`${e.field}-${t}`))})}function BM({errors:e,expanded:t,onToggle:n,onSummaryClick:r}){return e.length===0?null:(0,l.jsxs)(`div`,{className:`bulk-error-banner`,children:[(0,l.jsxs)(`div`,{className:`bulk-error-summary`,children:[(0,l.jsxs)(`button`,{type:`button`,className:`bulk-error-summary-main`,onClick:r,"aria-label":`Scroll to first invalid row`,children:[(0,l.jsx)(c.ExclamationCircleOutlined,{className:`bulk-error-icon`}),(0,l.jsxs)(`span`,{children:[e.length,` validation error(s) found`]})]}),(0,l.jsx)(s.Button,{type:`link`,onClick:n,"aria-expanded":t,children:t?`Hide Errors`:`View Errors`})]}),t&&(0,l.jsx)(`div`,{className:`bulk-error-list`,role:`region`,"aria-label":`Validation error details`,children:e.map((e,t)=>(0,l.jsxs)(`div`,{className:`bulk-error-line`,children:[(0,l.jsxs)(`span`,{className:`bulk-row-chip`,children:[`Row `,e.id]}),(0,l.jsx)(`span`,{children:e.message})]},`${e.id}-${e.field}-${t}`))})]})}function VM({rows:e,view:t,onViewChange:n,onConfirm:r,onReset:i,saving:a,firstInvalidRowId:o,firstInvalidRowRef:u}){let d=e.filter(e=>e.row_status===`invalid`),f=t===`errors`?d:e,p=d.length>0||a;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,gutter:[16,16],className:`bulk-table-toolbar`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space.Compact,{children:[(0,l.jsx)(s.Button,{type:t===`all`?`primary`:`default`,onClick:()=>n(`all`),children:`All rows`}),(0,l.jsx)(s.Button,{type:t===`errors`?`primary`:`default`,onClick:()=>n(`errors`),children:`Errors only`})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsxs)(OM,{type:`secondary`,children:[e.length,` row(s)`]})})]}),(0,l.jsx)(`div`,{className:`bulk-table-wrap`,children:(0,l.jsxs)(`table`,{className:`bulk-preview-table`,children:[(0,l.jsx)(`thead`,{children:(0,l.jsxs)(`tr`,{children:[(0,l.jsx)(`th`,{className:`bulk-col-row`,children:`Row`}),(0,l.jsx)(`th`,{className:`bulk-col-flow`,children:`Submodule`}),(0,l.jsx)(`th`,{className:`bulk-col-description`,children:`Description`}),(0,l.jsx)(`th`,{className:`bulk-col-keyword`,children:`Action`}),(0,l.jsx)(`th`,{className:`bulk-col-target`,children:`Key`}),(0,l.jsx)(`th`,{className:`bulk-col-status`,children:`Status`}),(0,l.jsx)(`th`,{className:`bulk-col-error`,children:`Error`})]})}),(0,l.jsx)(`tbody`,{children:f.map(e=>{let t=e.errors??[],n=e.row_status===`invalid`;return(0,l.jsxs)(`tr`,{ref:n&&e.id===o?u:null,className:n?`bulk-row-invalid`:``,children:[(0,l.jsx)(`td`,{children:e.id}),(0,l.jsx)(`td`,{title:e.submodule,children:e.submodule}),(0,l.jsx)(`td`,{title:e.description,children:e.description?e.description:(0,l.jsx)(`span`,{className:`bulk-empty-text`,children:`-empty-`})}),(0,l.jsx)(`td`,{children:(0,l.jsx)(`code`,{className:`bulk-code-chip`,children:e.actions})}),(0,l.jsx)(`td`,{title:e.key,children:e.key}),(0,l.jsx)(`td`,{children:n?(0,l.jsx)(s.Tag,{color:`red`,children:`Error`}):(0,l.jsx)(s.Tag,{color:`green`,children:`Valid`})}),(0,l.jsx)(`td`,{children:n?(0,l.jsx)(s.Tooltip,{title:(0,l.jsx)(zM,{errors:t}),placement:`left`,children:(0,l.jsxs)(`button`,{type:`button`,className:`bulk-error-info`,"aria-label":`View ${t.length} error(s) for row ${e.id}`,children:[(0,l.jsx)(c.InfoCircleOutlined,{}),(0,l.jsx)(s.Badge,{count:t.length,size:`small`})]})}):(0,l.jsx)(`span`,{className:`bulk-error-none`,children:`-`})})]},`${e.id}-${e.step_order}`)})})]})}),(0,l.jsxs)(s.Space,{className:`bulk-actions`,children:[(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:i,children:`Reset`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:a,disabled:p,onClick:r,children:d.length>0?`Fix ${d.length} error(s) to proceed`:`Save to database`})]})]})}function HM(){let e=(0,d.useNavigate)(),r=(0,o.useMemo)(()=>t.l(),[]),i=(0,o.useRef)(null),a=(0,o.useRef)(null),[u,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(`idle`),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(null),[x,S]=(0,o.useState)([]),[C,w]=(0,o.useState)(`all`),[T,E]=(0,o.useState)(null),[D,O]=(0,o.useState)(null),[k,A]=(0,o.useState)(!1),j=u.map(e=>({value:e.modulename,label:e.modulename})),M=RM(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=PM[h]??0,I=x.find(e=>e.row_status===`invalid`)?.id,L=(0,o.useCallback)(()=>{m(``),g(`idle`),v(!1),b(null),S([]),w(`all`),E(null),O(null),i.current&&(i.current.value=``)},[]);(0,o.useEffect)(()=>{async function e(){try{let e=await Qy({project:r?.name??``,activeOnly:!0});f(e?.items??[])}catch(e){console.error(e),s.message.error(`Unable to load modules.`)}}e()},[r?.name]);let R=e=>{m(e??``),S([]),O(null),E(null),b(null),A(!1),g(e?`module_set`:`idle`)},z=async e=>{if(!e||!P)return;let t=e.name.split(`.`).pop()?.toLowerCase();if(![`xlsx`,`csv`].includes(t)){g(`module_set`),E({message:`Invalid file type. Please upload an Excel .xlsx or CSV .csv file.`});return}if(e.size>AM){g(`module_set`),E({message:`File must be 10 MB or smaller.`});return}E(null),S([]),O(null),b({name:e.name,size:e.size}),g(`encoding`);try{let n=await IM(e);g(`validating`);let i=await qy({filename:e.name,project:r?.name??``,module:p,file_base64:n,file_type:t});S(i?.rows??[]),w(`all`),g(`preview`)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`error`)}},B=async()=>{try{let e=await fetch(jM);if(!e.ok)throw Error(`Template file not found (${e.status})`);let t=(await e.text()).trim(),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);let i=new Blob([r],{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=MM,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(a),s.message.success(`Sample template downloaded.`)}catch(e){console.error(e),s.message.error(`Unable to download sample template.`)}},V=async()=>{g(`inserting`),E(null);try{let t=await Jy({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:LM(x)});O(t),g(`done`),s.message.success(`Bulk upload saved. Redirecting to view test cases...`),window.setTimeout(()=>e(`/viewTestCase`),900)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`preview`)}},ee=(0,o.useCallback)(()=>{a.current?.scrollIntoView({behavior:`smooth`,block:`center`})},[]),te=[`bulk-dropzone`,_?`bulk-dropzone-dragging`:``,y?`bulk-dropzone-has-file`:``,T&&h!==`preview`?`bulk-dropzone-error`:``,p?``:`bulk-dropzone-disabled`].filter(Boolean).join(` `);return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:FM})}),r?.name&&(0,l.jsx)(s.Col,{children:(0,l.jsx)(OM,{strong:!0,children:r.name})})]}),(0,l.jsxs)(`div`,{className:`zt-page zt-page-wide bulk-page`,children:[(0,l.jsxs)(`div`,{className:`bulk-header`,children:[(0,l.jsx)(kM,{level:3,children:`Bulk upload test cases`}),(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,children:[(0,l.jsx)(OM,{type:`secondary`,children:NM}),(0,l.jsx)(OM,{type:`secondary`,children:`Use the sample template for the required columns. Uploaded rows are saved as Active by default.`})]})]}),(0,l.jsx)(`div`,{className:`bulk-stepbar`,children:[`Select`,`Upload`,`Validate`,`Save`].map((e,t)=>(0,l.jsxs)(`span`,{className:t<F?`bulk-step-active`:``,children:[t+1,` `,e]},e))}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:`1. Module selector`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,className:`bulk-module-select`,placeholder:`Choose a module`,options:j,value:p||void 0,onChange:R})}),p&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`2. File upload`,extra:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.DownloadOutlined,{}),onClick:B,children:`Download Sample Template`}),children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`First time uploading?`,description:`Download the sample template, keep the column names unchanged, fill your test steps, and upload either .xlsx or .csv.`,className:`bulk-inline-alert`}),(0,l.jsxs)(`button`,{type:`button`,className:te,disabled:!P,onClick:()=>i.current?.click(),onDragOver:e=>{e.preventDefault(),P&&v(!0)},onDragLeave:()=>v(!1),onDrop:e=>{e.preventDefault(),v(!1),z(e.dataTransfer.files?.[0])},children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`bulk-upload-icon`}),y?(0,l.jsxs)(`span`,{className:`bulk-file-chip`,children:[y.name,` - `,Math.ceil(y.size/1024),` KB`]}):(0,l.jsx)(`span`,{children:`Drag & drop here, or click to browse`})]}),(0,l.jsx)(`input`,{ref:i,hidden:!0,type:`file`,accept:`.xlsx,.csv`,onChange:e=>z(e.target.files?.[0])}),N&&(0,l.jsx)(s.Progress,{percent:h===`encoding`?45:82,showInfo:!1,size:`small`}),T&&h!==`preview`&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`})]}),x.length>0&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`3. Validation result`,children:[(0,l.jsx)(BM,{errors:M,expanded:k,onToggle:()=>A(e=>!e),onSummaryClick:ee}),T&&h===`preview`&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`}),(0,l.jsx)(VM,{rows:x,view:C,onViewChange:w,onConfirm:V,onReset:L,saving:h===`inserting`,firstInvalidRowId:I,firstInvalidRowRef:a})]}),D&&h===`done`&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`4. Upload complete`,children:[(0,l.jsxs)(s.Row,{gutter:[16,16],className:`bulk-metrics`,children:[(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Total`}),(0,l.jsx)(`strong`,{children:x.length})]})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Inserted`}),(0,l.jsx)(`strong`,{children:D.inserted??0})]})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Failed`}),(0,l.jsx)(`strong`,{children:D.failed??0})]})})]}),(0,l.jsx)(s.Alert,{type:`success`,showIcon:!0,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),message:`${D.inserted??0} test cases saved to database - module: ${p}`,className:`bulk-inline-alert`}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:L,children:`Upload another file`})]})]})]})}var UM=[{value:`navigate`,label:`Navigate`},{value:`fill`,label:`Fill`},{value:`click`,label:`Click`},{value:`select`,label:`Select`},{value:`press_key`,label:`Press Key`},{value:`type_and_select`,label:`Type and Select`},{value:`type_and_select_modal`,label:`Type and Select (Modal)`},{value:`upload_file`,label:`Upload File`},{value:`check_checkbox`,label:`Check Checkbox`},{value:`check_filter_checkbox`,label:`Check Filter Checkbox`},{value:`select_page_size`,label:`Select Page Size`},{value:`check_n_checkboxes`,label:`Check N Checkboxes`},{value:`store_text`,label:`Store Text`},{value:`reset_session`,label:`Reset Session`},{value:`switch_to_new_tab`,label:`Switch To New Tab`},{value:`close_tab`,label:`Close Tab`},{value:`assert_visible`,label:`Assert Visible`},{value:`assert_hidden`,label:`Assert Hidden`},{value:`assert_text`,label:`Assert Text`},{value:`assert_url`,label:`Assert URL`},{value:`assert_body_contains`,label:`Assert Body Contains`},{value:`assert_button_disabled`,label:`Assert Button Disabled`},{value:`assert_field_error`,label:`Assert Field Error`},{value:`assert_field_accepted`,label:`Assert Field Accepted`},{value:`assert_children_disabled`,label:`Assert Children Disabled`},{value:`assert_children_visible`,label:`Assert Children Visible`},{value:`assert_element_count`,label:`Assert Element Count`},{value:`assert_toast`,label:`Assert Toast`},{value:`assert_toast_success`,label:`Assert Toast Success`},{value:`assert_toast_error`,label:`Assert Toast Error`},{value:`wait_for_visible`,label:`Wait For Visible`},{value:`wait_for_hidden`,label:`Wait For Hidden`},{value:`wait_for_text`,label:`Wait For Text`}],{Text:WM}=s.Typography,GM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],KM={tags:`regression`,active:1},qM={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function JM(e=[]){return e.map(e=>({value:e,label:e}))}function YM(e=``){return String(e??``).trim()}function XM(e=``){return YM(e).toLowerCase()}function ZM(e=[]){let t=new Map;return e.forEach(e=>{let n=YM(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function QM(e=[],t,n){let r=YM(t).toLowerCase(),i=YM(n).toLowerCase();return e.reduce((e,t)=>{let n=YM(t?.module).toLowerCase(),a=YM(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function $M({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(WM,{strong:!0,className:`v1-section-label`,children:t})]})}function eN(){let[e]=s.Form.useForm(),[t]=s.Form.useForm(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)([]),[f,p]=(0,o.useState)([]),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)({open:!1,typeKey:`module`}),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),[w,T]=(0,o.useState)(!1),E=(0,d.useNavigate)(),D=qM[v.typeKey],O=(0,o.useMemo)(()=>JM(r),[r]),k=s.Form.useWatch(`module`,e),A=s.Form.useWatch(`flow`,e),j=!!YM(k),M=!!YM(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{let e=await Hy(qM.module.dbName);i(e?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),s.message.error(`Unable to load testing options.`)}finally{h(!1)}},L=(0,o.useCallback)(async t=>{let n=YM(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await Ky({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(ZM(t))}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{_(!1)}}},[e]),R=(0,o.useCallback)(async(t,n,r)=>{let i=YM(t),a=YM(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}C(!0);try{e.setFieldsValue({step_order:QM(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),s.message.error(`Unable to load step order.`)}finally{C(!1)}},[e]);(0,o.useEffect)(()=>{Promise.resolve().then(I)},[]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>L(k))},[L,k]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>R(k,A,a))},[a,R,A,k]);let z=async t=>{let n={module:YM(t.module),flow:YM(t.flow),step_order:Number(t.step_order),description:YM(t.description),keyword:XM(t.keyword),target:YM(t.target),value:YM(t.value),expected:YM(t.expected),tags:t.tags?YM(t.tags):KM.tags,active:Number(t.active)};T(!0);try{await Gy(n),s.message.success(`Test case details saved successfully.`),e.resetFields(),u([]),p([])}catch(e){console.error(`Unable to save test case:`,e),s.message.error(`Unable to save test case.`)}finally{T(!1)}},B=(t,n)=>{e.setFieldsValue({[t]:YM(n)})},V=t=>{e.setFieldsValue({module:YM(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:KM.tags,value:void 0,expected:void 0})},ee=t=>{e.setFieldsValue({flow:YM(t),step_order:void 0})},te=e=>{let n=qM[e];y({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},ne=()=>{y(e=>({...e,open:!1})),t.resetFields()},re=async()=>{try{let n=YM((await t.validateFields()).name),r=await Uy({name:n,type:D.dbName});F(v.typeKey,r?.items??[]),e.setFieldsValue({[D.formField]:n}),s.message.success(`${D.label} added successfully.`),ne()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),s.message.error(`Unable to add ${D.label.toLowerCase()}.`)}finally{x(!1)}};return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:GM})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>E(`/zinnext-home`),children:`View Table`})})]}),(0,l.jsx)(`div`,{className:`v1-page`,children:(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(`div`,{className:`v1-page-header`,children:(0,l.jsxs)(s.Space,{align:`center`,size:10,children:[(0,l.jsx)(c.ProfileOutlined,{className:`v1-outer-icon`}),(0,l.jsx)(`div`,{children:(0,l.jsx)(WM,{strong:!0,style:{fontSize:16},children:`Add Test Case`})})]})}),(0,l.jsx)(Z,{children:(0,l.jsxs)(s.Form,{form:e,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:KM,onFinish:z,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)($M,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,l.jsx)(WM,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:m,optionFilterProp:`label`,placeholder:`Select module`,options:O,onChange:V})}),(0,l.jsx)(s.Button,{"aria-label":`Add module`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:30},onClick:()=>te(`module`)})]})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Flow`,name:`flow`,children:(0,l.jsx)(s.AutoComplete,{maxLength:100,allowClear:!0,disabled:N,options:f,placeholder:g?`Loading flows`:`Enter flow`,onChange:ee,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,disabled:!0,placeholder:S?`Loading step order`:`Step order`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`keyword`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,disabled:P,optionFilterProp:`label`,placeholder:`Select action`,options:UM,onChange:t=>e.setFieldsValue({keyword:XM(t)})})})}),(0,l.jsx)(s.Col,{xs:24,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3,maxLength:255,disabled:P,placeholder:`Enter description`,showCount:!0,onBlur:e=>B(`description`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`target`,children:(0,l.jsx)(s.Input,{maxLength:255,disabled:P,placeholder:`Enter target`,onBlur:e=>B(`target`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Tags`,name:`tags`,children:(0,l.jsx)(s.Input,{maxLength:200,disabled:P,placeholder:`Enter tags`,prefix:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>B(`tags`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter value`,onBlur:e=>B(`value`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter expected result`,onBlur:e=>B(`expected`,e.target.value)})})})]})}),(0,l.jsx)(`div`,{className:`v1-form-actions`,children:(0,l.jsx)(s.Form.Item,{children:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:w,disabled:P,children:`Submit`}),(0,l.jsx)(s.Button,{onClick:()=>{e.resetFields(),u([]),p([])},children:`Reset`})]})})})]})}),(0,l.jsx)(s.Modal,{title:`Add ${D.label}`,open:v.open,confirmLoading:b,okText:`Add`,onCancel:ne,onOk:()=>{x(!0),re()},destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,l.jsx)(s.Form.Item,{label:`Name`,name:`name`,children:(0,l.jsx)(s.Input,{maxLength:100,placeholder:`Enter ${D.label.toLowerCase()} name`,onBlur:e=>{t.setFieldsValue({name:YM(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var{Text:tN}=s.Typography,nN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function rN(e=``){return String(e??``).trim()}function iN(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var aN=[{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,ellipsis:!0},{label:`Description`,value:`description`,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`green`,children:`Positive`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Negative`})}],oN={key:!1,value:!1,expected:!1};function sN(e,t){return t?e[t]??oN:oN}function cN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function lN(){let[e]=s.Form.useForm(),r=(0,d.useNavigate)(),[i]=(0,d.useSearchParams)(),a=i.get(`edit`),u=!!a,f=(0,o.useMemo)(()=>t.l(),[]),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(UM),[x,S]=(0,o.useState)({}),[C,w]=(0,o.useState)(!1),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)(!1),[j,M]=(0,o.useState)(!1),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`submodule`,e),F=s.Form.useWatch(`actions`,e),I=!!N,L=!!P,R=(0,o.useMemo)(()=>sN(x,F),[x,F]),z=(0,o.useMemo)(()=>iN(p,`modulename`),[p]),B=(0,o.useMemo)(()=>iN(h,`submodulename`),[h]),V=(0,o.useMemo)(()=>p.find(e=>e.id===N)?.modulename??``,[p,N]),ee=(0,o.useMemo)(()=>h.find(e=>e.id===P)?.submodulename??``,[P,h]),te=(0,o.useCallback)(async()=>{try{let e=await Wy();Array.isArray(e?.options)&&e.options.length>0&&b(e.options),e?.rules&&typeof e.rules==`object`&&S(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),s.message.error(`Unable to load action validation rules.`)}},[]),ne=(0,o.useCallback)(async e=>{if(!e){m([]);return}w(!0);try{let t=await Qy({project:e,activeOnly:!0});m(t?.items??[])}catch(e){console.error(`Unable to load modules:`,e),s.message.error(`Unable to load modules.`)}finally{w(!1)}},[]),re=(0,o.useCallback)(async(e,t)=>{if(!e||!t){g([]);return}E(!0);try{let n=await tb({project:e,module:t,activeOnly:!0});g(n?.items??[])}catch(e){console.error(`Unable to load submodules:`,e),s.message.error(`Unable to load submodules.`)}finally{E(!1)}},[]),ie=(0,o.useCallback)(async(t,n,r,i=``)=>{if(!t||!n||!r){v([]),e.setFieldsValue({step_order:void 0});return}O(!0);try{let[a,o]=await Promise.all([ib({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r,actions:i,limit:1e3}),sb({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r})]);v(a?.items??[]),e.setFieldsValue({step_order:o?.step_order??1})}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{O(!1)}},[e]),H=(0,o.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{let t=await ib({product_parent_ID:f.id,module_parent_ID:N,submodule_parent_ID:P,actions:e,limit:1e3});v(t?.items??[])}catch(e){console.error(`Unable to load action flows:`,e),s.message.error(`Unable to load action steps.`)}finally{O(!1)}}},[f?.id,N,P]),ae=(0,o.useCallback)(async()=>{if(!(!a||!f?.name)){M(!0);try{let t=await ob(a);await re(f.name,t.module);let n=await ib({product_parent_ID:t.product_parent_ID,module_parent_ID:t.module_parent_ID,submodule_parent_ID:t.submodule_parent_ID,limit:1e3});v(n?.items??[]),e.setFieldsValue({module:t.module_parent_ID,submodule:t.submodule_parent_ID,step_order:t.step_order,actions:t.actions,key:t.key,value:t.value,expected:t.expected,description:t.description,scenario:t.scenario===1,active:Number(t.active)!==0})}catch(e){console.error(`Unable to load test flow:`,e),s.message.error(`Unable to load test flow for edit.`),r(`/viewTestCase`)}finally{M(!1)}}},[a,e,re,r,f?.name]);return(0,o.useEffect)(()=>{if(!f){r(`/select-project`,{replace:!0});return}Promise.resolve().then(async()=>{await te(),await ne(f.name),a&&await ae()})},[f,r,te,ne,a,ae]),f?(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:nN})}),(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(tN,{strong:!0,children:f.name})]})})]}),(0,l.jsx)(`div`,{className:`zt-page`,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,colon:!1,className:`v1-form`,initialValues:{scenario:!0,active:!0},onFinish:async t=>{let n={product_parent_ID:Number(f?.id),module_parent_ID:Number(t.module),submodule_parent_ID:Number(t.submodule),description:rN(t.description),actions:rN(t.actions),key:rN(t.key),value:rN(t.value),expected:rN(t.expected),scenario:+!!t.scenario,active:+!!t.active};A(!0);try{if(u){await cb(a,{...n,step_order:Number(t.step_order)}),s.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await ab(n),s.message.success(`Step saved (#${t.step_order}).`),e.setFieldsValue({actions:void 0,key:void 0,value:void 0,expected:void 0,description:void 0}),await ie(n.product_parent_ID,n.module_parent_ID,n.submodule_parent_ID)}catch(e){console.error(`Unable to save test case:`,e),s.message.error(u?`Unable to update test case.`:`Unable to save step.`)}finally{A(!1)}},autoComplete:`off`,disabled:j,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:8,className:`zt-section-title`,children:[(0,l.jsx)(`span`,{className:`zt-step-tag`,children:`1`}),(0,l.jsx)(`span`,{children:`Module & Submodule`})]}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],align:`bottom`,children:[(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,loading:C,placeholder:`Select module`,options:z,onChange:t=>{let n=p.find(e=>e.id===t)?.modulename??``;e.setFieldsValue({module:t,submodule:void 0,step_order:void 0,actions:void 0,key:void 0,value:void 0,expected:void 0}),cN(e,[`actions`,`key`,`value`,`expected`]),g([]),v([]),re(f?.name,n)}})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Submodule`,name:`submodule`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,disabled:!I,loading:T,placeholder:I?`Select submodule`:`Select module first`,options:B,onChange:t=>{e.setFieldsValue({submodule:t,actions:void 0,key:void 0,value:void 0,expected:void 0}),cN(e,[`actions`,`key`,`value`,`expected`]),ie(f?.id,N,t)}})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Scenario`,name:`scenario`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{disabled:!L,checkedChildren:`Positive`,unCheckedChildren:`Negative`})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Active`,name:`active`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Active`,unCheckedChildren:`Inactive`})})})]})}),L&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:8,className:`zt-section-title`,children:[(0,l.jsx)(`span`,{className:`zt-step-tag`,children:`2`}),(0,l.jsx)(c.FileTextOutlined,{}),(0,l.jsx)(`span`,{children:`Step Details`})]}),extra:(0,l.jsxs)(tN,{type:`secondary`,children:[V,` / `,ee]}),children:[(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,children:(0,l.jsx)(s.Input,{disabled:!0,placeholder:D?`Loading…`:`Auto`})})}),(0,l.jsx)(s.Col,{xs:24,md:18,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`actions`,rules:[{required:!0,message:`Mandatory Field`}],children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`Select action`,options:y,onChange:t=>{let n=sN(x,t);e.setFieldsValue({actions:t,key:n.key?e.getFieldValue(`key`):void 0,value:n.value?e.getFieldValue(`value`):void 0,expected:n.expected?e.getFieldValue(`expected`):void 0}),cN(e,[`key`,`value`,`expected`]),H(t||``)}})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`key`,rules:[{required:R.key,message:`Key is required for this action`}],children:(0,l.jsx)(s.Input,{maxLength:255,disabled:F&&!R.key,placeholder:F?R.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,rules:[{required:R.value,message:`Value is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:1,autoSize:{minRows:1,maxRows:4},disabled:F&&!R.value,placeholder:F?R.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:R.expected,message:`Expected result is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:2,disabled:F&&!R.expected,placeholder:F?R.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:2,maxLength:255,showCount:!0,placeholder:`Enter description`})})})]}),(0,l.jsxs)(s.Space,{className:`zt-actions`,children:[(0,l.jsx)(s.Button,{onClick:()=>{if(u){r(`/viewTestCase`);return}e.resetFields(),g([]),v([]),E(!1),O(!1)},children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:k||j,children:u?`Update Test Case`:`Save & Continue`})]})]},`${N}-${P}`),L&&(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.TableOutlined,{}),(0,l.jsx)(`span`,{children:`Added Steps`})]}),extra:(0,l.jsx)(s.Tag,{children:F?`${_.length} ${F} step(s)`:`${_.length} step(s)`}),children:(0,l.jsx)(Em,{listName:`Added Steps`,loading:D,fields:aN,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:uN}=s.Typography,dN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function fN(){let e=(0,d.useNavigate)(),r=(0,o.useMemo)(()=>t.l(),[]),[i,a]=(0,o.useState)([]),[u,f]=(0,o.useState)({}),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(``),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),T=(0,o.useCallback)(async e=>{if(!e){a([]);return}m(!0);try{let[t,n]=await Promise.all([Qy({project:e}),tb({project:e})]);a(t?.items??[]);let r={};(n?.items??[]).forEach(e=>{let t=e.modulename;r[t]=(r[t]??0)+1}),f(r)}catch(e){console.error(e),s.message.error(`Unable to load modules.`)}finally{m(!1)}},[]);(0,o.useEffect)(()=>{if(!r){e(`/select-project`,{replace:!0});return}Promise.resolve().then(()=>T(r.name))},[r,e,T]);let E=async(e,t)=>{try{await eb(e.id,+!!t),a(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),s.message.success(`Module ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),s.message.error(`Unable to update module status.`)}},D=async()=>{let e=_.trim();if(!e){s.message.warning(`Enter a module name.`);return}b(!0);try{await $y({project:r.name,modulename:e}),s.message.success(`Module added.`),g(!1),v(``),S(1),T(r.name)}catch(e){console.error(e),s.message.error(`Unable to add module (maybe it already exists).`)}finally{b(!1)}},O=t=>{e(`/test-cases/zinnext/submodules?module=${encodeURIComponent(t.modulename)}`)};return r?(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:dN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/addTestCase`),children:`Back to Form`})})]}),(0,l.jsxs)(`div`,{className:`zt-page`,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-bar`,children:(0,l.jsxs)(s.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(`span`,{children:`Project:`}),(0,l.jsx)(uN,{strong:!0,children:r.name})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Module`})})]})}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Modules`})]}),children:(0,l.jsx)(Em,{listName:`Modules`,loading:p,fields:[{label:`Module`,value:`modulename`},{label:`Submodules`,value:`submoduleCount`,width:140,render:(e,t)=>(0,l.jsxs)(s.Button,{type:`link`,className:`zt-count-link`,onClick:()=>O(t),children:[u[t.modulename]??0,` submodule(s)`]})},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,l.jsx)(s.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:i,current:x,pageSize:C,total:i.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,l.jsx)(s.Modal,{title:`Add Module`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,l.jsxs)(s.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,l.jsxs)(uN,{type:`secondary`,children:[`Project: `,(0,l.jsx)(`b`,{children:r.name})]}),(0,l.jsx)(s.Input,{placeholder:`Enter module name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]}):null}var{Text:pN}=s.Typography,mN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function hN(){let e=(0,d.useNavigate)(),[r]=(0,d.useSearchParams)(),i=(0,o.useMemo)(()=>t.l(),[]),a=r.get(`module`)??``,[u,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(``),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),T=(0,o.useCallback)(async(e,t)=>{if(!e||!t){f([]);return}m(!0);try{let n=await tb({project:e,module:t});f(n?.items??[])}catch(e){console.error(e),s.message.error(`Unable to load submodules.`)}finally{m(!1)}},[]);(0,o.useEffect)(()=>{if(!i){e(`/select-project`,{replace:!0});return}if(!a){e(`/manageModules`,{replace:!0});return}Promise.resolve().then(()=>T(i.name,a))},[i,a,e,T]);let E=async(e,t)=>{try{await rb(e.id,+!!t),f(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),s.message.success(`Submodule ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),s.message.error(`Unable to update submodule status.`)}},D=async()=>{let e=_.trim();if(!e){s.message.warning(`Enter a submodule name.`);return}b(!0);try{await nb({project:i.name,modulename:a,submodulename:e}),s.message.success(`Submodule added.`),g(!1),v(``),S(1),T(i.name,a)}catch(e){console.error(e),s.message.error(`Unable to add submodule (maybe it already exists).`)}finally{b(!1)}};return!i||!a?null:(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:mN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/manageModules`),children:`Back to Modules`})})]}),(0,l.jsxs)(`div`,{className:`zt-page`,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-bar`,children:(0,l.jsxs)(s.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:16,wrap:!0,className:`zt-section-title`,children:[(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(`span`,{children:`Project:`}),(0,l.jsx)(pN,{strong:!0,children:i.name})]}),(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Module:`}),(0,l.jsx)(pN,{strong:!0,children:a})]})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Submodule`})})]})}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Submodules`})]}),children:(0,l.jsx)(Em,{listName:`Submodules`,loading:p,fields:[{label:`Submodule`,value:`submodulename`},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,l.jsx)(s.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:u,current:x,pageSize:C,total:u.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,l.jsx)(s.Modal,{title:`Add Submodule`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,l.jsxs)(s.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,l.jsxs)(pN,{type:`secondary`,children:[`Project: `,(0,l.jsx)(`b`,{children:i.name}),` \xA0|\xA0 Module: `,(0,l.jsx)(`b`,{children:a})]}),(0,l.jsx)(s.Input,{placeholder:`Enter submodule name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]})}var{Text:gN}=s.Typography,_N=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function vN(){let e=(0,d.useNavigate)(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)(0),[f,p]=(0,o.useState)(!1),m=(0,o.useMemo)(()=>t.l(),[]),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(1),[y,b]=(0,o.useState)(20),[x,S]=(0,o.useState)(null),C=(0,o.useCallback)(async(e={})=>{p(!0);try{let t=await ib({product_parent_ID:e.project??m?.id??``,search:e.search??h??``,limit:e.pageSize??y,offset:((e.page??_)-1)*(e.pageSize??y)});i(t?.items??[]),u(t?.total??0)}catch(e){console.error(e),s.message.error(`Unable to load test flows.`)}finally{p(!1)}},[m?.id,h,_,y]),w=e=>{s.Modal.confirm({title:`Delete Test Case`,icon:(0,l.jsx)(c.ExclamationCircleOutlined,{}),content:`Are you sure you want to delete this test case?`,okText:`Delete`,okButtonProps:{danger:!0,loading:x===e.id},cancelText:`Cancel`,async onOk(){S(e.id);try{await lb(e.id),s.message.success(`Test case deleted successfully.`);let t=r.length===1&&_>1?_-1:_;v(t),await C({page:t})}catch(e){throw console.error(`Unable to delete test flow:`,e),s.message.error(`Unable to delete test case.`),e}finally{S(null)}}})};return(0,o.useEffect)(()=>{Promise.resolve().then(()=>{if(!m?.id){e(`/select-project`,{replace:!0});return}C({page:1})})},[]),(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:_N})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/addTestCase`),children:`Back to Form`})})]}),(0,l.jsx)(`div`,{className:`zt-page zt-page-wide`,children:(0,l.jsxs)(s.Card,{className:`v1-card`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.TableOutlined,{}),(0,l.jsx)(`span`,{children:`Test Flows`})]}),extra:(0,l.jsxs)(gN,{type:`secondary`,children:[a,` row(s)`]}),children:[(0,l.jsxs)(s.Space,{wrap:!0,className:`zt-toolbar`,children:[(0,l.jsx)(s.Input.Search,{allowClear:!0,className:`zt-search-filter`,placeholder:`Search module / key / description`,value:h,onChange:e=>g(e.target.value),onSearch:()=>{v(1),C({page:1})}}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>C(),children:`Refresh`})]}),(0,l.jsx)(Em,{listName:`Test Flows`,loading:f,fields:[{label:`Actions`,value:`rowActions`,width:112,fixed:`left`,sorter:!1,render:(t,n)=>(0,l.jsxs)(s.Space,{size:4,className:`zt-row-actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>e(`/addTestCase?edit=${n.id}`)})}),(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{danger:!0,type:`text`,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{}),loading:x===n.id,onClick:()=>w(n)})})]})},{label:`ID`,value:`id`,width:70,fixed:`left`},{label:`Project`,value:`project`,width:130},{label:`Module`,value:`module`,width:130},{label:`Submodule`,value:`submodule`,width:140},{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,width:200,ellipsis:!0},{label:`Expected`,value:`expected`,width:180,ellipsis:!0},{label:`Description`,value:`description`,width:180,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`green`,children:`Positive`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Negative`})},{label:`Active`,value:`active`,width:90,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`blue`,children:`Active`}):(0,l.jsx)(s.Tag,{children:`Inactive`})}],dataSource:r,current:_,pageSize:y,total:a,onPageChange:e=>{v(e),C({page:e})},onPageSizeChange:e=>{v(1),b(e),C({page:1,pageSize:e})},rowSelection:!1,className:`zt-list-plain`})]})})]})}var yN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function bN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:yN}),(0,l.jsx)(Go,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:xN}=s.Typography,SN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],CN={tags:`regression`,active:1},wN={module:{dbName:`Modules`,formField:`module`,label:`Module`}},TN={key:!1,value:!1,expected:!1};function EN(e,t){return t?e[t]??TN:TN}function DN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function ON(e=[]){return e.map(e=>({value:e,label:e}))}function kN(e=``){return String(e??``).trim()}function AN(e=[]){let t=new Map;return e.forEach(e=>{let n=kN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function jN(e=[],t,n){let r=kN(t).toLowerCase(),i=kN(n).toLowerCase();return e.reduce((e,t)=>{let n=kN(t?.module).toLowerCase(),a=kN(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function MN({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(xN,{strong:!0,className:`v1-section-label`,children:t})]})}function NN(){let[e]=s.Form.useForm(),[t]=s.Form.useForm(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)([]),[f,p]=(0,o.useState)([]),[m,h]=(0,o.useState)(UM),[g,_]=(0,o.useState)({}),[v,y]=(0,o.useState)(!1),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)({open:!1,typeKey:`module`}),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)(!1),A=(0,d.useNavigate)(),j=wN[S.typeKey],M=(0,o.useMemo)(()=>ON(r),[r]),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`flow`,e),F=s.Form.useWatch(`keyword`,e),I=!!kN(N),L=!!kN(P),R=!I,z=!I||!L,B=(0,o.useMemo)(()=>EN(g,F),[g,F]),V=(e,t=[])=>{e===`module`&&i(t)},ee=async()=>{y(!0);try{let e=await Hy(wN.module.dbName);i(e?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),s.message.error(`Unable to load testing options.`)}finally{y(!1)}},te=async()=>{try{let e=await Wy();Array.isArray(e?.options)&&e.options.length>0&&h(e.options),e?.rules&&typeof e.rules==`object`&&_(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),s.message.error(`Unable to load action validation rules.`)}},ne=(0,o.useCallback)(async t=>{let n=kN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await Xy({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(AN(t))}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{x(!1)}}},[e]),re=(0,o.useCallback)(async(t,n,r)=>{let i=kN(t),a=kN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}D(!0);try{e.setFieldsValue({step_order:jN(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),s.message.error(`Unable to load step order.`)}finally{D(!1)}},[e]);(0,o.useEffect)(()=>{Promise.resolve().then(async()=>{await Promise.all([ee(),te()])})},[]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>ne(N))},[ne,N]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>re(N,P,a))},[a,re,P,N]);let ie=async t=>{let n={module:kN(t.module),flow:kN(t.flow),step_order:Number(t.step_order),description:kN(t.description),keyword:kN(t.keyword),target:kN(t.target),value:kN(t.value),expected:kN(t.expected),tags:t.tags?kN(t.tags):CN.tags,active:Number(t.active)};k(!0);try{await Yy(n),s.message.success(`LMS case details saved successfully.`),e.resetFields(),u([]),p([])}catch(e){console.error(`Unable to save LMS case:`,e),s.message.error(`Unable to save LMS case.`)}finally{k(!1)}},H=(t,n)=>{e.setFieldsValue({[t]:kN(n)})},ae=t=>{e.setFieldsValue({module:kN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:CN.tags,value:void 0,expected:void 0}),DN(e,[`keyword`,`target`,`value`,`expected`])},oe=t=>{e.setFieldsValue({flow:kN(t),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),DN(e,[`keyword`,`target`,`value`,`expected`])},se=t=>{let n=EN(g,t);e.setFieldsValue({keyword:kN(t),target:n.key?e.getFieldValue(`target`):void 0,value:n.value?e.getFieldValue(`value`):void 0,expected:n.expected?e.getFieldValue(`expected`):void 0}),DN(e,[`target`,`value`,`expected`])},ce=e=>{let n=wN[e];C({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},U=()=>{C(e=>({...e,open:!1})),t.resetFields()},le=async()=>{try{let n=kN((await t.validateFields()).name),r=await Uy({name:n,type:j.dbName});V(S.typeKey,r?.items??[]),e.setFieldsValue({[j.formField]:n}),s.message.success(`${j.label} added successfully.`),U()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),s.message.error(`Unable to add ${j.label.toLowerCase()}.`)}finally{T(!1)}};return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:SN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>A(`/lms-home`),children:`View Table`})})]}),(0,l.jsx)(`div`,{className:`v1-page`,children:(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(`div`,{className:`v1-page-header`,children:(0,l.jsxs)(s.Space,{align:`center`,size:10,children:[(0,l.jsx)(c.ProfileOutlined,{className:`v1-outer-icon`}),(0,l.jsx)(`div`,{children:(0,l.jsx)(xN,{strong:!0,style:{fontSize:16},children:`Add LMS Case`})})]})}),(0,l.jsx)(Z,{children:(0,l.jsxs)(s.Form,{form:e,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:CN,onFinish:ie,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(MN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,l.jsx)(xN,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:v,optionFilterProp:`label`,placeholder:`Select module`,options:M,onChange:ae})}),(0,l.jsx)(s.Button,{"aria-label":`Add module`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:30},onClick:()=>ce(`module`)})]})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Flow`,name:`flow`,children:(0,l.jsx)(s.AutoComplete,{maxLength:100,allowClear:!0,disabled:R,options:f,placeholder:b?`Loading flows`:`Enter flow`,onChange:oe,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,disabled:!0,placeholder:E?`Loading step order`:`Step order`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`keyword`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,disabled:z,optionFilterProp:`label`,placeholder:`Select action`,options:m,onChange:se})})}),(0,l.jsx)(s.Col,{xs:24,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3,maxLength:255,disabled:z,placeholder:`Enter description`,showCount:!0,onBlur:e=>H(`description`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`target`,rules:[{required:B.key,message:`Key is required for this action`}],children:(0,l.jsx)(s.Input,{maxLength:255,disabled:z||!!F&&!B.key,placeholder:z?`Select module and flow first`:F?B.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`target`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Tags`,name:`tags`,children:(0,l.jsx)(s.Input,{maxLength:200,disabled:z,placeholder:`Enter tags`,prefix:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>H(`tags`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,rules:[{required:B.value,message:`Value is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:z||!!F&&!B.value,placeholder:z?`Select module and flow first`:F?B.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`value`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:B.expected,message:`Expected result is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:z||!!F&&!B.expected,placeholder:z?`Select module and flow first`:F?B.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`expected`,e.target.value)})})})]})}),(0,l.jsx)(`div`,{className:`v1-form-actions`,children:(0,l.jsx)(s.Form.Item,{children:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:O,disabled:z,children:`Submit`}),(0,l.jsx)(s.Button,{onClick:()=>{e.resetFields(),u([]),p([])},children:`Reset`})]})})})]})}),(0,l.jsx)(s.Modal,{title:`Add ${j.label}`,open:S.open,confirmLoading:w,okText:`Add`,onCancel:U,onOk:()=>{T(!0),le()},destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,l.jsx)(s.Form.Item,{label:`Name`,name:`name`,children:(0,l.jsx)(s.Input,{maxLength:100,placeholder:`Enter ${j.label.toLowerCase()} name`,onBlur:e=>{t.setFieldsValue({name:kN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var PN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function FN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:PN}),(0,l.jsx)(Go,{moduleName:`lms-flows`,rowKey:`id`})]})}var IN=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function LN(e=IN){return function(t){if(!t||typeof t!=`object`)return``;for(let n of e){let e=t[n];if(e!=null&&e!==``)return String(e)}return``}}function RN(e,t=IN){if(!e||typeof e!=`object`)return[];let n=[];for(let r of t){let t=e[r];t!=null&&t!==``&&n.push(String(t))}return n}var zN=LN();function BN(e){return typeof e==`function`?e:typeof e==`string`?LN([e]):Array.isArray(e)?LN(e):zN}function VN(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function HN(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var UN=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function WN(e){let t=e?.data??e,n={};for(let r of UN){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var GN=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function KN(e,t,n){let r=(Array.isArray(n)?n:[n]).map(GN).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(GN(e?.value))||r.includes(GN(e?.label))):-1;if(i===-1)return[...e,...t];let a=Number(e[i]?.order),o=Number.isFinite(a)?t.map((e,n)=>e.order==null||e.order===``?{...e,order:a+(n+1)/(t.length+1)}:e):t;return[...e.slice(0,i+1),...o,...e.slice(i+1)]}var qN=(e,t)=>di(e,t).rows,JN=(e,t)=>{let{rows:n,total:r}=di(e,t);return{rows:n,total:r}};function YN(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function XN(e){return!e||typeof e!=`object`||typeof(e.fetchByKeys??e.fetch??e.function)!=`function`?null:{...e,fetchByKeys:typeof e.fetchByKeys==`function`?e.fetchByKeys:null,fetch:typeof e.fetch==`function`?e.fetch:null,function:typeof e.function==`function`?e.function:null,extractRows:typeof e.extractRows==`function`?e.extractRows:qN,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:VN,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function ZN({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[XN({key:i,fetchByKeys:e?(t,n,r)=>e(t,n,r):null,function:t?({moduleName:e,options:n})=>t(e,o,0,n):null,extractRows:n,fetchById:r,mergeRow:a})].filter(Boolean)}function QN(e){if(typeof e==`function`)return t=>{let n=e(t);return n==null||n===``?[]:[String(n)]};let t=typeof e==`string`?[e]:Array.isArray(e)&&e.length?e:IN;return e=>RN(e,t)}function $N(e,t){let n=new Map;return e.forEach(e=>{for(let r of t(e))n.has(r)||n.set(r,e)}),n}function eP({moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}){return{moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}}async function tP(e,t){if(typeof e.args==`function`){let n=e.args(t);return(e.fetch??e.function??e.fetchByKeys)(...Array.isArray(n)?n:[n])}if(Array.isArray(e.args))return(e.fetch??e.function??e.fetchByKeys)(...e.args);if(e.fetchByKeys&&Array.isArray(t.keys))return e.fetchByKeys(t.moduleName,t.keys,t.options,t);let n=e.fetch??e.function;return typeof n==`function`?n(t):null}function nP({fetchPrimaryPage:e,extractPrimaryPage:t=JN,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=qN,fetchSecondary:o,extractSecondaryRows:s=qN,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=VN,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map(XN).filter(Boolean):ZN({fetchSecondaryByKeys:n,fetchSecondary:o,extractSecondaryRows:s,fetchSecondaryById:c,secondaryKey:u,mergeRow:d,secondaryFetchLimit:f}),g=0;async function _(e,t,n,r){if(!e.fetchById||!r)return null;try{let i=await e.fetchById(n,r);return i&&t(i).includes(String(r))?i:null}catch(e){return console.error(`[mergedListApi] per-id join lookup failed for "${r}"`,e),null}}async function v(e,t,n,r,i){if(!n)return e;let a=t.extractRows(n,r)??[],o=BN(t.primaryKey??l),s=QN(t.key),c=$N(a,s);return Promise.all(e.map(async e=>{let n=o(e),a=c.get(n)??(i()?null:await _(t,s,r,n));return t.mergeRow(e,a,n)}))}async function y(e,t,n,r){let i=e;for(let e of t)i=await v(i,e.source,e.response,n,r);return i}function b(e,t,n){let r={};for(let e of n){if(!e)continue;let t=WN(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=KN(r.fields??[],p,m)),HN(e,t,r)}async function x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:i,primaryRows:a,pageRows:o,total:s}){return Promise.all(h.map(async c=>{try{let u=BN(c.primaryKey??l),d=[...new Set(o.map(u).filter(Boolean))];return c.fetchByKeys&&d.length===0?{source:c,response:null}:{source:c,response:await tP(c,eP({moduleName:e,limit:t,offset:n,options:r,keys:d,primaryResponse:i,primaryRows:a,pageRows:o,total:s,source:c}))}}catch(e){return console.error(`[mergedListApi] join fetch failed — rendering page without that join`,e),{source:c,response:null}}}))}async function S(n,r,i,a,o){let s=await e(n,r,i,a),c=t(s,n)??{},l=Array.isArray(c.rows)?c.rows:[],u=Number.isFinite(Number(c.total))?Number(c.total):l.length,d=await x({moduleName:n,limit:r,offset:i,options:a,primaryResponse:s,primaryRows:l,pageRows:l,total:u});return b(await y(l,d,n,o),u,[s,...d.map(e=>e.response)])}async function C(e,t,n,r,o){let s=await i(e,t,n,r),c=a(s,e)??[],l=c.length,u=c.slice(n,n+t),d=await x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:s,primaryRows:c,pageRows:u,total:l});return b(await y(u,d,e,o),l,[s,...d.map(e=>e.response)])}return async function(t,n=10,r=0,i={}){let a=++g,o=()=>a!==g;return e?S(t,n,r,i,o):C(t,n,r,i,o)}}function rP(e,t,n={}){return nP({fetchPrimary:()=>Lk(e,t),extractPrimaryRows:Fk,fetchSecondary:In,fetchSecondaryById:Rk,secondaryFetchLimit:n.moduleFetchLimit??200})}function iP(e){let t=String(e??``).trim().split(/[^a-zA-Z0-9]+/).filter(Boolean);return t.length?`${t.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}Count`:``}function aP(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=iP(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var oP=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function sP({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=VN(n,r,i),o=oP(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function cP(e={}){let t=sP();return nP({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:In,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return Ik(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(aP),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function lP(e,t=10,n=0,r={},i={}){return di(await cP(i)(e,t,n,r),e)}async function uP(e,t,n,r=10,i=0,a={}){return di(await rP(e,t)(n,r,i,a),n)}typeof window<`u`&&(window.__CORE_THEME_BUILD__=`2026-08-29T20:31:32.293Z`);var dP=Dj,fP=fb(TM),pP=fb(DM),mP=fb(HM),hP=fb(eN),gP=fb(lN),_P=fb(fN),vP=fb(hN),yP=fb(vN),bP=fb(bN),xP=fb(NN),SP=fb(FN);exports.ADMIN_API_URL=t.v,exports.ADMIN_APP_ID=t.y,exports.APP_ID=t.b,exports.AUTH_URL=t.x,exports.ActivityNotesCard=Bc,exports.ActivityTab=Fc,exports.AddBatchCandidatePopup=sj,exports.AddFormV1=vc,exports.AdminDashboard=Dj,exports.AdminDashboardContent=KE,exports.AdminPage=dP,exports.AppAlert=yc,exports.AppButton=n.ut,exports.AppShell=Fy,exports.ApprovalActionBar=Zg,exports.AssigneeAvatars=Vc,exports.AuthGuard=Oy,exports.BILLING_STATUS_FLOW=Xd,exports.BOOLEAN_API_KEYS=Lh,exports.BOOLEAN_PARSEABLE_API_KEYS=Vm,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Hc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Uc,exports.Breadcrumb=n.t,exports.BulkUploadPage=mP,exports.BulkUploadPanel=Zc,exports.CANDIDATES_URL=t.S,exports.CONTRACT_C2C=x_,exports.CONTRACT_W2=b_,exports.CORE_URL=t.C,exports.CURRENCY_SYMBOLS=au,exports.CalendarCard=A,exports.CoreThemeAdminApp=XE,exports.CoreThemeAdminRoutes=YE,exports.CustomPagination=ze,exports.DEFAULT_HOURS_POLICY=yg,exports.DayLogModal=Ug,exports.DescriptionBlock=ul,exports.DetailHeaderCard=$f,exports.DetailViewPage=op,exports.DetailViewV1=Yu,exports.DocumentViewer=n.wn,exports.DynamicCards=Lt,exports.DynamicPopup=YO,exports.DynamicPopupRoute=fj,exports.DynamicTabs=P,exports.EditFormV1=im,exports.FIELD_TYPE_REGISTRY=Sh,exports.FINANCE_APPROVAL_CONFIG=f_,exports.FINANCE_TYPE_CFO=a_,exports.FINANCE_TYPE_ONBOARDING_MANAGER=i_,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=c_,exports.FINANCE_TYPE_ONLY_FINANCE=o_,exports.FINANCE_TYPE_SUBMISSION_MANAGER=r_,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=s_,exports.FileListCard=Ev,exports.FinanceApprovalPanel=av,exports.FinanceAvatar=Mf,exports.FinanceBadge=If,exports.FinanceDayCell=$g,exports.FinanceDivider=wf,exports.FinanceEmployeeCell=Nf,exports.FinanceEmptyState=xf,exports.FinanceEquation=Tf,exports.FinanceHistoryTimeline=kf,exports.FinanceHoursGrid=bf,exports.FinanceKpiRow=yf,exports.FinanceLine=Cf,exports.FinanceListToolbar=vg,exports.FinanceMarginBadge=Lf,exports.FinanceMoneyCell=Ff,exports.FinanceRecordsTable=Bf,exports.FinanceRowChevron=Rf,exports.FinanceSection=Sf,exports.FinanceStatusPill=vf,exports.FinanceTextCell=Pf,exports.FinanceTimesheetAnalysis=t_,exports.FinanceWorkflowSteps=Ef,exports.GATEWAY_URL=t.w,exports.GLOBAL_DEFAULT_FIELDS=uE,exports.HOURS_MESSAGES=bg,exports.Header=ty,exports.HierarchyUserFilter=Ht,exports.JOBS_URL=t.T,exports.LegacyAdminPage=fP,exports.ListView=Go,exports.LmsHomePage=SP,exports.LmsTestForm=xP,exports.Login=Iy,exports.MailPopup=TD,exports.ManageModules=_P,exports.ManageSubmodules=vP,exports.ModuleRowActions=pm,exports.NotesPanel=Xg,exports.NotesTab=zc,exports.PAYROLL_STATUS_FLOW=Zd,exports.PLATFORM_SCOPES=sE,exports.POPUP_CONFIGS=QA,exports.PYOPS_URL=t.E,exports.ParamCardView=bm,exports.ParamListView=Em,exports.PeriodBadgeTag=Mg,exports.PlatformSection=bE,exports.PreviewPopup=ID,exports.ProjectSelect=db,exports.ProofUploadPreview=Yg,exports.QuickLogBar=Kg,exports.QuickLogSelectionBar=Wg,exports.RegionBanner=Ej,exports.RejectionReasonModal=Gg,exports.SUBMISSIONS_URL=t.D,exports.SearchBuilderV1=lg,exports.Sidebar=wy,exports.StatusBadge=dg,exports.StatusBadgeTag=jg,exports.StickyNotesFullPage=pP,exports.StylishDynamicTabs=pg,exports.TemplateEditor=hg,exports.TestForm=hP,exports.TestingHomePage=bP,exports.TimelineGroups=Dc,exports.TimesheetDayCell=Bg,exports.TipTapEditor=n.Tn,exports.UserForm=Tj,exports.VendorShareDrawer=gj,exports.ViewSummaryWidget=Li,exports.WizardPopup=HD,exports.ZINNEXT_URL=t.O,exports.ZinnextTableView=yP,exports.ZinnextTestForm=gP,exports.appNow=n.kn,exports.applyIntegrationStatus=n.Gn,exports.approveSubmission=ye,exports.buildAcceptAttr=Jc,exports.buildBooleanRequest=Hh,exports.buildCsv=ff,exports.buildDailyRows=of,exports.buildDayGradient=Rg,exports.buildRateHistoryEntries=K_,exports.buildWeeklyRollup=lf,exports.clearSelectedProject=t.i,exports.colors=n.On,exports.computeFinance=R_,exports.computeHoursPolicy=Eg,exports.computeMarginBand=uf,exports.conditionMatches=n.i,exports.configureCoreTheme=t.k,exports.configuredFieldLabel=n.a,exports.createAllWorkflowsListFetcher=cP,exports.createMergedListFetcher=nP,exports.createModuleListFetchAdapter=YN,exports.createWorkflowStageListFetcher=rP,exports.currencySymbol=ou,exports.deactivateRegion=XT,exports.defaultMergeRow=VN,exports.deleteIntegrationConfig=n.nr,exports.deriveDayStats=af,exports.describeCapacity=Og,exports.downloadCsv=gf,exports.evaluateShowIfWith=n.o,exports.findEmployerRow=M_,exports.flattenGroups=A_,exports.formatAmount=fu,exports.formatApp=n.An,exports.formatAppDateTime=n.jn,exports.formatFileSize=qc,exports.formatFinanceMoney=q_,exports.formatHours=Vd,exports.formatMoney=pu,exports.formatPercent=Ud,exports.formatRate=mu,exports.getActivity=n.dn,exports.getAllWorkflowsModuleList=lP,exports.getAppTimeZone=n.Mn,exports.getApprovalDate=qd,exports.getBgcIntegrationConfig=n.br,exports.getBgcIntegrationSummary=n.xr,exports.getBillingActionStates=Qd,exports.getBooleanEligibleTypes=Oh,exports.getCurrentRoleName=t.c,exports.getDetailDisplayDefaults=n.Bn,exports.getFieldLabel=mf,exports.getFieldType=wh,exports.getFileExtension=Kc,exports.getFinanceApprovalConfig=__,exports.getFormGroupsRaw=hv,exports.getGlobalAiServices=dE,exports.getGlobalDefaults=cE,exports.getIntegrationConfig=n.Dr,exports.getIntegrationConfigs=n.Or,exports.getIntegrationSummary=n.kr,exports.getModuleConfig=Fe,exports.getModuleDataDetail=n.pn,exports.getPayrollActionStates=$d,exports.getPeriodBadgeConfig=Le,exports.getRegionDetailDefaults=rE,exports.getSelectedProject=t.l,exports.getStoredToken=t.u,exports.getStoredUser=t.d,exports.getUserRoles=t.f,exports.getVMSApprove=be,exports.getValueStyle=hf,exports.getWorkflowStageModuleList=uP,exports.getWorkflowSteps=ef,exports.grantPlatformAccess=QT,exports.hasPlatformAccess=eE,exports.humanizeEvent=Kd,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return gs}}),exports.indexFieldConfig=pf,exports.initialsOf=Wd,exports.insertTokenAtCursor=Gm,exports.isBooleanEligible=Th,exports.isBooleanParsable=Um,exports.isTester=t.p,exports.listPlatformAccess=ZT,exports.listPlatformAudit=nE,exports.listPlatformUsers=tE,exports.listRegionRoles=oE,exports.listRegionUsers=aE,exports.listRegions=JT,exports.loadDetailDefaults=n.Vn,exports.logout=t.h,exports.marginIncludesReferral=y_,exports.matchLocationTax=L_,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return mp}}),exports.normalizeContract=P_,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Qc}}),exports.rateUnitLabel=cu,exports.rateUnitShort=uu,exports.reconcileHours=Dg,exports.regionPath=qT,exports.registerFieldType=Ch,exports.rejectSubmission=Se,exports.resolveActivityMeta=Mc,exports.resolveAndCompute=z_,exports.resolveDayKind=wg,exports.resolveFinanceInputs=I_,exports.resolveMergeKey=zN,exports.resolveMergedListKey=zN,exports.resolveRejectionReason=v_,exports.resolveSubmissionFinance=gv,exports.revokePlatformAccess=$T,exports.saveBgcIntegrationConfig=n.Qr,exports.saveGlobalAiServices=fE,exports.saveGlobalDefaults=lE,exports.saveIntegrationConfig=n.ti,exports.saveRegion=YT,exports.saveRegionDetailDefaults=iE,exports.setSelectedProject=t._,exports.showIfConditions=n.c,exports.stageCountKey=iP,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ly}}),exports.testIntegrationConnection=n.si,exports.toApp=n.Pn,exports.toNumber=du,exports.tzLabel=n.Fn,exports.tzShortLabel=n.In,exports.useDropdownFields=Qn,exports.useDropdownValues=Ri,exports.useEditForm=Dv,exports.useFieldConfig=$n,exports.useFilterFields=er,exports.useMenuPermission=lr,exports.useModuleActions=om,exports.useRecordRefresh=rp,exports.validateBooleanQuery=Wm,exports.validateBulkFile=Yc,exports.withAdminAppId=t.A,exports.withAppId=t.j,exports.withAuthGuard=fb;
|
|
7
|
+
`).length)),value:r,className:`fg-mono-input`,style:{marginTop:8,fontSize:12},onChange:n=>{i(n.target.value);try{t({...e,config:JSON.parse(n.target.value||`{}`)}),u(!1)}catch{u(!0)}}})]})}function bT({open:e,doc:t,moduleOptions:n,onClose:r,onSave:i}){let[a,u]=(0,o.useState)(()=>({key:``,module:``,event:`afterCreate`,order:10,isActive:!0,condition:{},actions:[],...t??{}})),[d,f]=(0,o.useState)(()=>vT(t?.condition)),[p,m]=(0,o.useState)(!1),h=(e,t)=>u(n=>({...n,[e]:t}));return(0,l.jsx)(s.Modal,{open:e,onCancel:r,width:840,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,l.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,l.jsx)(c.ApartmentOutlined,{}),` `,t?`Edit Workflow`:`New Workflow`]}),footer:(0,l.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,l.jsx)(s.Button,{onClick:r,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),onClick:()=>{if(!a.key?.trim())return s.message.error(`Key is required`);if(!a.module?.trim())return s.message.error(`Module is required`);if(p)return s.message.error(`Condition JSON is invalid`);if(!(a.actions??[]).length)return s.message.error(`At least one action is required`);if((a.actions??[]).some(e=>!e.type))return s.message.error(`Every action needs a type`);let e={...a};delete e.id,delete e._id,i(e)},children:`Save Workflow`})]}),children:(0,l.jsxs)(`div`,{className:`fg-form-section`,children:[(0,l.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,l.jsx)(s.Input,{size:`small`,placeholder:`jobs-create-after`,value:a.key??``,onChange:e=>h(`key`,e.target.value),className:`fg-mono-input`,disabled:!!t})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Module`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},showSearch:!0,value:a.module||void 0,options:n,onChange:e=>h(`module`,e),placeholder:`jobs`})]}),(0,l.jsxs)(`div`,{style:{flex:1},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Event`}),(0,l.jsx)(s.Select,{size:`small`,style:{width:`100%`},value:a.event,options:hT.map(e=>({value:e})),onChange:e=>h(`event`,e)})]}),(0,l.jsxs)(`div`,{style:{width:90},children:[(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`Order`}),(0,l.jsx)(s.InputNumber,{size:`small`,style:{width:`100%`},value:a.order??10,onChange:e=>h(`order`,e??10)})]})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,l.jsx)(s.Switch,{size:`small`,checked:a.isActive!==!1,onChange:e=>h(`isActive`,e)}),(0,l.jsx)(mT,{style:{fontSize:13},children:`Active`})]}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:12},children:[`Condition (all must match the payload; empty = always run) `,p&&(0,l.jsx)(s.Tag,{color:`red`,children:`invalid JSON`})]}),(0,l.jsx)(s.Input.TextArea,{rows:2,value:d,className:`fg-mono-input`,style:{fontSize:12},onChange:e=>{f(e.target.value);try{h(`condition`,JSON.parse(e.target.value||`{}`)),m(!1)}catch{m(!0)}}})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginTop:14},children:[(0,l.jsx)(mT,{strong:!0,style:{fontSize:13},children:`Actions (run in order)`}),(0,l.jsx)(s.Button,{size:`small`,type:`dashed`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>h(`actions`,[...a.actions??[],{type:``,config:{}}]),children:`Add Action`})]}),(a.actions??[]).map((e,t)=>(0,l.jsx)(yT,{action:e,onChange:e=>h(`actions`,a.actions.map((n,r)=>r===t?e:n)),onRemove:()=>h(`actions`,a.actions.filter((e,n)=>n!==t))},t)),(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:8},children:[`Config supports `,(0,l.jsx)(`code`,{children:`{{field.path}}`}),`, `,(0,l.jsx)(`code`,{children:`{{now}}`}),`, `,(0,l.jsx)(`code`,{children:`{{__userId}}`}),`,`,` `,(0,l.jsx)(`code`,{children:`{{__userName}}`}),`, and `,(0,l.jsx)(`code`,{children:`{{hierarchy.<name>}}`}),` from a `,(0,l.jsx)(`code`,{children:`resolve`}),` action.`]})]})})}function xT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)(!0),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(null),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(0);(0,o.useEffect)(()=>{let e=!1;return n.qr(`workflows`).then(n=>{e||t(n)}).catch(t=>{e||f(t?.message||`Failed to load workflows`)}).finally(()=>{e||u(!1)}),()=>{e=!0}},[_]),(0,o.useEffect)(()=>{n.yr().then(e=>i(gx(e).map(({value:e,label:t})=>({value:e,label:t})))).catch(()=>i([]))},[]);let y=()=>{u(!0),f(``),v(e=>e+1)};async function b(e){try{await n.ii(`workflows`,e),s.message.success(`Workflow "${e.key}" saved`),m(null),y()}catch(e){s.message.error(e?.message||`Could not save workflow`)}}async function x(e){try{await n.sr(`workflows`,e),s.message.success(`Workflow "${e}" deleted`),y()}catch(e){s.message.error(e?.message||`Could not delete workflow`)}}async function S(e,t){let r={...e};delete r.id,delete r._id;try{await n.ii(`workflows`,{...r,isActive:t}),y()}catch(e){s.message.error(e?.message||`Could not update workflow`)}}let C=(0,o.useMemo)(()=>e.filter(e=>!h||e.module===h),[e,h]);return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.ApartmentOutlined,{}),title:`Workflows`,extra:(0,l.jsxs)(s.Space,{size:8,children:[(0,l.jsx)(s.Select,{size:`small`,style:{minWidth:160},allowClear:!0,placeholder:`Filter by module`,options:r,value:h||void 0,onChange:e=>g(e??``)}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:y,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>m({doc:null}),children:`New Workflow`})]}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsxs)(mT,{type:`secondary`,style:{fontSize:13},children:[`Event-driven behavior per module — reference ids, duplicate checks, snapshots, hierarchy fan-outs, board updates, notifications, cache — executed by the platform Workflow Engine on every create/update/delete.`,(0,l.jsx)(s.Tag,{style:{marginLeft:8},children:`before*`}),` actions can block the write; `,(0,l.jsx)(s.Tag,{children:`after*`}),` actions are best-effort.`]})]}),(0,l.jsxs)(Z,{styles:{body:{paddingTop:8}},children:[d&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:d,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:a,children:[(0,l.jsxs)(`div`,{style:{marginBottom:8},children:[(0,l.jsx)(s.Badge,{count:C.length,showZero:!0,color:`var(--color-brand)`}),` `,(0,l.jsx)(mT,{type:`secondary`,style:{fontSize:12},children:`workflows`})]}),(0,l.jsx)(s.Table,{rowKey:`key`,dataSource:C,columns:[{title:`Key`,dataIndex:`key`,key:`key`,render:e=>(0,l.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Module`,dataIndex:`module`,key:`module`,width:130,render:e=>(0,l.jsx)(s.Tag,{color:`geekblue`,children:e})},{title:`Event`,dataIndex:`event`,key:`event`,width:130,render:e=>(0,l.jsx)(s.Tag,{color:String(e).startsWith(`before`)?`purple`:`green`,children:e})},{title:`Actions`,key:`acts`,render:(e,t)=>(0,l.jsx)(s.Space,{size:4,wrap:!0,children:(t.actions??[]).map((e,t)=>(0,l.jsx)(s.Tag,{style:{margin:0},children:e.type},t))})},{title:`Order`,dataIndex:`order`,key:`order`,width:70,align:`center`},{title:`Active`,key:`active`,width:80,align:`center`,render:(e,t)=>(0,l.jsx)(s.Switch,{size:`small`,checked:t.isActive!==!1,onChange:e=>S(t,e)})},{title:``,key:`ops`,width:90,align:`right`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>m({doc:t})})}),(0,l.jsx)(s.Popconfirm,{title:`Delete workflow "${t.key}"?`,onConfirm:()=>x(t.key),children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,l.jsx)(s.Empty,{description:`No workflows configured.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]}),(0,l.jsx)(bT,{open:!!p,doc:p?.doc,moduleOptions:r,onClose:()=>m(null),onSave:b},p?p.doc?.key??`new`:`closed`)]})}var{Text:ST}=s.Typography,CT=e=>e?._id??e?.id,wT=`masters`;function TT(){return{tenantId:localStorage.getItem(`tenantId`)||``,businessId:localStorage.getItem(`businessId`)||``,businessUnitId:localStorage.getItem(`businessUnitId`)||``}}function ET(e){return e&&typeof e==`object`?e.$oid??e.oid??e.id??``:e??``}function DT(e,t){return t.map(t=>ET(e?.[t])).find(e=>e!=null&&e!==``)??``}function OT(e,t){return[[t.tenantId,[`tid`,`tenantId`]],[t.businessId,[`bid`,`businessId`]],[t.businessUnitId,[`buid`,`businessUnitId`]]].every(([t,n])=>{if(!t)return!0;let r=String(DT(e,n));return!r||r===String(t)})}function kT(e){return Array.isArray(e?.masterFeeds)?e.masterFeeds:[]}function AT(e){return e.reduce((e,t)=>Math.max(e,Number(t?.uniqueId)||0),0)+1}function jT(e){return Array.isArray(e?.taxHistory)?e.taxHistory:[]}function MT(e){let t=e?.taxValue;if(t!=null&&t!==``)return Number(t);let n=jT(e).at(-1),r=n?.taxValue??n?.value;return r!=null&&r!==``?Number(r):void 0}function NT(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(t)}function PT(e){let t=jT(e).at(-1);return t?.updatedAt??t?.timestamp??e?.updatedAt}function FT({open:e,record:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[c,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),h=(0,o.useRef)(null),g=!!t;(0,o.useEffect)(()=>{e&&queueMicrotask(()=>{a.resetFields(),a.setFieldsValue({name:t?.name??void 0,taxValue:MT(t)}),f(t?.name?[{label:t.name,value:t.name}]:[])})},[e,t,a]);function _(e){if(h.current&&clearTimeout(h.current),!e||e.trim().length<2){f([]);return}m(!0),h.current=setTimeout(()=>{n.Ar(e.trim()).then(f).catch(()=>f([])).finally(()=>m(!1))},350)}async function v(){let e=await a.validateFields(),r=Number(e.taxValue),o={name:e.name,taxValue:r,taxHistory:{taxValue:r}};u(!0);try{g?await n.pi(`locations`,CT(t),o):await n.Zn(`locations`,o),s.message.success(g?`Tax updated`:`Location and tax created`),i()}catch(e){s.message.error(e?.message||`Could not save location and tax`)}finally{u(!1)}}return(0,l.jsx)(s.Modal,{open:e,onCancel:r,onOk:v,confirmLoading:c,destroyOnHidden:!0,title:g?`Edit Tax — ${t?.name??``}`:`New Location`,children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`name`,label:`Location`,rules:[{required:!0,message:`Location is required`}],tooltip:g?`Location cannot be changed once created — only the tax is editable.`:`Search and pick from the location master.`,children:(0,l.jsx)(s.Select,{showSearch:!0,disabled:g,placeholder:`Type at least 2 characters to search…`,filterOption:!1,onSearch:_,notFoundContent:p?`Searching…`:null,options:d})}),(0,l.jsx)(s.Form.Item,{name:`taxValue`,label:`Tax`,rules:[{required:!0,message:`Tax is required`},{type:`number`,min:0,max:100,message:`Tax must be between 0 and 100`}],children:(0,l.jsx)(s.InputNumber,{style:{width:`100%`},min:0,max:100,step:.01,suffix:`%`,placeholder:`8.875`,autoFocus:g})})]})})}function IT({record:e}){let t=[...jT(e)].reverse();return t.length?(0,l.jsx)(s.Space,{direction:`vertical`,size:4,style:{padding:`4px 8px`},children:t.map((e,t)=>(0,l.jsxs)(s.Space,{size:10,children:[(0,l.jsxs)(s.Tag,{color:t===0?`green`:`default`,style:{margin:0},children:[e.taxValue??e.value,`%`]}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:12},children:NT(e.updatedAt??e.timestamp)}),t===0&&(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:12},children:`(current)`})]},t))}):(0,l.jsx)(s.Empty,{image:s.Empty.PRESENTED_IMAGE_SIMPLE,description:`No tax history yet`})}function LT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null);function p(){i(!0),n.Kr(`locations`).then(({items:e})=>t(e)).catch(e=>s.message.error(e?.message||`Could not load locations`)).finally(()=>i(!1))}(0,o.useEffect)(()=>{queueMicrotask(p)},[]);async function m(e){try{await n.or(`locations`,e),s.message.success(`Location deleted`),p()}catch(e){s.message.error(e?.message||`Could not delete location`)}}return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsx)(Z,{title:`${e.length} location${e.length===1?``:`s`}`,extra:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New location`})]}),children:(0,l.jsx)(s.Table,{rowKey:CT,columns:[{title:`Location`,dataIndex:`name`,key:`name`},{title:`Tax`,key:`taxValue`,width:100,render:(e,t)=>{let n=MT(t);return Number.isFinite(n)?(0,l.jsxs)(s.Tag,{color:`blue`,children:[n,`%`]}):`—`}},{title:`Tax updated`,key:`taxUpdatedAt`,render:(e,t)=>NT(PT(t))},{title:`Created`,key:`createdAt`,responsive:[`lg`],render:(e,t)=>NT(t?.createdAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit tax`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this location?`,onConfirm:()=>m(CT(t)),children:(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}],dataSource:e,loading:r,size:`small`,pagination:!1,className:`fg-table`,expandable:{expandedRowRender:e=>(0,l.jsx)(IT,{record:e}),rowExpandable:e=>jT(e).length>0},locale:{emptyText:`No locations yet. Click "New location" to add one.`}})}),(0,l.jsx)(FT,{open:a,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}function RT({open:e,record:t,onClose:r,onSaved:i}){let[a]=s.Form.useForm(),[u,d]=(0,o.useState)(!1),f=!!t,p=s.Form.useWatch(`masterName`,a),m=s.Form.useWatch(`masterFeeds`,a)??[],h=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(p??t?.masterName??``).trim().toLowerCase()),g=m.map(e=>({label:String(e?.name??``).trim()||`Status ${e?.uniqueId??``}`,value:Number(e?.uniqueId)})).filter(e=>Number.isInteger(e.value)&&e.value>0);function _(e,t){if(!t){a.setFieldValue([`masterFeeds`,e,`isInitialStatus`],!1);return}(a.getFieldValue(`masterFeeds`)??[]).forEach((t,n)=>{a.setFieldValue([`masterFeeds`,n,`isInitialStatus`],n===e)})}function v(e,t){a.setFieldValue([`masterFeeds`,e,`isTerminalStatus`],t),t&&a.setFieldValue([`masterFeeds`,e,`allowedNextStatusIds`],[])}(0,o.useEffect)(()=>{e&&queueMicrotask(()=>{a.resetFields();let e=t?.masterName??``,n=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(e).trim().toLowerCase()),r=kT(t),i=r.length?r.map(e=>({...e})):[{uniqueId:1,name:``,type:`neutral`,status:!0,isdeleted:!1}];if(n&&!i.some(e=>e?.status!==!1&&e?.isdeleted!==!0&&e?.isInitialStatus===!0)){let e=i.findIndex(e=>e?.status!==!1&&e?.isdeleted!==!0);e>=0&&(i=i.map((t,n)=>({...t,isInitialStatus:n===e,isTerminalStatus:t?.isTerminalStatus===!0,allowedNextStatusIds:Array.isArray(t?.allowedNextStatusIds)?t.allowedNextStatusIds:[]})))}a.setFieldsValue({masterName:e,schemaVersion:t?.schemaVersion??1,masterFeeds:i})})},[e,t,a]),(0,o.useEffect)(()=>{!e||!h||(Number(a.getFieldValue(`schemaVersion`))||1)<2&&a.setFieldValue(`schemaVersion`,2)},[e,h,a]);async function y(){let e=await a.validateFields(),r=TT(),o=[`clientsubmissionstatus`,`clientsubmission`,`clientsubmissions`].includes(String(e.masterName??``).trim().toLowerCase()),c=(e.masterFeeds??[]).map((e,t)=>{let n=Number(e.uniqueId)||t+1,r=o&&e.isTerminalStatus===!0,i=o&&!r?[...new Set((e.allowedNextStatusIds??[]).map(Number).filter(e=>Number.isInteger(e)&&e>0&&e!==n))]:[];return{uniqueId:n,name:String(e.name??``).trim(),type:String(e.type??``).trim(),status:e.status!==!1,...o?{isInitialStatus:e.isInitialStatus===!0,isTerminalStatus:r,allowedNextStatusIds:i}:{},isdeleted:e.isdeleted===!0}}).filter(e=>e.name);if(o){let e=c.filter(e=>e.status&&!e.isdeleted&&e.isInitialStatus);if(e.length===0){let t=c.findIndex(e=>e.status&&!e.isdeleted);t>=0&&(c[t]={...c[t],isInitialStatus:!0},e=[c[t]],a.setFieldValue([`masterFeeds`,t,`isInitialStatus`],!0))}if(e.length!==1){s.message.error(`Client Submission Status must have exactly one active Initial Status.`);return}}let l={...r,tid:r.tenantId,bid:r.businessId,buid:r.businessUnitId,schemaVersion:o?Math.max(2,Number(e.schemaVersion)||2):Number(e.schemaVersion)||1,masterName:e.masterName.trim(),masterFeeds:c};d(!0);try{f?await n.pi(wT,CT(t),l):await n.Zn(wT,l),s.message.success(f?`Master value updated`:`Master value created`),i()}catch(e){s.message.error(e?.message||`Could not save master value`)}finally{d(!1)}}return(0,l.jsx)(s.Modal,{open:e,onCancel:r,onOk:y,confirmLoading:u,destroyOnHidden:!0,title:f?`Edit Master Feed`:`New Master Feed`,width:1040,children:(0,l.jsxs)(s.Form,{form:a,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`masterName`,label:`Master Name`,rules:[{required:!0,message:`Master name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`blacklistType`,autoFocus:!f,disabled:f})}),(0,l.jsx)(s.Form.Item,{name:`schemaVersion`,label:`Schema Version`,children:(0,l.jsx)(s.InputNumber,{min:1,style:{width:`100%`}})}),(0,l.jsx)(s.Form.List,{name:`masterFeeds`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(s.Space,{direction:`vertical`,style:{width:`100%`},size:10,children:[e.map(({key:e,name:t})=>(0,l.jsxs)(s.Space,{align:`baseline`,wrap:!0,children:[(0,l.jsx)(s.Form.Item,{name:[t,`uniqueId`],label:`ID`,rules:[{required:!0,message:`ID required`}],children:(0,l.jsx)(s.InputNumber,{min:1,style:{width:90}})}),(0,l.jsx)(s.Form.Item,{name:[t,`name`],label:`Name`,rules:[{required:!0,message:`Name required`}],children:(0,l.jsx)(s.Input,{placeholder:`Dropdown label`,style:{width:280}})}),(0,l.jsx)(s.Form.Item,{name:[t,`type`],label:`Type`,children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`Select type`,style:{width:120},options:[{label:`Positive`,value:`positive`},{label:`Neutral`,value:`neutral`},{label:`Negative`,value:`negative`}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`status`],label:`Status`,initialValue:!0,children:(0,l.jsx)(s.Select,{style:{width:110},options:[{label:`Active`,value:!0},{label:`Inactive`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`isdeleted`],label:`Deleted`,initialValue:!1,children:(0,l.jsx)(s.Select,{style:{width:110},options:[{label:`No`,value:!1},{label:`Yes`,value:!0}]})}),h&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Form.Item,{name:[t,`isInitialStatus`],label:`Initial`,initialValue:!1,tooltip:`The initial status is the only option shown before a candidate has a client submission status. Only one active initial status is allowed.`,children:(0,l.jsx)(s.Select,{style:{width:100},onChange:e=>_(t,e===!0),options:[{label:`Yes`,value:!0},{label:`No`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{name:[t,`isTerminalStatus`],label:`End Status`,initialValue:!1,tooltip:`End Status stops the configured client submission flow. Once reached, Change Status is hidden and no next statuses are allowed.`,children:(0,l.jsx)(s.Select,{style:{width:105},onChange:e=>v(t,e===!0),options:[{label:`Yes`,value:!0},{label:`No`,value:!1}]})}),(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:(e,n)=>e?.masterFeeds?.[t]?.isTerminalStatus!==n?.masterFeeds?.[t]?.isTerminalStatus||e?.masterFeeds?.[t]?.uniqueId!==n?.masterFeeds?.[t]?.uniqueId||e?.masterFeeds!==n?.masterFeeds,children:({getFieldValue:e})=>{let n=e([`masterFeeds`,t,`isTerminalStatus`])===!0,r=Number(e([`masterFeeds`,t,`uniqueId`]));return(0,l.jsx)(s.Form.Item,{name:[t,`allowedNextStatusIds`],label:`Allowed Next Statuses`,tooltip:n?`End Status cannot move to another status.`:`Only these statuses will appear after the current status is saved.`,children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,disabled:n,placeholder:n?`End status`:`Select next statuses`,style:{minWidth:280},options:g.filter(e=>e.value!==r)})})}})]}),(0,l.jsx)(s.Tooltip,{title:`Remove row`,children:(0,l.jsx)(s.Button,{type:`text`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),onClick:()=>n(t)})})]},e)),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>t({uniqueId:AT(a.getFieldValue(`masterFeeds`)??[]),name:``,type:`neutral`,status:!0,isdeleted:!1,...h?{isInitialStatus:!1,isTerminalStatus:!1,allowedNextStatusIds:[]}:{}}),children:`Add feed value`})]})})]})})}function zT(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null),[p,m]=(0,o.useState)(``);function h(){let e=TT();i(!0),n.Kr(wT,{limit:500}).then(({items:n})=>{let r=n.filter(t=>OT(t,e));t(r)}).catch(e=>s.message.error(e?.message||`Could not load master values`)).finally(()=>i(!1))}(0,o.useEffect)(()=>{queueMicrotask(h)},[]);async function g(e){try{await n.or(wT,e),s.message.success(`Master value deleted`),h()}catch(e){s.message.error(e?.message||`Could not delete master value`)}}let _=p?e.filter(e=>String(e?.masterName??``).toLowerCase()===p.toLowerCase()):e,v=[...new Set(e.map(e=>e?.masterName).filter(Boolean))].sort((e,t)=>String(e).localeCompare(String(t))).map(e=>({label:e,value:e}));return(0,l.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,l.jsx)(Z,{title:`${_.length} master${_.length===1?``:`s`}`,extra:(0,l.jsxs)(s.Space,{wrap:!0,children:[(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,placeholder:`Filter master name`,value:p||void 0,options:v,onChange:e=>m(e??``),style:{minWidth:220}}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:h,children:`Reload`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New master`})]}),children:(0,l.jsx)(s.Table,{rowKey:CT,columns:[{title:`Master Name`,dataIndex:`masterName`,key:`masterName`,width:180},{title:`Feed Values`,key:`masterFeeds`,render:(e,t)=>(0,l.jsx)(s.Space,{wrap:!0,children:kT(t).filter(e=>!e.isdeleted).map(e=>(0,l.jsx)(s.Tag,{color:e.status===!1?`default`:`blue`,children:e.name},e.uniqueId??e.name))})},{title:`Count`,key:`count`,width:90,render:(e,t)=>kT(t).filter(e=>!e.isdeleted).length},{title:`Updated`,key:`updatedAt`,responsive:[`lg`],render:(e,t)=>NT(t?.updatedAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,l.jsx)(s.Popconfirm,{title:`Delete this master?`,onConfirm:()=>g(CT(t)),children:(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{})})})})]})}],dataSource:_,loading:r,size:`small`,pagination:{pageSize:10,showSizeChanger:!0},className:`fg-table`,locale:{emptyText:`No masters yet. Click "New master" to add one.`}})}),(0,l.jsx)(RT,{open:a,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),h()}})]})}function BT(){return(0,l.jsxs)(`div`,{className:`fg-section`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`Master Collections`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:13},children:`Create, update, and delete master documents, then customize multiple dropdown values inside masterFeeds. Records are saved with the current tenant, business, business unit, and master name.`})]}),(0,l.jsx)(zT,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DatabaseOutlined,{}),title:`Location Tax Master`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(ST,{type:`secondary`,style:{fontSize:13},children:`Pick a location from the master list and set its tax. Once added, only the tax can be changed — every change is kept in a timeline with its timestamp. Expand a row to see the full tax history.`})]}),(0,l.jsx)(LT,{})]})}var{Text:VT,Title:HT}=s.Typography;function UT(){let[e]=s.Form.useForm(),[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(null),[p,m]=(0,o.useState)(!1);async function h(){i(!0);try{n(await zb())}catch(e){s.message.error(e.message||`Unable to load menus`)}finally{i(!1)}}(0,o.useEffect)(()=>{h()},[]);let g=(0,o.useMemo)(()=>t.filter(e=>!d||e.menu_id!==d.menu_id).map(e=>({label:e.menu_name,value:e.menu_id})),[d,t]);function _(){f(null),e.resetFields(),e.setFieldsValue({menu_type:`MENU`,display_order:t.length+1,status:`ACTIVE`}),m(!0)}function v(t){f(t),e.setFieldsValue(t),m(!0)}async function y(e){u(!0);try{d?await Vb(d.menu_id,e):await Bb(e),s.message.success(d?`Menu updated`:`Menu created`),m(!1),await h()}catch(e){s.message.error(e.message||`Unable to save menu`)}finally{u(!1)}}async function b(e){try{await Hb(e),s.message.success(`Menu deleted`),await h()}catch(e){s.message.error(e.message||`Unable to delete menu`)}}return(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(HT,{level:4,children:`Menus`}),(0,l.jsx)(VT,{type:`secondary`,children:`Manage records in the MongoDB menus collection.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:_,children:`Add Menu`})]}),(0,l.jsx)(s.Table,{rowKey:`menu_id`,loading:r,columns:[{title:`Name`,dataIndex:`menu_name`},{title:`Key`,dataIndex:`menu_key`,render:e=>(0,l.jsx)(s.Tag,{children:e})},{title:`Route / API`,dataIndex:`api_url`},{title:`Type`,dataIndex:`menu_type`,width:110},{title:`Order`,dataIndex:`display_order`,width:80},{title:`Status`,dataIndex:`status`,width:100,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Edit menu`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>v(t)}),(0,l.jsx)(s.Popconfirm,{title:`Delete menu?`,onConfirm:()=>b(t.menu_id),children:(0,l.jsx)(s.Button,{"aria-label":`Delete menu`,danger:!0,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{})})})]})}],dataSource:t,size:`small`,pagination:{pageSize:10}}),(0,l.jsx)(s.Modal,{title:d?`Edit Menu`:`Add Menu`,open:p,onCancel:()=>m(!1),onOk:()=>e.submit(),confirmLoading:a,destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,onFinish:y,children:[(0,l.jsx)(s.Form.Item,{name:`menu_name`,label:`Menu name`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{})}),(0,l.jsx)(s.Form.Item,{name:`menu_key`,label:`Menu key`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{placeholder:`jobs`})}),(0,l.jsx)(s.Form.Item,{name:`api_url`,label:`Route / API URL`,children:(0,l.jsx)(s.Input,{placeholder:`/jobs`})}),(0,l.jsx)(s.Form.Item,{name:`component_name`,label:`Component`,children:(0,l.jsx)(s.Input,{placeholder:`Jobs`})}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{name:`menu_type`,label:`Type`,children:(0,l.jsx)(s.Select,{options:[{value:`MENU`},{value:`FOOTER`},{value:`CHILD`}]})}),(0,l.jsx)(s.Form.Item,{name:`parent_menu_id`,label:`Parent`,children:(0,l.jsx)(s.Select,{allowClear:!0,options:g})})]}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{name:`display_order`,label:`Display order`,children:(0,l.jsx)(s.InputNumber,{min:0})}),(0,l.jsx)(s.Form.Item,{name:`status`,label:`Status`,children:(0,l.jsx)(s.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]}),(0,l.jsx)(s.Form.Item,{name:`icon`,label:`Icon`,children:(0,l.jsx)(s.Input,{placeholder:`AppstoreOutlined`})})]})})]})}var WT=`/admin/global`;function GT(e){let t=e?.data??e;return t&&typeof t==`object`&&`data`in t&&`total`in t?{items:t.data??[],total:t.total??0}:{items:Array.isArray(t)?t:[],total:Array.isArray(t)?t.length:0}}function KT(e={}){let t=new URLSearchParams;Object.entries(e).forEach(([e,n])=>{n!=null&&n!==``&&t.append(e,String(n))});let n=t.toString();return n?`?${n}`:``}function qT(e,t){let n=String(e||``).trim().toLowerCase();if(!n)throw Error(`regionPath: a region key is required`);return`/admin/regions/${encodeURIComponent(n)}${t}`}async function JT({includeInactive:e=!1,signal:n}={}){let r=await t.o(t.x,`${WT}/regions${KT({includeInactive:e||void 0})}`,{signal:n}),i=r?.data??r;return Array.isArray(i)?i:[]}async function YT(e,{allowEmpty:n=!1,signal:r}={}){return t.o(t.x,`${WT}/regions${KT({allowEmpty:n||void 0})}`,{method:`POST`,body:JSON.stringify(e),signal:r})}async function XT(e,{signal:n}={}){return t.o(t.x,`${WT}/regions/${encodeURIComponent(e)}`,{method:`DELETE`,signal:n})}async function ZT({signal:e}={}){let n=await t.o(t.x,`${WT}/platform-access`,{signal:e}),r=n?.data??n;return Array.isArray(r)?r:[]}async function QT(e,{signal:n}={}){return t.o(t.x,`${WT}/platform-access`,{method:`POST`,body:JSON.stringify(e),signal:n})}async function $T(e,{signal:n}={}){return t.o(t.x,`${WT}/platform-access/${encodeURIComponent(e)}`,{method:`DELETE`,signal:n})}async function eE({signal:e}={}){try{return await JT({signal:e}),!0}catch(e){if(e?.name===`AbortError`)throw e;return!1}}async function tE({search:e,regionKey:n,limit:r=25,offset:i=0,signal:a}={}){return GT(await t.o(t.x,`${WT}/users${KT({search:e,regionKey:n,limit:r,offset:i})}`,{signal:a}))}async function nE({regionKey:e,action:n,limit:r=50,offset:i=0,signal:a}={}){return GT(await t.o(t.x,`${WT}/audit${KT({regionKey:e,action:n,limit:r,offset:i})}`,{signal:a}))}async function rE(e,{signal:n}={}){let r=await t.o(t.x,qT(e,`/detail-defaults`),{signal:n});return r?.data??r??{}}async function iE(e,n,{signal:r}={}){return t.o(t.x,qT(e,`/detail-defaults`),{method:`POST`,body:JSON.stringify(n),signal:r})}async function aE(e,{signal:n}={}){return GT(await t.o(t.x,qT(e,`/users`),{signal:n}))}async function oE(e,{signal:n}={}){return GT(await t.o(t.x,qT(e,`/roles`),{signal:n}))}var sE=[{value:`regions.read`,label:`Read regions & config`},{value:`config.write`,label:`Write regional config`},{value:`users.read`,label:`Read users across regions`},{value:`users.write`,label:`Move users / memberships`},{value:`access.admin`,label:`Grant & revoke platform access`}];async function cE({signal:e}={}){let n=await t.o(t.x,`${WT}/defaults`,{signal:e}),r=n?.data??n??{};return{regions:r.regions??[],common:r.common??{}}}async function lE(e,{regionKeys:n,signal:r}={}){return t.o(t.x,`${WT}/defaults`,{method:`PUT`,body:JSON.stringify({values:e,regionKeys:n??[]}),signal:r})}var uE=[{name:`phoneCountryCode`,label:`Phone country code`,placeholder:`+1`,emptyMeans:`Print no dial code at all.`},{name:`phoneFormat`,label:`Phone format`,placeholder:`3-3-4`},{name:`dateFormat`,label:`Date format`,placeholder:`DD MMM YYYY`,help:`Calendar dates only — no time, no zone.`},{name:`dateTimeFormat`,label:`Date & time format`,placeholder:`DD MMM YYYY, hh:mm A`},{name:`timeZone`,label:`Time zone`,placeholder:`Asia/Kolkata`,emptyMeans:`Each viewer sees their own browser's zone.`},{name:`booleanTrueLabel`,label:`Yes label`,placeholder:`Yes`},{name:`booleanFalseLabel`,label:`No label`,placeholder:`No`},{name:`emptyPlaceholder`,label:`Empty placeholder`,placeholder:`-`},{name:`separator`,label:`Separator`,placeholder:` · `},{name:`s3BaseUrl`,label:`S3 base URL`,placeholder:`https://…`},{name:`region`,label:`Region profile`,placeholder:`US / UK / IND`,help:`Key into FormGroup.regionRules. Usually set per region, not globally.`}];async function dE({serviceKey:e=`pyOps`,signal:n}={}){let r=await t.o(t.x,`${WT}/ai-services${KT({serviceKey:e})}`,{signal:n}),i=r?.data??r??{};return{serviceKey:i.serviceKey??e,regions:i.regions??[],missingRegions:i.missingRegions??[],consistent:!!i.consistent}}async function fE(e,{regionKeys:n,signal:r}={}){return t.o(t.x,`${WT}/ai-services`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...e,regionKeys:n??[]}),signal:r})}var{Text:pE}=s.Typography;function mE({regions:e}){let[t,n]=(0,o.useState)(!0),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)([]),[d,f]=(0,o.useState)({}),[p,m]=(0,o.useState)({}),[h,g]=(0,o.useState)([]),_=(0,o.useRef)(null),v=(0,o.useCallback)(async()=>{_.current?.abort();let e=new AbortController;_.current=e,n(!0);try{let{regions:t,common:n}=await cE({signal:e.signal});u(t),f(n),m({})}catch(e){e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load defaults`)}finally{n(!1)}},[]);(0,o.useEffect)(()=>(queueMicrotask(v),()=>_.current?.abort()),[v]);let y=(0,o.useMemo)(()=>(a.length?a:e).map(e=>e.regionKey||e.key),[a,e]),b=h.length?h:y,x=Object.keys(p),S=async()=>{if(!x.length){s.message.info(`Nothing changed`);return}i(!0);try{await lE(p,{regionKeys:h}),s.message.success(`Updated ${x.length} setting${x.length===1?``:`s`} across ${b.length} region${b.length===1?``:`s`}`),await v()}catch(e){s.message.error(e?.message||`Could not save defaults`)}finally{i(!1)}};if(t)return(0,l.jsx)(`div`,{style:{padding:48,textAlign:`center`},children:(0,l.jsx)(s.Spin,{})});if(!y.length)return(0,l.jsx)(s.Empty,{description:`No active regions. Register regions before setting defaults across them.`});let C=[{title:`Setting`,dataIndex:`label`,key:`label`,width:210,render:(e,t)=>(0,l.jsxs)(s.Space,{direction:`vertical`,size:0,children:[(0,l.jsx)(pE,{strong:!0,children:e}),(0,l.jsx)(pE,{type:`secondary`,style:{fontSize:11},children:t.name})]})},...a.map(e=>({title:e.label?.trim()||e.regionKey,key:e.regionKey,width:150,render:(t,n)=>{if(!Object.prototype.hasOwnProperty.call(e.values||{},n.name))return(0,l.jsx)(s.Tooltip,{title:`Never set for this region — it falls back to the built-in default.`,children:(0,l.jsx)(pE,{type:`secondary`,style:{fontSize:12},children:`not set`})});let r=e.values[n.name];return r===``?(0,l.jsx)(s.Tooltip,{title:n.emptyMeans||`Explicitly set to empty.`,children:(0,l.jsx)(s.Tag,{color:`blue`,children:`empty`})}):(0,l.jsx)(pE,{style:{fontSize:12},children:String(r)})}})),{title:`Set for all`,key:`edit`,width:220,render:(e,t)=>{let n=Object.prototype.hasOwnProperty.call(p,t.name);return(0,l.jsxs)(s.Space,{direction:`vertical`,size:2,style:{width:`100%`},children:[(0,l.jsx)(s.Input,{size:`small`,placeholder:t.placeholder,value:n?p[t.name]:void 0,status:n?`warning`:void 0,onChange:e=>m(n=>({...n,[t.name]:e.target.value}))}),n&&(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,style:{padding:0,height:18,fontSize:11},onClick:()=>m(e=>{let n={...e};return delete n[t.name],n}),children:`cancel`}),p[t.name]===``&&t.emptyMeans&&(0,l.jsx)(s.Tooltip,{title:t.emptyMeans,children:(0,l.jsx)(s.Tag,{color:`blue`,style:{fontSize:10,margin:0},children:`will save as empty`})})]})]})}}],w=uE.map(e=>({...e,key:e.name})),T=w.filter(e=>!Object.prototype.hasOwnProperty.call(d,e.name)).length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,icon:(0,l.jsx)(c.GlobalOutlined,{}),style:{marginBottom:12},message:`These settings are written into every region you select`,description:(0,l.jsxs)(l.Fragment,{children:[`They drive how dates, times, phone numbers and empty values render — in forms, detail views and cards alike. Each region keeps its own copy, so you can still override one afterwards.`,T>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`br`,{}),(0,l.jsx)(c.WarningOutlined,{style:{color:`#d46b08`}}),` `,(0,l.jsx)(pE,{strong:!0,children:T}),` of `,w.length,` settings are not currently identical across regions — the columns below show what each one holds.`]})]})}),(0,l.jsxs)(s.Space,{style:{marginBottom:12},wrap:!0,children:[(0,l.jsx)(pE,{strong:!0,children:`Apply to:`}),(0,l.jsx)(s.Checkbox,{checked:h.length===0,onChange:e=>g(e.target.checked?[]:y),children:`All regions`}),h.length>0&&(0,l.jsx)(s.Checkbox.Group,{value:h,onChange:g,options:a.map(e=>({label:e.label?.trim()||e.regionKey,value:e.regionKey}))}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:v,children:`Refresh`}),(0,l.jsx)(s.Button,{type:`primary`,loading:r,disabled:!x.length,onClick:S,children:x.length?`Save ${x.length} change${x.length===1?``:`s`} to ${b.length} region${b.length===1?``:`s`}`:`Save`})]}),(0,l.jsx)(s.Table,{size:`small`,rowKey:`name`,columns:C,dataSource:w,pagination:!1,scroll:{x:`max-content`}}),(0,l.jsx)(pE,{type:`secondary`,style:{display:`block`,marginTop:12,fontSize:12},children:`Only the rows you edit are sent. Everything else is left exactly as it is, per region.`})]})}var{Text:hE,Paragraph:gE}=s.Typography;function _E({regions:e=[]}){let[t]=s.Form.useForm(),[n,r]=(0,o.useState)(!0),[i,a]=(0,o.useState)(!1),[c,u]=(0,o.useState)([]),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!0),[h,g]=(0,o.useState)(``),[_]=(0,o.useState)(`pyOps`),v=(0,o.useRef)(null),y=(0,o.useCallback)(async()=>{v.current?.abort();let e=new AbortController;v.current=e,r(!0),g(``);try{let n=await dE({serviceKey:_,signal:e.signal});u(n.regions),f(n.missingRegions),m(n.consistent);let r=n.regions.find(e=>e.exists);t.setFieldsValue({serviceKey:n.serviceKey,baseUrl:r?.baseUrl??``,authHeader:r?.authHeader??``,enabled:!r||r.enabled})}catch(e){e?.name!==`AbortError`&&g(e?.message||`Failed to load AI services`)}finally{r(!1)}},[t,_]);(0,o.useEffect)(()=>(queueMicrotask(y),()=>v.current?.abort()),[y]);async function b(){let e;try{e=await t.validateFields()}catch{return}a(!0);try{let n={serviceKey:e.serviceKey,baseUrl:e.baseUrl,authHeader:e.authHeader??``,enabled:e.enabled!==!1};e.authValue&&(n.authValue=e.authValue);let r=await fE(n,{regionKeys:[]}),i=r?.data?.regions??r?.regions??[];s.message.success(`Applied to ${i.length||`all`} region${i.length===1?``:`s`}`),t.setFieldsValue({authValue:``}),await y()}catch(e){s.message.error(e?.message||`Could not apply`)}finally{a(!1)}}return(0,l.jsxs)(s.Spin,{spinning:n,children:[h&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:h,style:{marginBottom:12}}),!n&&d.length>0&&(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:12},message:`${d.length} region${d.length===1?``:`s`} cannot use AI actions`,description:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(gE,{style:{marginBottom:6},children:[(0,l.jsx)(`b`,{children:d.join(`, `)}),` `,d.length===1?`has`:`have`,` no`,` `,(0,l.jsx)(`code`,{children:_}),` registration, so every AI action there fails with “AI service is not configured for this tenant”.`]}),(0,l.jsx)(hE,{type:`secondary`,children:`Apply the settings below to all regions to fix this.`})]})}),!n&&d.length===0&&!p&&(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Regions disagree`,description:`Every region has the service, but not with the same base URL or enabled state.`}),(0,l.jsx)(s.Card,{size:`small`,title:`Apply ${_} to every region`,style:{marginBottom:16},children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,disabled:i,children:[(0,l.jsx)(s.Form.Item,{name:`serviceKey`,label:`Service key`,rules:[{required:!0}],children:(0,l.jsx)(s.Input,{disabled:!0})}),(0,l.jsx)(s.Form.Item,{name:`baseUrl`,label:`Base URL`,rules:[{required:!0,message:`Base URL is required`}],extra:(0,l.jsxs)(l.Fragment,{children:[`The action's endpoint path is appended to this — e.g.`,` `,(0,l.jsx)(`code`,{children:`/v1/parse`}),`. This URL is called by the `,(0,l.jsx)(`b`,{children:`backend`}),`, not the browser, so it must be reachable `,(0,l.jsx)(`b`,{children:`from the API server`}),`. A public URL works only if a reverse-proxy rule forwards it to the Python service`,(0,l.jsx)(`b`,{children:` with the path prefix stripped`}),`; an internal address (`,(0,l.jsx)(`code`,{children:`host:7020`}),`) needs no proxy rule at all.`]}),children:(0,l.jsx)(s.Input,{placeholder:`https://zinnext.com/pyOps`})}),(0,l.jsx)(s.Form.Item,{name:`authHeader`,label:`Auth header`,extra:`Optional, e.g. Authorization or x-api-key.`,children:(0,l.jsx)(s.Input,{placeholder:`x-api-key`})}),(0,l.jsx)(s.Form.Item,{name:`authValue`,label:`Credential`,extra:`Leave blank to keep the stored credential unchanged. It is never displayed.`,children:(0,l.jsx)(s.Input.Password,{placeholder:`unchanged`,autoComplete:`new-password`})}),(0,l.jsx)(s.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})}),(0,l.jsx)(s.Button,{type:`primary`,loading:i,onClick:b,children:`Apply to all regions`})]})}),(0,l.jsx)(s.Table,{size:`small`,rowKey:`regionKey`,columns:[{title:`Region`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(hE,{strong:!0,children:e||t.regionKey}),(0,l.jsx)(s.Tag,{children:t.regionKey})]})},{title:`Status`,key:`status`,width:150,render:(e,t)=>t.exists?(0,l.jsx)(s.Tag,{color:t.enabled?`green`:`orange`,children:t.enabled?`Configured`:`Disabled`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Not configured`})},{title:`Base URL`,dataIndex:`baseUrl`,key:`baseUrl`,render:e=>e?(0,l.jsx)(`code`,{children:e}):(0,l.jsx)(hE,{type:`secondary`,children:`—`})},{title:`Credential`,key:`auth`,width:120,render:(e,t)=>t.hasAuthValue?(0,l.jsx)(s.Tag,{color:`blue`,children:`Stored`}):(0,l.jsx)(hE,{type:`secondary`,children:`None`})}],dataSource:c,pagination:!1,locale:{emptyText:e.length?`No regions returned`:`No regions configured`}})]})}var{Text:vE,Title:yE}=s.Typography;function bE(){let[e,t]=(0,o.useState)(`regions`),[n,r]=(0,o.useState)([]),[i,a]=(0,o.useState)(!0),[u,d]=(0,o.useState)(null),f=(0,o.useRef)(null),p=(0,o.useCallback)(()=>{f.current?.abort();let e=new AbortController;return f.current=e,e.signal},[]),m=(0,o.useCallback)(async()=>{a(!0),d(null);try{let e=await JT({includeInactive:!0,signal:p()});r(e)}catch(e){if(e?.name===`AbortError`)return;d(e?.message||`Could not load regions`)}finally{a(!1)}},[p]);return(0,o.useEffect)(()=>(queueMicrotask(m),()=>f.current?.abort()),[m]),(0,l.jsxs)(`div`,{style:{padding:`4px 0`},children:[(0,l.jsxs)(s.Space,{align:`start`,style:{width:`100%`,justifyContent:`space-between`,marginBottom:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(yE,{level:4,style:{margin:0},children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Platform`]}),(0,l.jsx)(vE,{type:`secondary`,children:`Cross-region administration. Every action here is authorised server-side and recorded in the audit trail.`})]}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:m,children:`Refresh`})]}),u&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,style:{marginBottom:12},message:`Could not load platform data`,description:(0,l.jsxs)(l.Fragment,{children:[u,(0,l.jsx)(`br`,{}),(0,l.jsx)(vE,{type:`secondary`,children:`If this reads as a permission failure, your platform access may have been revoked, or your session may predate it — sign out and back in, then try again.`})]})}),(0,l.jsx)(s.Tabs,{activeKey:e,onChange:e=>{f.current?.abort(),t(e)},items:[{key:`regions`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.GlobalOutlined,{}),` Regions`]}),children:(0,l.jsx)(xE,{regions:n,loading:i,onChanged:m})},{key:`defaults`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SettingOutlined,{}),` Global Defaults`]}),children:(0,l.jsx)(mE,{regions:n})},{key:`ai-services`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApiOutlined,{}),` AI Services`]}),children:(0,l.jsx)(_E,{regions:n})},{key:`users`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.TeamOutlined,{}),` All Users`]}),children:(0,l.jsx)(TE,{regions:n})},{key:`access`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.KeyOutlined,{}),` Access`]}),children:(0,l.jsx)(EE,{})},{key:`audit`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AuditOutlined,{}),` Audit`]}),children:(0,l.jsx)(DE,{regions:n})}]})]})}function xE({regions:e,loading:t,onChanged:n}){let[r,i]=(0,o.useState)(null),[a,u]=(0,o.useState)(null);return t?(0,l.jsx)(`div`,{style:{padding:48,textAlign:`center`},children:(0,l.jsx)(s.Spin,{})}):e.length?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Space,{style:{marginBottom:16},children:(0,l.jsx)(s.Button,{type:`primary`,onClick:()=>i({}),children:`Register region`})}),(0,l.jsx)(s.Row,{gutter:[16,16],children:e.map(e=>(0,l.jsx)(s.Col,{xs:24,md:12,xl:8,children:(0,l.jsx)(s.Card,{size:`small`,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.GlobalOutlined,{}),(0,l.jsx)(`span`,{children:e.label?.trim()||e.key}),e.isHome&&(0,l.jsx)(s.Tag,{color:`blue`,children:`Your region`}),!e.isActive&&(0,l.jsx)(s.Tag,{children:`Inactive`})]}),extra:(0,l.jsx)(s.Tag,{color:`default`,children:e.key}),actions:[(0,l.jsx)(s.Button,{type:`link`,onClick:()=>i(e),children:`Edit`},`edit`),(0,l.jsx)(s.Button,{type:`link`,icon:(0,l.jsx)(c.SettingOutlined,{}),onClick:()=>u(e),children:`Display defaults`},`defaults`)],children:(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,style:{width:`100%`},children:[(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Users`})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{strong:!0,children:e.userCount??`—`})})]}),(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Region profile`})}),(0,l.jsx)(s.Col,{span:12,children:e.regionProfile?(0,l.jsx)(s.Tag,{color:`geekblue`,children:e.regionProfile}):(0,l.jsx)(s.Tooltip,{title:`No per-region rule overrides apply (FormGroup.regionRules is not used for this region).`,children:(0,l.jsx)(vE,{type:`secondary`,children:`none`})})})]}),(0,l.jsxs)(s.Row,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(vE,{type:`secondary`,children:`Display defaults`})}),(0,l.jsx)(s.Col,{span:12,children:e.hasDisplayDefaults?(0,l.jsx)(s.Badge,{status:`success`,text:`configured`}):(0,l.jsx)(s.Tooltip,{title:`This region has no display-defaults document, so it falls back to the built-in formats.`,children:(0,l.jsx)(s.Badge,{status:`warning`,text:`not set`})})})]}),(0,l.jsx)(vE,{type:`secondary`,style:{fontSize:11,wordBreak:`break-all`},children:e.tenantId})]})})},e.key))}),(0,l.jsx)(SE,{region:r,onClose:()=>i(null),onSaved:n}),(0,l.jsx)(wE,{region:a,onClose:()=>u(null)})]}):(0,l.jsxs)(s.Empty,{description:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{children:`No regions registered yet.`}),(0,l.jsx)(vE,{type:`secondary`,children:`A region binds a name to one tenant / business / business-unit triple. Until one exists, nothing can be administered across regions.`})]}),children:[(0,l.jsx)(s.Button,{type:`primary`,onClick:()=>i({}),children:`Register the first region`}),(0,l.jsx)(SE,{region:r,onClose:()=>i(null),onSaved:n})]})}function SE({region:e,onClose:t,onSaved:n}){let[r]=s.Form.useForm(),[i,a]=(0,o.useState)(!1),c=e&&!e.key;if((0,o.useEffect)(()=>{e&&queueMicrotask(()=>r.setFieldsValue({isActive:!0,order:0,...e}))},[e,r]),!e)return null;let u=async(e=!1)=>{let i=await r.validateFields();a(!0);try{await YT(i,{allowEmpty:e}),s.message.success(`Region saved`),n?.(),t()}catch(e){String(e?.message||``).includes(`no users exist`)?s.Modal.confirm({title:`No users found for that tenant scope`,content:`Nothing in this database matches that tenant / business / business-unit triple. That usually means one of the ids has a typo — two live tenants already differ by a single character. Register it anyway only if the region is genuinely empty.`,okText:`Register anyway`,okButtonProps:{danger:!0},cancelText:`Let me check the ids`,onOk:()=>u(!0)}):s.message.error(e?.message||`Could not save region`)}finally{a(!1)}};return(0,l.jsxs)(s.Drawer,{open:!0,width:520,onClose:t,title:c?`Register region`:`Edit ${e.label||e.key}`,extra:(0,l.jsx)(s.Button,{type:`primary`,loading:i,onClick:()=>u(!1),children:`Save`}),children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16},message:`A region is a name for a tenant scope`,description:`It does not create or move data. It binds a stable key to an existing tenant / business / business-unit triple so that key can be used in URLs and audit records.`}),(0,l.jsxs)(s.Form,{form:r,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`key`,label:`Region key`,tooltip:`The identifier. It appears in URLs and audit rows, so it never changes once used. Lower-case, no spaces.`,rules:[{required:!0,message:`A region key is required`},{pattern:/^[a-z0-9][a-z0-9-]*$/,message:`Lower-case letters, digits and hyphens only`}],children:(0,l.jsx)(s.Input,{placeholder:`us`,disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`label`,label:`Display name`,rules:[{required:!0,message:`A display name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`United States`})}),(0,l.jsx)(s.Form.Item,{name:`tenantId`,label:`Tenant ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{placeholder:`24-character ObjectId`,disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`businessId`,label:`Business ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`businessUnitId`,label:`Business Unit ID`,rules:[{required:!0,len:24,message:`24-character ObjectId`}],children:(0,l.jsx)(s.Input,{disabled:!c})}),(0,l.jsx)(s.Form.Item,{name:`regionProfile`,label:`Region profile`,tooltip:`Selects which FormGroup.regionRules profile applies. Leave blank for none.`,children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`none`,options:[{value:`US`},{value:`UK`},{value:`IND`}]})}),(0,l.jsx)(s.Form.Item,{name:`order`,label:`Display order`,children:(0,l.jsx)(s.InputNumber,{min:0,style:{width:`100%`}})}),(0,l.jsx)(s.Form.Item,{name:`isActive`,label:`Active`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{})})]}),!c&&(0,l.jsx)(s.Button,{danger:!0,block:!0,onClick:()=>s.Modal.confirm({title:`Deactivate ${e.label||e.key}?`,content:`It stops being selectable and stops resolving. The record is kept so historical audit rows still make sense.`,okText:`Deactivate`,okButtonProps:{danger:!0},onOk:async()=>{await XT(e.key),s.message.success(`Region deactivated`),n?.(),t()}}),children:`Deactivate region`})]})}var CE=[{name:`phoneCountryCode`,label:`Phone country code`,placeholder:`+1`,help:`Empty means print no dial code at all. That is a real setting, not a blank.`},{name:`phoneFormat`,label:`Phone format`,placeholder:`(###) ###-####`},{name:`dateFormat`,label:`Date format`,placeholder:`DD MMM YYYY`,help:`Calendar dates only — no time, no zone.`},{name:`dateTimeFormat`,label:`Date & time format`,placeholder:`DD MMM YYYY, hh:mm A`},{name:`timeZone`,label:`Time zone`,placeholder:`Asia/Kolkata`,help:`IANA name. Empty means each viewer sees their own zone.`},{name:`booleanTrueLabel`,label:`Yes label`,placeholder:`Yes`},{name:`booleanFalseLabel`,label:`No label`,placeholder:`No`},{name:`emptyPlaceholder`,label:`Empty placeholder`,placeholder:`-`},{name:`separator`,label:`Separator`,placeholder:` · `}];function wE({region:e,onClose:t}){let[n]=s.Form.useForm(),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),d=(0,o.useRef)(null);return(0,o.useEffect)(()=>{if(!e)return;d.current?.abort();let t=new AbortController;return d.current=t,queueMicrotask(()=>{i(!0),rE(e.key,{signal:t.signal}).then(e=>n.setFieldsValue(e||{})).catch(e=>{e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load defaults`)}).finally(()=>i(!1))}),()=>t.abort()},[e,n]),e?(0,l.jsxs)(s.Drawer,{open:!0,width:560,onClose:t,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.SettingOutlined,{}),`Display defaults — `,e.label||e.key]}),extra:(0,l.jsx)(s.Button,{type:`primary`,loading:a,onClick:async()=>{let r=await n.validateFields();u(!0);try{await iE(e.key,r),s.message.success(`Display defaults saved for ${e.label||e.key}`),t()}catch(e){s.message.error(e?.message||`Could not save defaults`)}finally{u(!1)}},children:`Save`}),children:[(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:16},message:`These apply to this region only`,description:`Everyone in ${e.label||e.key} will see dates, times and phone numbers rendered with these settings. Other regions are unaffected.`}),(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsx)(s.Form,{form:n,layout:`vertical`,children:CE.map(e=>(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,extra:e.help,children:(0,l.jsx)(s.Input,{placeholder:e.placeholder,allowClear:!0})},e.name))})})]}):null}function TE({regions:e}){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)(``),[f,p]=(0,o.useState)(),[m,h]=(0,o.useState)(1),g=(0,o.useRef)(null),_=(0,o.useCallback)(async()=>{g.current?.abort();let e=new AbortController;g.current=e,c(!0);try{let{items:t,total:r}=await tE({search:u,regionKey:f,limit:25,offset:(m-1)*25,signal:e.signal});n(t),i(r)}catch(e){e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load users`)}finally{c(!1)}},[u,f,m]);(0,o.useEffect)(()=>(queueMicrotask(_),()=>g.current?.abort()),[_]);let v=(0,o.useMemo)(()=>e.map(e=>({value:e.key,label:e.label?.trim()||e.key})),[e]);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.Space,{style:{marginBottom:16},wrap:!0,children:[(0,l.jsx)(s.Input.Search,{allowClear:!0,placeholder:`Search name or email`,style:{width:280},onSearch:e=>{h(1),d(e)}}),(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`All regions`,style:{width:200},options:v,onChange:e=>{h(1),p(e)}})]}),(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:12},message:`Only users in registered regions appear here`,description:`A tenant scope that is not registered as a region is deliberately excluded, so orphaned or mistyped tenants are not exposed through this screen.`}),(0,l.jsx)(s.Table,{rowKey:e=>e._id||e.email,size:`small`,loading:a,columns:[{title:`Email`,dataIndex:`email`,key:`email`},{title:`Name`,key:`name`,render:(e,t)=>t.userName||[t.firstName,t.lastName].filter(Boolean).join(` `)||`—`},{title:`Region`,key:`region`,render:(e,t)=>t.regionKey?(0,l.jsx)(s.Tag,{color:`blue`,children:t.regionLabel||t.regionKey}):(0,l.jsx)(s.Tooltip,{title:`This user's tenant scope is not registered as a region.`,children:(0,l.jsx)(s.Tag,{children:`unregistered`})})},{title:`Role ID`,dataIndex:`roleId`,key:`roleId`,width:90}],dataSource:t,pagination:{current:m,pageSize:25,total:r,showSizeChanger:!1,onChange:h,showTotal:e=>`${e} user${e===1?``:`s`}`}})]})}function EE(){let[e,t]=(0,o.useState)([]),[n,r]=(0,o.useState)(!1),[i,a]=(0,o.useState)(!1),[u]=s.Form.useForm(),d=(0,o.useCallback)(async()=>{r(!0);try{t(await ZT())}catch(e){s.message.error(e?.message||`Could not load platform access`)}finally{r(!1)}},[]);return(0,o.useEffect)(()=>{queueMicrotask(d)},[d]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,style:{marginBottom:16},message:`Platform access spans every region`,description:`Grant it to as few people as possible, and prefer a time-boxed grant. Access is verified on every request, so revoking takes effect immediately rather than when a token expires.`}),(0,l.jsxs)(s.Space,{style:{marginBottom:16},children:[(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.ApiOutlined,{}),onClick:()=>a(!0),children:`Grant access`}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:d,children:`Refresh`})]}),(0,l.jsx)(s.Table,{rowKey:e=>e.userId,size:`small`,loading:n,columns:[{title:`Email`,dataIndex:`email`,key:`email`},{title:`Status`,key:`status`,render:(e,t)=>t.isActive?(0,l.jsx)(s.Badge,{status:`success`,text:`Active`}):(0,l.jsx)(s.Badge,{status:`default`,text:`Revoked`})},{title:`Scopes`,dataIndex:`scopes`,key:`scopes`,render:e=>(e||[]).map(e=>(0,l.jsx)(s.Tag,{children:e},e))},{title:``,key:`actions`,width:100,render:(e,t)=>t.isActive&&(0,l.jsx)(s.Button,{danger:!0,type:`link`,onClick:()=>s.Modal.confirm({title:`Revoke platform access for ${t.email}?`,content:`They keep their ordinary account and their own region. Cross-region administration stops working on their next request — not when their session expires.`,okText:`Revoke`,okButtonProps:{danger:!0},onOk:async()=>{try{await $T(t.userId),s.message.success(`Access revoked`),d()}catch(e){s.message.error(e?.message||`Could not revoke`)}}}),children:`Revoke`})}],dataSource:e}),(0,l.jsxs)(s.Modal,{open:i,title:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(c.UserOutlined,{}),`Grant platform access`]}),onCancel:()=>a(!1),okText:`Grant`,onOk:async()=>{let e=await u.validateFields();try{await QT(e),s.message.success(`Platform access granted`),a(!1),u.resetFields(),d()}catch(e){s.message.error(e?.message||`Could not grant access`)}},children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16},message:`This grants authority to an existing account`,description:`No password is created or changed here. The user must sign out and back in before it takes effect, because platform authority is keyed to an identifier older sessions do not carry.`}),(0,l.jsxs)(s.Form,{form:u,layout:`vertical`,children:[(0,l.jsx)(s.Form.Item,{name:`userId`,label:`User ID`,tooltip:`The user's stable Mongo _id — not their email and not a legacy numeric id. Copy it from the All Users tab.`,rules:[{required:!0,len:24,message:`A 24-character user _id is required`}],children:(0,l.jsx)(s.Input,{placeholder:`24-character ObjectId`})}),(0,l.jsx)(s.Form.Item,{name:`scopes`,label:`Scopes`,rules:[{required:!0,message:`Select at least one scope`}],children:(0,l.jsx)(s.Select,{mode:`multiple`,options:sE,placeholder:`Select scopes`})}),(0,l.jsx)(s.Form.Item,{name:`expiresAt`,label:`Expires`,extra:`Optional. RFC3339, e.g. 2026-12-31T23:59:59Z. Time-boxed access is safer.`,children:(0,l.jsx)(s.Input,{placeholder:`2026-12-31T23:59:59Z`})})]})]})]})}function DE({regions:e}){let[t,n]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)(),[f,p]=(0,o.useState)(1);return(0,o.useEffect)(()=>{let e=!1,t=new AbortController;return queueMicrotask(()=>{e||(c(!0),nE({regionKey:u,limit:50,offset:(f-1)*50,signal:t.signal}).then(({items:t,total:r})=>{e||(n(t),i(r))}).catch(e=>{e?.name!==`AbortError`&&s.message.error(e?.message||`Could not load audit`)}).finally(()=>{e||c(!1)}))}),()=>{e=!0,t.abort()}},[u,f]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Space,{style:{marginBottom:16},children:(0,l.jsx)(s.Select,{allowClear:!0,placeholder:`All regions`,style:{width:200},options:e.map(e=>({value:e.key,label:e.label?.trim()||e.key})),onChange:e=>{p(1),d(e)}})}),(0,l.jsx)(s.Table,{rowKey:e=>e._id||`${e.at}-${e.action}`,size:`small`,loading:a,columns:[{title:`When`,dataIndex:`at`,key:`at`,width:190,render:e=>e?new Date(e).toLocaleString():`—`},{title:`Actor`,dataIndex:`actorEmail`,key:`actorEmail`},{title:`Action`,dataIndex:`action`,key:`action`,render:e=>(0,l.jsx)(s.Tag,{children:e})},{title:`Region`,dataIndex:`targetRegion`,key:`targetRegion`,render:e=>e?(0,l.jsx)(s.Tag,{color:`blue`,children:e}):(0,l.jsx)(vE,{type:`secondary`,children:`platform`})},{title:`Route`,dataIndex:`route`,key:`route`,render:e=>(0,l.jsx)(vE,{type:`secondary`,style:{fontSize:12},children:e})}],dataSource:t,pagination:{current:f,pageSize:50,total:r,showSizeChanger:!1,onChange:p}})]})}var{Content:OE,Header:kE,Sider:AE}=s.Layout,{Text:jE,Title:ME}=s.Typography;function NE(e){return String(e??``).trim().replace(/[\s_-]+/g,` `).toUpperCase()}function PE(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function FE(e){return String(e||``).trim().toLowerCase()}function IE(e){return e?.key||e?.collectionName||e?.value||``}function LE(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=IE(e);if(!t)return;let o=FE(e.key||t),s=FE(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||PE(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=FE(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:PE(t),value:t,disabled:!1}))}),n}function RE(e){return NE(e?.user_type_name??e?.userTypeName??e?.name)===`SUPER ADMIN`}function zE(e){return`${e?.first_name??e?.firstName??``} ${e?.last_name??e?.lastName??``}`.trim()||e?.username||e?.userName||e?.email||`User ${e?.user_id??e?.userId??``}`}function BE(e){return e.flatMap(e=>{let t=e.menu_id??e.menuId??e.MenuID,n=e.menu_name??e.menuName??e.MenuName??`Menu ${t??``}`,r=e.menu_key??e.menuKey??e.MenuKey??``,i=e.permissions??e.Permissions??{};return Object.entries(i).map(([e,i])=>{let a=i.permission_id??i.permissionId??i.PermissionID,o=i.permission_key??i.permissionKey??i.PermissionKey??e,s=i.value??i.Value??i.access_value??i.accessValue??i;return{key:`${r??n??t}:${a??o}`,menuId:t,menuName:n,menuKey:r,permissionId:a,permissionKey:o,accessValue:+(Number(s)===1)}})})}function VE(e){return String(e.menuKey??e.menuName??e.menuId).trim().toLowerCase()}var HE=[{permissionId:null,permissionKey:`my_jobs`,permissionName:`My Jobs`},{permissionId:null,permissionKey:`all_jobs`,permissionName:`All Jobs`},{permissionId:null,permissionKey:`sendApprove`,permissionName:`Send Approve`}];function UE(e){let t=Array.isArray(e)?e:e?.permissions??e?.actions??e?.data??e,n=(Array.isArray(t)?t:Object.values(t??{})).map(e=>({permissionId:e.permission_id??e.permissionId??e.legacyPermissionId??e.id??null,permissionKey:e.permission_key??e.permissionKey??e.key,permissionName:e.permission_name??e.permissionName??e.name??e.label})).filter(e=>e.permissionKey),r=new Set(n.map(e=>String(e.permissionKey).trim().toLowerCase()));return HE.forEach(e=>{r.has(e.permissionKey.toLowerCase())||n.push(e)}),n}function WE(e={}){return String(e.permissionName??``).trim()||String(e.permissionKey??``).replaceAll(`_`,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function GE({title:e,description:t,selectedName:n,loading:r,saving:i,rows:a,onChange:o,onMove:u,onSave:d}){let f=Object.values(a.reduce((e,t)=>{let n=VE(t);return e[n]||(e[n]={key:n,menuName:t.menuName,menuKey:t.menuKey,permissions:[]}),e[n].permissions.push(t),e},{}));return(0,l.jsxs)(`section`,{className:`admin-editor`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:e}),(0,l.jsx)(jE,{type:`secondary`,children:n||t})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:i,disabled:!n||a.length===0,onClick:d,children:`Save`})]}),r?(0,l.jsx)(`div`,{className:`admin-loading`,children:(0,l.jsx)(s.Spin,{})}):f.length?(0,l.jsx)(s.Table,{size:`small`,rowKey:`key`,columns:[{title:`Menu`,dataIndex:`menuName`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-menu-order-cell`,children:[(0,l.jsxs)(`div`,{className:`admin-menu-cell`,children:[(0,l.jsx)(`span`,{children:e}),(0,l.jsx)(jE,{type:`secondary`,children:t.menuKey})]}),(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.ArrowUpOutlined,{}),onClick:()=>u(t.key,-1),"aria-label":`Move ${e} up`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,icon:(0,l.jsx)(c.ArrowDownOutlined,{}),onClick:()=>u(t.key,1),"aria-label":`Move ${e} down`})]})]})},{title:`Actions`,dataIndex:`permissions`,render:e=>(0,l.jsx)(`div`,{className:`admin-permission-controls`,children:e.filter(e=>qb(e.menuName??e.menuKey,e.permissionKey)).map(e=>(0,l.jsx)(`label`,{className:`admin-permission-control`,children:(0,l.jsx)(s.Checkbox,{checked:e.accessValue===1,onChange:t=>o(e.key,+!!t.target.checked),"aria-label":`${e.menuName} ${e.permissionKey}`,children:WE(e)})},e.key))})}],dataSource:f,pagination:!1,scroll:{y:420}}):(0,l.jsx)(s.Empty,{description:`Select a record to customize permissions`})]})}function KE({onLogout:e}){let[r]=s.Form.useForm(),[i]=s.Form.useForm(),[a,u]=(0,o.useState)(`users`),[d,f]=(0,o.useState)(!0),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(0),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)([]),[j,M]=(0,o.useState)([]),[N,P]=(0,o.useState)([]),[F,I]=(0,o.useState)(null),[L,R]=(0,o.useState)([]),[z,B]=(0,o.useState)(!1),[V,ee]=(0,o.useState)(null),[te,ne]=(0,o.useState)(!1),[re,ie]=(0,o.useState)(null),[H,ae]=(0,o.useState)([]),[oe,se]=(0,o.useState)(!1),[ce,U]=(0,o.useState)(!1),[le,ue]=(0,o.useState)(null),[de,fe]=(0,o.useState)(!1),[pe,W]=(0,o.useState)(null),[me,he]=(0,o.useState)(`listView`),[ge,_e]=(0,o.useState)([]),[G,K]=(0,o.useState)([]),[ve,ye]=(0,o.useState)(!1),[be,xe]=(0,o.useState)(!1),Se=t.d(),Ce=(0,o.useMemo)(()=>ge.filter(e=>!e.disabled),[ge]),we=!ve&&Ce.length===0,Te=(0,o.useCallback)(async()=>{ye(!0);try{let[e,t]=await Promise.all([n.Er(),n.vr()]),r=LE(e.modules,t),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));_e(r),K(e=>e.filter(e=>i.has(e)))}catch{s.message.error(`Failed to load seed status`)}finally{ye(!1)}},[]);(0,o.useEffect)(()=>{Te()},[Te]);async function Ee(){if(G.length===0){s.message.warning(we?`All modules already seeded.`:`Select at least one module to seed.`);return}xe(!0);try{await n.oi(G),s.message.success(`User type field config seeded`),K([]),await Te()}catch(e){s.message.error(e?.message||`Seed failed`)}finally{xe(!1)}}async function De(){f(!0);try{let[e,t,n]=await Promise.allSettled([Fb(),zb(),Ub()]),r=e.status===`fulfilled`?e.value:[];e.status===`rejected`&&s.message.error(e.reason?.message||`Unable to load user types`),A(r??[]),M(t.status===`fulfilled`?t.value??[]:[]),P(n.status===`fulfilled`?UE(n.value):[]),I((r??[])[0]?.user_type_id??null)}catch(e){s.message.error(e.message||`Unable to load admin data`)}finally{f(!1)}}(0,o.useEffect)(()=>{queueMicrotask(()=>{De()})},[]);let Oe=(0,o.useCallback)(async()=>{O(!0);try{let{users:e,total:t}=await Ab({limit:C,offset:(x-1)*C,search:T});v(e??[]),b(t??0)}catch(e){s.message.error(e?.message||`Unable to load users`),v([]),b(0)}finally{O(!1)}},[x,C,T]);(0,o.useEffect)(()=>{Oe()},[Oe]),(0,o.useEffect)(()=>{queueMicrotask(()=>{if(!F){R([]);return}m(!0),Wb(F).then(e=>{let t=BE(e??[]),n=new Map(t.map(e=>[`${VE(e)}:${String(e.permissionKey).toLowerCase()}`,e.accessValue])),r=j.flatMap(e=>N.map(t=>{let r=String(e.menu_key??e.menu_name??e.menu_id).trim().toLowerCase(),i=String(t.permissionKey).toLowerCase();return{key:`${e.menu_key??e.menu_name??e.menu_id}:${t.permissionId??t.permissionKey}`,menuId:e.menu_id,menuName:e.menu_name,menuKey:e.menu_key,permissionId:t.permissionId,permissionKey:t.permissionKey,accessValue:n.get(`${r}:${i}`)??0}}));R(r)}).catch(e=>s.message.error(e.message||`Unable to load role permissions`)).finally(()=>m(!1))})},[F,j,N]);let ke=(0,o.useMemo)(()=>k.find(e=>e.user_type_id===F),[F,k]),Ae=(0,o.useMemo)(()=>k.reduce((e,t)=>({...e,[t.user_type_id]:t.user_type_name}),{}),[k]),je=(0,o.useMemo)(()=>_.reduce((e,t)=>({...e,[t.user_id]:zE(t)}),{}),[_]),Me=(0,o.useMemo)(()=>k.filter(e=>!RE(e)),[k]),Ne=(0,o.useMemo)(()=>_.filter(e=>!RE({user_type_id:e.user_type_id,user_type_name:Ae[e.user_type_id]})),[Ae,_]);(0,o.useEffect)(()=>{if(!z){ae([]);return}let e=Number(r.getFieldValue(`user_type_id`)??0);if(!e){ae([]);return}let t=!1;return se(!0),jb(e).then(e=>{t||ae(e.filter(e=>!V||e.user_id!==V.user_id))}).catch(e=>{t||(s.message.error(e.message||`Unable to load reporting users`),ae([]))}).finally(()=>{t||se(!1)}),()=>{t=!0}},[V,r,z]);let Pe=(0,o.useMemo)(()=>{let e=H.map(e=>({label:zE(e),value:e.user_id})),t=Number(V?.reporting_id??V?.reportingId??0);return!t||e.some(e=>Number(e.value)===t)?e:[{label:V?.reportingName??V?.reporting_name??je[t]??`User ${t}`,value:t},...e]},[V,H,je]),Fe=(0,o.useMemo)(()=>{let e=Me.map(e=>({label:e.user_type_name,value:e.user_type_id}));if(!V)return e;let t=Number(V.user_type_id??0);return e.some(e=>Number(e.value)===t)?e:[{label:Ae[t]??V.userType??V.roleName??(t>0?`Type ${t}`:`Unassigned`),value:t},...e]},[V,Me,Ae]);k.length,j.length;let Ie=[{key:`form-groups`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Form Groups`]}),title:`Form Groups`,description:`Build module add and edit form groups with validations, dropdowns, and custom forms.`,component:(0,l.jsx)(cC,{})},{key:`detail-groups`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.BgColorsOutlined,{}),` Detail Groups`]}),title:`Detail Groups`,description:`Control detail-view labels, rendering, lookups, merged fields, and display defaults.`,component:(0,l.jsx)(HC,{})},{key:`actions`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` Actions`]}),title:`Actions`,description:`Manage row action buttons and their visibility rules from one workspace.`,component:(0,l.jsx)(jw,{})},{key:`templates`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.MailOutlined,{}),` Templates`]}),title:`Templates`,description:`Manage reusable email templates and signatures.`,component:(0,l.jsx)(Uw,{})},{key:`ai-services`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ThunderboltOutlined,{}),` AI Services`]}),title:`AI Services`,description:`Register the AI and automation services used by admin-configured AI actions.`,component:(0,l.jsx)(qw,{})},{key:`bgc-integration`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Integrations`]}),title:`Integrations`,description:`Manage manual and API integrations used across application workflows.`,component:(0,l.jsx)($w,{})},{key:`automations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApartmentOutlined,{}),` Automations`]}),title:`Automations`,description:`Reference ids, duplicate checks, cross-module snapshots, reporting-chain hierarchy expansion, board updates, notifications, and cache invalidation — per module, config-driven.`,component:(0,l.jsx)(pT,{})},{key:`workflows`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.ApartmentOutlined,{}),` Workflows`]}),title:`Workflows`,description:`Event-driven behavior per module (beforeCreate/afterCreate/…): the metadata the platform Workflow Engine executes — where the jobs, candidates, and submissions create flows live.`,component:(0,l.jsx)(xT,{})},{key:`masters`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Masters`]}),title:`Masters`,description:`Shared Location and Tax lists used across modules (e.g. the submission form’s W2 employer section).`,component:(0,l.jsx)(BT,{})}],[Le,Re]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=new AbortController;return eE({signal:e.signal}).then(Re).catch(()=>Re(!1)),()=>e.abort()},[]);let ze=[...Le?[{key:`platform`,icon:(0,l.jsx)(c.SafetyCertificateOutlined,{}),label:`Platform`}]:[],{key:`users`,icon:(0,l.jsx)(c.UserOutlined,{}),label:`Users`},{key:`roles`,icon:(0,l.jsx)(c.TeamOutlined,{}),label:`User Types`},{key:`menus`,icon:(0,l.jsx)(c.MenuOutlined,{}),label:`Menus`},{key:`configurations`,icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),label:`Configurations`},{key:`integrations`,icon:(0,l.jsx)(c.SafetyCertificateOutlined,{}),label:`Integrations`}];function Be(e,t){R(n=>n.map(n=>n.key===e?{...n,accessValue:t}:n))}async function Ve(){g(!0);try{await Gb(F,L.map(e=>({menu_id:e.menuId,menu_name:e.menuName,menu_key:e.menuKey,permission_id:e.permissionId,permission_key:e.permissionKey,access_value:e.accessValue,updated_by:Se?.userId??null}))),s.message.success(`Role permissions updated`)}catch(e){s.message.error(e.message||`Unable to save role permissions`)}finally{g(!1)}}function q(){ee(null),r.resetFields(),r.setFieldsValue({status:`ACTIVE`,user_type_id:Me[0]?.user_type_id,reporting_id:0}),B(!0)}function J(e){ee(e),r.setFieldsValue({first_name:e.first_name,last_name:e.last_name,username:e.username,email:e.email,mobile:e.mobile,user_type_id:e.user_type_id,reporting_id:e.reporting_id??e.reportingId??0,profile_image:e.profile_image,status:e.status}),B(!0)}async function Y(e){ne(!0);try{let t={...e,status:e.status===1||e.status===`1`||e.status===!0?`ACTIVE`:e.status===0||e.status===`0`||e.status===!1?`INACTIVE`:String(e.status??`ACTIVE`).toUpperCase(),updated_by:Se?.userId??null,created_by:Se?.userId??null};t.password||delete t.password,V?(await Nb(V.user_id,t),s.message.success(`User updated`)):(await Mb(t),s.message.success(`User created`)),B(!1),ee(null),await Oe()}catch(e){s.message.error(e.message||`Unable to save user`)}finally{ne(!1)}}async function X(e){ie(e);try{await Pb(e),s.message.success(`User deleted`),await Oe()}catch(e){s.message.error(e.message||`Unable to delete user`)}finally{ie(null)}}function He(e,t){he(`listView`),W({kind:e,record:t}),e===`role`&&I(t.user_type_id)}function Ue(e,t){R(n=>{let r=[...new Set(n.map(VE))],i=r.indexOf(e),a=i+t;if(i<0||a<0||a>=r.length)return n;[r[i],r[a]]=[r[a],r[i]];let o=new Map(r.map((e,t)=>[e,t]));return[...n].sort((e,t)=>o.get(VE(e))-o.get(VE(t)))})}function We(){ue(null),i.resetFields(),i.setFieldsValue({status:`ACTIVE`}),U(!0)}function Ge(e){ue(e),U(!0),i.setFieldsValue(e)}async function Ke(e){fe(!0);try{let t=Se?.userId??null,n=!!le,r=n?await Lb(le.user_type_id,{...e,updated_by:t}):await Ib({...e,created_by:t,visible_menu_ids:[]}),i=r.user_type_id;s.message.success(n?`User type updated`:`User type created. Customize its menus and permissions.`),U(!1),await De(),I(i),n||(he(`permissions`),W({kind:`role`,record:{...e,...r,user_type_id:i,user_type_name:r.user_type_name??e.user_type_name}}))}catch(e){s.message.error(e.message||`Unable to save role`)}finally{fe(!1)}}async function qe(e){try{await Rb(e),s.message.success(`Role deleted`),await De()}catch(e){s.message.error(e.message||`Unable to delete role`)}}return(0,l.jsxs)(s.Layout,{className:`admin-shell`,children:[(0,l.jsx)(AE,{width:248,className:`admin-sider`,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-nav`,children:[(0,l.jsx)(jE,{className:`admin-sidebar-title`,children:`Admin Menu`}),(0,l.jsx)(s.Menu,{theme:`dark`,mode:`inline`,selectedKeys:[a],onClick:({key:e})=>u(e),items:ze})]})}),(0,l.jsx)(s.Layout,{children:(0,l.jsxs)(OE,{className:`admin-content`,children:[(0,l.jsx)(l.Fragment,{children:(0,l.jsx)(s.Tabs,{activeKey:a,onChange:u,tabBarStyle:{display:`none`},items:[{key:`users`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.UserOutlined,{}),` Users`]}),children:(0,l.jsx)(`div`,{className:`admin-stack`,children:(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Users`}),(0,l.jsx)(jE,{type:`secondary`,children:`Create and manage users with non-super-admin user types.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:q,children:`Add`})]}),(0,l.jsx)(Em,{listName:`Users`,loading:D,fields:[{label:`Name`,value:`first_name`,render:(e,t)=>`${e??``} ${t.last_name??``}`.trim()||t.username},{label:`Email`,value:`email`},{label:`User Type`,value:`user_type_id`,width:160,render:(e,t)=>Ae[e]||t?.userType||t?.user_type||(Number(e)>0?`Type ${e}`:`—`)},{label:`Reporting Manager`,value:`reporting_id`,width:180,render:(e,t)=>je[e]||t?.reportingName||t?.reporting_name||(Number(e)>0?`User ${e}`:`None`)},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:150,sorter:!1,render:(e,t)=>(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Edit user`,icon:(0,l.jsx)(c.EditOutlined,{}),size:`small`,onClick:()=>J(t)}),(0,l.jsx)(s.Popconfirm,{title:`Delete user?`,description:`This removes the user from the auth database.`,okText:`Delete`,okButtonProps:{danger:!0},onConfirm:()=>X(t.user_id),children:(0,l.jsx)(s.Button,{danger:!0,"aria-label":`Delete user`,icon:(0,l.jsx)(c.DeleteOutlined,{}),loading:re===t.user_id,size:`small`})})]})}],dataSource:Ne.map(e=>({...e,key:e.user_id})),total:y,current:x,pageSize:C,onPageChange:S,onPageSizeChange:e=>{w(e),S(1)},onSearch:e=>{E(e??``),S(1)},rowSelection:!1})]})})},{key:`roles`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.TeamOutlined,{}),` User Types`]}),children:(0,l.jsxs)(`div`,{className:`admin-stack`,children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,l.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:G,options:ge,placeholder:we?`All modules already seeded`:`Select modules or collections to seed`,disabled:ve||be||we,loading:ve,onChange:K,style:{width:`100%`}})}),(0,l.jsx)(s.Button,{type:`primary`,loading:be,disabled:ve||G.length===0,onClick:Ee,children:`Seed Field Config`})]}),(0,l.jsx)(jE,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:we?`Seed is disabled because all configured modules already have user type field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,l.jsxs)(`section`,{className:`admin-section`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`User Types`}),(0,l.jsx)(jE,{type:`secondary`,children:`Role level permissions are inherited by users.`})]}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:We,children:`Add Role`})]}),(0,l.jsx)(Em,{listName:`User Types`,loading:d,fields:[{label:`User Type`,value:`user_type_name`},{label:`Description`,value:`description`},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,l.jsx)(s.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:260,sorter:!1,render:(e,t)=>{let n=Number(t.role_type)===1;return(0,l.jsxs)(s.Space,{size:4,children:[(0,l.jsx)(s.Button,{"aria-label":`Configure role`,size:`small`,onClick:()=>He(`role`,t),children:`Config`}),(0,l.jsx)(s.Button,{"aria-label":`Edit role`,disabled:!n,icon:(0,l.jsx)(c.EditOutlined,{}),size:`small`,onClick:()=>Ge(t)}),n&&!RE(t)&&(0,l.jsx)(s.Popconfirm,{title:`Delete role?`,onConfirm:()=>qe(t.user_type_id),children:(0,l.jsx)(s.Button,{"aria-label":`Delete role`,danger:!0,icon:(0,l.jsx)(c.DeleteOutlined,{}),size:`small`})})]})}}],dataSource:k.map(e=>({...e,key:e.user_type_id,roleId:e.user_type_id,roleName:e.user_type_name})),total:k.length,rowSelection:!1})]})]})},{key:`menus`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.MenuOutlined,{}),` Menus`]}),children:(0,l.jsx)(UT,{})},{key:`configurations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.AppstoreAddOutlined,{}),` Configurations`]}),children:(0,l.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,l.jsxs)(`div`,{className:`admin-section-head`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Configuration Center`}),(0,l.jsx)(jE,{type:`secondary`,children:`CORE-THEME admin modules embedded into the admin dashboard.`})]}),(0,l.jsxs)(s.Tag,{color:`blue`,children:[Ie.length,` configurations`]})]}),(0,l.jsx)(s.Tabs,{className:`admin-config-tabs`,defaultActiveKey:`form-groups`,tabPosition:`left`,items:Ie.map(e=>({key:e.key,label:e.label,children:(0,l.jsxs)(`div`,{className:`admin-config-panel`,children:[(0,l.jsx)(`div`,{className:`admin-config-panel-head`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:e.title}),(0,l.jsx)(jE,{type:`secondary`,children:e.description})]})}),(0,l.jsx)(`div`,{className:`admin-config-panel-body`,children:e.component})]})}))})]})},...Le?[{key:`platform`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Platform`]}),children:(0,l.jsx)(`section`,{className:`admin-section admin-config-workspace`,children:(0,l.jsx)(bE,{})})}]:[],{key:`integrations`,label:(0,l.jsxs)(`span`,{children:[(0,l.jsx)(c.SafetyCertificateOutlined,{}),` Integrations`]}),children:(0,l.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,l.jsx)(`div`,{className:`admin-section-head`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(ME,{level:4,children:`Integrations`}),(0,l.jsx)(jE,{type:`secondary`,children:`Configure external services used by onboarding and other workflows.`})]})}),(0,l.jsx)(`div`,{className:`admin-config-panel`,children:(0,l.jsx)(`div`,{className:`admin-config-panel-body`,children:(0,l.jsx)($w,{})})})]})}]})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,title:`Configure User Type: ${pe?.record?.user_type_name??``}`,open:!!pe,onCancel:()=>W(null),footer:null,destroyOnHidden:!0,width:900,children:[(0,l.jsx)(`div`,{className:`uss-config-toggle`,style:{marginBottom:12},children:[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`},{key:`actions`,label:`Actions`}].map(e=>(0,l.jsx)(`button`,{type:`button`,className:`uss-config-btn${me===e.key?` active`:``}`,onClick:()=>he(e.key),children:e.label},e.key))}),pe&&me===`permissions`?(0,l.jsx)(GE,{title:`Role Permissions`,description:`Configure menu permissions for this user type`,selectedName:ke?.user_type_name,loading:p,saving:h,rows:L,onChange:Be,onMove:Ue,onSave:Ve}):pe&&me===`actions`?(0,l.jsx)(kx,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name}},`${pe.record?.user_type_id}-actions`):pe&&me===`form`?(0,l.jsx)(xx,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name}},`${pe.record?.user_type_id}-form`):pe?(0,l.jsx)(ux,{role:{...pe.record,roleId:pe.record.user_type_id,roleName:pe.record.user_type_name},configType:me},`${pe.record?.user_type_id}-${me}`):null]}),(0,l.jsx)(s.Modal,{className:`admin-role-modal`,title:le?`Edit User Type`:`Create User Type`,open:ce,onCancel:()=>U(!1),onOk:()=>i.submit(),okText:le?`Save`:`Next`,confirmLoading:de,destroyOnHidden:!0,width:900,children:(0,l.jsxs)(s.Form,{form:i,layout:`vertical`,onFinish:Ke,children:[(0,l.jsx)(s.Form.Item,{name:`user_type_name`,label:`Role name`,rules:[{required:!0,message:`Role name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`Recruiter`})}),(0,l.jsx)(s.Form.Item,{name:`description`,label:`Description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3})}),(0,l.jsx)(s.Form.Item,{name:`status`,label:`Status`,children:(0,l.jsx)(s.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]})}),(0,l.jsx)(s.Modal,{className:`admin-user-modal`,title:V?`Edit User`:`Add User`,open:z,onCancel:()=>B(!1),onOk:()=>r.submit(),confirmLoading:te,destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:r,layout:`vertical`,requiredMark:!1,onFinish:Y,children:[(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{label:`First Name`,name:`first_name`,rules:[{required:!0,message:`First name is required`}],children:(0,l.jsx)(s.Input,{placeholder:`John`})}),(0,l.jsx)(s.Form.Item,{label:`Last Name`,name:`last_name`,children:(0,l.jsx)(s.Input,{placeholder:`Doe`})})]}),(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[{required:!0,message:`Username is required`}],children:(0,l.jsx)(s.Input,{placeholder:`john.doe`})}),(0,l.jsx)(s.Form.Item,{label:`Email`,name:`email`,rules:[{required:!0,message:`Email is required`},{type:`email`,message:`Enter a valid email`}],children:(0,l.jsx)(s.Input,{placeholder:`john@example.com`})}),(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:V?[]:[{required:!0,message:`Password is required`}],children:(0,l.jsx)(s.Input.Password,{placeholder:V?`Leave empty to keep current password`:`Password`})}),(0,l.jsxs)(`div`,{className:`admin-form-row`,children:[(0,l.jsx)(s.Form.Item,{label:`Mobile`,name:`mobile`,children:(0,l.jsx)(s.Input,{placeholder:`9999999999`})}),(0,l.jsx)(s.Form.Item,{label:`User Type`,name:`user_type_id`,rules:[{required:!0,message:`User type is required`}],children:(0,l.jsx)(s.Select,{placeholder:`Select user type`,onChange:()=>{ae([]),queueMicrotask(()=>{let e=Number(r.getFieldValue(`user_type_id`)??0);e&&(se(!0),jb(e).then(e=>{ae(e.filter(e=>!V||e.user_id!==V.user_id))}).catch(e=>{s.message.error(e.message||`Unable to load reporting users`),ae([])}).finally(()=>{se(!1)}))})},options:Fe})})]}),(0,l.jsx)(s.Form.Item,{label:`Reporting Manager`,name:`reporting_id`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:oe,placeholder:`Select reporting manager`,optionFilterProp:`label`,options:[{label:`None`,value:0},...Pe]})}),(0,l.jsx)(s.Form.Item,{label:`Profile Image`,name:`profile_image`,children:(0,l.jsx)(s.Input,{placeholder:`https://...`})}),(0,l.jsx)(s.Form.Item,{label:`Status`,name:`status`,children:(0,l.jsx)(s.Select,{options:[{label:`ACTIVE`,value:`ACTIVE`},{label:`INACTIVE`,value:`INACTIVE`}]})})]})})]})})]})}var qE=KE;function JE(e,t){return String(e||t).replace(/\/\*$/,``).replace(/\/+$/,``)||t}function YE({loginPath:e=`/login`,adminPath:t=`/admin`,fallbackPath:n=`/`}){let r=(0,d.useNavigate)(),i=JE(e,`/login`),a=JE(t,`/admin`),o=`${a}/*`;return(0,l.jsxs)(d.Routes,{children:[(0,l.jsx)(d.Route,{path:i,element:(0,l.jsx)(Iy,{defaultRedirectPath:a,onLogin:()=>r(a,{replace:!0})})}),(0,l.jsx)(d.Route,{path:o,element:(0,l.jsx)(Oy,{loginPath:i,children:(0,l.jsx)(Fy,{children:(0,l.jsx)(qE,{onLogout:()=>r(i,{replace:!0})})})})}),(0,l.jsx)(d.Route,{path:n,element:(0,l.jsx)(d.Navigate,{to:a,replace:!0})}),(0,l.jsx)(d.Route,{path:`*`,element:(0,l.jsx)(d.Navigate,{to:a,replace:!0})})]})}function XE(e){return(0,l.jsx)(d.BrowserRouter,{children:(0,l.jsx)(YE,{...e})})}function ZE(e){return Array.isArray(e)?e.map(String).map(e=>e.trim()).filter(Boolean):String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)}function QE(e){return ZE(e).every(e=>/^[^,\s@]+@[^,\s@]+\.[^\s@]{2,}$/.test(e))}var{Text:$E}=s.Typography,eD=new Set([`file`,`document`,`attachment`]);function tD(e){return eD.has(String(e?.type??``).trim().toLowerCase())}function nD(e){return String(e??``).trim().toLowerCase().replace(/[^a-z0-9]/g,``)}function rD(e){return e?typeof e==`string`?e:String(typeof e==`object`?e?._id??e?.id??e?.$oid??``:e):``}function iD(e,t,n){if(!e)return``;let r=nD(t),i=nD(n);if(!r||r===i||r.replace(/s$/,``)===i.replace(/s$/,``))return rD(e?._id??e?.id);let a=r.replace(/s$/,``),o=[`${a}Id`,`${r}Id`,a,r,`${a}._id`,`${r}._id`];for(let t of o){let n=rD(cD(e,t));if(n)return n}return``}async function aD(e){let t=e?.fileUrl??e?.url??e?.downloadUrl;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load attachment ${e?.fileName||``}`.trim());let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.uniqueName??`attachment`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function oD(e,t,r){if(!t)return[];let i=[];(e?.placeholders??[]).forEach(e=>{(e?.holders??[]).filter(tD).forEach(a=>{let o=iD(t,e?.moduleName,r);o&&i.push((async()=>{let t=await n._n(e.moduleName,o,a.value);return Promise.all((t?.data??[]).map(aD))})())})});let a=(await Promise.all(i)).flat().filter(Boolean),o=new Set;return a.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!o.has(t)&&(o.add(t),!0)})}function sD(e,t){return[...new Set([...ZE(e),...ZE(t)])].join(`, `)}function cD(e,t,n=``){let r=String(n??``).trim().toLowerCase();return String(t??``).split(`.`).reduce((e,t)=>{let n=e;return Array.isArray(n)&&r===`last`&&(n=n.at(-1)),n?.[t]},e)}function lD(e,t,n){if(!n)return String(e??``);let r=new Map;return(t??[]).forEach(e=>(e.holders??[]).forEach(e=>{r.set(e.key,tD(e)?``:cD(n,e.value,e.arrayMode))})),String(e??``).replace(/{{\.?([\w.]+)}}/g,(e,t)=>{let n=r.get(t);return n==null?e:String(n)})}function uD({value:e,onChange:t,defaultTemplateId:r=``,ready:i=!0,title:a=`Mail`,hint:u,bccHint:d,afterBcc:f,beforeFields:p,className:m=``,contextRecords:h=[],moduleName:g=``}){let _=(0,o.useRef)(``),v=n=>t?.({...e,...n});async function y(t,n=!1){if(t)try{let r=await QC(t),i=h[0],a=await oD(r,i,g);v({to:sD(e.to,(r?.toMail??[]).map(e=>lD(e,r?.placeholders,i))),cc:sD(e.cc,(r?.ccMail??[]).map(e=>lD(e,r?.placeholders,i))),bcc:sD(e.bcc,(r?.bccMail??[]).map(e=>lD(e,r?.placeholders,i))),subject:lD(r?.subject,r?.placeholders,i),contents:lD(r?.body,r?.placeholders,i),attachments:a}),n||s.message.success(`Loaded ${r?.name||`email template`}`)}catch(e){n||s.message.error(e?.message||`Could not load email template`)}}return(0,o.useEffect)(()=>{!i||!r||_.current===r||(_.current=r,y(r,!0))},[r,i]),(0,l.jsxs)(`div`,{className:`common-mail-composer ${m}`.trim(),children:[(0,l.jsx)(`div`,{className:`mail-popup__header`,children:(0,l.jsxs)(`div`,{className:`mail-popup__header-brand`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,l.jsx)(c.MailOutlined,{})}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:a}),u&&(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__header-hint`,children:u})]})]})}),(0,l.jsxs)(`div`,{className:`mail-popup__body`,children:[p&&(0,l.jsxs)(l.Fragment,{children:[p,(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`To`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.to),onChange:e=>v({to:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:`Add email addresses`}),(0,l.jsxs)(`div`,{className:`mail-popup__cc-bcc-actions`,children:[!e.showCc&&(0,l.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>v({showCc:!0}),children:`Cc`}),!e.showBcc&&(0,l.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>v({showBcc:!0}),children:`Bcc`})]})]}),(0,l.jsx)(s.Divider,{}),e.showCc&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Cc`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.cc),onChange:e=>v({cc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`})]}),(0,l.jsx)(s.Divider,{})]}),e.showBcc&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Bcc`}),(0,l.jsx)(s.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:ZE(e.bcc),onChange:e=>v({bcc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:d})]}),f,(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Subject`}),(0,l.jsx)(s.Input,{variant:`borderless`,value:e.subject,onChange:e=>v({subject:e.target.value}),placeholder:`Enter subject`,className:`mail-popup__field-input`})]}),(0,l.jsx)(s.Divider,{}),!!e.attachments?.length&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__field-label`,children:`Attachments`}),(0,l.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,padding:`4px 0`},children:e.attachments.map((e,t)=>(0,l.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,l.jsx)(c.PaperClipOutlined,{}),e.name]},`${e.name}:${e.size}:${t}`))})]}),(0,l.jsx)(s.Divider,{})]}),(0,l.jsxs)(`div`,{className:`mail-popup__message-section`,children:[(0,l.jsx)($E,{type:`secondary`,className:`mail-popup__message-label`,children:`Message`}),(0,l.jsx)(n.Tn,{value:e.contents,onChange:e=>v({contents:e})})]})]})]})}var{Text:dD}=s.Typography,fD=/^[a-fA-F0-9]{24}$/,pD=new Set([`file`,`document`,`attachment`]);async function mD(e){let t=e?.fileUrl??e?.url??e?.downloadUrl;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load attachment ${e?.fileName||``}`.trim());let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.uniqueName??`attachment`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function hD(e,t,r=[]){let i=String(e??``);if(!i||!r.length||!t)return{contents:i,attachments:[]};let a=(await n.Rr(t).catch(()=>[])).filter(e=>pD.has(String(e?.type??``).trim().toLowerCase())).filter(e=>{let t=String(e?.value??e?.field??e?.fieldKey??e?.key??e?.name??``).replace(/^\./,``);return t&&(i.includes(`{{.${t}}}`)||i.includes(`{{${t}}}`))});if(!a.length)return{contents:i,attachments:[]};let o=[];for(let e of a){let a=String(e?.value??e?.field??e?.fieldKey??e?.key??e?.name??``).replace(/^\./,``);i=i.replaceAll(`{{.${a}}}`,``).replaceAll(`{{${a}}}`,``);for(let e of r){let r=String(e?._id??e?.id??``);if(!fD.test(r))continue;let i=await n._n(t,r,a).catch(()=>({data:[]})),s=await Promise.all((i?.data??[]).map(mD));o.push(...s.filter(Boolean))}}let s=new Set,c=o.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!s.has(t)&&(s.add(t),!0)});return{contents:i,attachments:c}}function gD(e){return e===!0?!0:typeof e==`number`?e===1:typeof e==`string`&&[`true`,`1`,`yes`,`y`,`on`].includes(e.trim().toLowerCase())}function _D(e){return[`candidate`,`candidates`].includes(String(e??``).trim().toLowerCase())}function vD(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&String(t).trim()!==``)return t}}function yD(e){return[vD(e,`jobReferenceId`,`clientJobId`,`jobCode`,`reqId`,`jobId`),vD(e,`jobTitle`,`title`,`name`)].filter(Boolean).join(` - `)||String(vD(e,`_id`,`id`)??`Job`)}function bD(e){let t=vD(e,`_id`,`id`,`jobId`);return t?{value:String(t),label:yD(e),raw:e}:null}function xD(e=[],t=[]){let n=[...t,`email`,`candidateEmail`,`candidate_email`,`emailId`,`mailId`,`alternateEmail`,`altEmail`,`basicDetails.email`,`basicDetails.alternateEmail`,`basicDetails.altEmail`,`candidate.email`,`candidate.emailId`,`submission.email`,`submission.candidateEmail`].filter(Boolean);return e.flatMap(e=>n.map(t=>vD(e,t))).flatMap(e=>Array.isArray(e)?e:[e]).flatMap(ZE)}function SD(e){return e?.data?.record??e?.record??e?.data??e}function CD(e){let t=vD(e,`jobId`,`job_id`,`job._id`,`job.id`,`jobs._id`,`jobs.id`);return typeof t==`object`?vD(t,`_id`,`id`,`$oid`):t}function wD(e={}){return{subject:e.subject??e.Subject??``,contents:e.contents??e.Contents??e.body??e.Body??``,toMail:e.toMail??e.ToMail??[],ccMail:e.ccMail??e.CcMail??[],bccMail:e.bccMail??e.BccMail??[]}}function TD(){let e=(0,d.useNavigate)(),{state:t={}}=(0,d.useLocation)(),{selectedIds:r=[],selectedRecords:i=[],recipients:a=[],subject:c=``,onSend:u,moduleName:f=``,popupAction:p={}}=t,m=gD(p.requireJobId)||gD(t.requireJobId)||_D(f),h=(0,o.useMemo)(()=>[p.recipientField,p.recipientPath,t.recipientField,t.recipientPath],[p.recipientField,p.recipientPath,t.recipientField,t.recipientPath]),g=r.join(`|`),_=(0,o.useMemo)(()=>[...a,...xD(i,h)],[a,i,h]),v=String(t.jobId??CD(i[0])??``).trim(),y=r[0]??i[0]?._id??i[0]?.id??``,[b,x]=(0,o.useState)(v),[S,C]=(0,o.useState)(m?v:String(v||y||``)),[w,T]=(0,o.useState)({to:[...new Set(_)].join(`, `),cc:``,bcc:``,subject:c,contents:``,attachments:[],showCc:!1,showBcc:!1}),[E,D]=(0,o.useState)(!S),[O,k]=(0,o.useState)(!1),[A,j]=(0,o.useState)([]),[M,N]=(0,o.useState)(!1),[P,F]=(0,o.useState)(!1),I=(0,o.useRef)(!1),L=(0,o.useRef)(``),R=(0,o.useRef)(0);(0,o.useEffect)(()=>{if(!_D(f)||I.current||ZE(w.to).length>0||r.length===0||L.current===g)return;let e=!1;return L.current=g,Promise.all(r.map(e=>n.pn(f,e).catch(()=>null))).then(t=>{if(e)return;let n=xD(t.map(SD).filter(Boolean),h);n.length&&T(e=>ZE(e.to).length>0?e:{...e,to:[...new Set(n)].join(`, `)})}),()=>{e=!0}},[w.to,f,h,g,r]),(0,o.useEffect)(()=>{if(!S){D(!0);return}let e=++R.current,t=!1;async function n(){D(!1),k(!0),T(e=>({...e,contents:``}));try{let n=wD(await vn(S)),r=await hD(n.contents||``,f,i),a=r.contents;if(a.trim())try{a=await yn(a,n.subject||c)}catch(n){!t&&e===R.current&&s.message.warning(n?.message||`Mail content formatting failed. Showing original content.`)}if(t||e!==R.current)return;T(e=>({...e,subject:n.subject||e.subject,to:n.toMail?.length?Array.isArray(n.toMail)?n.toMail.join(`, `):String(n.toMail):e.to,cc:n.ccMail?.length?Array.isArray(n.ccMail)?n.ccMail.join(`, `):String(n.ccMail):e.cc,bcc:n.bccMail?.length?Array.isArray(n.bccMail)?n.bccMail.join(`, `):String(n.bccMail):e.bcc,contents:a||r.contents||e.contents,attachments:r.attachments,showCc:e.showCc||!!n.ccMail?.length,showBcc:e.showBcc||!!n.bccMail?.length}))}catch(n){!t&&e===R.current&&m&&s.message.error(n?.message||`Could not load mail template for this Job ID`)}finally{!t&&e===R.current&&(D(!0),k(!1))}}return n(),()=>{t=!0}},[S,m]);function z(e=b){let t=String(e??``).trim();if(!fD.test(t)){C(``),t&&s.message.warning(`Enter a valid 24-character Job ID`);return}if(t===S){C(``),queueMicrotask(()=>C(t));return}C(t)}function B(e,t){if(!e){C(``),x(``);return}let n=t?.label??``;x(String(n||(e??``))),z(e)}function V(e){let t=String(e??``).trim();if(x(t),t.length<3){j([]);return}N(!0),ae(t).then(e=>{let t=(Array.isArray(e)?e:[]).map(bD).filter(Boolean);j(t)}).catch(e=>s.message.error(e?.message||`Unable to search jobs`)).finally(()=>N(!1))}let ee=E&&(!m||fD.test(S))&&ZE(w.to).length+ZE(w.cc).length+ZE(w.bcc).length>0&&QE(w.to)&&QE(w.cc)&&QE(w.bcc)&&w.subject.trim()&&w.contents.trim();async function te(){if(!(!ee||P)){F(!0);try{await bn({jobId:S,toMail:ZE(w.to),ccMail:ZE(w.cc),bccMail:ZE(w.bcc),subject:w.subject,contents:w.contents,attachments:w.attachments??[]}),s.message.success(`Mail sent successfully`),typeof u==`function`&&u({...w,message:w.contents,selectedIds:r}),e(-1)}catch(e){s.message.error(e?.message||`Failed to send mail`)}finally{F(!1)}}}function ne(e){e?.to!==w.to&&(I.current=!0),T(e)}return(0,l.jsx)(s.Drawer,{open:!0,placement:`right`,onClose:()=>e(-1),closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,l.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>e(-1),children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:P,disabled:!ee,onClick:te,children:`Send`})]}),children:(0,l.jsx)(s.Spin,{spinning:O,description:`Loading mail content...`,size:`large`,children:(0,l.jsx)(uD,{value:w,onChange:ne,moduleName:f,defaultTemplateId:m?``:p.defaultTemplateId??t.defaultTemplateId??``,ready:E,contextRecords:i,beforeFields:m?(0,l.jsxs)(`div`,{className:`mail-popup__job-row`,children:[(0,l.jsx)(dD,{type:`secondary`,className:`mail-popup__field-label`,children:`Job Title / ID`}),(0,l.jsx)(s.Select,{showSearch:!0,allowClear:!0,filterOption:!1,value:S||void 0,searchValue:b,onSearch:V,onChange:B,onClear:()=>{C(``),x(``),j([])},placeholder:`Minimum 3 characters`,notFoundContent:M||O?(0,l.jsx)(s.Spin,{size:`small`}):null,options:A,className:`mail-popup__job-input`})]}):null})})})}var{Text:ED}=s.Typography,DD=e=>e===!0||e===1||e===`1`;function OD(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function kD(e){return e?e.name?e.name:e.fullName?e.fullName:e.firstName||e.lastName?[e.firstName,e.lastName].filter(Boolean).join(` `):e.candidateName??e.clientName??e.jobTitle??``:``}function AD(e){return e?e.email??e.emailId??e.emailAddress??``:``}function jD(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function MD(e,t){let n=String(e?.type??``).trim().toLowerCase(),r=`${e?.field??``} ${e?.label??``}`;if(!([`file`,`document`,`upload`].includes(n)||/resume|cv|document|attachment/i.test(r)))return e;let i=String(e?.field??``).trim().toLowerCase(),a=t.filter(e=>{let t=String(e?.fieldName??e?.field??e?.formField??e?.key??``).trim().toLowerCase();return t&&i&&t===i?!0:/resume|cv/i.test(r)?/resume|cv/i.test(`${t} ${e?.fileName??``} ${e?.name??``}`):!1}).map(t=>({name:t?.fileName||t?.name||t?.uploadedFileName||t?.originalName||e?.label||`Document`,url:t?.fileUrl||t?.downloadUrl||t?.signedUrl||t?.url||``,type:t?.mimeType||t?.contentType||t?.type})).filter(e=>e.url);return a.length?{...e,value:a,renderType:`document`}:e}function ND(e){let t=Vl(e);return[...e].filter(e=>!DD(e.hideGroup)&&!DD(e.hideGroupInDetail)).filter(e=>Hl(e,t)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,fields:[...e.fields??[]].filter(e=>String(e.field??``).trim()!==``&&(e.show===void 0||DD(e.show))&&Hl(e,t)).map(e=>({...e,label:Wl(e,t)})).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function PD({record:e}){let t=kD(e),n=AD(e),r=jD(e);return!t&&!n?null:(0,l.jsxs)(`div`,{className:`preview-profile-card`,children:[(0,l.jsxs)(`div`,{className:`preview-profile-card__info`,children:[(0,l.jsx)(s.Avatar,{className:`preview-profile-card__avatar`,children:OD(t)}),(0,l.jsxs)(`div`,{className:`preview-profile-card__text`,children:[t&&(0,l.jsx)(`span`,{className:`preview-profile-card__name`,children:t}),n&&(0,l.jsx)(`span`,{className:`preview-profile-card__email`,children:n})]})]}),r&&(0,l.jsx)(s.Tag,{className:`preview-profile-card__status`,children:r})]})}function FD({fields:e,centralDocuments:t=[],recordValueMap:r={}}){let[i,a]=(0,o.useState)([]),[s,c]=(0,o.useState)(0),[u,d]=(0,o.useState)(!1);if(!e?.length)return null;function f(e,t){a(e),c(t),d(!0)}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{className:`preview-field-grid`,children:e.map(e=>{let i=MD(e,t),a=i.value,o=i.renderType===`document`?n.Rt(a).filter(e=>e.url):[];return o.length?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:i.label}),(0,l.jsx)(`div`,{className:`preview-document-list`,children:o.map((e,t)=>(0,l.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>f(o,t),title:`Preview ${e.name||`document`}`,children:[(0,l.jsx)(`span`,{className:`preview-document-link__name`,children:e.name||`Document ${t+1}`}),(0,l.jsx)(`span`,{className:`preview-document-link__action`,children:`Preview`})]},`${e.url}-${t}`))})]},i.field??i.label):(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:i.label}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:(0,l.jsx)(Pu,{field:i,record:r})})]},i.field??i.label)})}),(0,l.jsx)(n.wn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function ID(){let e=(0,d.useNavigate)(),{moduleName:t=``,record:r=null}=(0,d.useLocation)().state??{},i=r?.id??r?._id,[a,c]=(0,o.useState)([]),[u,f]=(0,o.useState)(!!(t&&i)),[p,m]=(0,o.useState)(null),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)(0),y=(0,o.useRef)(null),b=(0,o.useRef)(null),x=(0,o.useRef)([]),S=(0,o.useRef)([]),C=(0,o.useMemo)(()=>ND(a),[a]),w=(0,o.useMemo)(()=>Vl(a),[a]);(0,o.useEffect)(()=>{if(!t||!i)return;let e=!1;return Promise.all([Gn({module:t,id:i,view:`detail`}),n._n(t,i).catch(()=>({data:[]}))]).then(([t,n])=>{e||(c(Array.isArray(t)?t:[]),g(Array.isArray(n)?n:n?.data??[]),f(!1))}).catch(t=>{e||(m(t.message||`Failed to load preview`),g([]),f(!1))}),()=>{e=!0}},[t,i]);function T(){e(-1)}function E(e,t){return e?.label??e?.name??`Section ${t+1}`}function D(e){let t=y.current,n=S.current[e];if(!t||!n)return;let r=t.getBoundingClientRect(),i=n.getBoundingClientRect(),a=(t.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+12,o=t.scrollTop+i.top-r.top-a;v(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function O(){let e=y.current;if(!e||!S.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;S.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),v(e=>e===n?e:n)}(0,o.useEffect)(()=>{let e=b.current,t=x.current[_];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth),i=Math.min(Math.max(0,n),r);typeof e.scrollTo==`function`?e.scrollTo({left:i,behavior:`smooth`}):e.scrollLeft=i},[_,C.length]);function k(){return C.length?(0,l.jsx)(`div`,{ref:b,className:`preview-stepper-wrap`,"aria-label":`Preview sections`,children:(0,l.jsx)(`div`,{className:`preview-stepper`,children:C.map((e,t)=>(0,l.jsxs)(`div`,{className:`preview-stepper__segment`,children:[(0,l.jsxs)(`button`,{type:`button`,className:`preview-stepper__item`,ref:e=>{x.current[t]=e},onClick:()=>D(t),"aria-current":_===t?`step`:void 0,title:`Go to ${E(e,t)}`,children:[(0,l.jsx)(`span`,{className:[`preview-stepper__circle`,t<_?`preview-stepper__circle--done`:``,t===_?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,l.jsx)(`span`,{className:[`preview-stepper__label`,t===_?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:E(e,t)})]}),t<C.length-1&&(0,l.jsx)(`span`,{className:[`preview-stepper__line`,t<_?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let A=(0,l.jsxs)(`div`,{className:`preview-modal-header`,children:[(0,l.jsx)(`span`,{className:`preview-modal-module`,children:t.toUpperCase()}),(0,l.jsx)(`span`,{className:`preview-modal-title`,children:t?` Details`:`Preview`})]}),j=(0,l.jsx)(`div`,{className:`wizard-footer preview-scroll-footer`,children:(0,l.jsx)(`div`,{className:`wizard-footer-nav`,children:(0,l.jsx)(s.Button,{onClick:T,children:`Close`})})});function M(){return!t||!i?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):u?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,l.jsx)(s.Spin,{size:`small`})}):p?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:p}):C.length?(0,l.jsx)(`div`,{className:`preview-section-list`,children:C.map((e,t)=>(0,l.jsxs)(`section`,{ref:e=>{S.current[t]=e},className:`preview-section-card`,"data-section-index":t,children:[(0,l.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,l.jsx)(`span`,{className:`preview-section-card__number`,children:t+1}),(0,l.jsx)(`span`,{className:`preview-section-card__title`,children:E(e,t)})]}),(0,l.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,l.jsx)(FD,{fields:e.fields,centralDocuments:h,recordValueMap:w}):(0,l.jsx)(ED,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??t))}):(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`No form groups found.`})}return(0,l.jsx)(s.Modal,{centered:!0,className:`wizard-modal preview-modal preview-scroll-modal`,footer:j,open:!0,title:A,width:`min(900px, calc(100vw - 32px))`,onCancel:T,mask:{closable:!1},children:(0,l.jsxs)(`div`,{ref:y,className:`wizard-body preview-scroll-body`,onScroll:O,children:[!u&&!p&&C.length>0&&k(),r&&(0,l.jsx)(PD,{record:r}),M()]})})}var{Text:LD}=s.Typography,{TextArea:RD}=s.Input,zD=[{key:`basic`,title:`Basic Info`,description:`General details`,fields:[{name:`firstName`,label:`First Name`,type:`input`,required:!0,placeholder:`Enter first name`,span:12},{name:`lastName`,label:`Last Name`,type:`input`,required:!0,placeholder:`Enter last name`,span:12},{name:`email`,label:`Email Address`,type:`input`,required:!0,placeholder:`Enter email address`,rules:[{type:`email`,message:`Please enter a valid email`}]},{name:`phone`,label:`Phone`,type:`input`,placeholder:`Enter phone number`}]},{key:`details`,title:`Details`,description:`Additional info`,fields:[{name:`role`,label:`Role`,type:`select`,required:!0,placeholder:`Select a role`,span:12,options:[{label:`Developer`,value:`developer`},{label:`Designer`,value:`designer`},{label:`Manager`,value:`manager`},{label:`Analyst`,value:`analyst`}]},{name:`department`,label:`Department`,type:`select`,placeholder:`Select department`,span:12,options:[{label:`Engineering`,value:`engineering`},{label:`Product`,value:`product`},{label:`Operations`,value:`operations`},{label:`Finance`,value:`finance`}]},{name:`notes`,label:`Notes`,type:`textarea`,placeholder:`Any additional notes...`}]},{key:`confirm`,title:`Confirm`,description:`Review & submit`,isReview:!0}];function BD(e){switch(e.type){case`select`:return(0,l.jsx)(s.Select,{placeholder:e.placeholder,options:e.options,style:{width:`100%`}});case`textarea`:return(0,l.jsx)(RD,{rows:3,placeholder:e.placeholder});case`number`:return(0,l.jsx)(s.InputNumber,{placeholder:e.placeholder,style:{width:`100%`}});default:return(0,l.jsx)(s.Input,{type:e.inputType||`text`,placeholder:e.placeholder})}}function VD({steps:e,form:t}){let n=t.getFieldsValue(),r=e.filter(e=>!e.isReview);return r.some(e=>(e.fields||[]).some(e=>n[e.name]!==void 0&&n[e.name]!==``))?(0,l.jsxs)(`div`,{className:`wizard-review-content`,children:[r.map(e=>(0,l.jsxs)(`div`,{className:`wizard-review-section`,children:[(0,l.jsx)(LD,{className:`wizard-review-section-title`,children:e.title}),(0,l.jsx)(`div`,{className:`wizard-review-grid`,children:(e.fields||[]).map(e=>{let t=n[e.name],r=t===void 0||t===``||t===null?`—`:String(t);return(0,l.jsxs)(`div`,{className:`wizard-review-row`,children:[(0,l.jsx)(`span`,{className:`wizard-review-label`,children:e.label}),(0,l.jsx)(`span`,{className:`wizard-review-separator`,children:`:`}),(0,l.jsx)(`span`,{className:`wizard-review-value`,children:r})]},e.name)})})]},e.key)),(0,l.jsxs)(`div`,{className:`wizard-review-confirm-note`,children:[(0,l.jsx)(c.CheckCircleOutlined,{className:`wizard-review-confirm-icon`}),(0,l.jsx)(LD,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,l.jsx)(`div`,{className:`wizard-review-empty`,children:(0,l.jsx)(LD,{type:`secondary`,children:`No data entered yet.`})})}function HD(){let[e]=s.Form.useForm(),t=(0,d.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=zD,onSubmit:a}=(0,d.useLocation)().state??{},[c,u]=(0,o.useState)(0),f=i[c],p=c===i.length-1,m=c===0;function h(){t(-1)}function g(){let t=(f.fields||[]).map(e=>e.name);e.validateFields(t.length>0?t:void 0).then(()=>{u(e=>e+1)})}function _(){u(e=>e-1)}function v(){let n=e.getFieldsValue();typeof a==`function`&&a(n),t(-1)}let y=i.map((e,t)=>({title:e.title,description:e.description,status:t<c?`finish`:t===c?`process`:`wait`})),b=r?`${n} — ${r}`:n;return(0,l.jsxs)(s.Modal,{open:!0,title:b,footer:(0,l.jsxs)(`div`,{className:`wizard-footer`,children:[(0,l.jsx)(s.Button,{onClick:h,children:`Cancel`}),(0,l.jsxs)(`div`,{className:`wizard-footer-nav`,children:[!m&&(0,l.jsx)(s.Button,{onClick:_,children:`Back`}),p?(0,l.jsx)(s.Button,{type:`primary`,onClick:v,children:`Submit`}):(0,l.jsx)(s.Button,{type:`primary`,onClick:g,children:`Next`})]})]}),onCancel:h,width:`min(680px, calc(100vw - 32px))`,centered:!0,className:`wizard-modal`,children:[(0,l.jsx)(`div`,{className:`wizard-steps-container`,children:(0,l.jsx)(s.Steps,{current:c,items:y,size:`small`,className:`wizard-steps`})}),(0,l.jsx)(`div`,{className:`wizard-body`,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,children:[i.filter(e=>!e.isReview).map((e,t)=>(0,l.jsx)(`div`,{style:{display:t===c?`block`:`none`},children:(0,l.jsx)(s.Row,{gutter:16,children:(e.fields||[]).map(e=>(0,l.jsx)(s.Col,{span:e.span||24,children:(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,rules:[...e.required?[{required:!0,message:`${e.label} is required`}]:[],...e.rules||[]],children:BD(e)})},e.name))})},e.key)),f.isReview&&(0,l.jsx)(VD,{steps:i,form:e})]})})]})}function UD({titleText:e,titleIcon:t}){let n=t===`delete`;return(0,l.jsxs)(`span`,{className:`dynamic-popup__header`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box${n?` dynamic-popup__header-icon-box--danger`:``}`,children:n?(0,l.jsx)(c.DeleteOutlined,{}):(0,l.jsx)(c.AppstoreOutlined,{})}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:e})]})}function WD({note:e,description:t,showSelectedCount:r,count:i,itemLabel:a,bodyText:o,deleteError:s}){return(0,l.jsxs)(l.Fragment,{children:[e&&(0,l.jsx)(n.En,{variant:`body`,color:`secondary`,className:`dynamic-popup__note`,children:e}),t&&(0,l.jsx)(n.En,{variant:`body`,className:`dynamic-popup__description`,children:t}),r&&i>0&&(0,l.jsxs)(n.En,{variant:`body`,className:`dynamic-popup__selected-count`,children:[`Changing status for `,(0,l.jsx)(`strong`,{children:i}),` selected `,a,`.`]}),o&&(0,l.jsx)(n.En,{variant:`body`,children:o}),s&&(0,l.jsx)(n.En,{variant:`caption`,color:`danger`,className:`dynamic-popup__error`,children:s})]})}function GD({footerNote:e}){return e?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:e}):null}function KD(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function qD(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function JD(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isNaN(t)||t<=0?!1:t<=Date.now()+864e5}function YD(e){if(!JD(e))return``;let t=new Date(e),n=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=new Date,i=Math.round((n(r)-n(t))/864e5);if(i<=0)return`Today`;if(i===1)return`Yesterday`;if(i<=30)return`${i} days ago`;let a=(r.getFullYear()-t.getFullYear())*12+(r.getMonth()-t.getMonth());if(r.getDate()<t.getDate()&&--a,a=Math.max(1,a),a<12)return`${a} month${a===1?``:`s`} ago`;let o=Math.floor(a/12);return`${o} year${o===1?``:`s`} ago`}function XD(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,e?.updatedAt,...t.map(e=>e?.submittedAt||e?.updatedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function ZD(e){let t=Array.isArray(e?.submissionHistory)?e.submissionHistory:[],n=[e?.lastSubmittedAt,e?.submittedAt,...t.map(e=>e?.submittedAt)].filter(Boolean);return n.length?n.reduce((e,t)=>new Date(t)>new Date(e)?t:e):null}function QD(e,t){if(typeof e==`string`)return{label:e,value:e};if(e?.label!==void 0&&e?.value!==void 0&&!t?.labelTemplate&&!t?.valueKey)return e;let{labelKey:n,valueKey:r,labelTemplate:i}=t??{},a=i?.includes(`{lastdate}`)?{...e,lastdate:YD(XD(e))}:e,o=(i?qD(KD(i,a)):null)||(n?e?.[n]:null)||e?.name||e?.fullName||e?.candidateName||e?.title||e?.displayName||e?.text||e?.applicantReferenceId||e?.applicantRefrenceId||String(Object.values(e||{})[0]??``),s=(r?e?.[r]:null)??e?.id??e?._id??e?.applicantReferenceId??e?.applicantRefrenceId??String(Object.values(e||{})[0]??``),c=e?.disabled===!0||e?.disable===!0,l=String(e?.optionNote??``).trim(),u={label:l?`${String(o)} — ${l}`:String(o),value:String(s),_raw:e};if(c&&(u.disabled=!0),l&&(u.title=l),e?.isSubmitted===!0||e?.alreadySubmitted===!0){u.alreadySubmitted=!0,u.existingSubmissionId=String(e?.existingSubmissionId??e?.jobSubmissionId??e?.submissionId??``);let t=e?.submittedAt||ZD(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||ZD(e);t&&(u.priorSubmittedAt=t)}return u}function $D(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>QD(t,e))}function eO(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var tO=`DD MMM YYYY`,nO=`DD MMM YYYY, h:mm A`;function rO(e,t){if(e==null||e===``)return``;let n=(0,u.default)(e);return n.isValid()?t===`relative`?YD(e)||(JD(e)?n.format(tO):`Not updated`):JD(e)?n.format(tO):``:String(e)}function iO(e,t){return e?String(e).includes(`{`)?qD(KD(e,t)):String(t?.[e]??e).trim():``}function aO(e){if(e?.alreadySubmitted){let t=e?.submittedAt?(0,u.default)(e.submittedAt):null;return{tone:`blocked`,tooltip:t?.isValid()?`Already submitted to this job on ${t.format(nO)}`:`Already submitted to this job — a candidate can only be submitted once per job`}}if(e?.isFromSubmission){let t=e?.priorSubmittedAt?(0,u.default)(e.priorSubmittedAt):null;return{tone:`history`,tooltip:t?.isValid()?`Previously submitted on ${t.format(nO)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function oO(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function sO({meta:e}){return(0,l.jsx)(`div`,{className:`dynamic-popup__option-dates`,children:e.map(e=>(0,l.jsxs)(o.Fragment,{children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-date-label`,children:e.label}),(0,l.jsx)(`span`,{className:`dynamic-popup__option-date-value`,children:e.text})]},e.label))})}function cO({option:e,layout:t}){let n=e?._raw??e??{},r=iO(t.id,n),i=iO(t.title,n)||String(e?.label??``),a=iO(t.subtitle,n),o=iO(t.titleAccent?.key,n),u=iO(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:rO(n?.[e.key],e.type)})).filter(e=>e.text),p=oO(e,n),m=aO(e);return(0,l.jsxs)(`div`,{className:`dynamic-popup__option`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-tick${m?` dynamic-popup__option-tick--${m.tone}`:``}`,children:m&&(0,l.jsx)(s.Tooltip,{title:m.tooltip,placement:`topLeft`,children:(0,l.jsx)(c.CheckCircleFilled,{"aria-label":m.tooltip})})}),(0,l.jsxs)(`div`,{className:`dynamic-popup__option-main`,children:[(0,l.jsxs)(`div`,{className:`dynamic-popup__option-head`,children:[r&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-id`,children:r}),(0,l.jsxs)(`span`,{className:`dynamic-popup__option-title`,children:[(0,l.jsx)(`span`,{className:`dynamic-popup__option-title-text`,children:i}),o&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-title-accent${u?` dynamic-popup__option-title-accent--${u}`:``}`,children:`${d}${o}`})]}),p&&(0,l.jsx)(`span`,{className:`dynamic-popup__option-flag`,children:p})]}),a&&(0,l.jsx)(`div`,{className:`dynamic-popup__option-sub`,children:a})]}),e?.alreadySubmitted?(0,l.jsx)(`span`,{className:`dynamic-popup__option-onjob`,children:`On this job`}):f.length>0&&(0,l.jsx)(sO,{meta:f})]})}var{Text:lO}=s.Typography,{TextArea:uO}=s.Input,dO=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],fO=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function pO(e=[]){return e.map(e=>{if(!e||typeof e!=`object`)return e;let t=[e.value,e.user_id,e.userId,e.USER_ID,e.legacyUserId,e.id,e._id].find(e=>e!=null&&String(e).trim()!==``),n=t==null?``:String(t).trim();return{...e,value:n}}).filter(e=>typeof e!=`object`||!e||String(e.value??``).trim()!==``)}function mO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.Input,{value:t,onChange:n,placeholder:e.placeholder,maxLength:e.maxLength,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function hO({field:e,value:t,onChange:n}){return(0,l.jsx)(uO,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function gO({field:e,options:t,value:n,onChange:r}){let i=pO(t);return(0,l.jsx)(s.Select,{showSearch:!0,value:n,onChange:r,options:i,placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function _O({field:e,options:t,value:n,onChange:r}){let i=pO(t);return(0,l.jsx)(s.Select,{mode:`multiple`,showSearch:!0,value:n,onChange:r,options:i,placeholder:e.placeholder,className:`dynamic-popup__field-select`,optionFilterProp:`label`,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function vO({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let o=pO(t),u=e.optionLayout,d=new Map(o.map(e=>[String(e?.value??``),e]));async function f(t,n){let r=n??d.get(String(t??``));(typeof e.onSelectGuard!=`function`||await e.onSelectGuard({value:t,option:r,field:e,popupContext:a,confirm:s.Modal.confirm})!==!1)&&i?.(t)}return(0,l.jsx)(s.Select,{showSearch:!0,filterOption:!1,notFoundContent:e.notFoundContent??null,value:r,onChange:f,options:o,placeholder:e.placeholder,onSearch:n,className:`dynamic-popup__field-select${u?` dynamic-popup__field-select--rich`:``}`,popupClassName:u?`dynamic-popup__option-dropdown`:void 0,listHeight:u?340:void 0,optionLabelProp:`label`,optionRender:u?e=>(0,l.jsx)(cO,{option:e?.data??e,layout:u}):void 0,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function yO({field:e,mentionOpts:t,onMentionSearch:n,value:r,onChange:i}){let a=Number(e.maxLength)>0?Number(e.maxLength):void 0,o=String(r??``).length;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Mentions,{value:r,onChange:i,rows:e.rows??5,placeholder:e.placeholder,prefix:`@`,options:t,onSearch:n,maxLength:a,className:`dynamic-popup__mention-textarea`}),a?(0,l.jsxs)(`div`,{className:`dynamic-popup__char-count`,style:{textAlign:`right`,fontSize:12,marginTop:4,color:o>a*.9?`#b45309`:`#8c8c8c`},children:[o,` / `,a]}):null]})}function bO({field:e={},value:t={},onChange:n}){let r=t.period??`Hourly`,i=t.isRange??!1;function a(e){n?.({...t,...e})}(0,o.useEffect)(()=>{let e={};t.currency??(e.currency=`$`),t.period??(e.period=`Hourly`),Object.keys(e).length&&n?.({...t,...e})},[]);let c=Number(i?t.maxAmount:t.amount),u=i&&t.minAmount!=null&&t.maxAmount!=null&&Number(t.maxAmount)<=Number(t.minAmount),d=e.rateCeiling!=null&&Number.isFinite(c)&&c>Number(e.rateCeiling);return(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[i?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`From`,value:t.minAmount,onChange:e=>a({minAmount:e}),style:{flex:1}}),(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`To`,value:t.maxAmount,onChange:e=>a({maxAmount:e}),style:{flex:1}})]}):(0,l.jsx)(s.InputNumber,{controls:!1,placeholder:`0`,value:t.amount,onChange:e=>a({amount:e}),style:{flex:2}}),(0,l.jsx)(s.Select,{value:t.currency??`$`,options:dO,onChange:e=>a({currency:e}),style:{width:80}}),(0,l.jsx)(s.Select,{value:r,options:fO,onChange:e=>a({period:e}),style:{width:110}})]}),(u||d)&&(0,l.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,l.jsx)(lO,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,l.jsxs)(lO,{type:`danger`,style:{fontSize:12,display:`block`},children:[`Rate must not exceed the client rate (`,e.rateCeiling,`).`]})]}),(0,l.jsxs)(s.Space,{size:`small`,style:{marginTop:8},children:[(0,l.jsx)(s.Switch,{checked:i,onChange:e=>a({isRange:e})}),(0,l.jsx)(`span`,{children:`Range`})]})]})}function xO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.DatePicker,{value:t,onChange:n,placeholder:e.placeholder??`Select date`,style:{width:`100%`},format:`YYYY-MM-DD`})}function SO({field:e,checked:t,onChange:n}){return(0,l.jsx)(s.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function CO({field:e,value:t,onChange:n}){return(0,l.jsx)(s.InputNumber,{value:t,onChange:n,min:e.min,max:e.max,placeholder:e.placeholder,style:{width:`100%`}})}function wO({options:e,value:t,onChange:n}){return(0,l.jsx)(s.Radio.Group,{value:t,onChange:n,options:e})}var TO={input:mO,text:mO,textarea:hO,select:gO,"multi-select":_O,"search-select":vO,"mention-textarea":yO,"candidate-rate":bO,"priority-checkbox":SO,"date-picker":xO,number:CO,radio:wO};function EO(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var DO=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function OO({form:e,fields:t,initialValues:r,dynamicOptions:i,popupContext:a,extraData:o,removedIds:c,setRemovedIds:u,showAlreadyAssigned:d,onValuesChange:f,getSearchHandler:p,getMentionSearchHandler:m,mentionOptions:h}){let g=(o?.recruitersData??[]).filter(e=>{let t=String(e?.user_id??e?.id??e?.userId??``);return t&&!c.includes(t)}),_=d&&o,v=new Set(d?g.map(e=>String(e?.user_id??e?.id??e?.userId??``).trim()).filter(Boolean):[]),y=e=>v.size===0||!Array.isArray(e)?e:e.filter(e=>!v.has(String((e&&typeof e==`object`?e.value??e.id:e)??``).trim()));return!t.length&&!_?null:(0,l.jsxs)(l.Fragment,{children:[_&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`dynamic-popup__already-assigned`,children:[(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,children:`Already Assigned People`}),(0,l.jsx)(`div`,{style:{marginTop:6,display:`flex`,flexWrap:`wrap`,gap:6},children:g.length===0?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,children:`No one is currently assigned to this job.`}):g.map(e=>{let t=String(e?.user_id??e?.id??e?.userId??``),n=e?.name??e?.user_name??e?.userName??e?.email??`Assigned user`;return(0,l.jsx)(s.Tag,{closable:!0,onClose:()=>{t&&u(e=>Array.from(new Set([...e,t])))},children:n},t||n)})})]}),(0,l.jsx)(s.Divider,{style:{margin:`12px 0`}})]}),t.length>0&&(0,l.jsx)(s.Form,{form:e,layout:`vertical`,initialValues:r,onValuesChange:(e,t)=>f(t),children:kO(t).map(e=>AO(e,e=>{let t=y(i[e.name]??$D(e,a)),r=p(e),o=m(e),c=h[e.name]??[],u=EO(e.type),d=TO[e.type],f=[];return e.required&&f.push({required:!0,message:`${e.label||`This field`} is required`}),typeof e.validator==`function`&&f.push({validator:(t,n)=>{let r=e.validator(n,a);return r?Promise.reject(Error(r)):Promise.resolve()}}),DO.has(e.type)&&f.push(n.on({label:e.label,field:e.name,type:e.type})),(0,l.jsx)(s.Form.Item,{name:e.name,label:e.label,rules:f,...u,children:d?(0,l.jsx)(d,{field:e,options:t,onSearch:r,mentionOpts:c,onMentionSearch:o,popupContext:a}):null},e.name)}))})]})}function kO(e){let t=[];for(let n of e){let e=t[t.length-1];n.inlineRow&&e?.inlineRow===n.inlineRow?e.fields.push(n):t.push({inlineRow:n.inlineRow,fields:[n]})}return t.map(e=>e.fields)}function AO(e,t){return e.length===1?t(e[0]):(0,l.jsx)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`},children:e.map((e,n)=>(0,l.jsx)(`div`,{style:{flex:n===0?2:1,minWidth:0},children:t(e)},e.name))},`row-${e.map(e=>e.name).join(`-`)}`)}function jO(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function MO(e){let t=e?.data??e;return Array.isArray(t)?t:Array.isArray(t?.data)?t.data:Array.isArray(t?.items)?t.items:Array.isArray(t?.rows)?t.rows:Array.isArray(t?.records)?t.records:[]}function NO(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function PO(e){if(e==null)return null;if(typeof e==`string`){let t=e.trim();return t?{label:t,value:t,_raw:{name:t}}:null}let t=String(e?.name??e?.clientSubmissionStatusText??e?.label??e?.text??``).trim();if(!t)return null;let n=Number(e?.id??e?.uniqueId??e?.clientSubmissionStatusId??e?.value??0)||0;return{label:t,value:t,_raw:{...e,...n>0?{id:n,uniqueId:n}:{},name:t,type:String(e?.type??e?.clientSubmissionStatusType??``).trim(),isInitialStatus:e?.isInitialStatus===!0,isTerminalStatus:e?.isTerminalStatus===!0,allowedNextStatusIds:Array.isArray(e?.allowedNextStatusIds)?e.allowedNextStatusIds.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}}}function FO(e,t){return NO(t)?PO(e):QD(e,t)}function IO(e){let t=e?.clientSubmissionStatus,n=Number((t&&typeof t==`object`?t?.clientSubmissionStatusId??t?.id??t?.uniqueId:void 0)??e?.clientSubmissionStatusId??e?.clientStatusId??e?.[`clientSubmissionStatus.clientSubmissionStatusId`]??0)||0,r=t&&typeof t==`object`?t?.clientSubmissionStatusText??t?.name??t?.text??t?.label:t;return{id:n,text:String(r??e?.clientSubmissionStatusText??e?.clientStatus??e?.clientStatusText??e?.[`clientSubmissionStatus.clientSubmissionStatusText`]??``).trim()}}function LO(e){let t=Number(e?.id??0)||0,n=String(e?.text??``).trim();return n&&n.toLowerCase()===`not submitted`?!0:t<=0&&!n}function RO(e){return Number(e?._raw?.id??e?._raw?.uniqueId??0)||0}function zO(e){let t=e?._raw?.allowedNextStatusIds;return Array.isArray(t)?t.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}function BO(e){let t=e?.data??e;return t?Array.isArray(t)?t[0]??null:t?.record&&typeof t.record==`object`?t.record:t?.data&&typeof t.data==`object`&&!Array.isArray(t.data)?t.data:typeof t==`object`?t:null:null}function VO(e){return(Array.isArray(e?.selectedRecords)?e.selectedRecords.filter(Boolean):[]).some(e=>!LO(IO(e)))?!0:!LO(IO(e??{}))}async function HO(e,n){if(VO(e))return e;let r=e?.selectedIds?.[0]??e?.selectedRecords?.[0]?._id??e?.selectedRecords?.[0]?.id;if(!r)return e;let i=String(e?.moduleName??`submissions`).trim()||`submissions`,a=new URLSearchParams({module:i,id:String(r)});n&&a.set(`app_id`,n);try{let r=BO(await t.o(t.x,`/module-data-detail?${a.toString()}`,{headers:n?{"X-App-Id":n}:void 0}));if(!r)return e;let i=Array.isArray(e?.selectedRecords)?e.selectedRecords:[];return{...e,selectedRecords:i.length?i.map((e,t)=>t===0?{...e,...r}:e):[r]}}catch(t){return console.warn(`[DynamicPopup] Could not load selected submission detail for client status transition:`,t),e}}function UO(e,t){if(!Array.isArray(e)||!e.length)return[];if(!e.some(e=>e?._raw?.isInitialStatus===!0||e?._raw?.isTerminalStatus===!0||Array.isArray(e?._raw?.allowedNextStatusIds)))return e;let n=Array.isArray(t?.selectedRecords)?t.selectedRecords.filter(Boolean):[],r={clientSubmissionStatus:t?.clientSubmissionStatus,clientSubmissionStatusId:t?.clientSubmissionStatusId,clientSubmissionStatusText:t?.clientSubmissionStatusText,clientStatus:t?.clientStatus,clientStatusId:t?.clientStatusId,clientStatusText:t?.clientStatusText,"clientSubmissionStatus.clientSubmissionStatusId":t?.[`clientSubmissionStatus.clientSubmissionStatusId`],"clientSubmissionStatus.clientSubmissionStatusText":t?.[`clientSubmissionStatus.clientSubmissionStatusText`]},i=n.length?n:[r];return e.filter(t=>i.every(n=>{let i=IO(n);if(LO(i)){let e=IO(r);LO(e)||(i=e)}if(LO(i))return t?._raw?.isInitialStatus===!0;let a=e.find(e=>{let t=RO(e),n=String(e?.label??``).trim();return i.id>0&&t===i.id||i.text&&n.toLowerCase()===i.text.toLowerCase()});return!a||a?._raw?.isTerminalStatus===!0?!1:zO(a).includes(RO(t))}))}function WO({open:e,config:n,api:r,fields:i,popupContext:a,formValues:s}){let[c,l]=(0,o.useState)({}),[u,d]=(0,o.useState)(null);return(0,o.useEffect)(()=>{e||(l({}),d(null))},[e]),(0,o.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=new AbortController;return i.forEach(e=>{!e.fetchOptionsKey||e.fetchOptionsParamKey||Promise.resolve(r.getOptions(e,void 0,a)).then(n=>{t.signal.aborted||l(t=>({...t,[e.name]:n}))}).catch(n=>{t.signal.aborted||console.error(`[DynamicPopup] Failed to load options for field "${e.name}":`,n)})}),()=>t.abort()},[e,r,n,i,a]),(0,o.useEffect)(()=>{if(!e||!n)return;let r=i.filter(jO);if(!r.length)return;let o=new AbortController;return r.forEach(e=>{let n=new URLSearchParams({masterName:e.masterName,offset:`0`,limit:String(e.limit??50)}),r=String(t.b??``).trim();r&&n.set(`app_id`,r),t.o(t.x,`/masters/dropdown?${n.toString()}`,{headers:r?{"X-App-Id":r}:void 0}).then(async t=>{if(o.signal.aborted)return;let n=MO(t).map(t=>FO(t,e)).filter(Boolean),i=a;if(NO(e)&&(i=await HO(a,r)),o.signal.aborted)return;let s=NO(e)?UO(n,i):n;l(t=>({...t,[e.name]:s}))}).catch(t=>{o.signal.aborted||console.error(`[DynamicPopup] Failed to load master options for field "${e.name}":`,t)})}),()=>o.abort()},[e,n,i,a]),(0,o.useEffect)(()=>{if(!e||!n||!r.getOptions)return;let t=i.filter(e=>e.fetchOptionsKey&&e.fetchOptionsParamKey);if(!t.length)return;let o=new AbortController;return t.forEach(e=>{let t=s[e.fetchOptionsParamKey]??a[e.fetchOptionsParamKey],n={[e.fetchOptionsParamKey]:t};Promise.resolve(r.getOptions(e,n,a)).then(t=>{o.signal.aborted||l(n=>({...n,[e.name]:t}))}).catch(t=>{o.signal.aborted||console.error(`[DynamicPopup] Failed to load param-dependent options for "${e.name}":`,t)})}),()=>o.abort()},[e,r,n,i,s,a]),(0,o.useEffect)(()=>{if(!e||!n||!r.loadExtraData)return;let t=new AbortController;return Promise.resolve(r.loadExtraData(a)).then(e=>{t.signal.aborted||d(e)}).catch(e=>{t.signal.aborted||(console.error(`[DynamicPopup] Failed to load extra data:`,e),d(null))}),()=>t.abort()},[e,r,n,a]),{dynamicOptions:c,setDynamicOptions:l,extraData:u}}var GO=500,KO=3;function qO({api:e,open:t,fields:n=[],popupContext:r,setDynamicOptions:i}){let[a,s]=(0,o.useState)({}),c=(0,o.useRef)({}),l=(0,o.useRef)({}),u=(0,o.useRef)({}),d=(0,o.useCallback)((t,n)=>{let a=e.searchOptions??e.searchFetcher;if(typeof a!=`function`)return;l.current[t.name]?.abort();let o=new AbortController;return l.current[t.name]=o,Promise.resolve(a(t,n,r)).then(e=>{if(o.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];i(e=>({...e,[t.name]:n.map(e=>QD(e,t))}))}).catch(e=>{o.signal.aborted||console.error(`[DynamicPopup] Search failed for field "${t.name}":`,e)}),o},[e,r,i]),f=n.filter(e=>(e.searchFetchKey||e.searchFetcher)&&e.preloadOptions!==!1),p=f.map(e=>e.name).join(`|`),m=(0,o.useRef)({runSearch:d,preloadFields:f});(0,o.useEffect)(()=>{m.current={runSearch:d,preloadFields:f}}),(0,o.useEffect)(()=>{if(!t||!p)return;let{runSearch:e,preloadFields:n}=m.current,r=n.map(t=>e(t,``)).filter(Boolean);return()=>r.forEach(e=>e.abort())},[t,p]);function h(t){if(!t.searchFetchKey&&!t.searchFetcher||typeof(e.searchOptions??e.searchFetcher)!=`function`)return;let n=t.searchMinLength??KO;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},GO)}}function g(t){let n=e.getMentionOptions??e.mentionFetcher;if(typeof n==`function`)return e=>{u.current[t.name]?.abort();let i=new AbortController;u.current[t.name]=i,Promise.resolve(n(t,e,r)).then(e=>{if(i.signal.aborted)return;let n=Array.isArray(e)?e:e?.items??e?.list??[];s(e=>({...e,[t.name]:n.map(e=>({value:e.user_name??e.userName??e.username??String(e),label:e.user_name??e.userName??e.username??String(e)}))}))}).catch(e=>{i.signal.aborted||console.error(`[DynamicPopup] Mention search failed for field "${t.name}":`,e)})}}return{mentionOptions:a,getSearchHandler:h,getMentionSearchHandler:g}}function JO({form:e,config:t,api:n,popupContext:r,resolvedIds:i,dynamicOptions:a,extraData:c,removedIds:l,removalOnlySubmit:u=!1,fields:d,onClose:f,onSubmit:p}){let[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(null);async function v(e){let t={resolvedIds:i,dynamicOptions:a,extraData:c,removedIds:l};if(typeof n.submit==`function`)return n.submit(e,r,t);if(typeof p==`function`)return p(e,r,t)}function y(){if(t){if(!d.length){if(t.mode===`delete`&&typeof n.deleteItems==`function`){h(!0),_(null),Promise.resolve(n.deleteItems(i,r)).then(()=>{s.message.success(t.successMessage||`Deleted successfully`),f({success:!0})}).catch(e=>{let t=e?.message||`Delete failed. Please try again.`;_(t),h(!1),s.message.error(t)});return}if(typeof n.onOk==`function`){h(!0),Promise.resolve(n.onOk(r)).then(()=>f({success:!0})).catch(e=>{let t=e?.message||`Failed. Please try again.`;s.message.error(t),h(!1)});return}if(typeof n.submit==`function`){h(!0),Promise.resolve(v({})).then(e=>{e?.navigated||(s.message.success(t.successMessage||`Saved successfully`),f({success:!0}))}).catch(e=>{s.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>h(!1));return}f();return}if(u){h(!0),Promise.resolve(v(e.getFieldsValue())).then(e=>{e?.navigated||(s.message.success(t.successMessage||`Saved successfully`),f({success:!0}))}).catch(e=>{s.message.error(e?.message||`Failed. Please try again.`)}).finally(()=>h(!1));return}e.validateFields().then(async e=>{h(!0);try{if((await v(e))?.navigated)return;s.message.success(t.successMessage||`Saved successfully`),f({success:!0})}catch(e){s.message.error(e?.message||`Failed. Please try again.`)}finally{h(!1)}}).catch(()=>{})}}function b(){h(!1),_(null)}return{handleOk:y,confirming:m,deleteError:g,resetSubmitState:b}}function YO({open:e=!0,config:t,context:n={},onClose:r,onSubmit:i,api:a={}}){let[c]=s.Form.useForm(),[d,f]=(0,o.useState)({}),[p,m]=(0,o.useState)([]),h=s.Form.useWatch([],c,{preserve:!0})??{},g=(0,o.useMemo)(()=>eO(n),[n]),{selectedIds:_=[],selectedRecords:v=[],moduleName:y=``}=g,b=(0,o.useMemo)(()=>_.map((e,t)=>{let n=v[t];return n?.id??n?._id??e}),[_,v]),x=(0,o.useMemo)(()=>t?typeof t.getFields==`function`?t.getFields(g):t.fields??[]:[],[t,g]),S=(0,o.useMemo)(()=>{let e={};return x.forEach(t=>{let n=g[t.initialValueKey];!t.initialValueKey||n===void 0||(e[t.name]=t.type===`date-picker`?(0,u.default)(n):n)}),e},[x,g]),{dynamicOptions:C,setDynamicOptions:w,extraData:T}=WO({open:e,config:t,api:a,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=qO({api:a,open:e,fields:x,popupContext:g,setDynamicOptions:w});function k(e){typeof r==`function`&&r(e)}let A=x.filter(e=>e.required),j=A.every(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0||typeof t==`object`&&!Array.isArray(t)&&Object.keys(t).length===0)}),M=(g.removedIds??[]).length,N=p.length>M,P=A.some(e=>{let t=h[e.name];return!(t==null||t===``||Array.isArray(t)&&t.length===0)}),{handleOk:F,confirming:I,deleteError:L,resetSubmitState:R}=JO({form:c,config:t,api:a,popupContext:g,resolvedIds:b,dynamicOptions:C,extraData:T,removedIds:p,removalOnlySubmit:!!t?.allowRemovalOnlySubmit&&N&&!P,fields:x,onClose:k,onSubmit:i});(0,o.useEffect)(()=>{e&&(c.resetFields(),f(S??{}),m(g.removedIds??[]),R())},[e,S]);let z=!!t?.autoSubmitWhenNoFields&&x.length===0;(0,o.useEffect)(()=>{!e||!z||F()},[e,z]);let B=_.length,V=String(y).replace(/s$/i,``),ee=B===1?V:y,te=v[0]??{},ne=t?.getTitleText?t.getTitleText(B,ee,te,g):t?.title,re=B===1?te.jobTitle??te.title??te.name??te.fullName??te.candidateName??null:null,ie=t?.getBodyText?t.getBodyText(B,V,ee,re,g):t?.bodyText??null,H=typeof t?.getNote==`function`?t.getNote(g):t?.note,ae=t?.disabledUntilFilled&&!j&&!N;if(!t||!e||z)return null;let oe=t.component;return oe?(0,l.jsx)(s.Modal,{open:e,title:t.title||t.getTitleText?(0,l.jsx)(UD,{titleText:ne,titleIcon:t.titleIcon}):null,footer:null,width:t.width??760,centered:!0,maskClosable:!1,onCancel:()=>k(),className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:(0,l.jsx)(oe,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,l.jsxs)(s.Modal,{open:e,title:(0,l.jsx)(UD,{titleText:ne,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:F,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:ae,loading:I},cancelButtonProps:{disabled:I},closable:!I,maskClosable:!1,width:t.width??480,centered:!0,className:`dynamic-popup${t.className?` ${t.className}`:``}`,children:[(0,l.jsx)(WD,{note:H,description:t.description,showSelectedCount:t.showSelectedCount,count:B,itemLabel:ee,bodyText:ie,deleteError:L}),(0,l.jsx)(GD,{footerNote:t.footerNote}),(0,l.jsx)(OO,{form:c,fields:x,initialValues:S,dynamicOptions:C,popupContext:g,extraData:T,removedIds:p,setRemovedIds:m,showAlreadyAssigned:t.showAlreadyAssigned,onValuesChange:f,getSearchHandler:D,getMentionSearchHandler:O,mentionOptions:E})]})}var XO={mode:`delete`,getTitleText:(e,t)=>`Delete ${e>0?`${e} `:``}${t}`,titleIcon:`delete`,okText:`Delete`,okButtonDanger:!0,width:420,getBodyText:(e,t,n,r)=>r?`Are you sure you want to delete the ${r} ${t}?`:e>1?`Are you sure you want to delete ${e} selected ${n}?`:`Are you sure you want to delete this ${t}?`,footerNote:`This action cannot be undone.`,fields:[]},ZO={deleteItems:async(e,t)=>{await H(t.moduleName,e)}},QO=new Map;async function $O(e){return e?(QO.has(e)||QO.set(e,a.r({module:e}).catch(t=>(QO.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),QO.get(e)):[]}function ek(e=[],t){return e.some(e=>{let r=n.C(e,t);return r&&r.severity!==`allow`})}async function tk({targetModule:e,sourceModule:t,recordId:r,region:i}={}){let o={severity:`allow`,message:``,group:null};if(!e||!t||!r)return o;let s=i??n.Bn().region;try{let i=await $O(e);if(!ek(i,s))return o;let c=await a.r({module:t,id:r}),l={};for(let e of c){let t=e?.payloadKey||e?.name;t&&Array.isArray(e?.rows)&&(l[t]=e.rows)}return n.D(i,s,l)}catch(e){return console.warn(`[in-progress gate] check skipped:`,e),o}}var nk=`Already submitted`,rk=`submissions`,ik=`candidates`,ak=864e5,ok=90,sk=`This candidate was created or last updated more than 90 days ago. Only candidates created or updated within the last 90 days can be selected. Please update this candidate first.`,ck=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],lk=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function uk(e,t){for(let n of t){let t=e?.[n];if(!t)continue;let r=new Date(t);if(!Number.isNaN(r.getTime()))return r}return null}function dk(e){return uk(e,ck)}function fk(e){return uk(e,lk)}function pk(e){if(!(e instanceof Date)||Number.isNaN(e.getTime()))return null;let t=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();return Math.max(0,Math.floor((t(new Date)-t(e))/ak))}function mk(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function hk(e,t=ok){if(!e)return!1;let n=Date.now()-t*ak,r=dk(e),i=fk(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function gk(e){let t=dk(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=YD(t);return n?{createdAgo:n,createdAgoTone:mk(pk(t))}:{createdAgo:``,createdAgoTone:``}}function _k(e){return{...e,...gk(e),isStaleCandidate:hk(e)}}function vk(e){return String(e?.applicantId??e?._id??e?.id??``)}var yk=null;async function bk(){return yk||=n.Fr(ik).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),yk}async function xk(e){let t=vk(e);if(!t)return``;let n=await bk();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function Sk({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=vk(r);if(i){let e=await tk({targetModule:rk,sourceModule:ik,recordId:i});if(e.severity===`block`)return new Promise(t=>{n({title:`This candidate cannot be submitted`,content:e.message,okText:`Pick someone else`,cancelText:`Close`,onOk:()=>t(!1),onCancel:()=>t(!1)})})}if(!hk(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:sk,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await xk(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function Ck(e,t,n){return{...e,label:`${e.label} - ${nk}`,disabled:!0,title:`${nk}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var wk={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`quickSubmitJobList`){let e=n.selectedRecords?.[0]??{},r=e.id??e._id??n.selectedIds?.[0],i,a=!0;try{i=await we({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Kn({searchQuery:t,candidateId:r});i=Array.isArray(e?.data)?e.data:[]}let o=i.map(e=>({label:[e.jobReferenceId??e.clientJobReferenceId,e.jobTitle].filter(Boolean).join(` - `)||String(e._id??``),value:e._id??``,_raw:e}));if(a)return o.map(e=>{if(e._raw?.isSubmitted||e._raw?.alreadySubmitted)return Ck(e,e._raw?.jobSubmissionId||``,e._raw?.submittedAt||``);if(e._raw?.disable){let t=String(e._raw?.message??``).trim();return{...e,disabled:!0,label:t?`${e.label} - ${t}`:e.label,title:t}}return e});let s=await Ee({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?Ck(e,t.submissionId,t.submittedAt):e})}if(e.searchFetchKey===`quickSubmitCandidates`){let e=n.selectedRecords?.[0]??{},r=n.jobId??e.jobId??e.id??e._id??n.selectedIds?.[0],i,a=new Map;try{i=await Te({search:t,jobId:r})}catch{let e=await Zo({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await Ee({jobId:r,applicantIds:i.map(vk)}).catch(()=>new Map)}return i.map(e=>_k(e)).map(e=>{let t=a.get(vk(e));if(!(t||e?.isSubmitted===!0||e?.alreadySubmitted===!0))return e;let n=t?.submissionId||e?.jobSubmissionId||``,r=t?.submittedAt||e?.submittedAt||``;return{...e,disabled:!0,optionNote:nk,isSubmitted:!0,alreadySubmitted:!0,existingSubmissionId:n,...r?{submittedAt:r}:{}}})}return[]},submit:async(e,t,n)=>{let{navigate:r,selectedRecords:i=[],selectedIds:a=[],moduleName:o}=t,s=i[0]??{},c,l;t.jobId?(c=t.jobId,l=s.id??s._id??a[0]??``):o===`candidate`?(c=e.jobId??``,l=s.id??s._id??a[0]??``):(c=s.jobId??s.id??s._id??a[0]??``,l=e.candidate??``);let u=n?.dynamicOptions?.candidate?.find(e=>vk(e?._raw)===String(l)),d=n?.dynamicOptions?.jobId?.find(e=>String(e?.value)===String(c)),f=u?._raw?.isSubmitted||u?._raw?.alreadySubmitted||d?.alreadySubmitted||d?._raw?.isSubmitted||d?._raw?.alreadySubmitted;if(!c||!l)throw Error(`Select both a job and a candidate to quick submit.`);if(hk(u?._raw))throw Error(sk);let p=await tk({targetModule:rk,sourceModule:ik,recordId:l});if(p.severity===`block`)throw Error(p.message);let m=f,h=u?._raw?.existingSubmissionId||u?._raw?.jobSubmissionId||d?.existingSubmissionId||d?._raw?.jobSubmissionId||``;try{let e=await Ce({jobId:c,applicantId:l});m||=!!e?.exists,h=e?.submissionId||h}catch(e){throw Error(`Could not verify existing submissions (${e?.message??`request failed`}). Please try again.`,{cause:e})}if(m)throw Error(`This candidate is already submitted for this job${h?` (submission ${h})`:``}.`);let g=new URLSearchParams;l&&g.set(`candidateId`,l);let _=u?.priorSubmissionId||u?._raw?.submissionId||d?.priorSubmissionId||d?._raw?.submissionId||``;_?(g.set(`submissionId`,String(_)),g.set(`isFromSubmission`,`true`)):g.set(`isFromSubmission`,`false`);let v=Jo(Xo({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},Tk={title:`Submit`,okText:`Submit`,width:640,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getNote:e=>e.moduleName===`candidate`?`Note: Select a job to submit this candidate.`:`Note: Select a candidate to submit for this job`,getFields:e=>e.jobId?[]:e.moduleName===`candidate`?[{name:`jobId`,label:`Job list`,type:`search-select`,required:!0,placeholder:`Search Job ID / job name - or pick a recent job`,searchFetchKey:`quickSubmitJobList`,optionLayout:{id:`{jobReferenceId}`,title:`{jobTitle}`,subtitle:`{clientJobReferenceId}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]}}]:[{name:`candidate`,label:`Candidate`,type:`search-select`,required:!0,placeholder:`Search candidate name / email - or pick a recent candidate`,optionsKey:`candidateOptions`,searchFetchKey:`quickSubmitCandidates`,labelTemplate:`{applicantRefrenceId} - {firstName} {lastName} - {createdAgo}`,valueKey:`applicantId`,optionLayout:{id:`{applicantRefrenceId}`,title:`{firstName} {lastName}`,titleAccent:{key:`createdAgo`,toneKey:`createdAgoTone`,prefix:` - `},subtitle:`{designation} - {email}`,meta:[{label:`Created`,key:`createdAt`,type:`date`},{label:`Updated`,key:`updatedAt`,type:`relative`}]},onSelectGuard:Sk}]},Ek={title:`Add Notes & Share`,okText:`Save & Share`,width:480,fields:[{name:`notes`,label:`Notes`,type:`mention-textarea`,required:!0,rows:5,maxLength:2e3,placeholder:`Add your notes on the job. Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`}]},Dk=e=>e?.data??e;async function Ok({relatedId:e,notes:n,title:r,notesFor:i}){return Dk(await On(t.x,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var kk={getMentionOptions:async(e,t)=>oe(t),submit:async(e,t)=>{let n=Array.isArray(t.selectedIds)?t.selectedIds[0]:t.selectedIds;if(!n)throw Error(`Please select a record before adding a note.`);await Ok({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},Ak={name:`jobId`,label:`Job Title / ID`,type:`search-select`,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},jk={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},Mk={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[jk]:[Ak,jk]},Nk=e=>e?.data??e;function Pk(e){return Array.isArray(e)&&e.every(e=>e&&typeof e==`object`&&`Key`in e)?e.reduce((e,{Key:t,Value:n})=>(e[t]=n,e),{}):e}function Fk(e){return e?Array.isArray(e.data)?e.data.map(Pk):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(Pk):Array.isArray(e)?e.map(Pk):[]:[]}async function Ik(e=1,n=10){let r=await t.o(t.x,`/workflow/list/all?page=${e}&limit=${n}`),i=Nk(r),a=Array.isArray(i)?i:i?.data??[];return{items:a,total:Number(r?.total??i?.total)||a.length,page:e,limit:n}}async function Lk(e,n){let r=Nk(await t.o(t.x,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function Rk(e,n){if(!e||!n)return null;try{let r=new URLSearchParams({module:e,limit:`1`,offset:`0`,scope:`allJobs`,filters:JSON.stringify([{field:`_id`,op:`in`,values:[String(n)],operator:`and`}])}),i=Nk(await t.o(t.x,`/module-data-list?${r}`));if(Array.isArray(i))return i[0]??null;if(i?.data&&Array.isArray(i.data))return i.data[0]??null;let a=i?.rows??i?.records??i?.items??i?.list;return Array.isArray(a)?a[0]??null:i??null}catch(t){return console.error(`[getModuleRecordById] failed: ${e}/${n}`,t),null}}async function zk(e){return Nk(await t.o(t.T,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var Bk={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`};function Vk(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}}function Hk(e){let t=String(e??``).trim();return t?Bk[t.toLowerCase()]??t:``}function Uk(e,t){let n=Vk(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t;if(!n)return null;let r=(Vk(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[Vk(e,`firstName`,`first_name`),Vk(e,`lastName`,`last_name`)].filter(Boolean).join(` `))||void 0,i={candidateId:String(n),candidateName:r,phone:Vk(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:Vk(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:Vk(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:Vk(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:Vk(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:Vk(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:Vk(e,`screeningScore`,`screening.score`,`score`),assignedDate:Vk(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var Wk={searchOptions:async(e,t)=>e.searchFetchKey===`tagToJobJobList`?ae(t):[],submit:async(e,t)=>{let n=e.jobId??t.jobId,r=Hk(e.hiringStage??t.hiringStage),i=Array.isArray(t.selectedIds)?t.selectedIds:[],a=Array.isArray(t.selectedRecords)?t.selectedRecords:[],o=Math.max(i.length,a.length,1);for(let e=0;e<o;e+=1){let t=i[e]?String(i[e]):``,o=Uk(a[e]??{},t);await zk({jobId:n,module:`jobs`,currentStage:r,...o?{candidateDetails:o}:{}})}await le({jobId:n,candidateIds:t.selectedIds,hiringStage:r})}},Gk={title:`Change Status`,okText:`Apply`,width:420,showSelectedCount:!0,fields:[{name:`status`,label:`New Status`,type:`select`,required:!0,placeholder:`Select a status`,dataSource:`master`,masterName:`clientSubmissions`,labelKey:`name`,valueKey:`name`,initialValueKey:`currentStatus`,defaultOptions:[{label:`Active`,value:`active`},{label:`Inactive`,value:`inactive`},{label:`Pending`,value:`pending`},{label:`Closed`,value:`closed`}]}]};function Kk(e,t){let n=String(e??``).trim().toLowerCase();return(Array.isArray(t?.status)?t.status:[]).find(e=>String(e?.value??``).trim().toLowerCase()===n||String(e?.label??``).trim().toLowerCase()===n||String(e?._raw?.name??``).trim().toLowerCase()===n)??null}var qk={submit:async(e,t,n)=>{let r=Kk(e.status,n?.dynamicOptions),i=r?._raw??{},a={clientSubmissionStatusText:String(i.name??r?.label??e.status??``).trim(),clientSubmissionStatusId:Number(i.id??i.uniqueId??0)||0,clientSubmissionStatusType:String(i.type??``).trim()};await ie(t.moduleName,t.selectedIds,a)}},Jk={getTitleText:e=>`Remove ${e>1?`${e} Candidates`:`Candidate`} from Shortlist`,titleIcon:`delete`,okText:`Remove`,okButtonDanger:!0,width:420,getBodyText:e=>e>1?`Are you sure you want to remove ${e} selected candidates from the shortlist?`:`Are you sure you want to remove this candidate from the shortlist?`,footerNote:`The candidate will be moved back to the pipeline.`,fields:[]},Yk={onOk:async e=>{await De({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},Xk={title:`Add to Groups`,description:`Select a group to add the selected candidate(s) to`,okText:`Add to Group`,width:480,disabledUntilFilled:!0,fields:[{name:`groupId`,label:`Group`,type:`select`,required:!0,placeholder:`Select a group`,fetchOptionsKey:`candidateGroups`}]},Zk={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?ue():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await de({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},Qk=[{title:`Name`,key:`name`,render:(e,t)=>t.name||`${t.first_name??``} ${t.last_name??``}`.trim()||t.user_name||`Assigned user`},{title:`Role`,dataIndex:`role_name`,key:`role`,render:e=>e||`-`},{title:`Reporting`,dataIndex:`reporting_name`,key:`reporting`,render:e=>e||`-`}];function $k({selectedIds:e,onClose:t}){let n=e?.[0],[r,i]=(0,o.useState)(!0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)({assignedUsers:[],totalSubmissions:0,message:``}),[p,m]=(0,o.useState)([]);(0,o.useEffect)(()=>{let e=!1;return i(!0),Promise.all([pe(n).catch(t=>(e||s.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),he(n).catch(()=>({recruitersData:[]}))]).then(([t,n])=>{e||(f(t),m(Array.isArray(n?.recruitersData)?n.recruitersData:[]))}).finally(()=>{e||i(!1)}),()=>{e=!0}},[n]);let h=async()=>{u(!0);try{await fe({jobIds:[n]}),s.message.success(`Job assigned successfully`),t?.({success:!0})}catch(e){s.message.error(e?.message??`Failed to assign job`)}finally{u(!1)}};if(r)return(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})});let g=p.map(e=>({user_id:e.recruiterId??e.id??e.user_id,name:e.name??``,role_name:e.role_name??e.roleName??``,reporting_name:e.reporting_name??e.reportingName??``})),_=new Map(g.map(e=>[String(e.user_id??``),e])),v=(d.assignedUsers?.length??0)>0?d.assignedUsers.map(e=>{let t=e.user_id??e.userId??e.recruiterId??e.id,n=_.get(String(t??``))??{};return{...e,user_id:t,name:n.name||e.name||``,role_name:n.role_name||e.role_name||e.roleName||``,reporting_name:n.reporting_name||e.reporting_name||e.reportingName||``}}):g,y=v.length>0;return(0,l.jsxs)(`div`,{className:`self-assign-popup-body`,children:[y?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`div`,{style:{fontWeight:700,marginBottom:8},children:`Team Members Allocated`}),(0,l.jsx)(s.Table,{columns:Qk,dataSource:v,pagination:!1,rowKey:e=>e.user_id??`${e.first_name}-${e.last_name}`,size:`small`,className:`mb-3 no-header-bg`,scroll:{y:200}}),(0,l.jsxs)(`div`,{className:`warning-card`,style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,l.jsx)(c.ExclamationCircleFilled,{style:{color:`#faad14`,fontSize:18}}),(0,l.jsx)(`div`,{style:{fontSize:13},children:`These users are already assigned to this job. Do you still want to assign yourself as well?`})]})]}):(0,l.jsx)(`div`,{style:{padding:`8px 0`},children:d.message||`No one is currently assigned to this job. Do you want to assign yourself?`}),(0,l.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:12,marginTop:24},children:[(0,l.jsx)(s.Button,{size:`small`,onClick:()=>t?.(),disabled:a,children:`No`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,onClick:h,loading:a,children:`Yes`})]})]})}$k.propTypes={selectedIds:f.default.array,onClose:f.default.func};var eA={title:`Self Assign`,width:480,className:`self-assign-modal`,component:$k},tA={submit:async()=>{}};function nA(e={}){let t=Array.isArray(e.jobPayDetails)?e.jobPayDetails[e.jobPayDetails.length-1]:e.jobPayDetails??e.clientBudget??{},n=Number(t.clientBudgetEnd),r=Number(t.clientBudgetStart);return Number.isFinite(n)&&n>0?n:Number.isFinite(r)&&r>0?r:null}var rA={getTitleText:(e,t,n)=>{let r=n?.jobTitle||n?.title||``;return r?`Assign - ${r}`:`Assign`},okText:`Assign`,width:520,disabledUntilFilled:!0,showAlreadyAssigned:!0,allowRemovalOnlySubmit:!0,getFields:e=>(nA(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},iA={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?me():[],loadExtraData:async e=>he(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await K({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},aA={title:`Add Sticky Notes`,getTitleText:(e,t,n,r)=>r.editingNoteId?`Edit Sticky Notes`:`Add Sticky Notes`,okText:`Save`,width:480,fields:[{name:`heading`,label:`Heading`,type:`input`,required:!0,placeholder:`Enter heading`,initialValueKey:`editingHeading`},{name:`targetDate`,label:`Target Date`,type:`date-picker`,required:!1,initialValueKey:`editingTargetDate`},{name:`comments`,label:`Comments`,type:`mention-textarea`,required:!0,rows:5,placeholder:`Enter your note here... Use '@' to mention someone.`,mentionFetchKey:`mentionUsers`,initialValueKey:`editingComments`}]},oA={getMentionOptions:async(e,t)=>oe(t),submit:async(e,t)=>{let n=e.targetDate?e.targetDate.toISOString():``;t.editingNoteId?await ce(t.editingNoteId,{title:e.heading,targetDate:n,notes:e.comments}):await se({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},sA={title:`Move to Onboarding`,bodyText:`Are you sure you want to move this candidate to onboarding?`,okText:`Yes`,cancelText:`No`,width:420,successMessage:`Moved to onboarding successfully`,successNavigate:`/onboarding`,fields:[{name:`sendOnboardingEmail`,type:`priority-checkbox`,checkboxLabel:`Send Onboarding Email`}]},cA={submit:async(e,t)=>{await ve({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function lA(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var uA={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function dA(e,t,n){let r=lA(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function fA(e){let t=e.selectedRecords?.[0]??{},n=dA(t,`candidateRate`,`candidateAcceptedRate`)??dA(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=dA(t,`candidateRate`,`candidateAcceptedCurrency`)??dA(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:dA(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??dA(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??uA[String(r??``).toUpperCase()]??(r||`$`),unit:dA(t,`candidateRate`,`candidateAcceptedPayUnit`)??dA(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var pA={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=fA(i);return`Candidate Rate: ${a?`${a.symbol}${a.amount}${a.unit?`/${a.unit}`:``}`:`-`}`},fields:[{name:`candidateProposedRate`,label:`Proposed Rate`,type:`number`,required:!0,placeholder:`Amount`,min:0,inlineRow:`proposedRate`,validator:(e,t)=>{if(e==null||e===``)return;let n=fA(t);if(n&&Number(e)<=Number(n.amount))return`Proposed rate must be greater than Candidate Rate`}},{name:`candidateProposedRateCurrency`,label:`Currency`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`$ USD`,value:`$`},{label:`₹ INR`,value:`₹`},{label:`€ EUR`,value:`€`}]},{name:`candidateProposedRateUnit`,label:`Unit`,type:`select`,required:!0,inlineRow:`proposedRate`,defaultOptions:[{label:`Year`,value:`yr`},{label:`Month`,value:`mo`},{label:`Week`,value:`wk`},{label:`Hour`,value:`hr`},{label:`Daily`,value:`day`}]},{name:`submitVia`,label:`Submit Via`,type:`radio`,required:!0,defaultOptions:[{label:`Mail`,value:`Mail`},{label:`VMS`,value:`VMS`}]}]},mA={submit:async(e,t)=>{let n=t.selectedIds[0];if(await ye(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await be(n)}catch{s.message.warning(`Approved. VMS notification could not be sent — use Send Mail to notify the client.`)}else s.message.info(`Approved — use Send Mail to notify the client.`)}};async function hA(e,n={}){let r=t.u();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.D}${e}`,{...n,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${r}`,...n.headers}});if(i.status===401&&t.h(),!i.ok){let e=Error(`API ${i.status}: ${i.statusText}`);throw e.status=i.status,e}return i.json()}async function gA(e){let t=await hA(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`manager`}).toString()}`);return t.data??t}function _A(e){return Array.isArray(e)?e[e.length-1]:e}function vA(e={}){let t=_A(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function yA(e,t={}){let n=_A((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=_A(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function bA(e={}){let t=String(e?.currencyRaw??``).trim().toUpperCase(),n=String(e?.currency??``).trim();return n&&!/^[A-Z]{3}$/i.test(n)?n:t===`USD`||n.toUpperCase()===`USD`?`$`:t===`INR`||n.toUpperCase()===`INR`?`₹`:t===`EUR`||n.toUpperCase()===`EUR`?`€`:t===`GBP`||n.toUpperCase()===`GBP`?`£`:n||t}function xA(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function SA(e,t={}){let n=Number(e);return Number.isFinite(n)?`${bA(t)}${n}/${xA(t)}`:``}function CA(e,t,n){if(n==null||n===``)return String(e??``);let r=String(e??``),i=String(n),a=!1,o=RegExp(`(<(?:td|th)[^>]*>[\\s\\S]*?${t}[\\s\\S]*?</(?:td|th)>\\s*<(?:td|th)[^>]*>)([\\s\\S]*?)(</(?:td|th)>)`,`gi`);r=r.replace(o,(e,t,n,r)=>(a=!0,`${t}${i}${r}`));let s=RegExp(`(<(?:strong|b)[^>]*>\\s*${t}\\s*:?\\s*</(?:strong|b)>\\s*)([\\s\\S]*?)(?=</(?:li|p|div)>)`,`gi`);if(r=r.replace(s,(e,t)=>(a=!0,`${t}${i}`)),!a){let e=RegExp(`(${t}\\s*:?[ \\t]*)([^<\\r\\n]*)`,`gi`);r=r.replace(e,(e,t)=>`${t}${i}`)}return r}function wA(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:vA(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:yA(r,i),l={proposedRate:o,jobBillRate:c},u=String(e??``).replace(/{{\.?((?:proposedRate)|(?:jobBillRate))}}/g,(e,t)=>{let n=l[t];return n==null?e:String(n)});return u=CA(u,`(?:Proposed\\s*Rate|Pay\\s*Rate)`,SA(o,n)),u=CA(u,`(?:Job\\s*)?Bill\\s*Rate`,SA(c,n)),u}function TA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var EA=(e,t)=>!!e&&e.toLowerCase()===TA(t).toLowerCase();function DA(e,t,n){let r=TA(t.submittedBy);return TA(EA(r,n)||EA(r,e.submitSource)||EA(r,e.supplierName)||EA(r,e.source)||EA(r,e.candidateSource)?``:r,e.signatureEmail)}function OA(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:DA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function kA(e){let t=e?.$oid??e?._id?.$oid??e?._id??e?.id?.$oid??e?.id??e;if(t==null||typeof t==`object`)return``;let n=String(t).trim();return/^[a-f\d]{24}$/i.test(n)?n:``}function AA(...e){for(let t of e){let e=[t?.jobId,t?.JobId,t?.job_id,t?.jobDetails?._id,t?.jobDetails?.id,t?.job?._id,t?.job?.id,t?.submission?.jobId,t?.submission?.JobId,t?.submission?.job_id,t?.submission?.jobDetails?._id,t?.submission?.jobDetails?.id,t?.submission?.job?._id,t?.submission?.job?.id,t?.recordMeta?.jobId,t?.recordMeta?.JobId,t?.recordMeta?.job_id,t?.submission?.recordMeta?.jobId,t?.submission?.recordMeta?.JobId,t?.submission?.recordMeta?.job_id].map(kA).find(Boolean);if(e)return e}return``}function jA(e){if(!e?.referralId)return{};let t=Number(e.referralRate??e.referalRate??0)||0,n=String(e.referralType??e.referalType??`RECURRING`).trim()||`RECURRING`,r=e.referralId??e.referalId;return{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0,referralDetails:{referralId:r,referalId:r,referralRate:t,referalRate:t,referralType:n,referalType:n,referralEnabled:!0,referalEnabled:!0,isReferralApplicable:!0}}}function MA(e=``){return String(e??``).replace(/map\[[^\]]*(?:resume|document|attachment|file)[^\]]*\]/gi,``).replace(/<p>\s*<\/p>/gi,``).replace(/(?:<br\s*\/?>\s*){3,}/gi,`<br><br>`).trim()}function NA(...e){for(let t of e){let e=[t?.candidateId,t?.applicantId,t?.candidate?._id,t?.candidate?.id,t?.submission?.candidateId,t?.submission?.applicantId,t?.recordMeta?.candidateId,t?.recordMeta?.applicantId].map(kA).find(Boolean);if(e)return e}return``}async function PA(e){let t=e?.fileUrl??e?.downloadUrl??e?.url;if(!t)return null;let n=await fetch(t);if(!n.ok)throw Error(`Unable to load ${e?.fileName||`resume`}`);let r=await n.blob(),i=e?.fileName??e?.uploadedFileName??e?.originalName??e?.uniqueName??`resume`;return new File([r],i,{type:e?.contentType||r.type||`application/octet-stream`})}async function FA(e,r,i){let a=[],o=await n._n(`submissions`,e,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=NA(r?.record?.submission,i,r?.record);if(!s){let n=await t.o(t.x,`/module/list?module=submissions&id=${encodeURIComponent(e)}`).catch(()=>({})),r=n?.data??n??{};s=NA((Array.isArray(r?.data)?r.data:Array.isArray(r)?r:[])[0])}if(s){let e=await n._n(`candidates`,s,`resume`).catch(()=>({data:[]}));a.push(...e?.data??[])}let c=(await Promise.all(a.map(PA))).filter(Boolean),l=new Set;return c.filter(e=>{let t=`${e.name}:${e.size}:${e.type}`;return!l.has(t)&&(l.add(t),!0)})}function IA(e={}){return{to:(e.to??e.To??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),cc:(e.cc??e.Cc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),bcc:(e.bcc??e.Bcc??[]).map(e=>e.email??e.Email??e).filter(Boolean).join(`, `),subject:e.subject??e.Subject??``,contents:MA(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function LA({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let a=n?.[0]??{},c=t?.[0]??k_(a),[u,d]=(0,o.useState)(null),[f,p]=(0,o.useState)(!0),[m,h]=(0,o.useState)([]),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(`vms`),[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(null),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)(!1),[A,j]=(0,o.useState)(!1),[M,N]=(0,o.useState)({to:``,cc:``,bcc:``,subject:``,contents:``,attachments:[],showCc:!1,showBcc:!1});(0,o.useEffect)(()=>{let e=!1;return gv(c,a).then(t=>{e||d(t)}).catch(t=>{e||(s.message.error(t?.message??`Unable to load finance details`),d({record:{submission:a},lookups:{},display:{}}))}).finally(()=>{e||p(!1)}),()=>{e=!0}},[c]),(0,o.useEffect)(()=>{let e=!1;return Tv().then(t=>{e||h(t)}).catch(()=>{}),()=>{e=!0}},[]);let P=async()=>{if(b){if(v===`mail`){_(!1),D(!0),k(!0);try{let[e,t]=await Promise.all([gA(c).then(IA),FA(c,u,a).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??a;N({to:wA(e.to,n,b,u,a),cc:wA(e.cc,n,b,u,a),bcc:wA(e.bcc,n,b,u,a),subject:wA(e.subject,n,b,u,a),contents:wA(e.contents,n,b,u,a),attachments:t,showCc:!!e.cc,showBcc:!!e.bcc})}catch(e){s.message.error(e?.message??`Unable to prepare approval mail`)}finally{k(!1)}return}T(!0);try{await ye(c,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...jA(S)}),s.message.success(`Submission approved`),_(!1),x(null),C(null),i?.({success:!0})}catch(e){s.message.error(e?.message??`Unable to approve submission`)}finally{T(!1)}}},F=!O&&ZE(M.to).length>0&&QE(M.to)&&QE(M.cc)&&QE(M.bcc)&&M.subject.trim()&&M.contents.trim(),I=async()=>{if(!b||!F||A)return;j(!0);let e={candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit};try{await ye(c,{...e,submitVia:`VMS`,...jA(S)});let t=AA(u?.record,a);if(!t)s.message.warning(`Submission approved, but job details were not available to send mail`);else try{await bn({jobId:t,toMail:ZE(M.to),ccMail:ZE(M.cc),bccMail:ZE(M.bcc),subject:M.subject,contents:M.contents,attachments:M.attachments??[]}),s.message.success(`Approval mail sent and submission approved`)}catch(e){s.message.warning(e?.message?`Submission approved, but mail was not sent: ${e.message}`:`Submission approved, but mail was not sent`)}D(!1),x(null),C(null),i?.({success:!0})}catch(e){s.message.error(e?.message??`Unable to send approval mail`)}finally{j(!1)}},L=(0,o.useMemo)(()=>({submissionApprove:async({computed:e,referral:t})=>{x(e),C(t??null),y(`vms`),_(!0)},submissionReject:async()=>{e?.navigate?.(`/popup/reject`,{replace:!0,state:{background:e?.background??null,selectedIds:t,selectedRecords:n,moduleName:r}})}}),[e,t,n,r]);return f||!u?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(av,{type:r_,record:u.record,lookups:u.lookups,identity:OA(a,u.display),referralOptions:m,currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:L,onClose:()=>i?.(),variant:`popup`}),(0,l.jsx)(s.Modal,{title:`Choose approval method`,open:g,okText:`Approve`,confirmLoading:w,onOk:P,onCancel:()=>{w||(_(!1),x(null),C(null))},children:(0,l.jsxs)(s.Radio.Group,{value:v,onChange:e=>y(e.target.value),style:{display:`grid`,gap:12},children:[(0,l.jsx)(s.Radio,{value:`vms`,children:`Via VMS`}),(0,l.jsx)(s.Radio,{value:`mail`,children:`Via Mail`})]})}),(0,l.jsx)(s.Drawer,{open:E,placement:`right`,onClose:()=>{A||D(!1)},closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,l.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>D(!1),disabled:A,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:A,disabled:!F,onClick:I,children:`Send`})]}),children:O?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsx)(uD,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??a]})})]})}LA.propTypes={context:f.default.object,selectedIds:f.default.array,selectedRecords:f.default.array,moduleName:f.default.string,onClose:f.default.func};var RA={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:LA},zA={submit:async()=>{}};function BA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var VA=(e,t)=>!!e&&e.toLowerCase()===BA(t).toLowerCase();function HA(e,t,n){let r=BA(t.submittedBy);return BA(VA(r,n)||VA(r,e.submitSource)||VA(r,e.supplierName)||VA(r,e.source)||VA(r,e.candidateSource)?``:r,e.signatureEmail)}function UA(e,t={}){let n=t.employerName??e.supplierName??e.submitSource;return{client:t.clientName??e.clientName,role:t.jobTitle??e.jobTitle??e.designation,reqId:t.reqId??e.jobClientRefrenceId??e.mspReqId??e.submissionId,name:t.candidateName||[e.firstName,e.lastName].filter(Boolean).join(` `)||e.candidateFullName,location:t.jobLocation??e.city??e.currentLocation??e.jobLocation,vendor:n,submittedBy:HA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function WA(e){let t=Array.isArray(e)?e:[];for(let e=t.length-1;e>=0;--e)if(String(t[e]?.activityType??``).trim().toLowerCase()===`cfo rejected`)return t[e];return null}function GA(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function KA({selectedIds:e,selectedRecords:t,onClose:r}){let i=t?.[0]??{},a=e?.[0]??k_(i),[c,u]=(0,o.useState)(null),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(!0);(0,o.useEffect)(()=>{let e=!1;return m(!0),Promise.all([gv(a,i),n.dn(`submission`,a).catch(()=>[])]).then(([t,n])=>{if(e)return;let r=WA(n);f(k_(t?.meta?.workforceEngagementId??i?.onboarding?.workforceEngagementId??i?.workforceEngagementId));let a=t?.meta?.rejectReasonComments||r?.activityComments||``;u({...t,record:{...t.record,submission:{...t.record.submission,cfoRejectionReason:a?GA(a):``,cfoRejectedAt:t?.meta?.rejectedAt??r?.activityTime??null}}})}).catch(t=>{e||(s.message.error(t?.message??`Unable to load finance details`),u({record:{submission:i},lookups:{},display:{}}))}).finally(()=>{e||m(!1)}),()=>{e=!0}},[a]);let h=(0,o.useMemo)(()=>({submissionReapproveSend:async({computed:e})=>{await xe(d,{submissionId:a,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await ye(a,{candidateProposedRate:e.proposedRate,candidateProposedRateCurrency:e.currencyRaw??e.currency,candidateProposedRateUnit:e.rateUnit,submitVia:`Mail`,context:`resend`}),s.message.success(`Re-approved and sent for CFO approval`),r?.({success:!0})}}),[a,d,r]);return p||!c?(0,l.jsx)(`div`,{style:{display:`flex`,justifyContent:`center`,padding:48},children:(0,l.jsx)(s.Spin,{size:`large`})}):(0,l.jsx)(av,{type:s_,record:c.record,lookups:c.lookups,identity:UA(i,c.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}KA.propTypes={selectedIds:f.default.array,selectedRecords:f.default.array,onClose:f.default.func};var qA={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:KA},JA={submit:async()=>{}},YA=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],XA={title:`Reject`,okText:`Reject`,okButtonDanger:!0,width:480,successMessage:`Submission rejected successfully`,fields:[{name:`rejectReason`,label:`Rejection Reasons`,type:`select`,required:!0,placeholder:`Select rejection reasons`,defaultOptions:YA.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},ZA={submit:async(e,t)=>{let n=YA.find(t=>String(t.id)===String(e.rejectReason));await Se({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},QA={delete:XO,"quick-submit":Tk,"add-notes":Ek,"tag-to-job":Mk,"change-status":Gk,"remove-from-shortlist":Jk,"add-to-groups":Xk,"self-assign":eA,"others-assign":rA,"sticky-notes":aA,"move-to-onboarding":sA,"approve-rate":pA,"manager-approve":RA,"manager-reapprove":qA,reject:XA},$A={delete:ZO,"quick-submit":wk,"add-notes":kk,"tag-to-job":Wk,"change-status":qk,"remove-from-shortlist":Yk,"add-to-groups":Zk,"self-assign":tA,"others-assign":iA,"sticky-notes":oA,"move-to-onboarding":cA,"approve-rate":mA,"manager-approve":zA,"manager-reapprove":JA,reject:ZA};function ej(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function tj(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&t!==``)return t}return``}function nj(e){let t=String(tj(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(tj(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function rj(e){let t=tj(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[tj(e,`firstName`,`first_name`),tj(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function ij(e){return String(tj(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function aj(e){return String(tj(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function oj(e){return String(tj(e,`batchName`,`name`,`title`,`batch_name`))}function sj({open:e=!0,context:r={},onClose:i}){let[a,c]=(0,o.useState)([]),[u,d]=(0,o.useState)([]),[f,p]=(0,o.useState)(``),[m,h]=(0,o.useState)(!0),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(``),[b,x]=(0,o.useState)(new Map),S=String(r.selectedIds?.[0]??r.selectedRecords?.[0]?._id??r.selectedRecords?.[0]?.id??r.batchId??``);(0,o.useEffect)(()=>{if(!e)return;let t=!1;return Promise.resolve().then(()=>(t||h(!0),Promise.all([n.bn(`onboarding`,200,0),n.bn(`batchCandidates`,1e3,0).catch(()=>[])]))).then(([e,n])=>{t||(c(ej(e)),x(new Map(ej(n).filter(nj).map(e=>[String(tj(e,`candidateId`,`candidate_id`)),e]).filter(([e])=>e))))}).catch(e=>{t||y(e.message||`Unable to load onboarding candidates`)}).finally(()=>{t||h(!1)}),()=>{t=!0}},[e]);let C=(0,o.useMemo)(()=>{let e=f.trim().toLowerCase();return e?a.filter(t=>[rj(t),tj(t,`email`,`candidateEmail`,`candidate_email`),tj(t,`status`,`onboardingStatus`,`onboarding_status`)].some(t=>String(t).toLowerCase().includes(e))):a},[a,f]);async function w(){if(!S){y(`Select a batch before adding candidates`);return}let e=a.filter(e=>u.includes(aj(e)));if(!e.length)return;let o=e.map(e=>({record:e,assignment:b.get(ij(e))})).filter(e=>e.assignment);if(o.length){let e=o.map(({record:e})=>rj(e)).join(`, `);y(`${e} ${o.length===1?`is`:`are`} already added to a batch. Each candidate can be added to only one batch.`);return}_(!0),y(``);try{let{userId:a}=t.s(),o=oj(r.selectedRecords?.[0])||oj(r);await Promise.all(e.map(e=>n.Zn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:o,candidateId:ij(e),workforceEngagementId:aj(e),source:`ONBOARDING`,assignmentStatus:`ASSIGNED`,assignedAt:new Date().toISOString(),assignedBy:a??0,isDeleted:!1}))),s.message.success(`${e.length} candidate${e.length===1?``:`s`} added to the batch`),i?.({refresh:!0})}catch(e){y(e.message||`Unable to add candidates to the batch`)}finally{_(!1)}}return(0,l.jsxs)(s.Modal,{open:e,title:`Add Candidate to Batch`,okText:`Add`,onOk:w,onCancel:()=>i?.(),okButtonProps:{disabled:u.length===0||!S,loading:g},cancelButtonProps:{disabled:g},closable:!g,maskClosable:!1,width:760,centered:!0,children:[v&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:v,style:{marginBottom:12}}),(0,l.jsx)(s.Input.Search,{allowClear:!0,placeholder:`Search onboarding candidates`,value:f,onChange:e=>p(e.target.value),style:{marginBottom:12}}),(0,l.jsx)(s.Table,{rowKey:e=>aj(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>rj(t)},{title:`Email`,key:`email`,render:(e,t)=>tj(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>tj(t,`status`,`onboardingStatus`,`onboarding_status`)||`—`}],dataSource:C,loading:m,size:`small`,pagination:{pageSize:10,showSizeChanger:!1},rowSelection:{selectedRowKeys:u,onChange:d,getCheckboxProps:e=>{let t=b.get(ij(e));return{disabled:!ij(e)||!aj(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var cj={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function lj(e){if(!e)return null;let t=[...e.groups??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>[...e.fields??[]].filter(e=>e.show!==0&&e.show!==!1).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(e=>({...e,name:e.name??e.field,label:e.label??e.field,type:cj[String(e.type??`text`).toLowerCase()]??e.type??`input`,required:e.required??e.req===1,options:(e.options??[]).map(e=>({label:e.label??e.name??e.value,value:e.value??e.id??e.label}))}))),n=uj(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function uj(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function dj(e,t=[]){if(!e||!Array.isArray(t)||!t.length)return e;let n=new Map(t.filter(e=>e?.name).map(e=>[String(e.name),e]));return n.size?{...e,fields:(e.fields??[]).map(r=>{let i=n.get(String(r.name))??n.get(String(r.label))??(n.size===1&&(e.fields??[]).length===1?t[0]:null);if(!i)return r;let{name:a,...o}=i;return{...r,...o}})}:e}function fj({apiMap:e={},extraConfigs:r={}}){let i=(0,o.useMemo)(()=>({...$A,...e}),[e]),a=(0,o.useMemo)(()=>{let e={...QA};return Object.entries(r).forEach(([t,n])=>{e[t]={...e[t]??{},...n}}),e},[r]),{popupKey:s}=(0,d.useParams)(),c=(0,d.useNavigate)(),{state:u={}}=(0,d.useLocation)(),[f,p]=(0,o.useState)({key:``,config:null});(0,o.useEffect)(()=>{let e=!1;if(!s||!u.moduleName)return;let t=`${u.moduleName}:${s}`;return n.Cr(u.moduleName,`popup`,s).then(n=>{e||p({key:t,config:lj(n[0])})}).catch(()=>{e||p({key:t,config:null})}),()=>{e=!0}},[s,u.moduleName]);let m=(0,o.useMemo)(()=>{let e=a[s],t=`${u.moduleName}:${s}`,n=f.key===t?f.config:null;return dj(n?{...e,...n}:e,u.popupAction?.popupFieldOverrides)},[f,a,s,u.moduleName,u.popupAction?.popupFieldOverrides]),h=(0,o.useMemo)(()=>({selectedIds:u.selectedIds??[],selectedRecords:u.selectedRecords??[],moduleName:u.moduleName??``,navigate:c,background:u.background??null,...u.popupContext??{}}),[c,u.selectedIds,u.selectedRecords,u.moduleName,u.popupContext,u.background]),g=(0,o.useMemo)(()=>{let e=u.popupAction;return e?.apiPath?{submit:(n,r)=>{let i=String(e.apiMethod||`POST`).toUpperCase();return t.o(t.x,e.apiPath.startsWith(`/`)?e.apiPath:`/${e.apiPath}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({...n,selectedIds:r.selectedIds,selectedRecords:r.selectedRecords,moduleName:r.moduleName})})}}:{}},[u.popupAction]),_=e=>{let t=u.background;if(e?.success&&m?.successNavigate){c(m.successNavigate,{replace:!0,state:{refreshTimestamp:Date.now()}});return}if(e?.success&&t?.pathname){c(`${t.pathname}${t.search??``}`,{replace:!0,state:{...t.state??{},refreshTimestamp:Date.now()}});return}c(-1)};return s===`add-batch-candidate`?(0,l.jsx)(sj,{open:!0,context:h,onClose:_}):(0,l.jsx)(YO,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var pj={title:`Vendor Share`,maxVendorSelect:1e3,defaultTab:`myVendor`,defaultPageSize:10,vendorTabs:[{key:`myVendor`,label:`My Vendors`},{key:`allVendor`,label:`All Vendors`}],vendorColumns:[{title:`Vendor Name`,dataIndex:`vendorName`,key:`vendorName`},{title:`Email`,dataIndex:`vendorEmail`,key:`vendorEmail`},{title:`Location`,dataIndex:`vendorLocation`,key:`vendorLocation`},{title:`Updated On`,dataIndex:`updatedOn`,key:`updatedOn`}]},mj={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>_n({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>vn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>bn({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},hj=pj.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function gj(){let e=(0,d.useNavigate)(),t=(0,d.useLocation)(),{selectedIds:n=[],selectedRecords:r=[],recipients:i=[],subject:a=``,onSend:u,moduleName:f=``,popupAction:p={}}=t.state??{},m=n[0]??r[0]?._id??r[0]?.id,[h,g]=(0,o.useState)({to:i.join(`, `),cc:``,bcc:``,subject:a,contents:``,showCc:!1,showBcc:!1}),[_,v]=(0,o.useState)(!m),[y,b]=(0,o.useState)(pj.defaultTab),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)([]),[T,E]=(0,o.useState)(0),[D,O]=(0,o.useState)(0),[k,A]=(0,o.useState)(0),[j,M]=(0,o.useState)(1),[N,P]=(0,o.useState)(pj.defaultPageSize),[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!m)return;let e=!1;I(!0);let t=x?100:N,n=x?0:(j-1)*N;return mj.getVendorList({jobId:m,limit:t,offset:n,type:y}).then(t=>{if(e)return;let n=t?.data?.vendorList??t?.data??[],r=t?.data?.myVendorCount??0,i=t?.data?.allVendorCount??0;w(Array.isArray(n)?n:[]),E(r),O(i),A(y===`myVendor`?r:i)}).catch(()=>{e||(w([]),A(0))}).finally(()=>{e||I(!1)}),()=>{e=!0}},[m,y,j,N,x]),(0,o.useEffect)(()=>{m&&mj.getMailDetails(m).then(e=>g(t=>({...t,subject:e.subject||t.subject,contents:e.contents||t.contents,to:e.toMail?.length?Array.isArray(e.toMail)?e.toMail.join(`, `):String(e.toMail):t.to,cc:e.ccMail?.length?Array.isArray(e.ccMail)?e.ccMail.join(`, `):String(e.ccMail):t.cc}))).catch(()=>{}).finally(()=>v(!0))},[m]);let z=(0,o.useMemo)(()=>L.map(e=>C.find(t=>t.vendorId===e)?.vendorEmail??``).filter(Boolean),[L,C]),B=(0,o.useMemo)(()=>({...h,bcc:[...new Set([...ZE(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function V(e){let t=new Set(z);g({...e,bcc:ZE(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let ee=(ZE(B.to).length||ZE(B.bcc).length)&&QE(B.to)&&QE(B.cc)&&QE(B.bcc)&&B.subject.trim(),te=e=>e===`myVendor`?T:D;function ne(){e(-1)}function re(){ee&&mj.submit({jobId:m,toMail:ZE(B.to),ccMail:ZE(B.cc),bccMail:ZE(B.bcc),subject:B.subject,contents:B.contents}).then(t=>{t?.status===!0?(s.message.success(t?.data||`Mail sent successfully.`),typeof u==`function`&&u({...B,message:B.contents,selectedIds:n}),e(-1)):s.message.error(t?.message||t?.data||`Failed to send mail. Please try again.`)}).catch(e=>{s.message.error(e?.message||`Failed to send mail. Please try again.`)})}let ie=(0,o.useMemo)(()=>{if(!x)return C;let e=x.toLowerCase();return C.filter(t=>(t.vendorName??``).toLowerCase().includes(e)||(t.vendorEmail??``).toLowerCase().includes(e)||(t.vendorLocation??``).toLowerCase().includes(e))},[C,x]);return(0,l.jsx)(s.Drawer,{open:!0,placement:`right`,onClose:ne,closable:!1,rootClassName:`vendor-share`,width:`95%`,footer:(0,l.jsxs)(`div`,{className:`vendor-share__footer`,children:[(0,l.jsx)(s.Button,{onClick:ne,children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,disabled:!ee,onClick:re,children:`Send`})]}),children:(0,l.jsxs)(`div`,{className:`vendor-share__body`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__left`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__vendor-header`,children:[(0,l.jsxs)(`div`,{className:`vendor-share__vendor-header-row`,children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.CloseOutlined,{}),onClick:ne,size:`small`,style:{marginRight:8}}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,l.jsx)(c.TeamOutlined,{})}),(0,l.jsx)(`span`,{className:`dynamic-popup__header-label`,children:`Vendor List`}),(0,l.jsxs)(`div`,{className:`vendor-share__vendor-search`,children:[(0,l.jsx)(c.SearchOutlined,{className:`vendor-share__search-icon`}),(0,l.jsx)(s.Input,{variant:`borderless`,placeholder:`Search vendor`,value:x,onChange:e=>{S(e.target.value),M(1)},className:`vendor-share__search-input`})]})]}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-tabs`,children:pj.vendorTabs.map(e=>(0,l.jsxs)(`span`,{className:`vendor-share__vendor-tab${y===e.key?` vendor-share__vendor-tab--active`:``}`,onClick:()=>{b(e.key),M(1),R([])},children:[e.label,` (`,te(e.key),`)`]},e.key))})]}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-table-wrapper`,children:(0,l.jsx)(s.Table,{rowKey:e=>e.vendorId,columns:hj,dataSource:ie,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>pj.maxVendorSelect||R(e)}},scroll:{y:`calc(100vh - 340px)`}})}),(0,l.jsx)(`div`,{className:`vendor-share__vendor-footer`,children:(0,l.jsx)(ze,{current:j,pageSize:N,total:k,onChange:e=>M(e),onPageSizeChange:e=>P(e)})})]}),(0,l.jsx)(`div`,{className:`vendor-share__right`,children:(0,l.jsx)(uD,{value:B,onChange:V,moduleName:f,defaultTemplateId:p.defaultTemplateId??t.state?.defaultTemplateId??``,ready:_,contextRecords:r,title:`Share`,hint:`Select vendors or add email addresses`,bccHint:`Vendor emails are added automatically`,afterBcc:L.length>0?(0,l.jsxs)(`div`,{className:`vendor-share__selected-count`,children:[L.length,` / `,pj.maxVendorSelect,` Vendors selected`]}):null})})]})})}var _j={EMAIL:/^[a-zA-Z0-9._%+-]+@[a-zA-Z][a-zA-Z-]*\.[a-zA-Z]{2,}$/,PHONE:/^[0-9]{10}$/,PASSWORD:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/,ALPHABETS:/^[A-Za-z ]+$/,ALPHANUMERIC:/^(?!\s)[A-Za-z0-9 ]+$/,NUMBER:/^[0-9]+$/,URL:/^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+(com|org|net|in|co|io|gov|edu)(\/[^\s]*)?$/i,CANDIDATE_ID:/^[A-Za-z0-9-]+$/,REMARKS:/^[A-Za-z0-9\s.,'"\-()!?/@#$%&]*$/,DESIGNATION:/^[a-zA-Z0-9\s,.\-&()]{2,100}$/,DOB:/^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$/,COMPANY_NAME:/^[A-Za-z0-9\s&.,'()-]+$/,FIRST_NAME:/^[A-Z][a-zA-Z]*$/,FULL_NAME:/^[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*$/,NO_SPACES:/^\S+$/,STARTS_WITH_CAPITAL:/^[A-Z].*$/},vj={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},yj={REQUIRED:e=>`Mandatory Field`,INVALID_EMAIL:`Please enter a valid email address.`,INVALID_PHONE:`Phone number must contain exactly 10 digits.`,INVALID_PASSWORD:`Password must contain uppercase, lowercase, number, special character and minimum 8 characters.`,INVALID_ALPHABETS:`Only alphabets and spaces are allowed.`,INVALID_ALPHANUMERIC:`Only letters, numbers and spaces are allowed.`,INVALID_NUMBER:`Only numbers are allowed.`,INVALID_URL:`Please enter a valid URL.`,INVALID_CANDIDATE_ID:e=>`${e} can contain only letters, numbers and hyphens.`,INVALID_REMARKS:`Remarks contain invalid characters.`,INVALID_DESIGNATION:`Designation contains invalid characters.`,INVALID_DOB:`DOB must be in MM/DD/YYYY format.`,INVALID_LINKEDIN:`Please enter a valid LinkedIn URL.`,INVALID_COMPANY_NAME:`Company name contains invalid characters.`,INVALID_FIRST_NAME:`First letter must be capital and spaces are not allowed.`,INVALID_FULL_NAME:`Each word must start with a capital letter.`,NO_SPACES_ALLOWED:`Spaces are not allowed.`,MUST_START_WITH_CAPITAL:`First letter must be capital.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,INVALID_FILE_SIZE:`File upload must be ${vj.MAX_FILE_SIZE} MB below.`,INVALID_FILE_TYPE:`Only JPG, PNG and PDF files are allowed.`,SINGLE_FILE_ONLY:`Only one file can be uploaded.`},bj={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},xj={REMARKS_MIN:10,REMARKS_MAX:250},Sj={removeSpaces:(e=``)=>e.replace(/\s/g,``),capitalizeFirstLetter:(e=``)=>e.charAt(0).toUpperCase()+e.slice(1),capitalizeWords:(e=``)=>e.replace(/\b\w/g,e=>e.toUpperCase()),removeExtraSpaces:(e=``)=>e.replace(/\s+/g,` `).trim(),firstNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),fullNameFormatter:(e=``)=>e.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()),phoneFormatter:(e=``)=>e.replace(/\D/g,``).slice(0,10),dobFormatter:(e=``)=>{let t=e.replace(/\D/g,``);return t.length<=2?t:t.length<=4?`${t.slice(0,2)}/${t.slice(2)}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t.slice(4,8)}`}},Cj={required:(e=`Field`)=>({required:!0,message:yj.REQUIRED(e)}),email:()=>({pattern:_j.EMAIL,message:yj.INVALID_EMAIL}),phone:()=>({pattern:_j.PHONE,message:yj.INVALID_PHONE}),password:()=>({pattern:_j.PASSWORD,message:yj.INVALID_PASSWORD}),alphabets:()=>({pattern:_j.ALPHABETS,message:yj.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:_j.ALPHANUMERIC,message:yj.INVALID_ALPHANUMERIC}),number:()=>({pattern:_j.NUMBER,message:yj.INVALID_NUMBER}),url:()=>({pattern:_j.URL,message:yj.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:_j.CANDIDATE_ID,message:yj.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:_j.REMARKS,message:yj.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${xj.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${xj.REMARKS_MAX} characters.`}),designation:()=>({pattern:_j.DESIGNATION,message:yj.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!_j.DOB.test(n))return Promise.reject(Error(yj.INVALID_DOB));let r=(0,u.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(yj.INVALID_DOB));let i=(0,u.default)().endOf(`day`);return r.isAfter(i)?Promise.reject(Error(`Date of Birth cannot be a future date.`)):i.diff(r,`year`)<21?Promise.reject(Error(`Age must be at least 21 years.`)):Promise.resolve()}}),linkedin:()=>({pattern:_j.LINKEDIN,message:yj.INVALID_LINKEDIN}),companyName:()=>({pattern:_j.COMPANY_NAME,message:yj.INVALID_COMPANY_NAME}),firstName:()=>({pattern:_j.FIRST_NAME,message:yj.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${bj.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${bj.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:bj.FIRST_NAME_MIN,message:yj.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:bj.FIRST_NAME_MAX,message:yj.FIRST_NAME_MAX}),remarksMinLength:()=>({min:xj.REMARKS_MIN,message:yj.REMARKS_MIN}),remarksMaxLength:()=>({max:xj.REMARKS_MAX,message:yj.REMARKS_MAX}),fullName:()=>({pattern:_j.FULL_NAME,message:yj.INVALID_FULL_NAME}),noSpaces:()=>({pattern:_j.NO_SPACES,message:yj.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:_j.STARTS_WITH_CAPITAL,message:yj.MUST_START_WITH_CAPITAL}),fileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();for(let e of t){let t=e.originFileObj||e;if(!(t.size/1024/1024<=vj.MAX_FILE_SIZE))return s.message.error(yj.INVALID_FILE_SIZE),Promise.reject(Error(yj.INVALID_FILE_SIZE));if(!vj.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(yj.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>vj.SINGLE_FILE_COUNT)return Promise.reject(Error(yj.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<vj.MAX_FILE_SIZE?vj.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(yj.INVALID_FILE_TYPE)):Promise.reject(Error(yj.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>vj.MULTI_FILE_COUNT)return Promise.reject(Error(yj.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<vj.MAX_FILE_SIZE))return Promise.reject(Error(yj.INVALID_FILE_SIZE));if(!vj.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(yj.INVALID_FILE_TYPE))}return Promise.resolve()}})},wj={beforeUpload:e=>[`image/jpeg`,`image/png`,`application/pdf`].includes(e.type)?e.size/1024/1024<=2?!1:(s.message.error(`File upload must be 2 MB below.`),s.Upload.LIST_IGNORE):(s.message.error(`Only JPG, PNG and PDF files are allowed.`),s.Upload.LIST_IGNORE)},Tj=()=>{let[e]=s.Form.useForm();return(0,l.jsx)(`div`,{style:{padding:24},children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,onFinish:e=>{console.log(`Form Values:`,e)},autoComplete:`off`,children:[(0,l.jsxs)(s.Row,{gutter:16,children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Email`,name:`email`,rules:[Cj.required(`Email`),Cj.email()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Phone Number`,name:`phone`,rules:[Cj.required(`Phone Number`),Cj.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Sj.phoneFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:[Cj.required(`Password`),Cj.password()],children:(0,l.jsx)(s.Input.Password,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Full Name`,name:`fullName`,rules:[Cj.required(`Full Name`),Cj.alphabets(),Cj.firstNameMinLength(),Cj.firstNameMaxLength()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({fullName:Sj.firstNameFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[Cj.required(`Username`),Cj.alphanumeric()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({username:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Website URL`,name:`website`,rules:[Cj.required(`Website URL`),Cj.url()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({website:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`MSP Req ID`,name:`mspreqID`,rules:[Cj.required(`MSP Req ID`),Cj.candidateId(`MSP Req ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[Cj.required(`Candidate ID`),Cj.candidateId(`Candidate ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({candidateId:Sj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(s.Form.Item,{label:`Remarks`,name:`remarks`,rules:[Cj.required(`Remarks`),Cj.remarks(),Cj.remarksMinLength(),Cj.remarksMaxLength()],children:(0,l.jsx)(s.Input.TextArea,{rows:4})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Designation`,name:`designation`,rules:[Cj.required(`Designation`),Cj.designation()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Date of Birth`,name:`dob`,rules:[Cj.dob()],children:(0,l.jsx)(s.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Sj.dobFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Company Name`,name:`companyName`,rules:[Cj.required(`Company Name`),Cj.companyName()],children:(0,l.jsx)(s.Input,{})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{name:`contractType`,label:`Contract Type`,children:(0,l.jsxs)(s.Select,{showSearch:!0,allowClear:!0,filterOption:(e,t)=>(t?.label??``).toLowerCase().includes(e.toLowerCase()),children:[(0,l.jsx)(s.Select.Option,{value:`C2C`,label:`C2C`,children:`C2C`}),(0,l.jsx)(s.Select.Option,{value:`W2-Contract`,label:`W2-Contract`,children:`W2-Contract`}),(0,l.jsx)(s.Select.Option,{value:`W2-Fulltime`,label:`W2-Fulltime`,children:`W2-Fulltime`}),(0,l.jsx)(s.Select.Option,{value:`1099`,label:`1099`,children:`1099`})]})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{name:`candidateProposedRateCurrency`,label:`Currency`,children:(0,l.jsxs)(s.Select,{showSearch:!0,allowClear:!0,children:[(0,l.jsx)(s.Select.Option,{value:`$`,children:`$`}),(0,l.jsx)(s.Select.Option,{value:`₹`,children:`₹`}),(0,l.jsx)(s.Select.Option,{value:`€`,children:`€`}),(0,l.jsx)(s.Select.Option,{value:`zł`,children:`zł`}),(0,l.jsx)(s.Select.Option,{value:`£`,children:`£`}),(0,l.jsx)(s.Select.Option,{value:`kr`,children:`kr`}),(0,l.jsx)(s.Select.Option,{value:`Fr`,children:`Fr`}),(0,l.jsx)(s.Select.Option,{value:`kr`,children:`kr`})]})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Resume new`,name:`resume`,children:(0,l.jsx)(s.Upload,{beforeUpload:wj.beforeUpload,maxCount:1,children:(0,l.jsx)(s.Button,{children:`Upload Resume`})})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Documents`,name:`documents`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Cj.multiFileUpload()],children:(0,l.jsx)(s.Upload,{multiple:!0,beforeUpload:wj.beforeUpload,children:(0,l.jsx)(s.Button,{children:`Upload Documents`})})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Upload File`,name:`file`,valuePropName:`fileList`,getValueFromEvent:e=>e?.fileList,rules:[Cj.fileUpload()],children:(0,l.jsx)(s.Upload,{beforeUpload:wj.beforeUpload,maxCount:1,children:(0,l.jsx)(s.Button,{children:`Upload`})})})})]}),(0,l.jsx)(s.Row,{children:(0,l.jsx)(s.Form.List,{name:`users`,children:(e,{add:t,remove:n})=>(0,l.jsxs)(l.Fragment,{children:[e.map(({key:e,name:t,...r})=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{required:!0,...r,rules:[{required:!0,message:`First name is requried`}],name:[t,`first`],children:(0,l.jsx)(s.Input,{placeholder:`First Name`})})}),(0,l.jsx)(s.Col,{span:11,children:(0,l.jsx)(s.Form.Item,{...r,required:!0,name:[t,`last`],children:(0,l.jsx)(s.Input,{placeholder:`Last Name`})})}),(0,l.jsx)(s.Col,{span:1,children:(0,l.jsx)(c.MinusCircleOutlined,{onClick:()=>n(t)})})]})),(0,l.jsx)(s.Form.Item,{children:(0,l.jsx)(s.Button,{type:`dashed`,onClick:()=>t(),block:!0,icon:(0,l.jsx)(c.PlusOutlined,{}),children:`Add field`})})]})})}),(0,l.jsxs)(s.Form.Item,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,children:`Submit`}),(0,l.jsx)(s.Button,{style:{marginLeft:10},onClick:()=>e.resetFields(),children:`Reset`})]})]})})};function Ej({region:e,onExit:t}){if(!e||e.isHome)return null;let n=e.label?.trim()||e.key;return(0,l.jsxs)(`div`,{role:`status`,"aria-live":`polite`,style:{position:`sticky`,top:0,zIndex:1e3,display:`flex`,alignItems:`center`,gap:12,padding:`10px 16px`,background:`linear-gradient(90deg, #7c2d12 0%, #9a3412 100%)`,color:`#fff`,fontSize:14,fontWeight:600,boxShadow:`0 2px 8px rgba(0,0,0,.25)`,borderBottom:`2px solid #fdba74`},children:[(0,l.jsx)(c.GlobalOutlined,{style:{fontSize:16,flexShrink:0}}),(0,l.jsxs)(`span`,{style:{flex:1,minWidth:0},children:[`You are administering`,` `,(0,l.jsx)(`span`,{style:{background:`rgba(255,255,255,.18)`,padding:`2px 8px`,borderRadius:4,letterSpacing:`.02em`},children:n}),` — `,`changes here affect that region only, not your own.`]}),t&&(0,l.jsxs)(`button`,{type:`button`,onClick:t,style:{display:`inline-flex`,alignItems:`center`,gap:6,background:`rgba(255,255,255,.15)`,border:`1px solid rgba(255,255,255,.45)`,color:`#fff`,borderRadius:4,padding:`4px 12px`,fontSize:13,fontWeight:600,cursor:`pointer`,flexShrink:0},children:[(0,l.jsx)(c.SwapOutlined,{}),`Back to my region`]})]})}Ej.propTypes={region:f.default.shape({key:f.default.string,label:f.default.string,isHome:f.default.bool}),onExit:f.default.func},Ej.defaultProps={region:null,onExit:void 0};function Dj(e){return(0,l.jsx)(Fy,{children:(0,l.jsx)(KE,{...e})})}var{Text:Oj}=s.Typography,kj=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Aj={fileText:(0,l.jsx)(c.FileTextOutlined,{}),checkCircle:(0,l.jsx)(c.CheckCircleOutlined,{}),user:(0,l.jsx)(c.UserOutlined,{}),filter:(0,l.jsx)(c.FilterOutlined,{})};function jj({stats:e=kj}){return(0,l.jsx)(s.Card,{children:(0,l.jsx)(s.Row,{gutter:[12,12],children:e.map(e=>(0,l.jsx)(s.Col,{xs:24,sm:24,md:8,lg:8,xl:8,children:(0,l.jsxs)(s.Card,{className:`stats-inner-card`,children:[(0,l.jsxs)(s.Space,{align:`center`,children:[Aj[e.icon]??Aj.fileText,(0,l.jsx)(Oj,{children:e.label})]}),(0,l.jsx)(s.Statistic,{value:e.value})]})},e.label))})})}var{Text:Mj}=s.Typography;function Nj(e){return e?.USER_NAME??e?.user_name??e?.username??e?.name??e?.full_name??e?.fullName??e?.email??`User ${e?.USER_ID??e?.user_id??`?`}`}function Pj(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Nj(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function Fj(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(0),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(1),[p,m]=(0,o.useState)(10),[h,g]=(0,o.useState)(``),_=(0,o.useCallback)(async({offset:e,limit:r,searchQuery:a}={})=>{u(!0);try{let o=await n.gr({offset:e,limit:r,searchQuery:a??``}),s=(o.users??[]).map(Pj);t(s),i(o.total??s.length)}catch{s.message.error(`Failed to load users`)}finally{u(!1)}},[]);return(0,o.useEffect)(()=>{queueMicrotask(()=>{_({offset:(d-1)*p,limit:p,searchQuery:h})})},[_,d,p,h]),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.TeamOutlined,{}),title:`Users`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Users`,dataSource:e,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsx)(Mj,{strong:!0,style:{fontSize:13},children:e}),t._email&&(0,l.jsx)(`div`,{style:{fontSize:11,color:`var(--color-text-muted)`},children:t._email})]})},{label:`Role`,value:`_role`,width:180}],loading:a,total:r,current:d,pageSize:p,onPageChange:e=>f(e),onPageSizeChange:e=>{m(e),f(1)},onSearch:e=>{g(e),f(1)}})})}var{Text:Ij}=s.Typography,Lj=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Rj=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function zj({field:e,index:t,onToggle:n,onReorder:r}){let i=(0,o.useRef)(null),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(!1);function p(e){i.current=t,e.dataTransfer.effectAllowed=`move`,f(!0)}function m(){f(!1),u(!1)}function h(e){e.preventDefault(),u(!0)}function g(){u(!1)}function _(e){e.preventDefault(),u(!1),i.current!==null&&i.current!==t&&r(i.current,t),i.current=null}return(0,l.jsxs)(`div`,{draggable:!0,onDragStart:p,onDragEnd:m,onDragOver:h,onDragLeave:g,onDrop:_,className:`uss-field-row with-edit${a?` drag-over`:``}${d?` dragging`:``}`,children:[(0,l.jsx)(`span`,{className:`uss-drag-handle`,children:(0,l.jsx)(c.HolderOutlined,{})}),(0,l.jsxs)(`span`,{className:`uss-field-name`,children:[e.fieldName,(0,l.jsx)(`span`,{className:`uss-field-key`,children:e.fieldKey})]}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:e.isVisible,onChange:e=>n(t,`isVisible`,e)})}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>n(t,`isEditable`,e)})}),(0,l.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,l.jsx)(s.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>n(t,`ismandatory`,e)})})]})}function Bj({team:e,configType:t}){let[r,i]=(0,o.useState)({}),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)({}),[f,p]=(0,o.useState)(`job`);(0,o.useEffect)(()=>{e&&(c(!0),n.Gr(e,t).then(i).catch(()=>s.message.error(`Failed to load field config`)).finally(()=>c(!1)))},[e,t]);let m=r[f]??[];function h(e,t){i(n=>({...n,[e]:typeof t==`function`?t(n[e]??[]):t}))}function g(e,t,n){h(f,r=>r.map((r,i)=>i===e?{...r,[t]:n}:r))}function _(e,t){h(f,n=>{let r=[...n],[i]=r.splice(e,1);return r.splice(t,0,i),r.map((e,t)=>({...e,order:t}))})}async function v(){let r=f;d(e=>({...e,[r]:!0}));try{await n.vi(e,r,m,t),s.message.success(`Saved`)}catch{s.message.error(`Save failed`)}finally{d(e=>({...e,[r]:!1}))}}return(0,l.jsxs)(s.Spin,{spinning:a,children:[(0,l.jsx)(s.Tabs,{size:`small`,activeKey:f,onChange:p,items:Lj.map(e=>({key:e.key,label:e.label}))}),(0,l.jsxs)(`div`,{className:`uss-field-header with-edit`,children:[(0,l.jsx)(`span`,{}),(0,l.jsx)(`span`,{children:`Field`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Editable`}),(0,l.jsx)(`span`,{style:{textAlign:`center`},children:`Mandatory`})]}),(0,l.jsxs)(`div`,{className:`uss-field-list`,children:[m.length===0&&!a&&(0,l.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),m.map((e,t)=>(0,l.jsx)(zj,{field:e,index:t,onToggle:g,onReorder:_},e.fieldKey??t))]}),(0,l.jsx)(`div`,{className:`uss-modal-footer`,children:(0,l.jsxs)(s.Button,{type:`primary`,size:`small`,loading:u[f],onClick:v,children:[`Save `,Lj.find(e=>e.key===f)?.label]})})]})}function Vj(){let[e,t]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(!1),[d,f]=(0,o.useState)(`listView`),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)(0),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(``),[x,S]=(0,o.useState)(!1),C=(0,o.useCallback)(async()=>{v(!0);try{let e=await n.hr();m(e.teams),g(e.total)}catch{s.message.error(`Failed to load teams`)}finally{v(!1)}},[]);(0,o.useEffect)(()=>{C()},[C]);function w(e){t(e),f(`listView`),i(!0)}function T(e){t(e),b(e.teamName??``),u(!0)}async function E(){if(!y.trim()){s.message.warning(`Team name is required`);return}S(!0);try{await n._i(e,{teamName:y.trim(),managerId:e.managerId,memberIds:e.memberIds}),s.message.success(`Team updated`),u(!1),C()}catch{s.message.error(`Failed to update team`)}finally{S(!1)}}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Z,{icon:(0,l.jsx)(c.TeamOutlined,{}),title:`Teams`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Teams`,dataSource:p,fields:[{label:`Team Name`,value:`teamName`,width:200},{label:`Manager`,value:`manager`,width:200},{label:`Members`,value:`memberCount`,width:90,sorter:!1},{label:`Actions`,value:`_actions`,width:160,sorter:!1,render:(e,t)=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:4},children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>T(t),children:`Edit`}),(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>w(t),children:`Configure`})]})}],loading:_,total:h})}),(0,l.jsx)(s.Modal,{open:a,onCancel:()=>u(!1),title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.TeamOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),`Edit Team`]}),width:420,footer:null,destroyOnClose:!0,children:(0,l.jsxs)(`div`,{className:`uss-edit-team-body`,style:{paddingTop:12},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`uss-edit-team-label`,children:`Team Name`}),(0,l.jsx)(s.Input,{value:y,onChange:e=>b(e.target.value),onPressEnter:E,placeholder:`Enter team name`})]}),(0,l.jsxs)(`div`,{className:`uss-modal-footer`,children:[(0,l.jsx)(s.Button,{onClick:()=>u(!1),children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,loading:x,onClick:E,children:`Save`})]})]})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.TeamOutlined,{style:{color:`var(--color-brand)`}}),(0,l.jsxs)(`span`,{children:[`Configure: `,e?.teamName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,l.jsx)(`div`,{style:{marginBottom:12},children:(0,l.jsx)(`div`,{className:`uss-config-toggle`,children:Rj.map(e=>(0,l.jsx)(`button`,{className:`uss-config-btn${d===e.key?` active`:``}`,onClick:()=>f(e.key),children:e.label},e.key))})}),e&&(0,l.jsx)(Bj,{team:e,configType:d},`${e?.teamId}-${d}`)]})]})}var Hj=[`view`,`add`,`edit`,`delete`],Uj={view:`View`,add:`Add`,edit:`Edit`,delete:`Delete`,sourcing:`Sourcing`,assign:`Assign`,share:`Share`,change_status:`Status`,my_jobs:`My Jobs`,all_jobs:`All Jobs`,po_msa:`PO MSA`,reApprove:`ReApprove`,sendApprove:`Send Approve`};function Wj(e){return Uj[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Gj(e){let t=Hj.filter(t=>e.includes(t)),n=e.filter(e=>!Hj.includes(e)).sort();return[...t,...n]}function Kj(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Gj([...t])}function qj(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{qb(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function Jj(e={}){if(!e||typeof e!=`object`)return e;let t=Object.keys(e).find(e=>String(e).trim().toLowerCase()===`onboarding`);if(!t)return e;let n=e[t]??{},r={...n.permissions??{}};for(let e of[`sendApprove`,`reApprove`])Object.keys(r).some(t=>t.toLowerCase()===e.toLowerCase())||(r[e]={id:0,value:`0`});return{...e,[t]:{...n,permissions:r}}}function Yj({value:e,onSave:t,className:n}){let[r,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(e);(0,o.useEffect)(()=>{s(e)},[e]);function u(){i(!1);let n=a.trim();n&&n!==e?t(n):s(e)}return r?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input${n?` ${n}`:``}`,value:a,style:{width:Math.max(48,a.length*8)},onChange:e=>s(e.target.value),onBlur:u,onKeyDown:t=>{t.key===`Enter`&&u(),t.key===`Escape`&&(i(!1),s(e)),t.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,l.jsxs)(`span`,{className:`perm-editable-name${n?` ${n}`:``}`,onDoubleClick:e=>{e.stopPropagation(),i(!0)},children:[e,(0,l.jsx)(c.EditOutlined,{className:`perm-name-edit-icon`})]})}function Xj({entry:e,label:t,onToggle:n,onLabelSave:r}){let[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(t),f=e?.value===`1`,p=!!e;(0,o.useEffect)(()=>{d(t)},[t]);function m(){a(!1);let e=u.trim();e&&e!==t?r(e):d(t)}return(0,l.jsx)(s.Tooltip,{title:p?f?`Click to disable`:`Click to enable`:`Not applicable for this module`,children:(0,l.jsxs)(`div`,{className:`perm-action-pill${f?` on`:``}${p?``:` na`}`,onClick:()=>{!i&&p&&n()},children:[(0,l.jsx)(`span`,{className:`perm-action-pill-dot${f?` on`:``}`}),i?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-pill-input`,value:u,style:{width:Math.max(36,u.length*7)},onChange:e=>d(e.target.value),onBlur:m,onKeyDown:e=>{e.key===`Enter`&&m(),e.key===`Escape`&&(a(!1),d(t)),e.stopPropagation()},onClick:e=>e.stopPropagation()}):(0,l.jsx)(`span`,{className:`perm-action-pill-label`,onDoubleClick:e=>{e.stopPropagation(),a(!0)},children:t}),f&&!i&&(0,l.jsx)(c.CheckOutlined,{className:`perm-action-pill-check`})]})})}function Zj({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let c=t?.permissions??{},u=n.filter(t=>qb(e,t)),d=u.filter(e=>c[e]?.value===`1`).length,f=u.filter(e=>c[e]).length,p=f>0&&d===f;return(0,l.jsxs)(`div`,{className:`perm-module-card${p?` all-on`:d>0&&!p?` some-on`:``}`,children:[(0,l.jsxs)(`div`,{className:`perm-module-card-header`,children:[(0,l.jsx)(Yj,{value:i,onSave:t=>o(e,t),className:`perm-module-card-name`}),f>0&&(0,l.jsxs)(`span`,{className:`perm-module-card-badge${d>0?` active`:``}`,children:[d,`/`,f]})]}),(0,l.jsx)(`div`,{className:`perm-module-card-body`,children:u.map(t=>(0,l.jsx)(Xj,{entry:c[t],label:a[t]??Wj(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function Qj({role:e,moduleLabels:t={},actionLabels:r={},onModuleLabelSave:i=()=>{},onActionLabelSave:a=()=>{}}){let[u,d]=(0,o.useState)({}),[f,p]=(0,o.useState)({}),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)(!1),b=n.Br(e);(0,o.useEffect)(()=>{b&&(h(!0),y(!1),n.Ur(b).then(e=>{let t=Jj(e);d(t),p(t)}).catch(()=>s.message.error(`Failed to load permissions`)).finally(()=>h(!1)))},[b]);function x(e,t){y(!0),p(n=>{let r=n[e]??{menuId:u[e]?.menuId??0,permissions:{}},i=r.permissions?.[t]??{id:0,value:`0`};return{...n,[e]:{...r,permissions:{...r.permissions,[t]:{...i,value:i.value===`1`?`0`:`1`}}}}})}async function S(){_(!0);try{await n.hi(b,f),d(f),y(!1),s.message.success(`Permissions saved`)}catch(e){s.message.error(e?.message||`Save failed`)}finally{_(!1)}}let C=(0,o.useMemo)(()=>Object.keys(f).sort(),[f]),w=(0,o.useMemo)(()=>Kj(f),[f]),{enabled:T,total:E}=(0,o.useMemo)(()=>qj(f),[f]);return(0,l.jsxs)(s.Spin,{spinning:m,children:[(0,l.jsxs)(`div`,{className:`perm-panel-header`,children:[(0,l.jsxs)(`div`,{className:`perm-panel-title`,children:[(0,l.jsx)(c.LockOutlined,{style:{color:`var(--color-brand)`,marginRight:6}}),(0,l.jsx)(`span`,{children:e?.roleName}),!m&&E>0&&(0,l.jsxs)(s.Tag,{color:`blue`,style:{marginLeft:8,fontSize:11},children:[T,`/`,E,` enabled`]})]}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.UnlockOutlined,{}),loading:g,disabled:!v,onClick:S,children:`Save Changes`})]}),(0,l.jsxs)(`div`,{className:`perm-hint`,children:[(0,l.jsx)(c.InfoCircleOutlined,{className:`perm-hint-icon`}),(0,l.jsxs)(`span`,{children:[`Click a pill to toggle. `,(0,l.jsx)(`strong`,{children:`Double-click`}),` a module name or action label to rename it — labels are saved locally.`]})]}),C.length===0&&!m?(0,l.jsx)(`div`,{className:`perm-empty`,children:`No permission entries found for this role.`}):(0,l.jsx)(`div`,{className:`perm-cards-grid`,children:C.map(e=>(0,l.jsx)(Zj,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:t[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:a},e))})]})}var{Text:$j}=s.Typography,eM=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function tM(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function nM(e){return String(e||``).trim().toLowerCase()}function rM(e){return e?.key||e?.collectionName||e?.value||``}function iM(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=rM(e);if(!t)return;let o=nM(e.key||t),s=nM(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||tM(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=nM(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:tM(t),value:t,disabled:!1}))}),n}function aM(){let[e,t]=(0,o.useState)(null),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(`listView`),[d,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(0),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)([]),[x,S]=(0,o.useState)(!1),[C,w]=(0,o.useState)(!1),T=(0,o.useMemo)(()=>_.filter(e=>!e.disabled),[_]),E=!x&&T.length===0,D=(0,o.useCallback)(async()=>{g(!0);try{let e=await n.mr();f(e.roles),m(e.total)}catch{s.message.error(`Failed to load roles`)}finally{g(!1)}},[]),O=(0,o.useCallback)(async()=>{S(!0);try{let[e,t]=await Promise.all([n.Er(),n.vr()]),r=iM(e.modules,t),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));v(r),b(e=>e.filter(e=>i.has(e)))}catch{s.message.error(`Failed to load seed status`)}finally{S(!1)}},[]);(0,o.useEffect)(()=>{D()},[D]),(0,o.useEffect)(()=>{O()},[O]);async function k(){if(y.length===0){s.message.warning(E?`All modules already seeded.`:`Select at least one module to seed.`);return}w(!0);try{await n.oi(y),s.message.success(`Role field config seeded`),b([]),await O()}catch(e){s.message.error(e?.message||`Seed failed`)}finally{w(!1)}}function A(e,n=`listView`){t(e),u(n),i(!0)}return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,l.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,l.jsx)(s.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:y,options:_,placeholder:E?`All modules already seeded`:`Select modules or collections to seed`,disabled:x||C||E,loading:x,onChange:b,style:{width:`100%`}})}),(0,l.jsx)(s.Button,{type:`primary`,loading:C,disabled:x||y.length===0,onClick:k,children:`Seed Field Config`})]}),(0,l.jsx)($j,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:E?`Seed is disabled because all configured modules already have role field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.SafetyOutlined,{}),title:`Roles`,style:{marginBottom:0},bodyStyle:{padding:0},children:(0,l.jsx)(Em,{listName:`Roles`,dataSource:d,fields:[{label:`Role Name`,value:`roleName`,width:200},{label:`Description`,value:`description`,width:240},{label:`Users`,value:`userCount`,width:70,sorter:!1},{label:`Actions`,value:`_configure`,width:200,sorter:!1,render:(e,t)=>(0,l.jsxs)(s.Space,{size:2,children:[(0,l.jsx)(s.Button,{size:`small`,type:`link`,onClick:()=>A(t),children:`Configure`}),(0,l.jsx)(s.Button,{size:`small`,type:`link`,icon:(0,l.jsx)(c.LockOutlined,{}),onClick:()=>A(t,`permissions`),children:`Permissions`})]})}],loading:h,total:p})}),(0,l.jsxs)(s.Modal,{className:`uss-modal`,open:r,onCancel:()=>i(!1),title:(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.SafetyOutlined,{style:{color:`var(--color-brand)`}}),(0,l.jsxs)(`span`,{children:[`Configure: `,e?.roleName]})]}),width:720,footer:null,destroyOnClose:!0,children:[(0,l.jsx)(`div`,{style:{marginBottom:12},children:(0,l.jsx)(`div`,{className:`uss-config-toggle`,children:eM.map(e=>(0,l.jsx)(`button`,{className:`uss-config-btn${a===e.key?` active`:``}`,onClick:()=>u(e.key),children:e.label},e.key))})}),e&&(a===`permissions`?(0,l.jsx)(Qj,{role:e},e?.roleId):(0,l.jsx)(ux,{role:e,configType:a},`${e?.roleId}-${a}`))]})]})}var oM=`perm-module-labels`,sM=`perm-action-labels`;function cM(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function lM(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function uM({label:e,onSave:t,onDelete:n,loading:r}){let[i,a]=(0,o.useState)(!1),[u,d]=(0,o.useState)(e);function f(){a(!1);let n=u.trim();n&&n!==e?t(n):d(e)}return(0,l.jsxs)(`div`,{className:`perm-manage-row`,children:[i?(0,l.jsx)(`input`,{autoFocus:!0,className:`perm-inline-input`,value:u,style:{flex:1,minWidth:0},onChange:e=>d(e.target.value),onBlur:f,onKeyDown:t=>{t.key===`Enter`&&f(),t.key===`Escape`&&(a(!1),d(e))}}):(0,l.jsx)(`span`,{className:`perm-manage-row-label`,children:e}),(0,l.jsxs)(`div`,{className:`perm-manage-row-actions`,children:[(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>{d(e),a(!0)},loading:r}),(0,l.jsx)(s.Popconfirm,{title:`Delete this item?`,onConfirm:n,okText:`Delete`,cancelText:`Cancel`,okType:`danger`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{}),danger:!0})})]})]})}function dM({open:e,onClose:t}){let[r,i]=(0,o.useState)(`modules`),[a,u]=(0,o.useState)([]),[d,f]=(0,o.useState)(!1),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(``),[C,w]=(0,o.useState)(``),[T,E]=(0,o.useState)(!1);(0,o.useEffect)(()=>{e&&(D(),O())},[e]);async function D(){f(!0);try{u(await n.Nr())}catch{s.message.error(`Failed to load modules`)}finally{f(!1)}}async function O(){b(!0);try{v(await n.Mr())}catch{s.message.error(`Failed to load actions`)}finally{b(!1)}}async function k(){let e=p.trim();if(!e){s.message.warning(`Enter a module name`);return}g(!0);try{let t=await n.Yn({menuName:e});u(e=>[...e,t]),m(``),s.message.success(`Module added`)}catch{s.message.error(`Failed to add module`)}finally{g(!1)}}async function A(e,t){try{await n.di(e,{menuName:t}),u(n=>n.map(n=>n.MENUID===e?{...n,MENUNAME:t}:n))}catch{s.message.error(`Failed to update module`)}}async function j(e){try{await n.ir(e),u(t=>t.filter(t=>t.MENUID!==e)),s.message.success(`Module deleted`)}catch{s.message.error(`Failed to delete module`)}}async function M(){let e=x.trim(),t=C.trim().toLowerCase().replace(/\s+/g,`_`);if(!e||!t){s.message.warning(`Enter both name and key`);return}E(!0);try{let r=await n.Jn({permissionName:e,permissionKey:t});v(e=>[...e,r]),S(``),w(``),s.message.success(`Action added`)}catch(e){s.message.error(e?.message?.includes(`409`)||e?.status===409?`Permission key already exists`:`Failed to add action`)}finally{E(!1)}}async function N(e,t){try{await n.ui(e,{permissionName:t}),v(n=>n.map(n=>n.permissionId===e?{...n,permissionName:t}:n))}catch{s.message.error(`Failed to update action`)}}async function P(e){try{await n.rr(e),v(t=>t.filter(t=>t.permissionId!==e)),s.message.success(`Action deleted`)}catch{s.message.error(`Failed to delete action`)}}let F=[{key:`modules`,label:`Modules`,children:(0,l.jsxs)(s.Spin,{spinning:d,children:[(0,l.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,l.jsx)(s.Input,{placeholder:`Module name`,value:p,onChange:e=>m(e.target.value),onPressEnter:k,style:{flex:1},size:`small`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),loading:h,onClick:k,children:`Add`})]}),(0,l.jsxs)(`div`,{className:`perm-manage-list`,children:[a.length===0&&!d&&(0,l.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No modules found`}),a.map(e=>(0,l.jsx)(uM,{label:e.MENUNAME,onSave:t=>A(e.MENUID,t),onDelete:()=>j(e.MENUID)},e.MENUID))]})]})},{key:`actions`,label:`Actions`,children:(0,l.jsxs)(s.Spin,{spinning:y,children:[(0,l.jsxs)(`div`,{className:`perm-manage-add-row`,children:[(0,l.jsx)(s.Input,{placeholder:`Action name (e.g. Approve)`,value:x,onChange:e=>S(e.target.value),style:{flex:1},size:`small`}),(0,l.jsx)(s.Input,{placeholder:`Key (e.g. approve)`,value:C,onChange:e=>w(e.target.value),onPressEnter:M,style:{width:140},size:`small`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.PlusOutlined,{}),loading:T,onClick:M,children:`Add`})]}),(0,l.jsxs)(`div`,{className:`perm-manage-list`,children:[_.length===0&&!y&&(0,l.jsx)(`div`,{className:`perm-empty`,style:{paddingTop:24},children:`No actions found`}),_.map(e=>(0,l.jsx)(uM,{label:`${e.permissionName} (${e.permissionKey})`,onSave:t=>N(e.permissionId,t),onDelete:()=>P(e.permissionId)},e.permissionId))]})]})}];return(0,l.jsx)(s.Modal,{open:e,onCancel:t,title:(0,l.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(c.SettingOutlined,{style:{color:`var(--color-brand)`}}),`Manage Modules & Actions`]}),width:520,footer:null,destroyOnClose:!0,children:(0,l.jsx)(s.Tabs,{activeKey:r,onChange:i,size:`small`,items:F})})}function fM(){let[e,t]=(0,o.useState)([]),[r,i]=(0,o.useState)(!1),[a,u]=(0,o.useState)(null),[d,f]=(0,o.useState)(``),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(()=>cM(oM)),[_,v]=(0,o.useState)(()=>cM(sM)),y=(0,o.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return lM(oM,r),r})},[]),b=(0,o.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return lM(sM,r),r})},[]);function x(){g({}),v({}),lM(oM,{}),lM(sM,{}),s.message.success(`Labels reset to defaults`)}let S=(0,o.useCallback)(async()=>{i(!0);try{let{roles:e}=await n.mr();t(e),e.length>0&&u(e[0])}catch{s.message.error(`Failed to load roles`)}finally{i(!1)}},[]);(0,o.useEffect)(()=>{S()},[S]);let C=(0,o.useMemo)(()=>{let t=d.trim().toLowerCase();return t?e.filter(e=>e.roleName.toLowerCase().includes(t)):e},[e,d]),w=Object.keys(h).length>0||Object.keys(_).length>0;return(0,l.jsxs)(`div`,{className:`perm-page`,children:[(0,l.jsxs)(Z,{className:`perm-left-card`,icon:(0,l.jsx)(c.SafetyOutlined,{}),title:`Roles`,bodyStyle:{padding:0},children:[(0,l.jsx)(`div`,{className:`perm-role-search`,children:(0,l.jsx)(s.Input,{prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search roles…`,allowClear:!0,size:`small`,value:d,onChange:e=>f(e.target.value)})}),(0,l.jsx)(s.Spin,{spinning:r,children:(0,l.jsxs)(`div`,{className:`perm-role-list`,children:[C.length===0&&!r&&(0,l.jsx)(`div`,{className:`perm-role-empty`,children:`No roles found`}),C.map(e=>{let t=a?.roleId===e.roleId,n=e.description&&e.description!==`N/A`?e.description:e.roleType===0?`Default role`:`Custom role`;return(0,l.jsxs)(`div`,{className:`perm-role-item${t?` active`:``}`,onClick:()=>u(e),children:[(0,l.jsx)(`div`,{className:`perm-role-item-name`,children:e.roleName}),(0,l.jsx)(`div`,{className:`perm-role-item-desc`,children:n})]},e.roleId)})]})})]}),(0,l.jsx)(Z,{className:`perm-right-card`,icon:(0,l.jsx)(c.LockOutlined,{}),title:`Module Permissions`,extra:(0,l.jsxs)(`span`,{style:{display:`flex`,alignItems:`center`,gap:10},children:[w&&(0,l.jsx)(`button`,{className:`perm-reset-btn`,onClick:x,children:`Reset labels`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.SettingOutlined,{}),onClick:()=>m(!0),children:`Manage`})]}),bodyStyle:{padding:`12px 16px`},children:a?(0,l.jsx)(Qj,{role:a,moduleLabels:h,actionLabels:_,onModuleLabelSave:y,onActionLabelSave:b},a.roleId):(0,l.jsx)(`div`,{className:`perm-empty`,children:`Select a role from the left to manage its permissions.`})}),(0,l.jsx)(dM,{open:p,onClose:()=>m(!1)})]})}var{Title:pM,Text:mM}=s.Typography,hM=[{label:`In Progress`,value:107,sub:`Under review`,color:`blue`},{label:`Hired`,value:2,sub:`Onboarded`,color:`green`},{label:`Project Completed`,value:2,sub:`Project cycle closed`,color:`purple`},{label:`Archive`,value:2,sub:`No longer active`,color:`peach`}];function gM({items:e=hM}){return(0,l.jsx)(s.Card,{className:`onboarding-card`,title:(0,l.jsx)(pM,{level:5,children:`Onboarding`}),extra:(0,l.jsx)(s.Button,{type:`link`,children:`View all`}),children:(0,l.jsx)(s.Row,{gutter:[12,12],children:e.map(e=>(0,l.jsx)(s.Col,{xs:12,sm:6,md:6,lg:12,xl:12,children:(0,l.jsxs)(`div`,{className:`onboarding-item ${e.color}`,children:[(0,l.jsx)(mM,{className:`onboarding-item-label`,children:e.label}),(0,l.jsx)(s.Statistic,{value:e.value,className:`onboarding-stat`}),(0,l.jsx)(`div`,{className:`onboarding-item-footer`,children:(0,l.jsx)(mM,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:_M,Title:vM}=s.Typography,yM=[{group:`Dashboard`,items:[{id:`dashboard`,label:`Admin Dashboard`,icon:(0,l.jsx)(c.DashboardOutlined,{})}]},{group:`Settings`,items:[{id:`org`,label:`Organization`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Organization Settings`,desc:`Manage your company profile and location details`,cards:[{label:`Company Information`,icon:(0,l.jsx)(c.BankOutlined,{}),desc:`Manage company profile, address and business details.`},{label:`Location`,icon:(0,l.jsx)(c.BuildOutlined,{}),desc:`Manage office locations, branches and regions.`}]},{id:`users`,label:`Users`,icon:(0,l.jsx)(c.UserOutlined,{}),heading:`Users`,desc:`Manage platform users and configure their field views.`,component:`users`},{id:`teams`,label:`Teams`,icon:(0,l.jsx)(c.TeamOutlined,{}),heading:`Teams`,desc:`Organize users into teams and configure field visibility per team.`,component:`teams`},{id:`roles`,label:`Roles`,icon:(0,l.jsx)(c.SafetyOutlined,{}),heading:`Roles`,desc:`Control permissions and configure field visibility per role.`,component:`roles`},{id:`permissions`,label:`Permissions`,icon:(0,l.jsx)(c.LockOutlined,{}),heading:`Permissions`,desc:`Manage module-wise action permissions (view, add, edit, delete, and more) per role.`,component:`permissions`},{id:`templates`,label:`Templates`,icon:(0,l.jsx)(c.FileTextOutlined,{}),heading:`Templates`,desc:`Email and signature templates for communications`,component:`templates`},{id:`ai-services`,label:`AI Services`,icon:(0,l.jsx)(c.ThunderboltOutlined,{}),heading:`AI Services`,desc:`Register the AI/automation backends (base URL + auth) that admin-configured AI Actions call.`,component:`ai-services`},{id:`bgc-integration`,label:`Integrations`,icon:(0,l.jsx)(c.SafetyOutlined,{}),heading:`Integrations`,desc:`Manage manual and API integrations used across application workflows.`,component:`bgc-integration`}]},{group:`Clients`,items:[{id:`clients`,label:`Clients`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Clients`,desc:`Manage client accounts and settings`,cards:[{label:`Clients`,icon:(0,l.jsx)(c.BankOutlined,{}),desc:`Manage client companies and account details.`}]}]},{group:`Forms`,items:[{id:`form-groups`,label:`Form Groups`,icon:(0,l.jsx)(c.AppstoreAddOutlined,{}),heading:`Form Groups`,desc:`Define field groups for module add/edit forms with validations and dropdown sources.`,component:`form-groups`},{id:`detail-groups`,label:`Detail Groups`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),heading:`Detail Groups`,desc:`Customize the detail view per module: labels, prefix/suffix, colour, capitalization, reference lookups and merged fields.`,component:`detail-groups`},{id:`row-actions`,label:`Actions`,icon:(0,l.jsx)(c.ToolOutlined,{}),heading:`Actions`,desc:`Configure which action buttons appear per row in each module's list view, scoped per role.`,component:`row-actions`}]},{group:`Master`,items:[{id:`jobs`,label:`Jobs`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),heading:`Jobs Master`,desc:`Configure job sources and status types`,cards:[{label:`Sources`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Manage job source master values.`},{label:`Job Status`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),desc:`Configure job workflow status.`}]},{id:`candidates`,label:`Candidates`,icon:(0,l.jsx)(c.UserOutlined,{}),heading:`Candidates Master`,desc:`Skills, sources and work authorization settings`,cards:[{label:`Sources`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Manage candidate source values.`},{label:`Skills`,icon:(0,l.jsx)(c.SettingOutlined,{}),desc:`Manage skill master data.`},{label:`Work Authorization`,icon:(0,l.jsx)(c.SafetyOutlined,{}),desc:`Manage visa and authorization types.`}]},{id:`submissions`,label:`Submissions`,icon:(0,l.jsx)(c.FileTextOutlined,{}),heading:`Submissions Master`,desc:`Rejection reasons and submission status configuration`,cards:[{label:`Rejection Reasons`,icon:(0,l.jsx)(c.FileTextOutlined,{}),desc:`Manage common rejection reasons.`},{label:`Client Submission Status`,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),desc:`Manage client submission statuses.`}]},{id:`clientmaster`,label:`Client Master`,icon:(0,l.jsx)(c.BankOutlined,{}),heading:`Client Master`,desc:`Payment terms, client types and contact types`,cards:[{label:`Payment Terms`,icon:(0,l.jsx)(c.FileTextOutlined,{}),desc:`Manage billing and payment terms.`},{label:`Client Type`,icon:(0,l.jsx)(c.AppstoreOutlined,{}),desc:`Classify client business types.`},{label:`Client Contact Type`,icon:(0,l.jsx)(c.TeamOutlined,{}),desc:`Manage client contact categories.`}]}]}],bM=[{label:`Sourced`,count:312,color:`#378ADD`,pct:35},{label:`Screened`,count:223,color:`#7F77DD`,pct:25},{label:`Interview`,count:161,color:`#1D9E75`,pct:18},{label:`Offered`,count:107,color:`#EF9F27`,pct:12},{label:`Rejected`,count:89,color:`#E24B4A`,pct:10}],xM=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],SM=[{text:`New candidate Ravi Kumar added to Java Developer role`,time:`2 min ago`,color:`#378ADD`},{text:`Submission approved by Acme Corp for Sr. React Dev`,time:`18 min ago`,color:`#1D9E75`},{text:`User Priya S. added to Recruiters team`,time:`1 hr ago`,color:`#7F77DD`},{text:`Job Data Analyst — TechFlow moved to archived`,time:`3 hr ago`,color:`#EF9F27`},{text:`Candidate rejected — work authorization mismatch`,time:`5 hr ago`,color:`#E24B4A`}];function CM(){return(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:16},children:[(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.DashboardOutlined,{}),title:`Admin Dashboard`,children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(vM,{level:5,children:`Admin Dashboard`}),(0,l.jsx)(_M,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,l.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,l.jsx)(jj,{stats:[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`},{label:`Total Candidates`,value:4320,icon:`team`},{label:`Submissions`,value:892,icon:`fileText`}]})}),(0,l.jsxs)(`div`,{className:`admin-dashboard-mid-row`,children:[(0,l.jsx)(gM,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,l.jsx)(`div`,{className:`admin-pipeline-bar`,children:bM.map(e=>(0,l.jsx)(`div`,{className:`admin-pipeline-seg`,style:{width:`${e.pct}%`,background:e.color}},e.label))}),(0,l.jsx)(`div`,{className:`admin-pipeline-legend`,children:bM.map(e=>(0,l.jsxs)(`div`,{className:`admin-pipeline-legend-item`,children:[(0,l.jsx)(`span`,{className:`admin-pipeline-dot`,style:{background:e.color}}),e.label,` `,e.count]},e.label))}),(0,l.jsx)(`div`,{className:`admin-divider`}),(0,l.jsx)(_M,{strong:!0,style:{fontSize:12},children:`Submission status`}),(0,l.jsxs)(`div`,{className:`admin-sub-status-list`,style:{marginTop:6},children:[(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Pending client review`}),(0,l.jsx)(`span`,{className:`admin-badge warn`,children:`312`})]}),(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Client approved`}),(0,l.jsx)(`span`,{className:`admin-badge success`,children:`248`})]}),(0,l.jsxs)(`div`,{className:`admin-sub-status-item`,children:[(0,l.jsx)(_M,{style:{fontSize:13},children:`Rejected`}),(0,l.jsx)(`span`,{className:`admin-badge danger`,children:`89`})]})]})]})]}),(0,l.jsxs)(`div`,{className:`admin-dashboard-bottom-row`,children:[(0,l.jsx)(Z,{icon:(0,l.jsx)(c.BankOutlined,{}),title:`Top Clients`,extra:(0,l.jsx)(s.Button,{type:`link`,size:`small`,children:`View all`}),children:xM.map(e=>(0,l.jsxs)(`div`,{className:`admin-client-row`,children:[(0,l.jsxs)(`div`,{className:`admin-client-left`,children:[(0,l.jsx)(`div`,{className:`admin-client-icon`,children:(0,l.jsx)(c.BankOutlined,{})}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`admin-client-name`,children:e.name}),(0,l.jsxs)(`div`,{className:`admin-client-sub`,children:[e.jobs,` open jobs`]})]})]}),(0,l.jsxs)(`div`,{className:`admin-client-right`,children:[(0,l.jsx)(`div`,{className:`admin-client-val`,children:e.candidates}),(0,l.jsx)(`div`,{className:`admin-client-sub`,children:`candidates`})]})]},e.name))}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.BellOutlined,{}),title:`Recent Activity`,children:SM.map((e,t)=>(0,l.jsxs)(`div`,{className:`admin-activity-row`,children:[(0,l.jsx)(`div`,{className:`admin-activity-dot`,style:{background:e.color}}),(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`admin-activity-text`,children:e.text}),(0,l.jsx)(`div`,{className:`admin-activity-time`,children:e.time})]})]},t))})]}),(0,l.jsx)(Z,{icon:(0,l.jsx)(c.SettingOutlined,{}),title:`Admin Configuration Overview`,extra:(0,l.jsx)(s.Button,{type:`link`,size:`small`,children:`Manage`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Settings`}),[[`Organization`,2],[`User Settings`,4],[`Templates`,2]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`Master`}),[[`Jobs`,2],[`Candidates`,3],[`Submissions`,2]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsxs)(`span`,{className:`admin-badge info`,children:[t,` items`]})]},e))]}),(0,l.jsxs)(s.Col,{span:8,children:[(0,l.jsx)(_M,{type:`secondary`,style:{fontSize:12,fontWeight:500},children:`System`}),[[`Total Groups`,4],[`Total Modules`,9],[`Config Items`,19]].map(([e,t])=>(0,l.jsxs)(`div`,{className:`admin-cfg-overview-row`,children:[(0,l.jsx)(_M,{style:{fontSize:12},children:e}),(0,l.jsx)(_M,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function wM({activeSection:e,activeGroup:t,filteredCards:n,searchText:r,setSearchText:i,allItems:a,handleNav:o}){return(0,l.jsxs)(s.Row,{gutter:[16,16],children:[(0,l.jsx)(s.Col,{span:24,children:(0,l.jsxs)(Z,{icon:e?.icon,title:e?.heading,extra:(0,l.jsx)(s.Input,{className:`admin-search`,prefix:(0,l.jsx)(c.SearchOutlined,{}),placeholder:`Search settings…`,allowClear:!0,value:r,onChange:e=>i(e.target.value)}),children:[(0,l.jsx)(`div`,{className:`admin-accent-bar`}),(0,l.jsx)(vM,{level:5,children:e?.heading}),(0,l.jsx)(_M,{type:`secondary`,children:e?.desc})]})}),(0,l.jsx)(s.Col,{xs:24,xl:16,style:{alignSelf:`flex-start`},children:(0,l.jsx)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Configuration Items`,extra:(0,l.jsxs)(_M,{type:`secondary`,children:[n.length,` item`,n.length===1?``:`s`]}),children:(0,l.jsx)(s.Row,{gutter:[14,14],children:n.length>0?n.map(e=>(0,l.jsx)(s.Col,{xs:24,sm:12,xl:8,children:(0,l.jsxs)(`div`,{className:`admin-config-item`,children:[(0,l.jsx)(`div`,{className:`admin-config-top-bar`}),(0,l.jsxs)(`div`,{className:`admin-config-body`,children:[(0,l.jsx)(`div`,{className:`admin-config-icon`,children:e.icon}),(0,l.jsxs)(`div`,{className:`admin-config-text`,children:[(0,l.jsx)(`span`,{className:`admin-config-label`,children:e.label}),(0,l.jsx)(`span`,{className:`admin-config-desc`,children:e.desc})]})]}),(0,l.jsx)(`div`,{className:`admin-config-divider`}),(0,l.jsx)(s.Button,{type:`link`,size:`small`,className:`admin-config-manage`,icon:(0,l.jsx)(c.RightOutlined,{}),iconPosition:`end`,children:`Manage`})]})},e.label)):(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(`div`,{className:`admin-config-empty`,children:(0,l.jsx)(s.Empty,{description:`No settings found`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})})})})})}),(0,l.jsx)(s.Col,{xs:24,xl:8,style:{alignSelf:`flex-start`},children:(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Section Overview`,children:[(0,l.jsx)(`div`,{className:`admin-overview-list`,children:yM.filter(e=>e.group!==`Dashboard`).map(e=>{let n=e.group===t?.group;return(0,l.jsxs)(`div`,{className:`admin-overview-item${n?` active`:``}`,onClick:()=>{let t=e.items[0];t&&o(t.id)},children:[(0,l.jsxs)(`div`,{className:`admin-overview-left`,children:[(0,l.jsx)(`div`,{className:`admin-overview-icon`,children:e.items[0]?.icon}),(0,l.jsxs)(`div`,{className:`admin-overview-text`,children:[(0,l.jsx)(`span`,{className:`admin-overview-name`,children:e.group}),(0,l.jsxs)(`span`,{className:`admin-overview-sub`,children:[e.items.length,` module`,e.items.length===1?``:`s`]})]})]}),(0,l.jsx)(`span`,{className:`admin-overview-count${n?` active`:``}`,children:e.items.length})]},e.group)})}),(0,l.jsxs)(`div`,{className:`admin-overview-footer`,children:[(0,l.jsx)(`span`,{className:`admin-overview-footer-label`,children:`Total configuration items`}),(0,l.jsx)(`span`,{className:`admin-overview-footer-value`,children:a.filter(e=>e.cards).reduce((e,t)=>e+t.cards.length,0)})]})]})})]})}function TM(){let[e,t]=(0,o.useState)(`dashboard`),[n,r]=(0,o.useState)(``),i=(0,o.useMemo)(()=>yM.flatMap(e=>e.items),[]),a=(0,o.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,o.useMemo)(()=>yM.find(t=>t.items.some(t=>t.id===e)),[e]),d=(0,o.useMemo)(()=>{if(!a?.cards)return[];let e=n.trim().toLowerCase();return e?a.cards.filter(t=>t.label.toLowerCase().includes(e)||t.desc.toLowerCase().includes(e)):a.cards},[a,n]),f=(0,o.useMemo)(()=>yM.map(e=>({key:e.group,type:`group`,label:e.group,children:e.items.map(e=>({key:e.id,icon:e.icon,label:e.label}))})),[]),p=e=>{t(e),r(``)};return e===`dashboard`||a?.heading,(0,l.jsxs)(`main`,{className:`admin-page`,children:[(0,l.jsx)(`div`,{className:`admin-breadcrumb`,children:(0,l.jsx)(s.Breadcrumb,{items:[{title:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.HomeOutlined,{}),` Home`]})},{title:`Admin`}]})}),(0,l.jsxs)(s.Row,{gutter:[16,16],className:`admin-wrapper`,children:[(0,l.jsx)(s.Col,{xs:24,lg:6,xl:5,children:(0,l.jsxs)(Z,{title:`Admin Console`,icon:(0,l.jsx)(c.SettingOutlined,{}),children:[(0,l.jsxs)(`div`,{className:`admin-sidebar-banner`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-banner-title`,children:`Admin Panel`}),(0,l.jsx)(`span`,{className:`admin-sidebar-banner-sub`,children:`Configuration Center`}),(0,l.jsxs)(s.Row,{gutter:[8,0],children:[(0,l.jsx)(s.Col,{span:12,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Groups`}),(0,l.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:yM.length})]})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsxs)(`div`,{className:`admin-sidebar-pill`,children:[(0,l.jsx)(`span`,{className:`admin-sidebar-pill-label`,children:`Modules`}),(0,l.jsx)(`span`,{className:`admin-sidebar-pill-value`,children:i.length})]})})]})]}),(0,l.jsx)(s.Menu,{mode:`inline`,selectedKeys:[e],items:f,onClick:({key:e})=>p(e),className:`admin-sidebar-menu`})]})}),(0,l.jsx)(s.Col,{xs:24,lg:18,xl:19,children:e===`dashboard`?(0,l.jsx)(CM,{}):a?.component===`form-groups`?(0,l.jsx)(cC,{}):a?.component===`detail-groups`?(0,l.jsx)(HC,{}):a?.component===`row-actions`?(0,l.jsx)(jw,{}):a?.component===`users`?(0,l.jsx)(Fj,{}):a?.component===`teams`?(0,l.jsx)(Vj,{}):a?.component===`roles`?(0,l.jsx)(aM,{}):a?.component===`permissions`?(0,l.jsx)(fM,{}):a?.component===`templates`?(0,l.jsx)(Uw,{}):a?.component===`ai-services`?(0,l.jsx)(qw,{}):a?.component===`bgc-integration`?(0,l.jsx)($w,{}):(0,l.jsx)(wM,{activeSection:a,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:EM}=s.Typography;function DM(){let e=(0,d.useNavigate)(),{state:t}=(0,d.useLocation)(),n=t?.moduleName||`stickyNotes`,r=t?.title||`Sticky Notes`,i={...t?.request,params:{...t?.request?.params,limit:200,offset:0}};return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(c.ArrowLeftOutlined,{}),onClick:()=>e(-1),style:{marginBottom:12},children:`Back`}),(0,l.jsx)(Lt,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:OM,Title:kM}=s.Typography,AM=10485760,jM=`/templates/test_cases_flow_template.base64.txt`,MM=`test_cases_flow_template.xlsx`,NM=`module | subModule | step_order | description | actions | key | value | expected | scenario`,PM={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},FM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function IM(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result).split(`,`)[1]),r.onerror=n,r.readAsDataURL(e)})}function LM(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function RM(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function zM({errors:e}){return(0,l.jsx)(`div`,{className:`bulk-tooltip-errors`,children:(e??[]).map((e,t)=>(0,l.jsx)(`div`,{children:e.message},`${e.field}-${t}`))})}function BM({errors:e,expanded:t,onToggle:n,onSummaryClick:r}){return e.length===0?null:(0,l.jsxs)(`div`,{className:`bulk-error-banner`,children:[(0,l.jsxs)(`div`,{className:`bulk-error-summary`,children:[(0,l.jsxs)(`button`,{type:`button`,className:`bulk-error-summary-main`,onClick:r,"aria-label":`Scroll to first invalid row`,children:[(0,l.jsx)(c.ExclamationCircleOutlined,{className:`bulk-error-icon`}),(0,l.jsxs)(`span`,{children:[e.length,` validation error(s) found`]})]}),(0,l.jsx)(s.Button,{type:`link`,onClick:n,"aria-expanded":t,children:t?`Hide Errors`:`View Errors`})]}),t&&(0,l.jsx)(`div`,{className:`bulk-error-list`,role:`region`,"aria-label":`Validation error details`,children:e.map((e,t)=>(0,l.jsxs)(`div`,{className:`bulk-error-line`,children:[(0,l.jsxs)(`span`,{className:`bulk-row-chip`,children:[`Row `,e.id]}),(0,l.jsx)(`span`,{children:e.message})]},`${e.id}-${e.field}-${t}`))})]})}function VM({rows:e,view:t,onViewChange:n,onConfirm:r,onReset:i,saving:a,firstInvalidRowId:o,firstInvalidRowRef:u}){let d=e.filter(e=>e.row_status===`invalid`),f=t===`errors`?d:e,p=d.length>0||a;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(s.Row,{justify:`space-between`,align:`middle`,gutter:[16,16],className:`bulk-table-toolbar`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space.Compact,{children:[(0,l.jsx)(s.Button,{type:t===`all`?`primary`:`default`,onClick:()=>n(`all`),children:`All rows`}),(0,l.jsx)(s.Button,{type:t===`errors`?`primary`:`default`,onClick:()=>n(`errors`),children:`Errors only`})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsxs)(OM,{type:`secondary`,children:[e.length,` row(s)`]})})]}),(0,l.jsx)(`div`,{className:`bulk-table-wrap`,children:(0,l.jsxs)(`table`,{className:`bulk-preview-table`,children:[(0,l.jsx)(`thead`,{children:(0,l.jsxs)(`tr`,{children:[(0,l.jsx)(`th`,{className:`bulk-col-row`,children:`Row`}),(0,l.jsx)(`th`,{className:`bulk-col-flow`,children:`Submodule`}),(0,l.jsx)(`th`,{className:`bulk-col-description`,children:`Description`}),(0,l.jsx)(`th`,{className:`bulk-col-keyword`,children:`Action`}),(0,l.jsx)(`th`,{className:`bulk-col-target`,children:`Key`}),(0,l.jsx)(`th`,{className:`bulk-col-status`,children:`Status`}),(0,l.jsx)(`th`,{className:`bulk-col-error`,children:`Error`})]})}),(0,l.jsx)(`tbody`,{children:f.map(e=>{let t=e.errors??[],n=e.row_status===`invalid`;return(0,l.jsxs)(`tr`,{ref:n&&e.id===o?u:null,className:n?`bulk-row-invalid`:``,children:[(0,l.jsx)(`td`,{children:e.id}),(0,l.jsx)(`td`,{title:e.submodule,children:e.submodule}),(0,l.jsx)(`td`,{title:e.description,children:e.description?e.description:(0,l.jsx)(`span`,{className:`bulk-empty-text`,children:`-empty-`})}),(0,l.jsx)(`td`,{children:(0,l.jsx)(`code`,{className:`bulk-code-chip`,children:e.actions})}),(0,l.jsx)(`td`,{title:e.key,children:e.key}),(0,l.jsx)(`td`,{children:n?(0,l.jsx)(s.Tag,{color:`red`,children:`Error`}):(0,l.jsx)(s.Tag,{color:`green`,children:`Valid`})}),(0,l.jsx)(`td`,{children:n?(0,l.jsx)(s.Tooltip,{title:(0,l.jsx)(zM,{errors:t}),placement:`left`,children:(0,l.jsxs)(`button`,{type:`button`,className:`bulk-error-info`,"aria-label":`View ${t.length} error(s) for row ${e.id}`,children:[(0,l.jsx)(c.InfoCircleOutlined,{}),(0,l.jsx)(s.Badge,{count:t.length,size:`small`})]})}):(0,l.jsx)(`span`,{className:`bulk-error-none`,children:`-`})})]},`${e.id}-${e.step_order}`)})})]})}),(0,l.jsxs)(s.Space,{className:`bulk-actions`,children:[(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:i,children:`Reset`}),(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:a,disabled:p,onClick:r,children:d.length>0?`Fix ${d.length} error(s) to proceed`:`Save to database`})]})]})}function HM(){let e=(0,d.useNavigate)(),r=(0,o.useMemo)(()=>t.l(),[]),i=(0,o.useRef)(null),a=(0,o.useRef)(null),[u,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(`idle`),[_,v]=(0,o.useState)(!1),[y,b]=(0,o.useState)(null),[x,S]=(0,o.useState)([]),[C,w]=(0,o.useState)(`all`),[T,E]=(0,o.useState)(null),[D,O]=(0,o.useState)(null),[k,A]=(0,o.useState)(!1),j=u.map(e=>({value:e.modulename,label:e.modulename})),M=RM(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=PM[h]??0,I=x.find(e=>e.row_status===`invalid`)?.id,L=(0,o.useCallback)(()=>{m(``),g(`idle`),v(!1),b(null),S([]),w(`all`),E(null),O(null),i.current&&(i.current.value=``)},[]);(0,o.useEffect)(()=>{async function e(){try{let e=await Qy({project:r?.name??``,activeOnly:!0});f(e?.items??[])}catch(e){console.error(e),s.message.error(`Unable to load modules.`)}}e()},[r?.name]);let R=e=>{m(e??``),S([]),O(null),E(null),b(null),A(!1),g(e?`module_set`:`idle`)},z=async e=>{if(!e||!P)return;let t=e.name.split(`.`).pop()?.toLowerCase();if(![`xlsx`,`csv`].includes(t)){g(`module_set`),E({message:`Invalid file type. Please upload an Excel .xlsx or CSV .csv file.`});return}if(e.size>AM){g(`module_set`),E({message:`File must be 10 MB or smaller.`});return}E(null),S([]),O(null),b({name:e.name,size:e.size}),g(`encoding`);try{let n=await IM(e);g(`validating`);let i=await qy({filename:e.name,project:r?.name??``,module:p,file_base64:n,file_type:t});S(i?.rows??[]),w(`all`),g(`preview`)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`error`)}},B=async()=>{try{let e=await fetch(jM);if(!e.ok)throw Error(`Template file not found (${e.status})`);let t=(await e.text()).trim(),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e+=1)r[e]=n.charCodeAt(e);let i=new Blob([r],{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}),a=URL.createObjectURL(i),o=document.createElement(`a`);o.href=a,o.download=MM,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(a),s.message.success(`Sample template downloaded.`)}catch(e){console.error(e),s.message.error(`Unable to download sample template.`)}},V=async()=>{g(`inserting`),E(null);try{let t=await Jy({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:LM(x)});O(t),g(`done`),s.message.success(`Bulk upload saved. Redirecting to view test cases...`),window.setTimeout(()=>e(`/viewTestCase`),900)}catch(e){console.error(e),E(e.payload??{code:`NETWORK_ERROR`,message:e.message||`Could not reach the server.`}),g(`preview`)}},ee=(0,o.useCallback)(()=>{a.current?.scrollIntoView({behavior:`smooth`,block:`center`})},[]),te=[`bulk-dropzone`,_?`bulk-dropzone-dragging`:``,y?`bulk-dropzone-has-file`:``,T&&h!==`preview`?`bulk-dropzone-error`:``,p?``:`bulk-dropzone-disabled`].filter(Boolean).join(` `);return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:FM})}),r?.name&&(0,l.jsx)(s.Col,{children:(0,l.jsx)(OM,{strong:!0,children:r.name})})]}),(0,l.jsxs)(`div`,{className:`zt-page zt-page-wide bulk-page`,children:[(0,l.jsxs)(`div`,{className:`bulk-header`,children:[(0,l.jsx)(kM,{level:3,children:`Bulk upload test cases`}),(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,children:[(0,l.jsx)(OM,{type:`secondary`,children:NM}),(0,l.jsx)(OM,{type:`secondary`,children:`Use the sample template for the required columns. Uploaded rows are saved as Active by default.`})]})]}),(0,l.jsx)(`div`,{className:`bulk-stepbar`,children:[`Select`,`Upload`,`Validate`,`Save`].map((e,t)=>(0,l.jsxs)(`span`,{className:t<F?`bulk-step-active`:``,children:[t+1,` `,e]},e))}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:`1. Module selector`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,className:`bulk-module-select`,placeholder:`Choose a module`,options:j,value:p||void 0,onChange:R})}),p&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`2. File upload`,extra:(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.DownloadOutlined,{}),onClick:B,children:`Download Sample Template`}),children:[(0,l.jsx)(s.Alert,{type:`info`,showIcon:!0,message:`First time uploading?`,description:`Download the sample template, keep the column names unchanged, fill your test steps, and upload either .xlsx or .csv.`,className:`bulk-inline-alert`}),(0,l.jsxs)(`button`,{type:`button`,className:te,disabled:!P,onClick:()=>i.current?.click(),onDragOver:e=>{e.preventDefault(),P&&v(!0)},onDragLeave:()=>v(!1),onDrop:e=>{e.preventDefault(),v(!1),z(e.dataTransfer.files?.[0])},children:[(0,l.jsx)(c.CloudUploadOutlined,{className:`bulk-upload-icon`}),y?(0,l.jsxs)(`span`,{className:`bulk-file-chip`,children:[y.name,` - `,Math.ceil(y.size/1024),` KB`]}):(0,l.jsx)(`span`,{children:`Drag & drop here, or click to browse`})]}),(0,l.jsx)(`input`,{ref:i,hidden:!0,type:`file`,accept:`.xlsx,.csv`,onChange:e=>z(e.target.files?.[0])}),N&&(0,l.jsx)(s.Progress,{percent:h===`encoding`?45:82,showInfo:!1,size:`small`}),T&&h!==`preview`&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`})]}),x.length>0&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`3. Validation result`,children:[(0,l.jsx)(BM,{errors:M,expanded:k,onToggle:()=>A(e=>!e),onSummaryClick:ee}),T&&h===`preview`&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T.message,className:`bulk-inline-alert`}),(0,l.jsx)(VM,{rows:x,view:C,onViewChange:w,onConfirm:V,onReset:L,saving:h===`inserting`,firstInvalidRowId:I,firstInvalidRowRef:a})]}),D&&h===`done`&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:`4. Upload complete`,children:[(0,l.jsxs)(s.Row,{gutter:[16,16],className:`bulk-metrics`,children:[(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Total`}),(0,l.jsx)(`strong`,{children:x.length})]})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Inserted`}),(0,l.jsx)(`strong`,{children:D.inserted??0})]})}),(0,l.jsx)(s.Col,{xs:24,md:8,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(OM,{children:`Failed`}),(0,l.jsx)(`strong`,{children:D.failed??0})]})})]}),(0,l.jsx)(s.Alert,{type:`success`,showIcon:!0,icon:(0,l.jsx)(c.CheckCircleOutlined,{}),message:`${D.inserted??0} test cases saved to database - module: ${p}`,className:`bulk-inline-alert`}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:L,children:`Upload another file`})]})]})]})}var UM=[{value:`navigate`,label:`Navigate`},{value:`fill`,label:`Fill`},{value:`click`,label:`Click`},{value:`select`,label:`Select`},{value:`press_key`,label:`Press Key`},{value:`type_and_select`,label:`Type and Select`},{value:`type_and_select_modal`,label:`Type and Select (Modal)`},{value:`upload_file`,label:`Upload File`},{value:`check_checkbox`,label:`Check Checkbox`},{value:`check_filter_checkbox`,label:`Check Filter Checkbox`},{value:`select_page_size`,label:`Select Page Size`},{value:`check_n_checkboxes`,label:`Check N Checkboxes`},{value:`store_text`,label:`Store Text`},{value:`reset_session`,label:`Reset Session`},{value:`switch_to_new_tab`,label:`Switch To New Tab`},{value:`close_tab`,label:`Close Tab`},{value:`assert_visible`,label:`Assert Visible`},{value:`assert_hidden`,label:`Assert Hidden`},{value:`assert_text`,label:`Assert Text`},{value:`assert_url`,label:`Assert URL`},{value:`assert_body_contains`,label:`Assert Body Contains`},{value:`assert_button_disabled`,label:`Assert Button Disabled`},{value:`assert_field_error`,label:`Assert Field Error`},{value:`assert_field_accepted`,label:`Assert Field Accepted`},{value:`assert_children_disabled`,label:`Assert Children Disabled`},{value:`assert_children_visible`,label:`Assert Children Visible`},{value:`assert_element_count`,label:`Assert Element Count`},{value:`assert_toast`,label:`Assert Toast`},{value:`assert_toast_success`,label:`Assert Toast Success`},{value:`assert_toast_error`,label:`Assert Toast Error`},{value:`wait_for_visible`,label:`Wait For Visible`},{value:`wait_for_hidden`,label:`Wait For Hidden`},{value:`wait_for_text`,label:`Wait For Text`}],{Text:WM}=s.Typography,GM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],KM={tags:`regression`,active:1},qM={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function JM(e=[]){return e.map(e=>({value:e,label:e}))}function YM(e=``){return String(e??``).trim()}function XM(e=``){return YM(e).toLowerCase()}function ZM(e=[]){let t=new Map;return e.forEach(e=>{let n=YM(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function QM(e=[],t,n){let r=YM(t).toLowerCase(),i=YM(n).toLowerCase();return e.reduce((e,t)=>{let n=YM(t?.module).toLowerCase(),a=YM(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function $M({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(WM,{strong:!0,className:`v1-section-label`,children:t})]})}function eN(){let[e]=s.Form.useForm(),[t]=s.Form.useForm(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)([]),[f,p]=(0,o.useState)([]),[m,h]=(0,o.useState)(!1),[g,_]=(0,o.useState)(!1),[v,y]=(0,o.useState)({open:!1,typeKey:`module`}),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)(!1),[w,T]=(0,o.useState)(!1),E=(0,d.useNavigate)(),D=qM[v.typeKey],O=(0,o.useMemo)(()=>JM(r),[r]),k=s.Form.useWatch(`module`,e),A=s.Form.useWatch(`flow`,e),j=!!YM(k),M=!!YM(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{let e=await Hy(qM.module.dbName);i(e?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),s.message.error(`Unable to load testing options.`)}finally{h(!1)}},L=(0,o.useCallback)(async t=>{let n=YM(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await Ky({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(ZM(t))}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{_(!1)}}},[e]),R=(0,o.useCallback)(async(t,n,r)=>{let i=YM(t),a=YM(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}C(!0);try{e.setFieldsValue({step_order:QM(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),s.message.error(`Unable to load step order.`)}finally{C(!1)}},[e]);(0,o.useEffect)(()=>{Promise.resolve().then(I)},[]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>L(k))},[L,k]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>R(k,A,a))},[a,R,A,k]);let z=async t=>{let n={module:YM(t.module),flow:YM(t.flow),step_order:Number(t.step_order),description:YM(t.description),keyword:XM(t.keyword),target:YM(t.target),value:YM(t.value),expected:YM(t.expected),tags:t.tags?YM(t.tags):KM.tags,active:Number(t.active)};T(!0);try{await Gy(n),s.message.success(`Test case details saved successfully.`),e.resetFields(),u([]),p([])}catch(e){console.error(`Unable to save test case:`,e),s.message.error(`Unable to save test case.`)}finally{T(!1)}},B=(t,n)=>{e.setFieldsValue({[t]:YM(n)})},V=t=>{e.setFieldsValue({module:YM(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:KM.tags,value:void 0,expected:void 0})},ee=t=>{e.setFieldsValue({flow:YM(t),step_order:void 0})},te=e=>{let n=qM[e];y({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},ne=()=>{y(e=>({...e,open:!1})),t.resetFields()},re=async()=>{try{let n=YM((await t.validateFields()).name),r=await Uy({name:n,type:D.dbName});F(v.typeKey,r?.items??[]),e.setFieldsValue({[D.formField]:n}),s.message.success(`${D.label} added successfully.`),ne()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),s.message.error(`Unable to add ${D.label.toLowerCase()}.`)}finally{x(!1)}};return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:GM})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>E(`/zinnext-home`),children:`View Table`})})]}),(0,l.jsx)(`div`,{className:`v1-page`,children:(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(`div`,{className:`v1-page-header`,children:(0,l.jsxs)(s.Space,{align:`center`,size:10,children:[(0,l.jsx)(c.ProfileOutlined,{className:`v1-outer-icon`}),(0,l.jsx)(`div`,{children:(0,l.jsx)(WM,{strong:!0,style:{fontSize:16},children:`Add Test Case`})})]})}),(0,l.jsx)(Z,{children:(0,l.jsxs)(s.Form,{form:e,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:KM,onFinish:z,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)($M,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,l.jsx)(WM,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:m,optionFilterProp:`label`,placeholder:`Select module`,options:O,onChange:V})}),(0,l.jsx)(s.Button,{"aria-label":`Add module`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:30},onClick:()=>te(`module`)})]})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Flow`,name:`flow`,children:(0,l.jsx)(s.AutoComplete,{maxLength:100,allowClear:!0,disabled:N,options:f,placeholder:g?`Loading flows`:`Enter flow`,onChange:ee,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,disabled:!0,placeholder:S?`Loading step order`:`Step order`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`keyword`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,disabled:P,optionFilterProp:`label`,placeholder:`Select action`,options:UM,onChange:t=>e.setFieldsValue({keyword:XM(t)})})})}),(0,l.jsx)(s.Col,{xs:24,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3,maxLength:255,disabled:P,placeholder:`Enter description`,showCount:!0,onBlur:e=>B(`description`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`target`,children:(0,l.jsx)(s.Input,{maxLength:255,disabled:P,placeholder:`Enter target`,onBlur:e=>B(`target`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Tags`,name:`tags`,children:(0,l.jsx)(s.Input,{maxLength:200,disabled:P,placeholder:`Enter tags`,prefix:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>B(`tags`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter value`,onBlur:e=>B(`value`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:P,placeholder:`Enter expected result`,onBlur:e=>B(`expected`,e.target.value)})})})]})}),(0,l.jsx)(`div`,{className:`v1-form-actions`,children:(0,l.jsx)(s.Form.Item,{children:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:w,disabled:P,children:`Submit`}),(0,l.jsx)(s.Button,{onClick:()=>{e.resetFields(),u([]),p([])},children:`Reset`})]})})})]})}),(0,l.jsx)(s.Modal,{title:`Add ${D.label}`,open:v.open,confirmLoading:b,okText:`Add`,onCancel:ne,onOk:()=>{x(!0),re()},destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,l.jsx)(s.Form.Item,{label:`Name`,name:`name`,children:(0,l.jsx)(s.Input,{maxLength:100,placeholder:`Enter ${D.label.toLowerCase()} name`,onBlur:e=>{t.setFieldsValue({name:YM(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var{Text:tN}=s.Typography,nN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function rN(e=``){return String(e??``).trim()}function iN(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var aN=[{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,ellipsis:!0},{label:`Description`,value:`description`,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`green`,children:`Positive`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Negative`})}],oN={key:!1,value:!1,expected:!1};function sN(e,t){return t?e[t]??oN:oN}function cN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function lN(){let[e]=s.Form.useForm(),r=(0,d.useNavigate)(),[i]=(0,d.useSearchParams)(),a=i.get(`edit`),u=!!a,f=(0,o.useMemo)(()=>t.l(),[]),[p,m]=(0,o.useState)([]),[h,g]=(0,o.useState)([]),[_,v]=(0,o.useState)([]),[y,b]=(0,o.useState)(UM),[x,S]=(0,o.useState)({}),[C,w]=(0,o.useState)(!1),[T,E]=(0,o.useState)(!1),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)(!1),[j,M]=(0,o.useState)(!1),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`submodule`,e),F=s.Form.useWatch(`actions`,e),I=!!N,L=!!P,R=(0,o.useMemo)(()=>sN(x,F),[x,F]),z=(0,o.useMemo)(()=>iN(p,`modulename`),[p]),B=(0,o.useMemo)(()=>iN(h,`submodulename`),[h]),V=(0,o.useMemo)(()=>p.find(e=>e.id===N)?.modulename??``,[p,N]),ee=(0,o.useMemo)(()=>h.find(e=>e.id===P)?.submodulename??``,[P,h]),te=(0,o.useCallback)(async()=>{try{let e=await Wy();Array.isArray(e?.options)&&e.options.length>0&&b(e.options),e?.rules&&typeof e.rules==`object`&&S(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),s.message.error(`Unable to load action validation rules.`)}},[]),ne=(0,o.useCallback)(async e=>{if(!e){m([]);return}w(!0);try{let t=await Qy({project:e,activeOnly:!0});m(t?.items??[])}catch(e){console.error(`Unable to load modules:`,e),s.message.error(`Unable to load modules.`)}finally{w(!1)}},[]),re=(0,o.useCallback)(async(e,t)=>{if(!e||!t){g([]);return}E(!0);try{let n=await tb({project:e,module:t,activeOnly:!0});g(n?.items??[])}catch(e){console.error(`Unable to load submodules:`,e),s.message.error(`Unable to load submodules.`)}finally{E(!1)}},[]),ie=(0,o.useCallback)(async(t,n,r,i=``)=>{if(!t||!n||!r){v([]),e.setFieldsValue({step_order:void 0});return}O(!0);try{let[a,o]=await Promise.all([ib({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r,actions:i,limit:1e3}),sb({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r})]);v(a?.items??[]),e.setFieldsValue({step_order:o?.step_order??1})}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{O(!1)}},[e]),H=(0,o.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{let t=await ib({product_parent_ID:f.id,module_parent_ID:N,submodule_parent_ID:P,actions:e,limit:1e3});v(t?.items??[])}catch(e){console.error(`Unable to load action flows:`,e),s.message.error(`Unable to load action steps.`)}finally{O(!1)}}},[f?.id,N,P]),ae=(0,o.useCallback)(async()=>{if(!(!a||!f?.name)){M(!0);try{let t=await ob(a);await re(f.name,t.module);let n=await ib({product_parent_ID:t.product_parent_ID,module_parent_ID:t.module_parent_ID,submodule_parent_ID:t.submodule_parent_ID,limit:1e3});v(n?.items??[]),e.setFieldsValue({module:t.module_parent_ID,submodule:t.submodule_parent_ID,step_order:t.step_order,actions:t.actions,key:t.key,value:t.value,expected:t.expected,description:t.description,scenario:t.scenario===1,active:Number(t.active)!==0})}catch(e){console.error(`Unable to load test flow:`,e),s.message.error(`Unable to load test flow for edit.`),r(`/viewTestCase`)}finally{M(!1)}}},[a,e,re,r,f?.name]);return(0,o.useEffect)(()=>{if(!f){r(`/select-project`,{replace:!0});return}Promise.resolve().then(async()=>{await te(),await ne(f.name),a&&await ae()})},[f,r,te,ne,a,ae]),f?(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:nN})}),(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(tN,{strong:!0,children:f.name})]})})]}),(0,l.jsx)(`div`,{className:`zt-page`,children:(0,l.jsxs)(s.Form,{form:e,layout:`vertical`,colon:!1,className:`v1-form`,initialValues:{scenario:!0,active:!0},onFinish:async t=>{let n={product_parent_ID:Number(f?.id),module_parent_ID:Number(t.module),submodule_parent_ID:Number(t.submodule),description:rN(t.description),actions:rN(t.actions),key:rN(t.key),value:rN(t.value),expected:rN(t.expected),scenario:+!!t.scenario,active:+!!t.active};A(!0);try{if(u){await cb(a,{...n,step_order:Number(t.step_order)}),s.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await ab(n),s.message.success(`Step saved (#${t.step_order}).`),e.setFieldsValue({actions:void 0,key:void 0,value:void 0,expected:void 0,description:void 0}),await ie(n.product_parent_ID,n.module_parent_ID,n.submodule_parent_ID)}catch(e){console.error(`Unable to save test case:`,e),s.message.error(u?`Unable to update test case.`:`Unable to save step.`)}finally{A(!1)}},autoComplete:`off`,disabled:j,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:8,className:`zt-section-title`,children:[(0,l.jsx)(`span`,{className:`zt-step-tag`,children:`1`}),(0,l.jsx)(`span`,{children:`Module & Submodule`})]}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],align:`bottom`,children:[(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,loading:C,placeholder:`Select module`,options:z,onChange:t=>{let n=p.find(e=>e.id===t)?.modulename??``;e.setFieldsValue({module:t,submodule:void 0,step_order:void 0,actions:void 0,key:void 0,value:void 0,expected:void 0}),cN(e,[`actions`,`key`,`value`,`expected`]),g([]),v([]),re(f?.name,n)}})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Submodule`,name:`submodule`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,disabled:!I,loading:T,placeholder:I?`Select submodule`:`Select module first`,options:B,onChange:t=>{e.setFieldsValue({submodule:t,actions:void 0,key:void 0,value:void 0,expected:void 0}),cN(e,[`actions`,`key`,`value`,`expected`]),ie(f?.id,N,t)}})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Scenario`,name:`scenario`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{disabled:!L,checkedChildren:`Positive`,unCheckedChildren:`Negative`})})}),(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Active`,name:`active`,valuePropName:`checked`,children:(0,l.jsx)(s.Switch,{checkedChildren:`Active`,unCheckedChildren:`Inactive`})})})]})}),L&&(0,l.jsxs)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:8,className:`zt-section-title`,children:[(0,l.jsx)(`span`,{className:`zt-step-tag`,children:`2`}),(0,l.jsx)(c.FileTextOutlined,{}),(0,l.jsx)(`span`,{children:`Step Details`})]}),extra:(0,l.jsxs)(tN,{type:`secondary`,children:[V,` / `,ee]}),children:[(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:6,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,children:(0,l.jsx)(s.Input,{disabled:!0,placeholder:D?`Loading…`:`Auto`})})}),(0,l.jsx)(s.Col,{xs:24,md:18,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`actions`,rules:[{required:!0,message:`Mandatory Field`}],children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`Select action`,options:y,onChange:t=>{let n=sN(x,t);e.setFieldsValue({actions:t,key:n.key?e.getFieldValue(`key`):void 0,value:n.value?e.getFieldValue(`value`):void 0,expected:n.expected?e.getFieldValue(`expected`):void 0}),cN(e,[`key`,`value`,`expected`]),H(t||``)}})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`key`,rules:[{required:R.key,message:`Key is required for this action`}],children:(0,l.jsx)(s.Input,{maxLength:255,disabled:F&&!R.key,placeholder:F?R.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,rules:[{required:R.value,message:`Value is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:1,autoSize:{minRows:1,maxRows:4},disabled:F&&!R.value,placeholder:F?R.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:R.expected,message:`Expected result is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:2,disabled:F&&!R.expected,placeholder:F?R.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:2,maxLength:255,showCount:!0,placeholder:`Enter description`})})})]}),(0,l.jsxs)(s.Space,{className:`zt-actions`,children:[(0,l.jsx)(s.Button,{onClick:()=>{if(u){r(`/viewTestCase`);return}e.resetFields(),g([]),v([]),E(!1),O(!1)},children:`Cancel`}),(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:k||j,children:u?`Update Test Case`:`Save & Continue`})]})]},`${N}-${P}`),L&&(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.TableOutlined,{}),(0,l.jsx)(`span`,{children:`Added Steps`})]}),extra:(0,l.jsx)(s.Tag,{children:F?`${_.length} ${F} step(s)`:`${_.length} step(s)`}),children:(0,l.jsx)(Em,{listName:`Added Steps`,loading:D,fields:aN,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:uN}=s.Typography,dN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function fN(){let e=(0,d.useNavigate)(),r=(0,o.useMemo)(()=>t.l(),[]),[i,a]=(0,o.useState)([]),[u,f]=(0,o.useState)({}),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(``),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),T=(0,o.useCallback)(async e=>{if(!e){a([]);return}m(!0);try{let[t,n]=await Promise.all([Qy({project:e}),tb({project:e})]);a(t?.items??[]);let r={};(n?.items??[]).forEach(e=>{let t=e.modulename;r[t]=(r[t]??0)+1}),f(r)}catch(e){console.error(e),s.message.error(`Unable to load modules.`)}finally{m(!1)}},[]);(0,o.useEffect)(()=>{if(!r){e(`/select-project`,{replace:!0});return}Promise.resolve().then(()=>T(r.name))},[r,e,T]);let E=async(e,t)=>{try{await eb(e.id,+!!t),a(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),s.message.success(`Module ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),s.message.error(`Unable to update module status.`)}},D=async()=>{let e=_.trim();if(!e){s.message.warning(`Enter a module name.`);return}b(!0);try{await $y({project:r.name,modulename:e}),s.message.success(`Module added.`),g(!1),v(``),S(1),T(r.name)}catch(e){console.error(e),s.message.error(`Unable to add module (maybe it already exists).`)}finally{b(!1)}},O=t=>{e(`/test-cases/zinnext/submodules?module=${encodeURIComponent(t.modulename)}`)};return r?(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:dN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/addTestCase`),children:`Back to Form`})})]}),(0,l.jsxs)(`div`,{className:`zt-page`,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-bar`,children:(0,l.jsxs)(s.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(`span`,{children:`Project:`}),(0,l.jsx)(uN,{strong:!0,children:r.name})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Module`})})]})}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Modules`})]}),children:(0,l.jsx)(Em,{listName:`Modules`,loading:p,fields:[{label:`Module`,value:`modulename`},{label:`Submodules`,value:`submoduleCount`,width:140,render:(e,t)=>(0,l.jsxs)(s.Button,{type:`link`,className:`zt-count-link`,onClick:()=>O(t),children:[u[t.modulename]??0,` submodule(s)`]})},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,l.jsx)(s.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:i,current:x,pageSize:C,total:i.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,l.jsx)(s.Modal,{title:`Add Module`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,l.jsxs)(s.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,l.jsxs)(uN,{type:`secondary`,children:[`Project: `,(0,l.jsx)(`b`,{children:r.name})]}),(0,l.jsx)(s.Input,{placeholder:`Enter module name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]}):null}var{Text:pN}=s.Typography,mN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function hN(){let e=(0,d.useNavigate)(),[r]=(0,d.useSearchParams)(),i=(0,o.useMemo)(()=>t.l(),[]),a=r.get(`module`)??``,[u,f]=(0,o.useState)([]),[p,m]=(0,o.useState)(!1),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(``),[y,b]=(0,o.useState)(!1),[x,S]=(0,o.useState)(1),[C,w]=(0,o.useState)(10),T=(0,o.useCallback)(async(e,t)=>{if(!e||!t){f([]);return}m(!0);try{let n=await tb({project:e,module:t});f(n?.items??[])}catch(e){console.error(e),s.message.error(`Unable to load submodules.`)}finally{m(!1)}},[]);(0,o.useEffect)(()=>{if(!i){e(`/select-project`,{replace:!0});return}if(!a){e(`/manageModules`,{replace:!0});return}Promise.resolve().then(()=>T(i.name,a))},[i,a,e,T]);let E=async(e,t)=>{try{await rb(e.id,+!!t),f(n=>n.map(n=>n.id===e.id?{...n,active:+!!t}:n)),s.message.success(`Submodule ${t?`activated`:`deactivated`}.`)}catch(e){console.error(e),s.message.error(`Unable to update submodule status.`)}},D=async()=>{let e=_.trim();if(!e){s.message.warning(`Enter a submodule name.`);return}b(!0);try{await nb({project:i.name,modulename:a,submodulename:e}),s.message.success(`Submodule added.`),g(!1),v(``),S(1),T(i.name,a)}catch(e){console.error(e),s.message.error(`Unable to add submodule (maybe it already exists).`)}finally{b(!1)}};return!i||!a?null:(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:mN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/manageModules`),children:`Back to Modules`})})]}),(0,l.jsxs)(`div`,{className:`zt-page`,children:[(0,l.jsx)(s.Card,{className:`v1-card zt-bar`,children:(0,l.jsxs)(s.Row,{gutter:[16,16],align:`middle`,justify:`space-between`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsxs)(s.Space,{size:16,wrap:!0,className:`zt-section-title`,children:[(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(c.ProjectOutlined,{}),(0,l.jsx)(`span`,{children:`Project:`}),(0,l.jsx)(pN,{strong:!0,children:i.name})]}),(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Module:`}),(0,l.jsx)(pN,{strong:!0,children:a})]})]})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`primary`,icon:(0,l.jsx)(c.PlusOutlined,{}),onClick:()=>g(!0),children:`Add Submodule`})})]})}),(0,l.jsx)(s.Card,{className:`v1-card zt-fall`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.AppstoreOutlined,{}),(0,l.jsx)(`span`,{children:`Submodules`})]}),children:(0,l.jsx)(Em,{listName:`Submodules`,loading:p,fields:[{label:`Submodule`,value:`submodulename`},{label:`Active`,value:`active`,width:120,render:(e,t)=>(0,l.jsx)(s.Switch,{checked:e===1,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:e=>E(t,e)})}],dataSource:u,current:x,pageSize:C,total:u.length,onPageChange:S,onPageSizeChange:e=>{S(1),w(e)},rowSelection:!1,className:`zt-list-plain`})})]}),(0,l.jsx)(s.Modal,{title:`Add Submodule`,open:h,confirmLoading:y,okText:`Add`,onOk:D,onCancel:()=>{g(!1),v(``)},destroyOnHidden:!0,children:(0,l.jsxs)(s.Space,{direction:`vertical`,className:`zt-modal-stack`,children:[(0,l.jsxs)(pN,{type:`secondary`,children:[`Project: `,(0,l.jsx)(`b`,{children:i.name}),` \xA0|\xA0 Module: `,(0,l.jsx)(`b`,{children:a})]}),(0,l.jsx)(s.Input,{placeholder:`Enter submodule name`,maxLength:100,value:_,onChange:e=>v(e.target.value),onPressEnter:D})]})})]})}var{Text:gN}=s.Typography,_N=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function vN(){let e=(0,d.useNavigate)(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)(0),[f,p]=(0,o.useState)(!1),m=(0,o.useMemo)(()=>t.l(),[]),[h,g]=(0,o.useState)(``),[_,v]=(0,o.useState)(1),[y,b]=(0,o.useState)(20),[x,S]=(0,o.useState)(null),C=(0,o.useCallback)(async(e={})=>{p(!0);try{let t=await ib({product_parent_ID:e.project??m?.id??``,search:e.search??h??``,limit:e.pageSize??y,offset:((e.page??_)-1)*(e.pageSize??y)});i(t?.items??[]),u(t?.total??0)}catch(e){console.error(e),s.message.error(`Unable to load test flows.`)}finally{p(!1)}},[m?.id,h,_,y]),w=e=>{s.Modal.confirm({title:`Delete Test Case`,icon:(0,l.jsx)(c.ExclamationCircleOutlined,{}),content:`Are you sure you want to delete this test case?`,okText:`Delete`,okButtonProps:{danger:!0,loading:x===e.id},cancelText:`Cancel`,async onOk(){S(e.id);try{await lb(e.id),s.message.success(`Test case deleted successfully.`);let t=r.length===1&&_>1?_-1:_;v(t),await C({page:t})}catch(e){throw console.error(`Unable to delete test flow:`,e),s.message.error(`Unable to delete test case.`),e}finally{S(null)}}})};return(0,o.useEffect)(()=>{Promise.resolve().then(()=>{if(!m?.id){e(`/select-project`,{replace:!0});return}C({page:1})})},[]),(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:_N})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>e(`/addTestCase`),children:`Back to Form`})})]}),(0,l.jsx)(`div`,{className:`zt-page zt-page-wide`,children:(0,l.jsxs)(s.Card,{className:`v1-card`,title:(0,l.jsxs)(s.Space,{size:6,className:`zt-section-title`,children:[(0,l.jsx)(c.TableOutlined,{}),(0,l.jsx)(`span`,{children:`Test Flows`})]}),extra:(0,l.jsxs)(gN,{type:`secondary`,children:[a,` row(s)`]}),children:[(0,l.jsxs)(s.Space,{wrap:!0,className:`zt-toolbar`,children:[(0,l.jsx)(s.Input.Search,{allowClear:!0,className:`zt-search-filter`,placeholder:`Search module / key / description`,value:h,onChange:e=>g(e.target.value),onSearch:()=>{v(1),C({page:1})}}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>C(),children:`Refresh`})]}),(0,l.jsx)(Em,{listName:`Test Flows`,loading:f,fields:[{label:`Actions`,value:`rowActions`,width:112,fixed:`left`,sorter:!1,render:(t,n)=>(0,l.jsxs)(s.Space,{size:4,className:`zt-row-actions`,children:[(0,l.jsx)(s.Tooltip,{title:`Edit`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,icon:(0,l.jsx)(c.EditOutlined,{}),onClick:()=>e(`/addTestCase?edit=${n.id}`)})}),(0,l.jsx)(s.Tooltip,{title:`Delete`,children:(0,l.jsx)(s.Button,{danger:!0,type:`text`,size:`small`,icon:(0,l.jsx)(c.DeleteOutlined,{}),loading:x===n.id,onClick:()=>w(n)})})]})},{label:`ID`,value:`id`,width:70,fixed:`left`},{label:`Project`,value:`project`,width:130},{label:`Module`,value:`module`,width:130},{label:`Submodule`,value:`submodule`,width:140},{label:`Step`,value:`step_order`,width:70},{label:`Action`,value:`actions`,width:140},{label:`Key`,value:`key`,width:160,ellipsis:!0},{label:`Value`,value:`value`,width:200,ellipsis:!0},{label:`Expected`,value:`expected`,width:180,ellipsis:!0},{label:`Description`,value:`description`,width:180,ellipsis:!0},{label:`Scenario`,value:`scenario`,width:110,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`green`,children:`Positive`}):(0,l.jsx)(s.Tag,{color:`red`,children:`Negative`})},{label:`Active`,value:`active`,width:90,render:e=>e===1?(0,l.jsx)(s.Tag,{color:`blue`,children:`Active`}):(0,l.jsx)(s.Tag,{children:`Inactive`})}],dataSource:r,current:_,pageSize:y,total:a,onPageChange:e=>{v(e),C({page:e})},onPageSizeChange:e=>{v(1),b(e),C({page:1,pageSize:e})},rowSelection:!1,className:`zt-list-plain`})]})})]})}var yN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function bN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:yN}),(0,l.jsx)(Go,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:xN}=s.Typography,SN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],CN={tags:`regression`,active:1},wN={module:{dbName:`Modules`,formField:`module`,label:`Module`}},TN={key:!1,value:!1,expected:!1};function EN(e,t){return t?e[t]??TN:TN}function DN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function ON(e=[]){return e.map(e=>({value:e,label:e}))}function kN(e=``){return String(e??``).trim()}function AN(e=[]){let t=new Map;return e.forEach(e=>{let n=kN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function jN(e=[],t,n){let r=kN(t).toLowerCase(),i=kN(n).toLowerCase();return e.reduce((e,t)=>{let n=kN(t?.module).toLowerCase(),a=kN(t?.flow).toLowerCase();if(n!==r||a!==i)return e;let o=Number(t?.step_order)||0;return Math.max(e,o)},0)+1}function MN({icon:e,title:t}){return(0,l.jsxs)(s.Space,{size:10,align:`center`,children:[(0,l.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,l.jsx)(xN,{strong:!0,className:`v1-section-label`,children:t})]})}function NN(){let[e]=s.Form.useForm(),[t]=s.Form.useForm(),[r,i]=(0,o.useState)([]),[a,u]=(0,o.useState)([]),[f,p]=(0,o.useState)([]),[m,h]=(0,o.useState)(UM),[g,_]=(0,o.useState)({}),[v,y]=(0,o.useState)(!1),[b,x]=(0,o.useState)(!1),[S,C]=(0,o.useState)({open:!1,typeKey:`module`}),[w,T]=(0,o.useState)(!1),[E,D]=(0,o.useState)(!1),[O,k]=(0,o.useState)(!1),A=(0,d.useNavigate)(),j=wN[S.typeKey],M=(0,o.useMemo)(()=>ON(r),[r]),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`flow`,e),F=s.Form.useWatch(`keyword`,e),I=!!kN(N),L=!!kN(P),R=!I,z=!I||!L,B=(0,o.useMemo)(()=>EN(g,F),[g,F]),V=(e,t=[])=>{e===`module`&&i(t)},ee=async()=>{y(!0);try{let e=await Hy(wN.module.dbName);i(e?.items??[])}catch(e){console.error(`Unable to load testing options:`,e),s.message.error(`Unable to load testing options.`)}finally{y(!1)}},te=async()=>{try{let e=await Wy();Array.isArray(e?.options)&&e.options.length>0&&h(e.options),e?.rules&&typeof e.rules==`object`&&_(e.rules)}catch(e){console.error(`Unable to load action field rules:`,e),s.message.error(`Unable to load action validation rules.`)}},ne=(0,o.useCallback)(async t=>{let n=kN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await Xy({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(AN(t))}catch(e){console.error(`Unable to load flows:`,e),s.message.error(`Unable to load flows.`)}finally{x(!1)}}},[e]),re=(0,o.useCallback)(async(t,n,r)=>{let i=kN(t),a=kN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}D(!0);try{e.setFieldsValue({step_order:jN(r,i,a)})}catch(e){console.error(`Unable to load step order:`,e),s.message.error(`Unable to load step order.`)}finally{D(!1)}},[e]);(0,o.useEffect)(()=>{Promise.resolve().then(async()=>{await Promise.all([ee(),te()])})},[]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>ne(N))},[ne,N]),(0,o.useEffect)(()=>{Promise.resolve().then(()=>re(N,P,a))},[a,re,P,N]);let ie=async t=>{let n={module:kN(t.module),flow:kN(t.flow),step_order:Number(t.step_order),description:kN(t.description),keyword:kN(t.keyword),target:kN(t.target),value:kN(t.value),expected:kN(t.expected),tags:t.tags?kN(t.tags):CN.tags,active:Number(t.active)};k(!0);try{await Yy(n),s.message.success(`LMS case details saved successfully.`),e.resetFields(),u([]),p([])}catch(e){console.error(`Unable to save LMS case:`,e),s.message.error(`Unable to save LMS case.`)}finally{k(!1)}},H=(t,n)=>{e.setFieldsValue({[t]:kN(n)})},ae=t=>{e.setFieldsValue({module:kN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:CN.tags,value:void 0,expected:void 0}),DN(e,[`keyword`,`target`,`value`,`expected`])},oe=t=>{e.setFieldsValue({flow:kN(t),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),DN(e,[`keyword`,`target`,`value`,`expected`])},se=t=>{let n=EN(g,t);e.setFieldsValue({keyword:kN(t),target:n.key?e.getFieldValue(`target`):void 0,value:n.value?e.getFieldValue(`value`):void 0,expected:n.expected?e.getFieldValue(`expected`):void 0}),DN(e,[`target`,`value`,`expected`])},ce=e=>{let n=wN[e];C({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},U=()=>{C(e=>({...e,open:!1})),t.resetFields()},le=async()=>{try{let n=kN((await t.validateFields()).name),r=await Uy({name:n,type:j.dbName});V(S.typeKey,r?.items??[]),e.setFieldsValue({[j.formField]:n}),s.message.success(`${j.label} added successfully.`),U()}catch(e){if(e?.errorFields)return;console.error(`Unable to save testing option:`,e),s.message.error(`Unable to add ${j.label.toLowerCase()}.`)}finally{T(!1)}};return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsxs)(s.Row,{align:`middle`,justify:`space-between`,className:`breadcrumb-action-wrapper`,children:[(0,l.jsx)(s.Col,{children:(0,l.jsx)(n.t,{items:SN})}),(0,l.jsx)(s.Col,{children:(0,l.jsx)(s.Button,{type:`link`,onClick:()=>A(`/lms-home`),children:`View Table`})})]}),(0,l.jsx)(`div`,{className:`v1-page`,children:(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(`div`,{className:`v1-page-header`,children:(0,l.jsxs)(s.Space,{align:`center`,size:10,children:[(0,l.jsx)(c.ProfileOutlined,{className:`v1-outer-icon`}),(0,l.jsx)(`div`,{children:(0,l.jsx)(xN,{strong:!0,style:{fontSize:16},children:`Add LMS Case`})})]})}),(0,l.jsx)(Z,{children:(0,l.jsxs)(s.Form,{form:e,className:`v1-form`,layout:`vertical`,colon:!1,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),initialValues:CN,onFinish:ie,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(MN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,l.jsx)(xN,{type:`secondary`,className:`v1-card-subtitle`,children:`Module, flow, step order and execution data`}),children:(0,l.jsxs)(s.Row,{gutter:[24,0],children:[(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsxs)(s.Space.Compact,{style:{width:`100%`},children:[(0,l.jsx)(s.Form.Item,{label:`Module`,name:`module`,style:{flex:1},children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,loading:v,optionFilterProp:`label`,placeholder:`Select module`,options:M,onChange:ae})}),(0,l.jsx)(s.Button,{"aria-label":`Add module`,icon:(0,l.jsx)(c.PlusOutlined,{}),style:{marginTop:30},onClick:()=>ce(`module`)})]})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Flow`,name:`flow`,children:(0,l.jsx)(s.AutoComplete,{maxLength:100,allowClear:!0,disabled:R,options:f,placeholder:b?`Loading flows`:`Enter flow`,onChange:oe,filterOption:(e,t)=>t?.value?.toLowerCase().includes(e.toLowerCase())})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Step Order`,name:`step_order`,validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,disabled:!0,placeholder:E?`Loading step order`:`Step order`})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Action`,name:`keyword`,children:(0,l.jsx)(s.Select,{allowClear:!0,showSearch:!0,disabled:z,optionFilterProp:`label`,placeholder:`Select action`,options:m,onChange:se})})}),(0,l.jsx)(s.Col,{xs:24,children:(0,l.jsx)(s.Form.Item,{label:`Description`,name:`description`,children:(0,l.jsx)(s.Input.TextArea,{rows:3,maxLength:255,disabled:z,placeholder:`Enter description`,showCount:!0,onBlur:e=>H(`description`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Key`,name:`target`,rules:[{required:B.key,message:`Key is required for this action`}],children:(0,l.jsx)(s.Input,{maxLength:255,disabled:z||!!F&&!B.key,placeholder:z?`Select module and flow first`:F?B.key?`Required — Enter selector / locator`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`target`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Tags`,name:`tags`,children:(0,l.jsx)(s.Input,{maxLength:200,disabled:z,placeholder:`Enter tags`,prefix:(0,l.jsx)(c.TagsOutlined,{className:`v1-input-icon`}),onBlur:e=>H(`tags`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Value`,name:`value`,rules:[{required:B.value,message:`Value is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:z||!!F&&!B.value,placeholder:z?`Select module and flow first`:F?B.value?`Required — Enter value`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`value`,e.target.value)})})}),(0,l.jsx)(s.Col,{xs:24,md:12,children:(0,l.jsx)(s.Form.Item,{label:`Expected`,name:`expected`,rules:[{required:B.expected,message:`Expected result is required for this action`}],children:(0,l.jsx)(s.Input.TextArea,{rows:4,disabled:z||!!F&&!B.expected,placeholder:z?`Select module and flow first`:F?B.expected?`Required — Enter expected result`:`Not needed for this action`:`Select an action first`,onBlur:e=>H(`expected`,e.target.value)})})})]})}),(0,l.jsx)(`div`,{className:`v1-form-actions`,children:(0,l.jsx)(s.Form.Item,{children:(0,l.jsxs)(s.Space,{children:[(0,l.jsx)(s.Button,{type:`primary`,htmlType:`submit`,loading:O,disabled:z,children:`Submit`}),(0,l.jsx)(s.Button,{onClick:()=>{e.resetFields(),u([]),p([])},children:`Reset`})]})})})]})}),(0,l.jsx)(s.Modal,{title:`Add ${j.label}`,open:S.open,confirmLoading:w,okText:`Add`,onCancel:U,onOk:()=>{T(!0),le()},destroyOnHidden:!0,children:(0,l.jsxs)(s.Form,{form:t,layout:`vertical`,colon:!1,className:`v1-form`,requiredMark:(e,{required:t})=>(0,l.jsxs)(l.Fragment,{children:[e,t&&(0,l.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),children:[(0,l.jsx)(s.Form.Item,{label:`Name`,name:`name`,children:(0,l.jsx)(s.Input,{maxLength:100,placeholder:`Enter ${j.label.toLowerCase()} name`,onBlur:e=>{t.setFieldsValue({name:kN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var PN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function FN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:PN}),(0,l.jsx)(Go,{moduleName:`lms-flows`,rowKey:`id`})]})}var IN=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function LN(e=IN){return function(t){if(!t||typeof t!=`object`)return``;for(let n of e){let e=t[n];if(e!=null&&e!==``)return String(e)}return``}}function RN(e,t=IN){if(!e||typeof e!=`object`)return[];let n=[];for(let r of t){let t=e[r];t!=null&&t!==``&&n.push(String(t))}return n}var zN=LN();function BN(e){return typeof e==`function`?e:typeof e==`string`?LN([e]):Array.isArray(e)?LN(e):zN}function VN(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function HN(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var UN=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function WN(e){let t=e?.data??e,n={};for(let r of UN){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var GN=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function KN(e,t,n){let r=(Array.isArray(n)?n:[n]).map(GN).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(GN(e?.value))||r.includes(GN(e?.label))):-1;if(i===-1)return[...e,...t];let a=Number(e[i]?.order),o=Number.isFinite(a)?t.map((e,n)=>e.order==null||e.order===``?{...e,order:a+(n+1)/(t.length+1)}:e):t;return[...e.slice(0,i+1),...o,...e.slice(i+1)]}var qN=(e,t)=>di(e,t).rows,JN=(e,t)=>{let{rows:n,total:r}=di(e,t);return{rows:n,total:r}};function YN(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function XN(e){return!e||typeof e!=`object`||typeof(e.fetchByKeys??e.fetch??e.function)!=`function`?null:{...e,fetchByKeys:typeof e.fetchByKeys==`function`?e.fetchByKeys:null,fetch:typeof e.fetch==`function`?e.fetch:null,function:typeof e.function==`function`?e.function:null,extractRows:typeof e.extractRows==`function`?e.extractRows:qN,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:VN,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function ZN({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[XN({key:i,fetchByKeys:e?(t,n,r)=>e(t,n,r):null,function:t?({moduleName:e,options:n})=>t(e,o,0,n):null,extractRows:n,fetchById:r,mergeRow:a})].filter(Boolean)}function QN(e){if(typeof e==`function`)return t=>{let n=e(t);return n==null||n===``?[]:[String(n)]};let t=typeof e==`string`?[e]:Array.isArray(e)&&e.length?e:IN;return e=>RN(e,t)}function $N(e,t){let n=new Map;return e.forEach(e=>{for(let r of t(e))n.has(r)||n.set(r,e)}),n}function eP({moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}){return{moduleName:e,limit:t,offset:n,options:r,keys:i,primaryResponse:a,primaryRows:o,pageRows:s,total:c,source:l}}async function tP(e,t){if(typeof e.args==`function`){let n=e.args(t);return(e.fetch??e.function??e.fetchByKeys)(...Array.isArray(n)?n:[n])}if(Array.isArray(e.args))return(e.fetch??e.function??e.fetchByKeys)(...e.args);if(e.fetchByKeys&&Array.isArray(t.keys))return e.fetchByKeys(t.moduleName,t.keys,t.options,t);let n=e.fetch??e.function;return typeof n==`function`?n(t):null}function nP({fetchPrimaryPage:e,extractPrimaryPage:t=JN,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=qN,fetchSecondary:o,extractSecondaryRows:s=qN,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=VN,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map(XN).filter(Boolean):ZN({fetchSecondaryByKeys:n,fetchSecondary:o,extractSecondaryRows:s,fetchSecondaryById:c,secondaryKey:u,mergeRow:d,secondaryFetchLimit:f}),g=0;async function _(e,t,n,r){if(!e.fetchById||!r)return null;try{let i=await e.fetchById(n,r);return i&&t(i).includes(String(r))?i:null}catch(e){return console.error(`[mergedListApi] per-id join lookup failed for "${r}"`,e),null}}async function v(e,t,n,r,i){if(!n)return e;let a=t.extractRows(n,r)??[],o=BN(t.primaryKey??l),s=QN(t.key),c=$N(a,s);return Promise.all(e.map(async e=>{let n=o(e),a=c.get(n)??(i()?null:await _(t,s,r,n));return t.mergeRow(e,a,n)}))}async function y(e,t,n,r){let i=e;for(let e of t)i=await v(i,e.source,e.response,n,r);return i}function b(e,t,n){let r={};for(let e of n){if(!e)continue;let t=WN(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=KN(r.fields??[],p,m)),HN(e,t,r)}async function x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:i,primaryRows:a,pageRows:o,total:s}){return Promise.all(h.map(async c=>{try{let u=BN(c.primaryKey??l),d=[...new Set(o.map(u).filter(Boolean))];return c.fetchByKeys&&d.length===0?{source:c,response:null}:{source:c,response:await tP(c,eP({moduleName:e,limit:t,offset:n,options:r,keys:d,primaryResponse:i,primaryRows:a,pageRows:o,total:s,source:c}))}}catch(e){return console.error(`[mergedListApi] join fetch failed — rendering page without that join`,e),{source:c,response:null}}}))}async function S(n,r,i,a,o){let s=await e(n,r,i,a),c=t(s,n)??{},l=Array.isArray(c.rows)?c.rows:[],u=Number.isFinite(Number(c.total))?Number(c.total):l.length,d=await x({moduleName:n,limit:r,offset:i,options:a,primaryResponse:s,primaryRows:l,pageRows:l,total:u});return b(await y(l,d,n,o),u,[s,...d.map(e=>e.response)])}async function C(e,t,n,r,o){let s=await i(e,t,n,r),c=a(s,e)??[],l=c.length,u=c.slice(n,n+t),d=await x({moduleName:e,limit:t,offset:n,options:r,primaryResponse:s,primaryRows:c,pageRows:u,total:l});return b(await y(u,d,e,o),l,[s,...d.map(e=>e.response)])}return async function(t,n=10,r=0,i={}){let a=++g,o=()=>a!==g;return e?S(t,n,r,i,o):C(t,n,r,i,o)}}function rP(e,t,n={}){return nP({fetchPrimary:()=>Lk(e,t),extractPrimaryRows:Fk,fetchSecondary:In,fetchSecondaryById:Rk,secondaryFetchLimit:n.moduleFetchLimit??200})}function iP(e){let t=String(e??``).trim().split(/[^a-zA-Z0-9]+/).filter(Boolean);return t.length?`${t.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}Count`:``}function aP(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=iP(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var oP=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function sP({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=VN(n,r,i),o=oP(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function cP(e={}){let t=sP();return nP({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:In,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return Ik(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(aP),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function lP(e,t=10,n=0,r={},i={}){return di(await cP(i)(e,t,n,r),e)}async function uP(e,t,n,r=10,i=0,a={}){return di(await rP(e,t)(n,r,i,a),n)}typeof window<`u`&&(window.__CORE_THEME_BUILD__=`2026-08-30T05:38:46.740Z`);var dP=Dj,fP=fb(TM),pP=fb(DM),mP=fb(HM),hP=fb(eN),gP=fb(lN),_P=fb(fN),vP=fb(hN),yP=fb(vN),bP=fb(bN),xP=fb(NN),SP=fb(FN);exports.ADMIN_API_URL=t.v,exports.ADMIN_APP_ID=t.y,exports.APP_ID=t.b,exports.AUTH_URL=t.x,exports.ActivityNotesCard=Bc,exports.ActivityTab=Fc,exports.AddBatchCandidatePopup=sj,exports.AddFormV1=vc,exports.AdminDashboard=Dj,exports.AdminDashboardContent=KE,exports.AdminPage=dP,exports.AppAlert=yc,exports.AppButton=n.ut,exports.AppShell=Fy,exports.ApprovalActionBar=Zg,exports.AssigneeAvatars=Vc,exports.AuthGuard=Oy,exports.BILLING_STATUS_FLOW=Xd,exports.BOOLEAN_API_KEYS=Lh,exports.BOOLEAN_PARSEABLE_API_KEYS=Vm,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Hc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Uc,exports.Breadcrumb=n.t,exports.BulkUploadPage=mP,exports.BulkUploadPanel=Zc,exports.CANDIDATES_URL=t.S,exports.CONTRACT_C2C=x_,exports.CONTRACT_W2=b_,exports.CORE_URL=t.C,exports.CURRENCY_SYMBOLS=au,exports.CalendarCard=A,exports.CoreThemeAdminApp=XE,exports.CoreThemeAdminRoutes=YE,exports.CustomPagination=ze,exports.DEFAULT_HOURS_POLICY=yg,exports.DayLogModal=Ug,exports.DescriptionBlock=ul,exports.DetailHeaderCard=$f,exports.DetailViewPage=op,exports.DetailViewV1=Yu,exports.DocumentViewer=n.wn,exports.DynamicCards=Lt,exports.DynamicPopup=YO,exports.DynamicPopupRoute=fj,exports.DynamicTabs=P,exports.EditFormV1=im,exports.FIELD_TYPE_REGISTRY=Sh,exports.FINANCE_APPROVAL_CONFIG=f_,exports.FINANCE_TYPE_CFO=a_,exports.FINANCE_TYPE_ONBOARDING_MANAGER=i_,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=c_,exports.FINANCE_TYPE_ONLY_FINANCE=o_,exports.FINANCE_TYPE_SUBMISSION_MANAGER=r_,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=s_,exports.FileListCard=Ev,exports.FinanceApprovalPanel=av,exports.FinanceAvatar=Mf,exports.FinanceBadge=If,exports.FinanceDayCell=$g,exports.FinanceDivider=wf,exports.FinanceEmployeeCell=Nf,exports.FinanceEmptyState=xf,exports.FinanceEquation=Tf,exports.FinanceHistoryTimeline=kf,exports.FinanceHoursGrid=bf,exports.FinanceKpiRow=yf,exports.FinanceLine=Cf,exports.FinanceListToolbar=vg,exports.FinanceMarginBadge=Lf,exports.FinanceMoneyCell=Ff,exports.FinanceRecordsTable=Bf,exports.FinanceRowChevron=Rf,exports.FinanceSection=Sf,exports.FinanceStatusPill=vf,exports.FinanceTextCell=Pf,exports.FinanceTimesheetAnalysis=t_,exports.FinanceWorkflowSteps=Ef,exports.GATEWAY_URL=t.w,exports.GLOBAL_DEFAULT_FIELDS=uE,exports.HOURS_MESSAGES=bg,exports.Header=ty,exports.HierarchyUserFilter=Ht,exports.JOBS_URL=t.T,exports.LegacyAdminPage=fP,exports.ListView=Go,exports.LmsHomePage=SP,exports.LmsTestForm=xP,exports.Login=Iy,exports.MailPopup=TD,exports.ManageModules=_P,exports.ManageSubmodules=vP,exports.ModuleRowActions=pm,exports.NotesPanel=Xg,exports.NotesTab=zc,exports.PAYROLL_STATUS_FLOW=Zd,exports.PLATFORM_SCOPES=sE,exports.POPUP_CONFIGS=QA,exports.PYOPS_URL=t.E,exports.ParamCardView=bm,exports.ParamListView=Em,exports.PeriodBadgeTag=Mg,exports.PlatformSection=bE,exports.PreviewPopup=ID,exports.ProjectSelect=db,exports.ProofUploadPreview=Yg,exports.QuickLogBar=Kg,exports.QuickLogSelectionBar=Wg,exports.RegionBanner=Ej,exports.RejectionReasonModal=Gg,exports.SUBMISSIONS_URL=t.D,exports.SearchBuilderV1=lg,exports.Sidebar=wy,exports.StatusBadge=dg,exports.StatusBadgeTag=jg,exports.StickyNotesFullPage=pP,exports.StylishDynamicTabs=pg,exports.TemplateEditor=hg,exports.TestForm=hP,exports.TestingHomePage=bP,exports.TimelineGroups=Dc,exports.TimesheetDayCell=Bg,exports.TipTapEditor=n.Tn,exports.UserForm=Tj,exports.VendorShareDrawer=gj,exports.ViewSummaryWidget=Li,exports.WizardPopup=HD,exports.ZINNEXT_URL=t.O,exports.ZinnextTableView=yP,exports.ZinnextTestForm=gP,exports.appNow=n.kn,exports.applyIntegrationStatus=n.Gn,exports.approveSubmission=ye,exports.buildAcceptAttr=Jc,exports.buildBooleanRequest=Hh,exports.buildCsv=ff,exports.buildDailyRows=of,exports.buildDayGradient=Rg,exports.buildRateHistoryEntries=K_,exports.buildWeeklyRollup=lf,exports.clearSelectedProject=t.i,exports.colors=n.On,exports.computeFinance=R_,exports.computeHoursPolicy=Eg,exports.computeMarginBand=uf,exports.conditionMatches=n.i,exports.configureCoreTheme=t.k,exports.configuredFieldLabel=n.a,exports.createAllWorkflowsListFetcher=cP,exports.createMergedListFetcher=nP,exports.createModuleListFetchAdapter=YN,exports.createWorkflowStageListFetcher=rP,exports.currencySymbol=ou,exports.deactivateRegion=XT,exports.defaultMergeRow=VN,exports.deleteIntegrationConfig=n.nr,exports.deriveDayStats=af,exports.describeCapacity=Og,exports.downloadCsv=gf,exports.evaluateShowIfWith=n.o,exports.findEmployerRow=M_,exports.flattenGroups=A_,exports.formatAmount=fu,exports.formatApp=n.An,exports.formatAppDateTime=n.jn,exports.formatFileSize=qc,exports.formatFinanceMoney=q_,exports.formatHours=Vd,exports.formatMoney=pu,exports.formatPercent=Ud,exports.formatRate=mu,exports.getActivity=n.dn,exports.getAllWorkflowsModuleList=lP,exports.getAppTimeZone=n.Mn,exports.getApprovalDate=qd,exports.getBgcIntegrationConfig=n.br,exports.getBgcIntegrationSummary=n.xr,exports.getBillingActionStates=Qd,exports.getBooleanEligibleTypes=Oh,exports.getCurrentRoleName=t.c,exports.getDetailDisplayDefaults=n.Bn,exports.getFieldLabel=mf,exports.getFieldType=wh,exports.getFileExtension=Kc,exports.getFinanceApprovalConfig=__,exports.getFormGroupsRaw=hv,exports.getGlobalAiServices=dE,exports.getGlobalDefaults=cE,exports.getIntegrationConfig=n.Dr,exports.getIntegrationConfigs=n.Or,exports.getIntegrationSummary=n.kr,exports.getModuleConfig=Fe,exports.getModuleDataDetail=n.pn,exports.getPayrollActionStates=$d,exports.getPeriodBadgeConfig=Le,exports.getRegionDetailDefaults=rE,exports.getSelectedProject=t.l,exports.getStoredToken=t.u,exports.getStoredUser=t.d,exports.getUserRoles=t.f,exports.getVMSApprove=be,exports.getValueStyle=hf,exports.getWorkflowStageModuleList=uP,exports.getWorkflowSteps=ef,exports.grantPlatformAccess=QT,exports.hasPlatformAccess=eE,exports.humanizeEvent=Kd,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return gs}}),exports.indexFieldConfig=pf,exports.initialsOf=Wd,exports.insertTokenAtCursor=Gm,exports.isBooleanEligible=Th,exports.isBooleanParsable=Um,exports.isTester=t.p,exports.listPlatformAccess=ZT,exports.listPlatformAudit=nE,exports.listPlatformUsers=tE,exports.listRegionRoles=oE,exports.listRegionUsers=aE,exports.listRegions=JT,exports.loadDetailDefaults=n.Vn,exports.logout=t.h,exports.marginIncludesReferral=y_,exports.matchLocationTax=L_,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return mp}}),exports.normalizeContract=P_,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Qc}}),exports.rateUnitLabel=cu,exports.rateUnitShort=uu,exports.reconcileHours=Dg,exports.regionPath=qT,exports.registerFieldType=Ch,exports.rejectSubmission=Se,exports.resolveActivityMeta=Mc,exports.resolveAndCompute=z_,exports.resolveDayKind=wg,exports.resolveFinanceInputs=I_,exports.resolveMergeKey=zN,exports.resolveMergedListKey=zN,exports.resolveRejectionReason=v_,exports.resolveSubmissionFinance=gv,exports.revokePlatformAccess=$T,exports.saveBgcIntegrationConfig=n.Qr,exports.saveGlobalAiServices=fE,exports.saveGlobalDefaults=lE,exports.saveIntegrationConfig=n.ti,exports.saveRegion=YT,exports.saveRegionDetailDefaults=iE,exports.setSelectedProject=t._,exports.showIfConditions=n.c,exports.stageCountKey=iP,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ly}}),exports.testIntegrationConnection=n.si,exports.toApp=n.Pn,exports.toNumber=du,exports.tzLabel=n.Fn,exports.tzShortLabel=n.In,exports.useDropdownFields=Qn,exports.useDropdownValues=Ri,exports.useEditForm=Dv,exports.useFieldConfig=$n,exports.useFilterFields=er,exports.useMenuPermission=lr,exports.useModuleActions=om,exports.useRecordRefresh=rp,exports.validateBooleanQuery=Wm,exports.validateBulkFile=Yc,exports.withAdminAppId=t.A,exports.withAppId=t.j,exports.withAuthGuard=fb;
|
|
8
8
|
//# sourceMappingURL=index.cjs.map
|