@realtek/core-theme 0.0.343 → 0.0.344

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.
@@ -3,7 +3,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
3
3
  `)}function hf(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 gf(e,t,n){return(e instanceof Map?e:hf(e)).get(t)?.label||n}function _f(e,t,n){let r=(e instanceof Map?e:hf(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 vf(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 yf={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 bf({status:e=`Ready`,size:t,styleOverride:n}){let r=yf[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 xf({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 Sf({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 Cf({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 wf({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)(Cf,{compact:!0,...r}):n})]})}function Tf({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 Ef(){return(0,l.jsx)(`div`,{className:`fin-divider`})}function Df({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 Of({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 kf={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 Af(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 jf({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=Jd(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:kf[i.icon]??kf.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:Af(e.at)}):null]})]})]},`${e?.event}-${e?.at}-${t}`)})}):(0,l.jsx)(Cf,{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 Mf=[`blue`,`indigo`,`purple`,`green`];function Nf(e){let t=String(e??``),n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)|0;return Mf[Math.abs(n)%Mf.length]}function Pf({name:e,size:t=`md`}){return(0,l.jsx)(`span`,{className:`fin-avatar fin-avatar--${Nf(e)} fin-avatar--${t}`,children:Kd(e)})}function Ff({name:e,secondary:t,link:n=!1}){return(0,l.jsxs)(`div`,{className:`fin-cell-employee`,children:[(0,l.jsx)(Pf,{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 If({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 Lf({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`?Hd(e):e??`—`}),t?(0,l.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}function Rf({children:e,tone:t=`neutral`,title:n}){return(0,l.jsx)(`span`,{className:`fin-badge fin-badge--${t}`,title:n,children:e})}function zf({margin:e,marginPercent:t}){let n=ff(t);return(0,l.jsxs)(`div`,{className:`fin-cell-margin`,children:[(0,l.jsxs)(Rf,{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:Hd(e)})]})}function Bf(){return(0,l.jsx)(c.RightOutlined,{className:`fin-table__chevron`})}function Vf({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 Hf({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)(Vf,{}):!r&&!t.length?(0,l.jsx)(`div`,{className:`fin-table-card`,children:(0,l.jsx)(Cf,{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 Uf={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 Wf({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 Gf(e){return Array.isArray(e)?e.map(Gf):e&&typeof e==`object`&&`id`in e&&`value`in e?e.id??e.value:e}function Kf(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]=Gf(e.value));return n}function qf(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function Jf(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(qf(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(qf(t?.[n])))}function Yf(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function Xf(e){return String(e??``).trim().toLowerCase()}function Zf(e,t,n,r){return Er(e.key,t,n,r)}function Qf(e,t,n,r){return Dr(e.key,t,n,r)}function $f(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 ep(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 tp({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([Mn({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=Rd(a);(0,o.useEffect)(()=>{let e=Ld(a);if(!e.length)return;let t=!1;return Promise.all(e.map(async e=>{let t=await Mn({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)(()=>Bd(N.signature===F?N.groups:{}),[N,F]),L=(0,o.useMemo)(()=>Ad(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:ae,canEdit:oe,canDelete:se}=rr(e),H=(0,o.useMemo)(()=>Kf(b,r),[b,r]),ce=ml(ne,{id:r,moduleName:e,record:H}),le=kd(M)?.resolveScope,[ue,de]=(0,o.useState)(void 0);(0,o.useEffect)(()=>{if(typeof le!=`function`||!r)return;let t=!1,n=Number(localStorage.getItem(`userId`))||0;return Promise.resolve().then(()=>le({id:r,moduleName:e,record:H,currentUserId:n})).then(e=>{t||de(e??null)}).catch(()=>{t||de(null)}),()=>{t=!0}},[le,r,e,b]);let fe=typeof le!=`function`||ue!==void 0,pe=(0,o.useMemo)(()=>fe?S.filter(e=>e.showInDetail??e.showInList).map($f).filter(e=>!Zf(e,H,w,ue??void 0)):[],[w,S,H,ue,fe]);function me(e){let t=pr(e);if(t===`add`&&!ae||t===`edit`&&!oe||t===`delete`&&!se||!n.I(e.permission,M))return!1;if(e.permissionKey){let t=Yf(H,`actionPermission.${e.permissionKey}`);if(t===!1||t===0||t===`0`)return!1}return!0}let[he,ge]=(0,o.useState)({sourceDefaultTab:g,selectedTab:g}),_e=he.sourceDefaultTab===g?he.selectedTab:g,ve=ce.some(e=>e.key===_e)?_e:ce[0]?.key,ye=new Set(ce.map(e=>Xf(e.key))),be=e=>{let t=e.allowedTabs??[];return!t.length||t.some(e=>Xf(e)===Xf(ve))||ue&&t.some(e=>Xf(e)===Xf(ue))?!0:!t.some(e=>ye.has(Xf(e)))&&!ue},xe=pe.filter(e=>e.detailPlacement===`primary`&&me(e)&&be(e)),Se=pe.filter(e=>e.detailPlacement!==`primary`&&me(e)&&be(e));if(!L)return null;let Ce=i=>{let a=[...xe,...Se].find(e=>e.key===i);if(a?.actionType===`document`&&a.documentField){let t=ep(b,a.documentField);if(t.length){k(t),D(!0);return}let i=a.documentModule||e,o=a.documentIdField?Yf(H,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=Yf(H,a.copyField||`id`);navigator.clipboard.writeText(qf(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=Jf(a.apiPath,H),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:H})}).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):Jf(a.route,Kf(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:[H],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})},we=t=>{ge({sourceDefaultTab:g,selectedTab:t}),p?.(t,{moduleName:e,id:r})},U=Se.map(e=>{let t=Or(e,H,ue??void 0),n=!t&&Qf(e,H,w,ue??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:()=>Ce(e.key)}}),W=kd(M)?.header;if(W?.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(W.statusField),o=(W.chips??[]).map(e=>({key:e.field,icon:e.icon?Uf[e.icon]:void 0,label:e.label,value:i(e.field)||`—`,badge:e.badgeField&&i(e.badgeField)||void 0,tooltip:e.tooltip})),c=h?[]:xe.map(e=>{let t=Or(e,H,ue??void 0),n=!t&&Qf(e,H,w,ue??void 0);return{key:e.key,label:t?t.label:e.label,icon:e.icon?Uf[e.icon]:void 0,enabled:!t&&!n,variant:e.tone,disabledReason:n||void 0,onClick:t||n?void 0:()=>Ce(e.key)}}),u=a?nf(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)(Pf,{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)(bf,{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)(Wf,{chip:e},e.key??e.label))}):null,u.length?(0,l.jsx)(Of,{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=Id(e,e=>Yf(H,e)??H?.[e]);return(0,l.jsxs)(`span`,{className:`znx-dh-meta-item`,children:[n.icon&&Uf[n.icon]&&(0,l.jsx)(`span`,{className:`znx-dh-meta-icon`,children:Uf[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:[xe.map(e=>{let t=Or(e,H,ue??void 0),n=!t&&Qf(e,H,w,ue??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?Uf[e.icon]:void 0,onClick:t||n?void 0:()=>Ce(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}),Se.length>0&&(0,l.jsx)(s.Dropdown,{trigger:[`click`],placement:`bottomRight`,menu:{items:U},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${ve===e.key?` is-active`:``}`,onClick:()=>we(e.key),children:e.label},e.key))})]}),(0,l.jsx)(n.wn,{documents:O,open:E,onClose:()=>D(!1)})]})}var np={};function rp(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.tabContentRegistry)??{};if(!Object.keys(e).length)return np;let t={...np};return Object.entries(e).forEach(([e,n])=>{t[e]={...t[e]??{},...n}}),t}function ip(e,t){return!t||t===`details`?null:rp()[e]?.[t]??null}function ap(){let e=(0,d.useLocation)();return e.state?.refreshTimestamp??e.state?.__refreshedAt??0}function op({component:e,id:t,moduleName:n,onDescriptionSaved:r}){return e?(0,l.jsx)(e,{id:t,moduleName:n,onDescriptionSaved:r}):null}var{Text:sp}=s.Typography;function cp({moduleName:e,id:t,backPath:n=``,showFooter:r=!0,users:i=[],showActivity:a=!0,showNotes:c=!0,onHeaderAction:u,onHeaderTabChange:f,onHeaderData:p}){let m=(0,d.useNavigate)(),h=(0,d.useParams)(),[g,_]=(0,d.useSearchParams)(),v=(0,d.useLocation)(),y=t||h.id||g.get(`jobId`)||g.get(`id`)||v.state?.record?._id||v.state?.record?.id,b=g.get(`tab`)||`details`,[x,S]=(0,o.useState)(0),C=ap(),w=(e,t)=>{let n=new URLSearchParams(g);n.set(`tab`,e),_(n,{replace:!0}),f?.(e,t)},T=()=>S(e=>e+1),E=(e,t)=>{u?.(e,t)},D=(0,o.useMemo)(()=>kd(e)?.tabs??[],[e]),O=ml(D,{id:y,moduleName:e}),k=b===`details`||!D.some(e=>e.key===b&&typeof e.visibleWhen==`function`)||O.some(e=>e.key===b),A=(0,o.useMemo)(()=>k?ip(e,b):null,[e,b,k]);return(0,l.jsxs)(`div`,{className:`v1-page v1-detail-page`,children:[(0,l.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,l.jsx)(tp,{moduleName:e,id:y,defaultTab:b,onAction:E,onTabChange:w,onHeaderData:p,refreshKey:C}),A?(0,l.jsx)(op,{component:A,id:y,moduleName:e,onDescriptionSaved:T}):(0,l.jsxs)(s.Row,{gutter:[16,16],align:`stretch`,children:[(0,l.jsx)(s.Col,{xs:24,lg:16,children:(0,l.jsx)(Zu,{moduleName:e,id:y,refreshKey:x+C,onDescriptionSaved:T})}),(0,l.jsx)(s.Col,{xs:24,lg:8,children:(0,l.jsx)(Hc,{moduleName:e,id:y,users:i,showActivity:a,showNotes:c,refreshKey:C})})]})]}),n&&r&&(0,l.jsxs)(`div`,{className:`v1-footer`,children:[(0,l.jsx)(sp,{type:`secondary`,children:y?`Record ID: ${y}`:`Detail view`}),(0,l.jsx)(s.Button,{onClick:()=>m(n),children:`Back`})]})]})}cp.propTypes={moduleName:f.default.string,id:f.default.string,backPath:f.default.string,showFooter:f.default.bool,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 lp={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 up(e={}){return lp[e.field]??[]}var dp=new Set([``,`false`,`0`,`no`,`null`,`undefined`]);function fp(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`string`?!dp.has(e.trim().toLowerCase()):!Array.isArray(e)||e.length>0}function pp(e){return Array.isArray(e)?e.map(e=>String(e??``).trim()).filter(Boolean):String(e??``).split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)}function mp({lockKeys:e=[],resultValue:t,hasResultField:n=!0,readSibling:r}){return!e.length||typeof r!=`function`||n&&!fp(t)?!1:e.every(e=>fp(r(e)))}function hp(e,t=[]){let n=e;for(let e of t){if(n==null)return;n=n[e]}return n}var gp=e.t({default:()=>om}),{Text:_p}=s.Typography,{TextArea:vp}=s.Input;function yp(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function bp({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?yp(r,t.verifyResultField):[`__noop_verify__`],{form:e,preserve:!0}),p=s.Form.useWatch(r,e),m=(0,o.useMemo)(()=>pp(t.verifyLockedWhenFields),[t.verifyLockedWhenFields]),h=s.Form.useWatch(e=>mp({lockKeys:m,resultValue:hp(e,yp(r,t.verifyResultField)),hasResultField:!!t.verifyResultField,readSibling:t=>hp(e,yp(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(yp(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(yp(r,t.verifyTimestampField),void 0),d.current=null)},[r,p,t.verifyResultField,t.verifyTimestampField,e,f]),t.verifyAction===`email`?h?(0,l.jsx)(_p,{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)(_p,{type:`warning`,strong:!0,className:`v1-verify-field-wrap`,children:t.verifyUnconfirmedLabel||`Accepted`})}):(0,l.jsx)(_p,{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.Si(i);d.current=a.valid?i:null,u(a.valid?a:null),t.verifyResultField&&e.setFieldValue(yp(r,t.verifyResultField),a.valid),t.verifyTimestampField&&e.setFieldValue(yp(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(yp(r,t.verifyResultField),!1),t.verifyTimestampField&&e.setFieldValue(yp(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 xp({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)(Lp,{field:t,label:c,locked:i})}function Sp({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 Cp({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.K({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 wp=[(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,{})],Tp={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`})},Ep=e=>e===!0||e===1||e===`1`,Dp=(e,t)=>(e?.edit===void 0||Ep(e.edit))&&(!e?.editablePermission||n.I(e.editablePermission,t)),Op=e=>e==null||e===``;function kp(e){return e==null||e===``?!1:Array.isArray(e)?e.length>0&&e.some(kp):typeof e!=`object`||Object.values(e).some(kp)}function Ap(e=``){let t=String(e).toLowerCase();return t===`job`?`jobs`:t===`candidate`?`candidates`:t===`submissions`?`submission`:t}function jp(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 Mp(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 Ep(t);case`falsy`:return!Ep(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 Np=o.default.createContext(!1);function Pp({form:e,group:t,children:r,inheritParent:i=!0}){let a=o.default.useContext(Np),c=t?.disabledIf?.field?n.Mt(t.disabledIf.field):[`__noop_group_disabled__`],u=s.Form.useWatch(c,e),d=t?.disabledIf?.field?Mp(t.disabledIf,u):!1,f=i&&a||!!t?.disabled||d;return(0,l.jsx)(Np.Provider,{value:f,children:r})}function Fp({form:e,showIf:t,render:n}){return Mp(t,s.Form.useWatch(t.field,e))?n():null}function Ip(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}function Lp({field:e,label:t,locked:r}){if(!t)return t;let i=n.z(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 Rp({group:e}){return!Ep(e?.infoEnabled)||Op(e?.infoText)?null:(0,l.jsx)(_p,{type:`secondary`,className:`v1-group-info-message`,children:e.infoText})}function zp({group:e}){return!Ep(e?.toggleEnabled)||Op(e?.toggleField)?null:(0,l.jsxs)(s.Space,{size:6,align:`center`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(_p,{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 Bp(e=[],t,r,i){let a=i??new Set;return[...e].filter(e=>!Ep(e.hideGroup)&&!Ep(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=>a.has(e.field)?{...e,show:1,req:1}:e).filter(i=>String(i.field??``).trim()!==``&&(!i.visiblePermission||n.I(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 Vp(e){return String(e??``).replace(/<[^>]*>/g,``).replace(/&nbsp;/g,` `).replace(/&amp;/g,`&`).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).trim()}function Hp(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 Up=({label:e,message:t,value:n,compare:r,text:i})=>({validator:(a,o)=>Op(o)||r(Number(o),Number(n))?Promise.resolve():Promise.reject(Error(t??`${e} ${i} ${n}`))});function Wp(e,t){return n.rt(e,t)}var Gp=({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||Op(l))return Promise.resolve();let d=i.getFieldValue(Wp(a,u));if(Op(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}`))}}),Kp={minLength3:e=>Kp.min({...e,value:3}),minLength5:e=>Kp.min({...e,value:5}),noPastDate:({label:e,message:t})=>({validator:(r,i)=>{if(Op(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(Op(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(Op(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(Wp(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(Wp(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||Op(c))return Promise.resolve();let u=a.getFieldValue(Wp(o,l));if(Op(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||Op(c))return Promise.resolve();let u=a.getFieldValue(Wp(o,l));if(Op(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=>Gp({...e,compare:(e,t)=>e>=t,text:`must be greater than or equal to`}),strictGreaterThanField:e=>Gp({...e,compare:(e,t)=>e>t,text:`must be greater than`}),strictLessThanField:e=>Gp({...e,compare:(e,t)=>e<t,text:`must be less than`}),lessThanOrEqualField:e=>Gp({...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&&Ep(n.getFieldValue(Jp(r,e.disabledByField)))||e?.requiredIfField&&n&&!Ep(n.getFieldValue(Jp(r,e.requiredIfField))))return Promise.resolve();let o=a==null||a===``||Array.isArray(a)&&a.length===0;return!o&&e?.type===`text-editor`&&(o=Vp(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`?Up({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`?Vp(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`?Up({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`?Vp(a):String(a);return o===``||o.length<=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must not exceed ${r} characters`))}}};function qp(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=Kp[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 Jp(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function Yp(e){return Ep(e?.req)?!0:(e?.validations??e?.validation??e?.rules??[]).some(e=>(typeof e==`string`?e:e?.type)===`required`)}function Xp(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=$p(t,r);i.rows&&f.push(n.m({field:e,...i}))}!i&&!u&&(Ep(e.req)||e.requiredIfField)&&f.push(Kp.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(Ep(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=>qp(n,e,t,r,a,o));return n._t([...f,...l.map(p),n.on(e)])}function Zp(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=>Wp(t,e)))]}function Qp(e){let t=e.len??Hp(e,`len`),n=e.min??Hp(e,`min`),r=e.max??Hp(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 $p(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 em(e,t,r){return n.f({field:e,readSibling:e=>t.getFieldValue(Wp(r,e)),...$p(t,r)})}function tm(e){return n.h(e)}function nm(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 rm({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=!Dp(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=Op(ne)?te:ne,ie=e.lookupFilterValueFrom?h[e.lookupFilterValueFrom]:void 0,ae=Op(ie)?re:ie,oe=(0,o.useRef)(n.L);(0,o.useEffect)(()=>{if(!e.lookupFilterField||!e.lookupFilterValueFrom)return;let t=oe.current;oe.current=ae,n.R({previous:t,next:ae,currentValue:r.getFieldValue(i)})&&r.setFields([{name:i,value:void 0,errors:[]}])},[ae]);let se=e.disabledByField?Array.isArray(i)&&i.length>1?[...i.slice(0,-1),e.disabledByField]:[e.disabledByField]:[`__noop_disabled_watch__`],H=s.Form.useWatch(se,r),ce=e.disabledIf?.field?n.Mt(e.disabledIf.field):[`__noop_disabled_if__`],le=e.disabledIf?.field&&B?[...i.slice(0,2),...n.Mt(e.disabledIf.field)]:[`__noop_disabled_if_row__`],ue=s.Form.useWatch(ce,r),de=s.Form.useWatch(le,r),fe=e.disabledIf?.field?n.i(e.disabledIf,Op(de)?ue:de):!1,pe=e.optionsFromField||``,me=pe?n.Mt(pe):[`__noop_options_from__`],he=pe&&B&&(!b||b.has(pe))?[...i.slice(0,2),...n.Mt(pe)]:[`__noop_options_from_row__`],ge=s.Form.useWatch(me,r),_e=s.Form.useWatch(he,r),ve=Op(_e)?ge:_e,ye=Ep(e.prefillWhenExclusive)&&e.prefillWhen?.length?e.prefillWhen:null,be=s.Form.useWatch(e=>ye?JSON.stringify(n.W(ye).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(Op(a)?r(n.Mt(t)):a)??null})):``,{form:r,preserve:!0}),xe=(0,o.useMemo)(()=>{if(!ye||!be)return null;let e=JSON.parse(be),t={};return n.W(ye).forEach((n,r)=>{t[n]=e[r]}),t},[be]),Se=o.default.useContext(Np),Ce=e.exclusiveInGroup&&B?[i[0]]:[`__noop_exclusive_watch__`],we=s.Form.useWatch(Ce,r),U=(0,o.useMemo)(()=>{if(!e.exclusiveInGroup||!B||!Array.isArray(we))return!1;let t=i[1],n=i[i.length-1];return we.some((e,r)=>r!==t&&Ep(e?.[n]))},[e.exclusiveInGroup,B,we,i]),W=e.locationCountryFrom?n.Mt(e.locationCountryFrom):[`__noop_loc_country__`],Te=e.locationCountryFrom&&B?[...i.slice(0,2),...n.Mt(e.locationCountryFrom)]:[`__noop_loc_country_row__`],Ee=s.Form.useWatch(W,r),De=s.Form.useWatch(Te,r),Oe=Op(De)?Ee:De,ke=e.locationStateFrom?n.Mt(e.locationStateFrom):[`__noop_loc_state__`],Ae=e.locationStateFrom&&B?[...i.slice(0,2),...n.Mt(e.locationStateFrom)]:[`__noop_loc_state_row__`],je=s.Form.useWatch(ke,r),Me=s.Form.useWatch(Ae,r),Ne=Op(Me)?je:Me,G=e.dataSource===`locationMaster`&&(e.locationLevel===`state`&&Op(Oe)||e.locationLevel===`city`&&(Op(Oe)||Op(Ne))),Pe=S||!!e.disabled||fe||(e.disabledByField?Ep(H):!1)||!!y||Se||U||G;(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(jp(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&&Op(ae)){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&&!Op(ae)&&(r.set(`filterField`,e.lookupFilterField),r.set(`filterValue`,String(ae)));let i={field:e.field,extraFields:e.extraFields,optionsRequireExtraField:e.optionsRequireExtraField,optionsRequireExtraValue:e.optionsRequireExtraValue,optionsHierarchyParentField:e.optionsHierarchyParentField,optionsHierarchySelfFrom:e.optionsHierarchySelfFrom},o=n.V(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.B(a,i,{source:`EditFormV1`})}else if(r===`locationMaster`){let n=e.locationLevel||`country`;if(n===`state`&&Op(Oe))a=[];else if(n===`city`&&(Op(Oe)||Op(Ne)))a=[];else{let r=new URLSearchParams({level:n,limit:String(e.limit??250),offset:`0`});Op(Oe)||r.set(`country`,String(Oe)),Op(Ne)||r.set(`state`,String(Ne)),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(jp(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,ae,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,Oe,Ne]);let Fe=jp([e.options,e.values].find(e=>Array.isArray(e)&&e.length>0)??(x===`checkbox`?[]:up(e))),Ie=C??Fe,[Le,Re]=(0,o.useState)([]),ze=n.b(a,Ie).join(`,`);(0,o.useEffect)(()=>{if(!ze||e.dataSource!==`lookup`||T)return;let t=!1;return n.v(e,ze.split(`,`)).then(e=>{t||Re(e)}).catch(()=>{t||Re([])}),()=>{t=!0}},[ze,e.dataSource,e.lookupCollection,e.displayField,e.displayField2,e.valueField,T]);let Be=n.y(Ie,Le),K=pe?n.H(Be,ve):Be,q=ye?n.U(K,ye,xe??{}):K,Ve=(e.multiSelect?`multiple`:e.mode??(Ep(e.multiple)?`multiple`:void 0))??(n.Xt(e)===`array`?`multiple`:void 0),J=Ep(e.allowCustomValues),He=J?`tags`:Ve,Ue=!!e.multiSelect||Ep(e.multiple)||n.Xt(e)===`array`||Ve===`multiple`,We=J?typeof e.tokenSeparators==`string`&&e.tokenSeparators?e.tokenSeparators.split(``):[`,`]:void 0,Ge=[`select`,`location`].includes(x),Ke=e.hidePlaceholder?void 0:e.placeholder??`${Ge?`Select`:`Enter`} ${String(e.label??``).toLowerCase()}`,Y=Qp(e),qe=()=>{setTimeout(()=>{r.validateFields([i]).catch(()=>{})})},X=e=>{r.setFieldValue(i,e),qe()},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),X(n.nn(e)?{value:a}:a))}}),Ye=e.validator?.type?{...e.validator,title:e.validator.title||e.label||`Field`}:null,Xe={...Y,value:a,disabled:Pe,placeholder:Ke,prefix:e.icon?null:Tp[e.field],onChange:t=>{let r=e.formatter?nm(t.target.value,e.formatter):t.target.value;if(Ye){let{cleaned:e,error:t}=n.Ct(r,Ye,`change`);I(t),r=e}X(r)},...Ye&&{onBlur:e=>{let{cleaned:t,error:r}=n.Ct(e.target.value,Ye,`blur`);I(r),t!==e.target.value&&X(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??Y.maxLength}};if(x===`tagify`)return(0,l.jsx)(s.Select,{value:a,allowClear:!0,disabled:Pe,mode:`tags`,placeholder:Ke,onChange:X});if(x===`location`)return(0,l.jsx)(s.Select,{value:a,allowClear:!0,showSearch:!0,filterOption:!1,disabled:Pe,loading:T,mode:Ve,options:q,placeholder:Ke,notFoundContent:T?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:O,onFocus:()=>O(e=>e),onChange:X});if(x===`select`){let t=e.dataSource===`lookup`,o=e.dataSource===`master`,c=t||o,u=n.nn(e),d=n.tn(e,a,q),f=J&&!Ue?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:Pe,loading:T,labelInValue:u||void 0,showSearch:e.showSearch!==!1,optionFilterProp:`label`,filterOption:!c&&void 0,mode:He,tokenSeparators:We,options:q,placeholder:Ke,notFoundContent:T?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:t?A:o?M:void 0,onChange:t=>{let a=J&&!Ue&&Array.isArray(t)?t.length?t[t.length-1]:void 0:t;if(X(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=>Ip(e,a)===t||e._id===t||e.id===t||e.value===t);s&&e.autofillFrom.forEach(({optionKey:e,targetField:t})=>{let a=Ip(s,e)??s.extraData?.[e]??null,c=o?[...i.slice(0,2),...n.Mt(t)]:n.Mt(t);r.setFieldValue(c,a)})}}},dropdownRender: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:Pe,options:q,onChange:e=>X(e.target.value)});if(x===`checkbox`)return q.length>0?(0,l.jsx)(s.Checkbox.Group,{value:a,disabled:Pe,options:q,onChange:X}):(0,l.jsx)(s.Checkbox,{checked:u,disabled:Pe,onChange:t=>{let n=t.target.checked;if(!(n&&_?.(e))&&(X(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:Pe,placeholder:Ke,onChange:e=>{if(Ye){let{error:t}=n.Ct(e,Ye,`change`);I(t)}X(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)(vp,{...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:Pe,placeholder:Ke,style:{width:`100%`},suffixIcon:(0,l.jsx)(c.CalendarOutlined,{}),disabledDate:em(e,r,i),defaultPickerValue:tm(e),onChange:t=>{X(t),v?.(e,i)}});if(x===`time`)return(0,l.jsx)(s.TimePicker,{value:a,disabled:Pe,placeholder:Ke,style:{width:`100%`},onChange:e=>X(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):Ep(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=>{X(_.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(X(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:Pe},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${Pe?` 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:Pe,style:{width:`100%`,display:`block`},children:(0,l.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-single${Pe?` 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`&&Ep(e.decimal)?{step:`any`}:{},...e.suffix?{suffix:e.suffix}:{}}),F&&(0,l.jsx)(`div`,{className:`v1-input-validator-hint`,children:F})]})}function im({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)(_p,{strong:!0,className:`v1-section-label`,children:t})]})}function am(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)(_p,{type:`secondary`,className:`v1-field-help-line`,children:e},t))})}function om({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();(0,o.useEffect)(()=>(u&&t.g(u),()=>{u&&t.r()}),[u]);let[D,O]=(0,o.useState)({}),[k,A]=(0,o.useState)([]),[j,M]=(0,o.useState)([]);(0,o.useEffect)(()=>{if(!e||!i){M([]);return}let t=!1;return n._n(e,i).then(e=>{t||M(Array.isArray(e)?e:e?.data??[])}).catch(()=>{t||M([])}),()=>{t=!0}},[e,i]);let[N,P]=(0,o.useState)(!1),[F,I]=(0,o.useState)(``),[L,R]=(0,o.useState)(!1),[z,B]=(0,o.useState)(``),[V,ee]=(0,o.useState)(null),[te,ne]=(0,o.useState)(()=>new Set),[re,ie]=(0,o.useState)(``),ae=f||re,[oe,se]=(0,o.useState)({});(0,o.useEffect)(()=>{n.Vn()},[]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){ee(null);return}n.Hr({roleId:localStorage.getItem(`roleId`)},e,{clientId:ae,region:p}).then(e=>{t||ee(Array.isArray(e)&&e.length?e:null)}).catch(()=>{t||ee(null)})}}),()=>{t=!0}},[e,ae,p]),(0,o.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!e){ne(new Set);return}n.Lr(e).then(e=>{t||ne(new Set(Array.isArray(e)?e:[]))}).catch(()=>{t||ne(new Set)})}}),()=>{t=!0}},[e]);let H=(0,o.useMemo)(()=>Bp(k,e,V,te),[k,e,V,te]),ce=(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=H.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})})},[H,E]),le=(0,o.useCallback)(e=>{let t=n.Bn().region,r=H.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},[H]),ue=(0,o.useCallback)((e,t)=>{let r=H.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},[H]),[de,fe]=(0,o.useState)(0),pe=(0,o.useMemo)(()=>n.bt({checkFieldUnique:n.gt,onPendingChange:fe}),[]),me=(0,o.useMemo)(()=>({checker:pe,module:e,recordId:i,clientId:ae||void 0,region:p||void 0}),[pe,e,i,ae,p]),he=(0,o.useMemo)(()=>n.yt(H),[H]),ge=(0,o.useMemo)(()=>n.Ut(H),[H]),_e=(0,o.useRef)({}),ve=n.kt({form:E,groups:H,module:e}),ye=(0,o.useMemo)(()=>{let e={};return H.forEach(t=>{t.addRow&&(e[t.name]=n.jt(t))}),n.Gt(ge,e)},[H,ge]),be={jobs:{list:`Jobs`,path:`/jobs`,edit:`Edit Job`},candidates:{list:`Candidates`,path:`/candidates`,edit:`Edit Candidate`},submissions:{list:`Submissions`,path:`/submissions`,edit:`Edit Submission`}},xe=S?[]:m.length>0?m:(()=>{let t=be[Ap(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{P(!0),I(``),B(``);let n=await a.r({module:e,id:i,clientId:ae,region:p,group:r});if(t)return;if(A(Array.isArray(n)?n:[]),se(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!==re&&ie(i)}}catch(n){console.error(`Failed to fetch ${e} edit data:`,n),t||I(n?.message||`Failed to load record`)}finally{t||P(!1)}}return n(),()=>{t=!0}},[e,r,i,f,ae,re,p]),(0,o.useEffect)(()=>{N||H.length===0||n.At(E,H)},[N,H,E]),(0,o.useEffect)(()=>{if(N||H.length===0||j.length===0)return;let e=new Map;j.forEach(t=>{let n=t?.fieldName||t?.field;n&&(e.has(n)||e.set(n,[]),e.get(n).push(t))});let t={},r=!1;H.forEach(i=>{Ep(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:!Op(a))return;let o=e.get(i.field)??(i.fileKey?e.get(i.fileKey):null);if(!o?.length)return;let s=Ep(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)},[N,H,j,E]);let Se=T.state?.carryFiles;(0,o.useEffect)(()=>{if(N||!Se)return;let e=Object.entries(Se).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}}))},[N,Se,E,w,T.pathname,T.search,T.state]);let Ce=(0,o.useMemo)(()=>n.J(H.map(e=>({...e,fields:(e.fields??[]).filter(n.Q)})),Ap),[H]),[we,U]=(0,o.useState)({});(0,o.useEffect)(()=>{if(Ce.length===0)return;let e=!1;return Ce.forEach(async t=>{let r=n.Y(t,oe);if(r)try{let i=await a.r({module:t,id:r}),o=n.Z(n.X(i));!e&&Object.keys(o).length>0&&U(e=>({...e,[t]:o}))}catch(e){console.error(`Carrier prefill fetch failed for ${t}:`,e)}}),()=>{e=!0}},[Ce,oe]),(0,o.useEffect)(()=>{if(N||H.length===0||Object.keys(we).length===0)return;let e={},t=!1;H.forEach(r=>(r.fields??[]).forEach(r=>{if(!r.field||!r.prefillFromModule||!n.Q(r))return;let i=we[Ap(r.prefillFromModule)],a=n.$(i,r);a!=null&&(n.Nt(e,r.field,a),t=!0)})),t&&E.setFieldsValue(e)},[we,N,H,E]);let W=e=>{O(t=>({...t,[e]:!t[e]}))},Te=(0,o.useMemo)(()=>H.map(e=>`${e.name}:${+!!Ep(e.allowCollapse)}${+!!Ep(e.defaultCollapsed)}`).join(`|`),[H]),Ee=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!H.length||Ee.current===Te)return;Ee.current=Te;let e={};H.forEach((t,n)=>{let r=t.name??t.id??String(n);Ep(t.allowCollapse)&&Ep(t.defaultCollapsed)&&(e[r]=!0)}),O(e)},[Te,H]);function De(t){let r=n.qt(t,H,{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{R(!0),B(``);let r=n.Yt(t,H,{indexed:!0,module:e});if(y&&y.useLegacyUpload){let e=H.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,H,{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(H,e,`edit`);if(o&&s.message.success(o),_)_(i,t);else{let e=n.M(H);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(H,e,`edit`,t?.message);B(r),s.message.error(r)}finally{R(!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]}))),O({}),n.l({errorFields:t.map(e=>{let t=e.name??e.field;return{name:Array.isArray(t)?t:[t],errors:[e.message]}})},E),!0)}let Ae=e=>{O({}),n.l(e,E)},[je,Me]=(0,o.useState)({}),Ne=e=>String(e?.field??``),G=(e,t)=>typeof e==`function`?e(t):e,Pe=(e,t,n)=>{if(!e?.field)return!0;let r=G(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}},Fe=(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=>Pe(e,t,n)),a=String(e.logic??`and`).toLowerCase()===`or`,o=a?i.some(Boolean):i.every(Boolean);if(e.field){let r=Pe(e,t,n);o=a?o||r:o&&r}return o}return Pe(e,t,n)},Ie=e=>!!(e?.field||e?.conditions?.some?.(e=>e?.field)),Le=(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.I(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)(xp,{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.q,{form:E,field:t,flagPath:x,fieldPath:m,disabled:_})]}):S,w=c.inline||t.type===`text-editor`||t.type===`file`&&Ep(t.multiple)?24:t.col??12,T=Zp(t,m,y),D=n.z(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:am(t),required:Yp(t),rules:Xp(t,E,m,!1,y,me,ue(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)(rm,{field:t,form:E,name:m,rowFieldKeys:c.rowFieldKeys,moduleName:e,recordId:i,initialValue:t.value,scopeValues:{clientId:f},onAiUpload:A?e=>ve.runAction(c.groupNameForActions,t,A,e):void 0,formDisabled:ve.busy,onRegionBlocked:le,onRowOrderChange:ce})}),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:ve,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)(bp,{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)(Cp,{form:E,rules:t.prefillWhen,watchPaths:n.G(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 Ie(t.showIf)||z?(0,l.jsxs)(o.default.Fragment,{children:[R,(0,l.jsx)(s.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>!Ie(t.showIf)||Fe(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)},Re=t=>{let r=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],a=!!t.editablePermission&&!n.I(t.editablePermission,e),o=(0,l.jsx)(Lp,{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:Yp(t),colon:!1,className:`v1-combine-field`,children:(0,l.jsx)(s.Form.List,{name:r,initialValue:g,rules:[{validator:async(e,n=[])=>{if(Yp(t)&&!(d?n.some(e=>kp(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:K(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:Xp(u,E,[...r,h],!1),children:(0,l.jsx)(rm,{field:u,form:E,name:[...r,h],moduleName:e,recordId:i,scopeValues:{clientId:f},formDisabled:ve.busy,onRegionBlocked:le,onRowOrderChange:ce})})})]},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)},ze=(t,r,a)=>{let o=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],u=!!t.editablePermission&&!n.I(t.editablePermission,e),d=(0,l.jsx)(Lp,{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:Yp(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(Yp(t)&&!n.some(e=>kp(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:K(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:Xp(p,E,u,!1),children:(0,l.jsx)(rm,{field:p,form:E,name:u,moduleName:e,recordId:i,scopeValues:{clientId:f},formDisabled:ve.busy,onRegionBlocked:le,onRowOrderChange:ce})})})]},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}`)},Be=(e,t)=>e.filter(e=>e.field&&e.show!==void 0&&!Ep(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}`)}),K=(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||Ep(e.show));return c.push(...Be(e,t)),d.forEach(e=>{if(Ep(e.addRow)&&t===void 0){c.push(Re(e));return}if(Ep(e.addRow)&&t!==void 0){c.push(ze(e,t,r));return}let f=e.combineKey?.trim?.();if(!f){c.push(Le(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)(xp,{form:E,field:h,siblingPrefix:g,combined:!0}),x=_?(0,l.jsxs)(`span`,{className:`v1-label-with-override`,children:[b,(0,l.jsx)(n.q,{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=>Ep(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=>Yp(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=>Ie(e.showIf)),P=e=>m.some(t=>!Ie(t.showIf)||Fe(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?!Op(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=>Le(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)(_p,{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},q=e=>{let t=e.name??e.id??``,r=n.Wt(ge,t),i=!!r&&r.leaderName!==t,a=r?H.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=H.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:ye[e.name]??[],rules:i?[]:[{validator:async(t,n=[])=>{if(!(Ep(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(Ep(e.requireOne)&&n.some(e=>!kp(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)(_p,{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`}`})}),Ep(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||Ep(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:K(e.fields,i,t,Ep(e.sharedRowLabels),t)})})]},r)),(0,l.jsx)(s.Form.ErrorList,{errors:h})]}))}):(0,l.jsx)(s.Row,{gutter:[24,0],children:K(e.fields,void 0,void 0,!1,t)})},Ve=e=>H.filter(t=>t!==e&&t.mergeInto&&String(t.mergeInto)===String(e.name)),J=e=>!!(e.mergeInto&&H.some(t=>t!==e&&String(t.name)===String(e.mergeInto))),He=(e,t)=>Ve(e).filter(e=>String(e.mergePosition??`bottom`)===t),Ue=(e,t)=>{let n=e.name??e.id??String(t),r=q(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}),q(e)]},e.name),n=e.showIf?.field?(0,l.jsx)(Fp,{form:E,showIf:e.showIf,render:()=>t},e.name):t;return(0,l.jsx)(Pp,{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)(im,{icon:wp[t%wp.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)(Rp,{group:e}),(0,l.jsx)(zp,{group:e}),Ep(e.allowCollapse)&&(0,l.jsx)(s.Button,{type:`text`,size:`small`,"aria-expanded":!D[n],"aria-label":D[n]?`Expand section`:`Collapse section`,icon:D[n]?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.UpOutlined,{}),onClick:e=>{e.stopPropagation(),W(n)}})]}),children:(0,l.jsx)(s.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:t})=>{let s=Ep(e.toggleEnabled)&&e.toggleField&&!!t(e.toggleField);return(0,l.jsxs)(`div`,{style:{display:D[n]||s?`none`:`block`},children:[i.map(o),r,a.map(o)]})}})},n)};return(0,l.jsxs)(`main`,{children:[xe.length>0&&(0,l.jsx)(n.t,{items:xe}),(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:ve.busy,size:`large`,tip:ve.loadingText||`Reading the file…`}),(0,l.jsxs)(s.Spin,{spinning:N,tip:`Loading form fields…`,children:[F&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:F,style:{marginBottom:16}}),z&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:z,style:{marginBottom:16}}),(0,l.jsxs)(s.Form,{form:E,layout:`vertical`,colon:!1,className:`v1-form`,disabled:ve.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:[H.filter(e=>!J(e)).map((e,t)=>(0,l.jsx)(Pp,{form:E,group:e,children:e.showIf?.field?(0,l.jsx)(Fp,{form:E,showIf:e.showIf,render:()=>Ue(e,t)}):Ue(e,t)},e.name??`grp-${t}`)),!N&&!F&&H.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)(_p,{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)(Sp,{form:E,groups:H,onClick:()=>E.submit(),disabled:N||L||de>0,loading:L,children:h})]})]})]})]})}var sm=new Map;function cm(e){let[t,r]=(0,o.useState)({actions:[],actionRules:[]});return(0,o.useEffect)(()=>{if(!e)return;let t=!1;return sm.has(e)||sm.set(e,n.fn(e).catch(()=>(sm.delete(e),{actions:[],actionRules:[]}))),sm.get(e).then(e=>{t||r(e)}),()=>{t=!0}},[e]),t}var lm={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 um(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function dm(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(um(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(um(t?.[n]??(n===`_id`?t?.id:n===`id`?t?._id:void 0))))}function fm(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function pm(e,t,n,r){let i=Or(e,t,r),a=Dr(e.key,t,n,r),o={key:e.key,label:i?i.label:e.label||e.key,icon:lm[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=>pm(e,t,n,r))),o}function mm(e){let t=[];for(let n of e)t.push(n),n.children?.length&&t.push(...mm(n.children));return t}function hm({module:e,record:r,scope:i,onDone:a,fallback:o=null}){let u=(0,d.useNavigate)(),f=(0,d.useLocation)(),{actions:p,actionRules:m}=cm(e),h=t=>!(t.showInList===!1||!n.I(t.permission,e)||t.permissionKey&&!n.F(fm(r,`actionPermission.${t.permissionKey}`))||Er(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=fm(r,n.copyField||`id`)??r?._id;navigator.clipboard.writeText(um(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=dm(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=dm(i,r),t=e.startsWith(`/`)?e:`/${e}`;if(n.linkTarget===`_blank`){window.open(t,`_blank`,`noopener`);return}u(t)}},v=new Map(mm(g).map(e=>[String(e.key),e]));return(0,l.jsx)(s.Dropdown,{trigger:[`click`],menu:{items:g.map(e=>pm(e,r,m,i)),onClick:({key:e,domEvent:t})=>{t?.stopPropagation?.();let n=v.get(String(e));n&&n.actionType!==`group`&&!Or(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:gm}=s.Typography;function _m(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function vm(e){return e.value??e.fieldName??e.name??e.label}function ym(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}var bm=[{key:`name`,label:`Name`},{key:`designation`,label:`Designation`},{key:`locationExp`,label:`Location / Exp`},{key:`skills`,label:`Skills`},{key:`createdOn`,label:`Created On`}];function xm({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?ym(e,o.key):`-`,v=u?ym(e,u.key):``,y=f?ym(e,f.key):``,b=m?ym(e,m.key):``,x=h?ym(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(ym(e,g.key),e):null;function D(){i(`/popup/preview`,{state:{background:a,moduleName:`candidate`,record:e,fields:bm}})}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)(gm,{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)(gm,{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)(gm,{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)(gm,{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)(gm,{className:`param-card__empty`,children:`-`}),T.length>0&&(0,l.jsx)(s.Popover,{trigger:`click`,placement:`bottomLeft`,overlayClassName:`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)(gm,{className:`param-card__section-label param-card__section-label--right`,children:`Created on`}),(0,l.jsx)(gm,{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 Sm({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:vm(e),label:_m(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(ym(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)(gm,{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)(gm,{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)(xm,{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:Cm}=s.Typography;function wm(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function Tm(e){return e.value??e.fieldName??e.name??e.label}function Em(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}function Dm(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 Om({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:Tm(e),label:wm(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(Em(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(Em(t,e.key)).localeCompare(String(Em(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)(Cm,{className:`job-cell-primary`,children:Em(n,e.key)})})),[V,ee]),ae=ee.length===V.length,oe=ee.length>0&&!ae,se=(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)})},H=(0,l.jsxs)(`div`,{className:`column-visibility-menu`,onClick:e=>e.stopPropagation(),children:[(0,l.jsx)(s.Checkbox,{checked:ae,indeterminate:oe,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=>se(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:Dm(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`],dropdownRender:()=>H,placement:`bottomLeft`,overlayClassName:`column-visibility-dropdown`,children:(0,l.jsx)(s.Button,{type:`text`,icon:(0,l.jsx)(`img`,{src:$i,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)(Cm,{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 km=[`both`,`slider`,`inputs`];function Am({field:e,value:t,onChange:n,disabled:r}){let i=Number(e.min??0),a=Number(e.max??30),o=km.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})]})]})}Am.propTypes={field:f.default.object.isRequired,value:f.default.array,onChange:f.default.func.isRequired,disabled:f.default.bool};var jm=[{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 Mm(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 Nm(e){return e?(0,u.default)(e).endOf(`day`).toISOString():null}function Pm(e){return e?(0,u.default)(e).startOf(`day`).toISOString():null}var{RangePicker:Fm}=s.DatePicker;function Im({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]=Mm(e);n({preset:e,from:Pm(t),to:Nm(r)})},c=e=>{let[t,r]=Array.isArray(e)?e:[null,null];n({preset:`custom`,from:Pm(t),to:Nm(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:jm.map(({key:e,label:t})=>({value:e,label:t})),onChange:o,onClear:()=>n(void 0)}),a===`custom`&&(0,l.jsx)(Fm,{style:{width:`100%`,marginTop:8},disabled:r,value:d,disabledDate:e=>e&&e.isAfter((0,u.default)(),`day`),onChange:c})]})}Im.propTypes={field:f.default.object.isRequired,value:f.default.object,onChange:f.default.func.isRequired,disabled:f.default.bool};var Lm=new Set([`AND`,`OR`]),Rm=new Set([`AND`,`OR`,`NOT`]);function zm(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(Rm.has(o)?{type:`operator`,value:o}:{type:`term`,value:a}),r=i}return n}var Bm=[{pattern:/&&/,message:`Use AND instead of &&.`},{pattern:/\|\|/,message:`Use OR instead of ||.`},{pattern:/(?:^|\s)!(?=\S)/,message:`Use NOT instead of !.`}],Vm=4,Hm=12,Um=[`query`],Wm=new Set(Um);function Gm(e){return Array.isArray(e)?e.length===1&&Wm.has(e[0]):Wm.has(e)}function Km(e){let t=[],n=[],r=String(e??``).trim();if(!r)return{valid:!0,errors:t,warnings:n};Bm.forEach(({pattern:e,message:n})=>{e.test(r)&&t.push(n)});let i=zm(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=Lm.has(e.value),r=!i||i.type===`lparen`||i.type===`operator`&&Lm.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>Vm&&n.push(`Nested ${o} levels deep — consider simplifying so it stays easy to verify.`),l.length>Hm&&n.push(`${l.length} terms in one query — consider narrowing it.`),{valid:t.length===0,errors:[...new Set(t)],warnings:[...new Set(n)]}}function qm(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 Jm=`keywords`;function Ym(e){return e===!0||e===1||e===`1`}function Xm(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 Zm={terms:[],mandatoryAll:!1,expression:``,generatedExpression:``};function Qm(e){return Array.isArray(e)?{...Zm,terms:e.map(Xm).filter(Boolean)}:e&&typeof e==`object`?{terms:Array.isArray(e.terms)?e.terms.map(Xm).filter(Boolean):[],mandatoryAll:!!e.mandatoryAll,expression:typeof e.expression==`string`?e.expression:``,generatedExpression:typeof e.generatedExpression==`string`?e.generatedExpression:``}:typeof e==`string`&&e.trim()?{...Zm,terms:[{value:e.trim(),mandatory:!1}]}:{...Zm}}function $m(e){return e?.type===Jm}function eh(e){return $m(e)&&Ym(e.isPrimaryKeyword)}function th(e){return String(e?.keywordRole??`include`).toLowerCase()===`exclude`}function nh(e){return Ym(e?.showMandatoryOption)&&!th(e)}function rh(e){return String(e?.keywordGroup??``).trim()||String(e?.field??``)}function ih(e){let t=e?.keywordFields;return(Array.isArray(t)?t:t?[t]:[]).map(e=>String(e??``).trim()).filter(Boolean)}function ah(e){let t=Number(e?.maxKeywords);return Number.isFinite(t)&&t>0?Math.floor(t):50}function oh(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 sh(e,{booleanMode:t=!1,isPrimary:n=!1}={}){let r=Qm(e);return t&&n?r.expression.trim()!==``:r.terms.length>0}function ch(e){return oh(String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean))}var lh={mandatory:[],optional:[],exclude:[]};function uh(e,t){return e?.type===`operator`&&e.value===t}function dh(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(!uh(r,`OR`))return null}return e.length%2==1?t:null}function fh(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&&uh(t,`AND`)){i();continue}if(r===0&&uh(t,`NOT`)){i(),n.push(t);continue}n.push(t)}return r===0?(i(),t):null}function ph(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 mh(e){let t=String(e??``).trim();if(!t||Km(t).errors.length)return null;let n=zm(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=ch(t);return e.length?{...lh,optional:e}:null}let a=fh(n);if(!a||!a.length)return null;let o=[],s=[],c=null;for(let e of a){if(uh(e[0],`NOT`)){let{inner:t}=ph(e.slice(1)),n=dh(t);if(!n)return null;s.push(...n);continue}let{inner:t,wrapped:n}=ph(e);if(n){let e=dh(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=dh(e);if(!t)return null;c=t;continue}return null}if(o.length===1&&!c&&!s.length)return{mandatory:[],optional:oh(o),exclude:[]};let l={mandatory:oh(o),optional:oh(c??[]),exclude:oh(s)};return l.mandatory.length+l.optional.length+l.exclude.length?l:null}function hh(e){let t=Qm(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 gh(e,{starsEnabled:t=!0}={}){let n=Qm(e),r=mh(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)&&!zm(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 _h(e=[],t={},{booleanMode:n=!1}={}){let r=new Map;e.forEach(e=>{if(!$m(e)||n&&eh(e))return;let i=Qm(t[e.field]);if(!i.terms.length)return;let a=rh(e);if(!a)return;r.has(a)||r.set(a,{id:a,fields:ih(e),mandatory:[],optional:[],exclude:[]});let o=r.get(a);if(o.fields.length||(o.fields=ih(e)),th(e)){i.terms.forEach(e=>o.exclude.push(e.value));return}let s=nh(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:oh(e.mandatory),optional:oh(e.optional),exclude:oh(e.exclude)};!t.mandatory.length&&!t.optional.length&&!t.exclude.length||i.push(t)}),i.length?i:null}var{TextArea:vh}=s.Input,{Text:yh}=s.Typography,bh=`(Java OR J2EE) AND "Spring Boot" NOT Hibernate`;function xh({field:e,value:t,onChange:n,disabled:r,placeholder:i,booleanEnabled:a,booleanMode:u,onBooleanModeChange:d,serverError:f}){let p=Qm(t),m=eh(e),h=nh(e),g=th(e),_=ah(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)(yh,{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)(yh,{type:`secondary`,children:u?`Boolean on`:`Boolean off`})]})]});return v?(0,l.jsxs)(`div`,{className:`sbv1-keywords`,children:[M,(0,l.jsx)(vh,{autoSize:{minRows:e.rows??3,maxRows:12},value:p.expression,disabled:r,status:f?`error`:void 0,placeholder:e.booleanPlaceholder??bh,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`})]})}xh.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:Sh}=s.Input,{RangePicker:Ch}=s.DatePicker,wh={};function Th(e,t){if(!e||typeof t?.render!=`function`)throw Error(`registerFieldType(type, { render }) requires a type name and a render function`);return wh[e]={booleanEligible:!1,needsOptions:!1,multiValue:!1,...t},wh[e]}function Eh(e){return wh[e]??wh.text}function Dh(e){return!!Eh(e).booleanEligible}function Oh(e){let t=Eh(e?.type??`text`).ownsLabel;return typeof t==`function`?!!t(e):!!t}function kh(e,t,n){let r=Eh(e?.type??`text`).hasValue;if(typeof r==`function`)return!!r(t,n)}function Ah(){return Object.entries(wh).filter(([,e])=>e.booleanEligible).map(([e])=>e)}function jh(e){return`Enter ${String(e.label??e.field??``).toLowerCase()}`}function Mh(e){return e.multiSelect||e.mode===`multiple`?`multiple`:void 0}function Nh(e){return`Select ${String(e.label??e.field??``).toLowerCase()}`}Th(`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??jh(e),allowClear:!0,onChange:e=>n(e.target.value)})}),Th(`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??jh(e),allowClear:!0,onChange:e=>n(e.target.value)})}),Th(`textarea`,{booleanEligible:!1,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,l.jsx)(Sh,{rows:e.rows??3,value:t??``,disabled:r,placeholder:i??jh(e),onChange:e=>n(e.target.value)})}),Th(`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??jh(e),onChange:n})}),Th(`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:Mh(e),value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:o??Nh(e),notFoundContent:i?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onChange:n})}),Th(`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??Nh(e),notFoundContent:i?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onChange:n})}),Th(`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:Mh(e),options:i,loading:a,allowClear:!0,showSearch:!0,filterOption:!1,placeholder:c??Nh(e),notFoundContent:a?(0,l.jsx)(s.Spin,{size:`small`}):void 0,onSearch:r,onChange:n})}),Th(`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??jh(e),onChange:n})}),Th(`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)})}}),Th(`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})]})}}),Th(`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})}),Th(`daterange`,{multiValue:!0,render:({value:e,onChange:t,disabled:n})=>(0,l.jsx)(Ch,{style:{width:`100%`},value:e??null,disabled:n,onChange:t})}),Th(`range`,{multiValue:!0,render:e=>(0,l.jsx)(Am,{...e})}),Th(`daterangePreset`,{multiValue:!0,render:e=>(0,l.jsx)(Im,{...e})}),Th(`keywords`,{booleanEligible:!0,multiValue:!0,ownsLabel:e=>eh(e),hasValue:sh,render:e=>(0,l.jsx)(xh,{...e})});var Ph=300;function Fh(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 Ih({field:e,moduleName:t,value:r,onChange:i,disabled:a,extraProps:s}){let c=Eh(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)(()=>Fh(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),Ph);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(Fh(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??{}})}Ih.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:Lh}=s.Input;function Rh({field:e,value:t,onChange:n,disabled:r,serverError:i}){return(0,l.jsxs)(`div`,{className:`sbv1-boolean-field`,children:[(0,l.jsx)(Lh,{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})]})}Rh.propTypes={field:f.default.object.isRequired,value:f.default.string,onChange:f.default.func.isRequired,disabled:f.default.bool,serverError:f.default.string};var zh=[`query`,`skills`,`jobTitle`,`designation`,`currentLocation`,`experience.from`,`experience.to`,`workExperienceYears`,`sourceType`,`createdFrom`,`createdTo`],Bh=new Set([`experience.from`,`experience.to`,`workExperienceYears`]);function Vh(e,t,n){if(!t.includes(`.`)){e[t]=n;return}let[r,i]=t.split(`.`);e[r]={...e[r]??{},[i]:n}}function Hh(e){return e&&typeof e==`object`&&!Array.isArray(e)?e.value??e.label??e.name??``:e}function Uh(e,t){let n=Hh(t);if(Bh.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(Hh).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 Wh(e={},t=[],n={}){let r={},i=!!n.booleanMode;t.forEach(t=>{let n=t.booleanApiKey;if(!n)return;let a=e[t.field];if($m(t)){let e=Qm(a);if(eh(t)){if(!i)return;let t=e.expression.trim();t&&Vh(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=Uh(t,e[n]);i!==void 0&&Vh(r,t,i)});return}let o=Uh(n,a);o!==void 0&&Vh(r,n,o)}),!r.sourceType&&n.defaultSourceType&&(r.sourceType=n.defaultSourceType);let a=_h(t,e,{booleanMode:i});return a&&(r.keywordGroups=a),n.module&&(r.module=String(n.module)),r}function Gh(e){return Array.isArray(e.rangeKeys)&&e.rangeKeys.length===2?e.rangeKeys:[`${e.field}From`,`${e.field}To`]}function Kh(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=Qm(e[t.field]).terms.map(e=>e.value);r.length?n[t.field]=r:delete n[t.field];return}if(!Eh(r).multiValue||r!==`range`&&r!==`daterange`)return;let i=e[t.field];if(!Array.isArray(i))return;let[a,o]=Gh(t);delete n[t.field];let[s,c]=i;s!=null&&s!==``&&(n[a]=s),c!=null&&c!==``&&(n[o]=c)}),n}function qh(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 Jh(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 Yh({moduleName:e,criteria:t={},searchMode:n=`traditional`,sources:r=[],sourceModules:i,scope:a=``,sort:o=``,sortDir:s=``}){let c=String(a??``).trim().toLowerCase(),l=ns(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 Xh(e,t){return ns(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 Zh(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 Qh({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=Yh({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 Zh(m?.data??m??{}),{data:g,..._}=h;return{..._,items:h.items??g??[],tabs:h.tabs?.length?h.tabs:Xh(i,h.count)}}}var{Text:$h}=s.Typography,eg=`selectedSource`,tg=new Set([eg,`source`,`sourceType`,`scope`]),ng={searched:!1,rows:[],total:0,fields:[],actions:[],actionRules:[],loading:!1};function rg(e){return Array.isArray(e)?e:Array.isArray(e?.groups)?e.groups:Array.isArray(e?.data?.groups)?e.data.groups:[]}function ig(e){return e===!0||e===1||e===`1`}function ag(e){return[Number(e.min??0),Number(e.max??30)]}function og(e){if(e.type===`range`)return String(e.defaultRange??``).trim()===`full`?ag(e):void 0;if(e.type===`daterangePreset`){let t=String(e.defaultPreset??``).trim();if(!t)return;let[n,r]=Mm(t);return{preset:t,from:Pm(n),to:Nm(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 sg(e,t){if(e?.type===`range`){if(String(e.defaultRange??``).trim()!==`full`||!Array.isArray(t)||t.length!==2)return!1;let[n,r]=ag(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 cg(e,t){return String(e?._id??e?.id??e?.applicantRefrenceId??e?.applicantReferanceId??e?.diceId??e?.profileId??t)}function lg(e,t,n){let r=e?kh(e,t,n):void 0;return r===void 0?t==null||t===``||sg(e,t)?!1:!Array.isArray(t)||t.length>0:r}function ug(e,t=[],n={}){let r=new Map(t.map(e=>[e.field,e]));return Object.entries(e??{}).some(([e,t])=>{if(tg.has(e))return!1;let i=r.get(e);return lg(i,t,{...n,isPrimary:eh(i)})})}function dg({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)(ng),[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,ae]=(0,o.useState)(0),[oe,se]=(0,o.useState)(null),[H,ce]=(0,o.useState)(`list`),[le,ue]=(0,o.useState)(!1),de=(0,o.useId)(),fe=(0,o.useRef)(!1),pe=(0,o.useCallback)(e=>{fe.current&&(fe.current=!1,e&&ue(!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 me=()=>{x(!0),T(e=>e+1)},he=(0,o.useMemo)(()=>rg(v).filter(e=>!ig(e.hideGroup)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>(e.fields??[]).filter(e=>e?.field&&e.show!==0&&!ig(e.hidden)).slice().sort((e,t)=>Number(e.order??0)-Number(t.order??0))),[v]),ge=(0,o.useMemo)(()=>is(he,p),[he,p]),_e=(0,o.useMemo)(()=>he.some(e=>e.field===eg),[he]),ve=(0,o.useMemo)(()=>he.find(e=>eh(e))??null,[he]),ye=!!v?.booleanSearchEnabled&&!!v?.booleanSearchEndpoint&&!!ve,be=ye&&E===`boolean`,xe=(0,o.useMemo)(()=>ve?[ve]:[],[ve]);(0,o.useEffect)(()=>{he.filter(e=>e.booleanCapable&&!Gm(e.booleanApiKey)).forEach(e=>{console.warn(`[SearchBuilderV1] "${e.field}" is marked booleanCapable but its booleanApiKey (${JSON.stringify(e.booleanApiKey)}) is not one of ${Um.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.`)})},[he]);let Se=(0,o.useMemo)(()=>he.filter(e=>!(be&&ig(e.hideInBooleanMode))),[he,be]),Ce=(0,o.useCallback)(e=>he.find(t=>$m(t)&&th(t)&&rh(t)===rh(e)),[he]),we=e=>{let t={};he.filter(eh).forEach(n=>{let r=g.getFieldValue(n.field);if(e){t[n.field]=hh(r);return}let{model:i,exclude:a,converted:o}=gh(r,{starsEnabled:nh(n)});if(o){if(a?.length){let e=Ce(n);if(!e)return;t[e.field]={...Qm(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`)},U=(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=ns(t?.[eg]),u=_e?r?rs(r,O):l.includes(`internal`)?`internal`:rs(t?.[eg],O):``,d=ge[ts(u)]||e;z(t),L({current:c,pageSize:a}),j({}),F(e=>({...e,loading:!0,searched:!0}));try{let e;if(be){let n=Wh(t,Se,{booleanMode:!0,defaultSourceType:_e?v?.booleanDefaultSourceType||u||`internal`:``,module:d});e=await Jh(v.booleanSearchEndpoint,n,{limit:a,offset:(c-1)*a})}else e=await n.xn(d,{...Kh(t,Se),...u?{[eg]:(l.length?l:[u]).join(`,`)}:{}},{limit:a,offset:(c-1)*a},{scope:u,filters:qh(t,Se)});let r=Number(e.counts?.[u]),i=Number.isFinite(r)?r:e.total;if(k(u),pe(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}),!_e){N(e.tabs??[]);return}N(t=>us({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`?xe.find(e=>t.toLowerCase().includes(String(e.field).toLowerCase())):null;n?j({[n.field]:t}):s.message.error(t||e?.message||`Search failed`),F({...ng,searched:!0})}},[Se,xe,_e,be,e,I.pageSize,v,O,pe,ge]),W=String(v?.searchEndpoint??``).trim(),Te=(0,o.useCallback)(e=>{let t=qh(e,Se);return{...Wh(e,Se,{booleanMode:be,defaultSourceType:_e?v?.booleanDefaultSourceType||`internal`:``}),...t.length?{fieldFilters:t}:{}}},[Se,_e,be,v]),Ee=(0,o.useMemo)(()=>!W||!ne?null:Qh({endpoint:W,criteria:ne,searchMode:be?`boolean`:`traditional`,sources:oe??[],sourceModules:ge}),[W,ne,be,oe,ge]),De=(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`)}}},[_]),Oe=(0,o.useCallback)((e,t)=>{let n=pi(e,t);return pe(Number(n.total)>0||(n.rows?.length??0)>0),{...n,actions:(n.actions??[]).map(De)}},[De,pe]),ke=()=>{g.validateFields().then(e=>{if(fe.current=!0,W){se(ns(e?.[eg])),re(Te(e)),ae(e=>e+1);return}U(e,void 0,{current:1})}).catch(()=>{fe.current=!1,ue(!1),s.message.error(`Fix the highlighted field before searching.`)})},Ae=()=>{fe.current=!1,ue(!1),g.resetFields(),te({}),j({}),F(ng),N([]),k(`internal`),re(null),se(null)},je=(0,o.useCallback)(async(e,t)=>{let n=gs(e,t);V(e=>({...e,[n]:{...e[n],loading:!0}}));try{await _s(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)}},[]),Me=(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=ms({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(!hs(e,n,O))return null;let r=gs(e,n),i=B[r]??{};return(0,l.jsx)(s.Button,{type:`primary`,size:`small`,loading:i.loading,disabled:!r||i.completed,onClick:()=>je(e,n),children:i.completed?e.completedLabel:e.buttonLabel})}}))]},[je,P.fields,P.rows,O,B]),Ne=(0,o.useMemo)(()=>m??(f?{jobId:f}:null),[m,f]),G=(0,o.useMemo)(()=>{if(!Ne)return P.actions;let e=t=>({...t,popupState:{...Ne,...t.popupState},...t.children?{children:t.children.map(e)}:{}});return(P.actions??[]).map(e)},[P.actions,Ne]),Pe=!!v?.actionButtonEnabled,Fe=Pe?n.N(v?.actionButtonUrl,void 0,Ne??{}):null,Ie=()=>{if(Fe){if(v?.actionButtonTarget===`_blank`){window.open(Fe,`_blank`,`noopener`);return}_(Fe)}},Le={booleanMode:be},Re=xe.some(e=>lg(e,ee[e.field],{...Le,isPrimary:!0})),ze=Se.filter(e=>ig(e.req)&&!lg(e,ee[e.field],{...Le,isPrimary:eh(e)})),Be=ze.length>0||(be?!Re:!ug(ee,Se,Le)),K=ze.length?`Enter ${ze.map(e=>e.label??e.field).join(`, `)} to search.`:be&&!Re&&xe.length?`Enter a query in at least one of: ${xe.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)($h,{strong:!0,children:`Failed to load the search form`}),(0,l.jsx)($h,{type:`secondary`,children:S}),(0,l.jsx)(s.Button,{icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:me,children:`Retry`})]})})}):he.length?(0,l.jsxs)(`div`,{className:`sbv1-page`,children:[(0,l.jsx)(s.Card,{className:`sbv1-card${le?` sbv1-card-collapsed`:``}`,title:(0,l.jsx)($h,{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:Ae,children:`Reset filters`}),(0,l.jsx)(s.Tooltip,{title:K||void 0,children:(0,l.jsx)(s.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,l.jsx)(c.SearchOutlined,{}),disabled:Be,loading:P.loading,onClick:ke,children:`Search`})}),Pe&&(0,l.jsx)(s.Tooltip,{title:Fe?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:!Fe,onClick:Ie,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:le?`Show filters`:`Hide filters`,children:(0,l.jsx)(s.Button,{type:`text`,size:`small`,className:`sbv1-collapse-btn`,icon:le?(0,l.jsx)(c.DownOutlined,{}):(0,l.jsx)(c.UpOutlined,{}),"aria-label":le?`Show filters`:`Hide filters`,"aria-expanded":!le,"aria-controls":de,onClick:()=>ue(e=>!e)})})]}),children:(0,l.jsx)(s.Form,{id:de,className:`sbv1-form`,form:g,layout:`vertical`,colon:!1,onValuesChange:(e,t)=>te(t),children:(0,l.jsx)(s.Row,{gutter:[24,0],children:Se.map(t=>{let n=be&&xe.includes(t),r=$m(t),i=e=>r?Qm(e).expression:e,a=[];return ig(t.req)&&a.push({required:!0,message:`${t.label??t.field} is required`}),n&&(a.push({validator:(e,t)=>{let{errors:n}=Km(i(t));return n.length?Promise.reject(Error(n[0])):Promise.resolve()}}),a.push({warningOnly:!0,validator:(e,t)=>{let{warnings:n}=Km(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:Oh(t)?null:t.label??t.field,rules:a.length?a:void 0,initialValue:og(t),children:n&&!r?(0,l.jsx)(Rh,{field:t,serverError:A[t.field]}):(0,l.jsx)(Ih,{field:t,moduleName:e,extraProps:r?{booleanEnabled:ye,booleanMode:be,onBooleanModeChange:we,serverError:A[t.field]}:void 0})})},t.field)})})})}),W&&Ee&&(0,l.jsx)(qo,{moduleName:e,breadcrumbItems:[],fetchData:Ee,responseMapper:Oe,queryParams:ne,rowKey:cg,showSearch:!1,activeView:H,onViewChange:ce,showViewToggle:!0,autoCardForExternalRows:!1},ie),!W&&P.searched&&(0,l.jsx)(qo,{moduleName:e,breadcrumbItems:[],dataSource:P.rows,fields:Me,total:P.total,loading:P.loading,current:I.current,pageSize:I.pageSize,showSearch:!1,tabs:M,selectedSource:O,onTabChange:e=>U(R??{},e,{current:1}),onPageChange:(e,t)=>U(R??{},O,{current:e,pageSize:t}),onPageSizeChange:(e,t)=>U(R??{},O,{current:1,pageSize:t}),actions:G,actionRules:P.actionRules})]}):(0,l.jsx)(`div`,{className:`sbv1-page`,children:(0,l.jsx)(s.Card,{className:`sbv1-card`,children:(0,l.jsxs)($h,{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)($h,{type:`danger`,children:`moduleName is required.`})})})}dg.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 fg={active:`green`,approved:`green`,hired:`green`,submitted:`gold`,resubmitted:`purple`,pending:`gold`,draft:`default`,rejected:`red`,inactive:`default`,completed:`blue`,not_submitted:`default`};function pg({status:e}){let t=String(e??`unknown`),n=fg[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 mg(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 hg({tabs:e=[],activeKey:t,onChange:n,className:r=``}){let i=e.map(mg).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:gg}=s.Input;function _g({value:e=``,onChange:t,placeholder:n="e.g. ${{clientRate}} /{{rateType}}",disabled:r=!1,textareaRef:i}){return(0,l.jsx)(gg,{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 vg=[`Weekly`,`Bi-Weekly`,`Monthly`].map(e=>({value:e,label:e})),yg=[7,15,30,45,60,90].map(e=>({value:`NET_${e}`,label:`NET ${e}`}));function bg({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=yg,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:vg,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 xg={regularDayHours:8,standardMaxHours:8,overtimeMaxRegular:16,overtimeMaxWeekOff:24,step:.5,decimals:2,epsilon:.001},Sg={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 Cg(e){let t=Number(e);return Number.isFinite(t)?t:0}function wg(e,t=xg.decimals){let n=10**t;return Math.round(Cg(e)*n)/n}function Tg(e,t,n,r=xg.decimals){return wg(Math.min(Math.max(Cg(e),t),n),r)}function Eg(e){return e?.isHoliday?`holiday`:e?.isWeekOff?`weekOff`:`working`}function Dg(e,t,n,r,i=!0){e.push({field:t,code:n,message:Sg[n],blocking:i})}function Og(e,t,n=xg){let r=Eg(e),i=wg(t?.ST,n.decimals),a=wg(t?.OT,n.decimals),o=wg(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)&&Dg(s,`ST`,`WEEKOFF_NA`,n,!1),a<0?Dg(s,`OT`,`OT_NEGATIVE`,n):a>l+n.epsilon&&Dg(s,`OT`,`OT_MAX_WEEKOFF`,n);else{l=n.overtimeMaxRegular;let e=Tg(n.regularDayHours-i,0,n.regularDayHours,n.decimals),t=!1;i<0?(Dg(s,`ST`,`ST_NEGATIVE`,n),t=!0):i>n.standardMaxHours+n.epsilon&&(Dg(s,`ST`,`ST_MAX`,n),t=!0),t||(o<0?Dg(s,`Leave`,`LEAVE_NEGATIVE`,n):o>n.regularDayHours+n.epsilon?Dg(s,`Leave`,`LEAVE_MAX`,n):o>e+n.epsilon&&(e<=n.epsilon?Dg(s,`ST`,`DAY_TOTAL`,n):Dg(s,`Leave`,`LEAVE_REMAINING`,n)));let r=Math.abs(i-n.standardMaxHours)<=n.epsilon;a<0?Dg(s,`OT`,`OT_NEGATIVE`,n):a>n.epsilon&&!r?Dg(s,`OT`,`OT_REQUIRES_FULL_STANDARD`,n):a>l+n.epsilon&&Dg(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=wg(i+o,n.decimals),d=r===`working`?Math.max(0,wg(n.regularDayHours-u,n.decimals)):0,f=r===`working`?Math.max(0,wg(c.Leave.max-o,n.decimals)):0,p=wg(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 kg(e,t,n=[],r=xg){let i=wg(t?.ST,r.decimals),a=wg(t?.Leave,r.decimals),o=wg(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=Tg(r.regularDayHours-i,0,r.regularDayHours,r.decimals);a!==t&&(e.Leave=t)}else if(n.includes(`Leave`)){if(t(a)){let t=Tg(r.regularDayHours-a,0,r.regularDayHours,r.decimals);i!==t&&(e.ST=t)}}else{let t=Tg(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 Ag(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:jg}=s.Typography,Mg={draft:`default`,logged:`blue`,submitted:`processing`,approved:`success`,rejected:`error`,resubmitted:`purple`,reopened:`warning`,save_draft:`default`,pending:`warning`,not_submitted:`default`};function Ng({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:Mg[e]??`default`,children:e})}function Pg({configKey:e=`timesheet`,month:t,year:n}){let r=Re(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 Fg={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 Ig(e,t=0){let n=Number(e);return Number.isFinite(n)?n:t}function Lg(e){let t=Ig(e);return t===0?`0h`:`${t.toFixed(1).replace(/\.0$/,``)}h`}var Rg={ST:`#D0E6FF`,OT:`#AAFEBCA6`,leave:`#FFECBA`};function zg(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 Bg(e={},{angle:t=`135deg`}={}){let n=[[`ST`,Ig(e?.workingHours?.ST)],[`OT`,Ig(e?.workingHours?.OT)],[`leave`,Ig(e?.leave?.CL)+Ig(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=zg(a/r,t)*100;a+=o;let l=s===n.length-1?100:zg(a/r,t)*100;i.push(`${Rg[e]} ${c.toFixed(2)}% ${l.toFixed(2)}%`)}),`linear-gradient(${t}, ${i.join(`, `)})`}function Vg(e={},{isUnloggedHighlight:t=!1,selected:n=!1,selectable:r=!1,reviewMode:i=!1}={}){let a=Ig(e?.workingHours?.ST),o=Ig(e?.workingHours?.OT),s=Ig(e?.leave?.CL)+Ig(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?Fg[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 Hg({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 _=Ig(e?.workingHours?.ST),v=Ig(e?.workingHours?.OT),y=Ig(e?.leave?.CL)+Ig(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`?Bg(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:Vg(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)(jg,{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:Lg(_)}),(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:Lg(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:Lg(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)(jg,{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 Ug=e=>e==null?``:`${e}`,Wg=e=>e===``||e===void 0?void 0:Number(e);function Gg({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)(()=>({...xg,...d?{step:d}:null,...f}),[d,f]);(0,o.useEffect)(()=>{if(!e)return;let n=Eg(t),r={ST:Ig(t?.workingHours?.ST),OT:Ig(t?.workingHours?.OT),Leave:Ig(t?.leave?.CL)+Ig(t?.leave?.SL)},i=kg(n,r,[],_);p.setFieldsValue({...r,...i})},[t,p,e,_]);let v=e=>({getFieldValue:n})=>({validator(){let{errorsByField:r}=Og(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=kg(Eg(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=Ig(e.ST),i=Ig(e.OT),o=Ig(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)(()=>Og(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)(jg,{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:Ug,parser:Wg,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:Ug,parser:Wg,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:Ug,parser:Wg,addonAfter:(0,l.jsx)(`span`,{style:{color:`#b45309`,fontWeight:700},children:`L`})})})]})]})]})}function Kg({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)(jg,{strong:!0,children:e===0?`No days selected`:`Log ${n}h standard on ${e} day${e===1?``:`s`}`}),t>0&&(0,l.jsxs)(jg,{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 qg({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 Jg({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 Yg={".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 Xg({fileName:e}){let[t,n]=Yg[Jc(e)]??[c.FileOutlined,`default`];return(0,l.jsx)(t,{className:`timesheet-proof__type-icon timesheet-proof__type-icon--${n}`})}function Zg({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?Yc(e.size):``,p=Jc(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)(Xg,{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)(jg,{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)(jg,{type:`secondary`,className:`timesheet-proof__hint`,style:{fontSize:11},children:`Supports: .pdf, .doc, .docx, .png, .jpg — max 10 MB`})]})}function Qg({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 $g({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)(jg,{strong:!0,children:u}),(0,l.jsxs)(jg,{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)(jg,{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)(qg,{open:b,loading:S,onSave:M,onCancel:()=>x(!1)})]})}var e_=e=>Number.isFinite(Number(e))?Number(e):0;function t_(e,t,{isToday:n}={}){let r=Number(e.slice(-2)),i=e_(t?.workingHours?.ST),a=e_(t?.workingHours?.OT),o=e_(t?.leave?.CL)+e_(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`?Bg(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 n_=[{label:`Standard`,color:`#3b82f6`},{label:`Overtime`,color:`#22c55e`},{label:`Leave`,color:`#f59e0b`},{label:`Holiday`,color:`#8b5cf6`},{label:`Rejected`,color:`#ef4444`}];function r_({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)(()=>sf(e),[e]),g=(0,o.useMemo)(()=>cf(e,n),[e,n]),_=(0,o.useMemo)(()=>df(e,n),[e,n]),v=h.totalHours||e_(a),y=v*e_(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:Ud(v),icon:(0,l.jsx)(c.ClockCircleOutlined,{}),tone:`brand`,sub:`${h.loggedDays} logged days`},{key:`st`,label:`Standard`,value:Ud(h.stHours||t.totalSTHours),icon:(0,l.jsx)(c.FieldTimeOutlined,{}),tone:`neutral`},{key:`ot`,label:`Overtime`,value:Ud(h.otHours||t.totalOTHours),icon:(0,l.jsx)(c.ThunderboltOutlined,{}),tone:`warning`},{key:`leave`,label:`Leave`,value:Ud(h.leaveHours||t.leaveHours),icon:(0,l.jsx)(c.RestOutlined,{}),tone:`neutral`,sub:`${h.leaveDays} days`},{key:`avg`,label:`Avg / Logged Day`,value:Ud(h.avgHoursPerLoggedDay),icon:(0,l.jsx)(c.CalendarOutlined,{}),tone:`info`},{key:`amount`,label:i,value:Hd(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:Hd(e)})},{title:`Status`,dataIndex:`status`,align:`center`,width:100,render:e=>(0,l.jsx)(bf,{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)(i_,{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:Hd(e)})}];return(0,l.jsxs)(`div`,{className:`fin-analysis`,children:[(0,l.jsx)(xf,{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)(wf,{className:`fin-equation-card`,children:(0,l.jsx)(Df,{terms:[{value:Ud(v),label:`Approved Hours`},{op:`×`},{value:Wd(n),label:r},{op:`=`},{value:Hd(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:n_,renderDayContent:t_,onPrevMonth:()=>{},onNextMonth:()=>{}}),(0,l.jsx)(wf,{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)(wf,{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:Hd(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 i_({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 a_=`submissionManager`,o_=`onboardingManager`,s_=`cfo`,c_=`onlyFinance`,l_=`submissionManagerReapprove`,u_=`onboardingManagerReapprove`;function d_(e,t={}){return e?String(e).replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])):``}var f_={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.`}}}},p_=[{key:`submitted`,label:`Recruiter Submitted`},{key:`manager`,label:`Manager Approved`},{key:`onboarding`,label:`Onboarding Confirmed`},{key:`cfo`,label:`CFO Review`}],m_={[a_]:{title:`Finance Review`,statusLabel:`Pending Your Approval`,trail:{steps:p_.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},[o_]:{title:`Onboarding Review`,statusLabel:`Pending Onboarding`,trail:{steps:p_.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:p_,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},[c_]:{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 h_(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}:{}}}}}m_[l_]={...h_(m_[a_],{title:`Finance Re-Review`,primaryLabel:`Send For Approval`,primaryApi:`submissionReapproveSend`}),sections:{...m_[a_].sections,referral:{show:`ifExists`,mode:`print`,typeChip:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`}},m_[u_]=h_(m_[o_],{title:`Onboarding Re-Review`,primaryLabel:`Re-send for CFO Approval`});var g_=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function __(e,t){if(!g_(t))return e===void 0?t:e;if(e===void 0)return t;if(!g_(e))return e;let n={...e};for(let[r,i]of Object.entries(t))n[r]=__(e[r],i);return n}var v_=new Map;function y_(e){let t=m_[e]??m_.cfo;return v_.has(t)||v_.set(t,__(t,f_)),v_.get(t)}function b_(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 x_(e){return String(e?.margin?.formula??``).includes(`referral`)}var S_=`W2`,C_=`C2C`,w_={rateUnit:`hr`,currency:`$`},T_=e=>{let t=Number(e);return Number.isFinite(t)?t:0},E_=e=>e===!0||e===`true`||e===1||e===`1`,D_=e=>e!=null&&e!==``,O_=(...e)=>e.find(D_),k_=e=>Math.round((T_(e)+2**-52)*100)/100;function A_(e){return Array.isArray(e)?e.length?e[e.length-1]:{}:e??{}}var j_=e=>String(e?.$oid??e?._id?.$oid??e?._id??e?.id??e??``);function M_(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 N_(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 P_(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 F_(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 I_(e){let t=String(e??``).trim().toUpperCase().replace(/[\s_-]/g,``);return t===`W2`||t.includes(`W2`)?`W2`:`C2C`}function L_(e,t){return k_(T_(e)*T_(t)/100)}function R_(e={},t={},n={}){let r={...w_,...n??{}},i=e.submission??e??{},a=e.job??{},o=e.client??{},s=e.engagement??{},c=I_(F_(i,`contractType`)??s.onboardingType??e.contractType),l=a.jobPayDetails??{},u=T_(l.clientBudgetStart??F_(i,`clientBudget`,`clientBudgetStart`)),d=T_(l.clientBudgetEnd??F_(i,`clientBudget`,`clientBudgetEnd`))||u,f=d||u,p=A_(o.vmsFeeHistory)??{},m=t.clientVmsFee??o.vmsFee??{},h=D_(p.vmsPercentage)?T_(p.vmsPercentage):D_(o.vmsPercentage)?T_(o.vmsPercentage):m.isApplicable===!1?0:T_(O_(m.value,m.percent,typeof m==`number`?m:void 0,F_(i,`clientVmsPercent`),F_(i,`vmsPercent`))),g=String(O_(p.vmsPercentageType,o.vmsPercentageType)??`recurring`).toLowerCase(),_=Array.isArray(i.proposedRateHistory)?i.proposedRateHistory.filter(Boolean):[],v=_.length?_[_.length-1]:i.proposedRateCurrent&&typeof i.proposedRateCurrent==`object`?i.proposedRateCurrent:A_(i.proposedRate),y=T_(v?.candidateProposedRate??v?.proposedRate??v?.rate??F_(i,`proposedRate`,`candidateProposedRate`)??e.proposedRateValue),b=O_(v?.candidateProposedRateCurrencySymbol,v?.candidateProposedRateCurrency,F_(i,`proposedRate`,`candidateProposedRateCurrencySymbol`),F_(i,`proposedRate`,`candidateProposedRateCurrency`),F_(i,`candidateBudget`,`candidateBudgetCurrencySymbol`),F_(i,`candidateBudget`,`candidateBudgetCurrency`),l.clientBudgetCurrencySymbol,l.clientBudgetCurrency,a.currency,a.currencySymbol,r.currency),x=cu(b,r.currency),S=O_(v?.candidateProposedRateUnit,v?.rateUnit,F_(i,`proposedRate`,`candidateProposedRateUnit`),F_(i,`candidateBudget`,`candidateBudgetUnit`),l.clientBudgetUnit,r.rateUnit),C=T_(F_(i,`candidateBudget`,`candidateBudgetStart`)??F_(i,`candidateBudget`,`candidateBudgetRate`)??F_(i,`candidateRate`,`candidateAcceptedRate`)),w=E_(F_(i,`submission_current_employer`,`isVmsRequired`)??F_(i,`submission_current_employer`,`isVMSRequired`)),T=T_(O_(F_(i,`submission_current_employer`,`vmsPercentage`),F_(i,`submission_current_employer`,`vmsCommission`),e.employer?.vmsPercentage,e.employer?.vmsCommission,s.vmsPercent)),E=T>0,D=w?T:0,O=String(F_(i,`submission_current_employer`,`vmsType`)??F_(i,`submission_current_employer`,`vmsCommissionType`)??`Recurring`),k=F_(i,`submission_current_employer`,`tax`);return{contractType:c,currency:x,currencyRaw:b,rateUnit:S,clientJobRate:f,clientJobRateFrom:u,clientJobRateTo:d,clientVmsPercent:h,clientVmsPercentageType:g,proposedRate:y,employerRate:C,employerVmsPercent:D,employerVmsPercentConfigured:T,employerVmsAvailable:E,employerVmsType:O,employerVmsRequired:w,locationTaxPercent:t.locationTaxPercent==null?k!=null&&k!==``?T_(k):z_(t.locationTaxRows,F_(i,`submission_current_employer`,`locationId`)??F_(i,`submission_current_employer`,`location`)??F_(i,`city`)??F_(i,`state`)??a.jobLocation):T_(t.locationTaxPercent)}}function z_(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 T_(r?.taxValue??r?.taxPercent)}function B_(e,t={}){let{contractType:n=`C2C`,currency:r=w_.currency,currencyRaw:i,rateUnit:a=w_.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=cu(r,w_.currency),b=t.proposedRate==null?T_(d):T_(t.proposedRate),x=!!t.includeReferral,S=x?T_(t.referralRate):0,C=(t.deductReferral==null?x:t.deductReferral)?S:0,w=L_(o,l),T=k_(o-w),E=L_(b,l),D=k_(b-E),O=n===`W2`,k=O?v:p,A=L_(f,k),j=k_(f-A),M=k_(D-j-C);return{contractType:n,currency:y,currencyRaw:i??y,rateUnit:a,rateUnitLabel:uu(a),rateUnitShort:fu(a),isW2:O,clientJobRate:k_(o),clientJobRateFrom:k_(s),clientJobRateTo:k_(c),clientVmsPercent:T_(l),clientVmsPercentageType:u,clientDiscount:w,netClientRate:T,proposedRate:k_(b),discountVms:E,netProposedRate:D,employerRate:k_(f),employerDeductionPercent:T_(k),employerDeduction:A,employerDeductionLabel:O?`Location Tax`:`Employer VMS`,employerVmsType:g,employerVmsRequired:!!_,employerVmsPercentConfigured:T_(m),employerVmsAvailable:!!h,netEmployerRate:j,includereferral:x,referralRate:k_(S),referralDeduction:k_(C),totalMargin:M,marginPositive:M>=0}}function V_(e,t,n={}){return B_(R_(e,t,n.defaults),n)}var H_={decimals:2,min:0};function U_(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 W_(e,t={}){let{decimals:n=H_.decimals,min:r,max:i}={...H_,...t};if(e==null||e===``)return!0;let a=String(e).trim();if(!/^-?\d*(\.\d*)?$/.test(a)||U_(a)>T_(n))return!1;let o=Number(a);return!(!Number.isFinite(o)||r!=null&&o<T_(r)||i!=null&&o>T_(i))}var G_=new Set([`Backspace`,`Delete`,`Tab`,`Enter`,`Escape`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`PageUp`,`PageDown`]);function K_(e={},t,n=``,r=null,i=null){if(G_.has(t)||String(t??``).length!==1)return!0;let{decimals:a=H_.decimals,min:o}={...H_,...e},s=String(n??``),c=r??s.length,l=i??c,u=s.slice(0,c)+t+s.slice(l),d=o==null||T_(o)<0;return t===`-`?d&&/^-?\d*(\.\d*)?$/.test(u):t===`.`?T_(a)>0&&/^-?\d*(\.\d*)?$/.test(u):!/^\d$/.test(t)||!/^-?\d*(\.\d*)?$/.test(u)?!1:U_(u)<=T_(a)}function q_(e,t={}){let{decimals:n=H_.decimals,min:r,max:i}={...H_,...t},a=T_(e),o=10**T_(n);return a=Math.round((a+2**-52)*o)/o,r!=null&&(a=Math.max(a,T_(r))),i!=null&&(a=Math.min(a,T_(i))),a}function J_(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 Y_(e,t=w_.currency){let n=pu(e);return hu(Number.isNaN(n)?0:n,t,{decimals:2})}var{TextArea:X_}=s.Input,Z_=(...e)=>e.find(e=>e!=null&&e!==``)??`-`;function Q_(e){return String(e??``).toLowerCase().replace(/\s+/g,``)===`onetime`?`One Time`:`Recurring`}function $_(e){let t=e?.$date??e;if(!t)return`-`;let r=(0,u.default)(t);return r.isValid()?r.format(n.Bn().dateFormat):`-`}function ev(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}var tv={date:$_};function nv(e,t){let n=(Array.isArray(e?.source)?e.source:[e?.source].filter(Boolean)).map(e=>ev(t,e)).find(e=>e!=null&&e!==``),r=tv[e?.format];return r?r(n):n==null||n===``?`-`:n}function rv(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??{};K_(e,t.key,r.value??``,r.selectionStart,r.selectionEnd)||(t.preventDefault(),n(!0))},onChange:r=>{n(!W_(r,e)),t(q_(r??0,e))}}}function iv({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??`-`)})]})}iv.propTypes={label:f.default.string,value:f.default.node};function av({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})]})}av.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 ov({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})]})}ov.propTypes={label:f.default.string,value:f.default.node,hero:f.default.bool,tone:f.default.string};function sv({type:e,record:t,lookups:r,identity:i,referralOptions:a,onReferralChange:u,onAddReferral:d,onValuesChange:f,currentUserId:p,actions:m,onClose:h,variant:g}){let _=y_(e),v=(0,o.useMemo)(()=>({rateUnit:_.rateUnit,currency:_.currency}),[_]),y=(0,o.useMemo)(()=>R_(t,r,v),[t,r,v]),b=x_(_),[x,S]=(0,o.useState)(y.proposedRate),[C,w]=(0,o.useState)(t?.engagement?.financeApproval?.referralId??t?.referral?._id??null),[T,E]=(0,o.useState)(t?.engagement?.financeApproval?.referralRate??t?.referral?.referalRate??0),[D,O]=(0,o.useState)(t?.referral?.isNewReferral?0:t?.referral?.referalRate??t?.referral?.referralRate??t?.engagement?.financeApproval?.referralRate??0),[k,A]=(0,o.useState)(t?.engagement?.financeApproval?.referralType??t?.referral?.referralType??t?.referral?.referalType??`Recurring`),[j,M]=(0,o.useState)(!1),[N,P]=(0,o.useState)(!1),[F,I]=(0,o.useState)(``),[L,R]=(0,o.useState)(!1),[z,B]=(0,o.useState)(``),[V,ee]=(0,o.useState)(!1),[te,ne]=(0,o.useState)(``),re=!!_.sections.rateBreakdown?.editToggle,[ie,ae]=(0,o.useState)(!1),oe=!re||ie,[se,H]=(0,o.useState)(!1),[ce,le]=(0,o.useState)(!1),[ue,de]=(0,o.useState)({open:!1,title:``,rows:[]}),[fe,pe]=(0,o.useState)({}),me=_.sections.referral??{},he=t?.engagement?.financeApproval?.referralEnabled??t?.referralEnabled??(Number(T)>0||!!C),[ge,_e]=(0,o.useState)(!!he),ve=me.toggle===!0,ye=Number(T)>0,be=me.show===!0?!ve||ge:me.show===`ifEnabled`?ge:me.show===`ifExists`&&ye,xe=String(k??``).trim().toLowerCase().replace(/[\s_-]+/g,``).startsWith(`onetime`),Se=b&&be,Ce=Se&&!xe,we=_.rejection?.show?b_(_,t):``,U=(0,o.useMemo)(()=>B_(y,{proposedRate:_.sections.rateBreakdown?.proposed?.editable?x:void 0,includeReferral:Se,deductReferral:Ce,referralRate:T}),[y,x,T,Se,Ce,_]),W=U.currency,Te=_.readOnly,Ee=Number(U.proposedRate)>0,De=Number(_.margin?.minMarginPercent??20),Oe=Number(U.netProposedRate)>0?Number(U.totalMargin)/Number(U.netProposedRate)*100:0,ke=U.marginPositive?Oe<De?`fa-warn`:`fa-good`:`fa-bad`,Ae=U.isW2?`Candidate`:`Employer`,je=U.rateUnitShort?`/${U.rateUnitShort}`:``,Me={record:t,identity:i,inputs:y,computed:U},Ne=(_.header?.crumbFields??[]).map(e=>nv(e,Me)).filter(e=>e!==`-`&&e!==``&&e!=null).join(_.header?.crumbSeparator??` · `),G=_.sections.rateBreakdown?.proposed?.policy??H_,Pe=_.sections.referral?.policy??G,Fe=(0,o.useMemo)(()=>{let e=t?.submission?.proposedRateHistory,n=t?.submission?.proposedRate,r=Array.isArray(e)&&e.length?e:n;return(Array.isArray(r)?r:r&&typeof r==`object`?[r]:[]).map((e,t)=>({key:e?._id?.$oid??e?._id??`proposed-${t}`,rate:Number(e?.candidateProposedRate??e?.proposedRate??e?.rate),currency:e?.candidateProposedRateCurrencySymbol??e?.currencySymbol??W,unit:e?.candidateProposedRateUnit??e?.rateUnit??U.rateUnitShort??``,at:e?.updatedAt??e?.timestamp??e?.createdAt??e?.candidateProposedRateUpdateDT,by:e?.updatedByName??e?.updatedBy??e?.createdByName??e?.createdBy})).filter(e=>Number.isFinite(e.rate)).sort((e,t)=>{let n=new Date(e.at??0).getTime(),r=new Date(t.at??0).getTime();return(Number.isNaN(r)?0:r)-(Number.isNaN(n)?0:n)})},[t?.submission?.proposedRateHistory,t?.submission?.proposedRate,W,U.rateUnitShort]),Ie=(0,o.useMemo)(()=>{let e=t?.submission?.referralRateHistory,n=t?.submission?.referralDetails??t?.submission?.referalDetails;return(Array.isArray(e)&&e.length?e:Array.isArray(n)?n:n&&typeof n==`object`?[n]:[]).reduce((e,t)=>{let n={key:t?._id?.$oid??t?._id??`referral-${e.length}`,rate:Number(t?.referralRate??t?.referalRate??t?.rate),referralId:String(t?.referralId?.$oid??t?.referralId??t?.referalId?.$oid??t?.referalId??``),referralType:String(t?.referralType??t?.referalType??``),currency:t?.referralCurrencySymbol??t?.currencySymbol??W,unit:t?.referralUnit??t?.referalUnit??U.rateUnitShort??``,at:t?.updatedAt??t?.timestamp??t?.createdAt,by:t?.updatedByName??t?.updatedBy??t?.createdByName??t?.createdBy};if(!Number.isFinite(n.rate))return e;let r=e.at(-1);return r&&r.rate===n.rate&&r.referralId===n.referralId&&r.referralType===n.referralType||e.push(n),e},[]).sort((e,t)=>{let n=new Date(e.at??0).getTime(),r=new Date(t.at??0).getTime();return(Number.isNaN(r)?0:r)-(Number.isNaN(n)?0:n)})},[t?.submission?.referralRateHistory,t?.submission?.referralDetails,t?.submission?.referalDetails,W,U.rateUnitShort]);(0,o.useEffect)(()=>{let e=[...Fe,...Ie].map(e=>e?.by).filter(e=>e!=null&&e!==``).map(e=>String(e).trim()).filter(e=>/^\d+$/.test(e)||/^[a-f0-9]{24}$/i.test(e)).filter((e,t,n)=>n.indexOf(e)===t).filter(e=>!fe[e]);if(!e.length)return;let t=!1;return Promise.all(e.map(async e=>[e,await n.ct(e)])).then(e=>{if(t)return;let n=Object.fromEntries(e.filter(([,e])=>String(e??``).trim()));Object.keys(n).length&&pe(e=>({...e,...n}))}).catch(()=>null),()=>{t=!0}},[Fe,Ie,fe]);let Le=(e,t)=>{de({open:!0,title:e,rows:t})};(0,o.useEffect)(()=>{f?.({proposedRate:Number(x)||0,referralId:C==null?``:String(C?.$oid??C),referralRate:Number(T)||0,referralType:String(k??``),referralEnabled:!!ge})},[f,x,C,T,k,ge]);let Re=_.labels?.employerVms??{},ze=U.employerVmsRequired&&U.employerVmsAvailable,Be=!!_.sections.rateBreakdown?.proposed?.editable,K=Number(U.clientJobRate)||0,q=Be&&K>0&&Number(x)>K,Ve=_.sections.rateBreakdown?.proposed?.overClient??{},J=_.sections.rateBreakdown?.proposed?.overClientPolicy??`warn`,He=q&&J===`block`,Ue=q&&J===`warn`,We=q?Number(x)-K:0,Ge=K>0?We/K*100:0,Ke={proposed:`${Y_(Number(x),W)}${je}`,client:`${Y_(K,W)}${je}`,delta:`${Y_(We,W)}${je}`,pct:`${Ge.toFixed(+(Ge<10))}%`,unit:U.rateUnitShort??``},Y=e=>d_(Ve[e],Ke),qe=_.actions?.primary,X=!!qe?.requireProposedRate&&!(Number(U.proposedRate)>0),Je=X?`Enter the Proposed Rate first — it drives the margin and the rate sent for approval.`:He?Y(`blockMessage`):``,Ye=e=>{w(e),le(!1);let t=(a??[]).find(t=>t.value===e);if(!t?.isNewReferral&&t?.lastRate!=null&&t.lastRate!==``){let e=Number(t.lastRate)||0;E(e),O(e)}else O(0);t?.type&&A(t.type),u?.(e,t)},Xe=e=>{let t=e.target.checked;_e(t),le(t)},Ze=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:()=>{le(!1),d()},children:`Add`})})]}),Qe=async(e,{skipOverClientConfirm:t=!1}={})=>{if(!e)return;if(e===_.actions.primary&&Je){s.message.error(Je);return}if(e===_.actions.primary&&Ue&&!t){H(!0);return}if(e.requireReason&&!F.trim()){R(!0);return}if(e.requireCategory&&!z){ee(!0);return}let n=m?.[e.api];if(!n){s.message.error(`No handler wired for "${e.api}"`);return}ne(e.key);try{await n({computed:U,proposedRate:U.proposedRate,referral:be?{referralId:C,referralRate:U.referralRate,referralType:k,referralEnabled:!0}:{referralEnabled:!1,referralRate:0},referralEnabled:ge,reason:F.trim(),category:z,rateHistory:_.persist?.rateHistory?J_(U,p):void 0})}catch(e){s.message.error(e?.message??`Action failed`)}finally{ne(``)}},$e=_.actions.primary,et=_.actions.reject;return(0,l.jsxs)(`div`,{className:`fa-panel fa-variant-${g}`,children:[_.header?.show!==!1&&(0,l.jsx)(`div`,{className:`fa-topbar`,children:(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`div`,{className:`fa-crumb`,children:Ne}),(0,l.jsxs)(`div`,{className:`fa-title-row`,children:[(0,l.jsxs)(`h2`,{className:`fa-title`,children:[_.title,` — `,Z_(i?.name,t?.submission?.candidateFullName)]}),(0,l.jsxs)(`span`,{className:`fa-status-pill`,children:[(0,l.jsx)(c.ClockCircleOutlined,{}),` `,_.statusLabel]})]})]})}),_.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:_.rejection.title}),(0,l.jsx)(`div`,{className:`fa-rejection-reason${we?``:` fa-rejection-empty`}`,children:we||`No reason was provided.`})]})]}),_.trail?.show&&(0,l.jsx)(`div`,{className:`fa-trail`,children:_.trail.steps.map((e,t)=>(0,l.jsxs)(`span`,{className:`fa-trail-part`,children:[(0,l.jsxs)(`span`,{className:`fa-trail-step${e.key===_.trail.current?` fa-current`:``}`,children:[e.key===_.trail.current?(0,l.jsx)(c.ClockCircleOutlined,{}):(0,l.jsx)(c.CheckOutlined,{}),e.label]}),t<_.trail.steps.length-1&&(0,l.jsx)(`span`,{className:`fa-trail-sep`,children:`→`})]},e.key))}),_.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:_.sections.jobClient.title})}),(0,l.jsx)(`div`,{className:`fa-card-body`,children:(0,l.jsx)(`div`,{className:`fa-info-grid`,children:(_.sections.jobClient.items??[]).map(e=>(0,l.jsx)(iv,{label:e.label,value:nv(e,Me)},e.key))})})]}),_.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:[Y_(U.clientJobRate,W),je]})]}),(0,l.jsxs)(`span`,{className:`fa-strip-op fa-num`,children:[`− `,U.clientVmsPercent,`% VMS`,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Q_(U.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:[Y_(U.netClientRate,W),je]})]}),_.sections.clientJobRate.note&&(0,l.jsxs)(`div`,{className:`fa-strip-note`,children:[`For context only — the client-side rate doesn't feed into the `,_.margin.label,` below.`]})]})})]}),_.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`}),_.sections.rateBreakdown.finalBadge&&(0,l.jsxs)(`span`,{className:`fa-final-badge`,children:[(0,l.jsx)(c.LockOutlined,{}),` Final`]}),re&&!Te&&!ie&&(0,l.jsx)(n.ut,{className:`fa-rate-edit-btn`,size:`small`,onClick:()=>ae(!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`}),Ae,` Rate`]}),(0,l.jsxs)(`div`,{className:`fa-rate-rows`,children:[(0,l.jsx)(av,{label:`${Ae} Rate`,sub:`as submitted by recruiter`,value:(0,l.jsxs)(l.Fragment,{children:[Y_(U.employerRate,W),` `,(0,l.jsx)(`span`,{className:`fa-unit`,children:je})]})}),U.isW2&&(0,l.jsx)(av,{label:`Employer Location`,sub:`used to determine location tax`,children:(0,l.jsx)(`div`,{className:`fa-rate-val`,children:Z_(i?.employerLocation,t?.submission?.city,t?.job?.jobLocation)})}),!U.isW2&&!ze?(0,l.jsx)(av,{label:(0,l.jsx)(`span`,{className:`fa-locked-label`,children:Re.required}),sub:U.employerVmsAvailable?Re.notRequiredSub:Re.unavailableSub,value:(0,l.jsx)(`span`,{className:`fa-vms-none`,children:U.employerVmsAvailable?Re.notRequired:Re.unavailable})}):(0,l.jsx)(av,{label:U.isW2?U.employerDeductionLabel:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[U.employerDeductionLabel,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Q_(U.employerVmsType)})]}),sub:`${U.employerDeductionPercent}% of employer rate`,value:`−${Y_(U.employerDeduction,W).replace(`−`,``)}`,deduction:!0}),(0,l.jsx)(av,{total:!0,label:`Net ${Ae} Rate`,value:(0,l.jsx)(`span`,{style:{color:`var(--color-purple, #7c3aed)`},children:Y_(U.netEmployerRate,W)})})]})]}),(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:[_.sections.rateBreakdown.proposed.editable&&oe?(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`}),_.persist?.proposedRateHistory&&(0,l.jsx)(`button`,{type:`button`,className:`fa-history-btn`,"aria-label":`View proposed rate history`,title:`View proposed rate history`,onClick:()=>Le(`Proposed Rate History`,Fe),children:(0,l.jsx)(c.ClockCircleOutlined,{})})]}),(0,l.jsx)(s.InputNumber,{className:`fa-rate-input`,...rv(G,{onValue:S,onError:M}),value:x,prefix:W,controls:!1,status:j||He?`error`:Ue?`warning`:``})]}),(0,l.jsx)(`div`,{className:`fa-editable-sub`,children:`rate we ask the client for`}),j&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,G.message]}),X&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! Enter the proposed rate to enable `,qe?.label??`approval`,`.`]}),He&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,Y(`blockMessage`)]}),_.rejection?.show&&(0,l.jsxs)(`div`,{className:`fa-last-rejected`,children:[`Last rejected at `,(0,l.jsxs)(`b`,{children:[Y_(y.proposedRate,W),je]})]})]}):(0,l.jsx)(av,{label:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[`Proposed Rate`,_.sections.rateBreakdown.proposed.editable&&_.persist?.proposedRateHistory&&(0,l.jsx)(`button`,{type:`button`,className:`fa-history-btn`,"aria-label":`View proposed rate history`,title:`View proposed rate history`,onClick:()=>Le(`Proposed Rate History`,Fe),children:(0,l.jsx)(c.ClockCircleOutlined,{})}),_.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:[Y_(U.proposedRate,W),` `,(0,l.jsx)(`span`,{className:`fa-unit`,children:je})]})}),(0,l.jsx)(av,{label:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[`Discount (VMS)`,(0,l.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Q_(U.clientVmsPercentageType)})]}),sub:`${U.clientVmsPercent}% of proposed rate`,value:`−${Y_(U.discountVms,W).replace(`−`,``)}`,deduction:!0}),(0,l.jsx)(av,{total:!0,label:`Net Proposed Rate`,value:(0,l.jsx)(`span`,{style:{color:`var(--color-brand, #0053a5)`},children:Y_(U.netProposedRate,W)})})]})]})]}),ve&&!Te&&oe&&(0,l.jsxs)(`div`,{className:`fa-referral-toggle`,children:[(0,l.jsx)(s.Checkbox,{checked:ge,onChange:Xe,children:(0,l.jsx)(`span`,{className:`fa-rt-title`,children:me.toggleLabel??`Add Referral`})}),(0,l.jsx)(`div`,{className:`fa-rt-hint`,children:me.toggleHint})]})]})]}),be&&(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`]}),me.mode===`print`&&me.typeChip&&(0,l.jsx)(`span`,{className:`fa-type-chip`,children:k})]}),(0,l.jsx)(`div`,{className:`fa-card-body`,children:me.mode===`select`&&oe?(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:ce,value:C??void 0,onChange:Ye,options:a??[],showSearch:!0,optionFilterProp:`label`,onDropdownVisibleChange:le,onOpenChange:le,popupRender:Ze,dropdownRender:Ze})]}),(0,l.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,l.jsxs)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-rate`,children:[`Referral Rate`,me.rateEditable&&_.persist?.rateHistory&&(0,l.jsx)(`button`,{type:`button`,className:`fa-history-btn`,"aria-label":`View referral rate history`,title:`View referral rate history`,onClick:()=>Le(`Referral Rate History`,Ie),children:(0,l.jsx)(c.ClockCircleOutlined,{})})]}),(0,l.jsx)(s.InputNumber,{id:`fa-referral-rate`,className:`fa-referral-rate-input`,...rv(Pe,{onValue:E,onError:P}),value:T,prefix:W,controls:!1,disabled:!C,status:N?`error`:``}),N&&(0,l.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,Pe.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:k,onChange:A,disabled:!C,options:[{value:`Recurring`,label:`Recurring — every pay cycle`},{value:`One-time`,label:`One-time payout`}]})]}),C&&(0,l.jsx)(`div`,{className:`fa-referral-note`,children:D?(0,l.jsxs)(l.Fragment,{children:[`Last referral rate paid to this company:`,` `,(0,l.jsx)(`b`,{children:Y_(D,W)})]}):(0,l.jsx)(`b`,{children:`New referral`})})]}):(0,l.jsxs)(`div`,{className:`fa-rate-rows fa-print-rows`,children:[(0,l.jsx)(av,{label:`Referral Name`,sub:`added during onboarding`,children:(0,l.jsx)(`div`,{className:`fa-rate-val`,children:Z_(t?.referral?.referalCompanyName,i?.referralName)})}),(0,l.jsx)(av,{label:(0,l.jsxs)(`span`,{className:`fa-locked-label`,children:[`Referral Rate`,me.rateEditable&&_.persist?.rateHistory&&(0,l.jsx)(`button`,{type:`button`,className:`fa-history-btn`,"aria-label":`View referral rate history`,title:`View referral rate history`,onClick:()=>Le(`Referral Rate History`,Ie),children:(0,l.jsx)(c.ClockCircleOutlined,{})})]}),sub:xe?`one-time payout — excluded from recurring margin`:`deducted every pay cycle`,value:xe?Y_(T,W):`−${Y_(T,W).replace(`−`,``)}${je?` ${je}`:``}`,deduction:!xe})]})})]}),Ee&&(0,l.jsxs)(`div`,{className:`fa-outcome ${ke}`,children:[(0,l.jsxs)(`div`,{className:`fa-outcome-label`,children:[(0,l.jsx)(`div`,{className:`fa-outcome-icon`,children:ke===`fa-good`?(0,l.jsx)(c.RiseOutlined,{}):(0,l.jsx)(c.WarningOutlined,{})}),(0,l.jsx)(`div`,{className:`fa-outcome-t`,children:_.margin.label})]}),(0,l.jsxs)(`div`,{className:`fa-outcome-stats`,children:[(0,l.jsx)(ov,{label:`Net Proposed Rate`,value:(0,l.jsxs)(l.Fragment,{children:[Y_(U.netProposedRate,W),(0,l.jsx)(`span`,{className:`fa-u`,children:je})]})}),(0,l.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,l.jsx)(ov,{label:`Net ${Ae} Rate`,value:(0,l.jsxs)(l.Fragment,{children:[Y_(U.netEmployerRate,W),(0,l.jsx)(`span`,{className:`fa-u`,children:je})]})}),Ce&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,l.jsx)(ov,{label:`Referral Rate`,tone:`referral`,value:(0,l.jsxs)(l.Fragment,{children:[Y_(U.referralRate,W),(0,l.jsx)(`span`,{className:`fa-u`,children:je})]})})]}),(0,l.jsx)(ov,{hero:!0,label:`Margin`,value:(0,l.jsxs)(l.Fragment,{children:[Y_(U.totalMargin,W),(0,l.jsx)(`span`,{className:`fa-u`,children:je})]})})]})]}),Ee&&(0,l.jsxs)(`div`,{className:`fa-margin-note ${ke}`,children:[(0,l.jsxs)(`span`,{className:`fa-margin-note-pct`,children:[Oe.toFixed(1),`%`]}),(0,l.jsx)(`span`,{className:`fa-margin-note-text`,children:ke===`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.`]}):ke===`fa-warn`?(0,l.jsxs)(l.Fragment,{children:[`Profit margin is `,(0,l.jsxs)(`b`,{children:[`below the `,De,`% target`]}),`. Consider a higher proposed rate before approving.`]}):(0,l.jsxs)(l.Fragment,{children:[`Healthy margin — at or above the `,De,`% target.`]})})]}),et?.requireReason&&(0,l.jsxs)(`div`,{className:`fa-reason`,children:[et.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:z||void 0,status:V?`error`:``,options:[{value:`submission`,label:`Submission`},{value:`onboarding`,label:`Onboarding`}],onChange:e=>{B(e),ee(!1)},style:{width:`100%`,marginBottom:16}}),V&&(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)(X_,{id:`fa-reason`,rows:3,maxLength:500,showCount:!0,value:F,status:L?`error`:``,placeholder:`Enter your comments here…`,onChange:e=>{I(e.target.value),e.target.value.trim()&&R(!1)}}),L&&(0,l.jsx)(`div`,{className:`fa-reason-error`,children:`! Comments are required when rejecting.`})]}),Ue&&(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:Y(`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:Ke.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:Ke.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:[Ke.delta,` `,(0,l.jsxs)(`small`,{children:[`(`,Ke.pct,`)`]})]})]})]}),Y(`body`)&&(0,l.jsx)(`p`,{className:`fa-rate-warning-body`,children:Y(`body`)}),(0,l.jsxs)(`p`,{className:`fa-rate-warning-margin`,children:[`Resulting margin:`,` `,(0,l.jsxs)(`b`,{className:ke,children:[Y_(U.totalMargin,W),je,Number(U.netProposedRate)>0&&(0,l.jsxs)(l.Fragment,{children:[` (`,Oe.toFixed(1),`%)`]})]})]})]}),(0,l.jsx)(s.Modal,{title:ue.title,open:ue.open,footer:null,onCancel:()=>de(e=>({...e,open:!1})),children:ue.rows.length?(0,l.jsx)(`div`,{className:`fa-history-list`,children:ue.rows.map(e=>(0,l.jsxs)(`div`,{className:`fa-history-row`,children:[(0,l.jsxs)(`div`,{children:[(0,l.jsxs)(`div`,{className:`fa-history-rate fa-num`,children:[e.currency||W,e.rate.toFixed(2),e.unit?`/${e.unit}`:``]}),e.by!==void 0&&e.by!==null&&e.by!==``&&(0,l.jsxs)(`div`,{className:`fa-history-by`,children:[`Updated by `,fe[String(e.by)]||String(e.by)]})]}),(0,l.jsx)(`div`,{className:`fa-history-date`,children:$_(e.at)})]},e.key))}):(0,l.jsx)(`div`,{className:`fa-history-empty`,children:`No rate history available.`})}),(0,l.jsx)(s.Modal,{open:se,title:Y(`confirmTitle`),okText:Y(`confirmOk`)||`Approve anyway`,cancelText:Y(`confirmCancel`)||`Go back`,okButtonProps:{danger:!0},onCancel:()=>H(!1),onOk:()=>{H(!1),Qe(_.actions.primary,{skipOverClientConfirm:!0})},children:(0,l.jsx)(`p`,{children:Y(`confirmBody`)})}),_.actions?.show!==!1&&($e||et)&&(0,l.jsxs)(`div`,{className:`fa-action-bar`,children:[(0,l.jsx)(`div`,{className:`fa-action-note`,children:X?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`b`,{children:`Proposed rate required`}),` — enter it above to enable `,$e?.label??`approval`,`.`]}):e===`cfo`?(0,l.jsxs)(l.Fragment,{children:[`Approving finalizes payroll at `,(0,l.jsxs)(`b`,{children:[Y_(U.netProposedRate,W),je]}),be?(0,l.jsxs)(l.Fragment,{children:[` including the `,String(k).toLowerCase(),` `,(0,l.jsxs)(`b`,{children:[Y_(T,W),je]}),` referral`]}):null,`.`]}):(0,l.jsxs)(l.Fragment,{children:[`Approving locks the `,(0,l.jsxs)(`b`,{children:[Y_(U.netProposedRate,W),je]}),` proposed rate and moves this forward.`]})}),(0,l.jsxs)(`div`,{className:`fa-actions`,children:[h&&(0,l.jsx)(n.ut,{className:`fa-btn-ghost`,onClick:h,children:`Cancel`}),et&&(0,l.jsx)(n.ut,{danger:!0,loading:te===et.key,disabled:!!te,onClick:()=>Qe(et),children:et.label}),$e&&(0,l.jsx)(s.Tooltip,{title:Je||``,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:te===$e.key,disabled:!!te||!!Je,onClick:()=>Qe($e),children:$e.label})})})]})]})]})}sv.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,onValuesChange: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`])},sv.defaultProps={record:{},lookups:{},identity:{},referralOptions:[],variant:`page`};var cv=e=>String(e??``).trim().toLowerCase();function lv(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 uv=e=>n.bn(e,300,0).then(lv).catch(()=>[]),dv=e=>t=>e&&j_(t._id??t.id)===String(e),fv=(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({}),pv=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 mv(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 hv(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 gv(e,t){if(!t)return{};let n=await _v(e,t).catch(()=>({}));return{...N_(M_(n.groups??[])),...n.recordMeta??{}}}async function _v(e,t){let{fetchFormGroupsPayload:n}=await Promise.resolve().then(()=>require("./addFormApi-BS1h8DDO.cjs")).then(e=>e.t),r=await n({module:e,id:t});return r?.data??r??{}}async function vv(e,t={}){let r=await _v(`submission`,e).catch(()=>({})),i=r.groups??[],a=r.recordMeta??{},o=M_(i),s=P_(i),c=j_(a.clientId??o.clientId??t.clientId),l=j_(a.jobId??o.jobId??t.jobId),u=j_(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),uv(`jobs`),uv(`clients`),uv(`employers`),uv(`locations`),uv(`workforceEngagements`),gv(`jobs`,l),pv(d),fv(`submissions`,e)]),S=p?.data??p??{},C=S.record??S.item??S??{},w=m.find(dv(l))??{},T={...w,...C,...y};T.jobPayDetails={...hv(w),...hv(C),...hv(y)};let E=(Array.isArray(v)?v:[]).find(t=>j_(t.submissionId)===String(e)),D=j_(T.clientId)||j_(E?.clientId)||c,O=o.clientName??t.clientName??T.clientName,k=O?h.filter(e=>cv(e.clientName)===cv(O)):[],A=h.find(dv(D))??k[0]??{},j=await gv(`clients`,j_(A._id??A.id)||D),M={...A,...j},N=g.find(dv(u))??{},P=_.find(dv(f))??_.find(e=>cv(e.name)===cv(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||mv(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 yv(e={}){return e.referalCompanyName??e.referralCompanyName??e.referalName??e.referralName??e.vendorName??e.employerName??e.name??e.companyName??``}function bv(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 xv(e){return String(e??``).trim().toLowerCase().replace(/\s+/g,` `)}function Sv(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(j_).filter(Boolean)}function Cv(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[yv(e),yv(e.referral??{}),yv(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(xv).filter(Boolean)}function wv(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 Tv(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 Ev(e={},t=[]){let n=new Set(Sv(e)),r=new Set(Cv(e));return!n.size&&!r.size?0:t.filter(e=>Sv(e).some(e=>n.has(e))||Cv(e).some(e=>r.has(e))).map(e=>({rate:bv(e),date:wv(e)})).filter(e=>e.rate>0).sort((e,t)=>t.date-e.date)[0]?.rate??0}async function Dv(){let e=(await uv(`referrals`)).filter(e=>!e?.isDeleted&&yv(e)),t=(await Promise.all([`submissions`,`workforceFinanceApprovals`,`workforceEngagements`,`onboarding`,`candidateMovements`].map(e=>Tv(e).catch(()=>[])))).flat();return(await Promise.all(e.map(async e=>{let n=Ev(e,t),r=bv(e),i=n>0?n:r;return{value:j_(e._id??e.id),label:yv(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 Ov({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 kv({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 Av=`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`,jv=`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`,Mv=`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`,Nv=`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`,Pv=`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`,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='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`,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='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`,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='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`,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='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`,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%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`,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='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`,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='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`,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='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`,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%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`,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%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`,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_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`,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%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`,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_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`,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%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`,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%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`,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='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`,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='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`,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%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`,$v=`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 ey(e){return!e||typeof e!=`string`?`User`:e.split(` `).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function ty(e){let t=(e||`User`).split(` `).filter(Boolean);return`${t[0]?.charAt(0)||`U`}${t.length>1?t.at(-1)?.charAt(0):``}`.toUpperCase()}function ny(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 ry({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=ey(o),m=ty(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:ny(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:Zv,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:ny(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`,overlayClassName:`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:iy}=s.Layout,ay={Dashboard:Bv,Jobs:Lv,Candidates:Rv,Submissions:qv,Network:Uv,ClientManagement:zv,Clients:zv,clients:zv,EmployerManagement:Vv,Employers:Vv,employers:Vv,ReferralManagement:Vv,Referral:Vv,Referrals:Vv,referrals:Vv,Scheduler:Kv,Admin:Fv,Reports:Wv,Settings:Gv,Help:Hv,onboarding:Jv,Onboarding:Jv,assignments:Iv,Assignments:Iv,assignment:Iv,Assignment:Iv,timesheet:Yv,Timesheet:Yv,timesheets:Yv,Timesheets:Yv,billing:Qv,Billing:Qv,payroll:$v,Payroll:$v,campaign:Xv,Campaign:Xv,campaigns:Xv,Campaigns:Xv,addTestCase:Wv,viewTestCase:Kv,manageModules:Gv,bulkUpload:c.UploadOutlined,"bulk-upload":c.UploadOutlined},oy={AppstoreOutlined:c.AppstoreOutlined,BankOutlined:c.BankOutlined,CalendarOutlined:c.CalendarOutlined,DashboardOutlined:c.DashboardOutlined,FileProtectOutlined:c.FileProtectOutlined,FileTextOutlined:c.FileTextOutlined,FolderOpenOutlined:c.FolderOpenOutlined,SettingOutlined:c.SettingOutlined,TeamOutlined:c.TeamOutlined,UploadOutlined:c.UploadOutlined,UsergroupAddOutlined:c.UsergroupAddOutlined,UserOutlined:c.UserOutlined};function sy(e){return String(e??``).trim().replace(/[\s_-]+/g,``).toLowerCase()}var cy=Object.entries({...ay,...oy}).reduce((e,[t,n])=>(e[sy(t)]=n,e),{});function ly(e,t){let n=sy(`${e} ${t}`);return n.includes(`dashboard`)?Bv:n.includes(`client`)?zv:n.includes(`employer`)||n.includes(`referral`)?Vv:n.includes(`candidate`)?Rv:n.includes(`submission`)?qv:n.includes(`onboarding`)?Jv:n.includes(`assignment`)?Iv:n.includes(`timesheet`)?Yv:n.includes(`billing`)?Qv:n.includes(`payroll`)?$v:n.includes(`campaign`)?Xv:n.includes(`job`)?Lv:n.includes(`admin`)||n.includes(`config`)?Fv:n.includes(`batch`)?c.FolderOpenOutlined:n.includes(`pomsa`)||n.includes(`msa`)?c.FileProtectOutlined:n.includes(`user`)?c.UserOutlined:c.AppstoreOutlined}function uy(e,t,n){let r=String(e??``).trim();return/^(https?:\/\/|data:image\/|\/)/i.test(r)?r:cy[sy(r)]??cy[sy(t)]??cy[sy(n)]??ly(t,n)}function dy(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 fy(e){let t=e.replace(/^\/+/,``);if(!t)return[`dashboard`];let n=t.split(`/`);return[t,n[0],n.at(-1)].filter(Boolean)}function py({icon:e,itemKey:t,label:n}){let r=uy(e,t,n);return typeof r==`string`?(0,l.jsx)(`img`,{src:r,alt:``,className:`app-sidebar-menu-icon`,"aria-hidden":`true`}):(0,l.jsx)(r,{className:`app-sidebar-menu-icon app-sidebar-menu-icon--antd`,"aria-hidden":`true`})}function my(e){return e.map(e=>({key:e.key,icon:(0,l.jsx)(py,{icon:e.icon,itemKey:e.key,label:e.label}),label:e.label,disabled:e.status===`inactive`,children:Array.isArray(e.children)?my(e.children):void 0}))}function hy(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=vy([e.key,e.label].map(e=>String(e??``).trim().toLowerCase()).map(i).find(Boolean),`view`);if(t!=null&&!yy(t))return[];let n=Array.isArray(e.children)?hy(e.children):void 0;return[{...e,children:n}]})}function gy(e){return new Set(e.flatMap(e=>[String(e?.key??``).trim().toLowerCase(),...Array.isArray(e?.children)?[...gy(e.children)]:[]]).filter(Boolean))}function _y(e){return e&&typeof e==`object`&&Object.prototype.hasOwnProperty.call(e,`value`)?e.value:e}function vy(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 yy(e){let t=_y(e);return t===!0||t===1||t===`1`}function by(e){return String(e).split(/[\s_\-/]+/).filter(Boolean).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function xy(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=gy(e),r=Object.entries(t).flatMap(([e,t])=>{let r=String(e).trim().toLowerCase();return!r||r.includes(`/`)||n.has(r)||!yy(vy(t,`view`))?[]:(n.add(r),[{key:r,icon:r,label:by(r),status:`active`}])});return[...e,...r]}function Sy(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 Cy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.client??e?.clients;return!t||typeof t!=`object`?!1:yy(vy(t,`view`))}catch{return!1}}function wy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.employers??e?.employer;return!t||typeof t!=`object`?!1:yy(vy(t,`view`))}catch{return!1}}function Ty(e){if(e.some(e=>e.key===`clients`||e.key===`client`)||!Cy())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 Ey(e){let t=e.some(e=>e.key===`employers`||e.key===`employer`),n=e.some(e=>e.key===`clients`||e.key===`client`),r=wy()||n||Cy();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 Dy(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.referrals??e?.referral;return!t||typeof t!=`object`?!1:yy(vy(t,`view`))}catch{return!1}}function Oy(e){let t=e.some(e=>e.key===`referrals`||e.key===`referral`),n=e.some(e=>e.key===`employers`||e.key===`employer`),r=Dy()||wy()||n||Cy();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 ky(e){try{let t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)?.[e];return!!t&&yy(vy(t,`view`))}catch{return!1}}function Ay(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)&&ky(e)&&(t.splice(r,0,{key:e,icon:e,label:n,status:`active`}),r+=1);return t}function jy(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:jy(e.children)}:e)}function My(){return[localStorage.getItem(`menu`)??``,localStorage.getItem(`menuPermission`)??``,localStorage.getItem(`roleId`)??``,localStorage.getItem(`userId`)??``].join(`::`)}function Ny({collapsed:e,onToggle:t}){let n=(0,d.useNavigate)(),r=(0,d.useLocation)(),[i,a]=(0,o.useState)([]),[c,u]=(0,o.useState)(()=>My()),f=(0,o.useMemo)(()=>fy(r.pathname),[r.pathname]);(0,o.useEffect)(()=>{let e=()=>u(My());return window.addEventListener(`auth:login`,e),window.addEventListener(`auth:logout`,e),window.addEventListener(`menu:updated`,e),window.addEventListener(`storage`,e),()=>{window.removeEventListener(`auth:login`,e),window.removeEventListener(`auth:logout`,e),window.removeEventListener(`menu:updated`,e),window.removeEventListener(`storage`,e)}},[]),(0,o.useEffect)(()=>{f.length>0&&localStorage.setItem(`activeKey`,f[0])},[f]);let p=(0,o.useMemo)(()=>my(hy(xy(Ay(Sy(Oy(Ey(Ty(jy(dy(`menu`)))))))))),[c]);function m(){e||a([]),t()}function h({key:e}){n(`/${e}`)}return(0,l.jsx)(iy,{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:Mv,alt:``,className:`app-sidebar-logo-icon`}),(0,l.jsx)(`img`,{src:Nv,alt:`Zinnext`,className:`app-sidebar-logo-text`})]})}),(0,l.jsx)(`button`,{type:`button`,className:`app-sidebar-toggle`,onClick:m,"aria-label":e?`Expand sidebar`:`Collapse sidebar`,children:(0,l.jsx)(`img`,{src:Pv,alt:``,"aria-hidden":`true`})}),(0,l.jsx)(`div`,{className:`app-sidebar-body`,children:(0,l.jsx)(s.Menu,{mode:`inline`,theme:`dark`,selectedKeys:f,openKeys:e?[]:i,items:p,onClick:h,onOpenChange:a,className:`app-sidebar-menu`})})]})})}var Py=`You're not logged in`,Fy=`You haven't logged into this session. Please login to access the data.`;function Iy(){try{return!!t.u()}catch{return!1}}function Ly({children:e,title:t=Py,message:n=Fy,loginPath:r=`/login`,loginLabel:i=`Go to Login`,onLogin:a,fallback:u}){let[d,f]=(0,o.useState)(Iy);return(0,o.useEffect)(()=>{let e=()=>f(Iy());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}Ly.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 Ry={"candidate-onboarding":`onboarding`,"candidate-assignment":`assignments`,candidate:`candidates`,job:`jobs`,submission:`submissions`,client:`clients`,employer:`employers`,referral:`referrals`,timesheet:`timesheets`},zy=new Set([``,`dashboard`,`my-profile`,`profile`,`viewall-sticky`,`select-project`,`addtestcase`,`managemodules`,`viewtestcase`,`test-cases`,`zinnext-home`,`lms-home`,`test`]);function By(e){return String(e??``).split(`?`)[0].split(`#`)[0].replace(/^\/+/,``).split(`/`)[0].trim().toLowerCase()}function Vy(e){let t=By(e);return!t||zy.has(t)?``:Ry[t]??t}function Hy({children:e}){let t=(0,d.useLocation)(),n=(0,d.useNavigate)(),r=Vy(t.pathname),{canView:i}=rr(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 Uy=60;function Wy({children:e}){let[t,n]=(0,o.useState)(!0);return(0,l.jsx)(Kn,{children:(0,l.jsxs)(`div`,{className:`app-layout-shell`,children:[(0,l.jsx)(Ny,{collapsed:t,onToggle:()=>n(e=>!e)}),(0,l.jsx)(ry,{leftOffset:60}),(0,l.jsx)(`main`,{className:`app-layout-main`,style:{marginLeft:60,paddingTop:Uy},children:(0,l.jsx)(`div`,{className:`app-layout-content`,children:(0,l.jsx)(Ly,{children:(0,l.jsx)(Hy,{children:e??(0,l.jsx)(d.Outlet,{})})})})})]})})}function Gy({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:Av,alt:``,className:`auth-login-img-one`})}),(0,l.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,l.jsx)(`img`,{src:jv,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 Ky=e.t({addCTFlow:()=>mb,addCTModule:()=>cb,addCTSubmodule:()=>db,addLmsFlow:()=>ib,addTestFlow:()=>eb,addTestingOption:()=>Qy,bulkInsertTestSteps:()=>rb,deleteCTFlow:()=>vb,getActionFieldRules:()=>$y,getCTFlow:()=>hb,getCTFlows:()=>pb,getCTModules:()=>sb,getCTNextStep:()=>gb,getCTProjects:()=>ob,getCTSubmodules:()=>ub,getLmsFlows:()=>ab,getTestFlows:()=>tb,getTestingOptions:()=>Zy,setCTModuleStatus:()=>lb,setCTSubmoduleStatus:()=>fb,updateCTFlow:()=>_b,validateTestSteps:()=>nb});async function qy(e){return t.t(t.x,e)}async function Jy(e,n){let r=await t.o(t.x,e,{method:`POST`,body:JSON.stringify(n)});return r.data??r}async function Yy(e,n){let r=await t.o(t.x,e,{method:`PUT`,body:JSON.stringify(n)});return r.data??r}async function Xy(e){let n=await t.o(t.x,e,{method:`DELETE`});return n.data??n}async function Zy(e){return qy(`/testing-modules?type=${encodeURIComponent(e)}`)}async function Qy({name:e,type:t}){return Jy(`/testing-modules`,{name:e,type:t})}async function $y(){return qy(`/test-action-field-rules`)}async function eb(e){return Jy(`/test-flows`,e)}async function tb({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)),qy(`/test-flows?${s.toString()}`)}async function nb(e){return Jy(`/test-steps/validate`,e)}async function rb(e){return Jy(`/test-steps/bulk-insert`,e)}async function ib(e){return Jy(`/lms-flows`,e)}async function ab({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)),qy(`/lms-flows?${s.toString()}`)}async function ob({activeOnly:e=!1}={}){let t=new URLSearchParams;e&&t.append(`active`,`1`);let n=t.toString();return qy(`/ct/projects${n?`?${n}`:``}`)}async function sb({project:e=``,activeOnly:t=!1}={}){let n=new URLSearchParams;e&&n.append(`project`,e),t&&n.append(`active`,`1`);let r=n.toString();return qy(`/ct/modules${r?`?${r}`:``}`)}async function cb({project:e,modulename:t}){return Jy(`/ct/modules`,{project:e,modulename:t})}async function lb(e,t){return Yy(`/ct/modules/status`,{id:e,active:t})}async function ub({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 qy(`/ct/submodules${i?`?${i}`:``}`)}async function db({project:e,modulename:t,submodulename:n}){return Jy(`/ct/submodules`,{project:e,modulename:t,submodulename:n})}async function fb(e,t){return Yy(`/ct/submodules/status`,{id:e,active:t})}async function pb({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)),qy(`/ct/flows?${d.toString()}`)}async function mb(e){return Jy(`/ct/flows`,e)}async function hb(e){return qy(`/ct/flows/${encodeURIComponent(e)}`)}async function gb({project:e,module:t,submodule:n,product_parent_ID:r,module_parent_ID:i,submodule_parent_ID:a}){return qy(`/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 _b(e,t){return Yy(`/ct/flows/${encodeURIComponent(e)}`,t)}async function vb(e){return Xy(`/ct/flows/${encodeURIComponent(e)}`)}var yb=`zinnext`;function bb(){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(()=>ob({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()===yb)||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:Av,alt:``,className:`auth-login-img-one`})}),(0,l.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,l.jsx)(`img`,{src:jv,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 xb(e,t){function n(n){return(0,l.jsx)(Ly,{...t,children:(0,l.jsx)(e,{...n})})}return n.displayName=`withAuthGuard(${e.displayName||e.name||`Component`})`,n}var Sb=`${t.v}`;async function Cb(e,n={}){let r=t.u(),i=await fetch(`${Sb}${e}`,{...n,headers:{"Content-Type":`application/json`,...t.D({"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 wb(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 Tb(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:Ob(e.status??e.active_status)}}function Eb(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:Ob(e.status??e.active_status??`ACTIVE`)}}function Db(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:Ob(e.status)}}function Ob(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 kb(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function Ab(e){if(e==null||e===``)return 0;let t=Number(e);return Number.isFinite(t)&&t>0?t:e}function jb(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}function Mb(){return{tenantId:localStorage.getItem(`tenantId`)||void 0,businessId:localStorage.getItem(`businessId`)||void 0,businessUnitId:localStorage.getItem(`businessUnitId`)||void 0}}function Nb(e){let n=e.username??e.user_name??e.userName,r=e.first_name??e.firstName??``,i=e.last_name??e.lastName??``,a=kb(e.user_type_id??e.role_id??e.roleId),o=Ab(e.reporting_id??e.reportingId??e.managerId),s=e.mobile??e.mobileNumber??e.mobile_number??e.phone_number,c=Ob(e.status??e.activeStatus)===`ACTIVE`,l=String(t.y),u=jb(e.updated_by??e.updatedBy),d=jb(e.created_by??e.createdBy);return{...e,...Mb(),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 Pb(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 Fb(e){if(e&&typeof e==`object`&&!Array.isArray(e))return Fb(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 Ib(e){return Fb(e)?`1`:`0`}function Lb(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:Ib(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 Rb(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:Ib(t.access_value??t.accessValue??t.value??t.permissionValue??t.enabled)},e):e},{}),menuOrder:n}}function zb({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),Cb(`/get-all-users?${a.toString()}`).then(e=>({users:wb(e,[`users`]).map(Tb),total:Number(e?.totalCount??e?.total??0)||0}))}function Bb(e){return Cb(`/get-users?roleId=${encodeURIComponent(e)}`).then(e=>wb(e,[`users`]).map(Tb))}function Vb(e){return Cb(`/create-user`,{method:`POST`,body:JSON.stringify(Nb(e))})}function Hb(e,t){return Cb(`/update-user?userId=${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(Nb(t))})}function Ub(e){return Cb(`/delete-user?userId=${encodeURIComponent(e)}`,{method:`PUT`})}function Wb(){return Cb(`/get-roles`).then(e=>[...wb(e,[`zinnext_default`]),...wb(e,[`custom_roles`])].map(Eb))}function Gb(e){return Cb(`/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(Eb)}function Kb(e,t){return Cb(`/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:+(Ob(t.status)===`ACTIVE`),statusText:Ob(t.status)})}).then(Eb)}function qb(e){return Cb(`/custom-roles/${encodeURIComponent(e)}`,{method:`DELETE`})}function Jb(){return Cb(`/admin/menu-modules`).then(e=>wb(e).map(Db))}function Yb(e){return Cb(`/admin/menu-modules`,{method:`POST`,body:JSON.stringify(Pb(e))})}function Xb(e,t){return Cb(`/admin/menu-modules/${e}`,{method:`PUT`,body:JSON.stringify(Pb(t))})}function Zb(e){return Cb(`/admin/menu-modules/${e}`,{method:`DELETE`})}function Qb(){return Cb(`/admin/menu-actions`)}function $b(e){return Cb(`/get-role-details?roleid=${encodeURIComponent(e)}`).then(Lb)}function ex(e,t){return Cb(`/edit-role-details`,{method:`PUT`,body:JSON.stringify(Rb(e,t,[...new Set(t.map(e=>e.menu_key??e.menuName??e.menu_name).filter(Boolean))]))})}var tx={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 nx(e,t){let n=String(t??``).trim().toLowerCase(),r=Object.keys(tx).find(e=>e.toLowerCase()===n),i=r?tx[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:rx}=s.Typography,{Option:ix}=s.Select,ax=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`},{key:`billing`,label:`Billing`},{key:`payroll`,label:`Payroll`}],ox=[{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}})}],sx=[{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`}],cx={job:`jobs`,candidate:`candidates`,submissions:`submissions`,billing:`billing`,payroll:`payroll`};function lx(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function ux(e){if(typeof e==`string`)return{key:e,apiModule:e,label:lx(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??lx(t)}:null}function dx(e){let t=Array.isArray(e)&&e.length?e:ax,n=new Set,r=t.map(ux).filter(Boolean).filter(e=>!n.has(e.key)&&(n.add(e.key),!0));return r.length?r:ax}function fx({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 An(e.apiModule??cx[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`,...sx[t%sx.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.xi(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:ox.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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)},dropdownRender: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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(_g,{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)(rx,{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)(rx,{style:{fontSize:11},children:`Treat numeric 0 as empty`}),(0,l.jsx)(rx,{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)(rx,{style:{fontSize:11},children:`Clean grouped template when a value is empty`}),(0,l.jsxs)(rx,{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)(_g,{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)(ix,{value:`internal`,children:`internal`}),(0,l.jsx)(ix,{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)(ix,{value:`_self`,children:`_self`}),(0,l.jsx)(ix,{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)(rx,{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)(ix,{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)(ix,{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)(ix,{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?{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:`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,operator:t}})})]}),(0,l.jsx)(rx,{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,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)(rx,{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)(rx,{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:px}),![`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 px=[{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)`}],mx=[{label:`Module data (distinct)`,value:`module`},{label:`Masters collection`,value:`master`},{label:`Group value`,value:`group`}],hx=[`select`,`radio`,`checkbox`],gx=[{label:`Dropdown`,value:`dropdown`},{label:`Checkbox`,value:`checkbox`},{label:`Radio`,value:`radio`},{label:`Date Range`,value:`datepicker`},{label:`Number Range`,value:`number-range`}];function _x({field:e,update:t,configType:n,collections:r,collFields:i,onCollectionChange:a,onLookupFieldChange:o,availableFields:c=[]}){let u=hx.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)(rx,{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)(rx,{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)(rx,{style:{fontSize:12},children:`Value Input`}),(0,l.jsx)(s.Select,{size:`small`,value:e.filterInputType??`dropdown`,onChange:e=>t({filterInputType:e}),options:gx,style:{width:140}})]}),n===`filter`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(rx,{style:{fontSize:12},children:`Source`}),(0,l.jsx)(s.Select,{size:`small`,value:e.dataSource??`module`,onChange:e=>t({dataSource:e,groupName:``}),options:mx,style:{width:170}})]}),(e.dataSource??`module`)===`group`&&(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,l.jsx)(rx,{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 vx({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??cx[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)(fx,{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)(_x,{field:e,update:P,configType:r,collections:d,collFields:x,onCollectionChange:I,onLookupFieldChange:L,availableFields:m})})]})}function yx({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)(ax),[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=dx(a);if(!i||i===`listView`){let e=await n.Gr(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.Wr(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.gi(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)(rx,{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)(rx,{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)(rx,{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)(rx,{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)(vx,{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 bx(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}var xx=[`menuKey`,`menu_key`,`MENUKEY`,`module`,`key`,`moduleKey`,`value`,`apiModule`,`name`,`modulename`,`menuName`,`menu_name`,`MENUNAME`],Sx=[`menuName`,`menu_name`,`MENUNAME`,`label`,`moduleLabel`,`moduleName`,`name`,`modulename`];function Cx(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 wx(e){if(typeof e==`string`)return{value:e,label:bx(e)};let t=Cx(e,xx);return t?{value:t,label:Cx(e,Sx)??bx(t)}:null}function Tx(e){let t=new Set;return(Array.isArray(e)?e:[]).map(wx).filter(Boolean).filter(e=>!t.has(e.value)&&(t.add(e.value),!0))}var Ex=Object.freeze({clientId:``,region:``}),{Text:Dx}=s.Typography;function Ox(e,t){return{...e,enabled:t,fields:e.fields.map(e=>({...e}))}}function kx(e,t){return{...e,editable:t,fields:e.fields.map(e=>({...e}))}}function Ax({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=Ex,_=(0,o.useCallback)(async()=>Tx(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.Hr(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?Ox(n,t):n))}function b(e,t){d(n=>n.map(n=>n.name===e?kx(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.si(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)(Dx,{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)(Dx,{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)(Dx,{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)(Dx,{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)(Dx,{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:jx,Title:Mx}=s.Typography,Nx=(e,t)=>`${e}::${t}`,Px=e=>String(e??``).trim().toLowerCase();function Fx(e){let t=Px(e);for(let e of[`details`,`detail`])if(t.endsWith(e)){let n=t.slice(0,-e.length);if(n)return n}return``}function Ix(e,t){let[n,r]=[Px(e),Px(t)],i=e=>e.replace(/s$/,``);return i(Fx(n))===i(r)||i(Fx(r))===i(n)}function Lx(e){let t=new Set;return(e??[]).forEach(e=>{t.add(e.key),(e.children??[]).forEach(n=>t.add(Nx(e.key,n.key)))}),t}function Rx({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=>Ix(e,a)),[x,a]);(0,o.useEffect)(()=>{n.ur().then(e=>{let t=Tx(e).map(e=>e.value);i(t),u(e=>e||t[0]||``)}).catch(()=>i([])),n.qr().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.qr(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(Lx(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(Nx(e.key,t.key)))}:e);g(!0);try{D?await n.vi(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)(jx,{strong:!0,children:t.label||t.key}),(0,l.jsx)(jx,{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)(jx,{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=>Nx(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)(jx,{strong:!0,children:t.label||t.key}),(0,l.jsx)(jx,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`behaviour`,width:220,render:(e,t)=>(0,l.jsx)(jx,{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(Nx(e.key,n.key)),onChange:t=>k(Nx(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)(Mx,{level:4,children:`Role Actions`}),(0,l.jsxs)(jx,{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)(jx,{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)(jx,{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 zx=[{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`}],Bx=[`eq`,`neq`,`in`,`notIn`],Vx=e=>Bx.includes(e??`eq`),Hx=`unique`,Ux=[{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`}],Wx=[{label:`On blur (recommended)`,value:`blur`},{label:`On submit only`,value:`submit`}],Gx=`trim`,Kx=`blur`,qx=[{label:`Look at the field (recommended)`,value:`field`},{label:`Also keep a hidden copy`,value:`index`}],Jx=`field`,Yx=new Set(qx.map(e=>e.value)),Xx=new Set([`blur`,`submit`,`change`]),Zx=new Set([`file`,`text-editor`,`checkbox`]),Qx=`Uniqueness currently supports scalar values only — a single value compared against a single stored value.`;function $x(e={}){let t=String(e.type??`text`),n=e=>({supported:!1,reason:`${e} ${Qx}`});return Zx.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 eS=/^[A-Za-z_][A-Za-z0-9_-]*$/;function tS(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(!eS.test(e))return`Invalid path segment "${e}" — letters, digits, _ and - only`}return``}function nS(e={}){return String(e.payloadKey??``).trim()||String(e.field??``).trim()}function rS(e={}){return{collectionField:nS(e),normalizer:Gx,skipBlank:!0,validateOn:Kx,enforcement:Jx}}var iS=new Set(Ux.map(e=>e.value));function aS(e,t={}){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},r=rS(t),i=String(n.collectionField??``).trim()||r.collectionField,a=iS.has(n.normalizer)?n.normalizer:r.normalizer,o=Xx.has(n.validateOn)?n.validateOn:r.validateOn,s=n.skipBlank===void 0||n.skipBlank===null?r.skipBlank:!!n.skipBlank,c=Yx.has(n.enforcement)?n.enforcement:r.enforcement,l={...n,collectionField:i,normalizer:a,skipBlank:s,validateOn:o,enforcement:c},u=cS(n.alsoCheck);return u.length?l.alsoCheck=u:delete l.alsoCheck,l}function oS(){return{module:``,collection:``,collectionField:``,normalizer:``,message:``,excludeFrom:{path:``,matchField:``}}}function sS(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 cS(e){return Array.isArray(e)?e.map(sS).filter(e=>e.module||e.collection):[]}function lS(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.`):tS(r)&&t.push(`Collection: ${tS(r)}`));let i=String(e.collectionField??``).trim();i&&tS(i)&&t.push(`Field in that collection: ${tS(i)}`);let a=String(e.excludeFrom?.path??``).trim();a&&tS(a)&&t.push(`Exclusion path: ${tS(a)}`);let o=String(e.excludeFrom?.matchField??``).trim();return o&&tS(o)&&t.push(`Exclusion match field: ${tS(o)}`),t}function uS(e,t={}){if(!e||e.type!==`unique`)return[];let n=[],r=$x(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=tS(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())&&lS(e).forEach(e=>n.push(`Also check #${t+1}: ${e}`))}),n}function dS(e){return!!e&&e.type===`unique`}function fS(e){return(e?.validations??[]).some(dS)}function pS(e){return(e?.validations??[]).find(dS)??null}function mS({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()||nS(n),isCrossModule:!!String(t??``).trim()&&String(t).trim()!==String(e??``).trim()}}var{Paragraph:hS,Text:gS}=s.Typography;function _S({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.Zr(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)(hS,{type:`secondary`,style:{fontSize:13,marginBottom:8},children:a}),(0,l.jsxs)(hS,{type:`secondary`,style:{fontSize:13},children:[`This is a protected action. A one-time code has been emailed to`,` `,(0,l.jsx)(gS,{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:vS}=s.Typography;function yS({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}))})}),a(o),p(r),d(r)}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=[...u].sort(),t=[...f].sort();return e.some((e,n)=>e!==t[n])},[u,f]);async function b(e){let r=await n.ii(t,u,e);return p(u),r}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)(vS,{type:`secondary`,style:{fontSize:13,display:`block`,marginBottom:12},children:[`Fields chosen here are `,(0,l.jsx)(`b`,{children:`always shown and always required`}),` on this module's add & edit form. Their Show / Required switches are locked in Form Groups so no one can turn them off. 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:`Select the fields that must always show + be required`,value:u,options:i,onChange:d,maxTagCount:`responsive`}),(0,l.jsxs)(`div`,{style:{marginTop:12},children:[(0,l.jsxs)(vS,{type:`secondary`,style:{fontSize:12},children:[`Currently enforced (`,f.length,`): `]}),f.length?f.map(e=>(0,l.jsx)(s.Tag,{color:`blue`,style:{marginTop:4},children:e},e)):(0,l.jsx)(vS,{type:`secondary`,style:{fontSize:12},children:`none`})]}),!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)(_S,{open:g,scope:`defaultFields`,action:`save`,title:`Confirm Default Fields change`,description:`Adding or updating a module's default (always-shown + required) fields is a protected action.`,confirmLabel:`Verify & Save`,onCancel:()=>_(!1),onConfirm:b,onVerified:()=>{_(!1),v(t)}})]})}function bS(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:xS}=s.Typography,SS={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.`}},CS=jm.filter(({key:e})=>e!==`custom`).map(({key:e,label:t})=>({value:e,label:t})),wS=[{label:`Full span`,value:`full`},{label:`None (start empty)`,value:`none`}],TS=[`#0053a5`,`#52c41a`,`#722ed1`,`#fa8c16`,`#eb2f96`,`#13c2c2`],ES=[{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`}],DS=[{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`}],OS=[{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`}],kS=[`keywords`],AS=[{label:`Full row`,value:24},{label:`Half row`,value:12},{label:`One third`,value:8},{label:`One quarter`,value:6}],jS=[{label:`Include (match these)`,value:`include`},{label:`Exclude (must not match)`,value:`exclude`}],MS=[{label:`Slider + From/To`,value:`both`},{label:`Slider only`,value:`slider`},{label:`From / To only`,value:`inputs`}],NS=[{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`}],PS=[{label:`Country`,value:`country`},{label:`State (needs a Country field)`,value:`state`},{label:`City (needs a Country + State field)`,value:`city`}],FS=[{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:Hx,hasValue:!0,valueType:`object`}],IS=zx,LS=Bx,RS=[{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`}],zS=[{label:`(none)`,value:``},{label:`String`,value:`string`},{label:`Number`,value:`number`},{label:`Boolean`,value:`boolean`}],BS=[{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`}],VS={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 HS(e){return FS.find(t=>t.value===e)??{hasValue:!1}}function US(e){return[{key:`all`,label:`All`,color:`#8c8c8c`},...e.map((e,t)=>({key:e.key,label:e.label,color:TS[t%TS.length]}))]}function WS(e){return Object.fromEntries(e.map(({key:e})=>[e,{groups:[],loading:!1,loaded:!1,error:``}]))}function GS(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 KS(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}function qS(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=GS(t.payloadTemplate);r&&(e.payloadTemplate=r);let i=GS(t.transformRule);return i&&(e.transformRule=i),e}var JS=[{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`}],YS=[`currentUserId`,`currentRoleId`,`currentUserName`,`currentUserEmail`,`currentReportingId`,`tenantId`,`businessId`,`businessUnitId`];function XS(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 ZS(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 QS(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 uS(r,n))t.push(`${e}: ${i}`)}return t}function $S(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 eC=Object.freeze({mode:`newestFirst`,startField:`startDate`,endField:`endDate`}),tC=Object.freeze({field:`startDate`,tieBreak:`endDate`,direction:`desc`,inProgressField:`currentStudyingHere`,inProgressFirst:!0,confirmMove:!0}),nC=Object.freeze({levelField:`qualification`,requireBelow:!0,message:`You have entered only a higher qualification — {missing} is also required.`});function rC(e=[]){return e.filter(e=>String(e?.field??``).trim()!==``).map((e,t)=>{let n=(e.validations??[]).filter(e=>e?.type).map(t=>{let n=HS(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`?aS(t.value,e):t.value:n.valueType===`number`?Number(t.value):t.value:n.valueType===`object`&&t.type===`unique`&&(r.value=rS(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=bS(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&&Gm(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),qS(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 LS.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`,LS.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()},LS.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)};LS.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=pp(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??eC),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}:{},...$S(e.confirmMessages)?{confirmMessages:$S(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=bS(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=ZS(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||aC.has(t)||(r[t]=n));return r})}function iC({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 aC=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(`.`)),oC=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 sC(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:XS(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:KS(e.payloadTemplate),transformRule:KS(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:pp(e.verifyLockedWhenFields).join(`, `),verifyLockedLabel:e.verifyLockedLabel??``,validations:(e.validations??[]).map(t=>({type:t.type,value:t.type===`unique`?aS(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 cC(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 lC(){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 uC({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,defaultFieldSet:_=new Set,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?[...ES,...DS]:ES})}),(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:AS})}),(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=kS.includes(t)&&Um.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:OS})}),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`})})]}):kS.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:jS})}),(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:wS})}),(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:MS})}),(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:CS})})]})]}):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:NS})}),(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:PS})}),[`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:JS})}),(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:YS.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:YS.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=_.has(S.field);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:e?!0:void 0,disabled:e,title:e?`Locked — Default Field (always shown)`:void 0})}),(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:e?!0:void 0,disabled:e,title:e?`Locked — Default Field (always required)`:void 0})})]})})(),(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:ES,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:NS})}),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
- 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=LS.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:IS,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=LS.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:IS,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=LS.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:IS,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=LS.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:IS,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)(xS,{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)(xS,{type:`secondary`,style:{fontSize:12,width:220},children:`clear this field`}):(0,l.jsx)(iC,{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:RS,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:zS,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:BS,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=HS(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=FS.filter(e=>u===`date`?e.dateOnly||e.value===`required`||e.value===`unique`:!e.dateOnly).map(e=>({label:e.label,value:e.value})),h=a===Hx,g=t([...y,r])??{},_=$x(g),b=[...y,r,`validations`,n,`value`],x=h?aS(t(b),g):null,S=h?mS({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,aS(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=tS(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:Ux,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:Wx,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:qx,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)=>lS(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(oS()),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 dC({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 Set),[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=lC();(0,o.useEffect)(()=>{if(!e||!g)return;let t=!1;return n.Lr(g).then(e=>{t||C(new Set(Array.isArray(e)?e:[]))}).catch(()=>{t||C(new Set)}),()=>{t=!0}},[e,g]);async function F(e){if(!(!e||M.current[e])){M.current[e]=`loading`,x(!0);try{let t=await n.zr(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(sC)}):(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=QS(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:rC(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??tC),r.levelRuleEnabled&&(o.levelRule=r.levelRule??nC),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||oC.has(e)||(o[e]=n));f?(await f(o,t),s.message.success(t?`Group updated`:`Group created`)):t?(await n.ui(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=cC(t,n,e(`hierarchyParent`),e(`hierarchyLinkField`),i);return o?(0,l.jsx)(xS,{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)(xS,{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})=>uC({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,defaultFieldSet:S,uniqueTarget:{primaryModule:p.getFieldValue(`module`)||r||``,getTargetModule:()=>p.getFieldValue(`moduleName`)||``,collectionForModule:P}})})]})]})})}function fC({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)(xS,{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)(xS,{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:VS[t.type]??`default`,style:{cursor:`default`,fontFamily:`monospace`,fontSize:10},children:[t.type,a===``?``:`(${a})`]})},n)})]})]},e.field)})}),rowExpandable:()=>!0}})}function pC({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=lC();async function w(e){if(!(!e||x.current[e])){v(!0);try{let t=await n.zr(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(sC)}))}),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=>QS(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:rC(e.fields??[]),...e.infoEnabled&&e.infoText?{infoEnabled:!0,infoText:e.infoText}:{}}))};t?(await n.di(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})=>uC({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 mC({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)(xS,{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)(pC,{open:u,editingForm:f,moduleOptions:e,onClose:()=>{d(!1),p(null)},onSaved:()=>{d(!1),p(null),m()}})]})}function hC(){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=US(e),A=e.map(e=>({value:e.key,label:e.label}));(0,o.useEffect)(()=>{n.yr().then(e=>{let n=Tx(e).map(({value:e,label:t})=>({key:e,label:t}));t(n);let r=US(n);u(WS(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.ui(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(SS[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 ae(e){O(JSON.parse(JSON.stringify(e))),s.message.success(`Copied settings from ${e.label||e.name}`)}async function oe(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.ui(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 se(){v(null),u(WS(k)),I(d),d!==`all`&&I(`all`)}let H=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)(fC,{groups:i,onEdit:z,onDelete:ee,onCopy:ae,onPaste:oe,canPaste:!!D,onReorder:e===`all`?void 0:te})})]})}}),ce=d===`all`?A[0]?.value??`jobs`:d,le=k.find(e=>e.key===ce)?.label??ce,ue=[{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)(xS,{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:H,size:`middle`,className:`fg-tabs`})})}),(0,l.jsx)(dC,{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.ui(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,{}),` `,le,` Add Form Preview`]}),classNames:{body:`fg-preview-body`},destroyOnClose:!0,children:(0,l.jsx)(bc,{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:`${le} Preview`}]},`${ce}-${C.clientId}-${C.region}`)})]})},{key:`custom`,label:`Custom Form`,children:(0,l.jsx)(Z,{children:(0,l.jsx)(mC,{moduleOptions:A})})},{key:`defaultFields`,label:`Default Fields`,children:(0,l.jsx)(yS,{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)(xS,{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:ue,size:`middle`,className:`fg-top-tabs`,tabBarStyle:{padding:`0 16px`,margin:0},destroyInactiveTabPane:!1})}),(0,l.jsx)(_S,{open:!!_,scope:`formGroups`,action:_?.action,title:_?.title,description:_?.description,confirmLabel:_?.confirmLabel,danger:_?.danger,onCancel:()=>v(null),onVerified:se})]})}var gC=`databaseFields`,_C=`__detail_database_fields__`;function vC(e){return e?.detailOnlySource===!0||e?.id===`__detail_database_fields__`}function yC(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 bC(e,t){let n=Array.isArray(e)?e:[],r=yC(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:_C,name:gC,label:`Database Fields`,order:i+1,hideGroupInForm:!0,detailOnlySource:!0,fields:r}]}var xC=`2026-08-06T13:33:00.000Z`,{Text:Q}=s.Typography,SC,CC=new Map;function wC(){return SC||=n.vr().catch(e=>{throw SC=void 0,e}),SC}function TC(e){return CC.has(e)||CC.set(e,n.Sr(e).catch(t=>{throw CC.delete(e),t})),CC.get(e)}var EC={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.`}},DC=[{label:`Default`,value:`default`},{label:`Title Case On`,value:`on`},{label:`Off (raw text)`,value:`off`}],OC=e=>e===!0?`on`:e===!1?`off`:`default`,kC=e=>e===`on`||e!==`off`&&void 0,AC=e=>e===!0||e===1||e===`1`;function jC(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 MC(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 Vx(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 NC(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 PC(e){return Number(e?.show??1)===0}function FC(e,t){let n=[];return{nextGroups:(e??[]).map(e=>{if(vC(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 IC({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 LC({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=Vx(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:zx,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 RC({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 wC().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 TC(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)(IC,{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:DC,value:OC(d.capitalize),onChange:e=>y(`capitalize`,kC(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)(LC,{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:_u[T]??_u.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 zC(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 BC(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 VC({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:zC(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:BC(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)(IC,{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:DC,value:OC(u.capitalize),onChange:e=>f(`capitalize`,kC(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 HC({open:e,module:t,onClose:r}){let[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)(``),v=async()=>{if(!i.trim())return s.message.warning(`Enter a record _id to preview`);h(!0),_(``);try{let[e]=await Promise.all([n.Rr(t,i.trim()),n.Vn()]);d(e),p(Ul(e)),e.length||_(`No groups returned — check the id and module.`)}catch(e){_(e?.message||`Failed to load preview`)}finally{h(!1)}};return(0,l.jsxs)(s.Drawer,{open:e,onClose:r,width:520,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.jsxs)(s.Space.Compact,{style:{width:`100%`,marginBottom:14},children:[(0,l.jsx)(s.Input,{placeholder:`Paste a record _id (24-char ObjectId)`,value:i,onChange:e=>a(e.target.value),onPressEnter:v,className:`fg-mono-input`}),(0,l.jsx)(s.Button,{type:`primary`,loading:m,onClick:v,children:`Load`})]}),g&&(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,message:g,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:m,children:[u.map(e=>(0,l.jsxs)(`div`,{style:{marginBottom:18},children:[(0,l.jsx)(Q,{strong:!0,style:{display:`block`,marginBottom:8},children:e.label??e.name}),(e.fields??[]).filter(e=>e.show===void 0||e.show===1).map(e=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:10,padding:`4px 0`,borderBottom:`1px dashed #eee`},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,width:150,flexShrink:0},children:Kl(e,f)}),(0,l.jsx)(Iu,{field:e})]},e.field))]},e.id??e.name)),!m&&!u.length&&!g&&(0,l.jsx)(s.Empty,{description:`Load a record to preview its detail view.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})]})]})}var UC=[{label:`Common (no region profile)`,value:``},{label:`United States (US)`,value:`US`},{label:`United Kingdom (UK)`,value:`UK`},{label:`India (IND)`,value:`IND`}],WC=[{key:`default`,label:`Any value`,placeholder:_u.default},{key:`group`,label:`Empty group`,placeholder:`No <group name> added`},{key:`document`,label:`Document`,placeholder:_u.document},{key:`date`,label:`Date`,placeholder:_u.date},{key:`phone`,label:`Phone`,placeholder:_u.phone},{key:`email`,label:`Email`,placeholder:_u.email},{key:`link`,label:`Link`,placeholder:_u.link},{key:`skills`,label:`Skills/tags`,placeholder:_u.skills}];function GC(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 KC({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,...GC(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.ti(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:UC,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(xC,{...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:WC.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 qC(){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)(!1),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)(null),[j,M]=(0,o.useState)(null),[N,P]=(0,o.useState)(!1),[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)(null),[z,B]=(0,o.useState)(0),[V,ee]=(0,o.useState)(``),[te,ne]=(0,o.useState)([]),[re,ie]=(0,o.useState)(``),[ae,oe]=(0,o.useState)(``),[se,H]=(0,o.useState)({});function ce(e){R(EC[e])}async function le(e,t,r,i){if(vC(e))return;let a=d;f(n=>n.map(n=>n.id===e.id?{...n,[t]:r}:n)),H(n=>({...n,[`${e.id}:${t}`]:!0}));try{await n.ui(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{H(n=>{let r={...n};return delete r[`${e.id}:${t}`],r})}}async function ue(e,t,r){if(vC(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.ui(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 de=(e,t)=>le(e,`hideGroup`,t,{on:`Group hidden from add/edit forms and the detail view`,off:`Group is visible again`}),fe=(e,t)=>le(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`}),pe=(e,t)=>le(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(){R(null),B(e=>e+1)}(0,o.useEffect)(()=>{n.dr({limit:200}).then(ne).catch(()=>ne([]))},[]),(0,o.useEffect)(()=>{n.yr().then(e=>{let n=Tx(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()=>{w(!0),E(``);try{let[t,r]=await Promise.all([n.fr(a,{clientId:re}).catch(e=>{if(e?.status===404)return[];throw e}),n.wr(a,{clientId:re})]);if(e)return;let i=r.sourceFields??[],o=bC(t,i);oe(r.clientId??``),S(i),f(o),m(jC(o)),g(o.map(e=>({value:e.name,label:e.label??e.name})));let s={};(r.fields??[]).forEach(e=>{s[e.field]=e}),v(s),b(r.merges??[])}catch(t){e||E(t?.message||`Failed to load configuration`)}finally{e||w(!1)}})(),()=>{e=!0}},[a,z,re]);let he=(0,o.useMemo)(()=>p.map(e=>({value:e.key,label:`${e.label} (${e.key})`})),[p]);async function ge(){O(!0);try{let e=Object.entries(_).map(([e,t])=>MC(e,t)).filter(Boolean),{nextGroups:t,changed:r}=FC(d,_);await n.ei({module:a,fields:e,merges:NC(y),sourceFields:x,clientId:re}),r.length&&(f(t),m(jC(t)),g(t.map(e=>({value:e.name,label:e.label??e.name})))),oe(re),s.message.success(re?`Detail view configuration saved for this client`:`Detail view configuration saved`)}catch(e){s.message.error(e?.message||`Could not save configuration`)}finally{O(!1)}}function _e(e){v(t=>({...t,[k.key]:{...e,field:k.key}})),A(null)}function ve(e){v(t=>{let n={...t};return delete n[e],n})}function ye(e){b(t=>{let n=[...t];return j.index===null?n.push(e):n[j.index]=e,n}),M(null)}function be(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 xe=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:`—`})},Se=[{title:`Group`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(Q,{strong:!0,style:{color:`var(--color-text-heading)`},children:e??t.name}),vC(t)&&(0,l.jsx)(s.Tag,{color:`cyan`,children:`Detail only`})]})},{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)=>vC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:AC(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:AC(t.hideGroup),loading:!!se[`${t.id}:hideGroup`],onChange:e=>de(t,e)})})},{title:`Show Condition`,key:`ignoreShowIfInDetail`,width:130,align:`center`,render:(e,t)=>{if(vC(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:AC(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:AC(t.ignoreShowIfInDetail),loading:!!se[`${t.id}:ignoreShowIfInDetail`],onChange:e=>pe(t,e)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Empty Text`,key:`emptyText`,width:220,render:(e,t)=>AC(t.addRow)?(0,l.jsx)(s.Input,{size:`small`,defaultValue:t.emptyText??``,placeholder:`No ${String(t.label??t.name??``).toLowerCase()} added`,onBlur:e=>ue(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)=>vC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:AC(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:AC(t.hideGroupInDetail),loading:!!se[`${t.id}:hideGroupInDetail`],onChange:e=>fe(t,e)})})}],Ce=e=>{let t=e.fields??[],n=vC(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??PC(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,`)`]}),fS(t)&&(0,l.jsx)(s.Tooltip,{title:(()=>{let e=pS(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:xe(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=>be(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:()=>A(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:()=>ve(t.field)})})]})]},t.field)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`})},we=(0,o.useMemo)(()=>{let e=V.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,V]),U=[{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:()=>M({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))})})]})}],W=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:()=>ce(`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:()=>ce(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>ce(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all detail settings`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>ce(`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:()=>I(!0),children:`Display Defaults`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),disabled:!a,onClick:()=>P(!0),children:`Preview`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:D,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:re||void 0,optionFilterProp:`label`,options:te.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>ie(e??``)}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>B(e=>e+1),children:`Reload`})]})]}),re&&!ae&&!C&&(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.`}),!C&&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:W.map(e=>({...e,children:null})),className:`admin-module-tabs`}),T&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:C,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:V,onChange:e=>ee(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:we,columns:Se,pagination:!1,size:`small`,className:`fg-table`,expandable:{expandedRowRender:Ce,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:()=>M({index:null,merge:null}),children:`Add Merge`})]}),(0,l.jsx)(s.Table,{rowKey:`key`,dataSource:y,columns:U,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)(RC,{open:!!k,fieldMeta:k,value:k?{...k.lookupDefaults,..._[k.key]??{}}:null,moduleFieldOptions:he,onClose:()=>A(null),onSave:_e},k?.key??`field-closed`),(0,l.jsx)(VC,{open:!!j,merge:j?.merge,fieldOptions:he,groupOptions:h,onClose:()=>M(null),onSave:ye},j?`merge-${j.index??`new`}`:`merge-closed`),(0,l.jsx)(KC,{open:F,onClose:()=>I(!1)}),(0,l.jsx)(HC,{open:N,module:a,onClose:()=>P(!1)}),(0,l.jsx)(_S,{open:!!L,scope:`detailConfig`,action:L?.action,title:L?.title,description:L?.description,confirmLabel:L?.confirmLabel,danger:L?.danger,onCancel:()=>R(null),onVerified:me,onConfirm:L?.action===`discoverFields`?e=>n.lr({module:a,clientId:re,otp:e}):void 0})]})}var JC=`/admin/email-templates`,YC=`/email-templates`;function XC(e){return e?.data??e}async function ZC({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=XC(await t.o(t.x,`${JC}?${s}`))??{};return{items:Array.isArray(c.items)?c.items:[],totalCount:Number(c.totalCount??0)}}async function QC(e){return XC(await t.o(t.x,`${JC}/${encodeURIComponent(e)}`))}async function $C(e){return t.o(t.x,JC,{method:`POST`,body:JSON.stringify(e)})}async function ew(e,n){return t.o(t.x,`${JC}/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(n)})}async function tw(e){return t.o(t.x,`${JC}/${encodeURIComponent(e)}`,{method:`DELETE`})}async function nw({module:e=``,action:n=``}={}){let r=new URLSearchParams;e&&r.set(`module`,e),n&&r.set(`action`,n);let i=r.toString()?`?${r}`:``,a=XC(await t.o(t.x,`${YC}${i}`));return Array.isArray(a)?a:[]}async function rw(e){return XC(await t.o(t.x,`${YC}/${encodeURIComponent(e)}`))}async function iw(){let e=XC(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 aw({offset:e=0,limit:n=20,search:r=``}={}){let i=new URLSearchParams({offset:String(e),limit:String(n),sortBy:`new`,searchValue:r}),a=XC(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 ow(e){return XC(await t.o(t.x,`/signature/editPreview?signatureId=${encodeURIComponent(e)}`))}async function sw(e){return t.o(t.x,`/signature/add`,{method:`POST`,body:JSON.stringify(e)})}async function cw(e){return t.o(t.x,`/signature/edit`,{method:`PUT`,body:JSON.stringify(e)})}async function lw(e){return t.o(t.x,`/signature/delete?signatureId=${encodeURIComponent(e)}`,{method:`DELETE`})}async function uw(e,n){return t.o(t.x,`/signature/statusUpdate?signatureId=${encodeURIComponent(e)}&status=${n}`,{method:`PUT`})}var dw={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:fw}=s.Typography,pw=[{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)`}],mw=[{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)`}],hw=[`GET`,`POST`,`PUT`,`DELETE`],gw=[`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`],_w={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`},vw=[{value:`notEmpty`,label:`is set (not empty)`},{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`}];function yw(){return`action_${Date.now()}`}function bw({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({..._w,...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=[...gw.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:_w,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:pw,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:mw})})]}),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:hw.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:hw.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:vw})}),(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 xw(){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=Tx(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.qr(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(()=>[]),nw({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.vi(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,{..._w,...e,_localKey:yw()}];return{...t,children:r}}):T?p.map(t=>t.key===T.key?{...t,...e}:t):[...p,{..._w,...e,_localKey:yw()}];try{if(d)await n.vi(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()}},ae=(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)},oe=(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 se(e){M(dw[e])}function H(){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]),le=[{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:()=>oe(t._actionIndex,-1),children:`↑`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,disabled:t._actionIndex===p.length-1,onClick:()=>oe(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)(fw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{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)(fw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(fw,{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:()=>ae(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,{})})})})]})}],ue=e=>[{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(fw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(fw,{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:()=>ae(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:()=>se(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>se(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all actions`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>se(`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)(fw,{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)(fw,{strong:!0,children:`Configuration context`}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{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:le,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:ue(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)(bw,{open:C,initial:T,isChild:!!ee,popupForms:D,templateOptions:k,permissionModules:F,permissionActions:L,onClose:()=>w(!1),onSave:ie}),(0,l.jsx)(_S,{open:!!j,scope:`rowActions`,action:j?.action,title:j?.title,description:j?.description,confirmLabel:j?.confirmLabel,danger:j?.danger,onCancel:()=>M(null),onVerified:H})]})}var{Text:Sw,Title:Cw}=s.Typography,ww=[{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`}],Tw=[{value:`{currentUserId}`,label:`{currentUserId} — the signed-in user`}],Ew=[{value:`myJobs`,label:`My Jobs`},{value:`allJobs`,label:`All Jobs`}],Dw=[`eq`,`ne`,`contains`,`includes`,`notIncludes`],Ow=`scope`,kw=`fieldEq`,Aw=[{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}],jw=()=>({field:``,operator:`eq`,value:``,compareField:``}),Mw=()=>({name:``,description:``,conditions:[jw()],blockedActions:[],disabledActions:[],allowedActions:[],isActive:!0});function Nw(e){return ww.find(t=>t.value===e)?.label??e}function Pw(e){return e.operator===Ow?`scope = ${e.value}`:e.operator===kw?`${e.field} = field:${e.compareField}`:[`isEmpty`,`notEmpty`].includes(e.operator)?`${e.field} ${Nw(e.operator)}`:`${e.field} ${Nw(e.operator)} "${e.value}"`}function Fw(){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)(Mw()),[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=Tx(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.zr(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.qr(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(Mw()),g(!0)}function N(e){v(e),b({name:e.name??``,description:e.description??``,conditions:e.conditions?.length?e.conditions.map(e=>({...e})):[jw()],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.mi(_.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 Aw)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,jw()]}))}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)(Cw,{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)(Sw,{strong:!0,children:e}),t.description?(0,l.jsx)(`div`,{children:(0,l.jsx)(Sw,{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:Pw(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)(Sw,{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:ww,value:e.operator,style:{width:140},onChange:e=>L(t,{operator:e,value:``,compareField:``})})}),e.operator!==Ow&&(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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Field from the record (e.g. `,(0,l.jsx)(`code`,{children:`jobRecruitmentStatus`}),`, `,(0,l.jsx)(`code`,{children:`recruiters`}),`)`]})]}),Dw.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:Tw,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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Type a literal, or pick `,(0,l.jsx)(`code`,{children:`{currentUserId}`}),` for the signed-in user.`]})]}),e.operator===Ow&&(0,l.jsxs)(s.Form.Item,{label:`Scope Value`,style:{marginBottom:0,minWidth:140},children:[(0,l.jsx)(s.Select,{options:Ew,value:e.value||void 0,style:{width:150},placeholder:`Select scope`,onChange:e=>L(t,{value:e})}),(0,l.jsx)(Sw,{type:`secondary`,style:{fontSize:11},children:`Current view tab (myJobs / allJobs)`})]}),e.operator===kw&&(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)(Sw,{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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Preview: `,(0,l.jsx)(`code`,{style:{color:`#1677ff`},children:Pw(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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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 Iw(){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)(xw,{})},{key:`rules`,label:`Visibility rules`,icon:(0,l.jsx)(c.ApartmentOutlined,{}),children:(0,l.jsx)(Fw,{})}]})}var{Text:Lw}=s.Typography,Rw={name:``,module:``,action:``,clientId:``,description:``,toMail:[],ccMail:[],bccMail:[],subject:``,body:``,isActive:!0},zw=e=>e?._id??e?.id,Bw=[{moduleName:`Onboarding Employer Details`,moduleLabel:`Employer Details`,fields:[{key:`employerName`,value:`mailContext.employerName`,label:`Employer Name`},{key:`employerCompanyName`,value:`mailContext.employerCompanyName`,label:`Employer Company Name`},{key:`employerEmail`,value:`mailContext.employerEmail`,label:`Employer Email`},{key:`employerContactNumber`,value:`mailContext.employerContactNumber`,label:`Employer Contact Number`},{key:`employerSigningAuthorityName`,value:`mailContext.employerSigningAuthorityName`,label:`Employer Signing Authority Name`},{key:`employerSigningAuthorityEmail`,value:`mailContext.employerSigningAuthorityEmail`,label:`Employer Signing Authority Email`},{key:`employerSigningDocumentLink`,value:`mailContext.employerSigningDocumentLink`,label:`Employer Signing Documents Link`}]},{moduleName:`Onboarding Referral Details`,moduleLabel:`Referral Details`,fields:[{key:`referralName`,value:`mailContext.referralName`,label:`Referral Name`},{key:`referralCompanyName`,value:`mailContext.referralCompanyName`,label:`Referral Company Name`},{key:`referralEmail`,value:`mailContext.referralEmail`,label:`Referral Email`},{key:`referralContactNumber`,value:`mailContext.referralContactNumber`,label:`Referral Contact Number`},{key:`referralRecruiterName`,value:`mailContext.referralRecruiterName`,label:`Referral Recruiter Name`},{key:`referralRecruiterEmail`,value:`mailContext.referralRecruiterEmail`,label:`Referral Recruiter Email`},{key:`referralSigningDocumentLink`,value:`mailContext.referralSigningDocumentLink`,label:`Referral Signing Documents Link`}]},{moduleName:`Onboarding Signing Documents`,moduleLabel:`Signing Documents`,fields:[{key:`signingDocumentLink`,value:`mailContext.signingDocumentLink`,label:`Signing Documents Link`}]}];function Vw(e){return String(e??``).trim().toLowerCase()===`onboarding`}function Hw(e){return String(e??``).trim().replace(/^{{\s*/,``).replace(/\s*}}$/,``).trim().replace(/^\./,``).trim()}function Uw(...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}function Ww({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.qr(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;return(await n.zr(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:Hw(r),value:Hw(i),label:n.label??n.fieldName??n.name??n.value,moduleName:t,moduleLabel:e.label??t}}).filter(e=>e.key&&e.value)}))).flat();(r??[]).some(e=>Vw(e.value))&&Bw.forEach(t=>{t.fields.forEach(n=>{e.some(e=>e.key===n.key&&e.value===n.value)||e.push({...n,moduleName:t.moduleName,moduleLabel:t.moduleLabel})})}),b(e)}(0,o.useEffect)(()=>{if(!e)return;let n=!1;return queueMicrotask(()=>{g(!0),w().catch(()=>{}),(t?QC(t):Promise.resolve(Rw)).then(e=>{if(n)return;let t={...Rw,...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=Hw(t.key);r[n]={moduleName:e.moduleName,value:Hw(t.value)}}})}),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){S(t=>({...t,[e.key]:{moduleName:e.moduleName,value:e.value}}))}function E(e){let t=`{{.${e.key}}}`;T(e),f(e=>`${e}${e?` `:``}${t}`),s.message.success(`Inserted ${t} from ${e.moduleLabel||e.moduleName}`)}function D(e,t){let n=`{{.${t.key}}}`;T(t),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`copy`}function O(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||Vw(t)&&String(e.moduleName).startsWith(`Onboarding `))??r[0];return i?{moduleName:i.moduleName,value:i.value}:null}async function k(){try{let e=await u.validateFields();if(!d.trim()){s.message.error(`Message body is required`);return}m(!0);let n=Uw(e.subject,d),r=new Map;n.forEach(t=>{let n=O(t,e.module);n&&(r.has(n.moduleName)||r.set(n.moduleName,[]),r.get(n.moduleName).push({key:t,value:n.value}))});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 ew(t,a):await $C(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 A=(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.jsxs)(s.Drawer,{open:e,onClose:a,width:`min(1320px, 98vw)`,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:k,children:t?`Update`:`Create`})]}),children:[(0,l.jsx)(`style`,{children:`
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=LS.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:IS,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=LS.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:IS,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=LS.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:IS,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=LS.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:IS,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)(xS,{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)(xS,{type:`secondary`,style:{fontSize:12,width:220},children:`clear this field`}):(0,l.jsx)(iC,{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:RS,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:zS,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:BS,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=HS(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=FS.filter(e=>u===`date`?e.dateOnly||e.value===`required`||e.value===`unique`:!e.dateOnly).map(e=>({label:e.label,value:e.value})),h=a===Hx,g=t([...y,r])??{},_=$x(g),b=[...y,r,`validations`,n,`value`],x=h?aS(t(b),g):null,S=h?mS({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,aS(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=tS(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:Ux,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:Wx,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:qx,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)=>lS(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(oS()),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 dC({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 Set),[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=lC();(0,o.useEffect)(()=>{if(!e||!g)return;let t=!1;return n.Lr(g).then(e=>{t||C(new Set(Array.isArray(e)?e:[]))}).catch(()=>{t||C(new Set)}),()=>{t=!0}},[e,g]);async function F(e){if(!(!e||M.current[e])){M.current[e]=`loading`,x(!0);try{let t=await n.zr(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(sC)}):(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=QS(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:rC(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??tC),r.levelRuleEnabled&&(o.levelRule=r.levelRule??nC),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||oC.has(e)||(o[e]=n));f?(await f(o,t),s.message.success(t?`Group updated`:`Group created`)):t?(await n.ui(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=cC(t,n,e(`hierarchyParent`),e(`hierarchyLinkField`),i);return o?(0,l.jsx)(xS,{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)(xS,{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})=>uC({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,defaultFieldSet:S,uniqueTarget:{primaryModule:p.getFieldValue(`module`)||r||``,getTargetModule:()=>p.getFieldValue(`moduleName`)||``,collectionForModule:P}})})]})]})})}function fC({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)(xS,{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)(xS,{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:VS[t.type]??`default`,style:{cursor:`default`,fontFamily:`monospace`,fontSize:10},children:[t.type,a===``?``:`(${a})`]})},n)})]})]},e.field)})}),rowExpandable:()=>!0}})}function pC({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=lC();async function w(e){if(!(!e||x.current[e])){v(!0);try{let t=await n.zr(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(sC)}))}),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=>QS(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:rC(e.fields??[]),...e.infoEnabled&&e.infoText?{infoEnabled:!0,infoText:e.infoText}:{}}))};t?(await n.di(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})=>uC({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 mC({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)(xS,{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)(pC,{open:u,editingForm:f,moduleOptions:e,onClose:()=>{d(!1),p(null)},onSaved:()=>{d(!1),p(null),m()}})]})}function hC(){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=US(e),A=e.map(e=>({value:e.key,label:e.label}));(0,o.useEffect)(()=>{n.yr().then(e=>{let n=Tx(e).map(({value:e,label:t})=>({key:e,label:t}));t(n);let r=US(n);u(WS(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.ui(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(SS[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 ae(e){O(JSON.parse(JSON.stringify(e))),s.message.success(`Copied settings from ${e.label||e.name}`)}async function oe(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.ui(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 se(){v(null),u(WS(k)),I(d),d!==`all`&&I(`all`)}let H=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)(fC,{groups:i,onEdit:z,onDelete:ee,onCopy:ae,onPaste:oe,canPaste:!!D,onReorder:e===`all`?void 0:te})})]})}}),ce=d===`all`?A[0]?.value??`jobs`:d,le=k.find(e=>e.key===ce)?.label??ce,ue=[{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)(xS,{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:H,size:`middle`,className:`fg-tabs`})})}),(0,l.jsx)(dC,{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.ui(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,{}),` `,le,` Add Form Preview`]}),classNames:{body:`fg-preview-body`},destroyOnClose:!0,children:(0,l.jsx)(bc,{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:`${le} Preview`}]},`${ce}-${C.clientId}-${C.region}`)})]})},{key:`custom`,label:`Custom Form`,children:(0,l.jsx)(Z,{children:(0,l.jsx)(mC,{moduleOptions:A})})},{key:`defaultFields`,label:`Default Fields`,children:(0,l.jsx)(yS,{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)(xS,{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:ue,size:`middle`,className:`fg-top-tabs`,tabBarStyle:{padding:`0 16px`,margin:0},destroyInactiveTabPane:!1})}),(0,l.jsx)(_S,{open:!!_,scope:`formGroups`,action:_?.action,title:_?.title,description:_?.description,confirmLabel:_?.confirmLabel,danger:_?.danger,onCancel:()=>v(null),onVerified:se})]})}var gC=`databaseFields`,_C=`__detail_database_fields__`;function vC(e){return e?.detailOnlySource===!0||e?.id===`__detail_database_fields__`}function yC(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 bC(e,t){let n=Array.isArray(e)?e:[],r=yC(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:_C,name:gC,label:`Database Fields`,order:i+1,hideGroupInForm:!0,detailOnlySource:!0,fields:r}]}var xC=`2026-08-06T13:33:00.000Z`,{Text:Q}=s.Typography,SC,CC=new Map;function wC(){return SC||=n.vr().catch(e=>{throw SC=void 0,e}),SC}function TC(e){return CC.has(e)||CC.set(e,n.Sr(e).catch(t=>{throw CC.delete(e),t})),CC.get(e)}var EC={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.`}},DC=[{label:`Default`,value:`default`},{label:`Title Case On`,value:`on`},{label:`Off (raw text)`,value:`off`}],OC=e=>e===!0?`on`:e===!1?`off`:`default`,kC=e=>e===`on`||e!==`off`&&void 0,AC=e=>e===!0||e===1||e===`1`;function jC(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 MC(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 Vx(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 NC(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 PC(e){return Number(e?.show??1)===0}function FC(e,t){let n=[];return{nextGroups:(e??[]).map(e=>{if(vC(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 IC({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 LC({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=Vx(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:zx,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 RC({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 wC().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 TC(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)(IC,{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:DC,value:OC(d.capitalize),onChange:e=>y(`capitalize`,kC(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)(LC,{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:_u[T]??_u.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 zC(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 BC(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 VC({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:zC(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:BC(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)(IC,{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:DC,value:OC(u.capitalize),onChange:e=>f(`capitalize`,kC(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 HC({open:e,module:t,onClose:r}){let[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)(``),v=async()=>{if(!i.trim())return s.message.warning(`Enter a record _id to preview`);h(!0),_(``);try{let[e]=await Promise.all([n.Rr(t,i.trim()),n.Vn()]);d(e),p(Ul(e)),e.length||_(`No groups returned — check the id and module.`)}catch(e){_(e?.message||`Failed to load preview`)}finally{h(!1)}};return(0,l.jsxs)(s.Drawer,{open:e,onClose:r,width:520,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.jsxs)(s.Space.Compact,{style:{width:`100%`,marginBottom:14},children:[(0,l.jsx)(s.Input,{placeholder:`Paste a record _id (24-char ObjectId)`,value:i,onChange:e=>a(e.target.value),onPressEnter:v,className:`fg-mono-input`}),(0,l.jsx)(s.Button,{type:`primary`,loading:m,onClick:v,children:`Load`})]}),g&&(0,l.jsx)(s.Alert,{type:`warning`,showIcon:!0,message:g,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:m,children:[u.map(e=>(0,l.jsxs)(`div`,{style:{marginBottom:18},children:[(0,l.jsx)(Q,{strong:!0,style:{display:`block`,marginBottom:8},children:e.label??e.name}),(e.fields??[]).filter(e=>e.show===void 0||e.show===1).map(e=>(0,l.jsxs)(`div`,{style:{display:`flex`,gap:10,padding:`4px 0`,borderBottom:`1px dashed #eee`},children:[(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12,width:150,flexShrink:0},children:Kl(e,f)}),(0,l.jsx)(Iu,{field:e})]},e.field))]},e.id??e.name)),!m&&!u.length&&!g&&(0,l.jsx)(s.Empty,{description:`Load a record to preview its detail view.`,image:s.Empty.PRESENTED_IMAGE_SIMPLE})]})]})}var UC=[{label:`Common (no region profile)`,value:``},{label:`United States (US)`,value:`US`},{label:`United Kingdom (UK)`,value:`UK`},{label:`India (IND)`,value:`IND`}],WC=[{key:`default`,label:`Any value`,placeholder:_u.default},{key:`group`,label:`Empty group`,placeholder:`No <group name> added`},{key:`document`,label:`Document`,placeholder:_u.document},{key:`date`,label:`Date`,placeholder:_u.date},{key:`phone`,label:`Phone`,placeholder:_u.phone},{key:`email`,label:`Email`,placeholder:_u.email},{key:`link`,label:`Link`,placeholder:_u.link},{key:`skills`,label:`Skills/tags`,placeholder:_u.skills}];function GC(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 KC({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,...GC(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.ti(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:UC,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(xC,{...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:WC.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 qC(){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)(!1),[T,E]=(0,o.useState)(``),[D,O]=(0,o.useState)(!1),[k,A]=(0,o.useState)(null),[j,M]=(0,o.useState)(null),[N,P]=(0,o.useState)(!1),[F,I]=(0,o.useState)(!1),[L,R]=(0,o.useState)(null),[z,B]=(0,o.useState)(0),[V,ee]=(0,o.useState)(``),[te,ne]=(0,o.useState)([]),[re,ie]=(0,o.useState)(``),[ae,oe]=(0,o.useState)(``),[se,H]=(0,o.useState)({});function ce(e,t={}){R({...EC[e],...t})}async function le(e,t,r,i){if(vC(e))return;let a=d;f(n=>n.map(n=>n.id===e.id?{...n,[t]:r}:n)),H(n=>({...n,[`${e.id}:${t}`]:!0}));try{await n.ui(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{H(n=>{let r={...n};return delete r[`${e.id}:${t}`],r})}}async function ue(e,t,r){if(vC(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.ui(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 de=(e,t)=>le(e,`hideGroup`,t,{on:`Group hidden from add/edit forms and the detail view`,off:`Group is visible again`}),fe=(e,t)=>le(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`}),pe=(e,t)=>le(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(){R(null),B(e=>e+1)}(0,o.useEffect)(()=>{n.dr({limit:200}).then(ne).catch(()=>ne([]))},[]),(0,o.useEffect)(()=>{n.yr().then(e=>{let n=Tx(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()=>{w(!0),E(``);try{let[t,r]=await Promise.all([n.fr(a,{clientId:re}).catch(e=>{if(e?.status===404)return[];throw e}),n.wr(a,{clientId:re})]);if(e)return;let i=r.sourceFields??[],o=bC(t,i);oe(r.clientId??``),S(i),f(o),m(jC(o)),g(o.map(e=>({value:e.name,label:e.label??e.name})));let s={};(r.fields??[]).forEach(e=>{s[e.field]=e}),v(s),b(r.merges??[])}catch(t){e||E(t?.message||`Failed to load configuration`)}finally{e||w(!1)}})(),()=>{e=!0}},[a,z,re]);let he=(0,o.useMemo)(()=>p.map(e=>({value:e.key,label:`${e.label} (${e.key})`})),[p]);async function ge(){O(!0);try{let e=Object.entries(_).map(([e,t])=>MC(e,t)).filter(Boolean),{nextGroups:t,changed:r}=FC(d,_);await n.ei({module:a,fields:e,merges:NC(y),sourceFields:x,clientId:re}),r.length&&(f(t),m(jC(t)),g(t.map(e=>({value:e.name,label:e.label??e.name})))),oe(re),s.message.success(re?`Detail view configuration saved for this client`:`Detail view configuration saved`)}catch(e){s.message.error(e?.message||`Could not save configuration`)}finally{O(!1)}}function _e(e){v(t=>({...t,[k.key]:{...e,field:k.key}})),A(null)}function ve(e){v(t=>{let n={...t};return delete n[e],n})}function ye(e){b(t=>{let n=[...t];return j.index===null?n.push(e):n[j.index]=e,n}),M(null)}function be(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 xe=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:`—`})},Se=[{title:`Group`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,l.jsxs)(s.Space,{size:6,children:[(0,l.jsx)(Q,{strong:!0,style:{color:`var(--color-text-heading)`},children:e??t.name}),vC(t)&&(0,l.jsx)(s.Tag,{color:`cyan`,children:`Detail only`})]})},{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)=>vC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:AC(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:AC(t.hideGroup),loading:!!se[`${t.id}:hideGroup`],onChange:e=>de(t,e)})})},{title:`Show Condition`,key:`ignoreShowIfInDetail`,width:130,align:`center`,render:(e,t)=>{if(vC(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:AC(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:AC(t.ignoreShowIfInDetail),loading:!!se[`${t.id}:ignoreShowIfInDetail`],onChange:e=>pe(t,e)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Empty Text`,key:`emptyText`,width:220,render:(e,t)=>AC(t.addRow)?(0,l.jsx)(s.Input,{size:`small`,defaultValue:t.emptyText??``,placeholder:`No ${String(t.label??t.name??``).toLowerCase()} added`,onBlur:e=>ue(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)=>vC(t)?(0,l.jsx)(Q,{type:`secondary`,children:`—`}):(0,l.jsx)(s.Tooltip,{title:AC(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:AC(t.hideGroupInDetail),loading:!!se[`${t.id}:hideGroupInDetail`],onChange:e=>fe(t,e)})})}],Ce=e=>{let t=e.fields??[],n=vC(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??PC(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,`)`]}),fS(t)&&(0,l.jsx)(s.Tooltip,{title:(()=>{let e=pS(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:xe(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=>be(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:()=>A(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:()=>ve(t.field)})})]})]},t.field)})}):(0,l.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`})},we=(0,o.useMemo)(()=>{let e=V.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,V]),U=[{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:()=>M({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))})})]})}],W=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:()=>ce(`discoverFields`,{module:a,clientId:re,title:`Read ${a} database fields`}),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:()=>ce(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>ce(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all detail settings`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>ce(`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:()=>I(!0),children:`Display Defaults`}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.EyeOutlined,{}),disabled:!a,onClick:()=>P(!0),children:`Preview`}),(0,l.jsx)(s.Button,{type:`primary`,size:`small`,icon:(0,l.jsx)(c.SaveOutlined,{}),loading:D,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:re||void 0,optionFilterProp:`label`,options:te.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>ie(e??``)}),(0,l.jsx)(s.Button,{size:`small`,icon:(0,l.jsx)(c.ReloadOutlined,{}),onClick:()=>B(e=>e+1),children:`Reload`})]})]}),re&&!ae&&!C&&(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.`}),!C&&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:W.map(e=>({...e,children:null})),className:`admin-module-tabs`}),T&&(0,l.jsx)(s.Alert,{type:`error`,showIcon:!0,message:T,style:{marginBottom:12}}),(0,l.jsxs)(s.Spin,{spinning:C,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:V,onChange:e=>ee(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:we,columns:Se,pagination:!1,size:`small`,className:`fg-table`,expandable:{expandedRowRender:Ce,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:()=>M({index:null,merge:null}),children:`Add Merge`})]}),(0,l.jsx)(s.Table,{rowKey:`key`,dataSource:y,columns:U,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)(RC,{open:!!k,fieldMeta:k,value:k?{...k.lookupDefaults,..._[k.key]??{}}:null,moduleFieldOptions:he,onClose:()=>A(null),onSave:_e},k?.key??`field-closed`),(0,l.jsx)(VC,{open:!!j,merge:j?.merge,fieldOptions:he,groupOptions:h,onClose:()=>M(null),onSave:ye},j?`merge-${j.index??`new`}`:`merge-closed`),(0,l.jsx)(KC,{open:F,onClose:()=>I(!1)}),(0,l.jsx)(HC,{open:N,module:a,onClose:()=>P(!1)}),(0,l.jsx)(_S,{open:!!L,scope:`detailConfig`,action:L?.action,title:L?.title,description:L?.description,confirmLabel:L?.confirmLabel,danger:L?.danger,onCancel:()=>R(null),onVerified:me,onConfirm:L?.action===`discoverFields`?e=>n.lr({module:L.module,clientId:L.clientId,otp:e}):void 0})]})}var JC=`/admin/email-templates`,YC=`/email-templates`;function XC(e){return e?.data??e}async function ZC({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=XC(await t.o(t.x,`${JC}?${s}`))??{};return{items:Array.isArray(c.items)?c.items:[],totalCount:Number(c.totalCount??0)}}async function QC(e){return XC(await t.o(t.x,`${JC}/${encodeURIComponent(e)}`))}async function $C(e){return t.o(t.x,JC,{method:`POST`,body:JSON.stringify(e)})}async function ew(e,n){return t.o(t.x,`${JC}/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(n)})}async function tw(e){return t.o(t.x,`${JC}/${encodeURIComponent(e)}`,{method:`DELETE`})}async function nw({module:e=``,action:n=``}={}){let r=new URLSearchParams;e&&r.set(`module`,e),n&&r.set(`action`,n);let i=r.toString()?`?${r}`:``,a=XC(await t.o(t.x,`${YC}${i}`));return Array.isArray(a)?a:[]}async function rw(e){return XC(await t.o(t.x,`${YC}/${encodeURIComponent(e)}`))}async function iw(){let e=XC(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 aw({offset:e=0,limit:n=20,search:r=``}={}){let i=new URLSearchParams({offset:String(e),limit:String(n),sortBy:`new`,searchValue:r}),a=XC(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 ow(e){return XC(await t.o(t.x,`/signature/editPreview?signatureId=${encodeURIComponent(e)}`))}async function sw(e){return t.o(t.x,`/signature/add`,{method:`POST`,body:JSON.stringify(e)})}async function cw(e){return t.o(t.x,`/signature/edit`,{method:`PUT`,body:JSON.stringify(e)})}async function lw(e){return t.o(t.x,`/signature/delete?signatureId=${encodeURIComponent(e)}`,{method:`DELETE`})}async function uw(e,n){return t.o(t.x,`/signature/statusUpdate?signatureId=${encodeURIComponent(e)}&status=${n}`,{method:`PUT`})}var dw={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:fw}=s.Typography,pw=[{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)`}],mw=[{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)`}],hw=[`GET`,`POST`,`PUT`,`DELETE`],gw=[`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`],_w={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`},vw=[{value:`notEmpty`,label:`is set (not empty)`},{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`}];function yw(){return`action_${Date.now()}`}function bw({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({..._w,...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=[...gw.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:_w,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:pw,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:mw})})]}),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:hw.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:hw.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:vw})}),(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 xw(){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=Tx(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.qr(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(()=>[]),nw({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.vi(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,{..._w,...e,_localKey:yw()}];return{...t,children:r}}):T?p.map(t=>t.key===T.key?{...t,...e}:t):[...p,{..._w,...e,_localKey:yw()}];try{if(d)await n.vi(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()}},ae=(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)},oe=(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 se(e){M(dw[e])}function H(){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]),le=[{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:()=>oe(t._actionIndex,-1),children:`↑`}),(0,l.jsx)(s.Button,{size:`small`,type:`text`,disabled:t._actionIndex===p.length-1,onClick:()=>oe(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)(fw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{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)(fw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(fw,{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:()=>ae(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,{})})})})]})}],ue=e=>[{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,l.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,l.jsx)(fw,{strong:!0,children:t.label||t.key}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,l.jsx)(fw,{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:()=>ae(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:()=>se(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,l.jsx)(c.CloudDownloadOutlined,{}),onClick:()=>se(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all actions`,icon:(0,l.jsx)(c.ReloadOutlined,{}),danger:!0,onClick:()=>se(`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)(fw,{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)(fw,{strong:!0,children:`Configuration context`}),(0,l.jsx)(fw,{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)(fw,{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)(fw,{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:le,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:ue(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)(bw,{open:C,initial:T,isChild:!!ee,popupForms:D,templateOptions:k,permissionModules:F,permissionActions:L,onClose:()=>w(!1),onSave:ie}),(0,l.jsx)(_S,{open:!!j,scope:`rowActions`,action:j?.action,title:j?.title,description:j?.description,confirmLabel:j?.confirmLabel,danger:j?.danger,onCancel:()=>M(null),onVerified:H})]})}var{Text:Sw,Title:Cw}=s.Typography,ww=[{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`}],Tw=[{value:`{currentUserId}`,label:`{currentUserId} — the signed-in user`}],Ew=[{value:`myJobs`,label:`My Jobs`},{value:`allJobs`,label:`All Jobs`}],Dw=[`eq`,`ne`,`contains`,`includes`,`notIncludes`],Ow=`scope`,kw=`fieldEq`,Aw=[{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}],jw=()=>({field:``,operator:`eq`,value:``,compareField:``}),Mw=()=>({name:``,description:``,conditions:[jw()],blockedActions:[],disabledActions:[],allowedActions:[],isActive:!0});function Nw(e){return ww.find(t=>t.value===e)?.label??e}function Pw(e){return e.operator===Ow?`scope = ${e.value}`:e.operator===kw?`${e.field} = field:${e.compareField}`:[`isEmpty`,`notEmpty`].includes(e.operator)?`${e.field} ${Nw(e.operator)}`:`${e.field} ${Nw(e.operator)} "${e.value}"`}function Fw(){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)(Mw()),[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=Tx(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.zr(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.qr(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(Mw()),g(!0)}function N(e){v(e),b({name:e.name??``,description:e.description??``,conditions:e.conditions?.length?e.conditions.map(e=>({...e})):[jw()],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.mi(_.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 Aw)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,jw()]}))}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)(Cw,{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)(Sw,{strong:!0,children:e}),t.description?(0,l.jsx)(`div`,{children:(0,l.jsx)(Sw,{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:Pw(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)(Sw,{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:ww,value:e.operator,style:{width:140},onChange:e=>L(t,{operator:e,value:``,compareField:``})})}),e.operator!==Ow&&(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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Field from the record (e.g. `,(0,l.jsx)(`code`,{children:`jobRecruitmentStatus`}),`, `,(0,l.jsx)(`code`,{children:`recruiters`}),`)`]})]}),Dw.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:Tw,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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Type a literal, or pick `,(0,l.jsx)(`code`,{children:`{currentUserId}`}),` for the signed-in user.`]})]}),e.operator===Ow&&(0,l.jsxs)(s.Form.Item,{label:`Scope Value`,style:{marginBottom:0,minWidth:140},children:[(0,l.jsx)(s.Select,{options:Ew,value:e.value||void 0,style:{width:150},placeholder:`Select scope`,onChange:e=>L(t,{value:e})}),(0,l.jsx)(Sw,{type:`secondary`,style:{fontSize:11},children:`Current view tab (myJobs / allJobs)`})]}),e.operator===kw&&(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)(Sw,{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)(Sw,{type:`secondary`,style:{fontSize:11},children:[`Preview: `,(0,l.jsx)(`code`,{style:{color:`#1677ff`},children:Pw(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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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)(Sw,{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 Iw(){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)(xw,{})},{key:`rules`,label:`Visibility rules`,icon:(0,l.jsx)(c.ApartmentOutlined,{}),children:(0,l.jsx)(Fw,{})}]})}var{Text:Lw}=s.Typography,Rw={name:``,module:``,action:``,clientId:``,description:``,toMail:[],ccMail:[],bccMail:[],subject:``,body:``,isActive:!0},zw=e=>e?._id??e?.id,Bw=[{moduleName:`Onboarding Employer Details`,moduleLabel:`Employer Details`,fields:[{key:`employerName`,value:`mailContext.employerName`,label:`Employer Name`},{key:`employerCompanyName`,value:`mailContext.employerCompanyName`,label:`Employer Company Name`},{key:`employerEmail`,value:`mailContext.employerEmail`,label:`Employer Email`},{key:`employerContactNumber`,value:`mailContext.employerContactNumber`,label:`Employer Contact Number`},{key:`employerSigningAuthorityName`,value:`mailContext.employerSigningAuthorityName`,label:`Employer Signing Authority Name`},{key:`employerSigningAuthorityEmail`,value:`mailContext.employerSigningAuthorityEmail`,label:`Employer Signing Authority Email`},{key:`employerSigningDocumentLink`,value:`mailContext.employerSigningDocumentLink`,label:`Employer Signing Documents Link`}]},{moduleName:`Onboarding Referral Details`,moduleLabel:`Referral Details`,fields:[{key:`referralName`,value:`mailContext.referralName`,label:`Referral Name`},{key:`referralCompanyName`,value:`mailContext.referralCompanyName`,label:`Referral Company Name`},{key:`referralEmail`,value:`mailContext.referralEmail`,label:`Referral Email`},{key:`referralContactNumber`,value:`mailContext.referralContactNumber`,label:`Referral Contact Number`},{key:`referralRecruiterName`,value:`mailContext.referralRecruiterName`,label:`Referral Recruiter Name`},{key:`referralRecruiterEmail`,value:`mailContext.referralRecruiterEmail`,label:`Referral Recruiter Email`},{key:`referralSigningDocumentLink`,value:`mailContext.referralSigningDocumentLink`,label:`Referral Signing Documents Link`}]},{moduleName:`Onboarding Signing Documents`,moduleLabel:`Signing Documents`,fields:[{key:`signingDocumentLink`,value:`mailContext.signingDocumentLink`,label:`Signing Documents Link`}]}];function Vw(e){return String(e??``).trim().toLowerCase()===`onboarding`}function Hw(e){return String(e??``).trim().replace(/^{{\s*/,``).replace(/\s*}}$/,``).trim().replace(/^\./,``).trim()}function Uw(...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}function Ww({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.qr(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;return(await n.zr(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:Hw(r),value:Hw(i),label:n.label??n.fieldName??n.name??n.value,moduleName:t,moduleLabel:e.label??t}}).filter(e=>e.key&&e.value)}))).flat();(r??[]).some(e=>Vw(e.value))&&Bw.forEach(t=>{t.fields.forEach(n=>{e.some(e=>e.key===n.key&&e.value===n.value)||e.push({...n,moduleName:t.moduleName,moduleLabel:t.moduleLabel})})}),b(e)}(0,o.useEffect)(()=>{if(!e)return;let n=!1;return queueMicrotask(()=>{g(!0),w().catch(()=>{}),(t?QC(t):Promise.resolve(Rw)).then(e=>{if(n)return;let t={...Rw,...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=Hw(t.key);r[n]={moduleName:e.moduleName,value:Hw(t.value)}}})}),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){S(t=>({...t,[e.key]:{moduleName:e.moduleName,value:e.value}}))}function E(e){let t=`{{.${e.key}}}`;T(e),f(e=>`${e}${e?` `:``}${t}`),s.message.success(`Inserted ${t} from ${e.moduleLabel||e.moduleName}`)}function D(e,t){let n=`{{.${t.key}}}`;T(t),e.dataTransfer.setData(`text/plain`,n),e.dataTransfer.effectAllowed=`copy`}function O(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||Vw(t)&&String(e.moduleName).startsWith(`Onboarding `))??r[0];return i?{moduleName:i.moduleName,value:i.value}:null}async function k(){try{let e=await u.validateFields();if(!d.trim()){s.message.error(`Message body is required`);return}m(!0);let n=Uw(e.subject,d),r=new Map;n.forEach(t=>{let n=O(t,e.module);n&&(r.has(n.moduleName)||r.set(n.moduleName,[]),r.get(n.moduleName).push({key:t,value:n.value}))});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 ew(t,a):await $C(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 A=(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.jsxs)(s.Drawer,{open:e,onClose:a,width:`min(1320px, 98vw)`,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:k,children:t?`Update`:`Create`})]}),children:[(0,l.jsx)(`style`,{children:`
7
7
  @media (max-width: 980px) {
8
8
  .template-editor-workspace {
9
9
  grid-template-columns: 1fr !important;
@@ -19,5 +19,5 @@ Upload the résumé first — we can read the details straight from it`})}),(0,l
19
19
  `).replace(/<[^>]+>/g,` `),t=t.replace(/&nbsp;/gi,` `).replace(/&amp;/gi,`&`).replace(/&lt;/gi,`<`).replace(/&gt;/gi,`>`).replace(/&#39;|&apos;/gi,`'`).replace(/&quot;/gi,`"`),t.replace(/[ \t\f\v]+/g,` `).replace(/\n{2,}/g,`
20
20
  `).trim()}function lD(e){return e.replace(/•/g,`
21
21
  `).split(/\n+/).map(e=>e.trim().replace(/^[-–—•]\s*/,``).trim()).filter(Boolean)}function uD(e){return lD(e.replace(/(?:^|\s)[-–—]\s+/g,`
22
- `))}function dD(e){let t=e.match(/^([A-Za-z][A-Za-z&/ ]{1,28}?)\s*:\s*(\S.+)$/);if(!t)return null;let n=t[1].trim(),r=t[2].trim();return n.split(/\s+/).length>3||r.length>60?null:{fieldKey:n.toLowerCase().replace(/\s+/g,`-`),fieldLabel:oD(n),value:r}}function fD(e){let t=e.toLowerCase().replace(/[\s:.\-–—]+$/,``).trim();return nD.has(t)?rD.test(t)?`education`:iD.test(t)?`keySkills`:`overview`:null}function pD(e){let t=[],n={overview:[],keySkills:[],education:[]},r=`overview`;return e.forEach(e=>{let i=fD(e);if(i){r=i;return}if(r===`overview`){let n=dD(e);if(n){t.push(n);return}}n[r].push(e)}),{meta:t,overview:sD(n.overview),keySkills:sD(n.keySkills),education:sD(n.education)}}function mD(e){let t=[...tD].sort((e,t)=>t.length-e.length),n=RegExp(`\\b(${t.map(aD).join(`|`)})\\b\\s*:?`,`gi`),r=[...e.matchAll(n)];if(!r.length)return{meta:[],overview:sD(uD(e)),keySkills:[],education:[]};let i={overview:[],keySkills:[],education:[]},a=e.slice(0,r[0].index).trim();return a&&i.overview.push(...uD(a)),r.forEach((t,n)=>{let a=t[1].trim().toLowerCase(),o=t.index+t[0].length,s=n+1<r.length?r[n+1].index:e.length,c=uD(e.slice(o,s).trim());if(!c.length)return;let l=rD.test(a)?`education`:iD.test(a)?`keySkills`:`overview`;i[l].push(...c)}),{meta:[],overview:sD(i.overview),keySkills:sD(i.keySkills),education:sD(i.education)}}function hD(e){let t=cD(e);if(!t)return{meta:[],overview:[],keySkills:[],education:[]};let n=lD(t);return n.length>=4?pD(n):mD(t)}function gD({items:e}){return(0,l.jsx)(`ul`,{className:`jdv-ats-bullets`,children:e.map((e,t)=>(0,l.jsx)(`li`,{className:`jdv-ats-bullet-item`,children:e},t))})}function _D({raw:e=``,meta:t=[]}){let[n,r]=(0,o.useState)(!1),i=(0,o.useMemo)(()=>hD(e),[e]),a=t.length?t:i.meta,s=[];if(i.overview.length&&s.push({key:`overview`,title:`Overview`,items:i.overview}),i.keySkills.length&&s.push({key:`keySkills`,title:`Key Skills`,items:i.keySkills,card:!0,icon:`🛠️`}),i.education.length&&s.push({key:`education`,title:`Education`,items:i.education,card:!0,icon:`🎓`}),!a.length&&!s.length)return(0,l.jsx)($E,{type:`secondary`,children:`No description available.`});let c=n?s:s.slice(0,eD),u=s.length-eD;return(0,l.jsxs)(`div`,{className:`jdv-ats-desc`,children:[a.length>0&&(0,l.jsx)(`div`,{className:`jdv-ats-meta-grid`,children:a.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??t))}),(0,l.jsx)(`div`,{className:`jdv-ats-sections`,children:c.map(e=>e.card?(0,l.jsxs)(`div`,{className:`education-block`,children:[(0,l.jsxs)(`div`,{className:`education-header`,children:[(0,l.jsx)(`span`,{children:e.icon}),(0,l.jsx)(`span`,{children:e.title})]}),(0,l.jsx)(`ul`,{className:`education-list`,children:e.items.map((e,t)=>(0,l.jsx)(`li`,{className:`education-list-item`,children:e},t))})]},e.key):(0,l.jsxs)(`div`,{className:`jdv-ats-section`,children:[(0,l.jsx)(`div`,{className:`jdv-ats-section-hd`,children:(0,l.jsx)(`span`,{children:e.title})}),(0,l.jsx)(gD,{items:e.items})]},e.key))}),u>0&&(0,l.jsx)(`span`,{className:`jdv-desc-toggle`,onClick:()=>r(e=>!e),children:n?`Show less`:`Show more (${u} more section${u>1?`s`:``})`})]})}var{Text:vD}=s.Typography;function yD(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function bD(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 xD(e){return e?e.email??e.emailId??e.emailAddress??``:``}function SD(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function CD(e){return e==null||e===``?`-`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?e.join(`, `):typeof e==`object`?e.label??e.name??Object.values(e).join(` `):String(e)}var wD=[`jobDescription`,`description`,`rawDescription`,`jobDescriptionText`];function TD(e){return String(e??``).toLowerCase()===`job`}function ED(e){let t=wD.includes(e.field),n=/description/i.test(e.label??``);return t||n}function DD({record:e}){let t=bD(e),n=xD(e),r=SD(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:yD(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 OD({fields:e,moduleName:t,centralDocuments: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){let t=String(e?.type??``).trim().toLowerCase(),n=`${e?.field??``} ${e?.label??``}`;return[`file`,`document`,`upload`].includes(t)||/resume|cv|document|attachment/i.test(n)}function p(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=e.value,a=Array.isArray(i)&&i.length>0,o=TD(t)&&ED(e)&&typeof i==`string`&&i.trim(),s=f(e)?r.filter(t=>{let n=String(t?.fieldName??t?.field??t?.formField??t?.key??``).trim().toLowerCase(),r=String(e?.field??``).trim().toLowerCase();if(n&&r&&n===r)return!0;let i=`${e?.field??``} ${e?.label??``}`;return/resume|cv/i.test(i)?/resume|cv/i.test(`${n} ${t?.fileName??``} ${t?.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):[],c=f(e)?s.length?s:n.Rt(i).filter(e=>e.url):[];return c.length?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`div`,{className:`preview-document-list`,children:c.map((e,t)=>(0,l.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>p(c,t),title:`Preview ${e.name||`document`}`,children:[(0,l.jsx)(`span`,{className:`preview-document-link__icon`,"aria-hidden":`true`,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}`))})]},e.field??e.label):a?i.map((t,n)=>(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsxs)(`span`,{className:`preview-field-card__label`,children:[e.label,i.length>1?` (${n+1})`:``]}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:CD(t)})]},`${e.field??e.label}-${n}`)):o?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--description`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`div`,{className:`preview-field-card__description`,children:(0,l.jsx)(_D,{raw:i})})]},e.field??e.label):(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:CD(i)})]},e.field??e.label)})}),(0,l.jsx)(n.wn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function kD(){let e=(0,d.useNavigate)(),{moduleName:t=``,record:r=null}=(0,d.useLocation)().state??{},i=r?.id??r?._id,[c,u]=(0,o.useState)([]),[f,p]=(0,o.useState)(!!(t&&i)),[m,h]=(0,o.useState)(null),[g,_]=(0,o.useState)([]),[v,y]=(0,o.useState)(0),b=(0,o.useRef)(null),x=(0,o.useRef)(null),S=(0,o.useRef)([]),C=(0,o.useRef)([]);(0,o.useEffect)(()=>{if(!t||!i)return;let e=!1;return Promise.all([a.r({module:t,id:i}),n._n(t,i).catch(()=>({data:[]}))]).then(([t,n])=>{e||(u(Array.isArray(t)?t:[]),_(Array.isArray(n)?n:n?.data??[]),p(!1))}).catch(t=>{e||(h(t.message||`Failed to load preview`),_([]),p(!1))}),()=>{e=!0}},[t,i]);function w(){e(-1)}function T(e,t){return e?.label??e?.name??`Section ${t+1}`}function E(e){let t=b.current,n=C.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;y(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function D(){let e=b.current;if(!e||!C.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;C.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),y(e=>e===n?e:n)}(0,o.useEffect)(()=>{let e=x.current,t=S.current[v];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth);e.scrollTo({left:Math.min(Math.max(0,n),r),behavior:`smooth`})},[v,c.length]);function O(){return c.length?(0,l.jsx)(`div`,{ref:x,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=>{S.current[t]=e},onClick:()=>E(t),"aria-current":v===t?`step`:void 0,title:`Go to ${T(e,t)}`,children:[(0,l.jsx)(`span`,{className:[`preview-stepper__circle`,t<v?`preview-stepper__circle--done`:``,t===v?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,l.jsx)(`span`,{className:[`preview-stepper__label`,t===v?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:T(e,t)})]}),t<c.length-1&&(0,l.jsx)(`span`,{className:[`preview-stepper__line`,t<v?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let k=(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`})]}),A=(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:w,children:`Close`})})});function j(){return!t||!i?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):f?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,l.jsx)(s.Spin,{size:`small`})}):m?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:m}):c.length?(0,l.jsx)(`div`,{className:`preview-section-list`,children:c.map((e,n)=>(0,l.jsxs)(`section`,{ref:e=>{C.current[n]=e},className:`preview-section-card`,"data-section-index":n,children:[(0,l.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,l.jsx)(`span`,{className:`preview-section-card__number`,children:n+1}),(0,l.jsx)(`span`,{className:`preview-section-card__title`,children:T(e,n)})]}),(0,l.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,l.jsx)(OD,{fields:e.fields,moduleName:t,centralDocuments:g}):(0,l.jsx)(vD,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??n))}):(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:A,open:!0,title:k,width:`min(900px, calc(100vw - 32px))`,onCancel:w,maskClosable:!1,children:(0,l.jsxs)(`div`,{ref:b,className:`wizard-body preview-scroll-body`,onScroll:D,children:[!f&&!m&&c.length>0&&O(),r&&(0,l.jsx)(DD,{record:r}),j()]})})}var{Text:AD}=s.Typography,{TextArea:jD}=s.Input,MD=[{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 ND(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)(jD,{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 PD({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)(AD,{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)(AD,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,l.jsx)(`div`,{className:`wizard-review-empty`,children:(0,l.jsx)(AD,{type:`secondary`,children:`No data entered yet.`})})}function FD(){let[e]=s.Form.useForm(),t=(0,d.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=MD,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:ND(e)})},e.name))})},e.key)),f.isReview&&(0,l.jsx)(PD,{steps:i,form:e})]})})]})}function ID({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 LD({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 RD({footerNote:e}){return e?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:e}):null}function zD(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function BD(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function VD(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isNaN(t)||t<=0?!1:t<=Date.now()+864e5}function HD(e){if(!VD(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 UD(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 WD(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 GD(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:HD(UD(e))}:e,o=(i?BD(zD(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||WD(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||WD(e);t&&(u.priorSubmittedAt=t)}return u}function KD(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>GD(t,e))}function qD(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var JD=`DD MMM YYYY`,YD=`DD MMM YYYY, h:mm A`;function XD(e,t){if(e==null||e===``)return``;let n=(0,u.default)(e);return n.isValid()?t===`relative`?HD(e)||(VD(e)?n.format(JD):`Not updated`):VD(e)?n.format(JD):``:String(e)}function ZD(e,t){return e?String(e).includes(`{`)?BD(zD(e,t)):String(t?.[e]??e).trim():``}function QD(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(YD)}`:`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(YD)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function $D(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function eO({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 tO({option:e,layout:t}){let n=e?._raw??e??{},r=ZD(t.id,n),i=ZD(t.title,n)||String(e?.label??``),a=ZD(t.subtitle,n),o=ZD(t.titleAccent?.key,n),u=ZD(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:XD(n?.[e.key],e.type)})).filter(e=>e.text),p=$D(e,n),m=QD(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)(eO,{meta:f})]})}var{Text:nO}=s.Typography,{TextArea:rO}=s.Input,iO=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],aO=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function oO(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 sO({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 cO({field:e,value:t,onChange:n}){return(0,l.jsx)(rO,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function lO({field:e,options:t,value:n,onChange:r}){let i=oO(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 uO({field:e,options:t,value:n,onChange:r}){let i=oO(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 dO({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let o=oO(t),u=e.optionLayout,d=new Map(o.map(e=>[String(e?.value??``),e]));async function f(t,n){if(e.multiple){i?.(Array.isArray(t)?t:[]);return}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,{mode:e.multiple?`multiple`:void 0,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)(tO,{option:e?.data??e,layout:u}):void 0,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function fO({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 pO({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:iO,onChange:e=>a({currency:e}),style:{width:80}}),(0,l.jsx)(s.Select,{value:r,options:aO,onChange:e=>a({period:e}),style:{width:110}})]}),(u||d)&&(0,l.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,l.jsx)(nO,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,l.jsxs)(nO,{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 mO({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 hO({field:e,checked:t,onChange:n}){return(0,l.jsx)(s.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function gO({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 _O({options:e,value:t,onChange:n}){return(0,l.jsx)(s.Radio.Group,{value:t,onChange:n,options:e})}var vO={input:sO,text:sO,textarea:cO,select:lO,"multi-select":uO,"search-select":dO,"mention-textarea":fO,"candidate-rate":pO,"priority-checkbox":hO,"date-picker":mO,number:gO,radio:_O};function yO(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var bO=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function xO({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:SO(t).map(e=>CO(e,e=>{let t=y(i[e.name]??KD(e,a)),r=p(e),o=m(e),c=h[e.name]??[],u=yO(e.type),d=vO[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()}}),bO.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 SO(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 CO(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 wO(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function TO(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 EO(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function DO(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 OO(e,t){return EO(t)?DO(e):GD(e,t)}function kO(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 AO(e){let t=Number(e?.id??0)||0,n=String(e?.text??``).trim();return n&&n.toLowerCase()===`not submitted`?!0:t<=0&&!n}function jO(e){return Number(e?._raw?.id??e?._raw?.uniqueId??0)||0}function MO(e){let t=e?._raw?.allowedNextStatusIds;return Array.isArray(t)?t.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}function NO(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 PO(e){return(Array.isArray(e?.selectedRecords)?e.selectedRecords.filter(Boolean):[]).some(e=>!AO(kO(e)))?!0:!AO(kO(e??{}))}async function FO(e,n){if(PO(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=NO(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 IO(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=kO(n);if(AO(i)){let e=kO(r);AO(e)||(i=e)}if(AO(i))return t?._raw?.isInitialStatus===!0;let a=e.find(e=>{let t=jO(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:MO(a).includes(jO(t))}))}function LO({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(wO);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=TO(t).map(t=>OO(t,e)).filter(Boolean),i=a;if(EO(e)&&(i=await FO(a,r)),o.signal.aborted)return;let s=EO(e)?IO(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 RO=500,zO=3;function BO({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=>GD(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??zO;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},RO)}}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 VO({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?.cancelled||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?.cancelled||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{let n=await v(e);if(n?.cancelled||n?.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 HO({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)(()=>qD(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}=LO({open:e,config:t,api:a,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=BO({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}=VO({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,ae=typeof t?.getNote==`function`?t.getNote(g):t?.note,oe=t?.disabledUntilFilled&&!j&&!N;if(!t||!e||z)return null;let se=t.component;return se?(0,l.jsx)(s.Modal,{open:e,title:t.title||t.getTitleText?(0,l.jsx)(ID,{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)(se,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,l.jsxs)(s.Modal,{open:e,title:(0,l.jsx)(ID,{titleText:ne,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:F,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:oe,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)(LD,{note:ae,description:t.description,showSelectedCount:t.showSelectedCount,count:B,itemLabel:ee,bodyText:ie,deleteError:L}),(0,l.jsx)(RD,{footerNote:t.footerNote}),(0,l.jsx)(xO,{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 UO={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:[]},WO={deleteItems:async(e,t)=>{await ae(t.moduleName,e)}},GO=new Map;async function KO(e){return e?(GO.has(e)||GO.set(e,a.r({module:e}).catch(t=>(GO.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),GO.get(e)):[]}function qO(e=[],t){return e.some(e=>{let r=n.C(e,t);return r&&r.severity!==`allow`})}async function JO({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 KO(e);if(!qO(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 YO=`Already submitted`,XO=`submissions`,ZO=`candidates`,QO=864e5,$O=90,ek=`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.`,tk=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],nk=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function rk(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 ik(e){return rk(e,tk)}function ak(e){return rk(e,nk)}function ok(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))/QO))}function sk(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function ck(e,t=$O){if(!e)return!1;let n=Date.now()-t*QO,r=ik(e),i=ak(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function lk(e){let t=ik(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=HD(t);return n?{createdAgo:n,createdAgoTone:sk(ok(t))}:{createdAgo:``,createdAgoTone:``}}function uk(e){return{...e,...lk(e),isStaleCandidate:ck(e)}}function dk(e){return String(e?.applicantId??e?._id??e?.id??``)}var fk=null;async function pk(){return fk||=n.Fr(ZO).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),fk}async function mk(e){let t=dk(e);if(!t)return``;let n=await pk();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function hk({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=dk(r);if(i){let e=await JO({targetModule:XO,sourceModule:ZO,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(!ck(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:ek,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await mk(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function gk(e,t,n){return{...e,label:`${e.label} - ${YO}`,disabled:!0,title:`${YO}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var _k={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 Ee({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Nn({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 gk(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 Oe({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?gk(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 De({search:t,jobId:r})}catch{let e=await $o({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await Oe({jobId:r,applicantIds:i.map(dk)}).catch(()=>new Map)}return i.map(e=>uk(e)).map(e=>{let t=a.get(dk(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:YO,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=>dk(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(ck(u?._raw))throw Error(ek);let p=await JO({targetModule:XO,sourceModule:ZO,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 Te({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=Xo(Qo({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},vk={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:hk}]},yk={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`}]},bk=e=>e?.data??e;async function xk({relatedId:e,notes:n,title:r,notesFor:i}){return bk(await hn(t.x,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var Sk={getMentionOptions:async(e,t)=>se(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 xk({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},Ck={name:`jobId`,label:`Job Title / ID`,type:`search-select`,multiple:!0,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},wk={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},Tk={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[wk]:[Ck,wk]},Ek=e=>e?.data??e;function Dk(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 Ok(e){return e?Array.isArray(e.data)?e.data.map(Dk):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(Dk):Array.isArray(e)?e.map(Dk):[]:[]}async function kk(e=1,n=10){let r=await t.o(t.x,`/workflow/list/all?page=${e}&limit=${n}`),i=Ek(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 Ak(e,n){let r=Ek(await t.o(t.x,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function jk(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=Ek(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 Mk(e){return Ek(await t.o(t.C,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var Nk={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`},Pk=`Already submitted`;function Fk(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 Ik(e){let t=String(e??``).trim();return t?Nk[t.toLowerCase()]??t:``}function Lk(e,t=``){return String(Fk(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t??``)}function Rk(e){return String(Fk(e,`_id`,`id`,`candidateId`,`candidate_id`,`applicantId`,`applicantID`)??``)}function zk(e,t,n){let r=String(e.jobTitle??``).trim();return{...e,jobTitle:r?`${r} (${Pk})`:`(${Pk})`,disabled:!0,title:Pk,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}function Bk(e,t){let n=String(t??``).trim();return n?/already submitted/i.test(n)?`${e} (${Pk})`:/fulfilled/i.test(n)?`${e} (Fullfilled)`:`${e} (${n})`:e}function Vk(e){let t=String(e.jobReferenceId??e.clientJobReferenceId??``).trim(),n=String(e.jobTitle??``).trim();return{...e,jobReferenceId:t,jobTitle:n}}function Hk(e){return Wk(e).map(e=>e.id)}function Uk(e,t=``){return(Fk(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[Fk(e,`firstName`,`first_name`),Fk(e,`lastName`,`last_name`)].filter(Boolean).join(` `)??t)||`Unknown candidate`}function Wk(e){let t=Array.isArray(e?.selectedIds)?e.selectedIds:[],n=Array.isArray(e?.selectedRecords)?e.selectedRecords:[],r=[],i=new Set,a=Math.max(t.length,n.length);for(let e=0;e<a;e+=1){let a=n[e]??{},o=t[e]?String(t[e]):``,s=Lk(a,o);!s||i.has(s)||(i.add(s),r.push({id:s,name:Uk(a,o),record:a,selectedId:o||s}))}return r}function Gk(e,t){return Array.isArray(e?.jobId)?e.jobId.map(String).filter(Boolean):e?.jobId?[String(e.jobId)]:Array.isArray(t?.jobId)?t.jobId.map(String).filter(Boolean):t?.jobId?[String(t.jobId)]:[]}function Kk(e,t=``){let n=String(e?.jobTitle??e?._raw?.jobTitle??``).trim();if(n)return n;let r=String(e?.label??e?._raw?.label??``).trim();return r.includes(` - `)?r.split(` - `).slice(1).join(` - `).trim():r||String(t??``)}function qk(e,t=``){return Kk(e,t)}function Jk(e,t,n){let r=[...new Set(Gk(e,t))],i=Array.isArray(n?.dynamicOptions?.jobId)?n.dynamicOptions.jobId:[],a=new Map(i.map(e=>[String(e?._id??e?.value??``),e]));return r.map(e=>{let t=a.get(String(e))??{};return{id:String(e),label:qk(t,e),record:t}})}function Yk(e){return e.filter(e=>e.blockedCandidates.length>0).map(e=>`${e.job.label} - ${e.blockedCandidates.map(e=>e.name).join(`, `)}`).join(` | `)}function Xk(e){return e.filter(e=>e.allowedCandidates.length>0).map(e=>`${e.job.label} - ${e.allowedCandidates.map(e=>e.name).join(`, `)}`).join(` | `)}function Zk(e,t){let n=Rk(e);if(!n)return null;let r=Uk(e,t)||void 0,i={candidateId:String(n),candidateName:r,phone:Fk(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:Fk(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:Fk(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:Fk(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:Fk(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:Fk(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:Fk(e,`screeningScore`,`screening.score`,`score`),assignedDate:Fk(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var Qk={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`tagToJobJobList`){let e=Hk(n),r=e.length===1?e[0]:``,i,a=!1;if(r)try{i=await Ee({searchQuery:t,candidateId:r}),a=!0}catch{a=!1}Array.isArray(i)||(i=await oe(t));let o=i.map(Vk);if(a)return o.map(e=>{if(e?.isSubmitted||e?.alreadySubmitted)return zk(e,e?.jobSubmissionId||e?.submissionId||``,e?.submittedAt||``);if(e?.disable){let t=String(e?.message??``).trim();return{...e,jobTitle:e.jobTitle?Bk(e.jobTitle,t):`(${t})`,disabled:!0,optionNote:t,title:t}}return e});if(!r)return o;let s=await Oe({applicantId:r,jobIds:o.map(e=>e._id).filter(Boolean)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e._id));return t?zk(e,t.submissionId,t.submittedAt):e})}return[]},submit:async(e,t,r)=>{let i=Ik(e.hiringStage??t.hiringStage),a=Wk(t),o=Jk(e,t,r);if(!o.length||!a.length)return{cancelled:!0};let s=[];for(let e of o){let t=await Oe({jobId:e.id,applicantIds:a.map(e=>e.id)}).catch(()=>new Map);s.push({job:e,blockedCandidates:a.filter(e=>t.has(String(e.id))),allowedCandidates:a.filter(e=>!t.has(String(e.id)))})}let c=Yk(s),l=Xk(s),u=s.filter(e=>e.allowedCandidates.length>0);if(!u.length)return await n.Ht({tone:`duplicate`,title:`Selected candidates are already submitted`,body:`Every selected candidate is already submitted to the selected jobs. Choose different jobs to continue.`,facts:[{label:`Blocked combinations`,value:c}],okText:`Close`}),{cancelled:!0};if(s.some(e=>e.blockedCandidates.length>0)&&!await n.Vt({tone:`duplicate`,title:`Some candidate-job combinations are already submitted`,body:`Those combinations will be skipped. Continue tagging the remaining valid combinations?`,facts:[{label:`Will be skipped`,value:c},{label:`Will be tagged`,value:l}],okText:`Tag remaining`,cancelText:`Cancel`,footnote:`Already submitted combinations will be left unchanged.`}))return{cancelled:!0};for(let e of u){for(let t of e.allowedCandidates){let n=Zk(t.record??{},t.selectedId);await Mk({jobId:e.job.id,module:`jobs`,currentStage:i,...n?{candidateDetails:n}:{}})}await ue({jobId:e.job.id,candidateIds:e.allowedCandidates.map(e=>e.selectedId||e.id),hiringStage:i})}}},$k={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 eA(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 tA={submit:async(e,t,n)=>{let r=eA(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)}},nA={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:[]},rA={onOk:async e=>{await ke({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},iA={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`}]},aA={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?de():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await fe({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},oA=[{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 sA({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([me(n).catch(t=>(e||s.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),_e(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 pe({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:oA,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`})]})]})}sA.propTypes={selectedIds:f.default.array,onClose:f.default.func};var cA={title:`Self Assign`,width:480,className:`self-assign-modal`,component:sA},lA={submit:async()=>{}};function uA(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 dA={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=>(uA(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},fA={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?ge():[],loadExtraData:async e=>_e(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await xe({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},pA={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`}]},mA={getMentionOptions:async(e,t)=>se(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 H({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},hA={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`}]},gA={submit:async(e,t)=>{await Se({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function _A(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var vA={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function yA(e,t,n){let r=_A(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function bA(e){let t=e.selectedRecords?.[0]??{},n=yA(t,`candidateRate`,`candidateAcceptedRate`)??yA(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=yA(t,`candidateRate`,`candidateAcceptedCurrency`)??yA(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:yA(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??yA(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??vA[String(r??``).toUpperCase()]??(r||`$`),unit:yA(t,`candidateRate`,`candidateAcceptedPayUnit`)??yA(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var xA={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=bA(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=bA(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`}]}]},SA={submit:async(e,t)=>{let n=t.selectedIds[0];if(await Ce(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await we(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 CA(e,n={}){let r=t.u();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.T}${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 wA(e){let t=await CA(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`manager`}).toString()}`);return t.data??t}function TA(e){return Array.isArray(e)?e[e.length-1]:e}function EA(e={}){let t=TA(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function DA(e,t={}){let n=TA((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=TA(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function OA(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 kA(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function AA(e,t={}){let n=Number(e);return Number.isFinite(n)?`${OA(t)}${n}/${kA(t)}`:``}function jA(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 MA(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:EA(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:DA(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=jA(u,`(?:Proposed\\s*Rate|Pay\\s*Rate)`,AA(o,n)),u=jA(u,`(?:Job\\s*)?Bill\\s*Rate`,AA(c,n)),u}function NA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var PA=(e,t)=>!!e&&e.toLowerCase()===NA(t).toLowerCase();function FA(e,t,n){let r=NA(t.submittedBy);return NA(PA(r,n)||PA(r,e.submitSource)||PA(r,e.supplierName)||PA(r,e.source)||PA(r,e.candidateSource)?``:r,e.signatureEmail)}function IA(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:FA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function LA(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 RA(...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(LA).find(Boolean);if(e)return e}return``}function zA(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 BA(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 VA(...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(LA).find(Boolean);if(e)return e}return``}async function HA(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 UA(e,r,i){let a=[],o=await n._n(`submissions`,e,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=VA(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=VA((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(HA))).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 WA(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:BA(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function GA({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let a=n?.[0]??{},c=t?.[0]??j_(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 vv(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 Dv().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([wA(c).then(WA),UA(c,u,a).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??a;N({to:MA(e.to,n,b,u,a),cc:MA(e.cc,n,b,u,a),bcc:MA(e.bcc,n,b,u,a),subject:MA(e.subject,n,b,u,a),contents:MA(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 Ce(c,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...zA(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&&wE(M.to).length>0&&TE(M.to)&&TE(M.cc)&&TE(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 Ce(c,{...e,submitVia:`VMS`,...zA(S)});let t=RA(u?.record,a);if(!t)s.message.warning(`Submission approved, but job details were not available to send mail`);else try{await ln({jobId:t,toMail:wE(M.to),ccMail:wE(M.cc),bccMail:wE(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)(sv,{type:a_,record:u.record,lookups:u.lookups,identity:IA(a,u.display),referralOptions:m,onAddReferral:()=>e?.navigate?.(`/referrals-create`),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)(LE,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??a]})})]})}GA.propTypes={context:f.default.object,selectedIds:f.default.array,selectedRecords:f.default.array,moduleName:f.default.string,onClose:f.default.func};var KA={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:GA},qA={submit:async()=>{}};function JA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var YA=(e,t)=>!!e&&e.toLowerCase()===JA(t).toLowerCase();function XA(e,t,n){let r=JA(t.submittedBy);return JA(YA(r,n)||YA(r,e.submitSource)||YA(r,e.supplierName)||YA(r,e.source)||YA(r,e.candidateSource)?``:r,e.signatureEmail)}function ZA(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:XA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function QA(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 $A(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function ej({selectedIds:e,selectedRecords:t,onClose:r}){let i=t?.[0]??{},a=e?.[0]??j_(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([vv(a,i),n.dn(`submission`,a).catch(()=>[])]).then(([t,n])=>{if(e)return;let r=QA(n);f(j_(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?$A(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 U(d,{submissionId:a,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await Ce(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)(sv,{type:l_,record:c.record,lookups:c.lookups,identity:ZA(i,c.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}ej.propTypes={selectedIds:f.default.array,selectedRecords:f.default.array,onClose:f.default.func};var tj={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:ej},nj={submit:async()=>{}},rj=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],ij={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:rj.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},aj={submit:async(e,t)=>{let n=rj.find(t=>String(t.id)===String(e.rejectReason));await W({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},oj={delete:UO,"quick-submit":vk,"add-notes":yk,"tag-to-job":Tk,"change-status":$k,"remove-from-shortlist":nA,"add-to-groups":iA,"self-assign":cA,"others-assign":dA,"sticky-notes":pA,"move-to-onboarding":hA,"approve-rate":xA,"manager-approve":KA,"manager-reapprove":tj,reject:ij},sj={delete:WO,"quick-submit":_k,"add-notes":Sk,"tag-to-job":Qk,"change-status":tA,"remove-from-shortlist":rA,"add-to-groups":aA,"self-assign":lA,"others-assign":fA,"sticky-notes":mA,"move-to-onboarding":gA,"approve-rate":SA,"manager-approve":qA,"manager-reapprove":nj,reject:aj};function cj(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function lj(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 uj(e){let t=String(lj(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(lj(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function dj(e){let t=lj(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[lj(e,`firstName`,`first_name`),lj(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function fj(e){return String(lj(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function pj(e){return String(lj(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function mj(e){return String(lj(e,`batchName`,`name`,`title`,`batch_name`))}function hj({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(cj(e)),x(new Map(cj(n).filter(uj).map(e=>[String(lj(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=>[dj(t),lj(t,`email`,`candidateEmail`,`candidate_email`),lj(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(pj(e)));if(!e.length)return;let o=e.map(e=>({record:e,assignment:b.get(fj(e))})).filter(e=>e.assignment);if(o.length){let e=o.map(({record:e})=>dj(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=mj(r.selectedRecords?.[0])||mj(r);await Promise.all(e.map(e=>n.Zn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:o,candidateId:fj(e),workforceEngagementId:pj(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=>pj(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>dj(t)},{title:`Email`,key:`email`,render:(e,t)=>lj(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>lj(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(fj(e));return{disabled:!fj(e)||!pj(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var gj={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function _j(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:gj[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=vj(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function vj(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function yj(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 bj({apiMap:e={},extraConfigs:r={}}){let i=(0,o.useMemo)(()=>({...sj,...e}),[e]),a=(0,o.useMemo)(()=>{let e={...oj};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:_j(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 yj(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)(hj,{open:!0,context:h,onClose:_}):(0,l.jsx)(HO,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var xj={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`}]},Sj={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>on({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>sn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>ln({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},Cj=xj.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function wj(){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)(xj.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)(xj.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 Sj.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&&Sj.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([...wE(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function V(e){let t=new Set(z);g({...e,bcc:wE(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let ee=(wE(B.to).length||wE(B.bcc).length)&&TE(B.to)&&TE(B.cc)&&TE(B.bcc)&&B.subject.trim(),te=e=>e===`myVendor`?T:D;function ne(){e(-1)}function re(){ee&&Sj.submit({jobId:m,toMail:wE(B.to),ccMail:wE(B.cc),bccMail:wE(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:xj.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:Cj,dataSource:ie,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>xj.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)(LE,{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,` / `,xj.maxVendorSelect,` Vendors selected`]}):null})})]})})}var Tj={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].*$/},Ej={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},Dj={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 ${Ej.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.`},Oj={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},kj={REMARKS_MIN:10,REMARKS_MAX:250},Aj={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)}`}},jj={required:(e=`Field`)=>({required:!0,message:Dj.REQUIRED(e)}),email:()=>({pattern:Tj.EMAIL,message:Dj.INVALID_EMAIL}),phone:()=>({pattern:Tj.PHONE,message:Dj.INVALID_PHONE}),password:()=>({pattern:Tj.PASSWORD,message:Dj.INVALID_PASSWORD}),alphabets:()=>({pattern:Tj.ALPHABETS,message:Dj.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:Tj.ALPHANUMERIC,message:Dj.INVALID_ALPHANUMERIC}),number:()=>({pattern:Tj.NUMBER,message:Dj.INVALID_NUMBER}),url:()=>({pattern:Tj.URL,message:Dj.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:Tj.CANDIDATE_ID,message:Dj.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:Tj.REMARKS,message:Dj.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${kj.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${kj.REMARKS_MAX} characters.`}),designation:()=>({pattern:Tj.DESIGNATION,message:Dj.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!Tj.DOB.test(n))return Promise.reject(Error(Dj.INVALID_DOB));let r=(0,u.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(Dj.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:Tj.LINKEDIN,message:Dj.INVALID_LINKEDIN}),companyName:()=>({pattern:Tj.COMPANY_NAME,message:Dj.INVALID_COMPANY_NAME}),firstName:()=>({pattern:Tj.FIRST_NAME,message:Dj.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${Oj.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${Oj.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:Oj.FIRST_NAME_MIN,message:Dj.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:Oj.FIRST_NAME_MAX,message:Dj.FIRST_NAME_MAX}),remarksMinLength:()=>({min:kj.REMARKS_MIN,message:Dj.REMARKS_MIN}),remarksMaxLength:()=>({max:kj.REMARKS_MAX,message:Dj.REMARKS_MAX}),fullName:()=>({pattern:Tj.FULL_NAME,message:Dj.INVALID_FULL_NAME}),noSpaces:()=>({pattern:Tj.NO_SPACES,message:Dj.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:Tj.STARTS_WITH_CAPITAL,message:Dj.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<=Ej.MAX_FILE_SIZE))return s.message.error(Dj.INVALID_FILE_SIZE),Promise.reject(Error(Dj.INVALID_FILE_SIZE));if(!Ej.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(Dj.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ej.SINGLE_FILE_COUNT)return Promise.reject(Error(Dj.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<Ej.MAX_FILE_SIZE?Ej.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(Dj.INVALID_FILE_TYPE)):Promise.reject(Error(Dj.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ej.MULTI_FILE_COUNT)return Promise.reject(Error(Dj.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<Ej.MAX_FILE_SIZE))return Promise.reject(Error(Dj.INVALID_FILE_SIZE));if(!Ej.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(Dj.INVALID_FILE_TYPE))}return Promise.resolve()}})},Mj={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)},Nj=()=>{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:[jj.required(`Email`),jj.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:[jj.required(`Phone Number`),jj.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Aj.phoneFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:[jj.required(`Password`),jj.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:[jj.required(`Full Name`),jj.alphabets(),jj.firstNameMinLength(),jj.firstNameMaxLength()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({fullName:Aj.firstNameFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[jj.required(`Username`),jj.alphanumeric()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({username:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Website URL`,name:`website`,rules:[jj.required(`Website URL`),jj.url()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({website:Aj.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:[jj.required(`MSP Req ID`),jj.candidateId(`MSP Req ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[jj.required(`Candidate ID`),jj.candidateId(`Candidate ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({candidateId:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(s.Form.Item,{label:`Remarks`,name:`remarks`,rules:[jj.required(`Remarks`),jj.remarks(),jj.remarksMinLength(),jj.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:[jj.required(`Designation`),jj.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:[jj.dob()],children:(0,l.jsx)(s.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Aj.dobFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Company Name`,name:`companyName`,rules:[jj.required(`Company Name`),jj.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:Mj.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:[jj.multiFileUpload()],children:(0,l.jsx)(s.Upload,{multiple:!0,beforeUpload:Mj.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:[jj.fileUpload()],children:(0,l.jsx)(s.Upload,{beforeUpload:Mj.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 Pj(e){return(0,l.jsx)(Wy,{children:(0,l.jsx)(yE,{...e})})}var{Text:Fj}=s.Typography,Ij=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Lj={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 Rj({stats:e=Ij}){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:[Lj[e.icon]??Lj.fileText,(0,l.jsx)(Fj,{children:e.label})]}),(0,l.jsx)(s.Statistic,{value:e.value})]})},e.label))})})}var{Text:zj}=s.Typography;function Bj(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 Vj(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Bj(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function Hj(){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(Vj);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)(Om,{listName:`Users`,dataSource:e,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsx)(zj,{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:Uj}=s.Typography,Wj=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Gj=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function Kj({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 qj({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.Jr(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.bi(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:Wj.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)(Kj,{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 `,Wj.find(e=>e.key===f)?.label]})})]})}function Jj(){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.yi(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)(Om,{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:Gj.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)(qj,{team:e,configType:d},`${e?.teamId}-${d}`)]})]})}var Yj=[`view`,`add`,`edit`,`delete`],Xj={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 Zj(e){return Xj[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Qj(e){let t=Yj.filter(t=>e.includes(t)),n=e.filter(e=>!Yj.includes(e)).sort();return[...t,...n]}function $j(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Qj([...t])}function eM(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{nx(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function tM(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 nM({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 rM({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 iM({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let c=t?.permissions??{},u=n.filter(t=>nx(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)(nM,{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)(rM,{entry:c[t],label:a[t]??Zj(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function aM({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.Ur(e);(0,o.useEffect)(()=>{b&&(h(!0),y(!1),n.Kr(b).then(e=>{let t=tM(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._i(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)(()=>$j(f),[f]),{enabled:T,total:E}=(0,o.useMemo)(()=>eM(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)(iM,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:t[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:a},e))})]})}var{Text:oM}=s.Typography,sM=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function cM(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function lM(e){return String(e||``).trim().toLowerCase()}function uM(e){return e?.key||e?.collectionName||e?.value||``}function dM(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=uM(e);if(!t)return;let o=lM(e.key||t),s=lM(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||cM(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=lM(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:cM(t),value:t,disabled:!1}))}),n}function fM(){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=dM(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.ci(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)(oM,{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)(Om,{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:sM.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)(aM,{role:e},e?.roleId):(0,l.jsx)(yx,{role:e,configType:a},`${e?.roleId}-${a}`))]})]})}var pM=`perm-module-labels`,mM=`perm-action-labels`;function hM(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function gM(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function _M({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 vM({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.pi(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.fi(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)(_M,{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)(_M,{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 yM(){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)(()=>hM(pM)),[_,v]=(0,o.useState)(()=>hM(mM)),y=(0,o.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return gM(pM,r),r})},[]),b=(0,o.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return gM(mM,r),r})},[]);function x(){g({}),v({}),gM(pM,{}),gM(mM,{}),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)(aM,{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)(vM,{open:p,onClose:()=>m(!1)})]})}var{Title:bM,Text:xM}=s.Typography,SM=[{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 CM({items:e=SM}){return(0,l.jsx)(s.Card,{className:`onboarding-card`,title:(0,l.jsx)(bM,{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)(xM,{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)(xM,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:wM,Title:TM}=s.Typography,EM=[{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.`}]}]}],DM=[{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}],OM=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],kM=[{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 AM(){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)(TM,{level:5,children:`Admin Dashboard`}),(0,l.jsx)(wM,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,l.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,l.jsx)(Rj,{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)(CM,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,l.jsx)(wM,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,l.jsx)(`div`,{className:`admin-pipeline-bar`,children:DM.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:DM.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)(wM,{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)(wM,{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)(wM,{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)(wM,{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:OM.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:kM.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)(wM,{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)(wM,{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)(wM,{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)(wM,{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)(wM,{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)(wM,{style:{fontSize:12},children:e}),(0,l.jsx)(wM,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function jM({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)(TM,{level:5,children:e?.heading}),(0,l.jsx)(wM,{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)(wM,{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:EM.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 MM(){let[e,t]=(0,o.useState)(`dashboard`),[n,r]=(0,o.useState)(``),i=(0,o.useMemo)(()=>EM.flatMap(e=>e.items),[]),a=(0,o.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,o.useMemo)(()=>EM.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)(()=>EM.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:EM.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)(AM,{}):a?.component===`form-groups`?(0,l.jsx)(hC,{}):a?.component===`detail-groups`?(0,l.jsx)(qC,{}):a?.component===`row-actions`?(0,l.jsx)(Iw,{}):a?.component===`users`?(0,l.jsx)(Hj,{}):a?.component===`teams`?(0,l.jsx)(Jj,{}):a?.component===`roles`?(0,l.jsx)(fM,{}):a?.component===`permissions`?(0,l.jsx)(yM,{}):a?.component===`templates`?(0,l.jsx)(Jw,{}):a?.component===`ai-services`?(0,l.jsx)(Qw,{}):a?.component===`bgc-integration`?(0,l.jsx)(iT,{}):(0,l.jsx)(jM,{activeSection:a,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:NM}=s.Typography;function PM(){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)(Pt,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:FM,Title:IM}=s.Typography,LM=10485760,RM=`/templates/test_cases_flow_template.base64.txt`,zM=`test_cases_flow_template.xlsx`,BM=`module | subModule | step_order | description | actions | key | value | expected | scenario`,VM={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},HM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function UM(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 WM(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function GM(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function KM({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 qM({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 JM({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)(FM,{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)(KM,{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 YM(){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=GM(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=VM[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 sb({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>LM){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 UM(e);g(`validating`);let i=await nb({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(RM);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=zM,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 rb({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:WM(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:HM})}),r?.name&&(0,l.jsx)(s.Col,{children:(0,l.jsx)(FM,{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)(IM,{level:3,children:`Bulk upload test cases`}),(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,children:[(0,l.jsx)(FM,{type:`secondary`,children:BM}),(0,l.jsx)(FM,{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)(qM,{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)(JM,{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)(FM,{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)(FM,{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)(FM,{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 XM=[{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:ZM}=s.Typography,QM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],$M={tags:`regression`,active:1},eN={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function tN(e=[]){return e.map(e=>({value:e,label:e}))}function nN(e=``){return String(e??``).trim()}function rN(e=``){return nN(e).toLowerCase()}function iN(e=[]){let t=new Map;return e.forEach(e=>{let n=nN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function aN(e=[],t,n){let r=nN(t).toLowerCase(),i=nN(n).toLowerCase();return e.reduce((e,t)=>{let n=nN(t?.module).toLowerCase(),a=nN(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 oN({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)(ZM,{strong:!0,className:`v1-section-label`,children:t})]})}function sN(){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=eN[v.typeKey],O=(0,o.useMemo)(()=>tN(r),[r]),k=s.Form.useWatch(`module`,e),A=s.Form.useWatch(`flow`,e),j=!!nN(k),M=!!nN(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{let e=await Zy(eN.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=nN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await tb({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(iN(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=nN(t),a=nN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}C(!0);try{e.setFieldsValue({step_order:aN(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:nN(t.module),flow:nN(t.flow),step_order:Number(t.step_order),description:nN(t.description),keyword:rN(t.keyword),target:nN(t.target),value:nN(t.value),expected:nN(t.expected),tags:t.tags?nN(t.tags):$M.tags,active:Number(t.active)};T(!0);try{await eb(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]:nN(n)})},V=t=>{e.setFieldsValue({module:nN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:$M.tags,value:void 0,expected:void 0})},ee=t=>{e.setFieldsValue({flow:nN(t),step_order:void 0})},te=e=>{let n=eN[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=nN((await t.validateFields()).name),r=await Qy({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:QM})}),(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)(ZM,{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:$M,onFinish:z,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(oN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,l.jsx)(ZM,{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:XM,onChange:t=>e.setFieldsValue({keyword:rN(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:nN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var{Text:cN}=s.Typography,lN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function uN(e=``){return String(e??``).trim()}function dN(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var fN=[{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`})}],pN={key:!1,value:!1,expected:!1};function mN(e,t){return t?e[t]??pN:pN}function hN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function gN(){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)(XM),[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)(()=>mN(x,F),[x,F]),z=(0,o.useMemo)(()=>dN(p,`modulename`),[p]),B=(0,o.useMemo)(()=>dN(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 $y();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 sb({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 ub({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([pb({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r,actions:i,limit:1e3}),gb({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]),ae=(0,o.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{let t=await pb({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]),oe=(0,o.useCallback)(async()=>{if(!(!a||!f?.name)){M(!0);try{let t=await hb(a);await re(f.name,t.module);let n=await pb({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 oe()})},[f,r,te,ne,a,oe]),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:lN})}),(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)(cN,{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:uN(t.description),actions:uN(t.actions),key:uN(t.key),value:uN(t.value),expected:uN(t.expected),scenario:+!!t.scenario,active:+!!t.active};A(!0);try{if(u){await _b(a,{...n,step_order:Number(t.step_order)}),s.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await mb(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}),hN(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}),hN(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)(cN,{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=mN(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}),hN(e,[`key`,`value`,`expected`]),ae(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)(Om,{listName:`Added Steps`,loading:D,fields:fN,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:_N}=s.Typography,vN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function yN(){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([sb({project:e}),ub({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 lb(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 cb({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:vN})}),(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)(_N,{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)(Om,{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)(_N,{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:bN}=s.Typography,xN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function SN(){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 ub({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 fb(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 db({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:xN})}),(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)(bN,{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)(bN,{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)(Om,{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)(bN,{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:CN}=s.Typography,wN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function TN(){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 pb({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 vb(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:wN})}),(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)(CN,{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)(Om,{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 EN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function DN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:EN}),(0,l.jsx)(qo,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:ON}=s.Typography,kN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],AN={tags:`regression`,active:1},jN={module:{dbName:`Modules`,formField:`module`,label:`Module`}},MN={key:!1,value:!1,expected:!1};function NN(e,t){return t?e[t]??MN:MN}function PN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function FN(e=[]){return e.map(e=>({value:e,label:e}))}function IN(e=``){return String(e??``).trim()}function LN(e=[]){let t=new Map;return e.forEach(e=>{let n=IN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function RN(e=[],t,n){let r=IN(t).toLowerCase(),i=IN(n).toLowerCase();return e.reduce((e,t)=>{let n=IN(t?.module).toLowerCase(),a=IN(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 zN({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)(ON,{strong:!0,className:`v1-section-label`,children:t})]})}function BN(){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)(XM),[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=jN[S.typeKey],M=(0,o.useMemo)(()=>FN(r),[r]),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`flow`,e),F=s.Form.useWatch(`keyword`,e),I=!!IN(N),L=!!IN(P),R=!I,z=!I||!L,B=(0,o.useMemo)(()=>NN(g,F),[g,F]),V=(e,t=[])=>{e===`module`&&i(t)},ee=async()=>{y(!0);try{let e=await Zy(jN.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 $y();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=IN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await ab({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(LN(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=IN(t),a=IN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}D(!0);try{e.setFieldsValue({step_order:RN(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:IN(t.module),flow:IN(t.flow),step_order:Number(t.step_order),description:IN(t.description),keyword:IN(t.keyword),target:IN(t.target),value:IN(t.value),expected:IN(t.expected),tags:t.tags?IN(t.tags):AN.tags,active:Number(t.active)};k(!0);try{await ib(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)}},ae=(t,n)=>{e.setFieldsValue({[t]:IN(n)})},oe=t=>{e.setFieldsValue({module:IN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:AN.tags,value:void 0,expected:void 0}),PN(e,[`keyword`,`target`,`value`,`expected`])},se=t=>{e.setFieldsValue({flow:IN(t),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),PN(e,[`keyword`,`target`,`value`,`expected`])},H=t=>{let n=NN(g,t);e.setFieldsValue({keyword:IN(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}),PN(e,[`target`,`value`,`expected`])},ce=e=>{let n=jN[e];C({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},le=()=>{C(e=>({...e,open:!1})),t.resetFields()},ue=async()=>{try{let n=IN((await t.validateFields()).name),r=await Qy({name:n,type:j.dbName});V(S.typeKey,r?.items??[]),e.setFieldsValue({[j.formField]:n}),s.message.success(`${j.label} added successfully.`),le()}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:kN})}),(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)(ON,{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:AN,onFinish:ie,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(zN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,l.jsx)(ON,{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:oe})}),(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:se,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:H})})}),(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=>ae(`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=>ae(`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=>ae(`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=>ae(`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=>ae(`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:le,onOk:()=>{T(!0),ue()},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:IN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var VN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function HN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:VN}),(0,l.jsx)(qo,{moduleName:`lms-flows`,rowKey:`id`})]})}var UN=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function WN(e=UN){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 GN(e,t=UN){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 KN=WN();function qN(e){return typeof e==`function`?e:typeof e==`string`?WN([e]):Array.isArray(e)?WN(e):KN}function JN(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function YN(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var XN=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function ZN(e){let t=e?.data??e,n={};for(let r of XN){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var QN=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function $N(e,t,n){let r=(Array.isArray(n)?n:[n]).map(QN).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(QN(e?.value))||r.includes(QN(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 eP=(e,t)=>pi(e,t).rows,tP=(e,t)=>{let{rows:n,total:r}=pi(e,t);return{rows:n,total:r}};function nP(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function rP(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:eP,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:JN,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function iP({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[rP({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 aP(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:UN;return e=>GN(e,t)}function oP(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 sP({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 cP(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 lP({fetchPrimaryPage:e,extractPrimaryPage:t=tP,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=eP,fetchSecondary:o,extractSecondaryRows:s=eP,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=JN,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map(rP).filter(Boolean):iP({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=qN(t.primaryKey??l),s=aP(t.key),c=oP(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=ZN(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=$N(r.fields??[],p,m)),YN(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=qN(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 cP(c,sP({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 uP(e,t,n={}){return lP({fetchPrimary:()=>Ak(e,t),extractPrimaryRows:Ok,fetchSecondary:Cn,fetchSecondaryById:jk,secondaryFetchLimit:n.moduleFetchLimit??200})}function dP(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 fP(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=dP(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var pP=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function mP({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=JN(n,r,i),o=pP(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function hP(e={}){let t=mP();return lP({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:Cn,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return kk(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(fP),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function gP(e,t=10,n=0,r={},i={}){return pi(await hP(i)(e,t,n,r),e)}async function _P(e,t,n,r=10,i=0,a={}){return pi(await uP(e,t)(n,r,i,a),n)}typeof window<`u`&&(window.__CORE_THEME_BUILD__=`2026-08-28T10:36:31.003Z`);var vP=Pj,yP=xb(MM),bP=xb(PM),xP=xb(YM),SP=xb(sN),CP=xb(gN),wP=xb(yN),TP=xb(SN),EP=xb(TN),DP=xb(DN),OP=xb(BN),kP=xb(HN);exports.ADMIN_API_URL=t.v,exports.ADMIN_APP_ID=t.y,exports.APP_ID=t.b,exports.AUTH_URL=t.x,exports.ActivityNotesCard=Hc,exports.ActivityTab=Lc,exports.AddBatchCandidatePopup=hj,exports.AddFormV1=bc,exports.AdminDashboard=Pj,exports.AdminDashboardContent=yE,exports.AdminPage=vP,exports.AppAlert=xc,exports.AppButton=n.ut,exports.AppShell=Wy,exports.ApprovalActionBar=$g,exports.AssigneeAvatars=Uc,exports.AuthGuard=Ly,exports.BILLING_STATUS_FLOW=Qd,exports.BOOLEAN_API_KEYS=zh,exports.BOOLEAN_PARSEABLE_API_KEYS=Um,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Wc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Gc,exports.Breadcrumb=n.t,exports.BulkUploadPage=xP,exports.BulkUploadPanel=$c,exports.CANDIDATES_URL=t.S,exports.CONTRACT_C2C=C_,exports.CONTRACT_W2=S_,exports.CURRENCY_SYMBOLS=su,exports.CalendarCard=A,exports.CoreThemeAdminApp=CE,exports.CoreThemeAdminRoutes=SE,exports.CustomPagination=ze,exports.DEFAULT_HOURS_POLICY=xg,exports.DayLogModal=Gg,exports.DescriptionBlock=fl,exports.DetailHeaderCard=tp,exports.DetailViewPage=cp,exports.DetailViewV1=Zu,exports.DocumentViewer=n.wn,exports.DynamicCards=Pt,exports.DynamicPopup=HO,exports.DynamicPopupRoute=bj,exports.DynamicTabs=P,exports.EditFormV1=om,exports.FIELD_TYPE_REGISTRY=wh,exports.FINANCE_APPROVAL_CONFIG=m_,exports.FINANCE_TYPE_CFO=s_,exports.FINANCE_TYPE_ONBOARDING_MANAGER=o_,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=u_,exports.FINANCE_TYPE_ONLY_FINANCE=c_,exports.FINANCE_TYPE_SUBMISSION_MANAGER=a_,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=l_,exports.FileListCard=Ov,exports.FinanceApprovalPanel=sv,exports.FinanceAvatar=Pf,exports.FinanceBadge=Rf,exports.FinanceDayCell=t_,exports.FinanceDivider=Ef,exports.FinanceEmployeeCell=Ff,exports.FinanceEmptyState=Cf,exports.FinanceEquation=Df,exports.FinanceHistoryTimeline=jf,exports.FinanceHoursGrid=Sf,exports.FinanceKpiRow=xf,exports.FinanceLine=Tf,exports.FinanceListToolbar=bg,exports.FinanceMarginBadge=zf,exports.FinanceMoneyCell=Lf,exports.FinanceRecordsTable=Hf,exports.FinanceRowChevron=Bf,exports.FinanceSection=wf,exports.FinanceStatusPill=bf,exports.FinanceTextCell=If,exports.FinanceTimesheetAnalysis=r_,exports.FinanceWorkflowSteps=Of,exports.HOURS_MESSAGES=Sg,exports.Header=ry,exports.HierarchyUserFilter=zt,exports.JOBS_URL=t.C,exports.LegacyAdminPage=yP,exports.ListView=qo,exports.LmsHomePage=kP,exports.LmsTestForm=OP,exports.Login=Gy,exports.MailPopup=QE,exports.ManageModules=wP,exports.ManageSubmodules=TP,exports.ModuleRowActions=hm,exports.NotesPanel=Qg,exports.NotesTab=Vc,exports.PAYROLL_STATUS_FLOW=$d,exports.POPUP_CONFIGS=oj,exports.ParamCardView=Sm,exports.ParamListView=Om,exports.PeriodBadgeTag=Pg,exports.PreviewPopup=kD,exports.ProjectSelect=bb,exports.ProofUploadPreview=Zg,exports.QuickLogBar=Jg,exports.QuickLogSelectionBar=Kg,exports.RejectionReasonModal=qg,exports.SUBMISSIONS_URL=t.T,exports.SearchBuilderV1=dg,exports.Sidebar=Ny,exports.StatusBadge=pg,exports.StatusBadgeTag=Ng,exports.StickyNotesFullPage=bP,exports.StylishDynamicTabs=hg,exports.TemplateEditor=_g,exports.TestForm=SP,exports.TestingHomePage=DP,exports.TimelineGroups=kc,exports.TimesheetDayCell=Hg,exports.TipTapEditor=n.Tn,exports.UserForm=Nj,exports.VendorShareDrawer=wj,exports.ViewSummaryWidget=zi,exports.WizardPopup=FD,exports.ZinnextTableView=EP,exports.ZinnextTestForm=CP,exports.appNow=n.kn,exports.applyIntegrationStatus=n.Gn,exports.approveSubmission=Ce,exports.buildAcceptAttr=Xc,exports.buildBooleanRequest=Wh,exports.buildCsv=mf,exports.buildDailyRows=cf,exports.buildDayGradient=Bg,exports.buildRateHistoryEntries=J_,exports.buildWeeklyRollup=df,exports.clearSelectedProject=t.i,exports.colors=n.On,exports.computeFinance=B_,exports.computeHoursPolicy=Og,exports.computeMarginBand=ff,exports.conditionMatches=n.i,exports.configureCoreTheme=t.E,exports.configuredFieldLabel=n.a,exports.createAllWorkflowsListFetcher=hP,exports.createMergedListFetcher=lP,exports.createModuleListFetchAdapter=nP,exports.createWorkflowStageListFetcher=uP,exports.currencySymbol=cu,exports.defaultMergeRow=JN,exports.deleteIntegrationConfig=n.nr,exports.deriveDayStats=sf,exports.describeCapacity=Ag,exports.downloadCsv=vf,exports.evaluateShowIfWith=n.o,exports.findEmployerRow=P_,exports.flattenGroups=M_,exports.formatAmount=mu,exports.formatApp=n.An,exports.formatAppDateTime=n.jn,exports.formatFileSize=Yc,exports.formatFinanceMoney=Y_,exports.formatHours=Ud,exports.formatMoney=hu,exports.formatPercent=Gd,exports.formatRate=gu,exports.getActivity=n.dn,exports.getAllWorkflowsModuleList=gP,exports.getAppTimeZone=n.Mn,exports.getApprovalDate=Yd,exports.getBgcIntegrationConfig=n.br,exports.getBgcIntegrationSummary=n.xr,exports.getBillingActionStates=ef,exports.getBooleanEligibleTypes=Ah,exports.getCurrentRoleName=t.c,exports.getFieldLabel=gf,exports.getFieldType=Eh,exports.getFileExtension=Jc,exports.getFinanceApprovalConfig=y_,exports.getFormGroupsRaw=_v,exports.getIntegrationConfig=n.Dr,exports.getIntegrationConfigs=n.Or,exports.getIntegrationSummary=n.kr,exports.getModuleConfig=Ie,exports.getModuleDataDetail=n.pn,exports.getPayrollActionStates=tf,exports.getPeriodBadgeConfig=Re,exports.getSelectedProject=t.l,exports.getStoredToken=t.u,exports.getStoredUser=t.d,exports.getUserRoles=t.f,exports.getVMSApprove=we,exports.getValueStyle=_f,exports.getWorkflowStageModuleList=_P,exports.getWorkflowSteps=nf,exports.humanizeEvent=Jd,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return vs}}),exports.indexFieldConfig=hf,exports.initialsOf=Kd,exports.insertTokenAtCursor=qm,exports.isBooleanEligible=Dh,exports.isBooleanParsable=Gm,exports.isTester=t.p,exports.logout=t.h,exports.marginIncludesReferral=x_,exports.matchLocationTax=z_,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return gp}}),exports.normalizeContract=I_,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return el}}),exports.rateUnitLabel=uu,exports.rateUnitShort=fu,exports.reconcileHours=kg,exports.registerFieldType=Th,exports.rejectSubmission=W,exports.resolveActivityMeta=Pc,exports.resolveAndCompute=V_,exports.resolveDayKind=Eg,exports.resolveFinanceInputs=R_,exports.resolveMergeKey=KN,exports.resolveMergedListKey=KN,exports.resolveRejectionReason=b_,exports.resolveSubmissionFinance=vv,exports.saveBgcIntegrationConfig=n.$r,exports.saveIntegrationConfig=n.ni,exports.setSelectedProject=t._,exports.showIfConditions=n.c,exports.stageCountKey=dP,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ky}}),exports.testIntegrationConnection=n.li,exports.toApp=n.Pn,exports.toNumber=pu,exports.tzLabel=n.Fn,exports.tzShortLabel=n.In,exports.useDropdownFields=zn,exports.useDropdownValues=Bi,exports.useEditForm=kv,exports.useFieldConfig=Bn,exports.useFilterFields=Vn,exports.useMenuPermission=rr,exports.useModuleActions=cm,exports.useRecordRefresh=ap,exports.validateBooleanQuery=Km,exports.validateBulkFile=Zc,exports.withAdminAppId=t.D,exports.withAppId=t.O,exports.withAuthGuard=xb;
22
+ `))}function dD(e){let t=e.match(/^([A-Za-z][A-Za-z&/ ]{1,28}?)\s*:\s*(\S.+)$/);if(!t)return null;let n=t[1].trim(),r=t[2].trim();return n.split(/\s+/).length>3||r.length>60?null:{fieldKey:n.toLowerCase().replace(/\s+/g,`-`),fieldLabel:oD(n),value:r}}function fD(e){let t=e.toLowerCase().replace(/[\s:.\-–—]+$/,``).trim();return nD.has(t)?rD.test(t)?`education`:iD.test(t)?`keySkills`:`overview`:null}function pD(e){let t=[],n={overview:[],keySkills:[],education:[]},r=`overview`;return e.forEach(e=>{let i=fD(e);if(i){r=i;return}if(r===`overview`){let n=dD(e);if(n){t.push(n);return}}n[r].push(e)}),{meta:t,overview:sD(n.overview),keySkills:sD(n.keySkills),education:sD(n.education)}}function mD(e){let t=[...tD].sort((e,t)=>t.length-e.length),n=RegExp(`\\b(${t.map(aD).join(`|`)})\\b\\s*:?`,`gi`),r=[...e.matchAll(n)];if(!r.length)return{meta:[],overview:sD(uD(e)),keySkills:[],education:[]};let i={overview:[],keySkills:[],education:[]},a=e.slice(0,r[0].index).trim();return a&&i.overview.push(...uD(a)),r.forEach((t,n)=>{let a=t[1].trim().toLowerCase(),o=t.index+t[0].length,s=n+1<r.length?r[n+1].index:e.length,c=uD(e.slice(o,s).trim());if(!c.length)return;let l=rD.test(a)?`education`:iD.test(a)?`keySkills`:`overview`;i[l].push(...c)}),{meta:[],overview:sD(i.overview),keySkills:sD(i.keySkills),education:sD(i.education)}}function hD(e){let t=cD(e);if(!t)return{meta:[],overview:[],keySkills:[],education:[]};let n=lD(t);return n.length>=4?pD(n):mD(t)}function gD({items:e}){return(0,l.jsx)(`ul`,{className:`jdv-ats-bullets`,children:e.map((e,t)=>(0,l.jsx)(`li`,{className:`jdv-ats-bullet-item`,children:e},t))})}function _D({raw:e=``,meta:t=[]}){let[n,r]=(0,o.useState)(!1),i=(0,o.useMemo)(()=>hD(e),[e]),a=t.length?t:i.meta,s=[];if(i.overview.length&&s.push({key:`overview`,title:`Overview`,items:i.overview}),i.keySkills.length&&s.push({key:`keySkills`,title:`Key Skills`,items:i.keySkills,card:!0,icon:`🛠️`}),i.education.length&&s.push({key:`education`,title:`Education`,items:i.education,card:!0,icon:`🎓`}),!a.length&&!s.length)return(0,l.jsx)($E,{type:`secondary`,children:`No description available.`});let c=n?s:s.slice(0,eD),u=s.length-eD;return(0,l.jsxs)(`div`,{className:`jdv-ats-desc`,children:[a.length>0&&(0,l.jsx)(`div`,{className:`jdv-ats-meta-grid`,children:a.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??t))}),(0,l.jsx)(`div`,{className:`jdv-ats-sections`,children:c.map(e=>e.card?(0,l.jsxs)(`div`,{className:`education-block`,children:[(0,l.jsxs)(`div`,{className:`education-header`,children:[(0,l.jsx)(`span`,{children:e.icon}),(0,l.jsx)(`span`,{children:e.title})]}),(0,l.jsx)(`ul`,{className:`education-list`,children:e.items.map((e,t)=>(0,l.jsx)(`li`,{className:`education-list-item`,children:e},t))})]},e.key):(0,l.jsxs)(`div`,{className:`jdv-ats-section`,children:[(0,l.jsx)(`div`,{className:`jdv-ats-section-hd`,children:(0,l.jsx)(`span`,{children:e.title})}),(0,l.jsx)(gD,{items:e.items})]},e.key))}),u>0&&(0,l.jsx)(`span`,{className:`jdv-desc-toggle`,onClick:()=>r(e=>!e),children:n?`Show less`:`Show more (${u} more section${u>1?`s`:``})`})]})}var{Text:vD}=s.Typography;function yD(e){return e?e.trim().split(/\s+/).slice(0,2).map(e=>e[0].toUpperCase()).join(``):`?`}function bD(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 xD(e){return e?e.email??e.emailId??e.emailAddress??``:``}function SD(e){return e?e.status?e.status:e.stage?e.stage:typeof e.isActive==`boolean`?e.isActive?`Active`:`Inactive`:``:``}function CD(e){return e==null||e===``?`-`:typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?e.join(`, `):typeof e==`object`?e.label??e.name??Object.values(e).join(` `):String(e)}var wD=[`jobDescription`,`description`,`rawDescription`,`jobDescriptionText`];function TD(e){return String(e??``).toLowerCase()===`job`}function ED(e){let t=wD.includes(e.field),n=/description/i.test(e.label??``);return t||n}function DD({record:e}){let t=bD(e),n=xD(e),r=SD(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:yD(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 OD({fields:e,moduleName:t,centralDocuments: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){let t=String(e?.type??``).trim().toLowerCase(),n=`${e?.field??``} ${e?.label??``}`;return[`file`,`document`,`upload`].includes(t)||/resume|cv|document|attachment/i.test(n)}function p(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=e.value,a=Array.isArray(i)&&i.length>0,o=TD(t)&&ED(e)&&typeof i==`string`&&i.trim(),s=f(e)?r.filter(t=>{let n=String(t?.fieldName??t?.field??t?.formField??t?.key??``).trim().toLowerCase(),r=String(e?.field??``).trim().toLowerCase();if(n&&r&&n===r)return!0;let i=`${e?.field??``} ${e?.label??``}`;return/resume|cv/i.test(i)?/resume|cv/i.test(`${n} ${t?.fileName??``} ${t?.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):[],c=f(e)?s.length?s:n.Rt(i).filter(e=>e.url):[];return c.length?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--documents`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`div`,{className:`preview-document-list`,children:c.map((e,t)=>(0,l.jsxs)(`button`,{type:`button`,className:`preview-document-link`,onClick:()=>p(c,t),title:`Preview ${e.name||`document`}`,children:[(0,l.jsx)(`span`,{className:`preview-document-link__icon`,"aria-hidden":`true`,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}`))})]},e.field??e.label):a?i.map((t,n)=>(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsxs)(`span`,{className:`preview-field-card__label`,children:[e.label,i.length>1?` (${n+1})`:``]}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:CD(t)})]},`${e.field??e.label}-${n}`)):o?(0,l.jsxs)(`div`,{className:`preview-field-card preview-field-card--description`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`div`,{className:`preview-field-card__description`,children:(0,l.jsx)(_D,{raw:i})})]},e.field??e.label):(0,l.jsxs)(`div`,{className:`preview-field-card`,children:[(0,l.jsx)(`span`,{className:`preview-field-card__label`,children:e.label}),(0,l.jsx)(`span`,{className:`preview-field-card__value`,children:CD(i)})]},e.field??e.label)})}),(0,l.jsx)(n.wn,{documents:i,open:u,onClose:()=>d(!1),initialIndex:s})]})}function kD(){let e=(0,d.useNavigate)(),{moduleName:t=``,record:r=null}=(0,d.useLocation)().state??{},i=r?.id??r?._id,[c,u]=(0,o.useState)([]),[f,p]=(0,o.useState)(!!(t&&i)),[m,h]=(0,o.useState)(null),[g,_]=(0,o.useState)([]),[v,y]=(0,o.useState)(0),b=(0,o.useRef)(null),x=(0,o.useRef)(null),S=(0,o.useRef)([]),C=(0,o.useRef)([]);(0,o.useEffect)(()=>{if(!t||!i)return;let e=!1;return Promise.all([a.r({module:t,id:i}),n._n(t,i).catch(()=>({data:[]}))]).then(([t,n])=>{e||(u(Array.isArray(t)?t:[]),_(Array.isArray(n)?n:n?.data??[]),p(!1))}).catch(t=>{e||(h(t.message||`Failed to load preview`),_([]),p(!1))}),()=>{e=!0}},[t,i]);function w(){e(-1)}function T(e,t){return e?.label??e?.name??`Section ${t+1}`}function E(e){let t=b.current,n=C.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;y(e),t.scrollTo({top:Math.max(0,o),behavior:`smooth`})}function D(){let e=b.current;if(!e||!C.current.length)return;let t=e.getBoundingClientRect().top+(e.querySelector(`.preview-stepper-wrap`)?.offsetHeight??0)+24,n=0;C.current.forEach((e,r)=>{e&&e.getBoundingClientRect().top<=t&&(n=r)}),y(e=>e===n?e:n)}(0,o.useEffect)(()=>{let e=x.current,t=S.current[v];if(!e||!t)return;let n=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2,r=Math.max(0,e.scrollWidth-e.clientWidth);e.scrollTo({left:Math.min(Math.max(0,n),r),behavior:`smooth`})},[v,c.length]);function O(){return c.length?(0,l.jsx)(`div`,{ref:x,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=>{S.current[t]=e},onClick:()=>E(t),"aria-current":v===t?`step`:void 0,title:`Go to ${T(e,t)}`,children:[(0,l.jsx)(`span`,{className:[`preview-stepper__circle`,t<v?`preview-stepper__circle--done`:``,t===v?`preview-stepper__circle--active`:``].filter(Boolean).join(` `),children:t+1}),(0,l.jsx)(`span`,{className:[`preview-stepper__label`,t===v?`preview-stepper__label--active`:``].filter(Boolean).join(` `),children:T(e,t)})]}),t<c.length-1&&(0,l.jsx)(`span`,{className:[`preview-stepper__line`,t<v?`preview-stepper__line--done`:``].filter(Boolean).join(` `),"aria-hidden":`true`})]},e.name??e.id??t))})}):null}let k=(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`})]}),A=(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:w,children:`Close`})})});function j(){return!t||!i?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:`Preview id is missing.`}):f?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status`,children:(0,l.jsx)(s.Spin,{size:`small`})}):m?(0,l.jsx)(`div`,{className:`job-preview-content job-preview-status job-preview-error`,children:m}):c.length?(0,l.jsx)(`div`,{className:`preview-section-list`,children:c.map((e,n)=>(0,l.jsxs)(`section`,{ref:e=>{C.current[n]=e},className:`preview-section-card`,"data-section-index":n,children:[(0,l.jsxs)(`div`,{className:`preview-section-card__header`,children:[(0,l.jsx)(`span`,{className:`preview-section-card__number`,children:n+1}),(0,l.jsx)(`span`,{className:`preview-section-card__title`,children:T(e,n)})]}),(0,l.jsx)(`div`,{className:`preview-section-card__body`,children:e.fields?.length>0?(0,l.jsx)(OD,{fields:e.fields,moduleName:t,centralDocuments:g}):(0,l.jsx)(vD,{type:`secondary`,children:`No fields in this group.`})})]},e.name??e.id??n))}):(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:A,open:!0,title:k,width:`min(900px, calc(100vw - 32px))`,onCancel:w,maskClosable:!1,children:(0,l.jsxs)(`div`,{ref:b,className:`wizard-body preview-scroll-body`,onScroll:D,children:[!f&&!m&&c.length>0&&O(),r&&(0,l.jsx)(DD,{record:r}),j()]})})}var{Text:AD}=s.Typography,{TextArea:jD}=s.Input,MD=[{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 ND(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)(jD,{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 PD({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)(AD,{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)(AD,{type:`secondary`,children:`Please review the information above before submitting.`})]})]}):(0,l.jsx)(`div`,{className:`wizard-review-empty`,children:(0,l.jsx)(AD,{type:`secondary`,children:`No data entered yet.`})})}function FD(){let[e]=s.Form.useForm(),t=(0,d.useNavigate)(),{title:n=`Wizard`,moduleName:r=``,steps:i=MD,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:ND(e)})},e.name))})},e.key)),f.isReview&&(0,l.jsx)(PD,{steps:i,form:e})]})})]})}function ID({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 LD({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 RD({footerNote:e}){return e?(0,l.jsx)(n.En,{variant:`caption`,color:`secondary`,className:`dynamic-popup__footer-note`,children:e}):null}function zD(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>t?.[n]??``).trim()}function BD(e){return String(e).replace(/\(\s*\)/g,``).replace(/\s+/g,` `).replace(/(^|\s)([-–—·|])(?=\s*\2)/g,``).replace(/^[\s\-–—·|]+/,``).replace(/[\s\-–—·|]+$/,``).trim()}function VD(e){if(!e)return!1;let t=new Date(e).getTime();return Number.isNaN(t)||t<=0?!1:t<=Date.now()+864e5}function HD(e){if(!VD(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 UD(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 WD(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 GD(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:HD(UD(e))}:e,o=(i?BD(zD(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||WD(e);t&&(u.submittedAt=t)}if(e?.isFromSubmission===!0&&e?.submissionId){u.isFromSubmission=!0,u.priorSubmissionId=String(e.submissionId);let t=e?.lastSubmittedAt||WD(e);t&&(u.priorSubmittedAt=t)}return u}function KD(e,t){return(t?.[e.optionsKey]??e.defaultOptions??[]).map(t=>GD(t,e))}function qD(e={}){return{selectedIds:[],selectedRecords:[],moduleName:``,removedIds:[],...e}}var JD=`DD MMM YYYY`,YD=`DD MMM YYYY, h:mm A`;function XD(e,t){if(e==null||e===``)return``;let n=(0,u.default)(e);return n.isValid()?t===`relative`?HD(e)||(VD(e)?n.format(JD):`Not updated`):VD(e)?n.format(JD):``:String(e)}function ZD(e,t){return e?String(e).includes(`{`)?BD(zD(e,t)):String(t?.[e]??e).trim():``}function QD(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(YD)}`:`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(YD)} — this form will prefill from it`:`Submitted to another job before — this form will prefill from it`}}return null}function $D(e,t){return e?.alreadySubmitted||!e?.disabled?``:String(t?.message??e?.title??``).trim()}function eO({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 tO({option:e,layout:t}){let n=e?._raw??e??{},r=ZD(t.id,n),i=ZD(t.title,n)||String(e?.label??``),a=ZD(t.subtitle,n),o=ZD(t.titleAccent?.key,n),u=ZD(t.titleAccent?.toneKey,n),d=t.titleAccent?.prefix??``,f=(t.meta??[]).map(e=>({label:e.label,text:XD(n?.[e.key],e.type)})).filter(e=>e.text),p=$D(e,n),m=QD(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)(eO,{meta:f})]})}var{Text:nO}=s.Typography,{TextArea:rO}=s.Input,iO=[{label:`$`,value:`$`},{label:`EUR`,value:`EUR`},{label:`GBP`,value:`GBP`},{label:`INR`,value:`INR`}],aO=[{label:`Hourly`,value:`Hourly`},{label:`Daily`,value:`Daily`},{label:`Weekly`,value:`Weekly`},{label:`Monthly`,value:`Monthly`},{label:`Yearly`,value:`Yearly`}];function oO(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 sO({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 cO({field:e,value:t,onChange:n}){return(0,l.jsx)(rO,{value:t,onChange:n,rows:e.rows??5,placeholder:e.placeholder})}function lO({field:e,options:t,value:n,onChange:r}){let i=oO(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 uO({field:e,options:t,value:n,onChange:r}){let i=oO(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 dO({field:e,options:t,onSearch:n,value:r,onChange:i,popupContext:a}){let o=oO(t),u=e.optionLayout,d=new Map(o.map(e=>[String(e?.value??``),e]));async function f(t,n){if(e.multiple){i?.(Array.isArray(t)?t:[]);return}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,{mode:e.multiple?`multiple`:void 0,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)(tO,{option:e?.data??e,layout:u}):void 0,prefix:(0,l.jsx)(c.CrownOutlined,{})})}function fO({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 pO({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:iO,onChange:e=>a({currency:e}),style:{width:80}}),(0,l.jsx)(s.Select,{value:r,options:aO,onChange:e=>a({period:e}),style:{width:110}})]}),(u||d)&&(0,l.jsxs)(`div`,{style:{marginTop:4},children:[u&&(0,l.jsx)(nO,{type:`danger`,style:{fontSize:12,display:`block`},children:`To rate must be greater than From rate.`}),d&&(0,l.jsxs)(nO,{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 mO({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 hO({field:e,checked:t,onChange:n}){return(0,l.jsx)(s.Checkbox,{checked:t,onChange:n,children:e.checkboxLabel})}function gO({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 _O({options:e,value:t,onChange:n}){return(0,l.jsx)(s.Radio.Group,{value:t,onChange:n,options:e})}var vO={input:sO,text:sO,textarea:cO,select:lO,"multi-select":uO,"search-select":dO,"mention-textarea":fO,"candidate-rate":pO,"priority-checkbox":hO,"date-picker":mO,number:gO,radio:_O};function yO(e){return e===`priority-checkbox`?{valuePropName:`checked`}:{}}var bO=new Set([`input`,`text`,`textarea`,`mention-textarea`]);function xO({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:SO(t).map(e=>CO(e,e=>{let t=y(i[e.name]??KD(e,a)),r=p(e),o=m(e),c=h[e.name]??[],u=yO(e.type),d=vO[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()}}),bO.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 SO(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 CO(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 wO(e){return[`select`,`multi-select`,`search-select`,`radio`].includes(e?.type)&&e?.dataSource===`master`&&e?.masterName}function TO(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 EO(e){let t=String(e?.masterName??``).trim().toLowerCase();return t===`clientsubmissions`||t===`clientsubmissionstatus`}function DO(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 OO(e,t){return EO(t)?DO(e):GD(e,t)}function kO(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 AO(e){let t=Number(e?.id??0)||0,n=String(e?.text??``).trim();return n&&n.toLowerCase()===`not submitted`?!0:t<=0&&!n}function jO(e){return Number(e?._raw?.id??e?._raw?.uniqueId??0)||0}function MO(e){let t=e?._raw?.allowedNextStatusIds;return Array.isArray(t)?t.map(Number).filter(e=>Number.isInteger(e)&&e>0):[]}function NO(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 PO(e){return(Array.isArray(e?.selectedRecords)?e.selectedRecords.filter(Boolean):[]).some(e=>!AO(kO(e)))?!0:!AO(kO(e??{}))}async function FO(e,n){if(PO(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=NO(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 IO(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=kO(n);if(AO(i)){let e=kO(r);AO(e)||(i=e)}if(AO(i))return t?._raw?.isInitialStatus===!0;let a=e.find(e=>{let t=jO(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:MO(a).includes(jO(t))}))}function LO({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(wO);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=TO(t).map(t=>OO(t,e)).filter(Boolean),i=a;if(EO(e)&&(i=await FO(a,r)),o.signal.aborted)return;let s=EO(e)?IO(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 RO=500,zO=3;function BO({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=>GD(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??zO;return e=>{clearTimeout(c.current[t.name]);let r=e.length<n?``:e;c.current[t.name]=setTimeout(()=>{d(t,r)},RO)}}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 VO({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?.cancelled||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?.cancelled||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{let n=await v(e);if(n?.cancelled||n?.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 HO({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)(()=>qD(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}=LO({open:e,config:t,api:a,fields:x,popupContext:g,formValues:d}),{mentionOptions:E,getSearchHandler:D,getMentionSearchHandler:O}=BO({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}=VO({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,ae=typeof t?.getNote==`function`?t.getNote(g):t?.note,oe=t?.disabledUntilFilled&&!j&&!N;if(!t||!e||z)return null;let se=t.component;return se?(0,l.jsx)(s.Modal,{open:e,title:t.title||t.getTitleText?(0,l.jsx)(ID,{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)(se,{context:g,selectedIds:b,selectedRecords:v,moduleName:y,onClose:k})}):(0,l.jsxs)(s.Modal,{open:e,title:(0,l.jsx)(ID,{titleText:ne,titleIcon:t.titleIcon}),okText:t.okText||`OK`,cancelText:t.cancelText??`Cancel`,onOk:F,onCancel:()=>k(),okButtonProps:{danger:t.okButtonDanger,disabled:oe,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)(LD,{note:ae,description:t.description,showSelectedCount:t.showSelectedCount,count:B,itemLabel:ee,bodyText:ie,deleteError:L}),(0,l.jsx)(RD,{footerNote:t.footerNote}),(0,l.jsx)(xO,{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 UO={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:[]},WO={deleteItems:async(e,t)=>{await ae(t.moduleName,e)}},GO=new Map;async function KO(e){return e?(GO.has(e)||GO.set(e,a.r({module:e}).catch(t=>(GO.delete(e),console.warn(`[in-progress gate] could not read ${e} form groups:`,t),[]))),GO.get(e)):[]}function qO(e=[],t){return e.some(e=>{let r=n.C(e,t);return r&&r.severity!==`allow`})}async function JO({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 KO(e);if(!qO(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 YO=`Already submitted`,XO=`submissions`,ZO=`candidates`,QO=864e5,$O=90,ek=`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.`,tk=[`createdAt`,`createdDate`,`dateCreated`,`created_on`,`createdOn`],nk=[`updatedAt`,`updatedDate`,`lastUpdatedAt`,`lastUpdatedDate`,`modifiedAt`,`modifiedDate`];function rk(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 ik(e){return rk(e,tk)}function ak(e){return rk(e,nk)}function ok(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))/QO))}function sk(e){return e===null?``:e<=14?`green`:e<=89?`yellow`:`red`}function ck(e,t=$O){if(!e)return!1;let n=Date.now()-t*QO,r=ik(e),i=ak(e),a=r&&r.getTime()>=n,o=i&&i.getTime()>=n;return!a&&!o}function lk(e){let t=ik(e);if(!t)return{createdAgo:``,createdAgoTone:``};let n=HD(t);return n?{createdAgo:n,createdAgoTone:sk(ok(t))}:{createdAgo:``,createdAgoTone:``}}function uk(e){return{...e,...lk(e),isStaleCandidate:ck(e)}}function dk(e){return String(e?.applicantId??e?._id??e?.id??``)}var fk=null;async function pk(){return fk||=n.Fr(ZO).then(e=>e?.strategies?.duplicateCheck?.editRoute??``).catch(()=>``),fk}async function mk(e){let t=dk(e);if(!t)return``;let n=await pk();return n?n.replace(/:(_?id)\b/g,encodeURIComponent(t)):``}async function hk({option:e,popupContext:t,confirm:n}){let r=e?._raw??e??{},i=dk(r);if(i){let e=await JO({targetModule:XO,sourceModule:ZO,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(!ck(r))return!0;let a=t?.navigate;return!a||!i?!1:new Promise(e=>{n({title:`Candidate update required`,content:ek,okText:`OK`,cancelText:`Cancel`,onOk:async()=>{let t=await mk(r);t&&a(t),e(!1)},onCancel:()=>e(!1)})})}function gk(e,t,n){return{...e,label:`${e.label} - ${YO}`,disabled:!0,title:`${YO}${t?` (submission ${t})`:``}`,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}var _k={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 Ee({searchQuery:t,candidateId:r})}catch{a=!1;let e=await Nn({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 gk(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 Oe({applicantId:r,jobIds:o.map(e=>e.value)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e.value));return t?gk(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 De({search:t,jobId:r})}catch{let e=await $o({isFromSubmission:n.isFromSubmission,jobId:r,submissionId:n.submissionId,search:t});i=Array.isArray(e)?e:[],a=await Oe({jobId:r,applicantIds:i.map(dk)}).catch(()=>new Map)}return i.map(e=>uk(e)).map(e=>{let t=a.get(dk(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:YO,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=>dk(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(ck(u?._raw))throw Error(ek);let p=await JO({targetModule:XO,sourceModule:ZO,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 Te({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=Xo(Qo({jobId:c,applicantId:l}).catch(()=>[]));return r(`/submission-create/${c}?${g.toString()}`,{state:{relevantSkillsToken:v}}),{navigated:!0}}},vk={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:hk}]},yk={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`}]},bk=e=>e?.data??e;async function xk({relatedId:e,notes:n,title:r,notesFor:i}){return bk(await hn(t.x,`/notes`,{method:`POST`,body:JSON.stringify({relatedId:e,notes:n,title:r,notesFor:i})}))}var Sk={getMentionOptions:async(e,t)=>se(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 xk({relatedId:String(n),notes:e.notes,notesFor:t.moduleName})}},Ck={name:`jobId`,label:`Job Title / ID`,type:`search-select`,multiple:!0,required:!0,placeholder:`Minimum 3 characters`,searchFetchKey:`tagToJobJobList`,valueKey:`_id`,labelTemplate:`{jobReferenceId} - {jobTitle}`},wk={name:`hiringStage`,label:`Hiring stage`,type:`select`,required:!0,optionsKey:`hiringStageOptions`,defaultOptions:[{label:`Shortlisted`,value:`shortlisted`},{label:`Pipeline`,value:`pipeline`}],initialValueKey:`hiringStage`},Tk={title:`Tag to Job`,okText:`Tag`,width:480,disabledUntilFilled:!0,autoSubmitWhenNoFields:!0,getFields:e=>e.jobId&&e.hiringStage?[]:e.jobId?[wk]:[Ck,wk]},Ek=e=>e?.data??e;function Dk(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 Ok(e){return e?Array.isArray(e.data)?e.data.map(Dk):e.stage&&Array.isArray(e.stage.data)?e.stage.data.map(Dk):Array.isArray(e)?e.map(Dk):[]:[]}async function kk(e=1,n=10){let r=await t.o(t.x,`/workflow/list/all?page=${e}&limit=${n}`),i=Ek(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 Ak(e,n){let r=Ek(await t.o(t.x,`/workflow/${e}/stage/${n}`));return Array.isArray(r)?{data:r}:r}async function jk(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=Ek(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 Mk(e){return Ek(await t.o(t.C,`/source/workflow-instance`,{method:`POST`,body:JSON.stringify(e)}))}var Nk={pipeline:`pipeline`,goodfited:`goodfited`,contacted:`contacted`,submitted:`submitted`,shortlisted:`shortlisted`,interviewinprogress:`interviewInprogress`,selected:`selected`},Pk=`Already submitted`;function Fk(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 Ik(e){let t=String(e??``).trim();return t?Nk[t.toLowerCase()]??t:``}function Lk(e,t=``){return String(Fk(e,`candidateId`,`candidate_id`,`applicantId`,`applicantID`,`applicantReferenceId`,`applicantRefrenceId`,`_id`,`id`)??t??``)}function Rk(e){return String(Fk(e,`_id`,`id`,`candidateId`,`candidate_id`,`applicantId`,`applicantID`)??``)}function zk(e,t,n){let r=String(e.jobTitle??``).trim();return{...e,jobTitle:r?`${r} (${Pk})`:`(${Pk})`,disabled:!0,title:Pk,alreadySubmitted:!0,existingSubmissionId:t||``,...n?{submittedAt:n}:{}}}function Bk(e,t){let n=String(t??``).trim();return n?/already submitted/i.test(n)?`${e} (${Pk})`:/fulfilled/i.test(n)?`${e} (Fullfilled)`:`${e} (${n})`:e}function Vk(e){let t=String(e.jobReferenceId??e.clientJobReferenceId??``).trim(),n=String(e.jobTitle??``).trim();return{...e,jobReferenceId:t,jobTitle:n}}function Hk(e){return Wk(e).map(e=>e.id)}function Uk(e,t=``){return(Fk(e,`candidateName`,`candidate_name`,`fullName`,`name`)??[Fk(e,`firstName`,`first_name`),Fk(e,`lastName`,`last_name`)].filter(Boolean).join(` `)??t)||`Unknown candidate`}function Wk(e){let t=Array.isArray(e?.selectedIds)?e.selectedIds:[],n=Array.isArray(e?.selectedRecords)?e.selectedRecords:[],r=[],i=new Set,a=Math.max(t.length,n.length);for(let e=0;e<a;e+=1){let a=n[e]??{},o=t[e]?String(t[e]):``,s=Lk(a,o);!s||i.has(s)||(i.add(s),r.push({id:s,name:Uk(a,o),record:a,selectedId:o||s}))}return r}function Gk(e,t){return Array.isArray(e?.jobId)?e.jobId.map(String).filter(Boolean):e?.jobId?[String(e.jobId)]:Array.isArray(t?.jobId)?t.jobId.map(String).filter(Boolean):t?.jobId?[String(t.jobId)]:[]}function Kk(e,t=``){let n=String(e?.jobTitle??e?._raw?.jobTitle??``).trim();if(n)return n;let r=String(e?.label??e?._raw?.label??``).trim();return r.includes(` - `)?r.split(` - `).slice(1).join(` - `).trim():r||String(t??``)}function qk(e,t=``){return Kk(e,t)}function Jk(e,t,n){let r=[...new Set(Gk(e,t))],i=Array.isArray(n?.dynamicOptions?.jobId)?n.dynamicOptions.jobId:[],a=new Map(i.map(e=>[String(e?._id??e?.value??``),e]));return r.map(e=>{let t=a.get(String(e))??{};return{id:String(e),label:qk(t,e),record:t}})}function Yk(e){return e.filter(e=>e.blockedCandidates.length>0).map(e=>`${e.job.label} - ${e.blockedCandidates.map(e=>e.name).join(`, `)}`).join(` | `)}function Xk(e){return e.filter(e=>e.allowedCandidates.length>0).map(e=>`${e.job.label} - ${e.allowedCandidates.map(e=>e.name).join(`, `)}`).join(` | `)}function Zk(e,t){let n=Rk(e);if(!n)return null;let r=Uk(e,t)||void 0,i={candidateId:String(n),candidateName:r,phone:Fk(e,`phone`,`phoneNumber`,`phone_number`,`mobile`,`mobileNumber`,`mobile_number`),source:Fk(e,`source`,`sourceType`,`candidateSource`,`profileSource`),submittedAt:Fk(e,`submittedAt`,`lastSubmittedAt`,`updatedAt`),remarks:Fk(e,`remarks`,`comment`,`comments`,`notes`),assignedRecruiter:Fk(e,`assignedRecruiter`,`recruiterName`,`ownerName`,`assignedToName`),screeningStatus:Fk(e,`screeningStatus`,`screening.status`,`screeningResult`),screeningScore:Fk(e,`screeningScore`,`screening.score`,`score`),assignedDate:Fk(e,`assignedDate`,`assignedAt`,`createdAt`)};return Object.fromEntries(Object.entries(i).filter(([,e])=>e!=null&&e!==``))}var Qk={searchOptions:async(e,t,n)=>{if(e.searchFetchKey===`tagToJobJobList`){let e=Hk(n),r=e.length===1?e[0]:``,i,a=!1;if(r)try{i=await Ee({searchQuery:t,candidateId:r}),a=!0}catch{a=!1}Array.isArray(i)||(i=await oe(t));let o=i.map(Vk);if(a)return o.map(e=>{if(e?.isSubmitted||e?.alreadySubmitted)return zk(e,e?.jobSubmissionId||e?.submissionId||``,e?.submittedAt||``);if(e?.disable){let t=String(e?.message??``).trim();return{...e,jobTitle:e.jobTitle?Bk(e.jobTitle,t):`(${t})`,disabled:!0,optionNote:t,title:t}}return e});if(!r)return o;let s=await Oe({applicantId:r,jobIds:o.map(e=>e._id).filter(Boolean)}).catch(()=>new Map);return o.map(e=>{let t=s.get(String(e._id));return t?zk(e,t.submissionId,t.submittedAt):e})}return[]},submit:async(e,t,r)=>{let i=Ik(e.hiringStage??t.hiringStage),a=Wk(t),o=Jk(e,t,r);if(!o.length||!a.length)return{cancelled:!0};let s=[];for(let e of o){let t=await Oe({jobId:e.id,applicantIds:a.map(e=>e.id)}).catch(()=>new Map);s.push({job:e,blockedCandidates:a.filter(e=>t.has(String(e.id))),allowedCandidates:a.filter(e=>!t.has(String(e.id)))})}let c=Yk(s),l=Xk(s),u=s.filter(e=>e.allowedCandidates.length>0);if(!u.length)return await n.Ht({tone:`duplicate`,title:`Selected candidates are already submitted`,body:`Every selected candidate is already submitted to the selected jobs. Choose different jobs to continue.`,facts:[{label:`Blocked combinations`,value:c}],okText:`Close`}),{cancelled:!0};if(s.some(e=>e.blockedCandidates.length>0)&&!await n.Vt({tone:`duplicate`,title:`Some candidate-job combinations are already submitted`,body:`Those combinations will be skipped. Continue tagging the remaining valid combinations?`,facts:[{label:`Will be skipped`,value:c},{label:`Will be tagged`,value:l}],okText:`Tag remaining`,cancelText:`Cancel`,footnote:`Already submitted combinations will be left unchanged.`}))return{cancelled:!0};for(let e of u){for(let t of e.allowedCandidates){let n=Zk(t.record??{},t.selectedId);await Mk({jobId:e.job.id,module:`jobs`,currentStage:i,...n?{candidateDetails:n}:{}})}await ue({jobId:e.job.id,candidateIds:e.allowedCandidates.map(e=>e.selectedId||e.id),hiringStage:i})}}},$k={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 eA(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 tA={submit:async(e,t,n)=>{let r=eA(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)}},nA={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:[]},rA={onOk:async e=>{await ke({jobId:e.jobId??e.selectedIds[0],candidateIds:e.selectedIds})}},iA={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`}]},aA={getOptions:async e=>e.fetchOptionsKey===`candidateGroups`?de():[],submit:async(e,t,{dynamicOptions:n})=>{let r=(n.groupId??[]).find(t=>String(t.value)===String(e.groupId));await fe({candidateIds:t.selectedIds,groupId:e.groupId,groupName:r?.label??``})}},oA=[{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 sA({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([me(n).catch(t=>(e||s.message.error(t?.message??`Failed to load self-assign details`),{assignedUsers:[],totalSubmissions:0,message:``})),_e(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 pe({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:oA,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`})]})]})}sA.propTypes={selectedIds:f.default.array,onClose:f.default.func};var cA={title:`Self Assign`,width:480,className:`self-assign-modal`,component:sA},lA={submit:async()=>{}};function uA(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 dA={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=>(uA(e?.selectedRecords?.[0]??{}),[{name:`assignToUserId`,label:`Assign to`,type:`multi-select`,required:!0,placeholder:`Select recruiter(s)`,fetchOptionsKey:`assignToUsers`}])},fA={getOptions:async e=>e.fetchOptionsKey===`assignToUsers`?ge():[],loadExtraData:async e=>_e(e.selectedIds[0]),submit:async(e,t,{removedIds:n,extraData:r})=>{await xe({jobIds:t.selectedIds,userId:e.assignToUserId,removedIds:n,existingRecruiters:r?.recruitersData})}},pA={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`}]},mA={getMentionOptions:async(e,t)=>se(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 H({relatedIds:t.selectedIds,module:t.moduleName,title:e.heading,targetDate:n,notes:e.comments}),window.dispatchEvent(new Event(`sticky-notes:refresh`))}},hA={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`}]},gA={submit:async(e,t)=>{await Se({submissionId:t.selectedRecords?.[0]?.submissionId,isMail:e.sendOnboardingEmail})}};function _A(e){return Array.isArray(e)?e[e.length-1]??{}:e&&typeof e==`object`?e:{}}var vA={USD:`$`,INR:`₹`,EUR:`€`,GBP:`£`};function yA(e,t,n){let r=_A(e?.[t])[n];if(r!=null&&r!==``)return r;let i=e?.[`${t}.${n}`];return i!=null&&i!==``?i:void 0}function bA(e){let t=e.selectedRecords?.[0]??{},n=yA(t,`candidateRate`,`candidateAcceptedRate`)??yA(t,`candidateBudget`,`candidateBudgetStart`);if(n===void 0||Number(n)===0)return null;let r=yA(t,`candidateRate`,`candidateAcceptedCurrency`)??yA(t,`candidateBudget`,`candidateBudgetCurrency`);return{amount:n,symbol:yA(t,`candidateRate`,`candidateAcceptedCurrencySymbol`)??yA(t,`candidateBudget`,`candidateBudgetCurrencySymbol`)??vA[String(r??``).toUpperCase()]??(r||`$`),unit:yA(t,`candidateRate`,`candidateAcceptedPayUnit`)??yA(t,`candidateBudget`,`candidateBudgetUnit`)??``}}var xA={title:`Approve Rate`,okText:`Approve`,width:520,className:`medium-modal`,successMessage:`Rate approved`,getBodyText:(e,t,n,r,i)=>{let a=bA(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=bA(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`}]}]},SA={submit:async(e,t)=>{let n=t.selectedIds[0];if(await Ce(n,{candidateProposedRate:e.candidateProposedRate,candidateProposedRateCurrency:e.candidateProposedRateCurrency,candidateProposedRateUnit:e.candidateProposedRateUnit,submitVia:e.submitVia}),e.submitVia===`VMS`)try{await we(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 CA(e,n={}){let r=t.u();if(!r){let e=Error(`Authentication required`);throw e.status=401,e}let i=await fetch(`${t.T}${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 wA(e){let t=await CA(`/mail-form?${new URLSearchParams({submissionId:e,submissionType:`manager`}).toString()}`);return t.data??t}function TA(e){return Array.isArray(e)?e[e.length-1]:e}function EA(e={}){let t=TA(e?.proposedRate)?.candidateProposedRate??e?.candidateProposedRate??e?.proposedRateValue,n=Number(t);return Number.isFinite(n)?n:0}function DA(e,t={}){let n=TA((e?.record?.job??e?.job??t?.job??{})?.jobPayDetails)??{},r=e?.record?.submission??t??{},i=TA(r?.clientBudget)??r?.clientBudget??{},a=n?.clientBudgetEnd??n?.clientBudgetStart??i?.clientBudgetEnd??i?.clientBudgetStart,o=Number(a);return Number.isFinite(o)?o:0}function OA(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 kA(e={}){return String(e?.rateUnit??`hr`).trim().replace(/^\/+/,``)||`hr`}function AA(e,t={}){let n=Number(e);return Number.isFinite(n)?`${OA(t)}${n}/${kA(t)}`:``}function jA(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 MA(e,t,n,r,i){let a=Number(n?.proposedRate),o=Number.isFinite(a)?a:EA(t),s=Number(n?.clientJobRate),c=Number.isFinite(s)&&s>0?s:DA(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=jA(u,`(?:Proposed\\s*Rate|Pay\\s*Rate)`,AA(o,n)),u=jA(u,`(?:Job\\s*)?Bill\\s*Rate`,AA(c,n)),u}function NA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var PA=(e,t)=>!!e&&e.toLowerCase()===NA(t).toLowerCase();function FA(e,t,n){let r=NA(t.submittedBy);return NA(PA(r,n)||PA(r,e.submitSource)||PA(r,e.supplierName)||PA(r,e.source)||PA(r,e.candidateSource)?``:r,e.signatureEmail)}function IA(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:FA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function LA(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 RA(...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(LA).find(Boolean);if(e)return e}return``}function zA(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 BA(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 VA(...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(LA).find(Boolean);if(e)return e}return``}async function HA(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 UA(e,r,i){let a=[],o=await n._n(`submissions`,e,`resume`).catch(()=>({data:[]}));a.push(...o?.data??[]);let s=VA(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=VA((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(HA))).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 WA(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:BA(e.content?.value??e.Content?.Value??e.contents??e.body??``)}}function GA({context:e,selectedIds:t,selectedRecords:n,moduleName:r,onClose:i}){let a=n?.[0]??{},c=t?.[0]??j_(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 vv(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 Dv().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([wA(c).then(WA),UA(c,u,a).catch(e=>(console.warn(`Unable to resolve resume attachment:`,e),[]))]),n=u?.record?.submission??a;N({to:MA(e.to,n,b,u,a),cc:MA(e.cc,n,b,u,a),bcc:MA(e.bcc,n,b,u,a),subject:MA(e.subject,n,b,u,a),contents:MA(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 Ce(c,{candidateProposedRate:b.proposedRate,candidateProposedRateCurrency:b.currencyRaw??b.currency,candidateProposedRateUnit:b.rateUnit,submitVia:`VMS`,...zA(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&&wE(M.to).length>0&&TE(M.to)&&TE(M.cc)&&TE(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 Ce(c,{...e,submitVia:`VMS`,...zA(S)});let t=RA(u?.record,a);if(!t)s.message.warning(`Submission approved, but job details were not available to send mail`);else try{await ln({jobId:t,toMail:wE(M.to),ccMail:wE(M.cc),bccMail:wE(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)(sv,{type:a_,record:u.record,lookups:u.lookups,identity:IA(a,u.display),referralOptions:m,onAddReferral:()=>e?.navigate?.(`/referrals-create`),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)(LE,{value:M,onChange:N,moduleName:`submissions`,ready:!O,title:`Submit Via Mail`,contextRecords:[u.record?.submission??a]})})]})}GA.propTypes={context:f.default.object,selectedIds:f.default.array,selectedRecords:f.default.array,moduleName:f.default.string,onClose:f.default.func};var KA={title:`Manager Approve`,width:780,className:`fa-modal manager-approve-modal`,component:GA},qA={submit:async()=>{}};function JA(...e){return e.map(e=>e==null?``:String(e).trim()).find(Boolean)??``}var YA=(e,t)=>!!e&&e.toLowerCase()===JA(t).toLowerCase();function XA(e,t,n){let r=JA(t.submittedBy);return JA(YA(r,n)||YA(r,e.submitSource)||YA(r,e.supplierName)||YA(r,e.source)||YA(r,e.candidateSource)?``:r,e.signatureEmail)}function ZA(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:XA(e,t,n),submittedAt:t.createdAt??e.createdAt,email:t.email??e.email,employerLocation:t.employerLocation,employerName:t.employerName}}function QA(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 $A(e){return String(e??``).toLowerCase().replace(/\b\w/g,e=>e.toUpperCase())}function ej({selectedIds:e,selectedRecords:t,onClose:r}){let i=t?.[0]??{},a=e?.[0]??j_(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([vv(a,i),n.dn(`submission`,a).catch(()=>[])]).then(([t,n])=>{if(e)return;let r=QA(n);f(j_(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?$A(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 U(d,{submissionId:a,billRate:e.proposedRate,payRate:e.employerRate,currency:e.currencyRaw??e.currency,rateUnit:e.rateUnit,vmsPercent:e.clientVmsPercent}),await Ce(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)(sv,{type:l_,record:c.record,lookups:c.lookups,identity:ZA(i,c.display),currentUserId:typeof localStorage<`u`?localStorage.getItem(`userId`)??void 0:void 0,actions:h,onClose:()=>r?.(),variant:`popup`})}ej.propTypes={selectedIds:f.default.array,selectedRecords:f.default.array,onClose:f.default.func};var tj={title:`Re-Approve`,width:780,className:`fa-modal manager-approve-modal`,component:ej},nj={submit:async()=>{}},rj=[{id:1,name:`Re-Submission`},{id:2,name:`Candidate doesn't fit into the profile`},{id:3,name:`Incomplete candidate details - (Re-Submission)`}],ij={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:rj.map(e=>({label:e.name,value:e.id}))},{name:`rejectReasonComments`,label:`Comments`,type:`textarea`,required:!0,rows:4}]},aj={submit:async(e,t)=>{let n=rj.find(t=>String(t.id)===String(e.rejectReason));await W({submissionId:t.selectedIds[0],rejectReasonId:e.rejectReason,rejectReason:n?.name??``,rejectReasonComments:e.rejectReasonComments})}},oj={delete:UO,"quick-submit":vk,"add-notes":yk,"tag-to-job":Tk,"change-status":$k,"remove-from-shortlist":nA,"add-to-groups":iA,"self-assign":cA,"others-assign":dA,"sticky-notes":pA,"move-to-onboarding":hA,"approve-rate":xA,"manager-approve":KA,"manager-reapprove":tj,reject:ij},sj={delete:WO,"quick-submit":_k,"add-notes":Sk,"tag-to-job":Qk,"change-status":tA,"remove-from-shortlist":rA,"add-to-groups":aA,"self-assign":lA,"others-assign":fA,"sticky-notes":mA,"move-to-onboarding":gA,"approve-rate":SA,"manager-approve":qA,"manager-reapprove":nj,reject:aj};function cj(e){let t=e?.data??e;return Array.isArray(t)?t:t?.data??t?.rows??t?.records??t?.items??t?.list??[]}function lj(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 uj(e){let t=String(lj(e,`isDeleted`,`deleted`)).toLowerCase(),n=String(lj(e,`assignmentStatus`,`status`)).toLowerCase();return t!==`true`&&t!==`1`&&![`removed`,`inactive`,`deleted`].includes(n)}function dj(e){let t=lj(e,`candidateName`,`candidate_name`,`fullName`,`name`);return t?String(t):[lj(e,`firstName`,`first_name`),lj(e,`lastName`,`last_name`)].filter(Boolean).join(` `)||`Unnamed candidate`}function fj(e){return String(lj(e,`candidateId`,`candidate_id`,`candidate._id`,`candidate.id`))}function pj(e){return String(lj(e,`workforceEngagementId`,`engagementId`,`_id`,`id`))}function mj(e){return String(lj(e,`batchName`,`name`,`title`,`batch_name`))}function hj({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(cj(e)),x(new Map(cj(n).filter(uj).map(e=>[String(lj(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=>[dj(t),lj(t,`email`,`candidateEmail`,`candidate_email`),lj(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(pj(e)));if(!e.length)return;let o=e.map(e=>({record:e,assignment:b.get(fj(e))})).filter(e=>e.assignment);if(o.length){let e=o.map(({record:e})=>dj(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=mj(r.selectedRecords?.[0])||mj(r);await Promise.all(e.map(e=>n.Zn(`batchCandidates`,{schemaVersion:1,batchId:S,batchName:o,candidateId:fj(e),workforceEngagementId:pj(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=>pj(e),columns:[{title:`Candidate`,key:`candidate`,render:(e,t)=>dj(t)},{title:`Email`,key:`email`,render:(e,t)=>lj(t,`email`,`candidateEmail`,`candidate_email`)||`—`},{title:`Onboarding status`,key:`status`,render:(e,t)=>lj(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(fj(e));return{disabled:!fj(e)||!pj(e)||!!t,title:t?`Candidate is already added to a batch`:void 0}}},locale:{emptyText:m?`Loading candidates…`:`No onboarding candidates found`}})]})}var gj={text:`input`,string:`input`,textarea:`textarea`,date:`date-picker`,datepicker:`date-picker`,multiselect:`multi-select`,lookup:`search-select`};function _j(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:gj[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=vj(e.successNavigate);return{title:e.label,fields:t,...n?{successNavigate:n}:{}}}function vj(e){let t=String(e??``).trim();return!t||!t.startsWith(`/`)||t.startsWith(`//`)||/^[a-z][a-z0-9+.-]*:/i.test(t)?null:t}function yj(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 bj({apiMap:e={},extraConfigs:r={}}){let i=(0,o.useMemo)(()=>({...sj,...e}),[e]),a=(0,o.useMemo)(()=>{let e={...oj};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:_j(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 yj(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)(hj,{open:!0,context:h,onClose:_}):(0,l.jsx)(HO,{open:!0,config:m,context:h,onClose:_,api:{...i[s]??{},...g}})}var xj={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`}]},Sj={getVendorList:({jobId:e,limit:t,offset:n,type:r})=>on({jobId:e,limit:t,offset:n,sortBy:`new`,type:r}),getMailDetails:e=>sn(e),submit:({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})=>ln({jobId:e,toMail:t,ccMail:n,bccMail:r,subject:i,contents:a})},Cj=xj.vendorColumns.map(e=>({...e,render:e=>e||`-`}));function wj(){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)(xj.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)(xj.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 Sj.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&&Sj.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([...wE(h.bcc),...z])].join(`, `),showBcc:h.showBcc||z.length>0}),[h,z]);function V(e){let t=new Set(z);g({...e,bcc:wE(e.bcc).filter(e=>!t.has(e)).join(`, `)})}let ee=(wE(B.to).length||wE(B.bcc).length)&&TE(B.to)&&TE(B.cc)&&TE(B.bcc)&&B.subject.trim(),te=e=>e===`myVendor`?T:D;function ne(){e(-1)}function re(){ee&&Sj.submit({jobId:m,toMail:wE(B.to),ccMail:wE(B.cc),bccMail:wE(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:xj.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:Cj,dataSource:ie,loading:F,pagination:!1,size:`small`,rowSelection:{selectedRowKeys:L,onChange:e=>{e.length>xj.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)(LE,{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,` / `,xj.maxVendorSelect,` Vendors selected`]}):null})})]})})}var Tj={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].*$/},Ej={SINGLE_FILE_COUNT:1,MULTI_FILE_COUNT:5,MAX_FILE_SIZE:2,ALLOWED_FILE_TYPES:[`image/jpeg`,`image/png`,`application/pdf`]},Dj={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 ${Ej.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.`},Oj={FIRST_NAME_MIN:3,FIRST_NAME_MAX:30},kj={REMARKS_MIN:10,REMARKS_MAX:250},Aj={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)}`}},jj={required:(e=`Field`)=>({required:!0,message:Dj.REQUIRED(e)}),email:()=>({pattern:Tj.EMAIL,message:Dj.INVALID_EMAIL}),phone:()=>({pattern:Tj.PHONE,message:Dj.INVALID_PHONE}),password:()=>({pattern:Tj.PASSWORD,message:Dj.INVALID_PASSWORD}),alphabets:()=>({pattern:Tj.ALPHABETS,message:Dj.INVALID_ALPHABETS}),alphanumeric:()=>({pattern:Tj.ALPHANUMERIC,message:Dj.INVALID_ALPHANUMERIC}),number:()=>({pattern:Tj.NUMBER,message:Dj.INVALID_NUMBER}),url:()=>({pattern:Tj.URL,message:Dj.INVALID_URL}),candidateId:(e=`ID`)=>({pattern:Tj.CANDIDATE_ID,message:Dj.INVALID_CANDIDATE_ID(e)}),remarks:()=>({pattern:Tj.REMARKS,message:Dj.INVALID_REMARKS,REMARKS_MIN:`Remarks must be at least ${kj.REMARKS_MIN} characters.`,REMARKS_MAX:`Remarks must not exceed ${kj.REMARKS_MAX} characters.`}),designation:()=>({pattern:Tj.DESIGNATION,message:Dj.INVALID_DESIGNATION}),dob:(e=!0)=>({validator:(t,n)=>{if(!n)return e?Promise.reject(Error(`Date of Birth is required.`)):Promise.resolve();if(!Tj.DOB.test(n))return Promise.reject(Error(Dj.INVALID_DOB));let r=(0,u.default)(n,`MM/DD/YYYY`,!0);if(!r.isValid())return Promise.reject(Error(Dj.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:Tj.LINKEDIN,message:Dj.INVALID_LINKEDIN}),companyName:()=>({pattern:Tj.COMPANY_NAME,message:Dj.INVALID_COMPANY_NAME}),firstName:()=>({pattern:Tj.FIRST_NAME,message:Dj.INVALID_FIRST_NAME,FIRST_NAME_MIN:`First Name must be at least ${Oj.FIRST_NAME_MIN} characters.`,FIRST_NAME_MAX:`First Name must not exceed ${Oj.FIRST_NAME_MAX} characters.`}),firstNameMinLength:()=>({min:Oj.FIRST_NAME_MIN,message:Dj.FIRST_NAME_MIN}),firstNameMaxLength:()=>({max:Oj.FIRST_NAME_MAX,message:Dj.FIRST_NAME_MAX}),remarksMinLength:()=>({min:kj.REMARKS_MIN,message:Dj.REMARKS_MIN}),remarksMaxLength:()=>({max:kj.REMARKS_MAX,message:Dj.REMARKS_MAX}),fullName:()=>({pattern:Tj.FULL_NAME,message:Dj.INVALID_FULL_NAME}),noSpaces:()=>({pattern:Tj.NO_SPACES,message:Dj.NO_SPACES_ALLOWED}),startsWithCapital:()=>({pattern:Tj.STARTS_WITH_CAPITAL,message:Dj.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<=Ej.MAX_FILE_SIZE))return s.message.error(Dj.INVALID_FILE_SIZE),Promise.reject(Error(Dj.INVALID_FILE_SIZE));if(!Ej.ALLOWED_FILE_TYPES.includes(t.type))return Promise.reject(Error(Dj.INVALID_FILE_TYPE))}return Promise.resolve()}}),singleFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ej.SINGLE_FILE_COUNT)return Promise.reject(Error(Dj.SINGLE_FILE_ONLY));let n=t[0];return n.size/1024/1024<Ej.MAX_FILE_SIZE?Ej.ALLOWED_FILE_TYPES.includes(n.type)?Promise.resolve():Promise.reject(Error(Dj.INVALID_FILE_TYPE)):Promise.reject(Error(Dj.INVALID_FILE_SIZE))}}),multiFileUpload:()=>({validator:(e,t)=>{if(!t||t.length===0)return Promise.resolve();if(t.length>Ej.MULTI_FILE_COUNT)return Promise.reject(Error(Dj.INVALID_FILE_COUNT));for(let e of t){if(!(e.size/1024/1024<Ej.MAX_FILE_SIZE))return Promise.reject(Error(Dj.INVALID_FILE_SIZE));if(!Ej.ALLOWED_FILE_TYPES.includes(e.type))return Promise.reject(Error(Dj.INVALID_FILE_TYPE))}return Promise.resolve()}})},Mj={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)},Nj=()=>{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:[jj.required(`Email`),jj.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:[jj.required(`Phone Number`),jj.phone()],validateTrigger:[`onBlur`,`onChange`],children:(0,l.jsx)(s.Input,{maxLength:10,onChange:t=>{e.setFieldsValue({phone:Aj.phoneFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Password`,name:`password`,rules:[jj.required(`Password`),jj.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:[jj.required(`Full Name`),jj.alphabets(),jj.firstNameMinLength(),jj.firstNameMaxLength()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({fullName:Aj.firstNameFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Username`,name:`username`,rules:[jj.required(`Username`),jj.alphanumeric()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({username:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Website URL`,name:`website`,rules:[jj.required(`Website URL`),jj.url()],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({website:Aj.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:[jj.required(`MSP Req ID`),jj.candidateId(`MSP Req ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({mspreqID:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Candidate ID`,name:`candidateId`,rules:[jj.required(`Candidate ID`),jj.candidateId(`Candidate ID`)],children:(0,l.jsx)(s.Input,{onChange:t=>{e.setFieldsValue({candidateId:Aj.removeExtraSpaces(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:24,children:(0,l.jsx)(s.Form.Item,{label:`Remarks`,name:`remarks`,rules:[jj.required(`Remarks`),jj.remarks(),jj.remarksMinLength(),jj.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:[jj.required(`Designation`),jj.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:[jj.dob()],children:(0,l.jsx)(s.Input,{placeholder:`MM/DD/YYYY`,maxLength:10,onChange:t=>{e.setFieldsValue({dob:Aj.dobFormatter(t.target.value)})}})})}),(0,l.jsx)(s.Col,{span:12,children:(0,l.jsx)(s.Form.Item,{label:`Company Name`,name:`companyName`,rules:[jj.required(`Company Name`),jj.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:Mj.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:[jj.multiFileUpload()],children:(0,l.jsx)(s.Upload,{multiple:!0,beforeUpload:Mj.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:[jj.fileUpload()],children:(0,l.jsx)(s.Upload,{beforeUpload:Mj.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 Pj(e){return(0,l.jsx)(Wy,{children:(0,l.jsx)(yE,{...e})})}var{Text:Fj}=s.Typography,Ij=[{label:`Total Jobs`,value:1697,icon:`fileText`},{label:`Active Jobs`,value:1685,icon:`checkCircle`},{label:`My Jobs`,value:600,icon:`user`}],Lj={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 Rj({stats:e=Ij}){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:[Lj[e.icon]??Lj.fileText,(0,l.jsx)(Fj,{children:e.label})]}),(0,l.jsx)(s.Statistic,{value:e.value})]})},e.label))})})}var{Text:zj}=s.Typography;function Bj(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 Vj(e){return{...e,key:e.USER_ID??e.user_id??e.userId??e.id??e._id,_name:Bj(e),_email:e.email??e.EMAIL??e.user_email??``,_role:e.role_name??e.roleName??e.ROLE_NAME??``,_rawRef:e}}function Hj(){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(Vj);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)(Om,{listName:`Users`,dataSource:e,fields:[{label:`Name`,value:`_name`,width:220,render:(e,t)=>(0,l.jsxs)(`div`,{children:[(0,l.jsx)(zj,{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:Uj}=s.Typography,Wj=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`}],Gj=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`}];function Kj({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 qj({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.Jr(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.bi(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:Wj.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)(Kj,{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 `,Wj.find(e=>e.key===f)?.label]})})]})}function Jj(){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.yi(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)(Om,{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:Gj.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)(qj,{team:e,configType:d},`${e?.teamId}-${d}`)]})]})}var Yj=[`view`,`add`,`edit`,`delete`],Xj={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 Zj(e){return Xj[e]??e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function Qj(e){let t=Yj.filter(t=>e.includes(t)),n=e.filter(e=>!Yj.includes(e)).sort();return[...t,...n]}function $j(e){let t=new Set;return Object.values(e).forEach(({permissions:e})=>Object.keys(e??{}).forEach(e=>t.add(e))),Qj([...t])}function eM(e){let t=0,n=0;return Object.entries(e).forEach(([e,{permissions:r}])=>{Object.entries(r??{}).forEach(([r,{value:i}])=>{nx(e,r)&&(n++,i===`1`&&t++)})}),{enabled:t,total:n}}function tM(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 nM({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 rM({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 iM({menuName:e,menuData:t,permKeys:n,onChange:r,displayName:i,actionLabels:a,onModuleLabelSave:o,onActionLabelSave:s}){let c=t?.permissions??{},u=n.filter(t=>nx(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)(nM,{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)(rM,{entry:c[t],label:a[t]??Zj(t),onToggle:()=>r(e,t),onLabelSave:e=>s(t,e)},t))})]})}function aM({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.Ur(e);(0,o.useEffect)(()=>{b&&(h(!0),y(!1),n.Kr(b).then(e=>{let t=tM(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._i(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)(()=>$j(f),[f]),{enabled:T,total:E}=(0,o.useMemo)(()=>eM(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)(iM,{menuName:e,menuData:f[e],permKeys:w,onChange:x,displayName:t[e]??e,actionLabels:r,onModuleLabelSave:i,onActionLabelSave:a},e))})]})}var{Text:oM}=s.Typography,sM=[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`}];function cM(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function lM(e){return String(e||``).trim().toLowerCase()}function uM(e){return e?.key||e?.collectionName||e?.value||``}function dM(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=uM(e);if(!t)return;let o=lM(e.key||t),s=lM(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||cM(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=lM(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:cM(t),value:t,disabled:!1}))}),n}function fM(){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=dM(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.ci(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)(oM,{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)(Om,{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:sM.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)(aM,{role:e},e?.roleId):(0,l.jsx)(yx,{role:e,configType:a},`${e?.roleId}-${a}`))]})]})}var pM=`perm-module-labels`,mM=`perm-action-labels`;function hM(e){try{return JSON.parse(localStorage.getItem(e)??`{}`)}catch{return{}}}function gM(e,t){try{localStorage.setItem(e,JSON.stringify(t))}catch{}}function _M({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 vM({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.pi(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.fi(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)(_M,{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)(_M,{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 yM(){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)(()=>hM(pM)),[_,v]=(0,o.useState)(()=>hM(mM)),y=(0,o.useCallback)((e,t)=>{g(n=>{let r={...n,[e]:t};return gM(pM,r),r})},[]),b=(0,o.useCallback)((e,t)=>{v(n=>{let r={...n,[e]:t};return gM(mM,r),r})},[]);function x(){g({}),v({}),gM(pM,{}),gM(mM,{}),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)(aM,{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)(vM,{open:p,onClose:()=>m(!1)})]})}var{Title:bM,Text:xM}=s.Typography,SM=[{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 CM({items:e=SM}){return(0,l.jsx)(s.Card,{className:`onboarding-card`,title:(0,l.jsx)(bM,{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)(xM,{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)(xM,{className:`onboarding-item-sub`,children:e.sub})})]})},e.label))})})}var{Text:wM,Title:TM}=s.Typography,EM=[{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.`}]}]}],DM=[{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}],OM=[{name:`Tcs`,jobs:14,candidates:86},{name:`Empasis`,jobs:9,candidates:64},{name:`NovaSystems`,jobs:7,candidates:51},{name:`Brightwave`,jobs:5,candidates:38}],kM=[{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 AM(){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)(TM,{level:5,children:`Admin Dashboard`}),(0,l.jsx)(wM,{type:`secondary`,children:`Overview of jobs, candidates, onboarding and recent activity`})]}),(0,l.jsx)(`div`,{className:`admin-dashboard-stats`,children:(0,l.jsx)(Rj,{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)(CM,{}),(0,l.jsxs)(Z,{icon:(0,l.jsx)(c.AppstoreOutlined,{}),title:`Candidate Pipeline`,children:[(0,l.jsx)(wM,{type:`secondary`,style:{fontSize:12},children:`By stage (892 total)`}),(0,l.jsx)(`div`,{className:`admin-pipeline-bar`,children:DM.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:DM.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)(wM,{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)(wM,{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)(wM,{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)(wM,{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:OM.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:kM.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)(wM,{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)(wM,{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)(wM,{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)(wM,{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)(wM,{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)(wM,{style:{fontSize:12},children:e}),(0,l.jsx)(wM,{strong:!0,style:{fontSize:12},children:t})]},e))]})]})})]})}function jM({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)(TM,{level:5,children:e?.heading}),(0,l.jsx)(wM,{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)(wM,{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:EM.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 MM(){let[e,t]=(0,o.useState)(`dashboard`),[n,r]=(0,o.useState)(``),i=(0,o.useMemo)(()=>EM.flatMap(e=>e.items),[]),a=(0,o.useMemo)(()=>i.find(t=>t.id===e),[i,e]),u=(0,o.useMemo)(()=>EM.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)(()=>EM.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:EM.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)(AM,{}):a?.component===`form-groups`?(0,l.jsx)(hC,{}):a?.component===`detail-groups`?(0,l.jsx)(qC,{}):a?.component===`row-actions`?(0,l.jsx)(Iw,{}):a?.component===`users`?(0,l.jsx)(Hj,{}):a?.component===`teams`?(0,l.jsx)(Jj,{}):a?.component===`roles`?(0,l.jsx)(fM,{}):a?.component===`permissions`?(0,l.jsx)(yM,{}):a?.component===`templates`?(0,l.jsx)(Jw,{}):a?.component===`ai-services`?(0,l.jsx)(Qw,{}):a?.component===`bgc-integration`?(0,l.jsx)(iT,{}):(0,l.jsx)(jM,{activeSection:a,activeGroup:u,filteredCards:d,searchText:n,setSearchText:r,allItems:i,handleNav:p})})]})]})}var{Title:NM}=s.Typography;function PM(){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)(Pt,{moduleName:n,title:r,columns:4,request:i,viewAll:!1})]})}var{Text:FM,Title:IM}=s.Typography,LM=10485760,RM=`/templates/test_cases_flow_template.base64.txt`,zM=`test_cases_flow_template.xlsx`,BM=`module | subModule | step_order | description | actions | key | value | expected | scenario`,VM={idle:0,module_set:1,encoding:1,validating:2,preview:3,inserting:3,done:4,error:1},HM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Bulk upload`,href:`/bulk-upload`}];function UM(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 WM(e){return e.filter(e=>e.row_status===`valid`).map(e=>{let t={...e};return delete t.row_status,delete t.errors,t})}function GM(e){return e.flatMap(e=>(e.errors??[]).map(t=>({id:e.id,...t})))}function KM({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 qM({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 JM({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)(FM,{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)(KM,{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 YM(){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=GM(x),N=h===`encoding`||h===`validating`,P=!!p&&!N,F=VM[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 sb({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>LM){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 UM(e);g(`validating`);let i=await nb({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(RM);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=zM,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 rb({project:r?.name??``,module:p,uploaded_by:localStorage.getItem(`user_Email`)??``,rows:WM(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:HM})}),r?.name&&(0,l.jsx)(s.Col,{children:(0,l.jsx)(FM,{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)(IM,{level:3,children:`Bulk upload test cases`}),(0,l.jsxs)(s.Space,{direction:`vertical`,size:4,children:[(0,l.jsx)(FM,{type:`secondary`,children:BM}),(0,l.jsx)(FM,{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)(qM,{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)(JM,{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)(FM,{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)(FM,{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)(FM,{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 XM=[{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:ZM}=s.Typography,QM=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}],$M={tags:`regression`,active:1},eN={module:{dbName:`Modules`,formField:`module`,label:`Module`}};function tN(e=[]){return e.map(e=>({value:e,label:e}))}function nN(e=``){return String(e??``).trim()}function rN(e=``){return nN(e).toLowerCase()}function iN(e=[]){let t=new Map;return e.forEach(e=>{let n=nN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function aN(e=[],t,n){let r=nN(t).toLowerCase(),i=nN(n).toLowerCase();return e.reduce((e,t)=>{let n=nN(t?.module).toLowerCase(),a=nN(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 oN({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)(ZM,{strong:!0,className:`v1-section-label`,children:t})]})}function sN(){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=eN[v.typeKey],O=(0,o.useMemo)(()=>tN(r),[r]),k=s.Form.useWatch(`module`,e),A=s.Form.useWatch(`flow`,e),j=!!nN(k),M=!!nN(A),N=!j,P=!j||!M,F=(e,t=[])=>{e===`module`&&i(t)},I=async()=>{h(!0);try{let e=await Zy(eN.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=nN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){_(!0);try{let e=await tb({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(iN(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=nN(t),a=nN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}C(!0);try{e.setFieldsValue({step_order:aN(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:nN(t.module),flow:nN(t.flow),step_order:Number(t.step_order),description:nN(t.description),keyword:rN(t.keyword),target:nN(t.target),value:nN(t.value),expected:nN(t.expected),tags:t.tags?nN(t.tags):$M.tags,active:Number(t.active)};T(!0);try{await eb(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]:nN(n)})},V=t=>{e.setFieldsValue({module:nN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:$M.tags,value:void 0,expected:void 0})},ee=t=>{e.setFieldsValue({flow:nN(t),step_order:void 0})},te=e=>{let n=eN[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=nN((await t.validateFields()).name),r=await Qy({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:QM})}),(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)(ZM,{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:$M,onFinish:z,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(oN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`Test Case Details`}),extra:(0,l.jsx)(ZM,{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:XM,onChange:t=>e.setFieldsValue({keyword:rN(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:nN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var{Text:cN}=s.Typography,lN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`}];function uN(e=``){return String(e??``).trim()}function dN(e=[],t){return e.map(e=>({value:e.id,label:e[t]}))}var fN=[{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`})}],pN={key:!1,value:!1,expected:!1};function mN(e,t){return t?e[t]??pN:pN}function hN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function gN(){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)(XM),[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)(()=>mN(x,F),[x,F]),z=(0,o.useMemo)(()=>dN(p,`modulename`),[p]),B=(0,o.useMemo)(()=>dN(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 $y();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 sb({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 ub({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([pb({product_parent_ID:t,module_parent_ID:n,submodule_parent_ID:r,actions:i,limit:1e3}),gb({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]),ae=(0,o.useCallback)(async(e=``)=>{if(!(!f?.id||!N||!P)){O(!0);try{let t=await pb({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]),oe=(0,o.useCallback)(async()=>{if(!(!a||!f?.name)){M(!0);try{let t=await hb(a);await re(f.name,t.module);let n=await pb({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 oe()})},[f,r,te,ne,a,oe]),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:lN})}),(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)(cN,{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:uN(t.description),actions:uN(t.actions),key:uN(t.key),value:uN(t.value),expected:uN(t.expected),scenario:+!!t.scenario,active:+!!t.active};A(!0);try{if(u){await _b(a,{...n,step_order:Number(t.step_order)}),s.message.success(`Test case updated successfully.`),r(`/viewTestCase`);return}await mb(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}),hN(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}),hN(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)(cN,{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=mN(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}),hN(e,[`key`,`value`,`expected`]),ae(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)(Om,{listName:`Added Steps`,loading:D,fields:fN,dataSource:_,current:1,pageSize:Math.max(_.length,1),total:_.length,rowSelection:!1,className:`zt-list-plain zt-list-static`})})]})})]}):null}var{Text:_N}=s.Typography,vN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`}];function yN(){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([sb({project:e}),ub({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 lb(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 cb({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:vN})}),(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)(_N,{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)(Om,{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)(_N,{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:bN}=s.Typography,xN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Manage Modules`,href:`/manageModules`},{label:`Manage Submodules`,href:`/test-cases/zinnext/submodules`}];function SN(){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 ub({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 fb(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 db({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:xN})}),(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)(bN,{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)(bN,{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)(Om,{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)(bN,{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:CN}=s.Typography,wN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/addTestCase`},{label:`Table`,href:`/viewTestCase`}];function TN(){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 pb({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 vb(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:wN})}),(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)(CN,{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)(Om,{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 EN=[{label:`Home`,href:`/`},{label:`Test Cases`,href:`/test-cases`}];function DN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:EN}),(0,l.jsx)(qo,{moduleName:`test-flows`,rowKey:`id`})]})}var{Text:ON}=s.Typography,kN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}],AN={tags:`regression`,active:1},jN={module:{dbName:`Modules`,formField:`module`,label:`Module`}},MN={key:!1,value:!1,expected:!1};function NN(e,t){return t?e[t]??MN:MN}function PN(e,t){e.setFields(t.map(e=>({name:e,errors:[]})))}function FN(e=[]){return e.map(e=>({value:e,label:e}))}function IN(e=``){return String(e??``).trim()}function LN(e=[]){let t=new Map;return e.forEach(e=>{let n=IN(e?.flow),r=n.toLowerCase();n&&!t.has(r)&&t.set(r,n)}),Array.from(t.values()).map(e=>({value:e,label:e}))}function RN(e=[],t,n){let r=IN(t).toLowerCase(),i=IN(n).toLowerCase();return e.reduce((e,t)=>{let n=IN(t?.module).toLowerCase(),a=IN(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 zN({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)(ON,{strong:!0,className:`v1-section-label`,children:t})]})}function BN(){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)(XM),[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=jN[S.typeKey],M=(0,o.useMemo)(()=>FN(r),[r]),N=s.Form.useWatch(`module`,e),P=s.Form.useWatch(`flow`,e),F=s.Form.useWatch(`keyword`,e),I=!!IN(N),L=!!IN(P),R=!I,z=!I||!L,B=(0,o.useMemo)(()=>NN(g,F),[g,F]),V=(e,t=[])=>{e===`module`&&i(t)},ee=async()=>{y(!0);try{let e=await Zy(jN.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 $y();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=IN(t);if(u([]),p([]),e.setFieldsValue({step_order:void 0}),n){x(!0);try{let e=await ab({limit:1e4,offset:0,module:n}),t=Array.isArray(e?.items)?e.items:[];u(t),p(LN(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=IN(t),a=IN(n);if(!i||!a){e.setFieldsValue({step_order:void 0});return}D(!0);try{e.setFieldsValue({step_order:RN(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:IN(t.module),flow:IN(t.flow),step_order:Number(t.step_order),description:IN(t.description),keyword:IN(t.keyword),target:IN(t.target),value:IN(t.value),expected:IN(t.expected),tags:t.tags?IN(t.tags):AN.tags,active:Number(t.active)};k(!0);try{await ib(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)}},ae=(t,n)=>{e.setFieldsValue({[t]:IN(n)})},oe=t=>{e.setFieldsValue({module:IN(t),flow:void 0,step_order:void 0,keyword:void 0,description:void 0,target:void 0,tags:AN.tags,value:void 0,expected:void 0}),PN(e,[`keyword`,`target`,`value`,`expected`])},se=t=>{e.setFieldsValue({flow:IN(t),step_order:void 0,keyword:void 0,target:void 0,value:void 0,expected:void 0}),PN(e,[`keyword`,`target`,`value`,`expected`])},H=t=>{let n=NN(g,t);e.setFieldsValue({keyword:IN(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}),PN(e,[`target`,`value`,`expected`])},ce=e=>{let n=jN[e];C({open:!0,typeKey:e}),t.setFieldsValue({name:``,type:n.label})},le=()=>{C(e=>({...e,open:!1})),t.resetFields()},ue=async()=>{try{let n=IN((await t.validateFields()).name),r=await Qy({name:n,type:j.dbName});V(S.typeKey,r?.items??[]),e.setFieldsValue({[j.formField]:n}),s.message.success(`${j.label} added successfully.`),le()}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:kN})}),(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)(ON,{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:AN,onFinish:ie,autoComplete:`off`,children:[(0,l.jsx)(s.Card,{className:`v1-card`,title:(0,l.jsx)(zN,{icon:(0,l.jsx)(c.FileTextOutlined,{}),title:`LMS Case Details`}),extra:(0,l.jsx)(ON,{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:oe})}),(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:se,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:H})})}),(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=>ae(`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=>ae(`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=>ae(`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=>ae(`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=>ae(`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:le,onOk:()=>{T(!0),ue()},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:IN(e.target.value)})}})}),(0,l.jsx)(s.Form.Item,{label:`Type`,name:`type`,children:(0,l.jsx)(s.Input,{disabled:!0})})]})})]})})]})}var VN=[{label:`Home`,href:`/`},{label:`LMS Cases`,href:`/lms-cases`}];function HN(){return(0,l.jsxs)(`main`,{className:`jobs-list-page`,children:[(0,l.jsx)(n.t,{items:VN}),(0,l.jsx)(qo,{moduleName:`lms-flows`,rowKey:`id`})]})}var UN=[`referenceId`,`ReferenceId`,`candidateId`,`CandidateId`,`entityId`,`EntityId`,`id`,`Id`,`_id`];function WN(e=UN){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 GN(e,t=UN){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 KN=WN();function qN(e){return typeof e==`function`?e:typeof e==`string`?WN([e]):Array.isArray(e)?WN(e):KN}function JN(e,t,n){return!t||typeof t!=`object`?e:{...t,...e,id:e?.id??t?.id??n}}function YN(e,t,n={}){return{status:`success`,total:t,data:{data:e,...n}}}var XN=[`fields`,`fieldConfig`,`tabs`,`tabField`,`actionRules`,`actions`,`columnActions`];function ZN(e){let t=e?.data??e,n={};for(let r of XN){let i=e?.[r]??t?.[r];i==null||Array.isArray(i)&&i.length===0||(n[r]=i)}return n}var QN=e=>String(e??``).replace(/[^a-zA-Z0-9]/g,``).toLowerCase();function $N(e,t,n){let r=(Array.isArray(n)?n:[n]).map(QN).filter(Boolean),i=r.length?e.findIndex(e=>r.includes(QN(e?.value))||r.includes(QN(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 eP=(e,t)=>pi(e,t).rows,tP=(e,t)=>{let{rows:n,total:r}=pi(e,t);return{rows:n,total:r}};function nP(e,t){return function(n,r,i,a={}){return e(t??n,r,i,a)}}function rP(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:eP,mergeRow:typeof e.mergeRow==`function`?e.mergeRow:JN,fetchById:typeof e.fetchById==`function`?e.fetchById:null}}function iP({fetchSecondaryByKeys:e,fetchSecondary:t,extractSecondaryRows:n,fetchSecondaryById:r,secondaryKey:i,mergeRow:a,secondaryFetchLimit:o}){return!e&&!t&&!r?[]:[rP({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 aP(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:UN;return e=>GN(e,t)}function oP(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 sP({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 cP(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 lP({fetchPrimaryPage:e,extractPrimaryPage:t=tP,fetchSecondaryByKeys:n,joinSources:r=[],fetchPrimary:i,extractPrimaryRows:a=eP,fetchSecondary:o,extractSecondaryRows:s=eP,fetchSecondaryById:c,primaryKey:l,secondaryKey:u,mergeRow:d=JN,secondaryFetchLimit:f=200,extraFields:p=[],extraFieldsAfter:m}){let h=Array.isArray(r)&&r.length?r.map(rP).filter(Boolean):iP({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=qN(t.primaryKey??l),s=aP(t.key),c=oP(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=ZN(e);for(let e of Object.keys(t))r[e]??(r[e]=t[e])}return p.length&&(r.fields=$N(r.fields??[],p,m)),YN(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=qN(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 cP(c,sP({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 uP(e,t,n={}){return lP({fetchPrimary:()=>Ak(e,t),extractPrimaryRows:Ok,fetchSecondary:Cn,fetchSecondaryById:jk,secondaryFetchLimit:n.moduleFetchLimit??200})}function dP(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 fP(e){let t=Array.isArray(e?.stages)?e.stages:[];if(!t.length)return e;let n={};for(let e of t){let t=dP(e?.stageName);t&&(n[t]=Number(e?.count)||0)}return{...n,...e}}var pP=e=>{let t=Number(e?.targetSubmission??e?.targetSubmissions);return Number.isFinite(t)&&t>0?t:null};function mP({submittedCountField:e=`submittedCount`,progressField:t=`targetSubmissionProgress`}={}){return function(n,r,i){let a=JN(n,r,i),o=pP(a);return o!=null&&(a[t]=`${Number(a?.[e])||0} of ${o}`),a}}function hP(e={}){let t=mP();return lP({primaryKey:`_id`,extraFields:e.extraFields,extraFieldsAfter:e.extraFieldsAfter,fetchPrimaryPage:Cn,joinSources:[{key:`entityId`,fetchByKeys:(e,t,n,r)=>{let i=Math.max(1,Number(r?.limit)||10);return kk(Math.floor((Number(r?.offset)||0)/i)+1,i)},extractRows:e=>(e?.items??[]).map(fP),mergeRow:(e,n,r)=>{let i=t(e,n,r);return n?._id&&(i.workflowId=n._id),i}}]})}async function gP(e,t=10,n=0,r={},i={}){return pi(await hP(i)(e,t,n,r),e)}async function _P(e,t,n,r=10,i=0,a={}){return pi(await uP(e,t)(n,r,i,a),n)}typeof window<`u`&&(window.__CORE_THEME_BUILD__=`2026-08-28T10:56:49.251Z`);var vP=Pj,yP=xb(MM),bP=xb(PM),xP=xb(YM),SP=xb(sN),CP=xb(gN),wP=xb(yN),TP=xb(SN),EP=xb(TN),DP=xb(DN),OP=xb(BN),kP=xb(HN);exports.ADMIN_API_URL=t.v,exports.ADMIN_APP_ID=t.y,exports.APP_ID=t.b,exports.AUTH_URL=t.x,exports.ActivityNotesCard=Hc,exports.ActivityTab=Lc,exports.AddBatchCandidatePopup=hj,exports.AddFormV1=bc,exports.AdminDashboard=Pj,exports.AdminDashboardContent=yE,exports.AdminPage=vP,exports.AppAlert=xc,exports.AppButton=n.ut,exports.AppShell=Wy,exports.ApprovalActionBar=$g,exports.AssigneeAvatars=Uc,exports.AuthGuard=Ly,exports.BILLING_STATUS_FLOW=Qd,exports.BOOLEAN_API_KEYS=zh,exports.BOOLEAN_PARSEABLE_API_KEYS=Um,exports.BULK_UPLOAD_DEFAULT_ACCEPT=Wc,exports.BULK_UPLOAD_DEFAULT_MAX_SIZE_MB=Gc,exports.Breadcrumb=n.t,exports.BulkUploadPage=xP,exports.BulkUploadPanel=$c,exports.CANDIDATES_URL=t.S,exports.CONTRACT_C2C=C_,exports.CONTRACT_W2=S_,exports.CURRENCY_SYMBOLS=su,exports.CalendarCard=A,exports.CoreThemeAdminApp=CE,exports.CoreThemeAdminRoutes=SE,exports.CustomPagination=ze,exports.DEFAULT_HOURS_POLICY=xg,exports.DayLogModal=Gg,exports.DescriptionBlock=fl,exports.DetailHeaderCard=tp,exports.DetailViewPage=cp,exports.DetailViewV1=Zu,exports.DocumentViewer=n.wn,exports.DynamicCards=Pt,exports.DynamicPopup=HO,exports.DynamicPopupRoute=bj,exports.DynamicTabs=P,exports.EditFormV1=om,exports.FIELD_TYPE_REGISTRY=wh,exports.FINANCE_APPROVAL_CONFIG=m_,exports.FINANCE_TYPE_CFO=s_,exports.FINANCE_TYPE_ONBOARDING_MANAGER=o_,exports.FINANCE_TYPE_ONBOARDING_MANAGER_REAPPROVE=u_,exports.FINANCE_TYPE_ONLY_FINANCE=c_,exports.FINANCE_TYPE_SUBMISSION_MANAGER=a_,exports.FINANCE_TYPE_SUBMISSION_MANAGER_REAPPROVE=l_,exports.FileListCard=Ov,exports.FinanceApprovalPanel=sv,exports.FinanceAvatar=Pf,exports.FinanceBadge=Rf,exports.FinanceDayCell=t_,exports.FinanceDivider=Ef,exports.FinanceEmployeeCell=Ff,exports.FinanceEmptyState=Cf,exports.FinanceEquation=Df,exports.FinanceHistoryTimeline=jf,exports.FinanceHoursGrid=Sf,exports.FinanceKpiRow=xf,exports.FinanceLine=Tf,exports.FinanceListToolbar=bg,exports.FinanceMarginBadge=zf,exports.FinanceMoneyCell=Lf,exports.FinanceRecordsTable=Hf,exports.FinanceRowChevron=Bf,exports.FinanceSection=wf,exports.FinanceStatusPill=bf,exports.FinanceTextCell=If,exports.FinanceTimesheetAnalysis=r_,exports.FinanceWorkflowSteps=Of,exports.HOURS_MESSAGES=Sg,exports.Header=ry,exports.HierarchyUserFilter=zt,exports.JOBS_URL=t.C,exports.LegacyAdminPage=yP,exports.ListView=qo,exports.LmsHomePage=kP,exports.LmsTestForm=OP,exports.Login=Gy,exports.MailPopup=QE,exports.ManageModules=wP,exports.ManageSubmodules=TP,exports.ModuleRowActions=hm,exports.NotesPanel=Qg,exports.NotesTab=Vc,exports.PAYROLL_STATUS_FLOW=$d,exports.POPUP_CONFIGS=oj,exports.ParamCardView=Sm,exports.ParamListView=Om,exports.PeriodBadgeTag=Pg,exports.PreviewPopup=kD,exports.ProjectSelect=bb,exports.ProofUploadPreview=Zg,exports.QuickLogBar=Jg,exports.QuickLogSelectionBar=Kg,exports.RejectionReasonModal=qg,exports.SUBMISSIONS_URL=t.T,exports.SearchBuilderV1=dg,exports.Sidebar=Ny,exports.StatusBadge=pg,exports.StatusBadgeTag=Ng,exports.StickyNotesFullPage=bP,exports.StylishDynamicTabs=hg,exports.TemplateEditor=_g,exports.TestForm=SP,exports.TestingHomePage=DP,exports.TimelineGroups=kc,exports.TimesheetDayCell=Hg,exports.TipTapEditor=n.Tn,exports.UserForm=Nj,exports.VendorShareDrawer=wj,exports.ViewSummaryWidget=zi,exports.WizardPopup=FD,exports.ZinnextTableView=EP,exports.ZinnextTestForm=CP,exports.appNow=n.kn,exports.applyIntegrationStatus=n.Gn,exports.approveSubmission=Ce,exports.buildAcceptAttr=Xc,exports.buildBooleanRequest=Wh,exports.buildCsv=mf,exports.buildDailyRows=cf,exports.buildDayGradient=Bg,exports.buildRateHistoryEntries=J_,exports.buildWeeklyRollup=df,exports.clearSelectedProject=t.i,exports.colors=n.On,exports.computeFinance=B_,exports.computeHoursPolicy=Og,exports.computeMarginBand=ff,exports.conditionMatches=n.i,exports.configureCoreTheme=t.E,exports.configuredFieldLabel=n.a,exports.createAllWorkflowsListFetcher=hP,exports.createMergedListFetcher=lP,exports.createModuleListFetchAdapter=nP,exports.createWorkflowStageListFetcher=uP,exports.currencySymbol=cu,exports.defaultMergeRow=JN,exports.deleteIntegrationConfig=n.nr,exports.deriveDayStats=sf,exports.describeCapacity=Ag,exports.downloadCsv=vf,exports.evaluateShowIfWith=n.o,exports.findEmployerRow=P_,exports.flattenGroups=M_,exports.formatAmount=mu,exports.formatApp=n.An,exports.formatAppDateTime=n.jn,exports.formatFileSize=Yc,exports.formatFinanceMoney=Y_,exports.formatHours=Ud,exports.formatMoney=hu,exports.formatPercent=Gd,exports.formatRate=gu,exports.getActivity=n.dn,exports.getAllWorkflowsModuleList=gP,exports.getAppTimeZone=n.Mn,exports.getApprovalDate=Yd,exports.getBgcIntegrationConfig=n.br,exports.getBgcIntegrationSummary=n.xr,exports.getBillingActionStates=ef,exports.getBooleanEligibleTypes=Ah,exports.getCurrentRoleName=t.c,exports.getFieldLabel=gf,exports.getFieldType=Eh,exports.getFileExtension=Jc,exports.getFinanceApprovalConfig=y_,exports.getFormGroupsRaw=_v,exports.getIntegrationConfig=n.Dr,exports.getIntegrationConfigs=n.Or,exports.getIntegrationSummary=n.kr,exports.getModuleConfig=Ie,exports.getModuleDataDetail=n.pn,exports.getPayrollActionStates=tf,exports.getPeriodBadgeConfig=Re,exports.getSelectedProject=t.l,exports.getStoredToken=t.u,exports.getStoredUser=t.d,exports.getUserRoles=t.f,exports.getVMSApprove=we,exports.getValueStyle=_f,exports.getWorkflowStageModuleList=_P,exports.getWorkflowSteps=nf,exports.humanizeEvent=Jd,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return vs}}),exports.indexFieldConfig=hf,exports.initialsOf=Kd,exports.insertTokenAtCursor=qm,exports.isBooleanEligible=Dh,exports.isBooleanParsable=Gm,exports.isTester=t.p,exports.logout=t.h,exports.marginIncludesReferral=x_,exports.matchLocationTax=z_,Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return gp}}),exports.normalizeContract=I_,Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return el}}),exports.rateUnitLabel=uu,exports.rateUnitShort=fu,exports.reconcileHours=kg,exports.registerFieldType=Th,exports.rejectSubmission=W,exports.resolveActivityMeta=Pc,exports.resolveAndCompute=V_,exports.resolveDayKind=Eg,exports.resolveFinanceInputs=R_,exports.resolveMergeKey=KN,exports.resolveMergedListKey=KN,exports.resolveRejectionReason=b_,exports.resolveSubmissionFinance=vv,exports.saveBgcIntegrationConfig=n.$r,exports.saveIntegrationConfig=n.ni,exports.setSelectedProject=t._,exports.showIfConditions=n.c,exports.stageCountKey=dP,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ky}}),exports.testIntegrationConnection=n.li,exports.toApp=n.Pn,exports.toNumber=pu,exports.tzLabel=n.Fn,exports.tzShortLabel=n.In,exports.useDropdownFields=zn,exports.useDropdownValues=Bi,exports.useEditForm=kv,exports.useFieldConfig=Bn,exports.useFilterFields=Vn,exports.useMenuPermission=rr,exports.useModuleActions=cm,exports.useRecordRefresh=ap,exports.validateBooleanQuery=Km,exports.validateBulkFile=Zc,exports.withAdminAppId=t.D,exports.withAppId=t.O,exports.withAuthGuard=xb;
23
23
  //# sourceMappingURL=index.cjs.map