@realtek/core-theme 0.0.313 → 0.0.314
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/index.cjs +1 -1
- package/dist-lib/index.cjs.map +1 -1
- package/dist-lib/index.js +1 -1
- package/dist-lib/index.js.map +1 -1
- package/package.json +1 -1
package/dist-lib/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=requi
|
|
|
3
3
|
`)}function Kd(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 qd(e,t,n){return(e instanceof Map?e:Kd(e)).get(t)?.label||n}function Jd(e,t,n){let r=(e instanceof Map?e:Kd(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 Yd(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 Xd={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 Zd({status:e=`Ready`,size:t,styleOverride:n}){let r=Xd[e]??{label:String(e),tone:`neutral`},i=n?.label??r.label,a=n?{color:n.color,background:n.bg,borderColor:n.color}:void 0,s=(0,c.jsxs)(`span`,{className:`fin-pill${n?``:` fin-pill--${r.tone}`}${t===`sm`?` fin-pill--sm`:``}`,style:a,children:[(0,c.jsx)(`span`,{className:`fin-pill__dot${r.pulse?` fin-pill__dot--pulse`:``}`}),i]});return r.full?(0,c.jsx)(o.Tooltip,{title:r.full,children:s}):s}function Qd({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,c.jsx)(`div`,{className:r,children:Array.from({length:t},(e,t)=>(0,c.jsxs)(`div`,{className:`finance-kpi fin-kpi--skeleton`,children:[(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--label`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--value`})]},t))})}return(0,c.jsx)(`div`,{className:r,children:e.map(e=>(0,c.jsxs)(`div`,{className:`finance-kpi fin-kpi--${e.tone??`neutral`}`,children:[e.icon?(0,c.jsx)(`span`,{className:`fin-kpi__icon`,children:e.icon}):null,(0,c.jsxs)(`span`,{className:`fin-kpi__body`,children:[(0,c.jsx)(`span`,{className:`finance-kpi__label`,children:e.label}),(0,c.jsx)(`strong`,{className:`finance-kpi__value`,children:e.value}),e.sub??e.hint?(0,c.jsx)(`span`,{className:`finance-kpi__hint`,children:e.sub??e.hint}):null]})]},e.key??e.label))})}function $d({days:e=[]}){return(0,c.jsx)(`div`,{className:`finance-hours-grid`,children:e.map(e=>(0,c.jsxs)(`div`,{className:`finance-hours-grid__day`,children:[(0,c.jsx)(`span`,{children:e.date}),(0,c.jsx)(`strong`,{children:Number(e?.workingHours?.ST??0)+Number(e?.workingHours?.OT??0)})]},e.date))})}function ef({icon:e,title:t,description:n,action:r,compact:i=!1}){return(0,c.jsxs)(`div`,{className:`fin-empty${i?` fin-empty--compact`:``}`,children:[(0,c.jsx)(`span`,{className:`fin-empty__icon`,children:e??(0,c.jsx)(s.InboxOutlined,{})}),(0,c.jsx)(`strong`,{className:`fin-empty__title`,children:t}),n?(0,c.jsx)(`span`,{className:`fin-empty__desc`,children:n}):null,r?(0,c.jsx)(`span`,{className:`fin-empty__action`,children:r}):null]})}function tf({title:e,extra:t,children:n,empty:r,className:i=``,span:a}){return(0,c.jsxs)(`section`,{className:`fin-section${a?` fin-section--span`:``}${i?` ${i}`:``}`,children:[e?(0,c.jsxs)(`header`,{className:`fin-section__head`,children:[(0,c.jsx)(`h4`,{className:`fin-section__title`,children:e}),t?(0,c.jsx)(`span`,{className:`fin-section__extra`,children:t}):null]}):null,(0,c.jsx)(`div`,{className:`fin-section__body`,children:r?(0,c.jsx)(ef,{compact:!0,...r}):n})]})}function nf({label:e,value:t,hint:n,strong:r,accent:i,negative:a}){return(0,c.jsxs)(`div`,{className:[`fin-line`,r?`fin-line--strong`:``,i?`fin-line--accent`:``,a?`fin-line--negative`:``].filter(Boolean).join(` `),children:[(0,c.jsxs)(`span`,{className:`fin-line__label`,children:[e,n!=null&&n!==``?(0,c.jsx)(`span`,{className:`fin-line__hint`,children:n}):null]}),(0,c.jsx)(`span`,{className:`fin-line__value`,children:t})]})}function rf(){return(0,c.jsx)(`div`,{className:`fin-divider`})}function af({terms:e=[]}){return(0,c.jsx)(`div`,{className:`fin-equation`,children:e.map((e,t)=>e.op?(0,c.jsx)(`span`,{className:`fin-eq__op`,children:e.op},`op-${t}`):(0,c.jsxs)(`span`,{className:`fin-eq__term${e.tone?` fin-eq__term--${e.tone}`:``}`,children:[(0,c.jsx)(`span`,{className:`fin-eq__num`,children:e.value}),(0,c.jsx)(`span`,{className:`fin-eq__lbl`,children:e.label})]},e.label??t))})}function of({steps:e=[]}){return(0,c.jsx)(`div`,{className:`fin-steps`,children:e.map((e,t)=>(0,c.jsxs)(`div`,{className:`fin-step fin-step--${e.state}`,children:[t>0?(0,c.jsx)(`span`,{className:`fin-step__line`}):null,(0,c.jsx)(`span`,{className:`fin-step__dot`,children:e.state===`done`?(0,c.jsx)(s.CheckOutlined,{}):null}),(0,c.jsx)(`span`,{className:`fin-step__label`,children:e.label})]},e.key??e.label))})}var sf={check:(0,c.jsx)(s.CheckCircleFilled,{}),dollar:(0,c.jsx)(s.DollarCircleFilled,{}),sync:(0,c.jsx)(s.SyncOutlined,{}),file:(0,c.jsx)(s.FileTextFilled,{})};function cf(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 lf({events:t=[],emptyState:n}){let r=(Array.isArray(t)?[...t]:[]).reverse();return r.length?(0,c.jsx)(`div`,{className:`fin-tl`,children:r.map((t,n)=>{let i=Ed(t?.event);return(0,c.jsxs)(`div`,{className:`fin-tl__item`,children:[(0,c.jsxs)(`div`,{className:`fin-tl__rail`,children:[(0,c.jsx)(`span`,{className:`fin-tl__icon fin-tl__icon--${i.tone}`,children:sf[i.icon]??sf.file}),n<r.length-1?(0,c.jsx)(`span`,{className:`fin-tl__line`}):null]}),(0,c.jsxs)(`div`,{className:`fin-tl__body`,children:[(0,c.jsxs)(`div`,{className:`fin-tl__head`,children:[(0,c.jsx)(`strong`,{className:`fin-tl__label`,children:i.label}),t?.by?(0,c.jsx)(`span`,{className:`fin-tl__actor`,children:t.by}):null]}),(0,c.jsxs)(`div`,{className:`fin-tl__meta`,children:[t?.at?(0,c.jsx)(`span`,{children:e.On(t.at)}):null,t?.at?(0,c.jsx)(`span`,{className:`fin-tl__rel`,children:cf(t.at)}):null]})]})]},`${t?.event}-${t?.at}-${n}`)})}):(0,c.jsx)(ef,{icon:(0,c.jsx)(s.ClockCircleOutlined,{}),title:`No activity yet`,description:`Workflow events will appear here as this record moves through its lifecycle.`,...n??{}})}var uf=[`blue`,`indigo`,`purple`,`green`];function df(e){let t=String(e??``),n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)|0;return uf[Math.abs(n)%uf.length]}function ff({name:e,size:t=`md`}){return(0,c.jsx)(`span`,{className:`fin-avatar fin-avatar--${df(e)} fin-avatar--${t}`,children:wd(e)})}function pf({name:e,secondary:t,link:n=!1}){return(0,c.jsxs)(`div`,{className:`fin-cell-employee`,children:[(0,c.jsx)(ff,{name:e}),(0,c.jsxs)(`span`,{className:`fin-cell-employee__text`,children:[(0,c.jsx)(`strong`,{className:`fin-cell__primary${n?` fin-cell__primary--link`:``}`,children:e||`—`}),t?(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})]})}function mf({primary:e,secondary:t,link:n=!1}){return(0,c.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,c.jsx)(`span`,{className:`fin-cell__primary${n?` fin-cell__primary--link`:``}`,children:e||`—`}),t?(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}function hf({value:e,sub:t,strong:n=!1}){return(0,c.jsxs)(`div`,{className:`fin-cell-money`,children:[(0,c.jsx)(`span`,{className:`fin-cell-money__value${n?` fin-cell-money__value--strong`:``}`,children:typeof e==`number`?bd(e):e??`—`}),t?(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}function gf({children:e,tone:t=`neutral`,title:n}){return(0,c.jsx)(`span`,{className:`fin-badge fin-badge--${t}`,title:n,children:e})}function _f({margin:e,marginPercent:t}){let n=Ud(t);return(0,c.jsxs)(`div`,{className:`fin-cell-margin`,children:[(0,c.jsxs)(gf,{tone:n===`high`?`success`:n===`low`?`danger`:`neutral`,children:[Number(t??0).toFixed(1),`%`]}),e==null?null:(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:bd(e)})]})}function vf(){return(0,c.jsx)(s.RightOutlined,{className:`fin-table__chevron`})}function yf({rows:e=8}){return(0,c.jsx)(`div`,{className:`fin-table-skeleton`,children:Array.from({length:e},(e,t)=>(0,c.jsxs)(`div`,{className:`fin-table-skeleton__row`,children:[(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--avatar`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--lg`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--md`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--md`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--sm`}),(0,c.jsx)(`span`,{className:`fin-skeleton fin-skeleton--pill`})]},t))})}function bf({columns:e,rows:t=[],rowKey:n=`timesheetId`,loading:r=!1,onRowClick:i,page:a,limit:s,total:l=0,onPageChange:u,onLimitChange:d,emptyState:f,scrollX:p=1100}){return r&&!t.length?(0,c.jsx)(yf,{}):!r&&!t.length?(0,c.jsx)(`div`,{className:`fin-table-card`,children:(0,c.jsx)(ef,{title:`No records found`,description:`Try widening the month filter or clearing quick filters — finance records live in their timesheet's month.`,...f??{}})}):(0,c.jsxs)(`div`,{className:`fin-table-card`,children:[(0,c.jsx)(o.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`}),l>0&&a!=null?(0,c.jsx)(`div`,{className:`fin-table__pagination`,children:(0,c.jsx)(Ne,{current:a,pageSize:s,total:l,onChange:e=>u?.(e),onPageSizeChange:e=>d?.(e)})}):null]})}var xf={location:(0,c.jsx)(s.EnvironmentOutlined,{}),designation:(0,c.jsx)(s.SolutionOutlined,{}),experience:(0,c.jsx)(s.ClockCircleOutlined,{}),employment:(0,c.jsx)(s.LaptopOutlined,{}),rate:(0,c.jsx)(s.DollarOutlined,{}),source:(0,c.jsx)(s.AimOutlined,{}),resume:(0,c.jsx)(s.FileTextOutlined,{}),edit:(0,c.jsx)(s.EditOutlined,{}),approve:(0,c.jsx)(s.CheckCircleOutlined,{}),reject:(0,c.jsx)(s.CloseCircleOutlined,{}),export:(0,c.jsx)(s.ExportOutlined,{}),openJd:(0,c.jsx)(s.ExportOutlined,{}),link:(0,c.jsx)(s.LinkOutlined,{}),shareAlt:(0,c.jsx)(s.ShareAltOutlined,{}),idcard:(0,c.jsx)(s.IdcardOutlined,{}),bank:(0,c.jsx)(s.BankOutlined,{}),team:(0,c.jsx)(s.TeamOutlined,{}),project:(0,c.jsx)(s.ProjectOutlined,{}),cycle:(0,c.jsx)(s.SyncOutlined,{}),period:(0,c.jsx)(s.CalendarOutlined,{}),PlayCircleOutlined:(0,c.jsx)(s.PlayCircleOutlined,{}),DollarOutlined:(0,c.jsx)(s.DollarOutlined,{}),FileTextOutlined:(0,c.jsx)(s.FileTextOutlined,{}),FileDoneOutlined:(0,c.jsx)(s.FileDoneOutlined,{})};function Sf({chip:e}){let t=e.icon?(0,c.jsx)(`span`,{className:`fin-meta-chip__icon`,children:e.icon}):null;return(0,c.jsxs)(`span`,{className:`fin-meta-chip`,children:[e.tooltip&&t?(0,c.jsx)(o.Tooltip,{title:e.tooltip,children:t}):t,e.label?(0,c.jsx)(`span`,{className:`fin-meta-chip__label`,children:e.label}):null,(0,c.jsx)(`span`,{className:`fin-meta-chip__value`,children:e.value??`—`}),e.badge?(0,c.jsx)(`span`,{className:`fin-badge fin-badge--brand`,children:e.badge}):null]})}function Cf(e){return Array.isArray(e)?e.map(Cf):e&&typeof e==`object`&&`id`in e&&`value`in e?e.id??e.value:e}function wf(e,t){let n={_id:t,id:t},r=e?.recordMeta;if(r&&typeof r==`object`)for(let[e,t]of Object.entries(r))e in n||(n[e]=t);for(let t of e??[])for(let e of t.fields??[])e?.field!=null&&e.value!==void 0&&(n[e.field]=Cf(e.value));return n}function Tf(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function Ef(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(Tf(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(Tf(t?.[n])))}function Df(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function Of(e){return String(e??``).trim().toLowerCase()}function kf(e,t,n,r){return fr(e.key,t,n,r)}function Af(e,t,n,r){return pr(e.key,t,n,r)}function jf(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 Mf(t,n){let r=(t??[]).flatMap(e=>e.fields??[]),i=!n||/resume|cv/i.test(n),a=r.find(e=>e.field===n)??(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||n||`Document`,type:e?`html`:`text`,content:a.value}]}let s=e.Ft(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||n||`Document`,type:e?`html`:`text`,content:a.value}]}return[]}function Nf({moduleName:n,id:r,customConfigName:i,auxRecords:l,authToken:d,onAction:f,onTabChange:p,onHeaderData:m,hideActions:h=!1,defaultTab:g,refreshKey:_=0}){let v=(0,u.useNavigate)(),y=(0,u.useLocation)(),[b,x]=(0,a.useState)([]),[S,C]=(0,a.useState)([]),[w,T]=(0,a.useState)([]),[E,D]=(0,a.useState)(!1),[O,k]=(0,a.useState)([]),[A,j]=(0,a.useState)(0),M=i||n;(0,a.useEffect)(()=>(d&&t.h(d),()=>{d&&t.n()}),[d]),(0,a.useEffect)(()=>{if(!n)return;let t=!1;async function i(){try{let[i,a]=await Promise.all([Nn({module:n,id:r,view:`detail`}),e.ln(M).catch(()=>({actions:[],actionRules:[]})),e.Rn()]);t||(x(Array.isArray(i)?i:[]),C(a.actions??[]),T(a.actionRules??[]))}catch(e){console.error(`Failed to fetch ${n} header fields:`,e),t||(x([]),C([]),T([]))}}return i(),()=>{t=!0}},[n,M,r,_,A]);let[N,P]=(0,a.useState)({signature:``,groups:{}}),F=gd(l);(0,a.useEffect)(()=>{let e=hd(l);if(!e.length)return;let t=!1;return Promise.all(e.map(async e=>{let t=await Nn({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,a.useMemo)(()=>vd(N.signature===F?N.groups:{}),[N,F]),L=(0,a.useMemo)(()=>cd(M,b,{aux:I}),[M,b,I]);(0,a.useEffect)(()=>{L&&m&&m(L)},[L]);let{eyebrow:R,title:z=`-`,status:B,titleIds:ee=[],meta:V=[],ids:H=[],tabs:te=[],stats:U=[],timestamp:ne=null}=L??{},{canAdd:W,canEdit:G,canDelete:re}=Zn(n),ie=(0,a.useMemo)(()=>wf(b,r),[b,r]),ae=Kc(te,{id:r,moduleName:n,record:ie}),oe=sd(M)?.resolveScope,[se,ce]=(0,a.useState)(void 0);(0,a.useEffect)(()=>{if(typeof oe!=`function`||!r)return;let e=!1,t=Number(localStorage.getItem(`userId`))||0;return Promise.resolve().then(()=>oe({id:r,moduleName:n,record:ie,currentUserId:t})).then(t=>{e||ce(t??null)}).catch(()=>{e||ce(null)}),()=>{e=!0}},[oe,r,n,b]);let le=typeof oe!=`function`||se!==void 0,ue=(0,a.useMemo)(()=>le?S.filter(e=>e.showInDetail??e.showInList).map(jf).filter(e=>!kf(e,ie,w,se??void 0)):[],[w,S,ie,se,le]);function de(t){let n=$n(t);if(n===`add`&&!W||n===`edit`&&!G||n===`delete`&&!re||!e.F(t.permission,M))return!1;if(t.permissionKey){let e=Df(ie,`actionPermission.${t.permissionKey}`);if(e===!1||e===0||e===`0`)return!1}return!0}let[fe,pe]=(0,a.useState)({sourceDefaultTab:g,selectedTab:g}),me=fe.sourceDefaultTab===g?fe.selectedTab:g,he=ae.some(e=>e.key===me)?me:ae[0]?.key,ge=e=>!e.allowedTabs?.length||e.allowedTabs.some(e=>Of(e)===Of(he)),K=ue.filter(e=>e.detailPlacement===`primary`&&de(e)&&ge(e)),_e=ue.filter(e=>e.detailPlacement!==`primary`&&de(e)&&ge(e));if(!L)return null;let ve=i=>{let a=[...K,..._e].find(e=>e.key===i);if(a?.actionType===`document`&&a.documentField){let t=Mf(b,a.documentField);if(t.length){k(t),D(!0);return}e.mn(a.documentModule||n,a.documentIdField?Df(ie,a.documentIdField):r,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)):o.message.warning(`No ${(a.label||`document`).toLowerCase()} available`)}).catch(()=>o.message.warning(`No ${(a.label||`document`).toLowerCase()} available`));return}if(a?.actionType===`copy`){let e=Df(ie,a.copyField||`id`);navigator.clipboard.writeText(Tf(e)).then(()=>o.message.success(`Copied to clipboard`)).catch(()=>o.message.error(`Could not copy to clipboard`));return}if(a?.actionType===`api`&&a.apiPath){let e=Ef(a.apiPath,ie),s=String(a.apiMethod||`POST`).toUpperCase();t.a(t.b,e.startsWith(`/`)?e:`/${e}`,{method:s,body:[`GET`,`DELETE`].includes(s)?void 0:JSON.stringify({ids:[r],record:ie})}).then(()=>{o.message.success(`${a.label} completed`),j(e=>e+1),f?.(i,{moduleName:n,id:r,action:a,refreshed:!0})}).catch(e=>o.message.error(e.message||`${a.label} failed`));return}if(a?.route){let e=typeof a.route==`function`?a.route(r):Ef(a.route,wf(b,r));if(a.linkTarget===`_blank`){window.open(e,`_blank`,`noopener`);return}e.startsWith(`/popup/`)?v(e,{state:{background:y,moduleName:n,selectedIds:[r],selectedRecords:[ie],popupContext:a.popupState??{},popupAction:{key:a.key,apiMethod:a.apiMethod,apiPath:a.apiPath,defaultTemplateId:a.defaultTemplateId},...a.popupState}}):v(e);return}f?.(i,{moduleName:n,id:r,action:a})},ye=e=>{pe({sourceDefaultTab:g,selectedTab:e}),p?.(e,{moduleName:n,id:r})},be=_e.map(e=>{let t=mr(e,ie,se??void 0),n=!t&&Af(e,ie,w,se??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:()=>ve(e.key)}}),xe=sd(M)?.header;if(xe?.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(xe.statusField),s=(xe.chips??[]).map(e=>({key:e.field,icon:e.icon?xf[e.icon]:void 0,label:e.label,value:i(e.field)||`—`,badge:e.badgeField&&i(e.badgeField)||void 0,tooltip:e.tooltip})),l=h?[]:K.map(e=>{let t=mr(e,ie,se??void 0),n=!t&&Af(e,ie,w,se??void 0);return{key:e.key,label:t?t.label:e.label,icon:e.icon?xf[e.icon]:void 0,enabled:!t&&!n,variant:e.tone,disabledReason:n||void 0,onClick:t||n?void 0:()=>ve(e.key)}}),u=a?Pd(n,a):[];return(0,c.jsxs)(`div`,{className:`fin-detail-header`,children:[(0,c.jsxs)(`div`,{className:`fin-dh__top`,children:[(0,c.jsxs)(`div`,{className:`fin-dh__identity`,children:[(0,c.jsx)(ff,{name:z,size:`lg`}),(0,c.jsxs)(`div`,{className:`fin-dh__who`,children:[(0,c.jsxs)(`div`,{className:`fin-dh__name-row`,children:[(0,c.jsx)(`h2`,{className:`fin-dh__name`,children:z||`Details`}),a?(0,c.jsx)(Zd,{status:a}):null]}),R?(0,c.jsx)(`span`,{className:`fin-dh__designation`,children:R}):null]})]}),l.length?(0,c.jsx)(`div`,{className:`fin-dh__actions`,children:l.map(t=>{let n=(0,c.jsx)(e.st,{variant:t.enabled?t.variant??`default`:`default`,icon:t.icon,disabled:!t.enabled,onClick:t.onClick,children:t.label},t.key??t.label);return t.enabled||!t.disabledReason?n:(0,c.jsx)(o.Tooltip,{title:t.disabledReason,children:(0,c.jsx)(`span`,{className:`fin-dh__action-wrap`,children:n})},t.key??t.label)})}):null]}),s.length?(0,c.jsx)(`div`,{className:`fin-dh__chips`,children:s.map(e=>(0,c.jsx)(Sf,{chip:e},e.key??e.label))}):null,u.length?(0,c.jsx)(of,{steps:u}):null]})}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(o.Card,{className:`znx-dh-card`,children:[(0,c.jsxs)(`div`,{className:`znx-dh-top`,children:[(0,c.jsxs)(`div`,{className:`znx-dh-left`,children:[R&&(0,c.jsx)(`div`,{className:`znx-dh-eyebrow`,children:R}),(0,c.jsxs)(`div`,{className:`znx-dh-titlerow`,children:[(0,c.jsx)(`span`,{className:`znx-dh-title`,children:z}),ee.map(e=>(0,c.jsxs)(`span`,{className:`znx-dh-titleid`,children:[(0,c.jsxs)(`span`,{className:`znx-dh-id-label`,children:[e.label,`:`]}),` `,e.value]},e.label)),B&&(0,c.jsx)(o.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})]}),H.length>0&&(0,c.jsx)(`div`,{className:`znx-dh-ids`,children:H.map(e=>(0,c.jsxs)(`span`,{className:`znx-dh-id`,children:[(0,c.jsxs)(`span`,{className:`znx-dh-id-label`,children:[e.label,`:`]}),` `,e.value]},e.label))}),V.length>0&&(0,c.jsx)(`div`,{className:`znx-dh-meta`,children:V.map((e,t)=>{let n=md(e,e=>Df(ie,e)??ie?.[e]);return(0,c.jsxs)(`span`,{className:`znx-dh-meta-item`,children:[n.icon&&xf[n.icon]&&(0,c.jsx)(`span`,{className:`znx-dh-meta-icon`,children:xf[n.icon]}),n.variant===`pill`?(0,c.jsxs)(c.Fragment,{children:[n.label&&(0,c.jsxs)(`span`,{className:`znx-dh-meta-label`,children:[n.label,`:`]}),(0,c.jsx)(o.Tag,{className:`znx-dh-meta-pill`,color:n.tagColor,style:n.tagStyle,children:n.value||n.text})]}):(0,c.jsx)(`span`,{children:n.text})]},t)})})]}),!h&&(0,c.jsxs)(`div`,{className:`znx-dh-actions-col`,children:[(0,c.jsxs)(`div`,{className:`znx-dh-actions`,children:[K.map(e=>{let t=mr(e,ie,se??void 0),n=!t&&Af(e,ie,w,se??void 0),r=(0,c.jsx)(o.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,c.jsx)(s.CheckCircleOutlined,{}):e.icon?xf[e.icon]:void 0,onClick:t||n?void 0:()=>ve(e.key),children:t?t.label:e.label},e.key);return n?(0,c.jsx)(o.Tooltip,{title:n,children:(0,c.jsx)(`span`,{children:r})},e.key):r}),_e.length>0&&(0,c.jsx)(o.Dropdown,{trigger:[`click`],placement:`bottomRight`,menu:{items:be},children:(0,c.jsx)(o.Button,{type:`text`,className:`znx-dh-more`,icon:(0,c.jsx)(s.MoreOutlined,{})})})]}),U.length>0&&(0,c.jsx)(`div`,{className:`znx-dh-stats`,children:U.map(e=>(0,c.jsxs)(`div`,{className:`znx-dh-stat`,children:[(0,c.jsx)(`span`,{className:`znx-dh-stat-value`,children:e.value}),(0,c.jsx)(`span`,{className:`znx-dh-stat-label`,children:e.label})]},e.label))}),ne?.value&&(0,c.jsxs)(`div`,{className:`znx-dh-created`,children:[`Created on `,ne.value]})]})]}),ae.length>0&&(0,c.jsx)(`div`,{className:`znx-dh-tabs`,children:ae.map(e=>(0,c.jsx)(`button`,{type:`button`,className:`znx-dh-tab${he===e.key?` is-active`:``}`,onClick:()=>ye(e.key),children:e.label},e.key))})]}),(0,c.jsx)(e.xn,{documents:O,open:E,onClose:()=>D(!1)})]})}var Pf={};function Ff(){let e=(typeof window<`u`&&window.__CORE_THEME_CONFIG__?.tabContentRegistry)??{};if(!Object.keys(e).length)return Pf;let t={...Pf};return Object.entries(e).forEach(([e,n])=>{t[e]={...t[e]??{},...n}}),t}function If(e,t){return!t||t===`details`?null:Ff()[e]?.[t]??null}function Lf(){let e=(0,u.useLocation)();return e.state?.refreshTimestamp??e.state?.__refreshedAt??0}function Rf({component:e,id:t,moduleName:n,onDescriptionSaved:r}){return e?(0,c.jsx)(e,{id:t,moduleName:n,onDescriptionSaved:r}):null}var{Text:zf}=o.Typography;function Bf({moduleName:e,id:t,backPath:n=``,showFooter:r=!0,users:i=[],showActivity:s=!0,showNotes:l=!0,onHeaderAction:d,onHeaderTabChange:f,onHeaderData:p}){let m=(0,u.useNavigate)(),h=(0,u.useParams)(),[g,_]=(0,u.useSearchParams)(),v=(0,u.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,a.useState)(0),C=Lf(),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)=>{d?.(e,t)},D=(0,a.useMemo)(()=>sd(e)?.tabs??[],[e]),O=Kc(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,a.useMemo)(()=>k?If(e,b):null,[e,b,k]);return(0,c.jsxs)(`div`,{className:`v1-page v1-detail-page`,children:[(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(Nf,{moduleName:e,id:y,defaultTab:b,onAction:E,onTabChange:w,onHeaderData:p,refreshKey:C}),A?(0,c.jsx)(Rf,{component:A,id:y,moduleName:e,onDescriptionSaved:T}):(0,c.jsxs)(o.Row,{gutter:[16,16],align:`stretch`,children:[(0,c.jsx)(o.Col,{xs:24,lg:16,children:(0,c.jsx)(ku,{moduleName:e,id:y,refreshKey:x+C,onDescriptionSaved:T})}),(0,c.jsx)(o.Col,{xs:24,lg:8,children:(0,c.jsx)(bc,{moduleName:e,id:y,users:i,showActivity:s,showNotes:l,refreshKey:C})})]})]}),n&&r&&(0,c.jsxs)(`div`,{className:`v1-footer`,children:[(0,c.jsx)(zf,{type:`secondary`,children:y?`Record ID: ${y}`:`Detail view`}),(0,c.jsx)(o.Button,{onClick:()=>m(n),children:`Back`})]})]})}Bf.propTypes={moduleName:d.default.string,id:d.default.string,backPath:d.default.string,showFooter:d.default.bool,users:d.default.array,showActivity:d.default.bool,showNotes:d.default.bool,onHeaderAction:d.default.func,onHeaderTabChange:d.default.func,onHeaderData:d.default.func};var Vf={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 Hf(e={}){return Vf[e.field]??[]}var Uf=new Set([``,`false`,`0`,`no`,`null`,`undefined`]);function Wf(e){return e==null||e===!1?!1:typeof e==`number`?e!==0&&!Number.isNaN(e):typeof e==`string`?!Uf.has(e.trim().toLowerCase()):Array.isArray(e)?e.length>0:!0}function Gf(e){return Array.isArray(e)?e.map(e=>String(e??``).trim()).filter(Boolean):String(e??``).split(/[\s,]+/).map(e=>e.trim()).filter(Boolean)}function Kf({lockKeys:e=[],resultValue:t,hasResultField:n=!0,readSibling:r}){return!e.length||typeof r!=`function`||n&&!Wf(t)?!1:e.every(e=>Wf(r(e)))}function qf(e,t=[]){let n=e;for(let e of t){if(n==null)return;n=n[e]}return n}var Jf=e.gi({default:()=>Rp}),{Text:Yf}=o.Typography,{TextArea:Xf}=o.Input;function Zf(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function Qf({form:t,field:n,absoluteName:r}){let[i,s]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),d=(0,a.useRef)(null),f=o.Form.useWatch(n.verifyResultField?Zf(r,n.verifyResultField):[`__noop_verify__`],{form:t,preserve:!0}),p=o.Form.useWatch(r,t),m=(0,a.useMemo)(()=>Gf(n.verifyLockedWhenFields),[n.verifyLockedWhenFields]),h=o.Form.useWatch(e=>Kf({lockKeys:m,resultValue:qf(e,Zf(r,n.verifyResultField)),hasResultField:!!n.verifyResultField,readSibling:t=>qf(e,Zf(r,t))}),{form:t,preserve:!0});return(0,a.useEffect)(()=>{let e=String(p??``).trim();if(f===!0&&d.current===null&&e){d.current=e;return}f===!0&&d.current!==null&&e!==d.current&&(n.verifyResultField&&t.setFieldValue(Zf(r,n.verifyResultField),!1),n.verifyTimestampField&&t.setFieldValue(Zf(r,n.verifyTimestampField),void 0),d.current=null)},[r,p,n.verifyResultField,n.verifyTimestampField,t,f]),n.verifyAction===`email`?h?(0,c.jsx)(Yf,{type:`success`,strong:!0,className:`v1-verify-field-wrap`,children:n.verifyLockedLabel||`Verified`}):f===!0?l&&!l.mailboxConfirmed&&(l.catchAll||l.result===`risky`)?(0,c.jsx)(o.Tooltip,{title:l.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,c.jsx)(Yf,{type:`warning`,strong:!0,className:`v1-verify-field-wrap`,children:n.verifyUnconfirmedLabel||`Accepted`})}):(0,c.jsx)(Yf,{type:`success`,strong:!0,className:`v1-verify-field-wrap`,children:n.verifySuccessLabel||`Valid`}):(0,c.jsx)(o.Button,{size:`small`,loading:i,onClick:async()=>{let i=String(p??``).trim();if(!i){o.message.warning(`Enter an email first`);return}s(!0);try{let a=await e.hi(i);d.current=a.valid?i:null,u(a.valid?a:null),n.verifyResultField&&t.setFieldValue(Zf(r,n.verifyResultField),a.valid),n.verifyTimestampField&&t.setFieldValue(Zf(r,n.verifyTimestampField),a.valid?new Date().toISOString():void 0),a.valid?a.mailboxConfirmed?o.message.success(`Email verified — the mail server confirmed this mailbox`):o.message.warning(a.reason||`The domain can receive mail, but this exact mailbox could not be confirmed`):o.message.error(a.reason?`Invalid email: ${a.reason}`:`Email could not be verified`)}catch(e){d.current=null,u(null),n.verifyResultField&&t.setFieldValue(Zf(r,n.verifyResultField),!1),n.verifyTimestampField&&t.setFieldValue(Zf(r,n.verifyTimestampField),void 0),o.message.error(e?.message||`Could not verify email`)}finally{s(!1)}},className:`v1-verify-field-wrap`,children:f===!1?n.verifyRetryLabel||`Re Verify`:n.verifyIdleLabel||`Verify Email`}):null}function $f({form:t,field:n,siblingPrefix:r,locked:i,combined:a=!1}){let s=e.a(n,o.Form.useWatch(e.r(n?.labelWhen,r),t),a);return a?s:(0,c.jsx)(hp,{field:n,label:s,locked:i})}function ep({form:e,groups:t,disabled:n,loading:r,onClick:i,children:a}){let s=o.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}),l=n||s,u=t.find(e=>e.submitDisabledMessage)?.submitDisabledMessage,d=t.find(e=>e.requireValidatedField)?.requireValidatedFieldMessage,f=s?d||u||`Verify every required row before submitting.`:u||`Complete all mandatory fields before submitting.`,p=(0,c.jsx)(o.Button,{type:`primary`,onClick:i,disabled:l,loading:r,children:a});return l&&!r?(0,c.jsx)(o.Tooltip,{title:f,children:(0,c.jsx)(`span`,{style:{display:`inline-flex`,cursor:`not-allowed`},children:p})}):p}function tp({form:t,rules:n,watchPaths:r,targetPath:i,resetOnNoMatch:s=!0}){let c=o.Form.useWatch(e=>JSON.stringify(r.map(({path:t})=>t.reduce((e,t)=>e==null?e:e[t],e)??null)),{form:t,preserve:!0}),l=(0,a.useRef)(void 0),u=(0,a.useRef)(!0);return(0,a.useEffect)(()=>{let a=c?JSON.parse(c):[],o={};r.forEach(({field:e},t)=>{o[e]=a[t]});let d=u.current;u.current=!1;let f=e.U({rules:n,watched:o,current:t.getFieldValue(i),lastApplied:l.current,clearOnMismatch:s,initial:d});f.action===`set`?(t.setFieldValue(i,f.value),l.current=f.value):f.action===`clear`&&(t.setFieldValue(i,void 0),l.current=void 0)},[c]),null}var np=[(0,c.jsx)(s.UserOutlined,{}),(0,c.jsx)(s.EnvironmentOutlined,{}),(0,c.jsx)(s.SolutionOutlined,{}),(0,c.jsx)(s.InfoCircleOutlined,{}),(0,c.jsx)(s.FileTextOutlined,{})],rp={email:(0,c.jsx)(s.MailOutlined,{className:`v1-input-icon`}),contactNumber:(0,c.jsx)(s.PhoneOutlined,{className:`v1-input-icon`}),phone:(0,c.jsx)(s.PhoneOutlined,{className:`v1-input-icon`}),currentLocation:(0,c.jsx)(s.EnvironmentOutlined,{className:`v1-input-icon`}),preferredLocation:(0,c.jsx)(s.EnvironmentOutlined,{className:`v1-input-icon`}),designation:(0,c.jsx)(s.SolutionOutlined,{className:`v1-input-icon`}),skills:(0,c.jsx)(s.TagsOutlined,{className:`v1-input-icon`}),firstName:(0,c.jsx)(s.UserOutlined,{className:`v1-input-icon`}),lastName:(0,c.jsx)(s.UserOutlined,{className:`v1-input-icon`}),jobTitle:(0,c.jsx)(s.SolutionOutlined,{className:`v1-input-icon`}),jobLocation:(0,c.jsx)(s.EnvironmentOutlined,{className:`v1-input-icon`}),vendorEmail:(0,c.jsx)(s.MailOutlined,{className:`v1-input-icon`})},ip=e=>e===!0||e===1||e===`1`,ap=(t,n)=>(t?.edit===void 0||ip(t.edit))&&(!t?.editablePermission||e.F(t.editablePermission,n)),op=e=>e==null||e===``;function sp(e){return e==null||e===``?!1:Array.isArray(e)?e.length>0&&e.some(sp):typeof e==`object`?Object.values(e).some(sp):!0}function cp(e=``){let t=String(e).toLowerCase();return t===`job`?`jobs`:t===`candidate`?`candidates`:t===`submissions`?`submission`:t}function lp(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 up(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 ip(t);case`falsy`:return!ip(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 dp=a.default.createContext(!1);function fp({form:t,group:n,children:r,inheritParent:i=!0}){let s=a.default.useContext(dp),l=n?.disabledIf?.field?e.kt(n.disabledIf.field):[`__noop_group_disabled__`],u=o.Form.useWatch(l,t),d=n?.disabledIf?.field?up(n.disabledIf,u):!1,f=i&&s||!!n?.disabled||d;return(0,c.jsx)(dp.Provider,{value:f,children:r})}function pp({form:e,showIf:t,render:n}){return up(t,o.Form.useWatch(t.field,e))?n():null}function mp(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}function hp({field:t,label:n,locked:r}){if(!n)return n;let i=e.I(t),a=!!i;return!a&&!r?n:(0,c.jsxs)(`span`,{className:`v1-field-label-with-info`,children:[(0,c.jsx)(`span`,{children:n}),a&&(0,c.jsx)(o.Tooltip,{title:i,children:(0,c.jsx)(s.InfoCircleOutlined,{className:`v1-field-info-icon`})}),r&&(0,c.jsx)(o.Tooltip,{title:`You don't have permission to edit this field`,children:(0,c.jsx)(s.LockOutlined,{className:`v1-field-info-icon`})})]})}function gp({group:e}){return!ip(e?.infoEnabled)||op(e?.infoText)?null:(0,c.jsx)(Yf,{type:`secondary`,className:`v1-group-info-message`,children:e.infoText})}function _p({group:e}){return!ip(e?.toggleEnabled)||op(e?.toggleField)?null:(0,c.jsxs)(o.Space,{size:6,align:`center`,onClick:e=>e.stopPropagation(),children:[(0,c.jsx)(Yf,{type:`secondary`,className:`v1-combine-toggle-label`,children:e.toggleLabel||`Toggle`}),(0,c.jsx)(o.Form.Item,{name:e.toggleField,valuePropName:`checked`,initialValue:!!e.toggleValue,noStyle:!0,children:(0,c.jsx)(o.Switch,{size:`small`})})]})}function vp(t=[],n,r,i){let a=i??new Set;return[...t].filter(t=>!ip(t.hideGroup)&&!ip(t.hideGroupInForm)&&e.on(r,t.name)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(t=>({...t,fields:[...t.fields??[]].map(e=>a.has(e.field)?{...e,show:1,req:1}:e).filter(i=>String(i.field??``).trim()!==``&&(!i.visiblePermission||e.F(i.visiblePermission,n))&&e.in(r,t.name,i.field)).map(n=>e.an(r,t.name,n.field)?n:{...n,disabled:!0}).sort((e,t)=>Number(e.order??0)-Number(t.order??0))})).filter(e=>e.fields.length)}function yp(e){return String(e??``).replace(/<[^>]*>/g,``).replace(/ /g,` `).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).trim()}function bp(e,t){let n=(e.validations??e.validation??e.rules??[]).find(e=>(typeof e==`string`?e:e?.type)===t);if(!(!n||typeof n==`string`))return n.value??n.length??n[t]}var xp=({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 Sp(t,n){return e.et(t,n)}var Cp=({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(Sp(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}`))}}),wp={minLength3:e=>wp.min({...e,value:3}),minLength5:e=>wp.min({...e,value:5}),noPastDate:({label:t,message:n})=>({validator:(r,i)=>{if(op(i))return Promise.resolve();let a=new Date;return a.setHours(0,0,0,0),e.g(i)<a.getTime()?Promise.reject(Error(n??`${t} cannot be a past date`)):Promise.resolve()}}),noFutureDate:({label:t,message:n})=>({validator:(r,i)=>{if(op(i))return Promise.resolve();let a=new Date;return a.setHours(23,59,59,999),e.g(i)>a.getTime()?Promise.reject(Error(n??`${t} cannot be a future date`)):Promise.resolve()}}),minAge:({message:t,value:n})=>({validator:(r,i)=>{if(op(i))return Promise.resolve();let a=Number(n??18),o=new Date;return o.setFullYear(o.getFullYear()-a),o.setHours(23,59,59,999),e.g(i)>o.getTime()?Promise.reject(Error(t??`Must be at least ${a} years old`)):Promise.resolve()}}),dateAfterField:({label:t,message:n,value:r,rule:i,form:a,name:o})=>e.p({type:`dateAfterField`,label:t,rule:{...i,value:r??i?.compareField??i?.field,message:n},readSibling:e=>a.getFieldValue(Sp(o,e))}),dateBeforeField:({label:t,message:n,value:r,rule:i,form:a,name:o})=>e.p({type:`dateBeforeField`,label:t,rule:{...i,value:r??i?.compareField??i?.field,message:n},readSibling:e=>a.getFieldValue(Sp(o,e))}),timeAfterField:({label:t,message:n,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(Sp(o,l));if(op(u))return Promise.resolve();let d=e._(c),f=e._(u);return d===null||f===null||d>f?Promise.resolve():Promise.reject(Error(n??`${t} must be after ${l}`))}}),timeBeforeField:({label:t,message:n,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(Sp(o,l));if(op(u))return Promise.resolve();let d=e._(c),f=e._(u);return d===null||f===null||d<f?Promise.resolve():Promise.reject(Error(n??`${t} must be before ${l}`))}}),greaterThanField:e=>Cp({...e,compare:(e,t)=>e>=t,text:`must be greater than or equal to`}),strictGreaterThanField:e=>Cp({...e,compare:(e,t)=>e>t,text:`must be greater than`}),strictLessThanField:e=>Cp({...e,compare:(e,t)=>e<t,text:`must be less than`}),lessThanOrEqualField:e=>Cp({...e,compare:(e,t)=>e<=t,text:`must be less than or equal to`}),maxFromField:t=>e.nt(t),maxFieldWithFallback:({label:t,message:n,value:r,rule:i,form:a,name:o})=>({validator:async(s,c)=>{let l=e.Z({input:c,compareFields:e.Q(r??i.compareFields),readValue:t=>e.$(a,o,t)});return l.ok?Promise.resolve():Promise.reject(Error(n??`${t} must not exceed ${l.field}`))}}),required:({field:e,message:t,form:n,name:r})=>({validator:(i,a)=>{if(e?.disabledByField&&n&&r&&ip(n.getFieldValue(Ep(r,e.disabledByField)))||e?.requiredIfField&&n&&!ip(n.getFieldValue(Ep(r,e.requiredIfField))))return Promise.resolve();let o=a==null||a===``||Array.isArray(a)&&a.length===0;return!o&&e?.type===`text-editor`&&(o=yp(a)===``),o?Promise.reject(Error(t??`Mandatory Field`)):Promise.resolve()}}),email:({label:t,message:n})=>e.St(t,n),unique:({field:t,rule:n,uniqueContext:r})=>e.ht({field:t,validation:n,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:t})=>({validator:(n,r)=>{if(r==null||r===``)return Promise.resolve();let{total:i}=e.zn();return e.Bn(r).length===i?Promise.resolve():Promise.reject(Error(t??`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`?xp({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`?yp(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`?xp({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`?yp(a):String(a);return o===``||o.length<=Number(r)?Promise.resolve():Promise.reject(Error(n??`${t} must not exceed ${r} characters`))}}};function Tp(e,t,n,r,i,a){let o=typeof e==`string`?{type:e}:e,s=o.type??o.rule??o.name,c=o.value??o.length??o.min??o.max,l=t.label??t.field??`Field`,u=wp[s];return u?u({field:t,label:l,message:o.message,rule:o,value:c,form:n,name:r,prefixFor:i,uniqueContext:a}):o}function Ep(e,t){return Array.isArray(e)&&e.length>1?[...e.slice(0,-1),t]:[t]}function Dp(e){return ip(e?.req)?!0:(e?.validations??e?.validation??e?.rules??[]).some(e=>(typeof e==`string`?e:e?.type)===`required`)}function Op(t,n,r,i=!1,a=void 0,o=void 0,s=void 0){let c=t.label??t.field??`Field`,l=t.validations??t.validation??t.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),t.rowHierarchy){let i=jp(n,r);i.rows&&f.push(e.m({field:t,...i}))}!i&&!u&&(ip(t.req)||t.requiredIfField)&&f.push(wp.required({field:t,message:`Mandatory Field`,form:n,name:r})),(t.type===`email`||t.formatter===`email`)&&!d&&f.push(e.St(c)),t.type===`number`&&f.push(ip(t.decimal)?{pattern:/^\d+(\.\d+)?$/,message:`${c} must be a number`}:{pattern:/^[0-9]+$/,message:`${c} must be a number`});let p=e.nn(t,r,a,e=>Tp(e,t,n,r,a,o));return e.mt([...f,...l.map(p),e.rn(t)])}function kp(t,n,r){let i=new Set([`greaterThanField`,`strictGreaterThanField`,`strictLessThanField`,`lessThanOrEqualField`,`maxFieldWithFallback`,`dateAfterField`,`dateBeforeField`,`timeAfterField`,`timeBeforeField`]);return[...(t.validations??t.validation??t.rules??[]).filter(e=>(typeof e==`string`?e:e?.type)===`maxFromField`).map(t=>e.tt(t,n,r)).filter(Boolean),...(t.validations??t.validation??t.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=>Sp(n,e)))]}function Ap(e){let t=e.len??bp(e,`len`),n=e.min??bp(e,`min`),r=e.max??bp(e,`max`);return e.type===`number`?{min:n??void 0,max:r??void 0}:{minLength:n??void 0,maxLength:e.maxLength??t??r??void 0}}function jp(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 Mp(t,n,r){return e.f({field:t,readSibling:e=>n.getFieldValue(Sp(r,e)),...jp(n,r)})}function Np(t){return e.h(t)}function Pp(t,n){return n?n===`phone`?e.In(t):n===`digits`?t.replace(/\D/g,``).slice(0,10):n===`email`||n===`noSpaces`?t.replace(/\s/g,``):n===`name`?t.replace(/\s+/g,` `).trimStart().replace(/\b\w/g,e=>e.toUpperCase()):t:t}function Fp({field:n,form:r,name:i,value:l,checked:u,fileList:d,moduleName:f,initialValue:p,scopeValues:m={},onAiUpload:h,onRegionBlocked:g,onRowOrderChange:_,formDisabled:v,rowFieldKeys:y}){let b=n.type??`text`,x=!ap(n,f),[S,C]=(0,a.useState)(null),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(``),[O,k]=(0,a.useState)(``),[A,j]=(0,a.useState)(``),[M,N]=(0,a.useState)({open:!1,docs:[],index:0}),[P,F]=(0,a.useState)(null),[I,L]=(0,a.useState)(0),R=(0,a.useRef)([]),z=Array.isArray(i)&&i.length>=3&&typeof i[1]==`number`,B=n.lookupFilterValueFrom?e.kt(n.lookupFilterValueFrom):[`__lookup_filter_${n.field}`],ee=n.lookupFilterValueFrom&&z?[...i.slice(0,2),...e.kt(n.lookupFilterValueFrom)]:[`__noop_row_filter__`],V=o.Form.useWatch(B,r),H=o.Form.useWatch(ee,r),te=op(H)?V:H,U=n.lookupFilterValueFrom?m[n.lookupFilterValueFrom]:void 0,ne=op(U)?te:U,W=n.disabledByField?Array.isArray(i)&&i.length>1?[...i.slice(0,-1),n.disabledByField]:[n.disabledByField]:[`__noop_disabled_watch__`],G=o.Form.useWatch(W,r),re=n.disabledIf?.field?e.kt(n.disabledIf.field):[`__noop_disabled_if__`],ie=n.disabledIf?.field&&z?[...i.slice(0,2),...e.kt(n.disabledIf.field)]:[`__noop_disabled_if_row__`],ae=o.Form.useWatch(re,r),oe=o.Form.useWatch(ie,r),se=n.disabledIf?.field?e.i(n.disabledIf,op(oe)?ae:oe):!1,ce=n.optionsFromField||``,le=ce?e.kt(ce):[`__noop_options_from__`],ue=ce&&z&&(!y||y.has(ce))?[...i.slice(0,2),...e.kt(ce)]:[`__noop_options_from_row__`],de=o.Form.useWatch(le,r),fe=o.Form.useWatch(ue,r),pe=op(fe)?de:fe,me=ip(n.prefillWhenExclusive)&&n.prefillWhen?.length?n.prefillWhen:null,he=o.Form.useWatch(t=>me?JSON.stringify(e.V(me).map(n=>{let r=e=>e.reduce((e,t)=>e==null?e:e[t],t),a=z&&(!y||y.has(n))?r([...i.slice(0,2),...e.kt(n)]):void 0;return(op(a)?r(e.kt(n)):a)??null})):``,{form:r,preserve:!0}),ge=(0,a.useMemo)(()=>{if(!me||!he)return null;let t=JSON.parse(he),n={};return e.V(me).forEach((e,r)=>{n[e]=t[r]}),n},[he]),K=a.default.useContext(dp),_e=n.exclusiveInGroup&&z?[i[0]]:[`__noop_exclusive_watch__`],ve=o.Form.useWatch(_e,r),ye=(0,a.useMemo)(()=>{if(!n.exclusiveInGroup||!z||!Array.isArray(ve))return!1;let e=i[1],t=i[i.length-1];return ve.some((n,r)=>r!==e&&ip(n?.[t]))},[n.exclusiveInGroup,z,ve,i]),be=n.locationCountryFrom?e.kt(n.locationCountryFrom):[`__noop_loc_country__`],xe=n.locationCountryFrom&&z?[...i.slice(0,2),...e.kt(n.locationCountryFrom)]:[`__noop_loc_country_row__`],Se=o.Form.useWatch(be,r),Ce=o.Form.useWatch(xe,r),we=op(Ce)?Se:Ce,Te=n.locationStateFrom?e.kt(n.locationStateFrom):[`__noop_loc_state__`],Ee=n.locationStateFrom&&z?[...i.slice(0,2),...e.kt(n.locationStateFrom)]:[`__noop_loc_state_row__`],De=o.Form.useWatch(Te,r),Oe=o.Form.useWatch(Ee,r),ke=op(Oe)?De:Oe,Ae=n.dataSource===`locationMaster`&&(n.locationLevel===`state`&&op(we)||n.locationLevel===`city`&&(op(we)||op(ke))),je=x||!!n.disabled||se||(n.disabledByField?ip(G):!1)||!!v||K||ye||Ae;(0,a.useEffect)(()=>{if(b===`location`){let e=!1;async function r(){try{T(!0);let r=await t.a(t.b,`/admin/location-dropdown-values?${new URLSearchParams({search:E,limit:String(n.limit??50),offset:`0`})}`),i=r?.data??r??[];e||C(lp(Array.isArray(i)?i:[]))}catch(t){console.error(`[EditFormV1] Failed to fetch locations for "${n.field}":`,t),e||C([])}finally{e||T(!1)}}return r(),()=>{e=!0}}let r=n.dataSource;if(![`select`,`radio`,`checkbox`].includes(b)||!r||r===`static`)return;if(r===`lookup`&&n.lookupFilterField&&op(ne)){C([]),T(!1);return}let i=!1;async function a(){try{T(!0);let a=[];if(r===`master`||r===`module`)a=await e.gn(f,n.field,r===`master`?A:``,n.limit??50,0,{dataSource:r,masterName:n.masterName,groupName:n.groupName});else if(r===`lookup`){let r=new URLSearchParams({collection:n.lookupCollection??``,displayField:n.displayField??``,valueField:n.valueField??`_id`});n.displayField2&&r.set(`displayField2`,n.displayField2),O&&r.set(`search`,O),n.lookupFilterField&&!op(ne)&&(r.set(`filterField`,n.lookupFilterField),r.set(`filterValue`,String(ne)));let i={field:n.field,extraFields:n.extraFields,optionsRequireExtraField:n.optionsRequireExtraField,optionsRequireExtraValue:n.optionsRequireExtraValue,optionsHierarchyParentField:n.optionsHierarchyParentField,optionsHierarchySelfFrom:n.optionsHierarchySelfFrom},o=e.R(i);o.length&&r.set(`extraFields`,o.join(`,`));let s=await t.a(t.b,`/admin/lookup-dropdown-values?${r}`);a=s?.data??s??[],a=e.L(a,i,{source:`EditFormV1`})}else if(r===`locationMaster`){let e=n.locationLevel||`country`;if(e===`state`&&op(we))a=[];else if(e===`city`&&(op(we)||op(ke)))a=[];else{let r=new URLSearchParams({level:e,limit:String(n.limit??250),offset:`0`});op(we)||r.set(`country`,String(we)),op(ke)||r.set(`state`,String(ke)),O&&r.set(`search`,O);let i=await t.a(t.b,`/admin/location-dropdown-values?${r}`);a=i?.data??i??[]}}else if(r===`group`){let e=String(n.groupName??``).toLowerCase().trim();if(e===`users`||e===`user`){let e=await t.a(t.b,`/get-all-users?limit=500&offset=0`),r=e?.data?.users??e?.users??e?.data??[],i=String(n.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||(R.current=Array.isArray(a)?a:[],C(lp(R.current)))}catch(e){console.error(`[EditFormV1] Failed to fetch options for "${n.field}":`,e),i||C([])}finally{i||T(!1)}}return a(),()=>{i=!0}},[b,n.dataSource,n.field,n.lookupCollection,n.displayField,n.displayField2,n.valueField,n.lookupFilterField,ne,n.groupName,n.groupRoleContains,n.masterName,n.limit,E,O,A,f,n.extraFields,n.optionsRequireExtraField,n.optionsRequireExtraValue,n.optionsHierarchyParentField,n.optionsHierarchySelfFrom,I,n.locationLevel,n.locationCountryFrom,n.locationStateFrom,we,ke]);let Me=lp([n.options,n.values].find(e=>Array.isArray(e)&&e.length>0)??(b===`checkbox`?[]:Hf(n))),Ne=S??Me,[Pe,Fe]=(0,a.useState)([]),q=e.b(l,Ne).join(`,`);(0,a.useEffect)(()=>{if(!q||n.dataSource!==`lookup`||w)return;let t=!1;return e.v(n,q.split(`,`)).then(e=>{t||Fe(e)}).catch(()=>{t||Fe([])}),()=>{t=!0}},[q,n.dataSource,n.lookupCollection,n.displayField,n.displayField2,n.valueField,w]);let Ie=e.y(Ne,Pe),J=ce?e.z(Ie,pe):Ie,Le=me?e.B(J,me,ge??{}):J,Re=(n.multiSelect?`multiple`:n.mode??(ip(n.multiple)?`multiple`:void 0))??(e.qt(n)===`array`?`multiple`:void 0),ze=ip(n.allowCustomValues),Be=ze?`tags`:Re,Y=!!n.multiSelect||ip(n.multiple)||e.qt(n)===`array`||Re===`multiple`,Ve=ze?typeof n.tokenSeparators==`string`&&n.tokenSeparators?n.tokenSeparators.split(``):[`,`]:void 0,He=[`select`,`location`].includes(b),Ue=n.hidePlaceholder?void 0:n.placeholder??`${He?`Select`:`Enter`} ${String(n.label??``).toLowerCase()}`,We=Ap(n),Ge=()=>{setTimeout(()=>{r.validateFields([i]).catch(()=>{})})},Ke=e=>{r.setFieldValue(i,e),Ge()},qe=e.it({field:n,form:r,name:i,moduleName:f,scopeValues:m,ownValue:l,onDone:(t,a)=>{L(e=>e+1);let o=e.qt(n)!==`array`&&!n.multiSelect&&!n.multiple;t===`create`&&a!=null&&o&&((n.clearGroupOnChange||n.linkedClearField)&&e.x(r,n,i,y),Ke(e.$t(n)?{value:a}:a))}}),Je=n.validator?.type?{...n.validator,title:n.validator.title||n.label||`Field`}:null,Ye={...We,value:l,disabled:je,placeholder:Ue,prefix:n.icon?null:rp[n.field],onChange:t=>{let r=n.formatter?Pp(t.target.value,n.formatter):t.target.value;if(Je){let{cleaned:t,error:n}=e.bt(r,Je,`change`);F(n),r=t}Ke(r)},...Je&&{onBlur:t=>{let{cleaned:n,error:r}=e.bt(t.target.value,Je,`blur`);F(r),n!==t.target.value&&Ke(n)},onKeyPress:t=>{let n=e.xt(Je.type);if(!n||t.which===0||t.keyCode===8||t.keyCode===13)return;let r=String.fromCharCode(t.which??t.keyCode);if(!n.test(r)){t.preventDefault();let e=`${Je.title} — invalid character.`;F(e),setTimeout(()=>F(t=>t===e?null:t),1800)}},maxLength:Je.maxLength??We.maxLength}};if(b===`tagify`)return(0,c.jsx)(o.Select,{value:l,allowClear:!0,disabled:je,mode:`tags`,placeholder:Ue,onChange:Ke});if(b===`location`)return(0,c.jsx)(o.Select,{value:l,allowClear:!0,showSearch:!0,filterOption:!1,disabled:je,loading:w,mode:Re,options:Le,placeholder:Ue,notFoundContent:w?(0,c.jsx)(o.Spin,{size:`small`}):void 0,onSearch:D,onFocus:()=>D(e=>e),onChange:Ke});if(b===`select`){let t=n.dataSource===`lookup`,a=n.dataSource===`master`,s=t||a,u=e.$t(n),d=e.Qt(n,l,Le),f=ze&&!Y?d==null||d===``?void 0:Array.isArray(d)?d:[d]:d;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Select,{value:f,allowClear:!0,disabled:je,loading:w,labelInValue:u||void 0,showSearch:n.showSearch!==!1,optionFilterProp:`label`,filterOption:s?!1:void 0,mode:Be,tokenSeparators:Ve,options:Le,placeholder:Ue,notFoundContent:w?(0,c.jsx)(o.Spin,{size:`small`}):void 0,onSearch:t?k:a?j:void 0,onChange:t=>{let a=ze&&!Y&&Array.isArray(t)?t.length?t[t.length-1]:void 0:t;if(Ke(a),(n.clearGroupOnChange||n.linkedClearField)&&e.x(r,n,i,y),n.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)n.autofillFrom.forEach(({targetField:t})=>{let n=o?[...i.slice(0,2),...e.kt(t)]:e.kt(t);r.setFieldValue(n,null)});else if(R.current.length>0){let a=n.valueField??`_id`,s=R.current.find(e=>mp(e,a)===t||e._id===t||e.id===t||e.value===t);s&&n.autofillFrom.forEach(({optionKey:t,targetField:n})=>{let a=mp(s,t)??s.extraData?.[t]??null,c=o?[...i.slice(0,2),...e.kt(n)]:e.kt(n);r.setFieldValue(c,a)})}}},dropdownRender:qe.footer?e=>(0,c.jsxs)(c.Fragment,{children:[e,qe.footer]}):void 0}),qe.modal]})}if(b===`radio`)return(0,c.jsx)(o.Radio.Group,{value:l,disabled:je,options:Le,onChange:e=>Ke(e.target.value)});if(b===`checkbox`)return Le.length>0?(0,c.jsx)(o.Checkbox.Group,{value:l,disabled:je,options:Le,onChange:Ke}):(0,c.jsx)(o.Checkbox,{checked:u,disabled:je,onChange:e=>{let t=e.target.checked;if(!(t&&g?.(n))&&(Ke(t),t&&_?.(n,i),n.linkedClearField&&t)){let e=Array.isArray(i)&&i.length>1?[...i.slice(0,-1),n.linkedClearField]:[n.linkedClearField];r.setFieldValue(e,null)}},children:n.checkboxLabel??n.label});if(b===`text-editor`)return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(e.Sn,{value:l??p??``,disabled:je,placeholder:Ue,onChange:t=>{if(Je){let{error:n}=e.bt(t,Je,`change`);F(n)}Ke(t)}}),P&&(0,c.jsx)(`div`,{className:`v1-input-validator-hint`,children:P})]});if(b===`textarea`)return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Xf,{...Ye,rows:n.rows??3,className:`v1-scroll-textarea`}),P&&(0,c.jsx)(`div`,{className:`v1-input-validator-hint`,children:P})]});if(b===`date`)return(0,c.jsx)(o.DatePicker,{value:l,disabled:je,placeholder:Ue,style:{width:`100%`},suffixIcon:(0,c.jsx)(s.CalendarOutlined,{}),disabledDate:Mp(n,r,i),defaultPickerValue:Np(n),onChange:e=>{Ke(e),_?.(n,i)}});if(b===`time`)return(0,c.jsx)(o.TimePicker,{value:l,disabled:je,placeholder:Ue,style:{width:`100%`},onChange:e=>Ke(e)});if(b===`file`){let t=n.validations??n.validation??n.rules??[],r=t.find(e=>(typeof e==`string`?e:e?.type)===`fileType`),i=t.find(e=>(typeof e==`string`?e:e?.type)===`fileSize`),a=t.find(e=>(typeof e==`string`?e:e?.type)===`maxFiles`),u=e.dt(n),d=u?u.exts.map(e=>`.${e}`).join(`,`):r?.value?r.value.split(`,`).map(e=>`.${e.trim().replace(/^\./,``)}`).join(`,`):void 0,f=i?Number(i?.value??5):void 0,p=a?Number(a?.value??1):ip(n.multiple)?n.maxCount??5:1,m=Array.isArray(l)?l:[],g=m.length<p,_=e=>e?e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(2)} MB`:``,v=e=>{let t=String(e??``).split(`.`).pop()?.toLowerCase();return t===`pdf`?(0,c.jsx)(s.FilePdfOutlined,{className:`v1-file-type-icon v1-file-icon-pdf`}):[`doc`,`docx`].includes(t)?(0,c.jsx)(s.FileWordOutlined,{className:`v1-file-type-icon v1-file-icon-word`}):[`xls`,`xlsx`,`csv`].includes(t)?(0,c.jsx)(s.FileExcelOutlined,{className:`v1-file-type-icon v1-file-icon-excel`}):[`jpg`,`jpeg`,`png`,`gif`,`svg`,`webp`].includes(t)?(0,c.jsx)(s.FileImageOutlined,{className:`v1-file-type-icon v1-file-icon-image`}):(0,c.jsx)(s.FileOutlined,{className:`v1-file-type-icon v1-file-icon-default`})},y=e=>{Ke(m.filter((t,n)=>n!==e))},b=(t,n)=>{N({open:!0,docs:m.map(t=>{let n=t.url??t.thumbUrl??``;return!n&&t.originFileObj instanceof File&&(n=URL.createObjectURL(t.originFileObj)),n&&!n.startsWith(`http`)&&!n.startsWith(`blob:`)&&(n=e.Pt(n)),{url:n,name:t.name??`file`}}).filter(e=>e.url),index:n??0})},x=p>1,S=p-m.length,C=[u?u.hint:d?d.split(`,`).map(e=>e.replace(`.`,``).toUpperCase()).join(`, `):null,f?`up to ${f} MB`:null].filter(Boolean).join(` `),w=x&&m.length>0?[C,`${S} of ${p} remaining`].filter(Boolean).join(` • `):C,T=m.length>0?`Add ${x?`more files`:`file`}`:n.buttonLabel??`Upload ${n.label??`File`}`,E=e=>{if(m.length>=p)return o.Upload.LIST_IGNORE;if(d){let t=(e.name.split(`.`).pop()??``).toLowerCase();if(!d.split(`,`).map(e=>e.replace(/^\./,``).toLowerCase()).includes(t))return o.message.error(u?u.error:r?.message??`Only ${r.value} files are allowed`),o.Upload.LIST_IGNORE}return f!==void 0&&e.size/1024/1024>f?(o.message.error(i?.message??`File must be smaller than ${f} MB`),o.Upload.LIST_IGNORE):!1},D=({fileList:e})=>{let t=e.slice(0,p);if(Ke(t),h&&t.length>m.length){let e=t[t.length-1];e?.originFileObj&&h(e.originFileObj)}},O={accept:d,fileList:m,showUploadList:!1,multiple:!0,maxCount:p,beforeUpload:E,onChange:D,disabled:je},k=m.map((e,t)=>(0,c.jsxs)(`div`,{className:`v1-file-item`,children:[(0,c.jsx)(`div`,{className:`v1-file-item-icon`,children:v(e.name)}),(0,c.jsxs)(`div`,{className:`v1-file-item-info`,children:[(0,c.jsx)(`span`,{className:`v1-file-item-name`,title:e.name,children:e.name}),(0,c.jsx)(`span`,{className:`v1-file-item-meta`,children:e.existing?`Previously uploaded`:`${_(e.size)}${e.size?` • `:``}Uploaded just now`})]}),(0,c.jsxs)(o.Space,{size:6,className:`v1-file-item-actions`,children:[(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),onClick:()=>b(e,t),className:`v1-file-view-btn`,children:`View`}),(0,c.jsx)(o.Button,{size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>y(t),className:`v1-file-delete-btn`})]})]},e.uid??t)),A=(0,c.jsx)(e.xn,{documents:M.docs,open:M.open,onClose:()=>N(e=>({...e,open:!1})),initialIndex:M.index});if(x){let e=m.length>0?`Upload more ${n.label??`files`}`:n.buttonLabel??`Upload ${n.label??`File`}`;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[g&&(0,c.jsx)(o.Upload,{...O,style:{width:`100%`,display:`block`},children:(0,c.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-center${je?` v1-upload-dropzone-disabled`:``}`,children:[(0,c.jsxs)(`div`,{className:`v1-upload-dropzone-title-row`,children:[(0,c.jsx)(s.CloudUploadOutlined,{className:`v1-upload-cloud-icon v1-upload-cloud-icon-sm`}),(0,c.jsx)(`span`,{className:`v1-upload-dropzone-title v1-upload-dropzone-title-blue`,children:e})]}),(0,c.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:`Drag & drop or click to upload`}),C&&(0,c.jsx)(`span`,{className:`v1-upload-dropzone-sub`,children:C})]})}),m.length>0&&(0,c.jsx)(`div`,{className:`v1-file-grid`,children:k}),g&&m.length>0&&(0,c.jsx)(o.Upload,{...O,style:{display:`inline-block`},children:(0,c.jsx)(o.Button,{type:`link`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),className:`v1-add-more-files-btn`,children:`Add more files`})})]}),A]})}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`v1-file-upload-wrapper`,children:[m.length>0&&(0,c.jsx)(`div`,{className:`v1-file-rows-single`,children:k}),g&&(0,c.jsx)(o.Upload,{accept:d,fileList:m,showUploadList:!1,multiple:!1,maxCount:1,beforeUpload:E,onChange:D,disabled:je,style:{width:`100%`,display:`block`},children:(0,c.jsxs)(`div`,{className:`v1-upload-dropzone v1-upload-dropzone-single${je?` v1-upload-dropzone-disabled`:``}`,children:[(0,c.jsx)(s.CloudUploadOutlined,{className:`v1-upload-cloud-icon`}),(0,c.jsx)(`span`,{className:`v1-upload-dropzone-title`,children:T}),w&&(0,c.jsxs)(`span`,{className:`v1-upload-dropzone-sub`,children:[`— `,w]})]})})]}),A]})}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Input,{...Ye,type:b===`number`?`number`:b,...b===`number`&&ip(n.decimal)?{step:`any`}:{},...n.suffix?{suffix:n.suffix}:{}}),P&&(0,c.jsx)(`div`,{className:`v1-input-validator-hint`,children:P})]})}function Ip({icon:e,title:t}){return(0,c.jsxs)(o.Space,{size:10,align:`center`,children:[(0,c.jsx)(`div`,{className:`v1-section-icon-box`,children:e}),(0,c.jsx)(Yf,{strong:!0,className:`v1-section-label`,children:t})]})}function Lp(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,c.jsx)(`span`,{className:`v1-field-help-text`,children:n.map((e,t)=>(0,c.jsx)(Yf,{type:`secondary`,className:`v1-field-help-line`,children:e},t))})}function Rp({moduleName:n,groupName:r,recordId:l,authToken:d,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,u.useNavigate)(),T=(0,u.useLocation)(),[E]=o.Form.useForm();(0,a.useEffect)(()=>(d&&t.h(d),()=>{d&&t.n()}),[d]);let[D,O]=(0,a.useState)({}),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)(!1),[N,P]=(0,a.useState)(``),[F,I]=(0,a.useState)(!1),[L,R]=(0,a.useState)(``),[z,B]=(0,a.useState)(null),[ee,V]=(0,a.useState)(()=>new Set),[H,te]=(0,a.useState)(``),U=f||H,[ne,W]=(0,a.useState)({});(0,a.useEffect)(()=>{e.Rn()},[]),(0,a.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!n){B(null);return}e.Ir({roleId:localStorage.getItem(`roleId`)},n,{clientId:U,region:p}).then(e=>{t||B(Array.isArray(e)&&e.length?e:null)}).catch(()=>{t||B(null)})}}),()=>{t=!0}},[n,U,p]),(0,a.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{if(!t){if(!n){V(new Set);return}e.Nr(n).then(e=>{t||V(new Set(Array.isArray(e)?e:[]))}).catch(()=>{t||V(new Set)})}}),()=>{t=!0}},[n]);let G=(0,a.useMemo)(()=>vp(k,n,z,ee),[k,n,z,ee]),re=(0,a.useCallback)(async(t,n)=>{if(!Array.isArray(n)||n.length<3||typeof n[1]!=`number`)return;let r=n[0],i=n[1],a=G.find(e=>e.name===r);if(!a)return;let o=e.A(a,e.Ln().region);if(!o.orderBy)return;await Promise.resolve();let s=E.getFieldValue(r);Array.isArray(s)&&await e.k({group:o,rows:s,rowIndex:i,move:fe.current[r]?.move,confirm:({title:t,body:n,okText:r,cancelText:i,from:a,to:o})=>e.Rt({tone:`suggestion`,title:t,facts:[{label:`This entry is at`,value:`Row ${a+1}`},{label:`It belongs at`,value:`Row ${o+1}`}],body:n,okText:r,cancelText:i})})},[G,E]),ie=(0,a.useCallback)(t=>{let n=e.Ln().region,r=G.find(e=>(e.fields??[]).some(e=>e.field===t.field));if(!r)return!1;let i=e.A(r,n),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(t.field!==a||e.w(i))return!1;let o=e.T(i);return e.zt({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:n||`Common`},{label:`Entry`,value:r.label??r.name}],body:e.E(i),okText:o?`Got it`:`Keep it anyway`}),o},[G]),ae=(0,a.useCallback)((t,n)=>{let r=G.find(e=>e.name===n);if(!r)return;let i=e.A(r,e.Ln().region),a=i.orderBy?.inProgressField??`currentStudyingHere`;if(t.field!==a)return;let o=e.S(i);return o?[o]:void 0},[G]),[oe,se]=(0,a.useState)(0),ce=(0,a.useMemo)(()=>e._t({checkFieldUnique:e.pt,onPendingChange:se}),[]),le=(0,a.useMemo)(()=>({checker:ce,module:n,recordId:l,clientId:U||void 0,region:p||void 0}),[ce,n,l,U,p]),ue=(0,a.useMemo)(()=>e.gt(G),[G]),de=(0,a.useMemo)(()=>e.Bt(G),[G]),fe=(0,a.useRef)({}),pe=e.Et({form:E,groups:G,module:n}),me=(0,a.useMemo)(()=>{let t={};return G.forEach(n=>{n.addRow&&(t[n.name]=e.Ot(n))}),e.Ht(de,t)},[G,de]),he={jobs:{list:`Jobs`,path:`/jobs`,edit:`Edit Job`},candidates:{list:`Candidates`,path:`/candidates`,edit:`Edit Candidate`},submissions:{list:`Submissions`,path:`/submissions`,edit:`Edit Submission`}},ge=S?[]:m.length>0?m:(()=>{let e=he[cp(n)];return e?[{label:`Home`,href:`/`},{label:e.list,href:e.path},{label:e.edit}]:[]})();(0,a.useEffect)(()=>{if(!n||!l)return;let e=!1;async function t(){try{M(!0),P(``),R(``);let t=await i.r({module:n,id:l,clientId:U,region:p,group:r});if(e)return;if(A(Array.isArray(t)?t:[]),W(t?.recordMeta??{}),!f){let n=t?.recordMeta??{},r=e=>e&&typeof e==`object`?e.id??e.value??``:e??``,a=String(r(n.clientId)||``),o=String(r(n.jobId)||``);if(!a&&o)try{let e=await i.r({module:`jobs`,id:o});a=String(r(e?.recordMeta?.clientId)||``)}catch{}!e&&a&&a!==H&&te(a)}}catch(t){console.error(`Failed to fetch ${n} edit data:`,t),e||P(t?.message||`Failed to load record`)}finally{e||M(!1)}}return t(),()=>{e=!0}},[n,r,l,f,U,H,p]),(0,a.useEffect)(()=>{j||G.length===0||e.Dt(E,G)},[j,G,E]);let K=T.state?.carryFiles;(0,a.useEffect)(()=>{if(j||!K)return;let e=Object.entries(K).filter(([,e])=>Array.isArray(e)&&e.length>0);e.length&&(E.setFieldsValue(Object.fromEntries(e)),o.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}}))},[j,K,E,w,T.pathname,T.search,T.state]);let _e=(0,a.useMemo)(()=>e.G(G.map(t=>({...t,fields:(t.fields??[]).filter(e.Y)})),cp),[G]),[ve,ye]=(0,a.useState)({});(0,a.useEffect)(()=>{if(_e.length===0)return;let t=!1;return _e.forEach(async n=>{let r=e.K(n,ne);if(r)try{let a=e.J(e.q(await i.r({module:n,id:r})));!t&&Object.keys(a).length>0&&ye(e=>({...e,[n]:a}))}catch(e){console.error(`Carrier prefill fetch failed for ${n}:`,e)}}),()=>{t=!0}},[_e,ne]),(0,a.useEffect)(()=>{if(j||G.length===0||Object.keys(ve).length===0)return;let t={},n=!1;G.forEach(r=>(r.fields??[]).forEach(r=>{if(!r.field||!r.prefillFromModule||!e.Y(r))return;let i=ve[cp(r.prefillFromModule)],a=e.X(i,r);a!=null&&(e.At(t,r.field,a),n=!0)})),n&&E.setFieldsValue(t)},[ve,j,G,E]);let be=e=>{O(t=>({...t,[e]:!t[e]}))},xe=(0,a.useMemo)(()=>G.map(e=>`${e.name}:${+!!ip(e.allowCollapse)}${+!!ip(e.defaultCollapsed)}`).join(`|`),[G]),Se=(0,a.useRef)(null);(0,a.useEffect)(()=>{if(!G.length||Se.current===xe)return;Se.current=xe;let e={};G.forEach((t,n)=>{let r=t.name??t.id??String(n);ip(t.allowCollapse)&&ip(t.defaultCollapsed)&&(e[r]=!0)}),O(e)},[xe,G]);function Ce(t){let r=e.Wt(t,G,{module:n});return Object.entries(v).forEach(([e,t])=>{r[e]!==void 0&&(r[t]=r[e],delete r[e])}),r}async function we(t){if(!(b&&await Promise.resolve().then(()=>b(t)).catch(()=>!1)===!1))try{I(!0),R(``);let r=e.Kt(t,G,{indexed:!0,module:n});if(y&&y.useLegacyUpload){let n=G.flatMap(e=>e.fields??[]).filter(e.Yt);for(let e of n){let n=t[e.field];if(!Array.isArray(n))continue;let r=n.filter(e=>e.originFileObj instanceof File);try{await Promise.all(r.map(t=>y(e.field,t.originFileObj,l)))}catch(e){console.warn(`File upload failed — continuing with save:`,e)}}}await e.pn(n,l,{...Ce(t),...x??{}},y?.useLegacyUpload?[]:r);let i=e.Kt(t,G,{module:n});if(!y?.useLegacyUpload&&i.length>0)try{await e.hn(n,l,i)}catch(e){console.error(`Document registry upload failed during edit:`,e),o.message.warning(`Changes saved, but saving document records failed.`)}let a=e.d(G,n,`edit`);if(a&&o.message.success(a),_)_(l,t);else{let n=e.M(G);if(!n)e.j(w,{cancelPath:g});else if(n.mode===`back`)e.j(w,{cancelPath:g});else if(n.mode===`route`||n.mode===`detail`){let r=e.N(n.target,l,t);r?w(r):e.j(w,{cancelPath:g})}}}catch(t){if(console.error(`Failed to update ${n}:`,t),Te(t))return;let r=e.u(G,n,`edit`,t?.message);R(r),o.message.error(r)}finally{I(!1)}}function Te(t){let n=e.vt(t,{uniqueRules:ue});return n.length===0?!1:(E.setFields(n.map(e=>({name:e.name??e.field,errors:[e.message]}))),O({}),e.l({errorFields:n.map(e=>{let t=e.name??e.field;return{name:Array.isArray(t)?t:[t],errors:[e.message]}})},E),!0)}let Ee=t=>{O({}),e.l(t,E)},[De,Oe]=(0,a.useState)({}),ke=e=>String(e?.field??``),Ae=(e,t)=>typeof e==`function`?e(t):e,je=(e,t,n)=>{if(!e?.field)return!0;let r=Ae(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}},Me=(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=>je(e,t,n)),a=String(e.logic??`and`).toLowerCase()===`or`,o=a?i.some(Boolean):i.every(Boolean);if(e.field){let r=je(e,t,n);o=a?o||r:o&&r}return o}return je(e,t,n)},Ne=e=>!!(e?.field||e?.conditions?.some?.(e=>e?.field)),Pe=(t,r,i,s={})=>{let l=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):null,u=l??t.field,d=r===void 0?u:[r,...l??[t.field]],p=i!==void 0&&r!==void 0?[...Array.isArray(i)?i:[i],...Array.isArray(d)?d:[d]]:d,m=t.type===`checkbox`&&(t.options&&t.options.length>0||t.dataSource&&t.dataSource!==`static`),h=!m&&t.type===`checkbox`?`checked`:`value`,g=!!t.editablePermission&&!e.F(t.editablePermission,n),_=i!==void 0&&r!==void 0?[...Array.isArray(i)?i:[i],r]:null,v=e=>_&&(!s.rowFieldKeys||s.rowFieldKeys.has(e))?_:null,y=e.en(t),b=y?e.tn(t,p,v):null,x=s.inline||s.hideLabel||!m&&t.type===`checkbox`?``:(0,c.jsx)($f,{form:E,field:t,siblingPrefix:t.labelWhen?.field?v(t.labelWhen.field):_,locked:g}),S=y&&x?(0,c.jsxs)(`span`,{className:`v1-label-with-override`,children:[x,(0,c.jsx)(e.W,{form:E,field:t,flagPath:b,fieldPath:p,disabled:g})]}):x,C=s.inline||t.type===`text-editor`||t.type===`file`&&ip(t.multiple)?24:t.col??12,w=kp(t,p,v),T=e.I(t),D=s.inline?{flex:`${Number(t.combineWidth)>0?Number(t.combineWidth):1} 1 0`,maxWidth:`none`}:void 0,O=(t.aiActions||[]).filter(e=>e.trigger===`click`),k=(t.aiActions||[]).find(e=>e.trigger===`upload`),A=(0,c.jsx)(o.Form.Item,{label:S,name:d,extra:Lp(t),required:Dp(t),rules:Op(t,E,p,!1,v,le,ae(t,s.groupNameForActions)),dependencies:w,valuePropName:h,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,validateTrigger:[`onBlur`,`onChange`],children:(0,c.jsx)(Fp,{field:t,form:E,name:p,rowFieldKeys:s.rowFieldKeys,moduleName:n,initialValue:t.value,scopeValues:{clientId:f},onAiUpload:k?e=>pe.runAction(s.groupNameForActions,t,k,e):void 0,formDisabled:pe.busy,onRegionBlocked:ie,onRowOrderChange:re})}),j=T&&!S?(0,c.jsx)(o.Tooltip,{title:T,children:(0,c.jsx)(`span`,{className:`v1-field-tooltip-wrap`,children:A})}):A,M=O.length>0?(()=>{let n=e.Tt(O),r=r=>(0,c.jsx)(e.wt,{position:r,actions:n[r],aiActions:pe,groupName:s.groupNameForActions,field:t},r);return(0,c.jsxs)(`div`,{className:`v1-ai-action-wrap`,children:[r(`top-left`),r(`top-center`),r(`top-right`),j,r(`bottom-left`),r(`bottom-center`),r(`bottom-right`)]})})():j,N=e=>r===void 0?e:[r,e],P=t.verifyAction?(0,c.jsxs)(c.Fragment,{children:[t.verifyResultField&&(0,c.jsx)(o.Form.Item,{name:N(t.verifyResultField),hidden:!0,noStyle:!0,children:(0,c.jsx)(o.Input,{})}),t.verifyTimestampField&&(0,c.jsx)(o.Form.Item,{name:N(t.verifyTimestampField),hidden:!0,noStyle:!0,children:(0,c.jsx)(o.Input,{})})]}):null,F=t.verifyAction?(0,c.jsxs)(`div`,{className:`v1-verify-field-row`,children:[M,(0,c.jsx)(Qf,{form:E,field:t,absoluteName:p}),P]}):M,I=y?(0,c.jsxs)(c.Fragment,{children:[F,(0,c.jsx)(o.Form.Item,{name:r===void 0?b[b.length-1]:[r,b[b.length-1]],valuePropName:`checked`,hidden:!0,noStyle:!0,children:(0,c.jsx)(o.Checkbox,{})})]}):F,L=t.prefillWhen?.length?(0,c.jsx)(tp,{form:E,rules:t.prefillWhen,watchPaths:e.H(t.prefillWhen,p,e.rt,v),targetPath:p,resetOnNoMatch:t.prefillWhenReset!==!1},`${t.field}-prefillWhen`):null,R=!s.inline&&e.n(t).length>0,z=n=>R?e.s(t,C,t=>n(e.r(t,v(t.field)))):C;return Ne(t.showIf)||R?(0,c.jsxs)(a.default.Fragment,{children:[L,(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>!Ne(t.showIf)||Me(t.showIf,e,v)?(0,c.jsx)(o.Col,{xs:24,md:z(e),style:D,className:s.inline?`v1-combine-cell`:void 0,children:I}):null})]},t.field):(0,c.jsxs)(a.default.Fragment,{children:[L,(0,c.jsx)(o.Col,{xs:24,md:C,style:D,className:s.inline?`v1-combine-cell`:void 0,children:I})]},t.field)},Fe=t=>{let r=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],i=!!t.editablePermission&&!e.F(t.editablePermission,n),a=(0,c.jsx)(hp,{field:t,label:t.label,locked:i}),l=e.Zt(t),u=Array.isArray(t.subFields)&&t.subFields.length>0,d=u?t.subFields.map(e=>({...e,show:1,edit:1})):null,p=Math.max(0,Number(t.minRows??0)||0),m=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,h=e.Gt(t,t.value);return(0,c.jsx)(o.Col,{xs:24,md:24,children:(0,c.jsx)(o.Form.Item,{label:a,required:Dp(t),colon:!1,className:`v1-combine-field`,children:(0,c.jsx)(o.Form.List,{name:r,initialValue:h,rules:[{validator:async(e,n=[])=>{if(Dp(t)&&!(u?n.some(e=>sp(e)):n.some(e=>e!=null&&e!==``&&!(Array.isArray(e)&&e.length===0))))throw Error(`Mandatory Field`);if(p>0&&n.length<p)throw Error(`Keep at least ${p} ${u?`row`:`value`}${p>1?`s`:``}.`)}}],children:(e,{add:i,remove:a},{errors:h})=>(0,c.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[e.map(({key:i,name:m})=>(0,c.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>a(m),disabled:e.length<=p,className:`v1-addrow-delete-btn`}),(0,c.jsx)(`div`,{className:`v1-addrow-fields`,children:u?(0,c.jsx)(o.Row,{gutter:[24,0],align:`top`,children:J(d,m,r[0],!1,t.field)}):(0,c.jsx)(o.Form.Item,{name:[m],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:Op(l,E,[...r,m],!1),children:(0,c.jsx)(Fp,{field:l,form:E,name:[...r,m],moduleName:n,scopeValues:{clientId:f},formDisabled:pe.busy,onRegionBlocked:ie,onRowOrderChange:re})})})]},i)),(!m||e.length<m)&&(0,c.jsx)(o.Button,{type:`link`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>i(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,c.jsx)(o.Form.ErrorList,{errors:h})]})})})},t.field)},q=(t,r,i)=>{let a=typeof t.field==`string`&&t.field.includes(`.`)?t.field.split(`.`):[t.field],l=!!t.editablePermission&&!e.F(t.editablePermission,n),u=(0,c.jsx)(hp,{field:t,label:t.label,locked:l}),d=e.Zt(t),p=Array.isArray(t.subFields)&&t.subFields.length>0,m=p?t.subFields.map(e=>({...e,show:1,edit:1})):null,h=Math.max(0,Number(t.minRows??0)||0),g=t.maxRows!==void 0&&t.maxRows!==``&&Number(t.maxRows)>0?Number(t.maxRows):0,_=[r,...a],v=[...Array.isArray(i)?i:[i],r,...a],y=e.Gt(t,void 0);return(0,c.jsx)(o.Col,{xs:24,md:p?24:t.col??24,children:(0,c.jsx)(o.Form.Item,{label:u,required:Dp(t),colon:!1,className:`v1-combine-field`,children:(0,c.jsx)(o.Form.List,{name:_,initialValue:y,rules:p?[{validator:async(e,n=[])=>{if(Dp(t)&&!n.some(e=>sp(e)))throw Error(`Mandatory Field`);if(h>0&&n.length<h)throw Error(`Keep at least ${h} row${h>1?`s`:``}.`)}}]:[],children:(e,{add:r,remove:i},{errors:a})=>(0,c.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[e.map(({key:r,name:a})=>{let l=[...v,a];return(0,c.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>i(a),disabled:e.length<=h,className:`v1-addrow-delete-btn`}),(0,c.jsx)(`div`,{className:`v1-addrow-fields`,children:p?(0,c.jsx)(o.Row,{gutter:[24,0],align:`top`,children:J(m,a,v,!1,t.field)}):(0,c.jsx)(o.Form.Item,{name:[a],noStyle:!0,valuePropName:t.type===`checkbox`&&!t.options?.length?`checked`:`value`,getValueFromEvent:t.type===`file`?e=>Array.isArray(e)?e:e?.fileList:void 0,rules:Op(d,E,l,!1),children:(0,c.jsx)(Fp,{field:d,form:E,name:l,moduleName:n,scopeValues:{clientId:f},formDisabled:pe.busy,onRegionBlocked:ie,onRowOrderChange:re})})})]},r)}),(!g||e.length<g)&&(0,c.jsx)(o.Button,{type:`link`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>r(),className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Value`}`}),(0,c.jsx)(o.Form.ErrorList,{errors:a})]})})})},`${i}-${r}-${t.field}`)},Ie=(e,t)=>e.filter(e=>e.field&&e.show!==void 0&&!ip(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,c.jsx)(o.Form.Item,{name:r,hidden:!0,noStyle:!0,children:(0,c.jsx)(o.Input,{})},`hidden-${e.field}`)}),J=(t,n,r,i=!1,a)=>{let s=new Set,l=[],u=new Set(t.map(e=>e.field).filter(Boolean)),d=t.filter(e=>e.show===void 0||ip(e.show));return l.push(...Ie(t,n)),d.forEach(t=>{if(ip(t.addRow)&&n===void 0){l.push(Fe(t));return}if(ip(t.addRow)&&n!==void 0){l.push(q(t,n,r));return}let f=t.combineKey?.trim?.();if(!f){l.push(Pe(t,n,r,{hideLabel:i,groupNameForActions:a,rowFieldKeys:u}));return}let p=`${r??`root`}:${n??`root`}:${f}`;if(s.has(p))return;let m=d.filter(e=>e.combineKey===f);m.forEach(e=>s.add(`${r??`root`}:${n??`root`}:${e.combineKey}`));let h=m.find(e=>e.combineLabel)??t,g=r!==void 0&&n!==void 0?[...Array.isArray(r)?r:[r],n]:null,_=m.find(t=>e.en(t))??null,v=e=>g&&(!u||u.has(e))?g:null,y=_?r!==void 0&&n!==void 0?[...Array.isArray(r)?r:[r],n,...String(_.field).includes(`.`)?String(_.field).split(`.`):[_.field]]:String(_.field).includes(`.`)?String(_.field).split(`.`):_.field:null,b=(0,c.jsx)($f,{form:E,field:h,siblingPrefix:g,combined:!0}),x=_?(0,c.jsxs)(`span`,{className:`v1-label-with-override`,children:[b,(0,c.jsx)(e.W,{form:E,field:_,flagPath:e.tn(_,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=>ip(e.combineWrap)),T=Number(m.find(e=>[12,24].includes(Number(e.combineSpan)))?.combineSpan),D=S?m.find(e=>ke(e)===S):null,O=D?.field?.includes?.(`.`)?D.field.split(`.`):[D?.field].filter(Boolean),k=D?r!==void 0&&n!==void 0?[r,n,...O]:O.length>1?O:D.field:null,A=m.some(e=>Dp(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=>Ne(e.showIf)),P=e=>m.some(t=>!Ne(t.showIf)||Me(t.showIf,e,M)),F=(0,c.jsx)(o.Col,{xs:24,md:j,children:(0,c.jsx)(o.Form.Item,{label:x,required:A,colon:!1,className:`v1-combine-field`,children:(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{let t=k?!op(e(k)):!1,i=De[p]??t,a=S&&!i?m.filter(e=>ke(e)!==S):m;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Row,{gutter:[8,0],align:`top`,wrap:w,className:`v1-combine-row${w?` v1-combine-row-wrap`:``}`,children:a.map(e=>Pe(A?{...e,req:1}:e,n,r,{inline:!0}))}),S&&(0,c.jsxs)(`div`,{className:`v1-combine-range`,children:[(0,c.jsx)(o.Switch,{size:`small`,checked:i,onChange:e=>{!e&&k&&(E.setFieldValue(k,void 0),E.validateFields([k]).catch(()=>{})),Oe(t=>({...t,[p]:e}))}}),(0,c.jsx)(Yf,{type:`secondary`,className:`v1-combine-toggle-label`,children:C})]})]})}})})},p);l.push(N?(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>P(e)?F:null},p):F)}),l},Le=t=>{let n=t.name??t.id??``,r=e.Vt(de,n),i=!!r&&r.leaderName!==n,a=r?G.find(e=>e.name===r.leaderName)??t:t,l=Math.max(0,Number(a.minRows??0)||0),u=Math.max(0,Number(a.maxRows??0)||0),d=r?r.memberNames:[n],f=()=>{d.forEach(n=>{let r=G.find(e=>e.name===n)??t;fe.current[n]?.add(e.Xt(r,{editing:!0}))})},p=e=>{d.forEach(t=>fe.current[t]?.remove(e))};return t.addRow?(0,c.jsx)(o.Form.List,{name:n,initialValue:me[t.name]??[],rules:i?[]:[{validator:async(e,n=[])=>{if(!(ip(t.toggleEnabled)&&t.toggleField&&E.getFieldValue(t.toggleField))){if(l>0&&n.length<l)throw Error(`Keep at least ${l} row${l>1?`s`:``}.`);if(ip(t.requireOne)&&n.some(e=>!sp(e)))throw Error(`Fill at least one field in each added row.`)}}}],children:(e,{add:r,remove:d,move:m},{errors:h})=>(fe.current[n]={add:r,remove:d,move:m},(0,c.jsxs)(`div`,{className:`v1-addrow-wrapper`,children:[(0,c.jsx)(`div`,{className:`v1-addrow-topbar`,children:i?(0,c.jsxs)(Yf,{type:`secondary`,className:`v1-addrow-linked-hint`,children:[`Rows added via `,a.label??a.name]}):(!u||e.length<u)&&(0,c.jsx)(o.Button,{type:`link`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:f,className:`v1-addrow-add-btn`,children:t.addLabel??`Add ${t.label??`Row`}`})}),ip(t.sharedRowLabels)&&e.length>0&&(0,c.jsx)(o.Row,{gutter:[24,0],className:`v1-addrow-header`,children:t.fields.filter(e=>e.show===void 0||ip(e.show)).map(e=>(0,c.jsx)(o.Col,{md:e.col??12,className:`v1-addrow-header-label`,children:e.label},ke(e)))}),e.map(({key:r,name:i})=>(0,c.jsxs)(`div`,{className:`v1-addrow-item`,children:[(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),disabled:e.length<=l,onClick:()=>p(i),className:`v1-addrow-delete-btn`}),(0,c.jsx)(`div`,{className:`v1-addrow-fields`,children:(0,c.jsx)(o.Row,{gutter:[24,0],align:`top`,children:J(t.fields,i,n,ip(t.sharedRowLabels),n)})})]},r)),(0,c.jsx)(o.Form.ErrorList,{errors:h})]}))}):(0,c.jsx)(o.Row,{gutter:[24,0],children:J(t.fields,void 0,void 0,!1,n)})},Re=e=>G.filter(t=>t!==e&&t.mergeInto&&String(t.mergeInto)===String(e.name)),ze=e=>!!(e.mergeInto&&G.some(t=>t!==e&&String(t.name)===String(e.mergeInto))),Be=(e,t)=>Re(e).filter(e=>String(e.mergePosition??`bottom`)===t),Y=(e,t)=>{let n=e.name??e.id??String(t),r=Le(e),i=Be(e,`top`),a=Be(e,`bottom`),l=e=>{let t=(0,c.jsxs)(`div`,{className:`v1-merged-group`,children:[(0,c.jsx)(`div`,{className:`v1-merged-group-title`,children:e.label??e.name}),Le(e)]},e.name);return(0,c.jsx)(fp,{form:E,group:e,inheritParent:!1,children:e.showIf?.field?(0,c.jsx)(pp,{form:E,showIf:e.showIf,render:()=>t},e.name):t},e.name)};return(0,c.jsx)(o.Card,{className:`v1-card v1-edit-card`,title:(0,c.jsx)(Ip,{icon:np[t%np.length],title:e.label??e.name??`Details`}),extra:(0,c.jsxs)(o.Space,{size:8,align:`center`,className:`v1-group-actions`,children:[(0,c.jsx)(gp,{group:e}),(0,c.jsx)(_p,{group:e}),ip(e.allowCollapse)&&(0,c.jsx)(o.Button,{type:`text`,size:`small`,"aria-expanded":!D[n],"aria-label":D[n]?`Expand section`:`Collapse section`,icon:D[n]?(0,c.jsx)(s.DownOutlined,{}):(0,c.jsx)(s.UpOutlined,{}),onClick:e=>{e.stopPropagation(),be(n)}})]}),children:(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:t})=>{let o=ip(e.toggleEnabled)&&e.toggleField&&!!t(e.toggleField);return(0,c.jsxs)(`div`,{style:{display:D[n]||o?`none`:`block`},children:[i.map(l),r,a.map(l)]})}})},n)};return(0,c.jsxs)(`main`,{children:[ge.length>0&&(0,c.jsx)(e.t,{items:ge}),(0,c.jsxs)(`div`,{className:`v1-edit-page`,children:[(0,c.jsxs)(`div`,{className:`v1-page-inner`,children:[(0,c.jsx)(o.Spin,{fullscreen:!0,spinning:pe.busy,size:`large`,tip:pe.loadingText||`Reading the file…`}),(0,c.jsxs)(o.Spin,{spinning:j,tip:`Loading form fields…`,children:[N&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:N,style:{marginBottom:16}}),L&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:L,style:{marginBottom:16}}),(0,c.jsxs)(o.Form,{form:E,layout:`vertical`,colon:!1,className:`v1-form`,disabled:pe.busy,requiredMark:(e,{required:t})=>(0,c.jsxs)(c.Fragment,{children:[e,t&&(0,c.jsx)(`span`,{className:`v1-required-mark`,children:` *`})]}),onFinish:we,onFinishFailed:Ee,children:[G.filter(e=>!ze(e)).map((e,t)=>(0,c.jsx)(fp,{form:E,group:e,children:e.showIf?.field?(0,c.jsx)(pp,{form:E,showIf:e.showIf,render:()=>Y(e,t)}):Y(e,t)},e.name??`grp-${t}`)),!j&&!N&&G.length===0&&(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`No form fields are configured.`})]})]})]}),(0,c.jsxs)(`div`,{className:S?`v1-footer v1-footer--embedded`:`v1-footer`,children:[(0,c.jsx)(Yf,{type:`secondary`,children:`All unsaved changes will be lost if you cancel and reload.`}),(0,c.jsxs)(o.Space,{size:12,children:[(0,c.jsx)(o.Button,{onClick:()=>S&&C?C():e.j(w,{cancelPath:g}),children:`Cancel`}),(0,c.jsx)(ep,{form:E,groups:G,onClick:()=>E.submit(),disabled:j||F||oe>0,loading:F,children:h})]})]})]})]})}var zp=new Map;function Bp(t){let[n,r]=(0,a.useState)({actions:[],actionRules:[]});return(0,a.useEffect)(()=>{if(!t)return;let n=!1;return zp.has(t)||zp.set(t,e.ln(t).catch(()=>(zp.delete(t),{actions:[],actionRules:[]}))),zp.get(t).then(e=>{n||r(e)}),()=>{n=!0}},[t]),n}var Vp={delete:(0,c.jsx)(s.DeleteOutlined,{}),edit:(0,c.jsx)(s.EditOutlined,{}),mail:(0,c.jsx)(s.MailOutlined,{}),shareAlt:(0,c.jsx)(s.ShareAltOutlined,{}),swap:(0,c.jsx)(s.RightOutlined,{}),thunderbolt:(0,c.jsx)(s.ThunderboltOutlined,{}),userAdd:(0,c.jsx)(s.UserAddOutlined,{}),userSwitch:(0,c.jsx)(s.UserSwitchOutlined,{})};function Hp(e){return e==null?``:Array.isArray(e)?e.join(`,`):String(typeof e==`object`?e.id??e.value??``:e)}function Up(e,t){return String(e).replace(/\{([^}]+)\}/g,(e,n)=>encodeURIComponent(Hp(t?.[n]))).replace(/:([A-Za-z_][\w]*)/g,(e,n)=>encodeURIComponent(Hp(t?.[n]??(n===`_id`?t?.id:n===`id`?t?._id:void 0))))}function Wp(e,t){return String(t||``).split(`.`).reduce((e,t)=>e?.[t],e)}function Gp(e,t,n,r){let i=mr(e,t,r),a=pr(e.key,t,n,r),o={key:e.key,label:i?i.label:e.label||e.key,icon:Vp[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=>Gp(e,t,n,r))),o}function Kp(e){let t=[];for(let n of e)t.push(n),n.children?.length&&t.push(...Kp(n.children));return t}function qp({module:n,record:r,scope:i,onDone:a,fallback:l=null}){let d=(0,u.useNavigate)(),f=(0,u.useLocation)(),{actions:p,actionRules:m}=Bp(n),h=t=>!(t.showInList===!1||!e.F(t.permission,n)||t.permissionKey&&!e.P(Wp(r,`actionPermission.${t.permissionKey}`))||fr(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 l;let _=e=>{if(e.actionType===`copy`){let t=Wp(r,e.copyField||`id`)??r?._id;navigator.clipboard.writeText(Hp(t)).then(()=>o.message.success(`Copied to clipboard`)).catch(()=>o.message.error(`Could not copy to clipboard`));return}if(e.actionType===`api`&&e.apiPath){let n=()=>{let n=Up(e.apiPath,r),i=String(e.apiMethod||`POST`).toUpperCase();t.a(t.b,n.startsWith(`/`)?n:`/${n}`,{method:i,body:[`GET`,`DELETE`].includes(i)?void 0:JSON.stringify({ids:[r?._id??r?.id],records:[r]})}).then(()=>{o.message.success(`${e.label} completed`),a?.(e)}).catch(t=>o.message.error(t.message||`${e.label} failed`))};e.danger?o.Modal.confirm({title:`${e.label}?`,content:`This cannot be undone.`,okText:e.label,okButtonProps:{danger:!0},onOk:n}):n();return}if(e.actionType===`modal`){d(`/popup/${e.popupKey||e.key}`,{state:{background:f,selectedIds:[r?._id??r?.id],selectedRecords:[r],moduleName:n,popupContext:e.popupState??{},popupAction:{key:e.key,apiMethod:e.apiMethod,apiPath:e.apiPath,defaultTemplateId:e.defaultTemplateId,requireJobId:e.requireJobId,popupFieldOverrides:e.popupFieldOverrides},...e.popupState}});return}let i=e.routeTemplate||e.route;if(i){let t=Up(i,r),n=t.startsWith(`/`)?t:`/${t}`;if(e.linkTarget===`_blank`){window.open(n,`_blank`,`noopener`);return}d(n)}},v=new Map(Kp(g).map(e=>[String(e.key),e]));return(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:g.map(e=>Gp(e,r,m,i)),onClick:({key:e,domEvent:t})=>{t?.stopPropagation?.();let n=v.get(String(e));n&&n.actionType!==`group`&&!mr(n,r,i)&&_(n)}},children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.MoreOutlined,{}),onClick:e=>e.stopPropagation(),"aria-label":`Row actions`})})}var{Text:Jp}=o.Typography;function Yp(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function Xp(e){return e.value??e.fieldName??e.name??e.label}function Zp(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}var Qp=[{key:`name`,label:`Name`},{key:`designation`,label:`Designation`},{key:`locationExp`,label:`Location / Exp`},{key:`skills`,label:`Skills`},{key:`createdOn`,label:`Created On`}];function $p({record:e,fields:t,selected:n,onSelect:r}){let i=(0,u.useNavigate)(),a=(0,u.useLocation)(),l=t.find(e=>e.cardRole===`name`),d=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`),_=l?Zp(e,l.key):`-`,v=d?Zp(e,d.key):``,y=f?Zp(e,f.key):``,b=m?Zp(e,m.key):``,x=h?Zp(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(Zp(e,g.key),e):null;function D(){i(`/popup/preview`,{state:{background:a,moduleName:`candidate`,record:e,fields:Qp}})}function O(){i(`/popup/mail`,{state:{background:a}})}return(0,c.jsxs)(`div`,{className:`param-card${n?` param-card--selected`:``}`,children:[(0,c.jsxs)(`div`,{className:`param-card__header`,children:[(0,c.jsxs)(`div`,{className:`param-card__header-left`,children:[(0,c.jsxs)(`div`,{className:`param-card__name-row`,children:[(0,c.jsx)(o.Checkbox,{checked:n,onChange:r,onClick:e=>e.stopPropagation(),className:`param-card__checkbox`}),(0,c.jsx)(s.EyeOutlined,{className:`param-card__eye-icon`,onClick:D}),(0,c.jsxs)(`span`,{className:`param-card__name-block`,children:[(0,c.jsx)(Jp,{className:`param-card__name`,children:_}),v&&v!==`-`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`span`,{className:`param-card__sep`,children:`·`}),(0,c.jsx)(Jp,{className:`param-card__subtitle`,children:v})]})]})]}),y&&y!==`-`&&(0,c.jsxs)(`div`,{className:`param-card__location`,children:[(0,c.jsx)(s.EnvironmentOutlined,{className:`param-card__location-icon`}),(0,c.jsx)(Jp,{className:`param-card__location-text`,children:y})]})]}),(0,c.jsx)(`div`,{className:`param-card__header-right`,children:(0,c.jsxs)(`span`,{className:`param-card__exp-badge`,children:[`Exp: `,b&&b!==`-`?b:`-`]})})]}),(0,c.jsxs)(`div`,{className:`param-card__body`,children:[(0,c.jsxs)(`div`,{className:`param-card__body-left`,children:[(0,c.jsx)(Jp,{className:`param-card__section-label`,children:`Skills`}),(0,c.jsxs)(`div`,{className:`param-card__skills-row`,children:[w.length>0?w.map(e=>(0,c.jsx)(o.Tag,{className:`sourcing-skill-tag`,children:e},e)):(0,c.jsx)(Jp,{className:`param-card__empty`,children:`-`}),T.length>0&&(0,c.jsx)(o.Popover,{trigger:`click`,placement:`bottomLeft`,overlayClassName:`sourcing-skills-popover`,content:(0,c.jsx)(`div`,{className:`sourcing-skills-popup`,children:T.map(e=>(0,c.jsx)(o.Tag,{className:`sourcing-skill-tag`,children:e},e))}),children:(0,c.jsxs)(`span`,{className:`sourcing-more-skills`,children:[`+`,T.length]})})]})]}),x&&x!==`-`&&(0,c.jsxs)(`div`,{className:`param-card__body-right`,children:[(0,c.jsx)(Jp,{className:`param-card__section-label param-card__section-label--right`,children:`Created on`}),(0,c.jsx)(Jp,{className:`param-card__date-value`,children:x})]})]}),(0,c.jsx)(`div`,{className:`param-card__divider`}),(0,c.jsxs)(`div`,{className:`param-card__footer`,children:[(0,c.jsxs)(`div`,{className:`param-card__footer-left`,children:[(0,c.jsx)(o.Tooltip,{title:`Resume`,children:(0,c.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Resume`,children:(0,c.jsx)(s.FileTextOutlined,{})})}),(0,c.jsx)(o.Tooltip,{title:`Call`,children:(0,c.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Call`,children:(0,c.jsx)(s.PhoneOutlined,{})})}),(0,c.jsx)(o.Tooltip,{title:`Email`,children:(0,c.jsx)(`button`,{type:`button`,className:`param-card__icon-btn`,"aria-label":`Email`,onClick:O,children:(0,c.jsx)(s.MailOutlined,{})})})]}),(0,c.jsx)(`div`,{className:`param-card__footer-right`,children:E})]})]})}function em({listName:e=`List`,moduleName:t=``,actions:n=[],fields:r=[],dataSource:i=[],loading:l=!1,total:d,current:f,pageSize:p,onPageChange:m,onPageSizeChange:h,className:g=``,activeView:_=`card`,onViewChange:v}){let y=(0,u.useNavigate)(),b=(0,u.useLocation)(),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)({current:1,pageSize:12}),[T,E]=(0,a.useState)([]),[D,O]=(0,a.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,a.useMemo)(()=>r.map(e=>({...e,key:Xp(e),label:Yp(e)})).filter(e=>e.key&&e.label),[r]),P=typeof d==`number`?d:i.length,F=(0,a.useMemo)(()=>{let e=x.toLowerCase();return!e||e.length<3?i:i.filter(t=>N.some(n=>String(Zp(t,n.key)).toLowerCase().includes(e)))},[i,N,x]),I=(0,a.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,c.jsxs)(`div`,{className:`antd param-card-view ${g}`.trim(),children:[(0,c.jsx)(o.Card,{children:(0,c.jsxs)(o.Flex,{align:`center`,justify:`space-between`,children:[(0,c.jsxs)(o.Flex,{align:`center`,gap:6,children:[(0,c.jsx)(Jp,{className:`param-card-view__tab-label`,children:e}),(0,c.jsx)(`span`,{className:`param-card-view__count`,children:P}),T.length>0&&n.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Dropdown,{menu:{items:M},trigger:[`click`],children:(0,c.jsxs)(o.Button,{type:`text`,size:`small`,className:`job-actions-button job-actions-menu-button`,children:[`Actions `,(0,c.jsx)(s.DownOutlined,{className:`job-actions-caret`})]})}),(0,c.jsxs)(Jp,{className:`job-selected-count`,children:[`Selected (`,T.length,`)`]})]})]}),(0,c.jsxs)(o.Flex,{align:`center`,gap:8,children:[(0,c.jsx)(o.Input,{prefix:(0,c.jsx)(s.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,c.jsx)(o.Tooltip,{title:`Filter`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button`,icon:(0,c.jsx)(s.FilterOutlined,{})})}),(0,c.jsx)(o.Tooltip,{title:`Card view`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${_===`card`?` param-view-toggle-btn--active`:``}`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),onClick:()=>v?.(`card`)})}),(0,c.jsx)(o.Tooltip,{title:`List view`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${_===`list`?` param-view-toggle-btn--active`:``}`,icon:(0,c.jsx)(s.UnorderedListOutlined,{}),onClick:()=>v?.(`list`)})})]})]})}),(0,c.jsx)(o.Spin,{spinning:l,children:I.length>0?(0,c.jsx)(`div`,{className:`param-card-view__grid`,children:I.map((e,t)=>(0,c.jsx)($p,{record:e,fields:N,selected:T.includes(e.id??e._id),onSelect:()=>j(e)},e.id??e.key??t))}):!l&&(0,c.jsx)(`div`,{className:`param-card-view__empty`,children:`No results found`})}),(0,c.jsx)(Ne,{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:tm}=o.Typography;function nm(e){return e.label??e.fieldLabel??e.name??e.fieldName??e.value}function rm(e){return e.value??e.fieldName??e.name??e.label}function im(e,t){let n=e?.[t];return n==null?`-`:Array.isArray(n)?n.join(`, `):typeof n==`object`?Object.values(n).join(` `):n}function am(e,t){return(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(`span`,{children:e}),(0,c.jsx)(o.Badge,{count:t,overflowCount:9999})]})}function om({listName:e=`List`,fields:t=[],actions:n=[],dataSource:r=[],loading:i=!1,total:l,current:d,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,u.useNavigate)(),S=(0,u.useLocation)(),[C,w]=(0,a.useState)(`all`),[T,E]=(0,a.useState)(``),[D,O]=(0,a.useState)([]),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)({current:1,pageSize:10}),[N,P]=(0,a.useState)([]),[F,I]=(0,a.useState)(!1),L=(0,a.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 d==`number`&&typeof f==`number`,B=z?{current:d,pageSize:f}:j,ee=(0,a.useMemo)(()=>t.map(e=>({...e,key:rm(e),label:nm(e)})).filter(e=>e.key&&e.label&&!e.tableHidden),[t]),V=N.length?N:ee.map(e=>e.key),H=(0,a.useMemo)(()=>{if(h)return r;let e=T.toLowerCase();return!e||e.length<3?r:r.filter(t=>ee.some(n=>String(im(t,n.key)).toLowerCase().includes(e)))},[r,ee,h,T]),te=typeof l==`number`?l:T.trim()?H.length:r.length,U=(0,a.useMemo)(()=>{if(z)return H;let e=(B.current-1)*B.pageSize;return H.slice(e,e+B.pageSize)},[B.current,B.pageSize,H,z]),ne=(0,a.useMemo)(()=>ee.filter(e=>V.includes(e.key)).map(e=>({title:e.label,dataIndex:e.key,key:e.key,sorter:e.sorter===!1?!1:e.sorter??((t,n)=>String(im(t,e.key)).localeCompare(String(im(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,c.jsx)(tm,{className:`job-cell-primary`,children:im(n,e.key)})})),[ee,V]),W=V.length===ee.length,G=V.length>0&&!W,re=(e,t)=>{P(n=>{let r=n.length?n:ee.map(e=>e.key);return t?r.includes(e)?r:[...r,e]:r.filter(t=>t!==e)})},ie=(0,c.jsxs)(`div`,{className:`column-visibility-menu`,onClick:e=>e.stopPropagation(),children:[(0,c.jsx)(o.Checkbox,{checked:W,indeterminate:G,onChange:e=>{P(e.target.checked?ee.map(e=>e.key):[])},children:`Select All`}),ee.map(e=>(0,c.jsx)(o.Checkbox,{checked:V.includes(e.key),onChange:t=>re(e.key,t.target.checked),children:e.label},e.key))]});return(0,c.jsxs)(`div`,{className:`antd dynamic-list-view ${_}`.trim(),children:[(0,c.jsx)(o.Card,{children:(0,c.jsxs)(o.Flex,{align:`center`,justify:`space-between`,children:[(0,c.jsx)(o.Tabs,{activeKey:C,items:[{key:`all`,label:am(e,te)}],onChange:e=>{w(e),M({...j,current:1})}}),(0,c.jsxs)(o.Flex,{align:`center`,gap:8,children:[(0,c.jsx)(o.Input,{prefix:(0,c.jsx)(s.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,c.jsx)(o.Tooltip,{title:`Filter`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button`,icon:(0,c.jsx)(s.FilterOutlined,{})})}),(0,c.jsx)(o.Tooltip,{title:`Card view`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${y===`card`?` param-view-toggle-btn--active`:``}`,icon:(0,c.jsx)(s.AppstoreOutlined,{}),onClick:()=>b?.(`card`)})}),(0,c.jsx)(o.Tooltip,{title:`List view`,children:(0,c.jsx)(o.Button,{className:`job-toolbar-icon-button param-view-toggle-btn${y===`list`?` param-view-toggle-btn--active`:``}`,icon:(0,c.jsx)(s.UnorderedListOutlined,{}),onClick:()=>b?.(`list`)})})]})]})}),(0,c.jsx)(o.Card,{children:(0,c.jsxs)(o.Flex,{align:`center`,gap:3,children:[(0,c.jsx)(o.Dropdown,{open:F,onOpenChange:I,trigger:[`click`],dropdownRender:()=>ie,placement:`bottomLeft`,overlayClassName:`column-visibility-dropdown`,children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(`img`,{src:Ri,alt:``,className:`job-action-list-icon`}),size:`small`,className:`job-actions-button`})}),D.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Dropdown,{menu:{items:R},trigger:[`click`],children:(0,c.jsxs)(o.Button,{type:`text`,size:`small`,className:`job-actions-button job-actions-menu-button`,children:[(0,c.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,c.jsx)(s.DownOutlined,{className:`job-actions-caret`})]})}),(0,c.jsxs)(tm,{className:`job-selected-count`,children:[`Selected (`,D.length,`)`]})]})]})}),(0,c.jsx)(o.Spin,{spinning:i,children:(0,c.jsx)(o.Table,{rowSelection:g?{type:`checkbox`,selectedRowKeys:D,onChange:(e,t)=>{O(e),A(t)}}:void 0,columns:ne,dataSource:U,size:`middle`,scroll:{x:`max-content`},showSorterTooltip:!1,tableLayout:`auto`,pagination:!1,className:v,rowKey:e=>e.id??e.key})}),(0,c.jsx)(Ne,{current:B.current,pageSize:B.pageSize,total:te,onChange:e=>{z?p?.(e):M(t=>({...t,current:e}))},onPageSizeChange:e=>{z?m?.(e):M({current:1,pageSize:e})}})]})}var sm=[`both`,`slider`,`inputs`];function cm({field:e,value:t,onChange:n,disabled:r}){let i=Number(e.min??0),a=Number(e.max??30),s=sm.includes(e.display)?e.display:`both`,[l,u]=Array.isArray(t)&&t.length===2?t:[void 0,void 0],d=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,c.jsxs)(`div`,{className:`sbv1-range`,children:[s!==`inputs`&&(0,c.jsx)(o.Slider,{range:!0,min:i,max:a,marks:e.marks,disabled:r,value:[l??i,u??a],onChange:d}),s!==`slider`&&(0,c.jsxs)(o.Space,{size:8,className:`sbv1-range-inputs`,children:[(0,c.jsx)(o.InputNumber,{size:`small`,min:i,max:a,disabled:r,value:l??null,placeholder:e.fromLabel??`From`,onChange:e=>d([e,u])}),(0,c.jsx)(`span`,{className:`sbv1-range-dash`,children:`–`}),(0,c.jsx)(o.InputNumber,{size:`small`,min:i,max:a,disabled:r,value:u??null,placeholder:e.toLabel??`To`,onChange:e=>d([l,e])})]})]})}cm.propTypes={field:d.default.object.isRequired,value:d.default.array,onChange:d.default.func.isRequired,disabled:d.default.bool};var lm=[{key:`today`,label:`Today`},{key:`yesterday`,label:`Yesterday`},{key:`last7`,label:`Last 7 Days`},{key:`last30`,label:`Last 30 Days`},{key:`thisMonth`,label:`This Month`},{key:`lastMonth`,label:`Last Month`},{key:`custom`,label:`Custom Range`}];function um(e){let t=(0,l.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`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 dm(e){return e?(0,l.default)(e).endOf(`day`).toISOString():null}function fm(e){return e?(0,l.default)(e).startOf(`day`).toISOString():null}var{RangePicker:pm}=o.DatePicker;function mm({field:e,value:t,onChange:n,disabled:r}){let i=t&&typeof t==`object`?t:{},a=i.preset,s=e=>{if(e===`custom`){n({preset:e,from:null,to:null});return}let[t,r]=um(e);n({preset:e,from:fm(t),to:dm(r)})},u=e=>{let[t,r]=Array.isArray(e)?e:[null,null];n({preset:`custom`,from:fm(t),to:dm(r)})},d=a===`custom`&&(i.from||i.to)?[i.from?(0,l.default)(i.from):null,i.to?(0,l.default)(i.to):null]:null;return(0,c.jsxs)(`div`,{className:`sbv1-date-range-preset`,children:[(0,c.jsx)(o.Select,{value:a,disabled:r,allowClear:!0,placeholder:e.placeholder??`Select date`,options:lm.map(({key:e,label:t})=>({value:e,label:t})),onChange:s,onClear:()=>n(void 0)}),a===`custom`&&(0,c.jsx)(pm,{style:{width:`100%`,marginTop:8},disabled:r,value:d,disabledDate:e=>e&&e.isAfter((0,l.default)(),`day`),onChange:u})]})}mm.propTypes={field:d.default.object.isRequired,value:d.default.object,onChange:d.default.func.isRequired,disabled:d.default.bool};var{TextArea:hm}=o.Input,{RangePicker:gm}=o.DatePicker,_m={};function vm(e,t){if(!e||typeof t?.render!=`function`)throw Error(`registerFieldType(type, { render }) requires a type name and a render function`);return _m[e]={booleanEligible:!1,needsOptions:!1,multiValue:!1,...t},_m[e]}function ym(e){return _m[e]??_m.text}function bm(e){return!!ym(e).booleanEligible}function xm(){return Object.entries(_m).filter(([,e])=>e.booleanEligible).map(([e])=>e)}function Sm(e){return`Enter ${String(e.label??e.field??``).toLowerCase()}`}function Cm(e){return`Select ${String(e.label??e.field??``).toLowerCase()}`}vm(`text`,{booleanEligible:!0,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,c.jsx)(o.Input,{value:t??``,disabled:r,placeholder:i??Sm(e),allowClear:!0,onChange:e=>n(e.target.value)})}),vm(`email`,{booleanEligible:!0,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,c.jsx)(o.Input,{type:`email`,value:t??``,disabled:r,placeholder:i??Sm(e),allowClear:!0,onChange:e=>n(e.target.value)})}),vm(`textarea`,{booleanEligible:!0,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,c.jsx)(hm,{rows:e.rows??3,value:t??``,disabled:r,placeholder:i??Sm(e),onChange:e=>n(e.target.value)})}),vm(`number`,{render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,c.jsx)(o.InputNumber,{style:{width:`100%`},value:t??null,disabled:r,min:e.min,max:e.max,placeholder:i??Sm(e),onChange:n})}),vm(`select`,{booleanEligible:!0,needsOptions:!0,render:({field:e,value:t,onChange:n,options:r,optionsLoading:i,disabled:a,placeholder:s})=>(0,c.jsx)(o.Select,{mode:e.multiSelect||e.mode===`multiple`?`multiple`:void 0,value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:s??Cm(e),notFoundContent:i?(0,c.jsx)(o.Spin,{size:`small`}):void 0,onChange:n})}),vm(`multiselect`,{booleanEligible:!0,needsOptions:!0,multiValue:!0,render:({field:e,value:t,onChange:n,options:r,optionsLoading:i,disabled:a,placeholder:s})=>(0,c.jsx)(o.Select,{mode:`multiple`,value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:s??Cm(e),notFoundContent:i?(0,c.jsx)(o.Spin,{size:`small`}):void 0,onChange:n})}),vm(`location`,{needsOptions:!0,defaultDataSource:`locationMaster`,render:({field:e,value:t,onChange:n,options:r,optionsLoading:i,disabled:a,placeholder:s})=>(0,c.jsx)(o.Select,{value:t??void 0,disabled:a,options:r,loading:i,allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:s??Cm(e),notFoundContent:i?(0,c.jsx)(o.Spin,{size:`small`}):void 0,onChange:n})}),vm(`tagify`,{booleanEligible:!0,multiValue:!0,render:({field:e,value:t,onChange:n,disabled:r,placeholder:i})=>(0,c.jsx)(o.Select,{mode:`tags`,value:t??void 0,disabled:r,open:!1,suffixIcon:null,allowClear:!0,tokenSeparators:[`,`],placeholder:i??Sm(e),onChange:n})}),vm(`radio`,{needsOptions:!0,render:({value:e,onChange:t,options:n,disabled:r})=>{let i=n.find(e=>e.locked);return(0,c.jsx)(o.Radio.Group,{value:i?i.value:e,disabled:r||!!i,options:n,onChange:e=>t(e.target.value)})}}),vm(`checkbox`,{needsOptions:!0,multiValue:!0,render:({field:e,value:t,onChange:n,options:r,disabled:i})=>{if(r.length===0)return(0,c.jsx)(o.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),s=Array.isArray(t)?t:[],l=a.every(e=>s.includes(e))?s:[...new Set([...s,...a])],u=r.map(e=>e.locked?{...e,disabled:!0}:e),d=e=>{n([...new Set([...e,...a])])},f=e.hideSelectAll!==!0&&r.length>1,p=r.map(e=>e.value),m=f&&p.every(e=>l.includes(e));return(0,c.jsxs)(o.Space,{direction:`vertical`,size:4,className:`sbv1-checkbox-with-select-all`,children:[f&&(0,c.jsx)(o.Checkbox,{checked:m,disabled:i,onChange:e=>{n(e.target.checked?[...new Set([...p,...a])]:[...new Set(a)])},children:`All`}),(0,c.jsx)(o.Checkbox.Group,{value:l,disabled:i,options:u,onChange:d})]})}}),vm(`date`,{render:({value:e,onChange:t,disabled:n,placeholder:r})=>(0,c.jsx)(o.DatePicker,{style:{width:`100%`},value:e??null,disabled:n,placeholder:r??`Select date`,onChange:t})}),vm(`daterange`,{multiValue:!0,render:({value:e,onChange:t,disabled:n})=>(0,c.jsx)(gm,{style:{width:`100%`},value:e??null,disabled:n,onChange:t})}),vm(`range`,{multiValue:!0,render:e=>(0,c.jsx)(cm,{...e})}),vm(`daterangePreset`,{multiValue:!0,render:e=>(0,c.jsx)(mm,{...e})});function wm(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 Tm({field:t,moduleName:n,value:r,onChange:i,disabled:o}){let s=ym(t.type??`text`),c=t.dataSource??s.defaultDataSource??`static`,l=!!s.needsOptions&&c!==`static`,u=(0,a.useMemo)(()=>wm(t.options??t.values??[]),[t.options,t.values]),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)(l);return(0,a.useEffect)(()=>{if(!l)return;let r=!1;return(async()=>{try{let i=await e.gn(n,t.field,``,200,0,{dataSource:c,masterName:t.masterName,groupName:t.groupName}),a=Array.isArray(i)?i:i?.data??i?.values??[];r||f(wm(a))}catch(e){console.error(`[SearchBuilderV1] Failed to load options for "${t.field}":`,e),r||f([])}finally{r||m(!1)}})(),()=>{r=!0}},[l,c,t.field,t.masterName,t.groupName,n]),s.render({field:t,value:r,onChange:i??(()=>{}),options:d??u,optionsLoading:p,disabled:o,placeholder:t.placeholder,moduleName:n})}Tm.propTypes={field:d.default.object.isRequired,moduleName:d.default.string,value:d.default.any,onChange:d.default.func,disabled:d.default.bool};var{TextArea:Em}=o.Input;function Dm({field:e,value:t,onChange:n,disabled:r,serverError:i}){return(0,c.jsxs)(`div`,{className:`sbv1-boolean-field`,children:[(0,c.jsx)(Em,{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,c.jsx)(`div`,{className:`v1-input-validator-hint`,children:i})]})}Dm.propTypes={field:d.default.object.isRequired,value:d.default.string,onChange:d.default.func.isRequired,disabled:d.default.bool,serverError:d.default.string};var Om=new Set([`AND`,`OR`]),km=new Set([`AND`,`OR`,`NOT`]);function Am(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(km.has(o)?{type:`operator`,value:o}:{type:`term`,value:a}),r=i}return n}var jm=[{pattern:/&&/,message:`Use AND instead of &&.`},{pattern:/\|\|/,message:`Use OR instead of ||.`},{pattern:/(?:^|\s)!(?=\S)/,message:`Use NOT instead of !.`}],Mm=4,Nm=12,Pm=[`query`,`skills`,`jobTitle`,`designation`],Fm=new Set(Pm);function Im(e){return Array.isArray(e)?e.length===1&&Fm.has(e[0]):Fm.has(e)}function Lm(e){let t=[],n=[],r=String(e??``).trim();if(!r)return{valid:!0,errors:t,warnings:n};jm.forEach(({pattern:e,message:n})=>{e.test(r)&&t.push(n)});let i=Am(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=Om.has(e.value),r=!i||i.type===`lparen`||i.type===`operator`&&Om.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>Mm&&n.push(`Nested ${o} levels deep — consider simplifying so it stays easy to verify.`),l.length>Nm&&n.push(`${l.length} terms in one query — consider narrowing it.`),{valid:t.length===0,errors:[...new Set(t)],warnings:[...new Set(n)]}}function Rm(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 zm=[`query`,`skills`,`jobTitle`,`designation`,`currentLocation`,`experience.from`,`experience.to`,`workExperienceYears`,`sourceType`,`createdFrom`,`createdTo`],Bm=new Set([`experience.from`,`experience.to`,`workExperienceYears`]);function Vm(e,t,n){if(!t.includes(`.`)){e[t]=n;return}let[r,i]=t.split(`.`);e[r]={...e[r]??{},[i]:n}}function Hm(e){return e&&typeof e==`object`&&!Array.isArray(e)?e.value??e.label??e.name??``:e}function Um(e,t){let n=Hm(t);if(Bm.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(Hm).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 Wm(e={},t=[],n={}){let r={};return t.forEach(t=>{let n=t.booleanApiKey;if(!n)return;let i=e[t.field];if(i==null||i===``)return;if(Array.isArray(n)){let e;e=Array.isArray(i)?i:i&&typeof i==`object`&&(`from`in i||`to`in i)?[i.from,i.to]:[i],n.forEach((t,n)=>{let i=Um(t,e[n]);i!==void 0&&Vm(r,t,i)});return}let a=Um(n,i);a!==void 0&&Vm(r,n,a)}),r.sourceType||=n.defaultSourceType||`internal`,r}function Gm(e){return Array.isArray(e.rangeKeys)&&e.rangeKeys.length===2?e.rangeKeys:[`${e.field}From`,`${e.field}To`]}function Km(e={},t=[]){let n={...e};return t.forEach(t=>{let r=t.type??`text`;if(r===`daterangePreset`){delete n[t.field];return}if(!ym(r).multiValue||r!==`range`&&r!==`daterange`)return;let i=e[t.field];if(!Array.isArray(i))return;let[a,o]=Gm(t);delete n[t.field];let[s,c]=i;s!=null&&s!==``&&(n[a]=s),c!=null&&c!==``&&(n[o]=c)}),n}function qm(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 Jm(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.a(t.b,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:[]}}var{Text:Ym}=o.Typography,Xm=new Set([`selectedSource`,`source`,`sourceType`,`scope`]),Zm={searched:!1,rows:[],total:0,fields:[],actions:[],actionRules:[],loading:!1};function Qm(e){return Array.isArray(e)?e:Array.isArray(e?.groups)?e.groups:Array.isArray(e?.data?.groups)?e.data.groups:[]}function $m(e){return e===!0||e===1||e===`1`}function eh(e){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 th(e){return Object.entries(e??{}).some(([e,t])=>Xm.has(e)||t==null||t===``?!1:Array.isArray(t)?t.length>0:!0)}function nh({moduleName:t,action:n,formType:r=`search`,title:i,migrationJobId:l,searchActionContext:d,onBack:f}){let[p]=o.Form.useForm(),m=(0,u.useNavigate)(),[h,g]=(0,a.useState)(null),[_,v]=(0,a.useState)(!0),[y,b]=(0,a.useState)(``),[x,S]=(0,a.useState)(0),[C,w]=(0,a.useState)(`traditional`),[T,E]=(0,a.useState)(`internal`),[D,O]=(0,a.useState)({}),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)(Zm),[N,P]=(0,a.useState)({current:1,pageSize:10}),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)({}),[z,B]=(0,a.useState)({});(0,a.useEffect)(()=>{if(!t)return;let i=!1;return e.yr(t,r,n).then(e=>{i||(g(Array.isArray(e)?e[0]??null:e??null),b(``))}).catch(e=>{i||b(e?.message||`Failed to load the search form configuration.`)}).finally(()=>{i||v(!1)}),()=>{i=!0}},[t,r,n,x]);let ee=()=>{v(!0),S(e=>e+1)},V=(0,a.useMemo)(()=>Qm(h).filter(e=>!$m(e.hideGroup)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)).flatMap(e=>e.fields??[]).filter(e=>e?.field&&e.show!==0&&!$m(e.hidden)).sort((e,t)=>Number(e.order??0)-Number(t.order??0)),[h]),H=!!h?.booleanSearchEnabled&&!!h?.booleanSearchEndpoint,te=H&&C===`boolean`,U=(0,a.useMemo)(()=>V.filter(e=>e.booleanCapable&&Im(e.booleanApiKey)),[V]);(0,a.useEffect)(()=>{V.filter(e=>e.booleanCapable&&!Im(e.booleanApiKey)).forEach(e=>{console.warn(`[SearchBuilderV1] "${e.field}" is marked booleanCapable but its booleanApiKey (${JSON.stringify(e.booleanApiKey)}) is not one of ${Pm.join(`, `)} — the backend cannot parse it as an expression, so it will render as a normal field. Fix in Admin → Form Groups.`)})},[V]);let ne=e=>{let t=e?`boolean`:`traditional`,n={};V.forEach(e=>{e.booleanCapable&&(n[e.field]=void 0)}),p.setFieldsValue(n),B(e=>({...e,...n})),O({}),w(t)},W=(0,a.useCallback)(async(n,r,i={})=>{let a=Number(i.pageSize)>0?Number(i.pageSize):N.pageSize,s=Number(i.current),c=Number.isFinite(s)&&s>0?Math.floor(s):1,l=Lo(n?.selectedSource),u=r?Ro(r,T):l.includes(`internal`)?`internal`:Ro(n?.selectedSource,T);I(n),P({current:c,pageSize:a}),O({}),M(e=>({...e,loading:!0,searched:!0}));try{let r;if(te){let e=Wm(n,V,{defaultSourceType:h?.booleanDefaultSourceType||u});r=await Jm(h.booleanSearchEndpoint,e,{limit:a,offset:(c-1)*a})}else r=await e.vn(t,{...Km(n,V),selectedSource:u},{limit:a,offset:(c-1)*a},{scope:u,filters:qm(n,V)});E(u),M({searched:!0,rows:r.rows,total:r.total,fields:r.fields??[],actions:r.actions??[],actionRules:r.actionRules??[],loading:!1}),A(e=>Uo({sources:r.sources?.length?r.sources:l,activeSource:u,activeCount:r.total,responseCounts:r.counts,currentTabs:e,backendTabs:r.tabs}))}catch(e){let t=e?.details?String(e.details):``,n=e?.code===`INVALID_BOOLEAN_QUERY`?V.find(e=>e.booleanCapable&&t.toLowerCase().includes(String(e.field).toLowerCase())):null;n?O({[n.field]:t}):o.message.error(t||e?.message||`Search failed`),M({...Zm,searched:!0})}},[V,te,t,N.pageSize,h,T]),G=()=>{p.validateFields().then(e=>W(e,void 0,{current:1})).catch(()=>o.message.error(`Fix the highlighted field before searching.`))},re=()=>{p.resetFields(),B({}),O({}),M(Zm),A([]),E(`internal`)},ie=(0,a.useCallback)(async(e,t)=>{let n=Yo(e,t);R(e=>({...e,[n]:{...e[n],loading:!0}}));try{await Xo(e,t),R(e=>({...e,[n]:{loading:!1,completed:!0}})),o.message.success(e.successMessage)}catch(t){R(e=>({...e,[n]:{loading:!1}})),o.message.error(t?.message||e.errorMessage)}},[]),ae=(0,a.useMemo)(()=>{let e=j.fields?.length?j.fields:(()=>{let e=j.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=qo({rows:j.rows,selectedSource:T});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(!Jo(e,n,T))return null;let r=Yo(e,n),i=L[r]??{};return(0,c.jsx)(o.Button,{type:`primary`,size:`small`,loading:i.loading,disabled:!r||i.completed,onClick:()=>ie(e,n),children:i.completed?e.completedLabel:e.buttonLabel})}}))]},[ie,j.fields,j.rows,T,L]),oe=(0,a.useMemo)(()=>d??(l?{jobId:l}:null),[d,l]),se=(0,a.useMemo)(()=>{if(!oe)return j.actions;let e=t=>({...t,popupState:{...oe,...t.popupState},...t.children?{children:t.children.map(e)}:{}});return(j.actions??[]).map(e)},[j.actions,oe]),ce=!!h?.actionButtonEnabled,le=ce?e.N(h?.actionButtonUrl,void 0,oe??{}):null,ue=()=>{if(le){if(h?.actionButtonTarget===`_blank`){window.open(le,`_blank`,`noopener`);return}m(le)}},de=U.some(e=>{let t=z[e.field];return t!=null&&String(t).trim()!==``}),fe=te?!de:!th(z),pe=te&&!de&&U.length?`Enter a query in at least one of: ${U.map(e=>e.label??e.field).join(`, `)}.`:``;return t?_?(0,c.jsx)(`div`,{className:`sbv1-page`,children:(0,c.jsx)(o.Card,{className:`sbv1-card`,children:(0,c.jsx)(o.Skeleton,{active:!0,paragraph:{rows:4}})})}):y?(0,c.jsx)(`div`,{className:`sbv1-page`,children:(0,c.jsx)(o.Card,{className:`sbv1-card`,children:(0,c.jsxs)(o.Space,{direction:`vertical`,align:`center`,style:{width:`100%`},children:[(0,c.jsx)(Ym,{strong:!0,children:`Failed to load the search form`}),(0,c.jsx)(Ym,{type:`secondary`,children:y}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:ee,children:`Retry`})]})})}):V.length?(0,c.jsxs)(`div`,{className:`sbv1-page`,children:[(0,c.jsx)(o.Card,{className:`sbv1-card`,title:(0,c.jsx)(Ym,{strong:!0,children:i??h?.label??`Search`}),extra:(0,c.jsxs)(o.Space,{size:12,children:[(0,c.jsx)(o.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,c.jsx)(s.FilterOutlined,{}),onClick:re,children:`Reset filters`}),(0,c.jsx)(o.Tooltip,{title:pe||void 0,children:(0,c.jsx)(o.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,c.jsx)(s.SearchOutlined,{}),disabled:fe,loading:j.loading,onClick:G,children:`Search`})}),ce&&(0,c.jsx)(o.Tooltip,{title:le?void 0:`No valid destination configured`,children:(0,c.jsx)(o.Button,{size:`small`,className:`sbv1-action-btn`,icon:(0,c.jsx)(s.FileTextOutlined,{}),disabled:!le,onClick:ue,children:h?.actionButtonLabel||`Open`})}),f&&(0,c.jsx)(o.Button,{size:`small`,className:`sbv1-action-btn`,onClick:f,children:`Back`}),H&&(0,c.jsx)(o.Tooltip,{title:`Switch the marked fields to AND / OR / NOT expressions`,children:(0,c.jsxs)(o.Space,{size:8,children:[(0,c.jsx)(Ym,{type:`secondary`,children:`Boolean`}),(0,c.jsx)(o.Switch,{size:`small`,checked:C===`boolean`,onChange:ne})]})})]}),children:(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,colon:!1,onValuesChange:(e,t)=>B(t),children:[(0,c.jsx)(o.Row,{gutter:[24,0],children:V.map(e=>{let n=te&&U.includes(e),r=[];return $m(e.req)&&r.push({required:!0,message:`${e.label??e.field} is required`}),n&&(r.push({validator:(e,t)=>{let{errors:n}=Lm(t);return n.length?Promise.reject(Error(n[0])):Promise.resolve()}}),r.push({warningOnly:!0,validator:(e,t)=>{let{warnings:n}=Lm(t);return n.length?Promise.reject(Error(n[0])):Promise.resolve()}})),(0,c.jsx)(o.Col,{xs:24,sm:12,lg:e.col??12,children:(0,c.jsx)(o.Form.Item,{name:e.field,label:e.label??e.field,rules:r.length?r:void 0,initialValue:eh(e),children:n?(0,c.jsx)(Dm,{field:e,serverError:D[e.field]}):(0,c.jsx)(Tm,{field:e,moduleName:t})})},e.field)})}),pe&&(0,c.jsx)(`div`,{className:`sbv1-actions`,children:(0,c.jsx)(Ym,{type:`secondary`,className:`sbv1-empty-hint`,children:pe})})]})}),j.searched&&(0,c.jsx)(Oo,{moduleName:t,breadcrumbItems:[],dataSource:j.rows,fields:ae,total:j.total,loading:j.loading,current:N.current,pageSize:N.pageSize,showSearch:!1,tabs:k,selectedSource:T,onTabChange:e=>W(F??{},e,{current:1}),onPageChange:(e,t)=>W(F??{},T,{current:e,pageSize:t}),onPageSizeChange:(e,t)=>W(F??{},T,{current:1,pageSize:t}),actions:se,actionRules:j.actionRules})]}):(0,c.jsx)(`div`,{className:`sbv1-page`,children:(0,c.jsx)(o.Card,{className:`sbv1-card`,children:(0,c.jsxs)(Ym,{type:`secondary`,children:[`No search fields are configured for “`,t,`”.`]})})}):(0,c.jsx)(`div`,{className:`sbv1-page`,children:(0,c.jsx)(o.Card,{className:`sbv1-card`,children:(0,c.jsx)(Ym,{type:`danger`,children:`moduleName is required.`})})})}nh.propTypes={moduleName:d.default.string.isRequired,action:d.default.string,formType:d.default.string,title:d.default.string,migrationJobId:d.default.oneOfType([d.default.string,d.default.number]),searchActionContext:d.default.object,onBack:d.default.func};var rh={active:`green`,approved:`green`,hired:`green`,submitted:`gold`,resubmitted:`purple`,pending:`gold`,draft:`default`,rejected:`red`,inactive:`default`,completed:`blue`,not_submitted:`default`};function ih({status:e}){let t=String(e??`unknown`);return(0,c.jsx)(o.Tag,{color:rh[t.toLowerCase()]??`default`,style:{borderRadius:6,fontWeight:600,fontSize:12,textTransform:`capitalize`},children:t.replace(/_/g,` `)})}function ah(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 oh({tabs:e=[],activeKey:t,onChange:n,className:r=``}){let i=e.map(ah).filter(Boolean);if(!i.length)return null;let a=i.some(e=>e.key===t)?t:i[0].key;return(0,c.jsx)(`div`,{className:`stylish-tabs ${r}`.trim(),children:i.map(e=>{let t=e.key===a,r=e.count!=null;return(0,c.jsxs)(`button`,{type:`button`,className:`stylish-tabs__item${t?` stylish-tabs__item--active`:``}`,onClick:()=>n?.(e.key),children:[(0,c.jsx)(`span`,{className:`stylish-tabs__label`,children:e.label}),r&&(0,c.jsx)(o.Badge,{count:e.count,showZero:!0,overflowCount:999,className:`stylish-tabs__badge${t?` stylish-tabs__badge--active`:``}`})]},e.key)})})}var{TextArea:sh}=o.Input;function ch({value:e=``,onChange:t,placeholder:n="e.g. ${{clientRate}} /{{rateType}}",disabled:r=!1,textareaRef:i}){return(0,c.jsx)(sh,{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 lh=[`Weekly`,`Bi-Weekly`,`Monthly`].map(e=>({value:e,label:e})),uh=[7,15,30,45,60,90].map(e=>({value:`NET_${e}`,label:`NET ${e}`}));function dh({search:e,onSearchChange:t,searchPlaceholder:n=`Search employee, client, employer, project…`,monthValue:r,onMonthChange:i,cycleValue:a,onCycleChange:l,termsValue:u,onTermsChange:d,termsOptions:f=uh,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,c.jsxs)(`div`,{className:`fin-toolbar`,children:[(0,c.jsxs)(`div`,{className:`fin-toolbar__main`,children:[(0,c.jsxs)(`div`,{className:`fin-toolbar__filters`,children:[(0,c.jsx)(o.Input,{className:`fin-toolbar__search`,size:`large`,allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{className:`fin-toolbar__search-icon`}),placeholder:n,value:e,onChange:e=>t?.(e.target.value),disabled:C}),(0,c.jsx)(o.DatePicker,{className:`fin-toolbar__control`,picker:`month`,allowClear:!0,placeholder:`All months`,value:r,onChange:i,disabled:C}),d?(0,c.jsx)(o.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,l?(0,c.jsx)(o.Select,{className:`fin-toolbar__control`,allowClear:!0,placeholder:`Payment cycle`,value:a||void 0,onChange:e=>l(e??``),options:lh,disabled:C,popupMatchSelectWidth:!1}):null,(0,c.jsx)(o.Select,{className:`fin-toolbar__control`,allowClear:!0,placeholder:`Status`,value:p||void 0,onChange:e=>m?.(e??``),options:h,disabled:C,popupMatchSelectWidth:!1})]}),(0,c.jsxs)(`div`,{className:`fin-toolbar__actions`,children:[(0,c.jsx)(o.Tooltip,{title:`Reset filters`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ClearOutlined,{}),onClick:y,disabled:C,"aria-label":`Reset filters`})}),(0,c.jsx)(o.Tooltip,{title:`Refresh`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:b,disabled:C,"aria-label":`Refresh`})}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.DownloadOutlined,{}),onClick:x,loading:S,disabled:C,children:`Export`})]})]}),g.length?(0,c.jsxs)(`div`,{className:`fin-toolbar__chips`,children:[(0,c.jsxs)(`span`,{className:`fin-toolbar__chips-label`,children:[(0,c.jsx)(s.ThunderboltOutlined,{}),` Quick filters`]}),g.map(e=>(0,c.jsx)(`button`,{type:`button`,className:`fin-chip${_.includes(e.key)?` fin-chip--active`:``}`,onClick:()=>v?.(e.key),disabled:C,children:e.label},e.key))]}):null]})}var fh={regularDayHours:8,standardMaxHours:8,overtimeMaxRegular:16,overtimeMaxWeekOff:24,step:.5,decimals:2,epsilon:.001},ph={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 mh(e){let t=Number(e);return Number.isFinite(t)?t:0}function hh(e,t=fh.decimals){let n=10**t;return Math.round(mh(e)*n)/n}function gh(e,t,n,r=fh.decimals){return hh(Math.min(Math.max(mh(e),t),n),r)}function _h(e){return e?.isHoliday?`holiday`:e?.isWeekOff?`weekOff`:`working`}function vh(e,t,n,r,i=!0){e.push({field:t,code:n,message:ph[n],blocking:i})}function yh(e,t,n=fh){let r=_h(e),i=hh(t?.ST,n.decimals),a=hh(t?.OT,n.decimals),o=hh(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)&&vh(s,`ST`,`WEEKOFF_NA`,n,!1),a<0?vh(s,`OT`,`OT_NEGATIVE`,n):a>l+n.epsilon&&vh(s,`OT`,`OT_MAX_WEEKOFF`,n);else{l=n.overtimeMaxRegular;let e=gh(n.regularDayHours-i,0,n.regularDayHours,n.decimals),t=!1;i<0?(vh(s,`ST`,`ST_NEGATIVE`,n),t=!0):i>n.standardMaxHours+n.epsilon&&(vh(s,`ST`,`ST_MAX`,n),t=!0),t||(o<0?vh(s,`Leave`,`LEAVE_NEGATIVE`,n):o>n.regularDayHours+n.epsilon?vh(s,`Leave`,`LEAVE_MAX`,n):o>e+n.epsilon&&(e<=n.epsilon?vh(s,`ST`,`DAY_TOTAL`,n):vh(s,`Leave`,`LEAVE_REMAINING`,n)));let r=Math.abs(i-n.standardMaxHours)<=n.epsilon;a<0?vh(s,`OT`,`OT_NEGATIVE`,n):a>n.epsilon&&!r?vh(s,`OT`,`OT_REQUIRES_FULL_STANDARD`,n):a>l+n.epsilon&&vh(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=hh(i+o,n.decimals),d=r===`working`?Math.max(0,hh(n.regularDayHours-u,n.decimals)):0,f=r===`working`?Math.max(0,hh(c.Leave.max-o,n.decimals)):0,p=hh(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 bh(e,t,n=[],r=fh){let i=hh(t?.ST,r.decimals),a=hh(t?.Leave,r.decimals),o=hh(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=gh(r.regularDayHours-i,0,r.regularDayHours,r.decimals);a!==t&&(e.Leave=t)}else if(n.includes(`Leave`)){if(t(a)){let t=gh(r.regularDayHours-a,0,r.regularDayHours,r.decimals);i!==t&&(e.ST=t)}}else{let t=gh(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 xh(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:Sh}=o.Typography,Ch={draft:`default`,logged:`blue`,submitted:`processing`,approved:`success`,rejected:`error`,resubmitted:`purple`,reopened:`warning`,save_draft:`default`,pending:`warning`,not_submitted:`default`};function wh({status:e}){if(!e||e===`draft`||e===`not_submitted`)return null;let t={submitted:{icon:(0,c.jsx)(s.CheckOutlined,{}),color:`blue`,label:`Submitted`},approved:{icon:(0,c.jsx)(s.CheckCircleOutlined,{}),color:`green`,label:`Approved`},rejected:{icon:(0,c.jsx)(s.CloseCircleOutlined,{}),color:`red`,label:`Rejected`},resubmitted:{icon:(0,c.jsx)(s.SyncOutlined,{}),color:`purple`,label:`Re-Submitted`},reopened:{icon:(0,c.jsx)(s.SyncOutlined,{}),color:`orange`,label:`Reopened`},save_draft:{icon:null,color:`default`,label:`Draft`}}[e];return t?(0,c.jsx)(o.Tag,{color:t.color,icon:t.icon,style:{borderRadius:20,fontSize:12,padding:`2px 10px`},children:t.label}):(0,c.jsx)(o.Tag,{color:Ch[e]??`default`,children:e})}function Th({configKey:e=`timesheet`,month:t,year:n}){let r=Me(e);return t&&n&&(0,l.default)(`${n}-${t}-01`).isBefore((0,l.default)().subtract(r.thresholdMonths,`month`),`month`)?(0,c.jsx)(o.Tag,{color:r.pastColor,children:r.pastLabel}):null}var Eh={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 Dh(e,t=0){let n=Number(e);return Number.isFinite(n)?n:t}function Oh(e){let t=Dh(e);return t===0?`0h`:`${t.toFixed(1).replace(/\.0$/,``)}h`}var kh={ST:`#D0E6FF`,OT:`#AAFEBCA6`,leave:`#FFECBA`};function Ah(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 jh(e={},{angle:t=`135deg`}={}){let n=[[`ST`,Dh(e?.workingHours?.ST)],[`OT`,Dh(e?.workingHours?.OT)],[`leave`,Dh(e?.leave?.CL)+Dh(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=Ah(a/r,t)*100;a+=o;let l=s===n.length-1?100:Ah(a/r,t)*100;i.push(`${kh[e]} ${c.toFixed(2)}% ${l.toFixed(2)}%`)}),`linear-gradient(${t}, ${i.join(`, `)})`}function Mh(e={},{isUnloggedHighlight:t=!1,selected:n=!1,selectable:r=!1,reviewMode:i=!1}={}){let a=Dh(e?.workingHours?.ST),o=Dh(e?.workingHours?.OT),s=Dh(e?.leave?.CL)+Dh(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?Eh[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 Nh({day:e,readonly:t=!1,selected:n=!1,isUnloggedHighlight:r=!1,onSelect:i,onQuickLog:a,splitMode:u=`proportional`,splitAngle:d=`135deg`,selectable:f=!1,onToggleSelect:p,reviewMode:m=!1,onApproveDay:h,onRejectDay:g}){let _=Dh(e?.workingHours?.ST),v=Dh(e?.workingHours?.OT),y=Dh(e?.leave?.CL)+Dh(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=u===`proportional`?jh(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,c.jsxs)(`button`,{type:`button`,className:Mh(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,c.jsxs)(`span`,{className:`timesheet-day-cell__top`,children:[(0,c.jsxs)(`span`,{className:`timesheet-day-cell__date`,children:[e?.date?(0,l.default)(e.date).date():`-`,S&&(0,c.jsx)(`span`,{className:`timesheet-day-cell__reject-dot`})]}),(0,c.jsxs)(`span`,{className:`timesheet-day-cell__top-right`,children:[T&&(0,c.jsx)(o.Tooltip,{title:`Quick log 8h`,placement:`top`,children:(0,c.jsx)(s.ClockCircleOutlined,{className:`timesheet-day-cell__quick-log-icon`,onClick:D})}),!T&&!w&&!e?.isHoliday&&!e?.isWeekOff&&!e?.isFuture&&(0,c.jsx)(s.ClockCircleOutlined,{className:`timesheet-day-cell__quick-log-icon timesheet-day-cell__quick-log-icon--logged`})]})]}),(0,c.jsxs)(`span`,{className:`timesheet-day-cell__body`,children:[!w&&e?.isHoliday&&(0,c.jsx)(o.Tag,{color:`purple`,className:`timesheet-type-tag`,children:`H`}),!w&&e?.isWeekOff&&!e?.isLogged&&(0,c.jsx)(Sh,{type:`secondary`,className:`timesheet-no-log`,children:`Off`}),_>0&&(0,c.jsxs)(`span`,{className:`timesheet-hour-label`,children:[(0,c.jsx)(`span`,{className:`timesheet-hour-value`,children:Oh(_)}),(0,c.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-st`,children:` s`})]}),v>0&&(0,c.jsxs)(`span`,{className:`timesheet-hour-label timesheet-hour-label--ot`,children:[(0,c.jsx)(`span`,{className:`timesheet-hour-value`,children:Oh(v)}),(0,c.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-ot`,children:` o`})]}),y>0&&(0,c.jsxs)(`span`,{className:`timesheet-hour-label timesheet-hour-label--leave${E?` timesheet-hour-label--split-end`:``}`,children:[(0,c.jsx)(`span`,{className:`timesheet-hour-value`,children:Oh(y)}),(0,c.jsx)(`span`,{className:`timesheet-hour-suffix timesheet-hour-leave`,children:` L`})]}),!w&&!e?.isLogged&&!e?.isHoliday&&!e?.isWeekOff&&!e?.isFuture&&(0,c.jsx)(Sh,{type:`secondary`,className:`timesheet-no-log`,children:`No log`})]}),x&&(0,c.jsx)(s.CheckOutlined,{className:`timesheet-day-cell__verdict timesheet-day-cell__verdict--approved`}),S&&(0,c.jsx)(s.CloseCircleOutlined,{className:`timesheet-day-cell__verdict timesheet-day-cell__verdict--rejected`}),m&&e?.isLogged&&(h||g)&&(0,c.jsxs)(`span`,{className:`timesheet-day-review-actions`,children:[h&&(0,c.jsx)(`span`,{role:`button`,tabIndex:-1,className:`ts-approve`,title:`Approve this day`,onClick:t=>{t.stopPropagation(),h(e?.date)},children:(0,c.jsx)(s.CheckOutlined,{})}),g&&(0,c.jsx)(`span`,{role:`button`,tabIndex:-1,className:`ts-reject`,title:`Reject this day`,onClick:t=>{t.stopPropagation(),g(e?.date)},children:(0,c.jsx)(s.CloseCircleOutlined,{})})]})]});return S&&e?.rejectionReason?(0,c.jsx)(o.Tooltip,{title:e.rejectionReason,placement:`top`,children:(0,c.jsx)(`span`,{style:{display:`block`,width:`100%`},children:A})}):A}var Ph=e=>e==null?``:`${e}`,Fh=e=>e===``||e===void 0?void 0:Number(e);function Ih({open:t,day:n,saving:r=!1,onCancel:i,onSubmit:u,hoursStep:d,policy:f}){let[p]=o.Form.useForm(),m=o.Form.useWatch(`ST`,p),h=o.Form.useWatch(`OT`,p),g=o.Form.useWatch(`Leave`,p),_=(0,a.useMemo)(()=>({...fh,...d?{step:d}:null,...f}),[d,f]);(0,a.useEffect)(()=>{if(!t)return;let e=_h(n),r={ST:Dh(n?.workingHours?.ST),OT:Dh(n?.workingHours?.OT),Leave:Dh(n?.leave?.CL)+Dh(n?.leave?.SL)},i=bh(e,r,[],_);p.setFieldsValue({...r,...i})},[n,p,t,_]);let v=e=>({getFieldValue:t})=>({validator(){let{errorsByField:r}=yh(n,{ST:t(`ST`),OT:t(`OT`),Leave:t(`Leave`)},_),i=r[e];return i?Promise.reject(Error(i)):Promise.resolve()}}),y=()=>{p.validateFields([`ST`,`OT`,`Leave`]).catch(()=>{})},b=(e,t)=>{let r=bh(_h(n),t,Object.keys(e),_);r&&p.setFieldsValue(r),y()},x=async()=>{let t;try{t=await p.validateFields()}catch(t){e.l(t,p,{root:document.querySelector(`.timesheet-log-modal`)??document});return}let r=Dh(t.ST),i=Dh(t.OT),a=Dh(t.Leave),o=[r,i,a].filter(e=>e>0).length;u?.({date:n?.date,logType:o>1?`mixed`:i>0?`overtime`:a>0?`leave`:`working`,workingHours:{ST:r,OT:i},leave:{CL:a,SL:0},isHoliday:!!n?.isHoliday,isWeekOff:!!n?.isWeekOff,notes:``})},S=n?.isHoliday,C=!!n?.isWeekOff&&!S,w=n?.date?(0,l.default)(n.date).format(`MMM DD, YYYY`):`Log time`,T=(0,a.useMemo)(()=>yh(n,{ST:m,OT:h,Leave:g},_),[n,m,h,g,_]);return(0,c.jsxs)(o.Modal,{rootClassName:`timesheet-log-modal`,title:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(Sh,{strong:!0,children:w}),n?.isHoliday&&(0,c.jsx)(o.Tag,{color:`purple`,children:`Holiday`}),n?.isWeekOff&&(0,c.jsx)(o.Tag,{children:`Week Off`})]}),open:t,onCancel:i,onOk:x,confirmLoading:r,okText:`Save`,cancelText:`Cancel`,destroyOnHidden:!0,width:340,footer:(e,{OkBtn:t,CancelBtn:n})=>(0,c.jsxs)(o.Space,{style:{width:`100%`,justifyContent:`flex-end`},children:[(0,c.jsx)(n,{}),!S&&(0,c.jsx)(t,{})]}),children:[n?.rejectionReason&&(0,c.jsxs)(`div`,{className:`timesheet-log-reject`,children:[(0,c.jsxs)(`div`,{className:`timesheet-log-reject__note`,children:[(0,c.jsx)(s.CloseCircleOutlined,{className:`timesheet-log-reject__icon`}),(0,c.jsxs)(`div`,{className:`timesheet-log-reject__body`,children:[(0,c.jsx)(`span`,{className:`timesheet-log-reject__title`,children:`Sent back by your reviewer`}),(0,c.jsx)(`span`,{className:`timesheet-log-reject__reason`,children:n.rejectionReason})]})]}),(0,c.jsxs)(`div`,{className:`timesheet-log-reject__proof`,children:[(0,c.jsx)(s.UploadOutlined,{className:`timesheet-log-reject__proof-icon`}),(0,c.jsxs)(`div`,{className:`timesheet-log-reject__body`,children:[(0,c.jsx)(`span`,{className:`timesheet-log-reject__title timesheet-log-reject__title--proof`,children:`To fix it`}),(0,c.jsxs)(`ol`,{className:`timesheet-log-reject__steps`,children:[(0,c.jsx)(`li`,{children:`Correct the hours below.`}),(0,c.jsx)(`li`,{children:`Replace the proof / screenshot so it matches.`}),(0,c.jsx)(`li`,{children:`Save, then re-submit your timesheet.`})]})]})]})]}),S?(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`Holiday — no manual log required.`}):(0,c.jsxs)(c.Fragment,{children:[C&&(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`Week off — overtime only.`,style:{marginBottom:12}}),(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,className:`timesheet-log-form`,validateTrigger:[`onChange`,`onBlur`],onValuesChange:b,children:[(0,c.jsx)(o.Form.Item,{name:`ST`,label:(0,c.jsxs)(`span`,{style:{color:`#1d4ed8`,fontWeight:600},children:[`Standard `,(0,c.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,c.jsx)(o.InputNumber,{step:T.fields.ST.step,disabled:T.fields.ST.disabled,style:{width:`100%`},formatter:Ph,parser:Fh,addonAfter:(0,c.jsx)(`span`,{style:{color:`#1d4ed8`,fontWeight:700},children:`s`})})}),(0,c.jsx)(o.Form.Item,{name:`OT`,label:(0,c.jsxs)(`span`,{style:{color:`#15803d`,fontWeight:600},children:[`Overtime `,(0,c.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,c.jsx)(o.InputNumber,{step:T.fields.OT.step,disabled:T.fields.OT.disabled,style:{width:`100%`},formatter:Ph,parser:Fh,addonAfter:(0,c.jsx)(`span`,{style:{color:`#15803d`,fontWeight:700},children:`o`})})}),(0,c.jsx)(o.Form.Item,{name:`Leave`,label:(0,c.jsxs)(`span`,{style:{color:`#b45309`,fontWeight:600},children:[`Leave `,(0,c.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,c.jsx)(o.InputNumber,{step:T.fields.Leave.step,disabled:T.fields.Leave.disabled,style:{width:`100%`},formatter:Ph,parser:Fh,addonAfter:(0,c.jsx)(`span`,{style:{color:`#b45309`,fontWeight:700},children:`L`})})})]})]})]})}function Lh({count:e=0,total:t=0,hours:n=8,loading:r=!1,onConfirm:i,onCancel:a,onSelectAll:l,onSelectNone:u}){return(0,c.jsxs)(`div`,{className:`timesheet-quicklog-bar`,children:[(0,c.jsxs)(o.Space,{size:8,wrap:!0,children:[(0,c.jsx)(Sh,{strong:!0,children:e===0?`No days selected`:`Log ${n}h standard on ${e} day${e===1?``:`s`}`}),t>0&&(0,c.jsxs)(Sh,{type:`secondary`,style:{fontSize:12},children:[e,` of `,t,` eligible · click a day to deselect it`]})]}),(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(o.Button,{size:`small`,onClick:l,disabled:e===t,children:`Select all`}),(0,c.jsx)(o.Button,{size:`small`,onClick:u,disabled:e===0,children:`Clear`}),(0,c.jsx)(o.Button,{size:`small`,onClick:a,children:`Cancel`}),(0,c.jsx)(o.Button,{size:`small`,type:`primary`,icon:(0,c.jsx)(s.ClockCircleOutlined,{}),loading:r,disabled:e===0,onClick:i,children:`Confirm`})]})]})}function Rh({open:e=!1,loading:t=!1,onSave:n,onCancel:r}){let[i,s]=(0,a.useState)(``);return(0,a.useEffect)(()=>{e&&s(``)},[e]),(0,c.jsx)(o.Modal,{title:`Rejection Reason`,open:e,onCancel:r,footer:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,danger:!0,disabled:!i.trim(),loading:t,onClick:()=>n?.(i.trim()),children:`Reject`})]}),destroyOnHidden:!0,children:(0,c.jsx)(o.Form,{layout:`vertical`,children:(0,c.jsx)(o.Form.Item,{label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`span`,{style:{color:`#ff4d4f`},children:`*`}),` Comments`]}),help:i.trim()?``:`Rejection reason is required`,validateStatus:i.trim()?``:`error`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,maxLength:1e3,showCount:!0,placeholder:`Enter reason for rejection...`,value:i,onChange:e=>s(e.target.value)})})})})}function zh({loading:t=!1,disabled:n=!1,onQuickLog:r}){return(0,c.jsx)(o.Card,{size:`small`,className:`timesheet-quick-log`,children:(0,c.jsx)(o.Space,{wrap:!0,children:(0,c.jsx)(e.st,{variant:`primary`,icon:(0,c.jsx)(s.ClockCircleOutlined,{}),loading:t,disabled:n,onClick:()=>r?.(`businessDays`),children:`Quick Log (8h s)`})})})}var Bh={".pdf":[s.FilePdfOutlined,`pdf`],".doc":[s.FileWordOutlined,`word`],".docx":[s.FileWordOutlined,`word`],".xls":[s.FileExcelOutlined,`excel`],".xlsx":[s.FileExcelOutlined,`excel`],".csv":[s.FileExcelOutlined,`excel`],".png":[s.FileImageOutlined,`image`],".jpg":[s.FileImageOutlined,`image`],".jpeg":[s.FileImageOutlined,`image`],".gif":[s.FileImageOutlined,`image`],".webp":[s.FileImageOutlined,`image`]};function Vh({fileName:e}){let[t,n]=Bh[Ec(e)]??[s.FileOutlined,`default`];return(0,c.jsx)(t,{className:`timesheet-proof__type-icon timesheet-proof__type-icon--${n}`})}function Hh({proof:e,uploading:t=!1,disabled:n=!1,required:r=!1,onUpload:i,onPreview:a,onRemove:l,previewUrl:u}){let d=!!e?.fileName,f=e?.size?Dc(e.size):``,p=Ec(e?.fileName??``).replace(`.`,``).toUpperCase(),m=e?.pending?`Selected — uploads on submit`:`Previously uploaded`,h=[f||p,m].filter(Boolean).join(` • `),g=!n&&!(d&&l);return(0,c.jsxs)(o.Card,{className:`timesheet-proof${d?` timesheet-proof--filled`:``}`,size:`small`,title:(0,c.jsxs)(c.Fragment,{children:[`Proof / screenshot`,r&&(0,c.jsx)(`span`,{className:`timesheet-proof__required`,children:` *`})]}),children:[d?(0,c.jsxs)(`div`,{className:`timesheet-proof__file`,children:[(0,c.jsx)(`span`,{className:`timesheet-proof__file-icon`,children:(0,c.jsx)(Vh,{fileName:e.fileName})}),(0,c.jsxs)(`span`,{className:`timesheet-proof__file-info`,children:[(0,c.jsx)(`span`,{className:`timesheet-proof__file-name`,title:e.fileName,children:e.fileName}),(0,c.jsx)(`span`,{className:`timesheet-proof__file-meta`,children:h})]}),(0,c.jsxs)(o.Space,{size:6,className:`timesheet-proof__file-actions`,children:[a&&(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),className:`timesheet-proof__view-btn`,onClick:()=>a(e),children:`View`}),l&&(0,c.jsx)(o.Tooltip,{title:`Remove`,children:(0,c.jsx)(o.Button,{size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),"aria-label":`Remove ${e.fileName}`,className:`timesheet-proof__delete-btn`,onClick:()=>l(e)})})]})]}):(0,c.jsx)(Sh,{type:`secondary`,style:{fontSize:12},children:`Upload Proof`}),g&&(0,c.jsx)(o.Upload,{beforeUpload:e=>(i?.(e),!1),maxCount:1,showUploadList:!1,disabled:n,accept:`.pdf,.doc,.docx,.png,.jpg,.jpeg`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.UploadOutlined,{}),loading:t,block:!0,size:`small`,style:{marginTop:6},children:d?`Replace proof`:`Upload proof`})}),(0,c.jsx)(Sh,{type:`secondary`,className:`timesheet-proof__hint`,style:{fontSize:11},children:`Supports: .pdf, .doc, .docx, .png, .jpg — max 10 MB`})]})}function Uh({value:e,disabled:t=!1,onChange:n,label:r=`Notes / Comments`,maxLength:i=1e3}){let a=(e??``).length;return(0,c.jsxs)(o.Card,{className:`timesheet-notes`,size:`small`,title:r,children:[(0,c.jsx)(`div`,{className:`timesheet-notes__field`,children:(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`timesheet-notes__count`,children:[a,` / `,i]})]})}function Wh({status:t,loading:n=!1,readonly:r=!1,rejectionReason:i,rejectionMode:l=`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,a.useState)(!1),[S,C]=(0,a.useState)(!1),[w,T]=(0,a.useState)(``),E=[`submitted`,`resubmitted`,`reopened`,`save_draft`].includes(t),D=t===`rejected`,O=t===`approved`,k=t===`submitted`||t===`resubmitted`,A=t===`reopened`,j=!t||t===`draft`||t===`not_submitted`,M=async e=>{C(!0);try{await v?.(e),x(!1)}finally{C(!1)}},N=()=>o.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){o.message.error(`A review comment is required to reject`);return}v?.(e)};if(l===`inline`)return(0,c.jsxs)(o.Card,{size:`small`,className:`timesheet-review-notes-card`,children:[(0,c.jsxs)(`div`,{className:`timesheet-review-notes-card__head`,children:[(0,c.jsx)(Sh,{strong:!0,children:u}),(0,c.jsxs)(Sh,{type:`secondary`,className:`timesheet-review-notes-card__hint`,children:[(0,c.jsx)(s.InfoCircleOutlined,{}),` `,d]})]}),i&&D&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:`Rejected`,description:i,className:`timesheet-review-notes-card__alert`}),k?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`timesheet-review-notes-card__actions`,children:[(0,c.jsx)(o.Tooltip,{title:m?h:``,children:(0,c.jsx)(o.Button,{danger:!0,loading:n,disabled:m,onClick:P,children:`Reject`})}),(0,c.jsx)(o.Tooltip,{title:f?p:``,children:(0,c.jsx)(o.Button,{type:`primary`,loading:n,disabled:f,onClick:_,children:`Approve`})})]})]}):(0,c.jsxs)(`div`,{className:`timesheet-review-notes-card__decided`,children:[(0,c.jsxs)(Sh,{type:`secondary`,children:[`This timesheet is `,t,`.`]}),(O||D)&&y?(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.InfoCircleOutlined,{}),loading:n,onClick:N,children:`Reopen`}):null]})]});let F=`Submit`,I=!1;return k&&(F=t===`resubmitted`?`Re-Submitted`:`Submitted`,I=!0),(D||A)&&(F=`Re-Submit`,I=!1),O&&(F=`Approved`,I=!0),(0,c.jsxs)(c.Fragment,{children:[i&&D&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:`Rejected`,description:i,style:{marginBottom:8}}),(0,c.jsxs)(`div`,{className:`timesheet-action-bar`,children:[(j||D||A||k||O)&&g&&(0,c.jsx)(e.st,{variant:`primary`,icon:(0,c.jsx)(s.SendOutlined,{}),loading:n,disabled:I,onClick:I?void 0:g,block:!0,children:F}),E&&_&&(0,c.jsx)(e.st,{variant:`primary`,icon:(0,c.jsx)(s.CheckOutlined,{}),loading:n,onClick:_,children:`Approve`}),E&&v&&(0,c.jsx)(o.Button,{danger:!0,loading:n,onClick:()=>x(!0),children:`Reject`}),(O||D)&&y&&(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.InfoCircleOutlined,{}),loading:n,onClick:N,children:`Reopen`})]}),(0,c.jsx)(Rh,{open:b,loading:S,onSave:M,onCancel:()=>x(!1)})]})}var Gh=e=>Number.isFinite(Number(e))?Number(e):0;function Kh(e,t,{isToday:n}={}){let r=Number(e.slice(-2)),i=Gh(t?.workingHours?.ST),a=Gh(t?.workingHours?.OT),s=Gh(t?.leave?.CL)+Gh(t?.leave?.SL),u=i+a,d=!!t?.isLogged||u>0||s>0,f=t?t.isHoliday?`holiday`:d&&u>0?`work`:s>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`?jh(t):null,h=(0,c.jsxs)(`div`,{className:p,style:m?{background:m}:void 0,children:[(0,c.jsx)(`span`,{className:`fin-daycell__num`,children:r}),f===`work`?(0,c.jsxs)(`span`,{className:`fin-daycell__hours`,children:[u%1==0?u:u.toFixed(1),`h`,a>0?(0,c.jsx)(`em`,{children:` +OT`}):null]}):f===`leave`?(0,c.jsx)(`span`,{className:`fin-daycell__hours`,children:`Leave`}):f===`holiday`?(0,c.jsx)(`span`,{className:`fin-daycell__hours`,children:`Holiday`}):null]});return t?(0,c.jsx)(o.Tooltip,{title:[(0,l.default)(e).format(`ddd, MMM D`),i?`ST ${i}h`:null,a?`OT ${a}h`:null,s?`Leave ${s}h`:null,t.isHoliday?`Holiday`:null,t.status===`rejected`?`Rejected${t.rejectionReason?` — ${t.rejectionReason}`:``}`:null,t.status===`approved`?`Approved`:null].filter(Boolean).join(` · `),children:h}):h}var qh=[{label:`Standard`,color:`#3b82f6`},{label:`Overtime`,color:`#22c55e`},{label:`Leave`,color:`#f59e0b`},{label:`Holiday`,color:`#8b5cf6`},{label:`Rejected`,color:`#ef4444`}];function Jh({dailyLogs:e=[],timesheetSummary:t={},rate:n=0,rateLabel:r=`Rate`,amountLabel:i=`Amount`,approvedHours:u,month:d,year:f,monthLabel:p,extraEquationTerms:m=[]}){let h=(0,a.useMemo)(()=>Rd(e),[e]),g=(0,a.useMemo)(()=>zd(e,n),[e,n]),_=(0,a.useMemo)(()=>Hd(e,n),[e,n]),v=h.totalHours||Gh(u),y=v*Gh(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:xd(v),icon:(0,c.jsx)(s.ClockCircleOutlined,{}),tone:`brand`,sub:`${h.loggedDays} logged days`},{key:`st`,label:`Standard`,value:xd(h.stHours||t.totalSTHours),icon:(0,c.jsx)(s.FieldTimeOutlined,{}),tone:`neutral`},{key:`ot`,label:`Overtime`,value:xd(h.otHours||t.totalOTHours),icon:(0,c.jsx)(s.ThunderboltOutlined,{}),tone:`warning`},{key:`leave`,label:`Leave`,value:xd(h.leaveHours||t.leaveHours),icon:(0,c.jsx)(s.RestOutlined,{}),tone:`neutral`,sub:`${h.leaveDays} days`},{key:`avg`,label:`Avg / Logged Day`,value:xd(h.avgHoursPerLoggedDay),icon:(0,c.jsx)(s.CalendarOutlined,{}),tone:`info`},{key:`amount`,label:i,value:bd(y),icon:(0,c.jsx)(s.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,c.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,c.jsx)(`span`,{className:`fin-cell__primary`,children:e?(0,l.default)(e).format(`ddd, MMM D`):`—`}),t.isHoliday?(0,c.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,c.jsxs)(`div`,{className:`fin-bar`,children:[(0,c.jsx)(`span`,{className:`fin-bar__track`,children:(0,c.jsx)(`span`,{className:`fin-bar__fill`,style:{width:`${e/b*100}%`}})}),(0,c.jsx)(`span`,{className:`fin-bar__value`,children:e.toFixed(2)})]})},{title:i,dataIndex:`amount`,align:`right`,width:110,render:e=>(0,c.jsx)(`strong`,{className:`fin-cell-money__value`,children:bd(e)})},{title:`Status`,dataIndex:`status`,align:`center`,width:100,render:e=>(0,c.jsx)(Zd,{status:e,size:`sm`})},{title:`Reviewer`,dataIndex:`reviewer`,width:130,render:e=>e||(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:`—`})},{title:`Remarks`,dataIndex:`remarks`,ellipsis:!0,render:e=>e?(0,c.jsx)(o.Tooltip,{title:e,children:(0,c.jsx)(`span`,{className:`fin-remarks`,children:e})}):(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:`—`})}],T=[{title:`Week`,dataIndex:`label`,render:(e,t)=>(0,c.jsx)(Yh,{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,c.jsxs)(`div`,{className:`fin-bar`,children:[(0,c.jsx)(`span`,{className:`fin-bar__track`,children:(0,c.jsx)(`span`,{className:`fin-bar__fill`,style:{width:`${e/x*100}%`}})}),(0,c.jsx)(`span`,{className:`fin-bar__value`,children:e.toFixed(1)})]})},{title:i,dataIndex:`amount`,align:`right`,width:110,render:e=>(0,c.jsx)(`strong`,{className:`fin-cell-money__value`,children:bd(e)})}];return(0,c.jsxs)(`div`,{className:`fin-analysis`,children:[(0,c.jsx)(Qd,{items:S,compact:!0}),(0,c.jsx)(`div`,{className:`fin-daychips`,children:C.map(e=>(0,c.jsxs)(`span`,{className:`fin-badge fin-badge--${e.tone}`,children:[e.value,` `,e.label]},e.label))}),(0,c.jsx)(tf,{className:`fin-equation-card`,children:(0,c.jsx)(af,{terms:[{value:xd(v),label:`Approved Hours`},{op:`×`},{value:Sd(n),label:r},{op:`=`},{value:bd(y),label:i,tone:`accent`},...m]})}),(0,c.jsxs)(`div`,{className:`fin-analysis__grid`,children:[(0,c.jsx)(k,{className:`fin-heatmap`,days:e,startDay:`Mon`,readonly:!0,year:f,month:d,monthLabel:p,legend:qh,renderDayContent:Kh,onPrevMonth:()=>{},onNextMonth:()=>{}}),(0,c.jsx)(tf,{title:`Weekly Breakdown`,className:`fin-weekly`,children:(0,c.jsx)(o.Table,{className:`fin-analysis-table`,size:`small`,rowKey:e=>e.label,pagination:!1,dataSource:_,columns:T,locale:{emptyText:`No logged weeks`}})})]}),(0,c.jsx)(tf,{title:`Daily Breakdown — Hours × ${r} = ${i}`,children:(0,c.jsx)(o.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,c.jsxs)(o.Table.Summary.Row,{className:`fin-analysis-total`,children:[(0,c.jsx)(o.Table.Summary.Cell,{index:0,children:(0,c.jsx)(`strong`,{children:`Total`})}),(0,c.jsx)(o.Table.Summary.Cell,{index:1,align:`right`,children:h.stHours.toFixed(2)}),(0,c.jsx)(o.Table.Summary.Cell,{index:2,align:`right`,children:h.otHours?h.otHours.toFixed(2):`—`}),(0,c.jsx)(o.Table.Summary.Cell,{index:3,align:`right`,children:h.leaveHours?h.leaveHours.toFixed(2):`—`}),(0,c.jsx)(o.Table.Summary.Cell,{index:4,align:`right`,children:(0,c.jsx)(`strong`,{children:v.toFixed(2)})}),(0,c.jsx)(o.Table.Summary.Cell,{index:5,align:`right`,children:(0,c.jsx)(`strong`,{children:bd(y)})}),(0,c.jsx)(o.Table.Summary.Cell,{index:6}),(0,c.jsx)(o.Table.Summary.Cell,{index:7}),(0,c.jsx)(o.Table.Summary.Cell,{index:8})]}):null})})]})}function Yh({primary:e,secondary:t}){return(0,c.jsxs)(`div`,{className:`fin-cell-text`,children:[(0,c.jsx)(`span`,{className:`fin-cell__primary`,children:e}),t?(0,c.jsx)(`span`,{className:`fin-cell__secondary`,children:t}):null]})}var Xh=`submissionManager`,Zh=`onboardingManager`,Qh=`cfo`,$h=`onlyFinance`,eg=`submissionManagerReapprove`,tg=`onboardingManagerReapprove`;function ng(e,t={}){return e?String(e).replace(/\{(\w+)\}/g,(e,n)=>t[n]===void 0?e:String(t[n])):``}var rg={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.`}}}},ig=[{key:`submitted`,label:`Recruiter Submitted`},{key:`manager`,label:`Manager Approved`},{key:`onboarding`,label:`Onboarding Confirmed`},{key:`cfo`,label:`CFO Review`}],ag={[Xh]:{title:`Finance Review`,statusLabel:`Pending Your Approval`,trail:{steps:ig.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},[Zh]:{title:`Onboarding Review`,statusLabel:`Pending Onboarding`,trail:{steps:ig.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:ig,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},[$h]:{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 og(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}:{}}}}}ag[eg]={...og(ag[Xh],{title:`Finance Re-Review`,primaryLabel:`Send For Approval`,primaryApi:`submissionReapproveSend`}),sections:{...ag[Xh].sections,referral:{show:`ifExists`,mode:`print`,typeChip:!0}},margin:{label:`Total Margin`,formula:`netProposed-netEmployer-referral`}},ag[tg]=og(ag[Zh],{title:`Onboarding Re-Review`,primaryLabel:`Re-send for CFO Approval`});var sg=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function cg(e,t){if(!sg(t))return e===void 0?t:e;if(e===void 0)return t;if(!sg(e))return e;let n={...e};for(let[r,i]of Object.entries(t))n[r]=cg(e[r],i);return n}var lg=new Map;function ug(e){let t=ag[e]??ag.cfo;return lg.has(t)||lg.set(t,cg(t,rg)),lg.get(t)}function dg(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 fg(e){return String(e?.margin?.formula??``).includes(`referral`)}var pg=`W2`,mg=`C2C`,hg={rateUnit:`hr`,currency:`$`},gg=e=>{let t=Number(e);return Number.isFinite(t)?t:0},_g=e=>e===!0||e===`true`||e===1||e===`1`,vg=e=>e!=null&&e!==``,yg=(...e)=>e.find(vg),bg=e=>Math.round((gg(e)+2**-52)*100)/100;function xg(e){return Array.isArray(e)?e.length?e[e.length-1]:{}:e??{}}var Sg=e=>String(e?.$oid??e?._id?.$oid??e?._id??e?.id??e??``);function Cg(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 wg(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 Tg(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 Eg(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 Dg(e){let t=String(e??``).trim().toUpperCase().replace(/[\s_-]/g,``);return t===`W2`||t.includes(`W2`)?`W2`:`C2C`}function Og(e,t){return bg(gg(e)*gg(t)/100)}function kg(e={},t={},n={}){let r={...hg,...n??{}},i=e.submission??e??{},a=e.job??{},o=e.client??{},s=e.engagement??{},c=Dg(Eg(i,`contractType`)??s.onboardingType??e.contractType),l=a.jobPayDetails??{},u=gg(l.clientBudgetStart??Eg(i,`clientBudget`,`clientBudgetStart`)),d=gg(l.clientBudgetEnd??Eg(i,`clientBudget`,`clientBudgetEnd`))||u,f=d||u,p=xg(o.vmsFeeHistory)??{},m=t.clientVmsFee??o.vmsFee??{},h=vg(p.vmsPercentage)?gg(p.vmsPercentage):vg(o.vmsPercentage)?gg(o.vmsPercentage):m.isApplicable===!1?0:gg(yg(m.value,m.percent,typeof m==`number`?m:void 0,Eg(i,`clientVmsPercent`),Eg(i,`vmsPercent`))),g=String(yg(p.vmsPercentageType,o.vmsPercentageType)??`recurring`).toLowerCase(),_=gg(Eg(i,`proposedRate`,`candidateProposedRate`)??e.proposedRateValue),v=yg(Eg(i,`proposedRate`,`candidateProposedRateCurrencySymbol`),Eg(i,`proposedRate`,`candidateProposedRateCurrency`),Eg(i,`candidateBudget`,`candidateBudgetCurrencySymbol`),Eg(i,`candidateBudget`,`candidateBudgetCurrency`),l.clientBudgetCurrencySymbol,l.clientBudgetCurrency,a.currency,a.currencySymbol,r.currency),y=Bl(v,r.currency),b=yg(Eg(i,`proposedRate`,`candidateProposedRateUnit`),Eg(i,`candidateBudget`,`candidateBudgetUnit`),l.clientBudgetUnit,r.rateUnit),x=gg(Eg(i,`candidateBudget`,`candidateBudgetStart`)??Eg(i,`candidateBudget`,`candidateBudgetRate`)??Eg(i,`candidateRate`,`candidateAcceptedRate`)),S=_g(Eg(i,`submission_current_employer`,`isVmsRequired`)??Eg(i,`submission_current_employer`,`isVMSRequired`)),C=gg(yg(Eg(i,`submission_current_employer`,`vmsPercentage`),Eg(i,`submission_current_employer`,`vmsCommission`),e.employer?.vmsPercentage,e.employer?.vmsCommission,s.vmsPercent)),w=C>0,T=S?C:0,E=String(Eg(i,`submission_current_employer`,`vmsType`)??Eg(i,`submission_current_employer`,`vmsCommissionType`)??`Recurring`),D=Eg(i,`submission_current_employer`,`tax`);return{contractType:c,currency:y,currencyRaw:v,rateUnit:b,clientJobRate:f,clientJobRateFrom:u,clientJobRateTo:d,clientVmsPercent:h,clientVmsPercentageType:g,proposedRate:_,employerRate:x,employerVmsPercent:T,employerVmsPercentConfigured:C,employerVmsAvailable:w,employerVmsType:E,employerVmsRequired:S,locationTaxPercent:t.locationTaxPercent==null?D!=null&&D!==``?gg(D):Ag(t.locationTaxRows,Eg(i,`submission_current_employer`,`locationId`)??Eg(i,`submission_current_employer`,`location`)??Eg(i,`city`)??Eg(i,`state`)??a.jobLocation):gg(t.locationTaxPercent)}}function Ag(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 gg(r?.taxValue??r?.taxPercent)}function jg(e,t={}){let{contractType:n=`C2C`,currency:r=hg.currency,currencyRaw:i,rateUnit:a=hg.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=Bl(r,hg.currency),b=t.proposedRate==null?gg(d):gg(t.proposedRate),x=!!t.includeReferral,S=x?gg(t.referralRate):0,C=(t.deductReferral==null?x:t.deductReferral)?S:0,w=Og(o,l),T=bg(o-w),E=Og(b,l),D=bg(b-E),O=n===`W2`,k=O?v:p,A=Og(f,k),j=bg(f-A),M=bg(D-j-C);return{contractType:n,currency:y,currencyRaw:i??y,rateUnit:a,rateUnitLabel:Hl(a),rateUnitShort:Wl(a),isW2:O,clientJobRate:bg(o),clientJobRateFrom:bg(s),clientJobRateTo:bg(c),clientVmsPercent:gg(l),clientVmsPercentageType:u,clientDiscount:w,netClientRate:T,proposedRate:bg(b),discountVms:E,netProposedRate:D,employerRate:bg(f),employerDeductionPercent:gg(k),employerDeduction:A,employerDeductionLabel:O?`Location Tax`:`Employer VMS`,employerVmsType:g,employerVmsRequired:!!_,employerVmsPercentConfigured:gg(m),employerVmsAvailable:!!h,netEmployerRate:j,includereferral:x,referralRate:bg(S),referralDeduction:bg(C),totalMargin:M,marginPositive:M>=0}}function Mg(e,t,n={}){return jg(kg(e,t,n.defaults),n)}var Ng={decimals:2,min:0};function Pg(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 Fg(e,t={}){let{decimals:n=Ng.decimals,min:r,max:i}={...Ng,...t};if(e==null||e===``)return!0;let a=String(e).trim();if(!/^-?\d*(\.\d*)?$/.test(a)||Pg(a)>gg(n))return!1;let o=Number(a);return!(!Number.isFinite(o)||r!=null&&o<gg(r)||i!=null&&o>gg(i))}var Ig=new Set([`Backspace`,`Delete`,`Tab`,`Enter`,`Escape`,`Home`,`End`,`ArrowLeft`,`ArrowRight`,`ArrowUp`,`ArrowDown`,`PageUp`,`PageDown`]);function Lg(e={},t,n=``,r=null,i=null){if(Ig.has(t)||String(t??``).length!==1)return!0;let{decimals:a=Ng.decimals,min:o}={...Ng,...e},s=String(n??``),c=r??s.length,l=i??c,u=s.slice(0,c)+t+s.slice(l),d=o==null||gg(o)<0;return t===`-`?d&&/^-?\d*(\.\d*)?$/.test(u):t===`.`?gg(a)>0&&/^-?\d*(\.\d*)?$/.test(u):!/^\d$/.test(t)||!/^-?\d*(\.\d*)?$/.test(u)?!1:Pg(u)<=gg(a)}function Rg(e,t={}){let{decimals:n=Ng.decimals,min:r,max:i}={...Ng,...t},a=gg(e),o=10**gg(n);return a=Math.round((a+2**-52)*o)/o,r!=null&&(a=Math.max(a,gg(r))),i!=null&&(a=Math.min(a,gg(i))),a}function zg(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 Bg(e,t=hg.currency){let n=Gl(e);return ql(Number.isNaN(n)?0:n,t,{decimals:2})}var{TextArea:Vg}=o.Input,Hg=(...e)=>e.find(e=>e!=null&&e!==``)??`-`;function Ug(e){return String(e??``).toLowerCase().replace(/\s+/g,``)===`onetime`?`One Time`:`Recurring`}function Wg(t){let n=t?.$date??t;if(!n)return`-`;let r=(0,l.default)(n);return r.isValid()?r.format(e.Ln().dateFormat):`-`}function Gg(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}var Kg={date:Wg};function qg(e,t){let n=(Array.isArray(e?.source)?e.source:[e?.source].filter(Boolean)).map(e=>Gg(t,e)).find(e=>e!=null&&e!==``),r=Kg[e?.format];return r?r(n):n==null||n===``?`-`:n}function Jg(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??{};Lg(e,t.key,r.value??``,r.selectionStart,r.selectionEnd)||(t.preventDefault(),n(!0))},onChange:r=>{n(!Fg(r,e)),t(Rg(r??0,e))}}}function Yg({label:e,value:t}){return(0,c.jsxs)(`div`,{className:`fa-info-item`,children:[(0,c.jsx)(`div`,{className:`fa-info-k`,children:e}),(0,c.jsx)(`div`,{className:`fa-info-v`,children:String(t??`-`)})]})}Yg.propTypes={label:d.default.string,value:d.default.node};function Xg({label:e,sub:t,value:n,deduction:r,children:i,total:a}){return(0,c.jsxs)(`div`,{className:`fa-rate-row${a?` fa-rate-total`:``}`,children:[(0,c.jsxs)(`div`,{className:`fa-rate-label`,children:[e,t?(0,c.jsx)(`span`,{className:`fa-rate-sub`,children:t}):null]}),i??(0,c.jsx)(`div`,{className:`fa-rate-val fa-num${r?` fa-deduction`:``}`,children:n})]})}Xg.propTypes={label:d.default.node,sub:d.default.node,value:d.default.node,deduction:d.default.bool,children:d.default.node,total:d.default.bool};function Zg({label:e,value:t,hero:n,tone:r}){return(0,c.jsxs)(`div`,{className:`fa-stat${n?` fa-stat-hero`:``}${r?` fa-stat-${r}`:``}`,children:[(0,c.jsx)(`div`,{className:`fa-stat-k`,children:e}),(0,c.jsx)(`div`,{className:`fa-stat-v fa-num`,children:t})]})}Zg.propTypes={label:d.default.string,value:d.default.node,hero:d.default.bool,tone:d.default.string};function Qg({type:t,record:n,lookups:r,identity:i,referralOptions:l,onReferralChange:u,onAddReferral:d,currentUserId:f,actions:p,onClose:m,variant:h}){let g=ug(t),_=(0,a.useMemo)(()=>({rateUnit:g.rateUnit,currency:g.currency}),[g]),v=(0,a.useMemo)(()=>kg(n,r,_),[n,r,_]),y=fg(g),[b,x]=(0,a.useState)(v.proposedRate),[S,C]=(0,a.useState)(n?.engagement?.financeApproval?.referralId??n?.referral?._id??null),[w,T]=(0,a.useState)(n?.engagement?.financeApproval?.referralRate??n?.referral?.referalRate??0),[E,D]=(0,a.useState)(n?.referral?.isNewReferral?0:n?.referral?.referalRate??n?.referral?.referralRate??n?.engagement?.financeApproval?.referralRate??0),[O,k]=(0,a.useState)(n?.engagement?.financeApproval?.referralType??n?.referral?.referralType??n?.referral?.referalType??`Recurring`),[A,j]=(0,a.useState)(!1),[M,N]=(0,a.useState)(!1),[P,F]=(0,a.useState)(``),[I,L]=(0,a.useState)(!1),[R,z]=(0,a.useState)(``),[B,ee]=(0,a.useState)(!1),[V,H]=(0,a.useState)(``),te=!!g.sections.rateBreakdown?.editToggle,[U,ne]=(0,a.useState)(!1),W=!te||U,[G,re]=(0,a.useState)(!1),[ie,ae]=(0,a.useState)(!1),oe=g.sections.referral??{},se=n?.engagement?.financeApproval?.referralEnabled??n?.referralEnabled??(Number(w)>0||!!S),[ce,le]=(0,a.useState)(!!se),ue=oe.toggle===!0,de=Number(w)>0,fe=oe.show===!0?ue?ce:!0:oe.show===`ifEnabled`?ce:oe.show===`ifExists`?de:!1,pe=String(O??``).trim().toLowerCase().replace(/[\s_-]+/g,``).startsWith(`onetime`),me=y&&fe,he=me&&!pe,ge=g.rejection?.show?dg(g,n):``,K=(0,a.useMemo)(()=>jg(v,{proposedRate:g.sections.rateBreakdown?.proposed?.editable?b:void 0,includeReferral:me,deductReferral:he,referralRate:w}),[v,b,w,me,he,g]),_e=K.currency,ve=g.readOnly,ye=Number(K.proposedRate)>0,be=Number(g.margin?.minMarginPercent??20),xe=Number(K.netProposedRate)>0?Number(K.totalMargin)/Number(K.netProposedRate)*100:0,Se=K.marginPositive?xe<be?`fa-warn`:`fa-good`:`fa-bad`,Ce=K.isW2?`Candidate`:`Employer`,we=K.rateUnitShort?`/${K.rateUnitShort}`:``,Te={record:n,identity:i,inputs:v,computed:K},Ee=(g.header?.crumbFields??[]).map(e=>qg(e,Te)).filter(e=>e!==`-`&&e!==``&&e!=null).join(g.header?.crumbSeparator??` · `),De=g.sections.rateBreakdown?.proposed?.policy??Ng,Oe=g.sections.referral?.policy??De,ke=g.labels?.employerVms??{},Ae=K.employerVmsRequired&&K.employerVmsAvailable,je=!!g.sections.rateBreakdown?.proposed?.editable,Me=Number(K.clientJobRate)||0,Ne=je&&Me>0&&Number(b)>Me,Pe=g.sections.rateBreakdown?.proposed?.overClient??{},Fe=g.sections.rateBreakdown?.proposed?.overClientPolicy??`warn`,q=Ne&&Fe===`block`,Ie=Ne&&Fe===`warn`,J=Ne?Number(b)-Me:0,Le=Me>0?J/Me*100:0,Re={proposed:`${Bg(Number(b),_e)}${we}`,client:`${Bg(Me,_e)}${we}`,delta:`${Bg(J,_e)}${we}`,pct:`${Le.toFixed(+(Le<10))}%`,unit:K.rateUnitShort??``},ze=e=>ng(Pe[e],Re),Be=g.actions?.primary,Y=!!Be?.requireProposedRate&&!(Number(K.proposedRate)>0),Ve=Y?`Enter the Proposed Rate first — it drives the margin and the rate sent for approval.`:q?ze(`blockMessage`):``,He=e=>{C(e),ae(!1);let t=(l??[]).find(t=>t.value===e);if(!t?.isNewReferral&&t?.lastRate!=null&&t.lastRate!==``){let e=Number(t.lastRate)||0;T(e),D(e)}else D(0);t?.type&&k(t.type),u?.(e,t)},Ue=e=>{let t=e.target.checked;le(t),ae(t)},We=t=>(0,c.jsxs)(`div`,{children:[t,d&&(0,c.jsx)(`div`,{className:`fa-referral-dropdown-footer`,children:(0,c.jsx)(e.st,{className:`fa-referral-add-btn`,icon:(0,c.jsx)(s.UserAddOutlined,{}),onMouseDown:e=>e.preventDefault(),onClick:()=>{ae(!1),d()},children:`Add`})})]}),Ge=async(e,{skipOverClientConfirm:t=!1}={})=>{if(!e)return;if(e===g.actions.primary&&Ve){o.message.error(Ve);return}if(e===g.actions.primary&&Ie&&!t){re(!0);return}if(e.requireReason&&!P.trim()){L(!0);return}if(e.requireCategory&&!R){ee(!0);return}let n=p?.[e.api];if(!n){o.message.error(`No handler wired for "${e.api}"`);return}H(e.key);try{await n({computed:K,proposedRate:K.proposedRate,referral:fe?{referralId:S,referralRate:K.referralRate,referralType:O,referralEnabled:!0}:{referralEnabled:!1,referralRate:0},referralEnabled:ce,reason:P.trim(),category:R,rateHistory:g.persist?.rateHistory?zg(K,f):void 0})}catch(e){o.message.error(e?.message??`Action failed`)}finally{H(``)}},Ke=g.actions.primary,qe=g.actions.reject;return(0,c.jsxs)(`div`,{className:`fa-panel fa-variant-${h}`,children:[g.header?.show!==!1&&(0,c.jsx)(`div`,{className:`fa-topbar`,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`fa-crumb`,children:Ee}),(0,c.jsxs)(`div`,{className:`fa-title-row`,children:[(0,c.jsxs)(`h2`,{className:`fa-title`,children:[g.title,` — `,Hg(i?.name,n?.submission?.candidateFullName)]}),(0,c.jsxs)(`span`,{className:`fa-status-pill`,children:[(0,c.jsx)(s.ClockCircleOutlined,{}),` `,g.statusLabel]})]})]})}),g.rejection?.show&&(0,c.jsxs)(`div`,{className:`fa-rejection`,children:[(0,c.jsx)(s.CloseCircleFilled,{className:`fa-rejection-icon`}),(0,c.jsxs)(`div`,{className:`fa-rejection-body`,children:[(0,c.jsx)(`div`,{className:`fa-rejection-title`,children:g.rejection.title}),(0,c.jsx)(`div`,{className:`fa-rejection-reason${ge?``:` fa-rejection-empty`}`,children:ge||`No reason was provided.`})]})]}),g.trail?.show&&(0,c.jsx)(`div`,{className:`fa-trail`,children:g.trail.steps.map((e,t)=>(0,c.jsxs)(`span`,{className:`fa-trail-part`,children:[(0,c.jsxs)(`span`,{className:`fa-trail-step${e.key===g.trail.current?` fa-current`:``}`,children:[e.key===g.trail.current?(0,c.jsx)(s.ClockCircleOutlined,{}):(0,c.jsx)(s.CheckOutlined,{}),e.label]}),t<g.trail.steps.length-1&&(0,c.jsx)(`span`,{className:`fa-trail-sep`,children:`→`})]},e.key))}),g.sections.jobClient?.show&&(0,c.jsxs)(`section`,{className:`fa-card`,children:[(0,c.jsx)(`div`,{className:`fa-card-head`,children:(0,c.jsx)(`h3`,{children:g.sections.jobClient.title})}),(0,c.jsx)(`div`,{className:`fa-card-body`,children:(0,c.jsx)(`div`,{className:`fa-info-grid`,children:(g.sections.jobClient.items??[]).map(e=>(0,c.jsx)(Yg,{label:e.label,value:qg(e,Te)},e.key))})})]}),g.sections.clientJobRate?.show&&(0,c.jsxs)(`section`,{className:`fa-card`,children:[(0,c.jsx)(`div`,{className:`fa-card-head`,children:(0,c.jsx)(`h3`,{children:`Client Job Rate`})}),(0,c.jsx)(`div`,{className:`fa-card-body`,children:(0,c.jsxs)(`div`,{className:`fa-strip`,children:[(0,c.jsxs)(`div`,{className:`fa-strip-item`,children:[(0,c.jsx)(`span`,{className:`fa-strip-k`,children:`Client Job Rate`}),(0,c.jsxs)(`span`,{className:`fa-strip-v fa-num`,children:[Bg(K.clientJobRate,_e),we]})]}),(0,c.jsxs)(`span`,{className:`fa-strip-op fa-num`,children:[`− `,K.clientVmsPercent,`% VMS`,(0,c.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Ug(K.clientVmsPercentageType)})]}),(0,c.jsx)(`span`,{className:`fa-strip-eq`,children:`=`}),(0,c.jsxs)(`div`,{className:`fa-strip-item`,children:[(0,c.jsx)(`span`,{className:`fa-strip-k`,children:`Net Client Rate`}),(0,c.jsxs)(`span`,{className:`fa-strip-v fa-num`,style:{color:`var(--color-brand, #0053a5)`},children:[Bg(K.netClientRate,_e),we]})]}),g.sections.clientJobRate.note&&(0,c.jsxs)(`div`,{className:`fa-strip-note`,children:[`For context only — the client-side rate doesn't feed into the `,g.margin.label,` below.`]})]})})]}),g.sections.rateBreakdown?.show&&(0,c.jsxs)(`section`,{className:`fa-card`,children:[(0,c.jsxs)(`div`,{className:`fa-card-head`,children:[(0,c.jsx)(`h3`,{children:`Rate Breakdown`}),g.sections.rateBreakdown.finalBadge&&(0,c.jsxs)(`span`,{className:`fa-final-badge`,children:[(0,c.jsx)(s.LockOutlined,{}),` Final`]}),te&&!ve&&!U&&(0,c.jsx)(e.st,{className:`fa-rate-edit-btn`,size:`small`,onClick:()=>ne(!0),children:`Edit`})]}),(0,c.jsxs)(`div`,{className:`fa-card-body`,children:[(0,c.jsxs)(`div`,{className:`fa-rate-grid`,children:[(0,c.jsxs)(`div`,{className:`fa-rate-panel fa-employer`,children:[(0,c.jsxs)(`div`,{className:`fa-panel-head`,children:[(0,c.jsx)(`span`,{className:`fa-dot`}),Ce,` Rate`]}),(0,c.jsxs)(`div`,{className:`fa-rate-rows`,children:[(0,c.jsx)(Xg,{label:`${Ce} Rate`,sub:`as submitted by recruiter`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.employerRate,_e),` `,(0,c.jsx)(`span`,{className:`fa-unit`,children:we})]})}),K.isW2&&(0,c.jsx)(Xg,{label:`Employer Location`,sub:`used to determine location tax`,children:(0,c.jsx)(`div`,{className:`fa-rate-val`,children:Hg(i?.employerLocation,n?.submission?.city,n?.job?.jobLocation)})}),!K.isW2&&!Ae?(0,c.jsx)(Xg,{label:(0,c.jsx)(`span`,{className:`fa-locked-label`,children:ke.required}),sub:K.employerVmsAvailable?ke.notRequiredSub:ke.unavailableSub,value:(0,c.jsx)(`span`,{className:`fa-vms-none`,children:K.employerVmsAvailable?ke.notRequired:ke.unavailable})}):(0,c.jsx)(Xg,{label:K.isW2?K.employerDeductionLabel:(0,c.jsxs)(`span`,{className:`fa-locked-label`,children:[K.employerDeductionLabel,(0,c.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Ug(K.employerVmsType)})]}),sub:`${K.employerDeductionPercent}% of employer rate`,value:`−${Bg(K.employerDeduction,_e).replace(`−`,``)}`,deduction:!0}),(0,c.jsx)(Xg,{total:!0,label:`Net ${Ce} Rate`,value:(0,c.jsx)(`span`,{style:{color:`var(--color-purple, #7c3aed)`},children:Bg(K.netEmployerRate,_e)})})]})]}),(0,c.jsxs)(`div`,{className:`fa-rate-panel fa-client`,children:[(0,c.jsxs)(`div`,{className:`fa-panel-head`,children:[(0,c.jsx)(`span`,{className:`fa-dot`}),`Proposed Rate`]}),(0,c.jsxs)(`div`,{className:`fa-rate-rows`,children:[g.sections.rateBreakdown.proposed.editable&&W?(0,c.jsxs)(`div`,{className:`fa-rate-row fa-editable`,children:[(0,c.jsxs)(`div`,{className:`fa-editable-head`,children:[(0,c.jsxs)(`span`,{className:`fa-editable-label`,children:[`Proposed Rate`,(0,c.jsx)(`span`,{className:`fa-edit-badge`,children:`Editable`})]}),(0,c.jsx)(o.InputNumber,{className:`fa-rate-input`,...Jg(De,{onValue:x,onError:j}),value:b,prefix:_e,controls:!1,status:A||q?`error`:Ie?`warning`:``})]}),(0,c.jsx)(`div`,{className:`fa-editable-sub`,children:`rate we ask the client for`}),A&&(0,c.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,De.message]}),Y&&(0,c.jsxs)(`div`,{className:`fa-reason-error`,children:[`! Enter the proposed rate to enable `,Be?.label??`approval`,`.`]}),q&&(0,c.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,ze(`blockMessage`)]}),g.rejection?.show&&(0,c.jsxs)(`div`,{className:`fa-last-rejected`,children:[`Last rejected at `,(0,c.jsxs)(`b`,{children:[Bg(v.proposedRate,_e),we]})]})]}):(0,c.jsx)(Xg,{label:(0,c.jsxs)(`span`,{className:`fa-locked-label`,children:[`Proposed Rate`,g.sections.rateBreakdown.proposed.locked&&(0,c.jsxs)(`span`,{className:`fa-locked-badge`,children:[(0,c.jsx)(s.LockOutlined,{}),` Locked`]})]}),sub:`approved at finance review`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.proposedRate,_e),` `,(0,c.jsx)(`span`,{className:`fa-unit`,children:we})]})}),(0,c.jsx)(Xg,{label:(0,c.jsxs)(`span`,{className:`fa-locked-label`,children:[`Discount (VMS)`,(0,c.jsx)(`span`,{className:`fa-type-chip fa-vms-chip`,children:Ug(K.clientVmsPercentageType)})]}),sub:`${K.clientVmsPercent}% of proposed rate`,value:`−${Bg(K.discountVms,_e).replace(`−`,``)}`,deduction:!0}),(0,c.jsx)(Xg,{total:!0,label:`Net Proposed Rate`,value:(0,c.jsx)(`span`,{style:{color:`var(--color-brand, #0053a5)`},children:Bg(K.netProposedRate,_e)})})]})]})]}),ue&&!ve&&W&&(0,c.jsxs)(`div`,{className:`fa-referral-toggle`,children:[(0,c.jsx)(o.Checkbox,{checked:ce,onChange:Ue,children:(0,c.jsx)(`span`,{className:`fa-rt-title`,children:oe.toggleLabel??`Add Referral`})}),(0,c.jsx)(`div`,{className:`fa-rt-hint`,children:oe.toggleHint})]})]})]}),fe&&(0,c.jsxs)(`section`,{className:`fa-card fa-referral-card`,children:[(0,c.jsxs)(`div`,{className:`fa-card-head`,children:[(0,c.jsxs)(`h3`,{children:[(0,c.jsx)(`span`,{className:`fa-dot fa-dot-warning`}),`Referral`]}),oe.mode===`print`&&oe.typeChip&&(0,c.jsx)(`span`,{className:`fa-type-chip`,children:O})]}),(0,c.jsx)(`div`,{className:`fa-card-body`,children:oe.mode===`select`&&W?(0,c.jsxs)(`div`,{className:`fa-referral-fields`,children:[(0,c.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,c.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-company`,children:`Referral Company`}),(0,c.jsx)(o.Select,{id:`fa-referral-company`,className:`fa-referral-select`,placeholder:`Select a referral`,open:ie,value:S??void 0,onChange:He,options:l??[],showSearch:!0,optionFilterProp:`label`,onDropdownVisibleChange:ae,onOpenChange:ae,popupRender:We,dropdownRender:We})]}),(0,c.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,c.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-rate`,children:`Referral Rate`}),(0,c.jsx)(o.InputNumber,{id:`fa-referral-rate`,className:`fa-referral-rate-input`,...Jg(Oe,{onValue:T,onError:N}),value:w,prefix:_e,controls:!1,disabled:!S,status:M?`error`:``}),M&&(0,c.jsxs)(`div`,{className:`fa-reason-error`,children:[`! `,Oe.message]})]}),(0,c.jsxs)(`div`,{className:`fa-referral-field`,children:[(0,c.jsx)(`label`,{className:`fa-rf-k`,htmlFor:`fa-referral-type`,children:`Referral Type`}),(0,c.jsx)(o.Select,{id:`fa-referral-type`,className:`fa-referral-type`,value:O,onChange:k,disabled:!S,options:[{value:`Recurring`,label:`Recurring — every pay cycle`},{value:`One-time`,label:`One-time payout`}]})]}),S&&(0,c.jsx)(`div`,{className:`fa-referral-note`,children:E?(0,c.jsxs)(c.Fragment,{children:[`Last referral rate paid to this company:`,` `,(0,c.jsx)(`b`,{children:Bg(E,_e)})]}):(0,c.jsx)(`b`,{children:`New referral`})})]}):(0,c.jsxs)(`div`,{className:`fa-rate-rows fa-print-rows`,children:[(0,c.jsx)(Xg,{label:`Referral Name`,sub:`added during onboarding`,children:(0,c.jsx)(`div`,{className:`fa-rate-val`,children:Hg(n?.referral?.referalCompanyName,i?.referralName)})}),(0,c.jsx)(Xg,{label:`Referral Rate`,sub:pe?`one-time payout — excluded from recurring margin`:`deducted every pay cycle`,value:pe?Bg(w,_e):`−${Bg(w,_e).replace(`−`,``)}${we?` ${we}`:``}`,deduction:!pe})]})})]}),ye&&(0,c.jsxs)(`div`,{className:`fa-outcome ${Se}`,children:[(0,c.jsxs)(`div`,{className:`fa-outcome-label`,children:[(0,c.jsx)(`div`,{className:`fa-outcome-icon`,children:Se===`fa-good`?(0,c.jsx)(s.RiseOutlined,{}):(0,c.jsx)(s.WarningOutlined,{})}),(0,c.jsx)(`div`,{className:`fa-outcome-t`,children:g.margin.label})]}),(0,c.jsxs)(`div`,{className:`fa-outcome-stats`,children:[(0,c.jsx)(Zg,{label:`Net Proposed Rate`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.netProposedRate,_e),(0,c.jsx)(`span`,{className:`fa-u`,children:we})]})}),(0,c.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,c.jsx)(Zg,{label:`Net ${Ce} Rate`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.netEmployerRate,_e),(0,c.jsx)(`span`,{className:`fa-u`,children:we})]})}),he&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`span`,{className:`fa-stat-arrow`,children:`−`}),(0,c.jsx)(Zg,{label:`Referral Rate`,tone:`referral`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.referralRate,_e),(0,c.jsx)(`span`,{className:`fa-u`,children:we})]})})]}),(0,c.jsx)(Zg,{hero:!0,label:`Margin`,value:(0,c.jsxs)(c.Fragment,{children:[Bg(K.totalMargin,_e),(0,c.jsx)(`span`,{className:`fa-u`,children:we})]})})]})]}),ye&&(0,c.jsxs)(`div`,{className:`fa-margin-note ${Se}`,children:[(0,c.jsxs)(`span`,{className:`fa-margin-note-pct`,children:[xe.toFixed(1),`%`]}),(0,c.jsx)(`span`,{className:`fa-margin-note-text`,children:Se===`fa-bad`?(0,c.jsxs)(c.Fragment,{children:[`This submission is running at a `,(0,c.jsx)(`b`,{children:`loss`}),`. Adjust the proposed or employer rate before approving.`]}):Se===`fa-warn`?(0,c.jsxs)(c.Fragment,{children:[`Profit margin is `,(0,c.jsxs)(`b`,{children:[`below the `,be,`% target`]}),`. Consider a higher proposed rate before approving.`]}):(0,c.jsxs)(c.Fragment,{children:[`Healthy margin — at or above the `,be,`% target.`]})})]}),qe?.requireReason&&(0,c.jsxs)(`div`,{className:`fa-reason`,children:[qe.requireCategory&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`label`,{className:`fa-reason-label`,htmlFor:`fa-rejection-category`,children:[`Return To `,(0,c.jsx)(`span`,{children:`(required to reject)`})]}),(0,c.jsx)(o.Select,{id:`fa-rejection-category`,placeholder:`Select where to return this rejection`,value:R||void 0,status:B?`error`:``,options:[{value:`submission`,label:`Submission`},{value:`onboarding`,label:`Onboarding`}],onChange:e=>{z(e),ee(!1)},style:{width:`100%`,marginBottom:16}}),B&&(0,c.jsx)(`div`,{className:`fa-reason-error`,children:`! Select where to return the rejection.`})]}),(0,c.jsxs)(`label`,{className:`fa-reason-label`,htmlFor:`fa-reason`,children:[`Comments `,(0,c.jsx)(`span`,{children:`(required to reject)`})]}),(0,c.jsx)(Vg,{id:`fa-reason`,rows:3,maxLength:500,showCount:!0,value:P,status:I?`error`:``,placeholder:`Enter your comments here…`,onChange:e=>{F(e.target.value),e.target.value.trim()&&L(!1)}}),I&&(0,c.jsx)(`div`,{className:`fa-reason-error`,children:`! Comments are required when rejecting.`})]}),Ie&&(0,c.jsxs)(`div`,{className:`fa-rate-warning`,role:`status`,children:[(0,c.jsxs)(`div`,{className:`fa-rate-warning-head`,children:[(0,c.jsx)(s.WarningOutlined,{className:`fa-rate-warning-icon`}),(0,c.jsx)(`h4`,{children:ze(`title`)})]}),(0,c.jsxs)(`div`,{className:`fa-rate-warning-grid`,children:[(0,c.jsxs)(`div`,{className:`fa-rate-warning-cell`,children:[(0,c.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Client Job Rate`}),(0,c.jsx)(`span`,{className:`fa-rate-warning-val`,children:Re.client})]}),(0,c.jsxs)(`div`,{className:`fa-rate-warning-cell`,children:[(0,c.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Proposed Rate`}),(0,c.jsx)(`span`,{className:`fa-rate-warning-val`,children:Re.proposed})]}),(0,c.jsxs)(`div`,{className:`fa-rate-warning-cell fa-rate-warning-delta`,children:[(0,c.jsx)(`span`,{className:`fa-rate-warning-key`,children:`Over by`}),(0,c.jsxs)(`span`,{className:`fa-rate-warning-val`,children:[Re.delta,` `,(0,c.jsxs)(`small`,{children:[`(`,Re.pct,`)`]})]})]})]}),ze(`body`)&&(0,c.jsx)(`p`,{className:`fa-rate-warning-body`,children:ze(`body`)}),(0,c.jsxs)(`p`,{className:`fa-rate-warning-margin`,children:[`Resulting margin:`,` `,(0,c.jsxs)(`b`,{className:Se,children:[Bg(K.totalMargin,_e),we,Number(K.netProposedRate)>0&&(0,c.jsxs)(c.Fragment,{children:[` (`,xe.toFixed(1),`%)`]})]})]})]}),(0,c.jsx)(o.Modal,{open:G,title:ze(`confirmTitle`),okText:ze(`confirmOk`)||`Approve anyway`,cancelText:ze(`confirmCancel`)||`Go back`,okButtonProps:{danger:!0},onCancel:()=>re(!1),onOk:()=>{re(!1),Ge(g.actions.primary,{skipOverClientConfirm:!0})},children:(0,c.jsx)(`p`,{children:ze(`confirmBody`)})}),g.actions?.show!==!1&&(Ke||qe)&&(0,c.jsxs)(`div`,{className:`fa-action-bar`,children:[(0,c.jsx)(`div`,{className:`fa-action-note`,children:Y?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(`b`,{children:`Proposed rate required`}),` — enter it above to enable `,Ke?.label??`approval`,`.`]}):t===`cfo`?(0,c.jsxs)(c.Fragment,{children:[`Approving finalizes payroll at `,(0,c.jsxs)(`b`,{children:[Bg(K.netProposedRate,_e),we]}),fe?(0,c.jsxs)(c.Fragment,{children:[` including the `,String(O).toLowerCase(),` `,(0,c.jsxs)(`b`,{children:[Bg(w,_e),we]}),` referral`]}):null,`.`]}):(0,c.jsxs)(c.Fragment,{children:[`Approving locks the `,(0,c.jsxs)(`b`,{children:[Bg(K.netProposedRate,_e),we]}),` proposed rate and moves this forward.`]})}),(0,c.jsxs)(`div`,{className:`fa-actions`,children:[m&&(0,c.jsx)(e.st,{className:`fa-btn-ghost`,onClick:m,children:`Cancel`}),qe&&(0,c.jsx)(e.st,{danger:!0,loading:V===qe.key,disabled:!!V,onClick:()=>Ge(qe),children:qe.label}),Ke&&(0,c.jsx)(o.Tooltip,{title:Ve||``,placement:`top`,children:(0,c.jsx)(`span`,{className:`fa-btn-tip`,children:(0,c.jsx)(e.st,{variant:`primary`,icon:(0,c.jsx)(s.CheckOutlined,{}),loading:V===Ke.key,disabled:!!V||!!Ve,onClick:()=>Ge(Ke),children:Ke.label})})})]})]})]})}Qg.propTypes={type:d.default.string.isRequired,record:d.default.object,lookups:d.default.object,identity:d.default.object,referralOptions:d.default.array,onReferralChange:d.default.func,onAddReferral:d.default.func,currentUserId:d.default.oneOfType([d.default.number,d.default.string]),actions:d.default.object,onClose:d.default.func,variant:d.default.oneOf([`popup`,`page`])},Qg.defaultProps={record:{},lookups:{},identity:{},referralOptions:[],variant:`page`};var $g=e=>String(e??``).trim().toLowerCase();function e_(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 t_=t=>e._n(t,300,0).then(e_).catch(()=>[]),n_=e=>t=>e&&Sg(t._id??t.id)===String(e),r_=(e,n)=>n?t.a(t.b,`/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({}),i_=e=>e==null||e===``?Promise.resolve(null):t.a(t.b,`/get-detailed-view?userId=${encodeURIComponent(e)}`).then(e=>e?.data??e??null).catch(()=>null);function a_(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 o_(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 s_(e,t){if(!t)return{};let n=await c_(e,t).catch(()=>({}));return{...wg(Cg(n.groups??[])),...n.recordMeta??{}}}async function c_(e,t){let{fetchFormGroupsPayload:n}=await Promise.resolve().then(()=>require("./addFormApi-DBFdfv0-.cjs")).then(e=>e.t),r=await n({module:e,id:t});return r?.data??r??{}}async function l_(t,n={}){let r=await c_(`submission`,t).catch(()=>({})),i=r.groups??[],a=r.recordMeta??{},o=Cg(i),s=Tg(i),c=Sg(a.clientId??o.clientId??n.clientId),l=Sg(a.jobId??o.jobId??n.jobId),u=Sg(s.employerId),d=a.createdBy??o.createdBy??n.createdBy,f=s.locationId??s.location,[p,m,h,g,_,v,y,b,x]=await Promise.all([l?e.un(`jobs`,l).catch(()=>null):Promise.resolve(null),t_(`jobs`),t_(`clients`),t_(`employers`),t_(`locations`),t_(`workforceEngagements`),s_(`jobs`,l),i_(d),r_(`submissions`,t)]),S=p?.data??p??{},C=S.record??S.item??S??{},w=m.find(n_(l))??{},T={...w,...C,...y};T.jobPayDetails={...o_(w),...o_(C),...o_(y)};let E=(Array.isArray(v)?v:[]).find(e=>Sg(e.submissionId)===String(t)),D=Sg(T.clientId)||Sg(E?.clientId)||c,O=o.clientName??n.clientName??T.clientName,k=O?h.filter(e=>$g(e.clientName)===$g(O)):[],A=h.find(n_(D))??k[0]??{},j=await s_(`clients`,Sg(A._id??A.id)||D),M={...A,...j},N=g.find(n_(u))??{},P=_.find(n_(f))??_.find(e=>$g(e.name)===$g(f))??{};return{record:{submission:{...x.signatureEmail?{signatureEmail:x.signatureEmail}:{},...n,...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||n.signatureEmail||a_(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 u_(e={}){return e.referalCompanyName??e.referralCompanyName??e.referalName??e.referralName??e.vendorName??e.employerName??e.name??e.companyName??``}function d_(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 f_(e){return String(e??``).trim().toLowerCase().replace(/\s+/g,` `)}function p_(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(Sg).filter(Boolean)}function m_(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[u_(e),u_(e.referral??{}),u_(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(f_).filter(Boolean)}function h_(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 g_(e,{pageSize:n=100,maxPages:r=20}={}){let i=[];for(let a=1;a<=r;a+=1){let r=await t.a(t.b,`/module/list?${new URLSearchParams({module:e,page:String(a),limit:String(n)}).toString()}`),o=r?.data??r??{},s=Array.isArray(o?.data)?o.data:Array.isArray(o?.rows)?o.rows:Array.isArray(o)?o:[];i.push(...s);let c=Number(o?.total??0);if(s.length<n||c>0&&i.length>=c)break}return i}function __(e={},t=[]){let n=new Set(p_(e)),r=new Set(m_(e));return!n.size&&!r.size?0:t.filter(e=>p_(e).some(e=>n.has(e))||m_(e).some(e=>r.has(e))).map(e=>({rate:d_(e),date:h_(e)})).filter(e=>e.rate>0).sort((e,t)=>t.date-e.date)[0]?.rate??0}async function v_(){let e=(await t_(`referrals`)).filter(e=>!e?.isDeleted&&u_(e)),t=(await Promise.all([`submissions`,`workforceFinanceApprovals`,`workforceEngagements`,`onboarding`,`candidateMovements`].map(e=>g_(e).catch(()=>[])))).flat();return(await Promise.all(e.map(async e=>{let n=__(e,t),r=d_(e),i=n>0?n:r;return{value:Sg(e._id??e.id),label:u_(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 y_({title:e=`Proof`,files:t=[],onPreview:n,emptyText:r=`No files uploaded`,className:i}){return t.length?(0,c.jsx)(o.Card,{size:`small`,title:e,className:`znx-file-list__card ${i??``}`.trim(),children:t.map((e,t)=>(0,c.jsxs)(`div`,{className:`znx-file-list__chip`,children:[(0,c.jsx)(`span`,{className:`znx-file-list__name`,title:e.name,children:e.name||`File`}),(0,c.jsxs)(`span`,{className:`znx-file-list__actions`,children:[n&&(0,c.jsx)(o.Tooltip,{title:`Preview`,children:(0,c.jsx)(`button`,{type:`button`,className:`znx-file-list__btn`,onClick:()=>n(t),"aria-label":`Preview ${e.name||`file`}`,children:(0,c.jsx)(s.EyeOutlined,{})})}),(0,c.jsx)(o.Tooltip,{title:`Download`,children:(0,c.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,c.jsx)(s.DownloadOutlined,{})})})]})]},e.url??t))}):(0,c.jsx)(o.Card,{size:`small`,className:`znx-file-list__empty ${i??``}`.trim(),children:(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:r})})}function b_({moduleName:t,recordId:n,cancelPath:r,onSuccess:s,fieldNameMap:c={},onFileUpload:d=null}){let f=(0,u.useNavigate)(),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)({}),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(``),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(``);(0,a.useEffect)(()=>{if(!t||!n)return;let r=!1;async function a(){try{v(!0),b(``);let[a,o]=await Promise.all([i.r({module:t,id:n}),e.fn(t,n)]);if(r)return;m(Array.isArray(a)?a:[]),g(o??{})}catch(e){r||b(e?.message||`Failed to load record`)}finally{r||v(!1)}}return a(),()=>{r=!0}},[t,n]);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(l.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(i,a){try{if(S(!0),w(``),d){let e=a.flatMap(e=>e.fields??[]).filter(e=>e.type===`file`);for(let t of e){let e=i[t.field];if(!Array.isArray(e))continue;let r=e.filter(e=>e.originFileObj instanceof File);await Promise.all(r.map(e=>d(t.field,e.originFileObj,n)))}}await e.pn(t,n,T(i,a)),o.message.success(`${t} updated successfully`),s?s():e.j(f,{cancelPath:r})}catch(e){w(e?.message||`Failed to save changes`),o.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 x_=`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`,S_=`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`,C_=`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`,w_=`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`,T_=`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`,E_=`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`,D_=`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`,O_=`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`,k_=`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`,A_=`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`,j_=`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`,M_=`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`,N_=`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`,P_=`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`,F_=`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`,I_=`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`,L_=`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`,R_=`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`,z_=`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`,B_=`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`,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='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`,H_=`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`,U_=`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`,W_=`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 G_(e){return!e||typeof e!=`string`?`User`:e.split(` `).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function K_(e){let t=(e||`User`).split(` `).filter(Boolean);return`${t[0]?.charAt(0)||`U`}${t.length>1?t.at(-1)?.charAt(0):``}`.toUpperCase()}function q_(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 J_({leftOffset:n}){let r=(0,u.useNavigate)(),i=(0,u.useLocation)(),a=localStorage.getItem(`companyName`)||`Zinnext`,l=localStorage.getItem(`userName`)||localStorage.getItem(`preferred_Username`)||`User`,d=localStorage.getItem(`preferred_Username`)||l,f=localStorage.getItem(`roleId`)||``,p=G_(l),m=K_(p);function h(){t.m(),r(`/login`,{replace:!0})}let g=[{key:`profile-name`,label:(0,c.jsxs)(`div`,{className:`app-layout-profile-summary`,children:[(0,c.jsx)(o.Avatar,{size:42,style:{backgroundColor:q_(p)},children:m}),(0,c.jsxs)(`div`,{className:`app-layout-profile-copy`,children:[(0,c.jsx)(e.Cn,{variant:`body-strong`,truncate:!0,className:`app-layout-profile-name`,children:p}),f&&(0,c.jsx)(e.Cn,{variant:`caption`,color:`secondary`,className:`app-layout-profile-role`,children:f})]})]}),disabled:!0},{type:`divider`},{key:`dashboard`,label:(0,c.jsxs)(u.Link,{to:`/dashboard`,className:`app-layout-menu-link`,children:[(0,c.jsx)(s.AppstoreOutlined,{}),`Dashboard`]})},{key:`my-profile`,label:(0,c.jsxs)(u.Link,{to:`/my-profile`,className:`app-layout-menu-link`,children:[(0,c.jsx)(s.UserOutlined,{}),`My Profile`]})},{type:`divider`},{key:`logout`,label:(0,c.jsxs)(`span`,{className:`app-layout-menu-link app-layout-menu-danger`,children:[(0,c.jsx)(s.LogoutOutlined,{}),`Logout`]}),onClick:h}];return(0,c.jsxs)(`header`,{className:`app-layout-header`,style:{left:n},children:[(0,c.jsx)(`div`,{className:`app-layout-company`,children:(0,c.jsx)(e.Cn,{variant:`body-strong`,truncate:!0,className:`app-layout-company-name`,children:a})}),(0,c.jsxs)(`div`,{className:`app-layout-header-actions`,children:[(0,c.jsx)(o.Tooltip,{title:`Inbox`,children:(0,c.jsx)(u.Link,{to:`/inbox`,className:i.pathname===`/inbox`?`app-layout-icon-btn is-active`:`app-layout-icon-btn`,"aria-label":`Inbox`,children:(0,c.jsx)(`img`,{src:H_,alt:``,"aria-hidden":`true`,className:`app-layout-icon-img`})})}),(0,c.jsx)(`div`,{className:`app-layout-header-divider`}),(0,c.jsxs)(`div`,{className:`app-layout-user`,children:[(0,c.jsx)(o.Avatar,{size:30,style:{backgroundColor:q_(p)},children:m}),(0,c.jsx)(e.Cn,{variant:`label`,truncate:!0,className:`app-layout-user-name`,children:d}),(0,c.jsx)(o.Dropdown,{menu:{items:g},trigger:[`click`],placement:`bottomRight`,overlayClassName:`app-layout-user-dropdown`,children:(0,c.jsx)(`button`,{type:`button`,className:`app-layout-dropdown-btn`,"aria-label":`Open user menu`,children:(0,c.jsx)(s.DownOutlined,{})})})]})]})]})}var{Sider:Y_}=o.Layout,X_={Dashboard:j_,Jobs:O_,Candidates:k_,Submissions:R_,Network:P_,ClientManagement:A_,Clients:A_,clients:A_,EmployerManagement:M_,Employers:M_,employers:M_,ReferralManagement:M_,Referral:M_,Referrals:M_,referrals:M_,Scheduler:L_,Admin:E_,Reports:F_,Settings:I_,Help:N_,onboarding:z_,Onboarding:z_,assignments:D_,Assignments:D_,assignment:D_,Assignment:D_,timesheet:B_,Timesheet:B_,billing:U_,Billing:U_,payroll:W_,Payroll:W_,campaign:V_,Campaign:V_,addTestCase:F_,viewTestCase:L_,manageModules:I_,bulkUpload:s.UploadOutlined,"bulk-upload":s.UploadOutlined};function Z_(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 Q_(e){let t=e.replace(/^\/+/,``);if(!t)return[`dashboard`];let n=t.split(`/`);return[t,n[0],n.at(-1)].filter(Boolean)}function $_({icon:e,itemKey:t}){let n=t===`bulk-upload`?s.UploadOutlined:t===`assignments`?D_:t===`employers`?M_:X_[e];return n?typeof n==`string`?(0,c.jsx)(`img`,{src:n,alt:``,className:`app-sidebar-menu-icon`,"aria-hidden":`true`}):(0,c.jsx)(n,{className:`app-sidebar-menu-icon`,"aria-hidden":`true`}):null}function ev(e){return e.map(e=>({key:e.key,icon:(0,c.jsx)($_,{icon:e.icon,itemKey:e.key}),label:e.label,disabled:e.status===`inactive`,children:Array.isArray(e.children)?ev(e.children):void 0}))}function tv(e){let t;try{t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)}catch{return e}let n=Object.entries(t).reduce((e,[t,n])=>({...e,[String(t).trim().toLowerCase()]:n}),{}),r=Object.keys(n),i=e=>n[e]??n[r.find(t=>t===`${e}s`||`${t}s`===e)??``];return e.flatMap(e=>{let t=[e.key,e.label].map(e=>String(e??``).trim().toLowerCase()).map(i).find(Boolean)?.view;if(t!=null&&![!0,1,`1`].includes(t))return[];let n=Array.isArray(e.children)?tv(e.children):void 0;return[{...e,children:n}]})}function nv(e){return new Set(e.flatMap(e=>[String(e?.key??``).trim().toLowerCase(),...Array.isArray(e?.children)?[...nv(e.children)]:[]]).filter(Boolean))}function rv(e){return[!0,1,`1`].includes(e)}function iv(e){return String(e).split(/[\s_\-/]+/).filter(Boolean).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}function av(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=nv(e),r=Object.entries(t).flatMap(([e,t])=>{let r=String(e).trim().toLowerCase();return!r||r.includes(`/`)||n.has(r)||!rv(t?.view)?[]:(n.add(r),[{key:r,icon:r,label:iv(r),status:`active`}])});return[...e,...r]}function ov(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 sv(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.client??e?.clients;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function cv(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.employers??e?.employer;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function lv(e){if(e.some(e=>e.key===`clients`||e.key===`client`)||!sv())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 uv(e){let t=e.some(e=>e.key===`employers`||e.key===`employer`),n=e.some(e=>e.key===`clients`||e.key===`client`),r=cv()||n||sv();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 dv(){try{let e=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`),t=e?.referrals??e?.referral;return!t||typeof t!=`object`?!1:[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function fv(e){let t=e.some(e=>e.key===`referrals`||e.key===`referral`),n=e.some(e=>e.key===`employers`||e.key===`employer`),r=dv()||cv()||n||sv();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 pv(e){try{let t=JSON.parse(localStorage.getItem(`menuPermission`)||`{}`)?.[e];return t&&[`view`,`add`,`edit`].some(e=>Number(t[e])===1||t[e]===!0||t[e]===`1`)}catch{return!1}}function mv(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)&&pv(e)&&(t.splice(r,0,{key:e,icon:e,label:n,status:`active`}),r+=1);return t}function hv(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:hv(e.children)}:e)}function gv({collapsed:e,onToggle:t}){let n=(0,u.useNavigate)(),r=(0,u.useLocation)(),[i,s]=(0,a.useState)([]),l=(0,a.useMemo)(()=>Q_(r.pathname),[r.pathname]);(0,a.useEffect)(()=>{l.length>0&&localStorage.setItem(`activeKey`,l[0])},[l]);let d=(0,a.useMemo)(()=>ev(tv(av(mv(ov(fv(uv(lv(hv(Z_(`menu`)))))))))),[]);function f(){e||s([]),t()}function p({key:e}){n(`/${e}`)}return(0,c.jsx)(Y_,{trigger:null,collapsible:!0,collapsed:e,width:200,collapsedWidth:60,className:`app-sidebar`,children:(0,c.jsxs)(`div`,{className:`app-sidebar-panel`,children:[(0,c.jsx)(`div`,{className:`app-sidebar-brand`,children:(0,c.jsxs)(`div`,{className:`app-sidebar-logo`,children:[(0,c.jsx)(`img`,{src:C_,alt:``,className:`app-sidebar-logo-icon`}),(0,c.jsx)(`img`,{src:w_,alt:`Zinnext`,className:`app-sidebar-logo-text`})]})}),(0,c.jsx)(`button`,{type:`button`,className:`app-sidebar-toggle`,onClick:f,"aria-label":e?`Expand sidebar`:`Collapse sidebar`,children:(0,c.jsx)(`img`,{src:T_,alt:``,"aria-hidden":`true`})}),(0,c.jsx)(`div`,{className:`app-sidebar-body`,children:(0,c.jsx)(o.Menu,{mode:`inline`,theme:`dark`,selectedKeys:l,openKeys:e?[]:i,items:d,onClick:p,onOpenChange:s,className:`app-sidebar-menu`})})]})})}var _v=`You're not logged in`,vv=`You haven't logged into this session. Please login to access the data.`;function yv(){try{return!!t.l()}catch{return!1}}function bv({children:e,title:t=_v,message:n=vv,loginPath:r=`/login`,loginLabel:i=`Go to Login`,onLogin:l,fallback:u}){let[d,f]=(0,a.useState)(yv);return(0,a.useEffect)(()=>{let e=()=>f(yv());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,c.jsx)(`div`,{className:`ct-auth-guard`,children:(0,c.jsx)(`div`,{className:`ct-auth-guard__card`,children:(0,c.jsx)(o.Result,{status:`403`,icon:(0,c.jsx)(s.LockOutlined,{className:`ct-auth-guard__icon`}),title:t,subTitle:n,extra:(0,c.jsx)(o.Button,{type:`primary`,size:`large`,onClick:()=>{if(typeof l==`function`){l();return}typeof window<`u`&&window.location.assign(r)},children:i})})})}):u}bv.propTypes={children:d.default.node,title:d.default.node,message:d.default.node,loginPath:d.default.string,loginLabel:d.default.node,onLogin:d.default.func,fallback:d.default.node};var xv=60;function Sv({children:e}){let[t,n]=(0,a.useState)(!0);return(0,c.jsxs)(`div`,{className:`app-layout-shell`,children:[(0,c.jsx)(gv,{collapsed:t,onToggle:()=>n(e=>!e)}),(0,c.jsx)(J_,{leftOffset:60}),(0,c.jsx)(`main`,{className:`app-layout-main`,style:{marginLeft:60,paddingTop:xv},children:(0,c.jsx)(`div`,{className:`app-layout-content`,children:(0,c.jsx)(bv,{children:e??(0,c.jsx)(u.Outlet,{})})})})]})}function Cv({onLogin:n,defaultRedirectPath:r=`/`}){let[i,l]=(0,a.useState)(!1),[d,f]=(0,a.useState)(``),p=(0,u.useNavigate)(),m=(0,u.useLocation)(),h=m.state?.from?.pathname||r,g=new URLSearchParams(m.search).get(`session_expired`)===`1`;async function _(e){f(``),l(!0);try{let r=await t.p({email:e.email,user_pwd:e.user_pwd});if(n?.(r),t.f()){p(`/select-project`,{replace:!0});return}p(h,{replace:!0})}catch(e){f(e.message||`Unable to login. Please check your credentials.`)}finally{l(!1)}}return(0,c.jsxs)(`div`,{className:`auth-login-page`,children:[(0,c.jsx)(`section`,{className:`auth-login-bg`,style:{background:e.Tn.brand},children:(0,c.jsxs)(`div`,{className:`auth-login-static-section`,children:[(0,c.jsx)(`div`,{children:(0,c.jsx)(`img`,{src:x_,alt:``,className:`auth-login-img-one`})}),(0,c.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,c.jsx)(`img`,{src:S_,alt:``,className:`auth-login-img-two`})}),(0,c.jsx)(e.Cn,{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,c.jsx)(`section`,{className:`auth-login-form-layout`,children:(0,c.jsx)(`div`,{className:`auth-login-form-container`,children:(0,c.jsxs)(`div`,{className:`auth-login-form-shell`,children:[g&&(0,c.jsx)(`div`,{className:`auth-login-session-expired-container`,children:(0,c.jsx)(`div`,{className:`auth-login-slide-in`,children:(0,c.jsx)(o.Alert,{type:`warning`,showIcon:!0,icon:(0,c.jsx)(s.ExclamationCircleFilled,{style:{fontSize:30,color:`#FFC107`}}),message:(0,c.jsxs)(`div`,{className:`auth-login-alert-message-container`,children:[(0,c.jsx)(o.Divider,{className:`auth-login-alert-divider`,type:`vertical`}),(0,c.jsx)(`div`,{className:`auth-login-alert-text`,children:`Session expired. Please log in again.`})]}),className:`auth-login-session-expired-alert`})})}),(0,c.jsxs)(`div`,{className:`auth-login-brand`,children:[(0,c.jsx)(`img`,{src:`/favicon.ico`,alt:``,className:`auth-login-logo`}),(0,c.jsx)(e.Cn,{variant:`h3`,color:`primary`,weight:`bold`,className:`auth-login-brand-text`,children:`Zinnext`})]}),(0,c.jsx)(`div`,{className:`auth-login-body`,children:(0,c.jsxs)(`div`,{className:`auth-login-sign-body`,children:[(0,c.jsx)(e.Cn,{variant:`h2`,color:`primary`,weight:`bold`,align:`center`,className:`auth-login-title`,children:`Sign in`}),(0,c.jsx)(`div`,{className:`auth-login-form-con`,children:(0,c.jsxs)(o.Form,{className:`v1-form auth-login-form`,layout:`vertical`,requiredMark:!1,onFinish:_,autoComplete:`off`,children:[(0,c.jsx)(o.Form.Item,{label:`Email`,name:`email`,rules:[{type:`email`,required:!0,message:`Enter valid email.`}],children:(0,c.jsx)(o.Input,{size:`large`,placeholder:`Your work email`,autoComplete:`email`})}),(0,c.jsx)(o.Form.Item,{label:`Password`,name:`user_pwd`,rules:[{required:!0,message:`Mandatory field.`}],children:(0,c.jsx)(o.Input.Password,{size:`large`,placeholder:`Enter password`,autoComplete:`current-password`})}),(0,c.jsx)(o.Form.Item,{className:`auth-login-forgot-row`,children:(0,c.jsx)(o.Button,{type:`link`,className:`auth-login-forgot`,htmlType:`button`,children:`Forgot Password?`})}),d&&(0,c.jsx)(o.Form.Item,{children:(0,c.jsx)(e.Cn,{color:`danger`,variant:`body`,children:d})}),(0,c.jsx)(o.Button,{className:`auth-login-submit`,block:!0,size:`large`,type:`primary`,htmlType:`submit`,loading:i,id:`znxt-signin`,children:`Sign in`}),(0,c.jsx)(o.Form.Item,{className:`auth-login-divider-row`,children:(0,c.jsx)(o.Divider,{children:`Or`})}),(0,c.jsxs)(e.Cn,{as:`p`,variant:`body`,color:`secondary`,align:`center`,className:`auth-login-signup-text`,children:[`Not registered yet?`,` `,(0,c.jsx)(o.Button,{type:`link`,htmlType:`button`,className:`auth-login-signup`,id:`znxt-signup`,children:`Sign up`})]})]})})]})})]})})})]})}var wv=e.gi({addCTFlow:()=>Kv,addCTModule:()=>Bv,addCTSubmodule:()=>Uv,addLmsFlow:()=>Iv,addTestFlow:()=>Mv,addTestingOption:()=>Av,bulkInsertTestSteps:()=>Fv,deleteCTFlow:()=>Xv,getActionFieldRules:()=>jv,getCTFlow:()=>qv,getCTFlows:()=>Gv,getCTModules:()=>zv,getCTNextStep:()=>Jv,getCTProjects:()=>Rv,getCTSubmodules:()=>Hv,getLmsFlows:()=>Lv,getTestFlows:()=>Nv,getTestingOptions:()=>kv,setCTModuleStatus:()=>Vv,setCTSubmoduleStatus:()=>Wv,updateCTFlow:()=>Yv,validateTestSteps:()=>Pv});async function Tv(e){return t.t(t.b,e)}async function Ev(e,n){let r=await t.a(t.b,e,{method:`POST`,body:JSON.stringify(n)});return r.data??r}async function Dv(e,n){let r=await t.a(t.b,e,{method:`PUT`,body:JSON.stringify(n)});return r.data??r}async function Ov(e){let n=await t.a(t.b,e,{method:`DELETE`});return n.data??n}async function kv(e){return Tv(`/testing-modules?type=${encodeURIComponent(e)}`)}async function Av({name:e,type:t}){return Ev(`/testing-modules`,{name:e,type:t})}async function jv(){return Tv(`/test-action-field-rules`)}async function Mv(e){return Ev(`/test-flows`,e)}async function Nv({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)),Tv(`/test-flows?${s.toString()}`)}async function Pv(e){return Ev(`/test-steps/validate`,e)}async function Fv(e){return Ev(`/test-steps/bulk-insert`,e)}async function Iv(e){return Ev(`/lms-flows`,e)}async function Lv({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)),Tv(`/lms-flows?${s.toString()}`)}async function Rv({activeOnly:e=!1}={}){let t=new URLSearchParams;e&&t.append(`active`,`1`);let n=t.toString();return Tv(`/ct/projects${n?`?${n}`:``}`)}async function zv({project:e=``,activeOnly:t=!1}={}){let n=new URLSearchParams;e&&n.append(`project`,e),t&&n.append(`active`,`1`);let r=n.toString();return Tv(`/ct/modules${r?`?${r}`:``}`)}async function Bv({project:e,modulename:t}){return Ev(`/ct/modules`,{project:e,modulename:t})}async function Vv(e,t){return Dv(`/ct/modules/status`,{id:e,active:t})}async function Hv({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 Tv(`/ct/submodules${i?`?${i}`:``}`)}async function Uv({project:e,modulename:t,submodulename:n}){return Ev(`/ct/submodules`,{project:e,modulename:t,submodulename:n})}async function Wv(e,t){return Dv(`/ct/submodules/status`,{id:e,active:t})}async function Gv({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)),Tv(`/ct/flows?${d.toString()}`)}async function Kv(e){return Ev(`/ct/flows`,e)}async function qv(e){return Tv(`/ct/flows/${encodeURIComponent(e)}`)}async function Jv({project:e,module:t,submodule:n,product_parent_ID:r,module_parent_ID:i,submodule_parent_ID:a}){return Tv(`/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 Yv(e,t){return Dv(`/ct/flows/${encodeURIComponent(e)}`,t)}async function Xv(e){return Ov(`/ct/flows/${encodeURIComponent(e)}`)}var Zv=`zinnext`;function Qv(){let[n]=o.Form.useForm(),r=(0,u.useNavigate)(),[i,l]=(0,a.useState)([]),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(``);(0,a.useEffect)(()=>{let e=!0;return Promise.resolve().then(()=>Rv({activeOnly:!0})).then(r=>{if(!e)return;let i=r?.items??[];l(i);let a=t.c(),o=i.find(e=>e.id===a?.id)||i.find(e=>e.projectname?.toLowerCase()===Zv)||i[0];o&&n.setFieldsValue({project:o.id})}).catch(t=>{console.error(`Unable to load projects:`,t),e&&m(`Unable to load projects. Please try again.`)}),()=>{e=!1}},[n]);function h(e){let n=i.find(t=>t.id===e.project);if(!n){m(`Please select a project.`);return}f(!0),t.g({id:n.id,name:n.projectname}),r(`/addTestCase`,{replace:!0})}return(0,c.jsxs)(`div`,{className:`auth-login-page`,children:[(0,c.jsx)(`section`,{className:`auth-login-bg`,style:{background:e.Tn.brand},children:(0,c.jsxs)(`div`,{className:`auth-login-static-section`,children:[(0,c.jsx)(`div`,{children:(0,c.jsx)(`img`,{src:x_,alt:``,className:`auth-login-img-one`})}),(0,c.jsx)(`div`,{className:`auth-login-hero-wrap`,children:(0,c.jsx)(`img`,{src:S_,alt:``,className:`auth-login-img-two`})}),(0,c.jsx)(e.Cn,{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,c.jsx)(`section`,{className:`auth-login-form-layout`,children:(0,c.jsx)(`div`,{className:`auth-login-form-container`,children:(0,c.jsxs)(`div`,{className:`auth-login-form-shell`,children:[(0,c.jsxs)(`div`,{className:`auth-login-brand`,children:[(0,c.jsx)(`img`,{src:`/favicon.ico`,alt:``,className:`auth-login-logo`}),(0,c.jsx)(e.Cn,{variant:`h3`,color:`primary`,weight:`bold`,className:`auth-login-brand-text`,children:`Zinnext`})]}),(0,c.jsx)(`div`,{className:`auth-login-body`,children:(0,c.jsxs)(`div`,{className:`auth-login-sign-body`,children:[(0,c.jsx)(e.Cn,{variant:`h2`,color:`primary`,weight:`bold`,align:`center`,className:`auth-login-title`,children:`Select Project`}),(0,c.jsx)(`div`,{className:`auth-login-form-con`,children:(0,c.jsxs)(o.Form,{form:n,className:`v1-form auth-login-form`,layout:`vertical`,requiredMark:!1,onFinish:h,autoComplete:`off`,children:[(0,c.jsx)(o.Form.Item,{label:`Project`,name:`project`,rules:[{required:!0,message:`Select a project.`}],children:(0,c.jsx)(o.Select,{size:`large`,showSearch:!0,optionFilterProp:`label`,placeholder:`Select project`,prefix:(0,c.jsx)(s.ProjectOutlined,{}),options:i.map(e=>({value:e.id,label:e.projectname}))})}),p&&(0,c.jsx)(o.Form.Item,{children:(0,c.jsx)(e.Cn,{color:`danger`,variant:`body`,children:p})}),(0,c.jsx)(o.Button,{className:`auth-login-submit`,block:!0,size:`large`,type:`primary`,htmlType:`submit`,loading:d,id:`znxt-select-project`,children:`Continue`})]})})]})})]})})})]})}function $v(e,t){function n(n){return(0,c.jsx)(bv,{...t,children:(0,c.jsx)(e,{...n})})}return n.displayName=`withAuthGuard(${e.displayName||e.name||`Component`})`,n}var ey=`${t._}`;async function ty(e,n={}){let r=t.l(),i=await fetch(`${ey}${e}`,{...n,headers:{"Content-Type":`application/json`,...t.E({"X-App-Id":String(t.v)}),...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 ny(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 ry(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:oy(e.status??e.active_status)}}function iy(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:oy(e.status??e.active_status??`ACTIVE`)}}function ay(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:oy(e.status)}}function oy(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 sy(e){let t=Number(e);return Number.isFinite(t)&&t>0?t:0}function cy(e){if(e==null||e===``)return 0;let t=Number(e);return Number.isFinite(t)&&t>0?t:e}function ly(e){let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}function uy(){return{tenantId:localStorage.getItem(`tenantId`)||void 0,businessId:localStorage.getItem(`businessId`)||void 0,businessUnitId:localStorage.getItem(`businessUnitId`)||void 0}}function dy(e){let n=e.username??e.user_name??e.userName,r=e.first_name??e.firstName??``,i=e.last_name??e.lastName??``,a=sy(e.user_type_id??e.role_id??e.roleId),o=cy(e.reporting_id??e.reportingId??e.managerId),s=e.mobile??e.mobileNumber??e.mobile_number??e.phone_number,c=oy(e.status??e.activeStatus)===`ACTIVE`,l=String(t.v),u=ly(e.updated_by??e.updatedBy),d=ly(e.created_by??e.createdBy);return{...e,...uy(),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 fy(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 py(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:n?.value??n?.access_value??n},e),{});return{...e,menu_id:t,menu_name:n,menu_key:e.menu_key??e.menuKey??n,permissions:r}})}function my(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:String(+(Number(t.access_value??t.accessValue)===1))},e):e},{}),menuOrder:n}}function hy(){return ty(`/get-all-users?limit=500&offset=0`).then(e=>ny(e,[`users`]).map(ry))}function gy(e){return ty(`/get-users?roleId=${encodeURIComponent(e)}`).then(e=>ny(e,[`users`]).map(ry))}function _y(e){return ty(`/create-user`,{method:`POST`,body:JSON.stringify(dy(e))})}function vy(e,t){return ty(`/update-user?userId=${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(dy(t))})}function yy(e){return ty(`/delete-user?userId=${encodeURIComponent(e)}`,{method:`PUT`})}function by(){return ty(`/get-roles`).then(e=>[...ny(e,[`zinnext_default`]),...ny(e,[`custom_roles`])].map(iy))}function xy(e){return ty(`/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(iy)}function Sy(e,t){return ty(`/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:+(oy(t.status)===`ACTIVE`),statusText:oy(t.status)})}).then(iy)}function Cy(e){return ty(`/custom-roles/${encodeURIComponent(e)}`,{method:`DELETE`})}function wy(){return ty(`/admin/menu-modules`).then(e=>ny(e).map(ay))}function Ty(e){return ty(`/admin/menu-modules`,{method:`POST`,body:JSON.stringify(fy(e))})}function Ey(e,t){return ty(`/admin/menu-modules/${e}`,{method:`PUT`,body:JSON.stringify(fy(t))})}function Dy(e){return ty(`/admin/menu-modules/${e}`,{method:`DELETE`})}function Oy(){return ty(`/admin/menu-actions`)}function ky(e){return ty(`/get-role-details?roleid=${encodeURIComponent(e)}`).then(py)}function Ay(e,t){return ty(`/edit-role-details`,{method:`PUT`,body:JSON.stringify(my(e,t,[...new Set(t.map(e=>e.menu_key??e.menuName??e.menu_name).filter(Boolean))]))})}var jy={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 My(e,t){let n=String(t??``).trim().toLowerCase(),r=Object.keys(jy).find(e=>e.toLowerCase()===n),i=r?jy[r]:void 0;return i?i.includes(String(e??``).trim().toLowerCase()):!0}function Z({title:e,icon:t,extra:n,children:r,variant:i=`default`,...a}){let s=t||e?(0,c.jsxs)(`span`,{className:`app-card-title`,children:[t&&(0,c.jsx)(`span`,{className:`app-card-title-icon`,children:t}),e]}):void 0;return(0,c.jsx)(o.Card,{className:`app-card app-card--${i}`,title:s,extra:n,...a,children:r})}var{Text:Ny}=o.Typography,{Option:Py}=o.Select,Fy=[{key:`job`,label:`Jobs`},{key:`candidate`,label:`Candidates`},{key:`submissions`,label:`Submissions`},{key:`billing`,label:`Billing`},{key:`payroll`,label:`Payroll`}],Iy=[{key:``,label:`Text`,icon:(0,c.jsx)(`span`,{style:{fontSize:14,fontWeight:700},children:`Aa`})},{key:`badge`,label:`Badge`,icon:(0,c.jsx)(s.TagsOutlined,{style:{fontSize:16}})},{key:`avatar`,label:`Avatar`,icon:(0,c.jsx)(s.UserOutlined,{style:{fontSize:16}})},{key:`link`,label:`Link`,icon:(0,c.jsx)(s.LinkOutlined,{style:{fontSize:16}})}],Ly=[{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`}],Ry={job:`jobs`,candidate:`candidates`,submissions:`submissions`,billing:`billing`,payroll:`payroll`};function zy(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function By(e){if(typeof e==`string`)return{key:e,apiModule:e,label:zy(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??zy(t)}:null}function Vy(e){let t=Array.isArray(e)&&e.length?e:Fy,n=new Set,r=t.map(By).filter(Boolean).filter(e=>n.has(e.key)?!1:(n.add(e.key),!0));return r.length?r:Fy}function Hy({field:t,collections:n,collFields:r,subfields:i,onCollectionChange:l,onLookupFieldChange:u,addSecondaryField:d,removeSecondaryField:f,addActionButton:p,updateActionButton:m,removeActionButton:h,moduleKey:g,fieldKey:_,update:v}){let[y,b]=(0,a.useState)(``),[x,S]=(0,a.useState)({}),[C,w]=(0,a.useState)(!1);function T(e){v(e===`common`?{commonStyle:{color:`#1677ff`,bg:`#e6f7ff`,variant:`badge`},valueStyles:[]}:{commonStyle:null})}function E(e){v({commonStyle:{...t.commonStyle??{color:`#595959`,bg:`#f5f5f5`,variant:`badge`},...e}})}function D(){v({valueStyles:[...t.valueStyles??[],{value:``,label:``,color:`#595959`,bg:`#f5f5f5`,variant:`badge`}]})}function O(e,n){let r=[...t.valueStyles??[]];r[e]={...r[e],...n},v({valueStyles:r})}function k(e){v({valueStyles:(t.valueStyles??[]).filter((t,n)=>n!==e)})}async function A(){w(!0);try{let e=await jn(t.apiModule??Ry[g]??g,_,``,50,0),n=(Array.isArray(e)?e:e?.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`,...Ly[t%Ly.length]}});if(n.length===0){o.message.info(`No values found for this field`);return}v({valueStyles:n})}catch{o.message.error(`Could not detect values`)}finally{w(!1)}}async function j(t,n){S(e=>({...e,[t]:!0}));try{let r=await e.mi(n);m(t,{iconUrl:r?.iconUrl??r?.url??``,iconPath:r?.iconPath??r?.path??``})}catch{o.message.error(`Icon upload failed`)}finally{S(e=>({...e,[t]:!1}))}return!1}let M=t.renderType??``,N=!!t.commonStyle,P=t.commonStyle??{},F=t.valueStyles??[],I=t.renderConfig??{};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsx)(`div`,{className:`uss-detail-label`,children:`Display Style`}),(0,c.jsx)(`div`,{className:`uss-detail-row`,children:Iy.map(e=>(0,c.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,c.jsx)(`span`,{children:e.label})]},e.key))}),M===`badge`&&(0,c.jsxs)(`div`,{className:`uss-badge-config`,children:[(0,c.jsxs)(o.Radio.Group,{size:`small`,value:N?`common`:`perValue`,onChange:e=>T(e.target.value),style:{marginBottom:8},children:[(0,c.jsx)(o.Radio,{value:`perValue`,children:`Per value`}),(0,c.jsx)(o.Radio,{value:`common`,children:`Same for all`})]}),N&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,flexWrap:`wrap`},children:[(0,c.jsx)(o.Tooltip,{title:`Text color`,children:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4},children:[(0,c.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,c.jsx)(Ny,{style:{fontSize:10},children:`Text`})]})}),(0,c.jsx)(o.Tooltip,{title:`Background color`,children:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4},children:[(0,c.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,c.jsx)(Ny,{style:{fontSize:10},children:`BG`})]})}),(0,c.jsx)(o.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,c.jsx)(`span`,{style:{padding:`1px 12px`,borderRadius:20,fontSize:11,fontWeight:500,color:P.color||`#595959`,background:P.bg||`#f5f5f5`},children:`Preview`})]}),!N&&(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:6},children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#555`,fontWeight:600},children:`Value → Style mapping`}),(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(o.Button,{size:`small`,loading:C,onClick:A,children:`Auto-detect values`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:D,children:`Add`})]})]}),F.length===0&&(0,c.jsx)(Ny,{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,c.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr 62px 62px 54px 26px`,gap:5,alignItems:`center`,marginBottom:6},children:[(0,c.jsx)(o.Input,{size:`small`,placeholder:`raw value`,value:e.value??``,onChange:e=>O(t,{value:e.target.value})}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`display label`,value:e.label??``,onChange:e=>O(t,{label:e.target.value})}),(0,c.jsx)(o.Tooltip,{title:`Text color`,children:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:3},children:[(0,c.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,c.jsx)(Ny,{style:{fontSize:10},children:`Text`})]})}),(0,c.jsx)(o.Tooltip,{title:`Background color`,children:(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:3},children:[(0,c.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,c.jsx)(Ny,{style:{fontSize:10},children:`BG`})]})}),(0,c.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,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.CloseOutlined,{}),onClick:()=>k(t)})]},t))]})]}),(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Array item field (latest item)`}),(0,c.jsx)(o.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,c.jsxs)(c.Fragment,{children:[e,(0,c.jsx)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid var(--color-border-muted)`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Custom child field`,value:I.lastItemField||``,onChange:e=>v({renderConfig:{...I,lastItemField:e.target.value.trim()}})})})]})}),(0,c.jsx)(Ny,{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,c.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr 80px`,gap:8,marginTop:8},children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Name field`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Color field (opt.)`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#555`,display:`block`,marginBottom:3},children:`Max visible`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsx)(`div`,{className:`uss-detail-label`,children:`Display Template`}),(0,c.jsx)(ch,{value:t.displayTemplate??``,onChange:e=>v({displayTemplate:e}),placeholder:`e.g. {{firstName}} {{lastName}}`})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsx)(`div`,{className:`uss-detail-label`,children:`Default Value`}),(0,c.jsx)(o.Input,{size:`small`,allowClear:!0,value:t.defaultValue??``,onChange:e=>v({defaultValue:e.target.value}),placeholder:`Shown when data is empty, e.g. N/A`}),(0,c.jsx)(Ny,{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,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsx)(`div`,{className:`uss-detail-label`,children:`Empty / Group Value Rules`}),(0,c.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:8},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12},children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Ny,{style:{fontSize:11},children:`Treat numeric 0 as empty`}),(0,c.jsx)(Ny,{type:`secondary`,style:{display:`block`,fontSize:10},children:`Useful for integer fields where 0 means the value was not provided.`})]}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!I.treatZeroAsEmpty,onChange:e=>v({renderConfig:{...I,treatZeroAsEmpty:e}})})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12},children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Ny,{style:{fontSize:11},children:`Clean grouped template when a value is empty`}),(0,c.jsxs)(Ny,{type:`secondary`,style:{display:`block`,fontSize:10},children:[`Example: `,(0,c.jsx)(`code`,{children:`{{field1}} - {{field2}}`}),` shows only field2 when field1 is empty, without the extra dash.`]})]}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!I.cleanEmptyTemplateSeparators,onChange:e=>v({renderConfig:{...I,cleanEmptyTemplateSeparators:e}})})]})]})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsxs)(`div`,{className:`uss-detail-label`,children:[`Link`,(0,c.jsx)(o.Switch,{size:`small`,style:{marginLeft:8},checked:!!t.isLink,onChange:e=>v({isLink:e})})]}),t.isLink&&(0,c.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6,paddingTop:4},children:[(0,c.jsx)(ch,{value:t.linkTemplate??``,onChange:e=>v({linkTemplate:e}),placeholder:`e.g. /jobs/{{jobId}}`}),(0,c.jsxs)(`div`,{className:`uss-detail-row`,children:[(0,c.jsxs)(o.Select,{size:`small`,value:t.linkType??`internal`,onChange:e=>v({linkType:e}),style:{width:120},children:[(0,c.jsx)(Py,{value:`internal`,children:`internal`}),(0,c.jsx)(Py,{value:`external`,children:`external`})]}),(0,c.jsxs)(o.Select,{size:`small`,value:t.linkTarget??`_self`,onChange:e=>v({linkTarget:e}),style:{width:100},children:[(0,c.jsx)(Py,{value:`_self`,children:`_self`}),(0,c.jsx)(Py,{value:`_blank`,children:`_blank`})]})]})]})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsx)(`div`,{className:`uss-detail-label`,children:`Secondary Fields`}),(0,c.jsx)(`div`,{className:`uss-detail-row`,style:{flexWrap:`wrap`},children:(t.secondaryFields??[]).map(e=>(0,c.jsxs)(`span`,{className:`uss-secondary-tag`,children:[e,(0,c.jsx)(`button`,{onClick:()=>f(e),children:`×`})]},e))}),(0,c.jsxs)(`div`,{className:`uss-detail-row`,children:[(0,c.jsx)(o.Input,{size:`small`,placeholder:`Add field key`,value:y,onChange:e=>b(e.target.value),onPressEnter:()=>{d(y),b(``)},style:{width:160}}),(0,c.jsx)(o.Button,{size:`small`,type:`link`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{d(y),b(``)},children:`Add`})]}),t.secondaryFields?.length>0&&(0,c.jsxs)(`div`,{style:{marginTop:4,display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`var(--color-text-muted)`},children:`Separator:`}),(0,c.jsx)(o.Input,{size:`small`,value:t.secondarySeparator??``,placeholder:`·`,style:{width:64},onChange:e=>v({secondarySeparator:e.target.value})})]})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsxs)(`div`,{className:`uss-detail-label`,children:[`Lookup (FK resolve)`,(0,c.jsx)(o.Switch,{size:`small`,style:{marginLeft:8},checked:!!t.lookup,onChange:e=>v({lookup:e?{collection:``,displayField:``,valueField:``,projectFields:[]}:null})})]}),t.lookup&&(0,c.jsxs)(`div`,{className:`uss-lookup-grid`,children:[(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Collection`}),(0,c.jsx)(o.Select,{size:`small`,value:t.lookup?.collection??``,onChange:l,showSearch:!0,placeholder:`Select collection`,style:{flex:1},children:n.map(e=>(0,c.jsx)(Py,{value:e,children:e},e))})]}),(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Tenant scoped`}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!t.lookup?.tenantScoped,onChange:e=>u(t.fieldKey,{tenantScoped:e})})]}),(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Source Field`}),(0,c.jsx)(o.Input,{size:`small`,value:t.lookup?.localField??``,placeholder:`Defaults to ${t.fieldKey}`,onChange:e=>u(t.fieldKey,{localField:e.target.value}),style:{flex:1}})]}),r.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Value Field`}),(0,c.jsx)(o.Select,{size:`small`,value:t.lookup?.valueField??``,onChange:e=>u(t.fieldKey,{valueField:e}),placeholder:`ID field`,style:{flex:1},children:r.map(e=>(0,c.jsx)(Py,{value:e,children:e},e))})]}),(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Display Field`}),(0,c.jsx)(o.Select,{size:`small`,value:t.lookup?.displayField??``,onChange:e=>u(t.fieldKey,{displayField:e}),placeholder:`Label field`,style:{flex:1},children:[...r,...i].map(e=>(0,c.jsx)(Py,{value:e,children:e},e))})]})]})]})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsxs)(`div`,{className:`uss-detail-label`,children:[`Derived Array Value`,(0,c.jsx)(o.Switch,{size:`small`,style:{marginLeft:8},checked:!!t.derived,onChange:e=>v({derived:e?{type:`arrayField`,source:``,matchField:``,matchValue:``,valueField:``,default:null}:null})})]}),t.derived&&(0,c.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(([e,n,r])=>(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:e}),(0,c.jsx)(o.Input,{size:`small`,value:t.derived?.[n]??``,placeholder:r,onChange:e=>v({derived:{...t.derived,[n]:e.target.value}})})]},n))})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsxs)(`div`,{className:`uss-detail-label`,children:[`Computed Value`,(0,c.jsx)(o.Switch,{size:`small`,style:{marginLeft:8},checked:!!t.computed,onChange:e=>v({computed:e?{operator:`subtract`,operands:[],default:0}:null})})]}),t.computed&&(0,c.jsxs)(`div`,{className:`uss-lookup-grid`,children:[(0,c.jsxs)(`div`,{className:`uss-lookup-row`,children:[(0,c.jsx)(`span`,{className:`uss-lookup-label`,children:`Operator`}),(0,c.jsx)(o.Select,{size:`small`,value:t.computed?.operator??`subtract`,style:{flex:1},options:[`add`,`subtract`,`multiply`,`divide`,`percentage`,`ifNull`].map(e=>({value:e,label:e})),onChange:e=>v({computed:{...t.computed,operator:e}})})]}),(0,c.jsx)(Ny,{style:{fontSize:11},children:`Operands JSON (field or value entries)`}),(0,c.jsx)(o.Input.TextArea,{rows:3,defaultValue:JSON.stringify(t.computed?.operands??[],null,2),placeholder:`[{"field":"billRate"},{"field":"payRate"}]`,onBlur:e=>{try{let n=JSON.parse(e.target.value||`[]`);if(!Array.isArray(n))throw Error(`Operands must be an array`);v({computed:{...t.computed,operands:n}})}catch(e){o.message.error(e.message||`Invalid operands JSON`)}}},JSON.stringify(t.computed?.operands??[]))]})]}),(0,c.jsxs)(`div`,{className:`uss-detail-section`,children:[(0,c.jsxs)(`div`,{className:`uss-detail-label`,style:{display:`flex`,justifyContent:`space-between`},children:[(0,c.jsxs)(`span`,{children:[`Action Buttons `,(0,c.jsx)(`span`,{style:{fontSize:11,fontWeight:400,color:`var(--color-text-muted)`},children:`(max 3)`})]}),(t.actionButtons??[]).length<3&&(0,c.jsx)(o.Button,{type:`link`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:p,children:`Add Icon`})]}),(t.actionButtons??[]).map((e,t)=>(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`div`,{className:`uss-action-btn-row`,children:[(0,c.jsx)(o.Upload,{showUploadList:!1,beforeUpload:e=>(j(t,e),!1),accept:`image/*`,children:(0,c.jsx)(o.Tooltip,{title:`Click to upload icon`,children:(0,c.jsx)(`div`,{className:`uss-action-btn-icon-slot`,children:x[t]?(0,c.jsx)(o.Spin,{size:`small`}):e.iconUrl?(0,c.jsx)(`img`,{src:e.iconUrl,alt:`action-${t}`,style:{width:`100%`,height:`100%`,objectFit:`cover`}}):(0,c.jsx)(s.UploadOutlined,{style:{color:`#aaa`,fontSize:14}})})})}),(0,c.jsx)(o.Input,{size:`small`,value:e.name??``,onChange:e=>m(t,{name:e.target.value}),placeholder:`Tooltip (e.g. Edit)`,style:{width:110}}),(0,c.jsxs)(o.Radio.Group,{size:`small`,value:e.type??`page`,onChange:e=>m(t,{type:e.target.value}),children:[(0,c.jsx)(o.Radio,{value:`page`,children:`Page`}),(0,c.jsx)(o.Radio,{value:`popup`,children:`Popup`})]}),(0,c.jsx)(o.Input,{size:`small`,value:e.routeUrl??``,onChange:e=>m(t,{routeUrl:e.target.value}),placeholder:`Route URL (e.g. /jobs/:_id)`,prefix:(0,c.jsx)(s.LinkOutlined,{style:{color:`#bbb`}}),style:{flex:1}}),(0,c.jsx)(o.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>h(t),children:`✕`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,paddingLeft:36},children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#999`,whiteSpace:`nowrap`},children:`Permission:`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,paddingLeft:36,marginTop:4,flexWrap:`wrap`},children:[(0,c.jsx)(Ny,{style:{fontSize:11,color:`#999`,whiteSpace:`nowrap`},children:`Show only if:`}),(0,c.jsx)(o.Input,{size:`small`,value:e.showIfField??``,onChange:e=>m(t,{showIfField:e.target.value}),placeholder:`field (e.g. createdBy)`,style:{width:180}}),(0,c.jsx)(o.Select,{size:`small`,value:e.showIfOperator||`eq`,style:{width:130},onChange:e=>m(t,{showIfOperator:e}),options:Uy}),![`isEmpty`,`notEmpty`].includes(e.showIfOperator||`eq`)&&(0,c.jsx)(o.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,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.CloseOutlined,{}),onClick:()=>m(t,{showIfField:``,showIfOperator:``,showIfValue:``})})]})]},t))]})]})}var Uy=[{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)`}],Wy=[{label:`Module data (distinct)`,value:`module`},{label:`Masters collection`,value:`master`},{label:`Group value`,value:`group`}],Gy=[`select`,`radio`,`checkbox`],Ky=[{label:`Dropdown`,value:`dropdown`},{label:`Checkbox`,value:`checkbox`},{label:`Radio`,value:`radio`},{label:`Date Range`,value:`datepicker`},{label:`Number Range`,value:`number-range`}];function qy({field:e,update:t,configType:n,collections:r,collFields:i,onCollectionChange:a,onLookupFieldChange:s}){let l=Gy.includes(e.type),u=!!e.lookup;function d(e){t({lookup:e?{collection:``,displayField:``,valueField:``,projectFields:[]}:null})}return(0,c.jsxs)(`div`,{style:{display:`flex`,gap:24,flexWrap:`wrap`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Editable`}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.isEditable,onChange:e=>t({isEditable:e})})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Mandatory`}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.ismandatory,onChange:e=>t({ismandatory:e})})]}),n===`filter`&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Value Input`}),(0,c.jsx)(o.Select,{size:`small`,value:e.filterInputType??`dropdown`,onChange:e=>t({filterInputType:e}),options:Ky,style:{width:140}})]}),n===`filter`&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Default`}),(0,c.jsx)(o.Switch,{size:`small`,checked:!!e.isDefaultFilter,onChange:e=>t({isDefaultFilter:e})})]}),n===`filter`&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Lookup`}),(0,c.jsx)(o.Switch,{size:`small`,checked:u,onChange:d})]}),n===`filter`&&u&&(0,c.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`,flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Select,{size:`small`,value:e.lookup?.valueField||void 0,onChange:t=>s(e.fieldKey,{valueField:t}),showSearch:!0,placeholder:`Value field (ID)`,style:{width:160},options:(i??[]).map(e=>({label:e,value:e}))}),(0,c.jsx)(o.Input,{size:`small`,value:e.lookup?.displayField??``,onChange:t=>s(e.fieldKey,{displayField:t.target.value}),placeholder:`Display field (e.g. name)`,style:{width:180}})]})]}),l&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Source`}),(0,c.jsx)(o.Select,{size:`small`,value:e.dataSource??`module`,onChange:e=>t({dataSource:e,groupName:``}),options:Wy,style:{width:170}})]}),(e.dataSource??`module`)===`group`&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,c.jsx)(Ny,{style:{fontSize:12},children:`Group Name`}),(0,c.jsx)(o.Input,{size:`small`,value:e.groupName??``,onChange:e=>t({groupName:e.target.value}),placeholder:`e.g. skills`,style:{width:120}})]})]})]})}function Jy({field:t,index:n,configType:r,moduleKey:i,onUpdate:l,onReorder:u,collections:d,onFetchCollFields:f,dragFromRef:p}){let[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(t.fieldName),[b,x]=(0,a.useState)([]),[S,C]=(0,a.useState)([]),[w,T]=(0,a.useState)(!1),[E,D]=(0,a.useState)(!1);(0,a.useEffect)(()=>{queueMicrotask(()=>{y(t.fieldName)})},[t.fieldName]),(0,a.useEffect)(()=>{if(!m||r!==`listView`||!t.fieldKey)return;let n=!1;return e.pr(t.apiModule??Ry[i]??i,t.fieldKey).then(e=>{n||C(Array.isArray(e)?e:[])}).catch(()=>{n||C([])}),()=>{n=!0}},[m,r,t.apiModule,t.fieldKey,i]);function O(e){p.current=n,e.dataTransfer.effectAllowed=`move`,D(!0)}function k(){D(!1),T(!1)}function A(e){e.preventDefault(),T(!0)}function j(){T(!1)}function M(e){e.preventDefault(),T(!1),p.current!==null&&p.current!==n&&u(p.current,n),p.current=null}function N(e){l(n,e)}function P(){_(!1);let e=v.trim();e&&e!==t.fieldName?N({fieldName:e}):y(t.fieldName)}async function F(e){N({lookup:{...t.lookup,collection:e,displayField:``,valueField:``,projectFields:[]}}),x(await f(e))}async function I(n,r){if(N({lookup:{...t.lookup,...r}}),r.valueField)try{C(await e.pr(i,n))}catch{C([])}}function L(e){let n=t.secondaryFields??[];!e||n.includes(e)||N({secondaryFields:[...n,e]})}function R(e){N({secondaryFields:(t.secondaryFields??[]).filter(t=>t!==e)})}function z(){let e=t.actionButtons??[];e.length>=3||N({actionButtons:[...e,{name:``,iconUrl:``,iconPath:``,type:`page`,routeUrl:``,permissionKey:``}]})}function B(e,n){let r=[...t.actionButtons??[]];r[e]={...r[e],...n},N({actionButtons:r})}function ee(e){let n=[...t.actionButtons??[]];n.splice(e,1),N({actionButtons:n})}return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{draggable:!0,onDragStart:O,onDragEnd:k,onDragOver:A,onDragLeave:j,onDrop:M,className:`uss-field-row${w?` drag-over`:``}${E?` dragging`:``}`,style:{gridTemplateColumns:`24px 1fr 80px 56px`},children:[(0,c.jsx)(`span`,{className:`uss-drag-handle`,children:(0,c.jsx)(s.HolderOutlined,{})}),(0,c.jsxs)(`span`,{className:`uss-field-name`,children:[t.isVirtual&&(0,c.jsx)(`span`,{className:`uss-virtual-tag`,children:`virtual`}),g?(0,c.jsx)(`input`,{autoFocus:!0,value:v,onChange:e=>y(e.target.value),onBlur:P,onKeyDown:e=>{e.key===`Enter`&&P(),e.key===`Escape`&&(_(!1),y(t.fieldName))},onClick:e=>e.stopPropagation()}):(0,c.jsx)(o.Tooltip,{title:`Double-click to rename`,children:(0,c.jsx)(`span`,{style:{cursor:`text`,borderBottom:`1px dashed var(--color-border-muted)`},onDoubleClick:e=>{e.stopPropagation(),_(!0)},children:t.fieldName})}),(0,c.jsx)(`span`,{className:`uss-field-key`,children:t.fieldKey})]}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Switch,{size:`small`,checked:t.isVisible,onChange:e=>N({isVisible:e})})}),(0,c.jsx)(`span`,{className:`uss-toggle-cell`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:m?(0,c.jsx)(s.DownOutlined,{}):(0,c.jsx)(s.RightOutlined,{}),onClick:()=>h(e=>!e),style:{color:`var(--color-text-muted)`}})})]}),m&&(0,c.jsx)(`div`,{className:`uss-detail-panel`,children:r===`listView`?(0,c.jsx)(Hy,{field:t,collections:d,collFields:b,subfields:S,onCollectionChange:F,onLookupFieldChange:I,addSecondaryField:L,removeSecondaryField:R,addActionButton:z,updateActionButton:B,removeActionButton:ee,moduleKey:i,fieldKey:t.fieldKey,update:N}):(0,c.jsx)(qy,{field:t,update:N,configType:r,collections:d,collFields:b,onCollectionChange:F,onLookupFieldChange:I})})]})}function Yy({role:t,configType:n}){let[r,i]=(0,a.useState)({}),[s,l]=(0,a.useState)({}),[u,d]=(0,a.useState)({}),[f,p]=(0,a.useState)(Fy),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)({}),[v,y]=(0,a.useState)(`job`),[b,x]=(0,a.useState)([]),S=(0,a.useRef)({}),C=(0,a.useRef)(null),w=(0,a.useCallback)(async(r=t,i=n)=>{let[a,o]=await Promise.all([e.hr().catch(()=>[]),e.mr()]),s=Vy(a);if(!i||i===`listView`){let t=await e.zr(r,i,s);return{tabs:s,colls:o,fields:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.fields])),visibilityModes:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.dataVisibilityMode??`all`])),ownerFields:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t.dataOwnerField??`createdBy`]))}}return{tabs:s,colls:o,fields:await e.Rr(r,i,s),visibilityModes:{},ownerFields:{}}},[n,t]);(0,a.useEffect)(()=>{if(!t)return;let e=!1;return queueMicrotask(()=>{h(!0),(async()=>{try{let{tabs:t,colls:n,fields:r,visibilityModes:a,ownerFields:o}=await w();if(e)return;p(t),x(n),y(e=>t.some(t=>t.key===e)?e:t[0]?.key??``),i(r),l(a??{}),d(o??{})}catch{e||o.message.error(`Failed to load field config`)}finally{e||h(!1)}})()}),()=>{e=!0}},[w,t]);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(t){if(S.current[t])return S.current[t];try{let n=await e.vr(t);return S.current[t]=n,n}catch{return[]}}async function A(){let r=v;_(e=>({...e,[r]:!0}));try{await e.li(t,r,T,n,f,s[r]??`all`,u[r]??`createdBy`),o.message.success(`Saved`)}catch{o.message.error(`Save failed`)}finally{_(e=>({...e,[r]:!1}))}}return(0,c.jsxs)(o.Spin,{spinning:m,children:[(0,c.jsx)(o.Tabs,{size:`small`,activeKey:v,onChange:y,items:f.map(e=>({key:e.key,label:e.label}))}),(!n||n===`listView`)&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,margin:`4px 0 14px`},children:[(0,c.jsx)(Ny,{strong:!0,style:{minWidth:120},children:`Data Visibility`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:290},value:s[v]??`all`,onChange:e=>l(t=>({...t,[v]:e})),options:[{value:`all`,label:`All Data`},{value:`reportingManager`,label:`Reporting Manager Wise`},{value:`self`,label:`My Created Data`}]}),(0,c.jsx)(Ny,{type:`secondary`,children:`Reporting Manager Wise shows data owned by the user and users reporting under them.`})]}),(!n||n===`listView`)&&(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,margin:`-4px 0 14px`},children:[(0,c.jsx)(Ny,{strong:!0,style:{minWidth:120},children:`Created By Field`}),(0,c.jsx)(o.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,c.jsx)(Ny,{type:`secondary`,children:`Defaults to createdBy. Change this only when the module stores its creator/owner user ID in another field.`})]}),(0,c.jsxs)(`div`,{className:`uss-field-header`,style:{gridTemplateColumns:`24px 1fr 80px 56px`},children:[(0,c.jsx)(`span`,{}),(0,c.jsx)(`span`,{children:`Field`}),(0,c.jsx)(`span`,{style:{textAlign:`center`},children:`Visible`}),(0,c.jsx)(`span`,{})]}),(0,c.jsxs)(`div`,{className:`uss-field-list`,children:[T.length===0&&!m&&(0,c.jsx)(`div`,{className:`uss-empty`,children:`No fields found.`}),T.map((e,t)=>(0,c.jsx)(Jy,{field:e,index:t,configType:n,moduleKey:v,onUpdate:D,onReorder:O,collections:b,onFetchCollFields:k,dragFromRef:C},`${e.fieldKey??t}-${v}`))]}),(0,c.jsx)(`div`,{className:`uss-modal-footer`,children:(0,c.jsxs)(o.Button,{type:`primary`,size:`small`,loading:g[v],onClick:A,children:[`Save `,f.find(e=>e.key===v)?.label]})})]})}function Xy(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}var Zy=[`menuKey`,`menu_key`,`MENUKEY`,`module`,`key`,`moduleKey`,`value`,`apiModule`,`name`,`modulename`,`menuName`,`menu_name`,`MENUNAME`],Qy=[`menuName`,`menu_name`,`MENUNAME`,`label`,`moduleLabel`,`moduleName`,`name`,`modulename`];function $y(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 eb(e){if(typeof e==`string`)return{value:e,label:Xy(e)};let t=$y(e,Zy);return t?{value:t,label:$y(e,Qy)??Xy(t)}:null}function tb(e){let t=new Set;return(Array.isArray(e)?e:[]).map(eb).filter(Boolean).filter(e=>t.has(e.value)?!1:(t.add(e.value),!0))}var nb=Object.freeze({clientId:``,region:``}),{Text:rb}=o.Typography;function ib(e,t){return{...e,enabled:t,fields:e.fields.map(e=>({...e}))}}function ab(e,t){return{...e,editable:t,fields:e.fields.map(e=>({...e}))}}function ob({role:t}){let[n,r]=(0,a.useState)([]),[i,l]=(0,a.useState)(``),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(!1),[m,h]=(0,a.useState)(!1),g=nb,_=(0,a.useCallback)(async()=>tb(await e.hr().catch(()=>[])).map(({value:e,label:t})=>({key:e,label:t})),[]);(0,a.useEffect)(()=>{let e=!1;return queueMicrotask(()=>{_().then(t=>{e||(r(t),l(e=>t.some(t=>t.key===e)?e:t[0]?.key??``))})}),()=>{e=!0}},[_]);let v=(0,a.useCallback)(async(n,r)=>{if(!t||!n){d([]);return}p(!0);try{let i=await e.Ir(t,n,r);d(Array.isArray(i)?i:[])}catch{o.message.error(`Failed to load form permissions`),d([])}finally{p(!1)}},[t]);(0,a.useEffect)(()=>{queueMicrotask(()=>{v(i,g)})},[i,g,v]);function y(e,t){d(n=>n.map(n=>n.name===e?ib(n,t):n))}function b(e,t){d(n=>n.map(n=>n.name===e?ab(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 e.ei(t,i,u),o.message.success(`Saved`)}catch{o.message.error(`Save failed`)}finally{h(!1)}}return(0,c.jsxs)(o.Spin,{spinning:f,children:[(0,c.jsx)(o.Tabs,{size:`small`,activeKey:i,onChange:l,items:n.map(e=>({key:e.key,label:e.label}))}),(0,c.jsxs)(`div`,{className:`fg-expanded-fields`,style:{marginTop:8},children:[u.length===0&&!f&&(0,c.jsx)(o.Empty,{description:`No form groups configured for this module.`}),u.map(e=>(0,c.jsxs)(`div`,{className:`fg-field-card`,style:{flexDirection:`column`,alignItems:`stretch`},children:[(0,c.jsxs)(`div`,{className:`fg-field-card-inner`,style:{padding:`8px 12px`},children:[(0,c.jsxs)(`span`,{className:`uss-field-name`,style:{flex:1},children:[(0,c.jsx)(`strong`,{children:e.label}),e.locked&&(0,c.jsx)(o.Tooltip,{title:`Every field in this group is disabled globally in Form Groups`,children:(0,c.jsx)(s.LockOutlined,{style:{marginLeft:6,color:`var(--color-text-muted)`}})})]}),(0,c.jsxs)(o.Space,{size:16,children:[(0,c.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,c.jsx)(rb,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Show`}),(0,c.jsx)(o.Switch,{size:`small`,checked:e.enabled,disabled:e.locked,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:t=>y(e.name,t)})]}),(0,c.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,c.jsx)(rb,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Editable`}),(0,c.jsx)(o.Switch,{size:`small`,checked:e.editable!==!1,disabled:e.locked||!e.enabled,checkedChildren:`Yes`,unCheckedChildren:`No`,onChange:t=>b(e.name,t)})]})]})]}),(0,c.jsx)(`div`,{className:`fg-expanded-fields`,style:{padding:`4px 12px 10px 28px`,opacity:e.enabled?1:.5},children:e.fields.map(t=>(0,c.jsxs)(`div`,{className:`fg-field-row`,style:{justifyContent:`space-between`},children:[(0,c.jsxs)(`span`,{className:`fg-field-row-info`,children:[(0,c.jsx)(`span`,{className:`fg-field-row-label`,children:t.label}),(0,c.jsx)(`span`,{className:`fg-field-row-key`,children:t.field}),t.locked&&(0,c.jsx)(o.Tooltip,{title:`Disabled globally in Form Groups — a role can never re-enable it`,children:(0,c.jsx)(s.LockOutlined,{style:{color:`var(--color-text-muted)`}})})]}),(0,c.jsxs)(o.Space,{size:16,children:[(0,c.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,c.jsx)(rb,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Show`}),(0,c.jsx)(o.Switch,{size:`small`,checked:t.enabled,disabled:t.locked||!e.enabled,checkedChildren:`On`,unCheckedChildren:`Off`,onChange:n=>x(e.name,t.field,n)})]}),(0,c.jsxs)(`span`,{className:`uss-toggle-pair`,children:[(0,c.jsx)(rb,{type:`secondary`,style:{fontSize:11,marginRight:6},children:`Editable`}),(0,c.jsx)(o.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,c.jsx)(`div`,{className:`uss-modal-footer`,children:(0,c.jsxs)(o.Button,{type:`primary`,size:`small`,loading:m,onClick:C,children:[`Save `,n.find(e=>e.key===i)?.label]})}),(0,c.jsxs)(rb,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:8},children:[`Groups and fields are read from Form Groups. `,(0,c.jsx)(`b`,{children:`Show`}),` hides a group/field from the add & edit form; `,(0,c.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:sb,Title:cb}=o.Typography,lb=(e,t)=>`${e}::${t}`,ub=e=>String(e??``).trim().toLowerCase();function db(e){let t=ub(e);for(let e of[`details`,`detail`])if(t.endsWith(e)){let n=t.slice(0,-e.length);if(n)return n}return``}function fb(e,t){let[n,r]=[ub(e),ub(t)],i=e=>e.replace(/s$/,``);return i(db(n))===i(r)||i(db(r))===i(n)}function pb(e){let t=new Set;return(e??[]).forEach(e=>{t.add(e.key),(e.children??[]).forEach(n=>t.add(lb(e.key,n.key)))}),t}function mb({role:t}){let n=Number(t?.roleId??0),[r,i]=(0,a.useState)([]),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(new Set),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)([]),C=(0,a.useMemo)(()=>x.filter(e=>fb(e,l)),[x,l]);(0,a.useEffect)(()=>{e.or().then(e=>{let t=tb(e).map(e=>e.value);i(t),u(e=>e||t[0]||``)}).catch(()=>i([])),e.Vr().then(e=>S([...new Set((Array.isArray(e)?e:[]).map(e=>String(e?.module??``).trim()).filter(Boolean))])).catch(()=>S([]))},[]);let w=(0,a.useCallback)(async()=>{if(l){m(!0);try{let t=await e.Vr(l);f(Array.isArray(t)?t:[])}catch(e){o.message.error(e.message),f([])}finally{m(!1)}}},[l]);(0,a.useEffect)(()=>{queueMicrotask(()=>{w()})},[w]);let T=(0,a.useCallback)(e=>{let t=d.filter(t=>t.roleId===e);return t.find(e=>e.module===l)??t[0]??null},[d,l]),E=(0,a.useMemo)(()=>T(0),[T]),D=(0,a.useMemo)(()=>T(n),[T,n]),O=(0,a.useMemo)(()=>E?.rowActions??D?.rowActions??[],[E,D]);(0,a.useEffect)(()=>{queueMicrotask(()=>{v(pb(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(lb(e.key,t.key)))}:e);g(!0);try{D?await e.di(D.id??D._id,r):await e.Yn({module:l,roleId:n,rowActions:r}),o.message.success(`Actions saved for ${t?.roleName??`role`}`),await w()}catch(e){o.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&w()}finally{g(!1)}}async function j(){if(D){g(!0);try{await e.ar(D.id??D._id),o.message.success(`Role override removed — this role now inherits the default actions`),await w()}catch(e){o.message.error(e.message)}finally{g(!1)}}}let M=[{title:`Action`,key:`identity`,render:(e,t)=>(0,c.jsxs)(o.Space,{direction:`vertical`,size:0,children:[(0,c.jsx)(sb,{strong:!0,children:t.label||t.key}),(0,c.jsx)(sb,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`behaviour`,width:220,render:(e,t)=>(0,c.jsxs)(o.Space,{direction:`vertical`,size:0,children:[(0,c.jsx)(o.Tag,{color:`blue`,style:{width:`fit-content`},children:t.actionType}),(0,c.jsx)(sb,{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,c.jsx)(o.Switch,{checked:_.has(t.key),onChange:e=>k(t.key,e,(t.children??[]).map(e=>lb(t.key,e.key)))})}],N=e=>[{title:`Child Action`,key:`identity`,render:(e,t)=>(0,c.jsxs)(o.Space,{direction:`vertical`,size:0,children:[(0,c.jsx)(sb,{strong:!0,children:t.label||t.key}),(0,c.jsx)(sb,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`behaviour`,width:220,render:(e,t)=>(0,c.jsx)(sb,{type:`secondary`,children:t.popupKey||t.routeTemplate||t.apiPath||t.actionType})},{title:`Enabled`,key:`enabled`,width:160,render:(t,n)=>(0,c.jsx)(o.Switch,{disabled:!_.has(e.key),checked:_.has(lb(e.key,n.key)),onChange:t=>k(lb(e.key,n.key),t)})}];return(0,c.jsxs)(`section`,{className:`admin-editor`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(cb,{level:4,children:`Role Actions`}),(0,c.jsxs)(sb,{type:`secondary`,children:[`Enable or disable row actions for `,t?.roleName??`this role`,`. The action library itself is managed in Configurations → Actions.`]})]}),(0,c.jsxs)(o.Space,{children:[D&&(0,c.jsx)(o.Popconfirm,{title:`Remove this role's override and inherit the default actions?`,okText:`Reset`,okType:`danger`,onConfirm:j,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.UndoOutlined,{}),loading:h,children:`Reset to Default`})}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:w,loading:p,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:h,disabled:!y||!l,onClick:A,children:`Save`})]})]}),(0,c.jsxs)(o.Space,{style:{marginBottom:12},wrap:!0,children:[(0,c.jsxs)(`label`,{children:[(0,c.jsx)(sb,{type:`secondary`,style:{display:`block`,marginBottom:4,fontSize:12},children:`Module`}),(0,c.jsx)(o.Select,{showSearch:!0,optionFilterProp:`label`,style:{width:220},mode:`tags`,maxCount:1,value:l?[l]:[],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,c.jsxs)(`div`,{style:{paddingTop:20},children:[D?(0,c.jsx)(o.Tag,{color:`green`,children:`Role override active`}):(0,c.jsx)(o.Tag,{color:`orange`,children:`Inheriting default (All Roles) — Save creates an override`}),y&&(0,c.jsx)(sb,{type:`warning`,style:{marginLeft:8},children:`Unsaved changes`})]})]}),C.length>0&&(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Spin,{spinning:p,children:(0,c.jsx)(o.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,c.jsx)(o.Table,{dataSource:(e.children??[]).map((e,t)=>({...e,_rowKey:e.key||t})),rowKey:`_rowKey`,columns:N(e),pagination:!1,size:`small`})}})})]})}var hb=[{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`}],gb=[`eq`,`neq`,`in`,`notIn`],_b=e=>gb.includes(e??`eq`),vb=`unique`,yb=[{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`}],bb=[{label:`On blur (recommended)`,value:`blur`},{label:`On submit only`,value:`submit`}],xb=`trim`,Sb=`blur`,Cb=[{label:`Look at the field (recommended)`,value:`field`},{label:`Also keep a hidden copy`,value:`index`}],wb=`field`,Tb=new Set(Cb.map(e=>e.value)),Eb=new Set([`blur`,`submit`,`change`]),Db=new Set([`file`,`text-editor`,`checkbox`]),Ob=`Uniqueness currently supports scalar values only — a single value compared against a single stored value.`;function kb(e={}){let t=String(e.type??`text`),n=e=>({supported:!1,reason:`${e} ${Ob}`});return Db.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 Ab=/^[A-Za-z_][A-Za-z0-9_-]*$/;function jb(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(!Ab.test(e))return`Invalid path segment "${e}" — letters, digits, _ and - only`}return``}function Mb(e={}){return String(e.payloadKey??``).trim()||String(e.field??``).trim()}function Nb(e={}){return{collectionField:Mb(e),normalizer:xb,skipBlank:!0,validateOn:Sb,enforcement:wb}}var Pb=new Set(yb.map(e=>e.value));function Fb(e,t={}){let n=e&&typeof e==`object`&&!Array.isArray(e)?e:{},r=Nb(t),i=String(n.collectionField??``).trim()||r.collectionField,a=Pb.has(n.normalizer)?n.normalizer:r.normalizer,o=Eb.has(n.validateOn)?n.validateOn:r.validateOn,s=n.skipBlank===void 0||n.skipBlank===null?r.skipBlank:!!n.skipBlank,c=Tb.has(n.enforcement)?n.enforcement:r.enforcement,l={...n,collectionField:i,normalizer:a,skipBlank:s,validateOn:o,enforcement:c},u=Rb(n.alsoCheck);return u.length?l.alsoCheck=u:delete l.alsoCheck,l}function Ib(){return{module:``,collection:``,collectionField:``,normalizer:``,message:``,excludeFrom:{path:``,matchField:``}}}function Lb(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 Rb(e){return Array.isArray(e)?e.map(Lb).filter(e=>e.module||e.collection):[]}function zb(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.`):jb(r)&&t.push(`Collection: ${jb(r)}`));let i=String(e.collectionField??``).trim();i&&jb(i)&&t.push(`Field in that collection: ${jb(i)}`);let a=String(e.excludeFrom?.path??``).trim();a&&jb(a)&&t.push(`Exclusion path: ${jb(a)}`);let o=String(e.excludeFrom?.matchField??``).trim();return o&&jb(o)&&t.push(`Exclusion match field: ${jb(o)}`),t}function Bb(e,t={}){if(!e||e.type!==`unique`)return[];let n=[],r=kb(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=jb(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())&&zb(e).forEach(e=>n.push(`Also check #${t+1}: ${e}`))}),n}function Vb(e){return!!e&&e.type===`unique`}function Hb(e){return(e?.validations??[]).some(Vb)}function Ub(e){return(e?.validations??[]).find(Vb)??null}function Wb({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()||Mb(n),isCrossModule:!!String(t??``).trim()&&String(t).trim()!==String(e??``).trim()}}var{Paragraph:Gb,Text:Kb}=o.Typography;function qb({open:t,scope:n,action:r,title:i,description:l,confirmLabel:u=`Confirm`,danger:d=!1,onCancel:f,onVerified:p,onConfirm:m}){let[h,g]=(0,a.useState)(``),[_,v]=(0,a.useState)(``),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(``),T=(0,a.useRef)(!1);async function E(){if(!(!n||!r)){b(!0),w(``);try{let t=await e.Gr(n,r);v(t?.data?.email||t?.email||`the registered approver`),o.message.success(`OTP sent`)}catch(e){w(e?.message||`Could not send the OTP`)}finally{b(!1)}}}(0,a.useEffect)(()=>{t&&!T.current&&(T.current=!0,g(``),w(``),v(``),E()),t||(T.current=!1)},[t]);async function D(){if(!h.trim()){w(`Enter the OTP sent to your email`);return}S(!0),w(``);try{let t=m?await m(h.trim()):await e.Vn(n,r,h.trim());o.message.success(t?.data?.message||t?.message||`Done`),p?.(t)}catch(e){w(e?.message||`Verification failed — check the code and try again`)}finally{S(!1)}}return(0,c.jsxs)(o.Modal,{open:t,onCancel:f,title:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.SafetyCertificateOutlined,{}),` `,i]}),destroyOnClose:!0,maskClosable:!x,footer:[(0,c.jsx)(o.Button,{onClick:f,disabled:x,children:`Cancel`},`cancel`),(0,c.jsx)(o.Button,{type:`primary`,danger:d,loading:x,onClick:D,children:u},`ok`)],children:[l&&(0,c.jsx)(Gb,{type:`secondary`,style:{fontSize:13,marginBottom:8},children:l}),(0,c.jsxs)(Gb,{type:`secondary`,style:{fontSize:13},children:[`This is a protected action. A one-time code has been emailed to`,` `,(0,c.jsx)(Kb,{strong:!0,children:_||`…`}),`. Enter it below to continue.`]}),(0,c.jsx)(o.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,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:C,style:{marginTop:12}}),(0,c.jsx)(`div`,{style:{marginTop:12},children:(0,c.jsx)(o.Button,{type:`link`,size:`small`,loading:y,onClick:E,style:{padding:0},children:`Resend code`})})]})}var{Text:Jb}=o.Typography;function Yb({moduleOptions:t=[]}){let[n,r]=(0,a.useState)(``),[i,l]=(0,a.useState)([]),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)([]),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1);(0,a.useEffect)(()=>{!n&&t.length&&r(t[0].value)},[t,n]);let v=(0,a.useCallback)(async t=>{if(t){h(!0);try{let[n,r]=await Promise.all([e.cr(t).catch(()=>[]),e.Nr(t).catch(()=>[])]),i=new Set,a=[];(Array.isArray(n)?n:[]).forEach(e=>{(e.fields??[]).forEach(t=>{let n=String(t.field??``).trim();!n||i.has(n)||(i.add(n),a.push({value:n,label:`${t.label??n} · ${n}`,group:e.label??e.name}))})}),l(a),p(r),d(r)}catch(e){o.message.error(e?.message||`Could not load default fields`)}finally{h(!1)}}},[]);(0,a.useEffect)(()=>{queueMicrotask(()=>{v(n)})},[n,v]);let y=(0,a.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(t){let r=await e.Qr(n,u,t);return p(u),r}return(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.SafetyCertificateOutlined,{}),title:`Default Fields`,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Select,{size:`small`,showSearch:!0,optionFilterProp:`label`,style:{width:220},placeholder:`Module`,value:n||void 0,options:t,onChange:r}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.SaveOutlined,{}),disabled:!n||!y,onClick:()=>_(!0),children:`Save (OTP)`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(Jb,{type:`secondary`,style:{fontSize:13,display:`block`,marginBottom:12},children:[`Fields chosen here are `,(0,c.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,c.jsxs)(o.Spin,{spinning:m,children:[(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsxs)(Jb,{type:`secondary`,style:{fontSize:12},children:[`Currently enforced (`,f.length,`): `]}),f.length?f.map(e=>(0,c.jsx)(o.Tag,{color:`blue`,style:{marginTop:4},children:e},e)):(0,c.jsx)(Jb,{type:`secondary`,style:{fontSize:12},children:`none`})]}),!m&&i.length===0&&(0,c.jsx)(o.Alert,{style:{marginTop:12},type:`info`,showIcon:!0,message:`This module has no form-group fields yet — configure its Form Groups first.`})]}),(0,c.jsx)(qb,{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(n)}})]})}var{Text:Xb}=o.Typography,Zb={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.`}},Qb=[`#0053a5`,`#52c41a`,`#722ed1`,`#fa8c16`,`#eb2f96`,`#13c2c2`],$b=[{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`}],ex=[{label:`Multi Select`,value:`multiselect`},{label:`Date Range`,value:`daterange`},{label:`Range Slider`,value:`range`},{label:`Date Range (with presets)`,value:`daterangePreset`}],tx=[{label:`query (all search fields)`,value:`query`},{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`}],nx=[`text`,`email`,`textarea`,`tagify`,`select`,`multiselect`],rx=[{label:`Slider + From/To`,value:`both`},{label:`Slider only`,value:`slider`},{label:`From / To only`,value:`inputs`}],ix=[{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`}],ax=[{label:`Country`,value:`country`},{label:`State (needs a Country field)`,value:`state`},{label:`City (needs a Country + State field)`,value:`city`}],ox=[{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:vb,hasValue:!0,valueType:`object`}],sx=hb,cx=gb,lx=[{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`}],ux=[{label:`(none)`,value:``},{label:`String`,value:`string`},{label:`Number`,value:`number`},{label:`Boolean`,value:`boolean`}],dx=[{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`}],fx={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 px(e){return ox.find(t=>t.value===e)??{hasValue:!1}}function mx(e){return[{key:`all`,label:`All`,color:`#8c8c8c`},...e.map((e,t)=>({key:e.key,label:e.label,color:Qb[t%Qb.length]}))]}function hx(e){return Object.fromEntries(e.map(({key:e})=>[e,{groups:[],loading:!1,loaded:!1,error:``}]))}function gx(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 _x(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return``}}function vx(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=gx(t.payloadTemplate);r&&(e.payloadTemplate=r);let i=gx(t.transformRule);return i&&(e.transformRule=i),e}var yx=[{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`}],bx=[`currentUserId`,`currentRoleId`,`currentUserName`,`currentUserEmail`,`currentReportingId`,`tenantId`,`businessId`,`businessUnitId`];function xx(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 Sx(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 Cx(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 Bb(r,n))t.push(`${e}: ${i}`)}return t}function wx(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 Tx=Object.freeze({mode:`newestFirst`,startField:`startDate`,endField:`endDate`}),Ex=Object.freeze({field:`startDate`,tieBreak:`endDate`,direction:`desc`,inProgressField:`currentStudyingHere`,inProgressFirst:!0,confirmMove:!0}),Dx=Object.freeze({levelField:`qualification`,requireBelow:!0,message:`You have entered only a higher qualification — {missing} is also required.`});function Ox(e=[]){return e.filter(e=>String(e?.field??``).trim()!==``).map((e,t)=>{let n=(e.validations??[]).filter(e=>e?.type).map(t=>{let n=px(t.type),r={type:t.type,message:t.message??``};if(n.hasValue&&t.value!==``&&t.value!==void 0&&t.value!==null?n.valueType===`object`?r.value=t.type===`unique`?Fb(t.value,e):t.value:r.value=n.valueType===`number`?Number(t.value):t.value:n.valueType===`object`&&t.type===`unique`&&(r.value=Nb(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.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=(e.options??[]).filter(e=>e?.label||e?.value)),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&&Im(r.booleanApiKey)&&(r.booleanCapable=!0),r.booleanCapable&&e.booleanPlaceholder&&(r.booleanPlaceholder=String(e.booleanPlaceholder).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.rangeKeys??``).split(`,`).map(e=>e.trim()).filter(Boolean);t.length===2&&(r.rangeKeys=t)}e.type===`daterangePreset`&&e.filterField&&(r.filterField=String(e.filterField).trim()),e.type===`checkbox`&&e.hideSelectAll&&(r.hideSelectAll=!0),vx(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 cx.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`,cx.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()},cx.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)};cx.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=Gf(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??Tx),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}:{},...wx(e.confirmMessages)?{confirmMessages:wx(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=(e.options??[]).filter(e=>e?.label||e?.value)),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=Sx(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||Ax.has(t)||(r[t]=n);return r})}function kx({collection:t,displayField:n,valueField:r,value:i,labelValue:s,onChange:l}){let[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)(!1),m=(0,a.useRef)(``),h=()=>{let i=`${t}|${n}|${r}`;!t||!n||m.current===i||(p(!0),e.Dr(t,n,r||`_id`).then(e=>{m.current=i,d(e)}).catch(()=>d([])).finally(()=>p(!1)))},g=i&&!u.some(e=>e.value===i)?[{label:s||i,value:i},...u]:u;return(0,c.jsx)(o.Select,{size:`small`,showSearch:!0,allowClear:!0,loading:f,placeholder:t?`Pick from ${t}`:`Configure a lookup first`,disabled:!t||!n,style:{width:220},optionFilterProp:`label`,options:g,value:i||void 0,onDropdownVisibleChange:e=>{e&&h()},onChange:(e,t)=>l(e??``,t?.label??``),getPopupContainer:()=>document.body})}var Ax=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(`.`)),jx=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 Mx(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??``,min:e.min??``,max:e.max??``,display:e.display??`both`,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:xx(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:_x(e.payloadTemplate),transformRule:_x(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:Gf(e.verifyLockedWhenFields).join(`, `),verifyLockedLabel:e.verifyLockedLabel??``,validations:(e.validations??[]).map(t=>({type:t.type,value:t.type===`unique`?Fb(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 Nx(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 Px(){let[t,n]=(0,a.useState)({});return(0,a.useEffect)(()=>{let t=!1;return e.Mr().then(e=>{t||n(e??{})}).catch(()=>{}),()=>{t=!0}},[]),(0,a.useMemo)(()=>e=>t[String(e??``).trim().toLowerCase()]??``,[t])}function Fx({form:t,fieldItems:n,add:r,remove:i,move:a,absBase:l,moduleFieldOptions:u,dragIndexRef:d,dragOverIndex:f,setDragOverIndex:p,onFieldKeySelect:m,expandedFieldKeys:h,onToggleField:g,defaultFieldSet:_=new Set,uniqueTarget:v={primaryModule:``,getTargetModule:()=>``,collectionForModule:()=>``}}){let y=[...l,`fields`];return(0,c.jsxs)(c.Fragment,{children:[n.map(({key:n,name:r,...l},b)=>{let x=[...y,r],S=t.getFieldValue(x)??{},C=h&&!h.has(b),w=t.getFieldValue(`formType`)===`search`;return(0,c.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,c.jsxs)(`div`,{className:`fg-field-card-inner`,children:[(0,c.jsx)(`span`,{className:`fg-drag-handle`,children:(0,c.jsx)(s.HolderOutlined,{})}),C?(0,c.jsxs)(`div`,{className:`fg-field-summary`,children:[(0,c.jsxs)(`button`,{type:`button`,className:`fg-field-summary-main`,onClick:()=>g(b),children:[(0,c.jsx)(s.RightOutlined,{className:`fg-field-summary-chevron`}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:S.label||S.field||`Field ${b+1}`}),(0,c.jsxs)(`small`,{children:[S.field||`Field key not set`,` · `,S.type||`text`]})]})]}),(0,c.jsxs)(o.Space,{size:4,children:[S.req&&(0,c.jsx)(o.Tag,{color:`red`,children:`Required`}),S.show===!1&&(0,c.jsx)(o.Tag,{children:`Hidden`}),(0,c.jsx)(o.Tooltip,{title:`Edit field settings`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>g(b)})}),(0,c.jsx)(o.Tooltip,{title:`Remove field`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.MinusCircleOutlined,{}),onClick:()=>i(r)})})]})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-body`,children:[h&&(0,c.jsxs)(`button`,{type:`button`,className:`fg-field-collapse-btn`,onClick:()=>g(b),children:[(0,c.jsx)(s.DownOutlined,{}),` Collapse field`]}),(0,c.jsx)(o.Form.Item,{...l,name:[r,`field`],label:`Field`,style:{marginBottom:10},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsx)(o.Form.Item,{...l,name:[r,`label`],label:`Label`,style:{marginBottom:8,flex:2},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Display label`})}),(0,c.jsx)(o.Form.Item,{...l,name:[r,`type`],label:`Type`,style:{marginBottom:8,flex:2},initialValue:`text`,children:(0,c.jsx)(o.Select,{size:`small`,options:w?[...$b,...ex]:$b})}),(0,c.jsx)(o.Form.Item,{...l,name:[r,`formatter`],label:`Formatter`,style:{marginBottom:8,flex:2},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`name / phone…`})})]}),(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Layout / Combine`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. client_rate`,style:{width:150},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`combineLabel`],label:`Combined Label`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Client Rate`,style:{width:160}})}),(0,c.jsx)(o.Form.Item,{name:[r,`combineRole`],label:`Role`,style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{name:[r,`combineToggleLabel`],label:`Toggle Label`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Range`,style:{width:130}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`target field key`,style:{width:150},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,step:.5,placeholder:`1`,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`Auto`,style:{width:110},options:[{label:`Half`,value:12},{label:`Full`,value:24}]})})]})]}),(0,c.jsx)(o.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=nx.includes(t)&&Pm.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Boolean Search`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,allowClear:!0,style:{width:240},placeholder:`Not sent`,options:tx})}),i?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),e([...x,`booleanCapable`])&&(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:360},placeholder:`e.g., (Java OR J2EE) AND "Spring Boot" NOT PHP`})})]}):nx.includes(t)&&(0,c.jsx)(`span`,{className:`fg-options-hint`,children:`Set the API key to query, skills, jobTitle or designation to allow Boolean mode on this field.`})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e(`formType`)!==`search`||e([...x,`type`])!==`checkbox`?null:(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Select All`}),(0,c.jsx)(`div`,{className:`fg-options-controls`,children:(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Shown`,unCheckedChildren:`Hidden`})})})]})}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`type`]);return[`range`,`number`].includes(t)?(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:t===`range`?`Range`:`Bounds`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.Form.Item,{name:[r,`min`],label:`Min`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,placeholder:`0`,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:[r,`max`],label:`Max`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,placeholder:`30`,style:{width:90}})}),t===`range`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:170},options:rx})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`experienceFrom,experienceTo`,style:{width:220},className:`fg-mono-input`})})]})]})]}):null}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`type`])===`daterangePreset`?(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Date Filter`}),(0,c.jsx)(`div`,{className:`fg-options-controls`,children:(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`createdAt`,style:{width:200},className:`fg-mono-input`})})})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:t})=>{if(t([...x,`type`])!==`file`)return null;let n=t([...x,`multiple`]);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`File Options`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:230},options:e.ut})}),(0,c.jsx)(o.Form.Item,{name:[r,`multiple`],label:`Upload Mode`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Multiple`,unCheckedChildren:`Single`})}),n&&(0,c.jsx)(o.Form.Item,{name:[r,`maxCount`],label:`Max files`,style:{marginBottom:0},initialValue:5,rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:2,placeholder:`e.g. 5`,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. file`,style:{width:120},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. passportUploadName`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. passportCopyLocation`,style:{width:190},className:`fg-mono-input`})})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:t})=>{let n=t([...x,`type`]);if(![`select`,`radio`,`checkbox`,`location`].includes(n))return null;let i=n===`location`,a=t([...x,`dataSource`])??`static`;return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:i?`Location selection`:`Options / Values`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[!i&&(0,c.jsx)(o.Form.Item,{name:[r,`dataSource`],label:`Source`,style:{marginBottom:0},initialValue:`static`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:190},options:ix})}),(n===`select`||i)&&(0,c.jsx)(o.Form.Item,{name:[r,`multiSelect`],label:`Multi Select`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Multi`,unCheckedChildren:`Single`})}),a===`master`&&(0,c.jsx)(o.Form.Item,{name:[r,`masterName`],label:`Master Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter master name`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. tracker`,style:{width:140}})}),a===`group`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`groupName`],label:`Group Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter group name`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. users`,style:{width:140}})}),String(t([...x,`groupName`])??``).toLowerCase().trim()===`users`&&(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. manager`,style:{width:160}})})]}),a===`locationMaster`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`locationLevel`],label:`Level`,style:{marginBottom:0},initialValue:`country`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:220},options:ax})}),[`state`,`city`].includes(t([...x,`locationLevel`]))&&(0,c.jsx)(o.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,c.jsx)(o.AutoComplete,{size:`small`,style:{width:220},placeholder:`e.g. address.country`,options:(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})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})}),t([...x,`locationLevel`])===`city`&&(0,c.jsx)(o.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,c.jsx)(o.AutoComplete,{size:`small`,style:{width:220},placeholder:`e.g. address.state`,options:(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})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})})]})]}),!i&&(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Typed OK`,unCheckedChildren:`List only`})}),t([...x,`allowCustomValues`])&&(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`,`,style:{width:90},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.AutoComplete,{size:`small`,style:{width:230},placeholder:`blank = all options`,options:(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})`})),filterOption:(e,t)=>String(t?.label??``).toLowerCase().includes(String(e).toLowerCase()),getPopupContainer:()=>document.body})})]}),!i&&a===`static`&&(0,c.jsxs)(`div`,{className:`fg-static-options`,children:[(0,c.jsx)(`span`,{className:`fg-static-options-hint`,children:`Label / Value pairs`}),[`checkbox`,`radio`].includes(n)&&t(`formType`)===`search`&&(0,c.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:`Locked options are pre-selected and cannot be unchecked by the user.`}),(0,c.jsx)(o.Form.List,{name:[r,`options`],children:(e,{add:r,remove:i})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:r})=>(0,c.jsxs)(`div`,{className:`fg-option-row`,children:[(0,c.jsx)(o.Form.Item,{name:[r,`label`],style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Label`})}),(0,c.jsx)(o.Form.Item,{name:[r,`value`],style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Value`,className:`fg-mono-input`})}),[`checkbox`,`radio`].includes(n)&&t(`formType`)===`search`&&(0,c.jsx)(o.Form.Item,{name:[r,`locked`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Pre-selected on load and cannot be unchecked.`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Locked`,unCheckedChildren:`Free`})}),(0,c.jsx)(s.MinusCircleOutlined,{onClick:()=>i(r),className:`fg-remove-icon`})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>r({label:``,value:``}),className:`fg-add-option-btn`,children:`Add Option`})]})})]}),a===`module`&&(0,c.jsx)(`p`,{className:`fg-source-hint`,children:`Options fetched from the module's distinct field values at runtime.`}),a===`group`&&(0,c.jsx)(`p`,{className:`fg-source-hint`,children:`Use "users" to load all users from the MongoDB-backed user collection.`}),a===`lookup`&&(0,c.jsxs)(`div`,{className:`fg-lookup-block`,children:[(0,c.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:8},children:`Cross-collection lookup — shows label, stores FK value.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsx)(o.Form.Item,{name:[r,`lookupCollection`],label:`Collection`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendors`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`displayField`],label:`Display Field`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendorContact.firstName`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`displayField2`],label:`Display Field 2`,style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendorContact.lastName`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`valueField`],label:`Value Field (FK)`,style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. _id`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. clientId`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-lookup-conditions`,style:{marginTop:12},children:[(0,c.jsxs)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:[(0,c.jsx)(`b`,{children:`Dropdown conditions`}),` — every condition must match (AND). Evaluated on the server, so they restrict the data, not just the UI.`]}),(0,c.jsx)(o.Form.List,{name:[r,`lookupFilters`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t,...i})=>(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`,flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. roleId`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{...i,name:[t,`op`],label:`Operator`,style:{marginBottom:0,width:130},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,options:yx})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,options:[{label:`Literal value`,value:`literal`},{label:`Signed-in user`,value:`identity`},{label:`Another collection`,value:`collection`}]})}),(0,c.jsx)(o.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,c.jsx)(`span`,{className:`fg-source-hint`,style:{flex:1},children:`No value needed.`});let s=e([...n,`valueSource`])??`literal`;return s===`identity`?(0,c.jsx)(o.Form.Item,{...i,name:[t,`valueFrom`],label:`Identity`,style:{marginBottom:0,flex:1,minWidth:170},children:(0,c.jsx)(o.Select,{size:`small`,showSearch:!0,placeholder:`currentUserId`,options:bx.map(e=>({label:e,value:e}))})}):s===`collection`?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{...i,name:[t,`srcCollection`],label:`Collection`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. roles`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{...i,name:[t,`srcValueField`],label:`Value field`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{...i,name:[t,`srcMatchField`],label:`Where field`,style:{marginBottom:0,flex:1,minWidth:120},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. roleName`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. RECRUITER`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`none`,options:bx.map(e=>({label:e,value:e}))})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Chain`,unCheckedChildren:`Direct`})})]}):(0,c.jsx)(o.Form.Item,{...i,name:[t,`value`],label:`Value`,style:{marginBottom:0,flex:1,minWidth:150},tooltip:`Comma-separate for a list.`,children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Active`,className:`fg-mono-input`})})}}),(0,c.jsx)(o.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>n(t),children:`Remove`})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,onClick:()=>t({op:`eq`,valueSource:`literal`}),children:`+ Add condition`})]})})]}),(0,c.jsxs)(`div`,{className:`fg-lookup-row-filters`,style:{marginTop:12},children:[(0,c.jsxs)(`p`,{className:`fg-source-hint`,style:{marginBottom:6},children:[(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. roleId`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`empty = must be true`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. reportingId`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`currentUserId`,options:[{label:`Signed-in user (currentUserId)`,value:`currentUserId`}]})})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Add button`,unCheckedChildren:`No add`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`same as Collection above`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Edit button`,unCheckedChildren:`No edit`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`same as Collection above`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. employerId`,className:`fg-mono-input`})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:t})=>{let n=t([...x,`quickCreateModule`])||t([...x,`lookupCollection`])||``,i=t([...x,`quickEditModule`])||t([...x,`lookupCollection`])||``;return(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:e.ct({quickCreateModule:n},n)})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:e.lt({quickEditModule:i},i)})})]})}}),(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Notice`,unCheckedChildren:`No Notice`})}),(0,c.jsx)(o.Form.Item,{name:[r,`quickCreateNotice`,`title`],label:`Notice Title`,style:{marginBottom:0,flex:1},tooltip:`Popup title. Default: New record created.`,children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`New record created`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`defaults to Display Field`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,alignItems:`flex-end`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`quickCreateNotice`,`showRecordName`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Show the created record's name in the popup.`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Name`,unCheckedChildren:`No Name`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`Record name`})}),(0,c.jsx)(o.Form.Item,{name:[r,`quickCreateNotice`,`showCreator`],valuePropName:`checked`,style:{marginBottom:0},tooltip:`Show who created the record.`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Creator`,unCheckedChildren:`No Creator`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`Created by`})})]}),(0,c.jsx)(o.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,c.jsx)(o.Input.TextArea,{size:`small`,rows:3,placeholder:`Leave empty for the standard message`})})]})]})}}),(0,c.jsxs)(`div`,{className:`fg-toggles-row`,children:[(()=>{let e=_.has(S.field);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{...l,name:[r,`show`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Show`,unCheckedChildren:`Hide`,checked:e?!0:void 0,disabled:e,title:e?`Locked — Default Field (always shown)`:void 0})}),(0,c.jsx)(o.Form.Item,{...l,name:[r,`req`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Req`,unCheckedChildren:`Opt`,checked:e?!0:void 0,disabled:e,title:e?`Locked — Default Field (always required)`:void 0})})]})})(),(0,c.jsx)(o.Form.Item,{...l,name:[r,`showOnAdd`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,tooltip:`Show this field on Add. Turn off for edit-only fields.`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Add`,unCheckedChildren:`No Add`})}),(0,c.jsx)(o.Form.Item,{...l,name:[r,`edit`],valuePropName:`checked`,style:{marginBottom:0},initialValue:!0,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Edit`,unCheckedChildren:`Read`})}),(0,c.jsx)(o.Form.Item,{...l,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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Repeat`,unCheckedChildren:`Single`})}),(0,c.jsx)(o.Form.Item,{...l,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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Client Gate`,unCheckedChildren:`Client Gate`})}),(0,c.jsx)(o.Form.Item,{...l,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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Info`,unCheckedChildren:`Info`})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`addRow`])?(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Repeat Field Options`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,placeholder:`0`,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,placeholder:`1`,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,placeholder:`∞`,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Add Skill`,style:{width:170}})})]}),(0,c.jsxs)(`div`,{className:`fg-subfields-block`,style:{marginTop:10},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Sub-fields (repeat a group together)`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`leave empty to repeat a single value`})]}),(0,c.jsx)(o.Form.List,{name:[r,`subFields`],children:(t,{add:n,remove:r})=>(0,c.jsxs)(`div`,{children:[t.map(({key:t,name:n,...i})=>(0,c.jsxs)(`div`,{className:`fg-subfield-row`,style:{marginBottom:10},children:[(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. question`,style:{width:140},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{...i,name:[n,`label`],label:`Label`,rules:[{required:!0,message:`Label`}],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Question`,style:{width:150}})}),(0,c.jsx)(o.Form.Item,{...i,name:[n,`type`],label:`Type`,initialValue:`text`,style:{marginBottom:0},children:(0,c.jsx)(o.Select,{size:`small`,options:$b,style:{width:130}})}),(0,c.jsx)(o.Form.Item,{...i,name:[n,`req`],label:`Required`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.Form.Item,{...i,name:[n,`col`],label:`Width`,tooltip:`Grid span: 12 = half row, 24 = full row. Blank = 12.`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,placeholder:`12`,style:{width:70}})}),(0,c.jsx)(o.Tooltip,{title:`Remove sub-field`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>r(n),"aria-label":`Remove sub-field`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Options / Values`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.Form.Item,{name:[n,`dataSource`],label:`Source`,style:{marginBottom:0},initialValue:`static`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:190},options:ix})}),t===`select`&&(0,c.jsx)(o.Form.Item,{name:[n,`multiSelect`],label:`Multi Select`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Multi`,unCheckedChildren:`Single`})}),r===`master`&&(0,c.jsx)(o.Form.Item,{name:[n,`masterName`],label:`Master Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter master name`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. tracker`,style:{width:140}})}),r===`group`&&(0,c.jsx)(o.Form.Item,{name:[n,`groupName`],label:`Group Name`,style:{marginBottom:0},rules:[{required:!0,message:`Enter group name`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. users`,style:{width:140}})})]}),r===`static`&&(0,c.jsxs)(`div`,{className:`fg-static-options`,children:[(0,c.jsx)(`span`,{className:`fg-static-options-hint`,children:`Label / Value pairs`}),(0,c.jsx)(o.Form.List,{name:[n,`options`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-option-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`label`],style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Label`})}),(0,c.jsx)(o.Form.Item,{name:[t,`value`],style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Value`,className:`fg-mono-input`})}),(0,c.jsx)(s.MinusCircleOutlined,{onClick:()=>n(t),className:`fg-remove-icon`})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({label:``,value:``}),className:`fg-add-option-btn`,children:`Add Option`})]})})]}),r===`group`&&(0,c.jsx)(`p`,{className:`fg-source-hint`,children:`Use "users" to load all users from the MongoDB-backed user collection.`}),r===`lookup`&&(0,c.jsxs)(`div`,{className:`fg-lookup-block`,children:[(0,c.jsx)(`p`,{className:`fg-source-hint`,style:{marginBottom:8},children:`Cross-collection lookup — shows label, stores FK value.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsx)(o.Form.Item,{name:[n,`lookupCollection`],label:`Collection`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendors`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[n,`displayField`],label:`Display Field`,style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendorContact.firstName`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[n,`displayField2`],label:`Display Field 2`,style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. vendorContact.lastName`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[n,`valueField`],label:`Value Field (FK)`,style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`_id`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. _id`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. clientId`,className:`fg-mono-input`})})]})]})]})}})]},t)),(0,c.jsx)(o.Button,{type:`dashed`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>n({type:`text`,req:!1}),children:`Add Sub-field`})]})})]})]}):null}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,c.jsx)(o.Form.Item,{name:[r,`placeholder`],label:`Placeholder`,style:{marginBottom:0,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Admin-controlled placeholder`})}),(0,c.jsx)(o.Form.Item,{name:[r,`hidePlaceholder`],label:`Hide Placeholder`,valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hidden`,unCheckedChildren:`Shown`})})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. submission.viewRate`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. submission.editRate`})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([...x,`clientScope`])?(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Client Gate Message`}),(0,c.jsx)(o.Form.Item,{name:[r,`clientGateMessage`],style:{marginBottom:0},children:(0,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown below 'Select Client' in the add form (leave blank for default)`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Reset form on client change`,unCheckedChildren:`Keep form values`})})]}):null}),(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[(0,c.jsx)(s.InfoCircleOutlined,{}),` Help Text`]}),(0,c.jsx)(o.Form.Item,{...l,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,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Shown when users hover this field`})}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e([...x,`infoEnabled`])?(0,c.jsx)(o.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,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the info icon`})}):null})]}),(0,c.jsx)(o.Form.Item,{...l,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,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Checks against other records and other rows`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On blur`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Enforced`,unCheckedChildren:`Off`})})]}),(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`showIf`,`field`]),n=e([...x,`showIf`,`operator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Show Condition`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`field`],label:`Show only when field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`field key — blank = always show`,style:{width:210},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. yes`,style:{width:100},className:`fg-mono-input`})})]})]}),t&&(0,c.jsx)(o.Form.List,{name:[r,`showIf`,`conditions`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{style:{marginTop:8},children:[e.length>0&&(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`logic`],label:`Combine when`,style:{marginBottom:6},initialValue:`and`,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:t})=>{let r=t([...x,`showIf`,`conditions`,e.name,`operator`])??`eq`,i=cx.includes(r);return(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[(0,c.jsx)(o.Form.Item,{name:[e.name,`field`],label:`And field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`field key`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[e.name,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[e.name,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma for list`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,onClick:()=>n(e.name),children:`Remove`})]})}},e.key)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,style:{marginTop:4},onClick:()=>t({field:``,operator:`eq`,value:``}),children:`+ Add condition`})]})}),t&&(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`labelWhen`,`field`]),n=e([...x,`labelWhen`,`operator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Label`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`field`],label:`Watch field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = use normal label`,style:{width:190},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`label`],label:`Alternate label`,style:{marginBottom:0},rules:[{required:!0,message:`Enter alternate label`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Employer Rate`,style:{width:170}})})]})]}),t&&(0,c.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Only the displayed label changes. The field key and submitted payload stay unchanged.`})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`colWhenField`]),n=e([...x,`colWhenOperator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Width`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`colWhenField`],label:`Watch field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = always use Width`,style:{width:190},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`colWhenOperator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`colWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`colWhenCol`],label:`Width when matched`,style:{marginBottom:0},rules:[{required:!0,message:`Enter a width (1-24)`}],children:(0,c.jsx)(o.InputNumber,{size:`small`,min:1,max:24,style:{width:150},placeholder:`e.g. 6`})})]})]}),t&&(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`verifyAction`]);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Field Verification`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`verifyAction`],label:`Action`,style:{marginBottom:0},children:(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`None`,style:{width:130},options:[{label:`Email`,value:`email`}]})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`verifyResultField`],label:`Result field`,style:{marginBottom:0},rules:[{required:!0,message:`Result field is required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyTimestampField`],label:`Timestamp field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. validatedAt`,style:{width:150},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyIdleLabel`],label:`Initial text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Verify Email`,style:{width:130}})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyRetryLabel`],label:`Retry text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Re Verify`,style:{width:120}})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifySuccessLabel`],label:`Success text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Valid`,style:{width:110}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. isAccountCreate`,style:{width:190},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyLockedLabel`],label:`Locked text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Verified`,style:{width:110}})})]})]}),t&&(0,c.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,c.jsx)(o.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),l=[`label`,`object`,`custom`].includes(i);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Payload Mapping`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`payloadKey`],label:`Payload Key`,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`defaults to field key`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`source key (cross-module prefill)`,style:{width:200},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:260},placeholder:`Last recorded: {value}`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. job`,style:{width:160},className:`fg-mono-input`})}),(0,c.jsx)(o.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`]),l=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,c.jsxs)(`div`,{style:{width:`100%`,margin:`4px 0 8px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,c.jsx)(Xb,{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,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],[...n,{field:``,value:``,setValue:``}]),children:`Add`})]}),n.length>0&&(0,c.jsx)(o.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,c.jsx)(o.Checkbox,{children:`Reset this field when the condition no longer matches`})}),n.length>0&&(0,c.jsx)(o.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,c.jsx)(o.Checkbox,{children:`Offer the chosen record ONLY while its condition matches (hide it otherwise)`})}),n.map((e,d)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`,marginTop:6},children:[(0,c.jsx)(o.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,c.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`=`}),(0,c.jsx)(o.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,c.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`→`}),e.clearValue?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12,width:220},children:`clear this field`}):(0,c.jsx)(kx,{collection:i,displayField:a,valueField:l,value:e.setValue,labelValue:e.setValueLabel,onChange:(e,t)=>u(d,{setValue:e,setValueLabel:t})}),(0,c.jsx)(o.Checkbox,{checked:!!e.clearValue,onChange:e=>u(d,{clearValue:e.target.checked}),children:(0,c.jsx)(`span`,{style:{fontSize:12},children:`Clear`})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],n.filter((e,t)=>t!==d))})]},d))]})}}),(0,c.jsx)(o.Form.Item,{name:[r,`dataType`],label:`Data Type`,style:{marginBottom:8},initialValue:`auto`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:170},options:lx,getPopupContainer:()=>document.body})}),n===`array`&&(0,c.jsx)(o.Form.Item,{name:[r,`elementType`],label:`Array Element Type`,style:{marginBottom:8},children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:ux,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.Form.Item,{name:[r,`payloadMode`],label:`Payload Mode`,style:{marginBottom:8},initialValue:`auto`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:210},options:dx,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.Form.Item,{name:[r,`defaultValue`],label:`Default Value`,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`optional`,style:{width:130}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. 0, candidate`,style:{width:170}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`linkedIn, socialProfiles[type=linkedin].value`,style:{width:300},className:`fg-mono-input`})})]}),(l||a)&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsx)(o.Form.Item,{name:[r,`valueKey`],label:`Value Key (id)`,style:{marginBottom:8,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. id`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`displayKey`],label:`Display Key (label)`,style:{marginBottom:8,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. name`,className:`fg-mono-input`})}),a&&(0,c.jsx)(o.Form.Item,{name:[r,`richValue`],label:`Keep label`,valuePropName:`checked`,style:{marginBottom:8},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})})]}),i===`custom`&&(0,c.jsxs)(`div`,{style:{marginBottom:8},children:[(0,c.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Payload Template (JSON) — tokens: `,`{{value}} {{label}} {{raw.field}}`]}),(0,c.jsx)(o.Form.Item,{name:[r,`payloadTemplate`],style:{marginBottom:0},children:(0,c.jsx)(o.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "countryId": "{{value}}", "countryName": "{{label}}" }`})})]}),(0,c.jsxs)(`details`,{style:{marginTop:4},children:[(0,c.jsx)(`summary`,{className:`fg-source-hint`,style:{cursor:`pointer`},children:`Advanced: transform rule / omit empty`}),(0,c.jsxs)(`div`,{style:{marginTop:6},children:[(0,c.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Transform Rule (JSON) — e.g. `,`{ "map": { "true": "high", "false": "medium" } }`]}),(0,c.jsx)(o.Form.Item,{name:[r,`transformRule`],style:{marginBottom:6},children:(0,c.jsx)(o.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "map": { "true": "high" }, "default": "medium" }`})}),(0,c.jsx)(o.Form.Item,{name:[r,`omitEmpty`],label:`Omit when empty`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Omit`,unCheckedChildren:`Send`})})]})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:t})=>{let n=t([...x,`type`]);if([`select`,`radio`,`checkbox`,`date`,`time`,`file`,`location`].includes(n))return null;let i=t([...x,`validator`,`type`]),a=i&&![`email`,`websiteUrl`,`jobDescription`].includes(i),s=i===`jobDescription`;return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Input Validator`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`type`],label:`Type`,style:{marginBottom:0},children:(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`None — no char restriction`,style:{width:260},options:e.yt})}),a&&(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`maxLength`],label:`Max Length`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,placeholder:`e.g. 55`,style:{width:90}})}),s&&(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`maxChars`],label:`Max Chars`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,placeholder:`1500`,style:{width:90}})}),i&&(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:t([...x,`label`])||`Field`,style:{width:180}})})]})]})}}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Grey this out when a tick-box is ticked`}),(0,c.jsx)(o.Form.Item,{name:[r,`disabledByField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key (e.g. currentlyPursuing)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsx)(`span`,{className:`fg-options-label`,children:`Require this once a sibling field has a value`}),(0,c.jsx)(o.Form.Item,{name:[r,`requiredIfField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key (e.g. empSigninAuthAlternatePhone)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Put the country code in its own box`}),(0,c.jsx)(o.Form.Item,{name:[r,`splitDialCodeInto`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. contactCountryCode`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Empty another box when this is ticked`}),(0,c.jsx)(o.Form.Item,{name:[r,`linkedClearField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key to clear (e.g. endDate)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(o.Form.Item,{name:[r,`exclusiveInGroup`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`One row only`,unCheckedChildren:`Any row`})}),(0,c.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`When this changes, clear the rest of the group`}),(0,c.jsx)(o.Form.Item,{name:[r,`clearGroupOnChange`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Clear`,unCheckedChildren:`Keep`})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Autofill Fields (JSON)`}),(0,c.jsx)(o.Form.Item,{name:[r,`autofillFrom`],style:{marginBottom:0},children:(0,c.jsx)(o.Input.TextArea,{rows:3,className:`fg-mono-input`,placeholder:`[{"optionKey":"vendorContact.email","targetField":"vendorEmail"}]`})}),(0,c.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,c.jsx)(`b`,{children:` optionKey`}),` is where the value sits on the picked record, and`,(0,c.jsx)(`b`,{children:` targetField`}),` is the box to put it in.`]})]})]}):null}}),(0,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`Validations`})]}),(0,c.jsx)(o.Form.List,{name:[r,`validations`],children:(e,{add:n,remove:i})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:n})=>(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:e})=>{let a=e([...y,r,`validations`,n,`type`]),l=px(a),u=e([...y,r,`type`]),d=a===`dateAfterField`||a===`dateBeforeField`,f=(e(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=(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})`})),m=ox.filter(e=>u===`date`?e.dateOnly||e.value===`required`||e.value===`unique`:!e.dateOnly).map(e=>({label:e.label,value:e.value})),h=a===vb,g=e([...y,r])??{},_=kb(g),b=[...y,r,`validations`,n,`value`],x=h?Fb(e(b),g):null,S=h?Wb({primaryModule:v.primaryModule,groupTargetModule:v.getTargetModule(),field:g,config:x,collectionForModule:v.collectionForModule}):null,C=(e(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,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,placeholder:u===`date`?`Date condition`:`Type`,style:{width:210},listHeight:400,getPopupContainer:()=>document.body,options:m,onChange:e=>{if(e===`unique`){let e=t.getFieldValue(b);t.setFieldValue(b,Fb(e,t.getFieldValue([...y,r])??{}))}else typeof t.getFieldValue(b)==`object`&&t.setFieldValue(b,``)}})}),l.hasValue&&!h&&(0,c.jsx)(o.Form.Item,{name:[n,`value`],style:{marginBottom:0},children:d?(0,c.jsx)(o.Select,{size:`small`,showSearch:!0,allowClear:!0,placeholder:`Related date field`,style:{width:210},options:f,optionFilterProp:`label`,getPopupContainer:()=>document.body}):(0,c.jsx)(o.Input,{size:`small`,type:l.valueType===`number`?`number`:`text`,placeholder:l.placeholder,style:{width:90}})}),l.needsField&&(0,c.jsx)(o.Form.Item,{name:[n,`field`],style:{marginBottom:0},rules:[{required:!0,message:`Pick the capping field`}],children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{name:[n,`message`],style:{marginBottom:0,flex:1},rules:l.messageOptional?[]:[{required:!0,whitespace:!0,message:`Message required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:l.messageOptional?`Optional — uses default`:h?`e.g. Email already present`:`Error message shown to user`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>i(n)})]}),d&&(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Start and end date rules`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Different days`,unCheckedChildren:`Same day OK`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,placeholder:`e.g. 6`,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:[n,`minGap`,`unit`],label:`Unit`,style:{marginBottom:0},initialValue:`month`,children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Uniqueness settings`}),_.supported?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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=jb(t);return n?Promise.reject(Error(n)):Promise.resolve()}}],children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:210},options:yb,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:190},options:bb,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Skip`,unCheckedChildren:`Check`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:220},options:Cb,getPopupContainer:()=>document.body})})]}),(0,c.jsxs)(`p`,{className:`fg-source-hint`,style:{marginTop:6},children:[`Target module: `,(0,c.jsx)(`code`,{children:S?.module||`—`}),` · `,`Target collection: `,(0,c.jsx)(`code`,{children:S?.collection||`resolved on the server`}),` · `,`Form field: `,(0,c.jsx)(`code`,{children:S?.formField||`—`}),` · `,`Stored field: `,(0,c.jsx)(`code`,{children:S?.storedField||`—`})]}),S?.isCrossModule&&(0,c.jsxs)(`p`,{className:`fg-source-hint`,children:[`This group writes to `,(0,c.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,c.jsx)(o.Form.List,{name:[n,`value`,`alsoCheck`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{style:{marginTop:8},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Also check these collections`}),e.map(({key:e,name:t,...r})=>(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`,marginTop:4},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. users`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`(optional)`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. email`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:190},className:`fg-mono-input`,placeholder:`e.g. recruiters.accountUserId`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:140},className:`fg-mono-input`,placeholder:`_id`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`(uses rule message)`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginBottom:6},onClick:()=>n(t)})]},e)),(()=>{let e=(x?.alsoCheck??[]).flatMap((e,t)=>zb(e).map(e=>`#${t+1}: ${e}`));return e.length?(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,style:{marginTop:6},message:e[0]}):null})(),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t(Ib()),children:`Add collection`}),(0,c.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,c.jsx)(o.Alert,{type:`warning`,showIcon:!0,style:{marginTop:4},message:`Uniqueness is not available for this field type`,description:_.reason})]})]})}},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>n({type:``,value:``,field:``,message:``}),className:`fg-add-val-btn`,children:`Add Validation`})]})})]}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`Override checkbox`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:280},placeholder:`e.g. Rate agreed above the job rate`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,className:`fg-mono-input`,style:{width:200},placeholder:`blank = automatic`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Saved`,unCheckedChildren:`Session`})})]})]}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmTitle`],label:`Confirm title`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:300},placeholder:`blank = a sensible default`})}),(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmOkText`],label:`Confirm button`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`e.g. Yes, remove the limit`})}),(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmCancelText`],label:`Cancel button`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`e.g. Keep the limit`})})]}),(0,c.jsx)(o.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,c.jsx)(o.Input.TextArea,{size:`small`,rows:2,placeholder:`blank = a sensible default naming this field`})}),(0,c.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,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.ThunderboltOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`AI Actions`})]}),(0,c.jsx)(o.Form.List,{name:[r,`aiActions`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-ai-action-card`,children:[(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`key`],style:{marginBottom:0},rules:[{required:!0,message:`Key`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`key (e.g. generateJD)`,style:{width:150}})}),(0,c.jsx)(o.Form.Item,{name:[t,`label`],style:{marginBottom:0},rules:[{required:!0,message:`Label`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Button label`,style:{width:170}})}),(0,c.jsx)(o.Form.Item,{name:[t,`trigger`],style:{marginBottom:0},initialValue:`click`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:100},options:[{label:`Click`,value:`click`},{label:`Upload`,value:`upload`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`bodyType`],style:{marginBottom:0},initialValue:`json`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:110},options:[{label:`JSON`,value:`json`},{label:`Multipart`,value:`multipart`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`position`],style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>n(t)})]}),(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`serviceKey`],style:{marginBottom:0},rules:[{required:!0,message:`Service key`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Service key (e.g. pyOps)`,style:{width:170}})}),(0,c.jsx)(o.Form.Item,{name:[t,`endpointPath`],style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Endpoint path`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/promtJD`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.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,c.jsx)(o.Form.List,{name:[t,`inputs`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`param`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`param`,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:[t,`sourceField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`source field`,className:`fg-mono-input`,style:{width:150}})}),(0,c.jsx)(o.Form.Item,{name:[t,`kind`],style:{marginBottom:0},initialValue:`text`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:90},options:[{label:`Text`,value:`text`},{label:`File`,value:`file`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`transform`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`transform`,style:{width:120}})}),(0,c.jsx)(o.Form.Item,{name:[t,`group`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`group (either/or)`,style:{width:130}})}),(0,c.jsx)(o.Form.Item,{name:[t,`minWords`],style:{marginBottom:0},children:(0,c.jsx)(o.InputNumber,{size:`small`,min:0,placeholder:`min words`,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:[t,`required`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Checkbox,{children:`Required`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,onClick:()=>n(t)})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({kind:`text`}),children:`Add Input`})]})})]}),(0,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Where the details sit in the reply (optional)`}),(0,c.jsx)(o.Form.Item,{name:[t,`responseDataPath`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. data`,className:`fg-mono-input`,style:{width:200}})}),(0,c.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,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Before filling in the form`}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmWhen`],style:{marginBottom:0},initialValue:`targetsFilled`,children:(0,c.jsx)(o.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,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e([...x,`aiActions`,t,`confirmWhen`])===`never`?null:(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`title`],label:`Question heading`,style:{marginBottom:0,flex:`1 1 220px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Fill the form from this file?`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`body`],label:`Explanation`,style:{marginBottom:0,flex:`1 1 320px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`We read details from the uploaded file. Applying them will replace what you have already entered.`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`ok`],label:`Yes button`,style:{marginBottom:0,flex:`0 1 160px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Parse & fill`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`cancel`],label:`No button`,style:{marginBottom:0,flex:`0 1 180px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Keep what I typed`})})]})})]})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({trigger:`click`,bodyType:`json`,inputs:[]}),className:`fg-add-val-btn`,children:`Add AI Action`})]})})]})]}),(0,c.jsx)(o.Tooltip,{title:`Remove field`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>i(r),"aria-label":`Remove field`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]})]})},n)}),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{r({type:`text`,show:!0,req:!1,edit:!0,dataSource:`static`,masterName:``,options:[]}),g?.(n.length,!0)},block:!0,className:`fg-add-field-btn`,children:`Add Field`})]})}function Ix({open:t,editingGroup:n,defaultModule:r,moduleOptions:i,allGroupsByModule:l,onClose:u,onSaved:d,onSaveGroup:f}){let[p]=o.Form.useForm(),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(r),[v,y]=(0,a.useState)({}),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)(()=>new Set),[w,T]=(0,a.useState)(null),[E,D]=(0,a.useState)(()=>new Set),[O,k]=(0,a.useState)(`settings`),[A,j]=(0,a.useState)(!1),M=(0,a.useRef)({}),N=(0,a.useRef)(null),P=Px();(0,a.useEffect)(()=>{if(!t||!g)return;let n=!1;return e.Nr(g).then(e=>{n||C(new Set(Array.isArray(e)?e:[]))}).catch(()=>{n||C(new Set)}),()=>{n=!0}},[t,g]);async function F(t){if(!(!t||M.current[t])){M.current[t]=`loading`,x(!0);try{let n=await e.Fr(t);y(e=>({...e,[t]:n})),M.current[t]=`loaded`}catch{delete M.current[t]}finally{x(!1)}}}(0,a.useEffect)(()=>{if(!t)return;let e=n?.module??r;_(e),n?p.setFieldsValue({module:n.module,name:n.name,label:n.label,addRow:n.addRow??!1,hideGroup:n.hideGroup??!1,hideGroupInForm:n.hideGroupInForm??!1,moduleName:n.moduleName??``,linkMode:n.parentRefField?`forward`:`reverse`,linkField:n.linkField??``,linkTypeField:n.linkTypeField??``,parentRefField:n.parentRefField??``,writeRefs:n.writeRefs??[],dependsOn:n.dependsOn??[],optionalWrite:n.optionalWrite??!1,hierarchyLevel:n.hierarchyLevel??void 0,hierarchyParent:n.hierarchyParent??void 0,hierarchyLinkField:n.hierarchyLinkField??``,allowCollapse:n.allowCollapse??!1,defaultCollapsed:n.defaultCollapsed??!1,appendHistory:n.appendHistory??!1,historyField:[n.historyField,...n.historyFields??[]].filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t).join(`, `),historyTimestampField:n.historyTimestampField??``,historyLabels:Object.entries(n.historyLabels??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyLabelFrom:Object.entries(n.historyLabelFrom??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyAfterGroup:n.historyAfterGroup??``,historyAmountFields:Object.entries(n.historyAmountFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyCurrencyFields:Object.entries(n.historyCurrencyFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyUnitFields:Object.entries(n.historyUnitFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),minRows:n.minRows??``,maxRows:n.maxRows??``,initialRows:n.initialRows??``,requireOne:n.requireOne??!1,allowInProgress:n.allowInProgress!==!1,inProgressMessage:n.inProgressMessage??``,orderByEnabled:!!n.orderBy,levelRuleEnabled:!!n.levelRule,orderBy:n.orderBy??null,levelRule:n.levelRule??null,regionRules:n.regionRules??null,requireValidatedField:n.requireValidatedField??``,linkGroup:n.linkGroup??``,mergeInto:n.mergeInto??``,mergePosition:n.mergePosition??`bottom`,showIfField:n.showIf?.field??``,showIfOperator:n.showIf?.operator??`notEmpty`,showIfValue:n.showIf?.value??``,disabledIfField:n.disabledIf?.field??``,disabledIfOperator:n.disabledIf?.operator??`notEmpty`,disabledIfValue:n.disabledIf?.value??``,submitDisabledMessage:n.submitDisabledMessage??``,infoEnabled:n.infoEnabled??!1,infoText:n.infoText??``,toggleEnabled:n.toggleEnabled??!1,toggleLabel:n.toggleLabel??``,toggleField:n.toggleField??``,afterSubmitMode:n.afterSubmit?.mode??void 0,afterSubmitTarget:n.afterSubmit?.target??``,formActions:(n.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:n.submitMessages?.addSuccess??``,submitMsgEditSuccess:n.submitMessages?.editSuccess??``,submitMsgAddError:n.submitMessages?.addError??``,submitMsgEditError:n.submitMessages?.editError??``,submitMsgSuppress:n.submitMessages?.suppress??!1,order:n.order??0,fields:[...n.fields??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(Mx)}):(p.resetFields(),p.setFieldsValue({module:e,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(e)},[t,n,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 t=l[e]??[],r=new Set;return t.forEach(e=>{n&&e.id===n.id||(e.fields??[]).forEach(e=>{e.field&&r.add(e.field)})}),r}function ee(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 V(e){let t=B(e);return(v[e]??[]).map(e=>({value:e.value,disabled:t.has(e.value),label:(0,c.jsxs)(`span`,{style:{opacity:t.has(e.value)?.4:1},children:[e.label,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value}),t.has(e.value)&&(0,c.jsx)(`span`,{className:`fg-field-taken-hint`,children:`(in another group)`})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function H(){try{let t=await p.validateFields(),r={...p.getFieldsValue(!0),...t,fields:p.getFieldValue(`fields`)??[]},i=Cx(r.fields);if(i.length){o.message.error(`Uniqueness rule cannot be saved — ${i[0]}`);return}if(r.moduleName){let e=r.name||r.label||`this group`,t=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();if(t||i){if(r.linkMode===`forward`){o.message.error(`Group "${e}": Hierarchy cannot be combined with a forward link (parentRefField) — choose one linkage mode.`);return}if(!t||!i){o.message.error(`Group "${e}": set both "Parent collection" and "Store parent id in field" to use Hierarchy.`);return}if(t===r.moduleName){o.message.error(`Group "${e}": Hierarchy parent cannot be this group's own Target Collection.`);return}let a=(l[r.module]??[]).filter(e=>!n||e.id!==n.id),s=new Map;a.forEach(e=>{e.moduleName&&s.set(e.moduleName,e.hierarchyParent??null)}),s.set(r.moduleName,t);let c=t,u=new Set([r.moduleName]),d=!1;for(;c&&c!==r.module;){if(u.has(c)){d=!0;break}u.add(c),c=s.get(c)??null}if(d){o.message.error(`Group "${e}": this Hierarchy parent chain loops back on itself — pick a different Parent collection.`);return}}}h(!0);let a={module:r.module,name:r.name,label:r.label,addRow:r.addRow??!1,order:Number(r.order??0),fields:Ox(r.fields??[])};if(r.hideGroup&&(a.hideGroup=!0),r.hideGroupInForm&&(a.hideGroupInForm=!0),r.moduleName){if(a.moduleName=r.moduleName,r.linkMode===`forward`){let e=String(r.parentRefField??``).trim();e&&(a.parentRefField=e)}else{let e=String(r.linkField??``).trim(),t=String(r.linkTypeField??``).trim();e&&(a.linkField=e),t&&(a.linkTypeField=t)}let e=(r.writeRefs??[]).filter(e=>e?.fromModule&&e?.targetField);e.length&&(a.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&&(a.dependsOn=t),r.optionalWrite&&(a.optionalWrite=!0);let n=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();n&&i&&(a.hierarchyParent=n,a.hierarchyLinkField=i);let o=Number(r.hierarchyLevel);Number.isFinite(o)&&o>0&&(a.hierarchyLevel=o)}let s=String(r.historyField??``).split(`,`).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t);if(r.allowCollapse&&(a.allowCollapse=!0,r.defaultCollapsed&&(a.defaultCollapsed=!0)),r.appendHistory&&s.length){a.appendHistory=!0,a.historyField=s[0],s.length>1&&(a.historyFields=s.slice(1)),String(r.historyTimestampField??``).trim()&&(a.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&&s.includes(r)&&(t[r]=i)}),t},t=e(r.historyLabels);Object.keys(t).length&&(a.historyLabels=t);let n=e(r.historyLabelFrom);Object.keys(n).length&&(a.historyLabelFrom=n);let i=e(r.historyAmountFields);Object.keys(i).length&&(a.historyAmountFields=i);let o=e(r.historyCurrencyFields);Object.keys(o).length&&(a.historyCurrencyFields=o);let c=e(r.historyUnitFields);Object.keys(c).length&&(a.historyUnitFields=c),String(r.historyAfterGroup??``).trim()&&(a.historyAfterGroup=r.historyAfterGroup.trim())}if(r.addRow&&r.minRows!==void 0&&r.minRows!==``&&(a.minRows=Number(r.minRows)),r.addRow&&r.initialRows!==void 0&&r.initialRows!==``&&(a.initialRows=Number(r.initialRows)),r.addRow&&r.maxRows!==void 0&&r.maxRows!==``&&(a.maxRows=Number(r.maxRows)),r.addRow&&String(r.requireValidatedField??``).trim()&&(a.requireValidatedField=r.requireValidatedField.trim()),r.addRow&&r.requireOne&&(a.requireOne=!0),r.allowInProgress===!1){a.allowInProgress=!1;let e=String(r.inProgressMessage??``).trim();e&&(a.inProgressMessage=e)}if(r.orderByEnabled&&(a.orderBy=r.orderBy??Ex),r.levelRuleEnabled&&(a.levelRule=r.levelRule??Dx),r.regionRules&&(a.regionRules=r.regionRules),r.addRow&&r.linkGroup&&(a.linkGroup=r.linkGroup.trim()),String(r.mergeInto??``).trim()&&(a.mergeInto=r.mergeInto.trim(),r.mergePosition===`top`&&(a.mergePosition=`top`)),String(r.showIfField??``).trim()){let e=r.showIfOperator||`notEmpty`;a.showIf={field:r.showIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.showIfValue??``).trim()&&(a.showIf.value=r.showIfValue.trim())}if(String(r.submitDisabledMessage??``).trim()&&(a.submitDisabledMessage=r.submitDisabledMessage.trim()),String(r.disabledIfField??``).trim()){let e=r.disabledIfOperator||`notEmpty`;a.disabledIf={field:r.disabledIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.disabledIfValue??``).trim()&&(a.disabledIf.value=r.disabledIfValue.trim())}r.infoEnabled&&r.infoText&&(a.infoEnabled=!0,a.infoText=r.infoText),r.toggleEnabled&&r.toggleField&&(a.toggleEnabled=!0,a.toggleLabel=r.toggleLabel||`Toggle`,a.toggleField=r.toggleField),r.afterSubmitMode&&(a.afterSubmit={mode:r.afterSubmitMode},(r.afterSubmitMode===`route`||r.afterSubmitMode===`detail`)&&(a.afterSubmit.target=(r.afterSubmitTarget||``).trim()));let c=(r.formActions??[]).filter(e=>String(e?.label??``).trim());c.length&&(a.formActions=c.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&&(a.submitMessages=u),n)for(let[e,t]of Object.entries(n))t==null||t===``||e in a||jx.has(e)||(a[e]=t);f?(await f(a,n),o.message.success(n?`Group updated`:`Group created`)):n?(await e.ri(n.id,a),o.message.success(`Group updated`)):(await e.Un(a),o.message.success(`Group created`)),D(new Set),k(`settings`),j(!1),d()}catch(e){if(e?.errorFields)return;o.message.error(e.message||`Could not save group`)}finally{h(!1)}}let te=(0,a.useMemo)(()=>V(g||r),[l,r,n,g,v]);return(0,c.jsx)(o.Modal,{open:t,onCancel:L,width:1080,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal fg-group-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),n?` Edit Form Group`:` New Form Group`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:L,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:H,icon:n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),children:n?`Update Group`:`Create Group`})]}),children:(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,className:`fg-form fg-editor-form fg-group-editor-form`,children:[(0,c.jsxs)(`div`,{className:`fg-group-editor-tabs`,role:`tablist`,"aria-label":`Form group editor sections`,children:[(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`settings`,className:O===`settings`?`is-active`:``,onClick:()=>R(`settings`),children:[(0,c.jsx)(`span`,{className:`fg-editor-tab-number`,children:`1`}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`Group settings`}),(0,c.jsx)(`small`,{children:`Name, behaviour and display options`})]})]}),(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`fields`,className:O===`fields`?`is-active`:``,onClick:()=>R(`fields`),children:[(0,c.jsx)(`span`,{className:`fg-editor-tab-number`,children:`2`}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`Fields`}),(0,c.jsxs)(`small`,{children:[n?.fields?.length??0,` configured fields`]})]})]})]}),(0,c.jsxs)(`div`,{className:`fg-group-editor-panel${O===`settings`?` is-active`:``}`,children:[(0,c.jsxs)(`div`,{className:`fg-form-section fg-group-settings-card`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Group Info`}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,c.jsx)(o.Select,{options:i,placeholder:`Select module`,onChange:I})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Group Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Work Experience`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. work_experience`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Linkage`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`how this collection links to the main record (ids stored as ObjectId)`})]}),(0,c.jsx)(o.Form.Item,{name:`linkMode`,style:{marginBottom:8},children:(0,c.jsxs)(o.Radio.Group,{optionType:`button`,buttonStyle:`solid`,size:`small`,children:[(0,c.jsx)(o.Radio.Button,{value:`reverse`,children:`Target stores this record’s id (child→parent)`}),(0,c.jsx)(o.Radio.Button,{value:`forward`,children:`This record stores the target’s id (lookup)`})]})}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e(`linkMode`)===`forward`?(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. employerRef`,className:`fg-mono-input`,style:{width:260}})}):(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. jobRef`,className:`fg-mono-input`,style:{width:220}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. parentType`,className:`fg-mono-input`,style:{width:220}})})]})})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Hierarchy`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`chain this collection under another collection of the same form`})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,c.jsx)(o.Form.Item,{name:`hierarchyLevel`,label:`Level`,tooltip:`Explicit ordering when several collections chain together — level 1 is written first.`,style:{marginBottom:0},children:(0,c.jsx)(o.InputNumber,{min:1,max:99,style:{width:120}})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,placeholder:`No hierarchy (default)`,optionFilterProp:`label`,options:(()=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=l[t]??[],a=new Set,o=[];return t&&(o.push({value:t,label:`Main record (${t})`}),a.add(t)),i.forEach(e=>{let t=e.moduleName;!t||t===n||a.has(t)||(a.add(t),o.push({value:t,label:t}))}),o})()})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. trainerId`,className:`fg-mono-input`,style:{width:200}})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=l[t]??[],a=Nx(t,n,e(`hierarchyParent`),e(`hierarchyLinkField`),i);return a?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:a}):null}})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Linked-write dependencies`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`inject ids created by other writes of this same form submit`})]}),(0,c.jsx)(o.Form.List,{name:`writeRefs`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{children:[e.map(({key:e,name:t,...r})=>(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`,marginBottom:6},children:[(0,c.jsx)(o.Form.Item,{...r,name:[t,`fromModule`],label:`Id from (module)`,rules:[{required:!0,message:`Module`}],style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{...r,name:[t,`targetField`],label:`Store into field`,rules:[{required:!0,message:`Field`}],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`e.g. userId or links.userId`,style:{width:220},className:`fg-mono-input`})}),(0,c.jsx)(o.Tooltip,{title:`Remove dependency`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove dependency`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]},e)),(0,c.jsx)(o.Button,{type:`dashed`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({fromModule:``,targetField:``}),children:`Add Dependency`})]})}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{marginTop:10},children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{mode:`tags`,placeholder:`e.g. users`,options:i.map(e=>({value:e.value,label:e.value}))})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Best-effort`,unCheckedChildren:`Required`})})]})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`allowCollapse`);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Collapsible section`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`let users fold this section away — useful on long forms`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Collapsible`,unCheckedChildren:`Always open`})}),t&&(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Closed`,unCheckedChildren:`Open`})})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`appendHistory`);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Append as history`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`keep every past save instead of overwriting (e.g. rate negotiation history)`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.Form.Item,{name:`appendHistory`,valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{checkedChildren:`Append`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. proposedRate, candidateBudget`,style:{width:240},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`historyTimestampField`,label:`Timestamp key`,tooltip:`Key stamped onto each saved entry. Blank defaults to 'timestamp'.`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`timestamp`,style:{width:140},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=Candidate Rate, proposedRate=Proposed Rate`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudget.candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetCurrency`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetUnit`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`employer_details`,style:{width:200},className:`fg-mono-input`})})]})]}),t&&(0,c.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,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`order`,label:`Display Order`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:`addRow`,label:`Allow Add Row`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Form hidden`,unCheckedChildren:`Shown`})}),(0,c.jsx)(o.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,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`showIfField`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,c.jsx)(o.Form.Item,{name:`showIfOperator`,noStyle:!0,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.showIfOperator!==t.showIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`showIfOperator`))?(0,c.jsx)(o.Form.Item,{name:`showIfValue`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Read-only`,unCheckedChildren:`Editable`})}),(0,c.jsx)(o.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,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`disabledIfField`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,c.jsx)(o.Form.Item,{name:`disabledIfOperator`,noStyle:!0,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.disabledIfOperator!==t.disabledIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`disabledIfOperator`))?(0,c.jsx)(o.Form.Item,{name:`disabledIfValue`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. Complete all mandatory fields`,allowClear:!0})}),(0,c.jsx)(o.Form.Item,{name:`minRows`,label:`Min Rows`,tooltip:`Minimum rows users must keep. Delete is disabled at this count.`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:`initialRows`,label:`Initial Rows`,tooltip:`How many empty rows to show on load (0 = show only the + button).`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Allowed`,unCheckedChildren:`Must be finished`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`A completed qualification is required — an in-progress course cannot be submitted.`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. workHistory`,style:{width:160},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. submission_current_employer`,style:{width:220},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{style:{width:140},options:[{label:`Below host fields`,value:`bottom`},{label:`Above host fields`,value:`top`}]})}),(0,c.jsx)(o.Form.Item,{name:`infoEnabled`,label:`Group Info`,valuePropName:`checked`,initialValue:!1,children:(0,c.jsx)(o.Switch,{checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,c.jsx)(o.Form.Item,{name:`toggleEnabled`,label:`Group Switch`,valuePropName:`checked`,initialValue:!1,children:(0,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`infoEnabled`)?(0,c.jsx)(o.Form.Item,{name:`infoText`,label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`toggleEnabled`)?(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`toggleLabel`,label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Fresher`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,c.jsx)(`div`,{className:`fg-inline-row`,children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/trainers/:id`,className:`fg-mono-input`})})}}),(0,c.jsx)(o.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,c.jsx)(o.Form.List,{name:`formActions`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{className:`fg-form-actions-list`,children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-form-action-row`,style:{border:`1px solid #eee`,borderRadius:8,padding:10,marginBottom:8},children:[(0,c.jsxs)(o.Space,{wrap:!0,align:`start`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`label`],label:`Button Label`,rules:[{required:!0,message:`Label`}],style:{marginBottom:8},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Create and Source Candidate`,style:{width:240}})}),(0,c.jsx)(o.Form.Item,{name:[t,`tone`],label:`Type`,style:{marginBottom:8},children:(0,c.jsx)(o.Select,{style:{width:130},options:[{value:`primary`,label:`Primary`},{value:`default`,label:`Secondary`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`afterSubmitMode`],label:`After Submit`,style:{marginBottom:8},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`route`,`detail`].includes(e([`formActions`,t,`afterSubmitMode`]))?(0,c.jsx)(o.Form.Item,{name:[t,`afterSubmitTarget`],label:`Target`,style:{marginBottom:8},rules:[{pattern:/^\//,message:`Must start with /`}],children:(0,c.jsx)(o.Input,{placeholder:`/jobs/:id/source`,className:`fg-mono-input`,style:{width:200}})}):null}),(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>n(t),style:{marginTop:28}})]}),(0,c.jsxs)(o.Space,{wrap:!0,align:`start`,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. assignedTo`,style:{width:200}})}),(0,c.jsx)(o.Form.Item,{name:[t,`enabledWhenOperator`],label:`Condition`,style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e([`formActions`,t,`enabledWhenOperator`]))?(0,c.jsx)(o.Form.Item,{name:[t,`enabledWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`Value(s)`,style:{width:160}})}):null})]})]},e)),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({tone:`primary`,afterSubmitMode:`stay`,enabledWhenOperator:`notEmpty`}),children:`Add submit button`})]})})}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:"${module} has added successfully",style:{width:280}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:"${module} has Updated successfully",style:{width:280}})})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`submitMsgAddError`,label:`Add Error Message`,tooltip:`Toast shown when Add fails. Blank = show the server's error.`,children:(0,c.jsx)(o.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,c.jsx)(o.Form.Item,{name:`submitMsgEditError`,label:`Edit Error Message`,tooltip:`Toast shown when Edit fails. Blank = show the server's error.`,children:(0,c.jsx)(o.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Shown`})})]})]}),(0,c.jsxs)(`div`,{className:`fg-editor-next-row`,children:[(0,c.jsx)(Xb,{type:`secondary`,children:`Next, review the fields included in this group.`}),(0,c.jsx)(o.Button,{type:`primary`,onClick:()=>R(`fields`),children:`Continue to Fields`})]})]}),A&&(0,c.jsxs)(`div`,{className:`fg-group-editor-panel${O===`fields`?` is-active`:``}`,children:[(0,c.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,c.jsx)(`span`,{className:`fg-fields-title`,children:`Fields`}),(0,c.jsx)(`span`,{className:`fg-fields-hint`,children:`Open only the field you want to change`}),b&&(0,c.jsx)(o.Spin,{size:`small`}),!b&&te.length>0&&(0,c.jsxs)(`span`,{className:`fg-fields-hint`,children:[te.length,` fields available`]})]}),(0,c.jsx)(o.Form.List,{name:`fields`,children:(e,{add:t,remove:n,move:i})=>Fx({form:p,fieldItems:e,add:t,remove:n,move:i,absBase:[],moduleFieldOptions:te,fieldsLoading:b,dragIndexRef:N,dragOverIndex:w,setDragOverIndex:T,onFieldKeySelect:(e,t)=>ee(e,t),expandedFieldKeys:E,onToggleField:z,defaultFieldSet:S,uniqueTarget:{primaryModule:p.getFieldValue(`module`)||r||``,getTargetModule:()=>p.getFieldValue(`moduleName`)||``,collectionForModule:P}})})]})]})})}function Lx({groups:e,onEdit:t,onDelete:n,onCopy:r,onPaste:i,canPaste:l,onReorder:u}){let d=(0,a.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,a.useMemo)(()=>{function e({"data-row-index":e,...t}){return e===void 0?(0,c.jsx)(`tr`,{...t}):(0,c.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]);return(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.name,dataSource:f,columns:[...p?[{title:``,key:`drag`,width:34,align:`center`,render:()=>(0,c.jsx)(s.HolderOutlined,{className:`fg-drag-handle`,style:{cursor:`grab`,color:`var(--color-text-secondary)`}})}]:[],{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(Xb,{strong:!0,style:{color:`var(--color-text-heading)`},children:e}),t.hideGroup&&(0,c.jsx)(o.Tag,{color:`default`,children:`Hidden`}),!t.hideGroup&&t.hideGroupInForm&&(0,c.jsx)(o.Tag,{color:`default`,children:`Detail only`}),t.moduleName&&(0,c.jsxs)(o.Tag,{color:`purple`,children:[`→ `,t.moduleName]}),t.hierarchyParent&&(0,c.jsxs)(o.Tag,{color:`gold`,children:[`L`,t.hierarchyLevel??`?`,` ← `,t.hierarchyParent]})]})},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Add Row`,dataIndex:`addRow`,key:`addRow`,align:`center`,width:90,render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,style:{margin:0},children:`Yes`}):(0,c.jsx)(o.Tag,{color:`default`,style:{margin:0},children:`No`})},{title:`Order`,dataIndex:`order`,key:`order`,align:`center`,width:72,render:e=>(0,c.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,align:`center`,width:76,render:e=>(0,c.jsx)(o.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:132,render:(e,a)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Copy settings`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.CopyOutlined,{}),onClick:()=>r(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Tooltip,{title:`Paste copied settings into this group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.SnippetsOutlined,{}),disabled:!l,onClick:()=>i(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Tooltip,{title:`Edit group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>t(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this group?`,description:`All field mappings inside will be removed.`,onConfirm:()=>n(a.id),okText:`Delete`,okButtonProps:{danger:!0},children:(0,c.jsx)(o.Tooltip,{title:`Delete group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}],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,c.jsx)(o.Empty,{description:`No groups configured for this module yet.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})},expandable:{expandedRowRender:e=>(e.fields??[]).length===0?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`}):(0,c.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,c.jsxs)(`div`,{className:`fg-field-row`,children:[(0,c.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,c.jsx)(`span`,{className:`fg-field-row-label`,children:e.label}),(0,c.jsx)(`span`,{className:`fg-field-row-key`,children:e.field}),(0,c.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,e.type,`)`]}),[`select`,`radio`,`checkbox`].includes(e.type)&&e.dataSource&&(0,c.jsx)(o.Tag,{color:t[e.dataSource]??`default`,style:{fontSize:10,marginLeft:6},children:n[e.dataSource]??e.dataSource})]}),(0,c.jsxs)(`div`,{className:`fg-field-row-flags`,children:[e.show===1&&(0,c.jsx)(o.Tag,{color:`blue`,style:{marginRight:4},children:`Show`}),e.showOnAdd===!1&&(0,c.jsx)(o.Tag,{color:`orange`,style:{marginRight:4},children:`Edit only`}),e.req===1&&(0,c.jsx)(o.Tag,{color:`red`,style:{marginRight:4},children:`Required`}),e.edit===1&&(0,c.jsx)(o.Tag,{color:`green`,style:{marginRight:4},children:`Editable`}),e.formatter&&(0,c.jsxs)(o.Tag,{color:`purple`,style:{marginRight:4},children:[`fmt: `,e.formatter]})]}),(e.validations??[]).length>0&&(0,c.jsxs)(`div`,{className:`fg-field-row-validations`,children:[(0,c.jsx)(s.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??``,s=r?`Stored field`:t.field&&!(t.value!==void 0&&t.value!==``)?`Field`:`Value`;return(0,c.jsx)(o.Tooltip,{title:`${a===``?``:`${s}: ${a} — `}${t.message}`,children:(0,c.jsxs)(o.Tag,{color:fx[t.type]??`default`,style:{cursor:`default`,fontFamily:`monospace`,fontSize:10},children:[t.type,a===``?``:`(${a})`]})},n)})]})]},e.field)})}),rowExpandable:()=>!0}})}function Rx({open:t,editingForm:n,moduleOptions:r,onClose:i,onSaved:l}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)({}),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(null),x=(0,a.useRef)({}),S=(0,a.useRef)(null),C=Px();async function w(t){if(!(!t||x.current[t])){v(!0);try{let n=await e.Fr(t);g(e=>({...e,[t]:n})),x.current[t]=!0}catch{}finally{v(!1)}}}(0,a.useEffect)(()=>{if(!t){x.current={},g({});return}if(n){let e=n.module;m(e),u.setFieldsValue({module:e,formType:n.formType||`popup`,action:n.action,label:n.label,booleanSearchEnabled:n.booleanSearchEnabled??!1,booleanSearchEndpoint:n.booleanSearchEndpoint??``,booleanDefaultSourceType:n.booleanDefaultSourceType??``,actionButtonEnabled:n.actionButtonEnabled??!1,actionButtonLabel:n.actionButtonLabel??``,actionButtonUrl:n.actionButtonUrl??``,actionButtonTarget:n.actionButtonTarget??`_self`,groups:(n.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(Mx)}))}),w(e)}else u.resetFields(),u.setFieldsValue({groups:[],formType:`popup`}),m(``)},[t,n,u]);function T(e){m(e),w(e)}function E(){return(h[p]??[]).map(e=>({value:e.value,label:(0,c.jsxs)(`span`,{children:[e.label,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function D(){try{let t=await u.validateFields(),r=(t.groups??[]).flatMap(e=>Cx(e?.fields));if(r.length){o.message.error(`Uniqueness rule cannot be saved — ${r[0]}`);return}f(!0);let i={module:t.module,formType:t.formType,action:t.action.trim(),label:t.label,...t.formType===`search`&&t.booleanSearchEnabled?{booleanSearchEnabled:!0,booleanSearchEndpoint:String(t.booleanSearchEndpoint??``).trim(),...t.booleanDefaultSourceType?{booleanDefaultSourceType:t.booleanDefaultSourceType}:{}}:{},actionButtonEnabled:!!t.actionButtonEnabled,actionButtonLabel:String(t.actionButtonLabel??``).trim(),actionButtonUrl:String(t.actionButtonUrl??``).trim(),actionButtonTarget:t.actionButtonTarget||`_self`,groups:(t.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:Ox(e.fields??[]),...e.infoEnabled&&e.infoText?{infoEnabled:!0,infoText:e.infoText}:{}}))};n?(await e.ii(n.id,{...n,...i}),o.message.success(`Custom form updated`)):(await e.Wn(i),o.message.success(`Custom form created`)),l()}catch(e){if(e?.errorFields)return;o.message.error(e.message||`Could not save custom form`)}finally{f(!1)}}let O=E();return(0,c.jsx)(o.Modal,{open:t,onCancel:i,width:1120,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),n?` Edit Custom Form`:` New Custom Form`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:i,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:d,onClick:D,icon:n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{form:u,layout:`vertical`,className:`fg-form fg-editor-form`,children:[(0,c.jsxs)(`div`,{className:`fg-form-section fg-editor-sticky-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Form Identity`}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,c.jsx)(o.Select,{options:r,placeholder:`Select module`,onChange:T})}),(0,c.jsx)(o.Form.Item,{name:`formType`,label:`Form Type`,rules:[{required:!0,message:`Form Type is required`}],initialValue:`popup`,children:(0,c.jsx)(o.Select,{placeholder:`Select form type`,options:[{label:`Search`,value:`search`},{label:`Popup`,value:`popup`}]})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. quickAdd`,className:`fg-mono-input`,disabled:!!n})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Display Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Quick Add Job`})}),(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{if(e(`formType`)!==`search`)return null;let t=e(`booleanSearchEnabled`);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/candidates/boolean-search`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`internal,dice`,className:`fg-mono-input`})})]})]})}}),(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),e(`actionButtonEnabled`)&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`Job Description`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/jobs/detailview?id=:jobId&tab=details`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`actionButtonTarget`,label:`Open In`,initialValue:`_self`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:180},options:[{label:`Same tab`,value:`_self`},{label:`New tab`,value:`_blank`}]})})]})]})})]}),(0,c.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,c.jsx)(`span`,{className:`fg-fields-title`,children:`Groups`}),(0,c.jsx)(`span`,{className:`fg-fields-hint`,children:`Each group holds a set of form fields`}),_&&(0,c.jsx)(o.Spin,{size:`small`})]}),(0,c.jsx)(o.Form.List,{name:`groups`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-form-section`,style:{marginBottom:16},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:10},children:[(0,c.jsxs)(`span`,{className:`fg-form-section-label`,style:{marginBottom:0},children:[`Group `,t+1]}),(0,c.jsx)(o.Tooltip,{title:`Remove group`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove group`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{flexWrap:`wrap`,marginBottom:8},children:[(0,c.jsx)(o.Form.Item,{name:[t,`label`],label:`Group Label`,rules:[{required:!0,message:`Required`}],style:{flex:2,marginBottom:8},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Basic Info`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. basicInfo`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[t,`addRow`],label:`Add Row`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. workHistory`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[t,`infoEnabled`],label:`Group Info`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,c.jsx)(o.Form.Item,{name:[t,`toggleEnabled`],label:`Group Switch`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.Form.Item,{name:[t,`order`],label:`Order`,initialValue:0,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:70}})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`infoEnabled`])?(0,c.jsx)(o.Form.Item,{name:[t,`infoText`],label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`toggleEnabled`])?(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`toggleLabel`],label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1,marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Fresher`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,c.jsx)(`div`,{className:`fg-fields-header`,style:{marginTop:4,marginBottom:8},children:(0,c.jsx)(`span`,{className:`fg-fields-title`,style:{fontSize:12},children:`Fields`})}),(0,c.jsx)(o.Form.List,{name:[t,`fields`],children:(e,{add:n,remove:r,move:i})=>Fx({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,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),block:!0,style:{marginBottom:16},onClick:()=>t({label:``,name:``,addRow:!1,order:e.length,fields:[]}),children:`Add Group`})]})})]})})}function zx({moduleOptions:t}){let[n,r]=(0,a.useState)([]),[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(null);function m(){l(!0),e.yr().then(e=>r(e)).catch(e=>o.message.error(e.message||`Could not load custom forms`)).finally(()=>l(!1))}(0,a.useEffect)(()=>{m()},[]);async function h(t){try{await e.Qn(t.id),o.message.success(`Custom form deleted`),m()}catch(e){o.message.error(e.message||`Could not delete custom form`)}}return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`fg-tab-toolbar`,style:{marginBottom:12},children:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{p(null),d(!0)},children:`New Custom Form`})}),(0,c.jsx)(o.Spin,{spinning:i,children:(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.action,dataSource:n,columns:[{title:`Module`,dataIndex:`module`,key:`module`,render:e=>(0,c.jsx)(o.Tag,{color:`blue`,children:e})},{title:`Action Key`,dataIndex:`action`,key:`action`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Label`,dataIndex:`label`,key:`label`,render:e=>(0,c.jsx)(Xb,{strong:!0,style:{color:`var(--color-text-heading)`},children:e})},{title:`Groups`,dataIndex:`groups`,key:`groups`,align:`center`,width:76,render:e=>(0,c.jsx)(o.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:100,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit form`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{p(t),d(!0)},className:`fg-action-btn`})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this custom form?`,description:`All configured groups will be lost.`,onConfirm:()=>h(t),okText:`Delete`,okButtonProps:{danger:!0},children:(0,c.jsx)(o.Tooltip,{title:`Delete form`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}],pagination:!1,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{description:`No custom forms yet. Click 'New Custom Form' to create one.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})}})}),(0,c.jsx)(Rx,{open:u,editingForm:f,moduleOptions:t,onClose:()=>{d(!1),p(null)},onSaved:()=>{d(!1),p(null),m()}})]})}function Bx(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)({}),[d,f]=(0,a.useState)(`all`),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null),[_,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(`module`),[x,S]=(0,a.useState)([]),[C,w]=(0,a.useState)({clientId:``,region:``}),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(null),k=mx(t),A=t.map(e=>({value:e.key,label:e.label}));(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t);let r=mx(t);u(hx(r)),F(`all`,r)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{e.sr({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(t,n){if(!(n??k).find(e=>e.key===t))return;let r=P(t);j(t,{loading:!0,error:``}),e.cr(t===`all`?``:t,N(t)).then(e=>j(t,{groups:e,loading:!1,loaded:!0,scopeKey:r})).catch(e=>j(t,{error:e.message||`Could not load groups`,loading:!1}))}function I(e){F(e,null)}function L(e){f(e),(!l[e]?.loaded||l[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 ee(){B(),I(d),d!==`all`&&I(`all`)}async function V(t){try{await e.Xn(t,ne()),o.message.success(`Group deleted`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not delete group`)}}async function H(t){let n=t.map((e,t)=>({g:e,index:t})).filter(({g:e,index:t})=>Number(e.order??0)!==t&&e.id);if(n.length)try{await Promise.all(n.map(({g:t,index:n})=>e.ri(t.id,{...t,order:n},ne(t.module||d)))),o.message.success(`Group order updated`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not reorder groups`),I(d)}}function te(e){v(Zb[e])}function U(t){let n={...C,...t};if(w(n),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=n.clientId||n.region?n:{};j(d,{loading:!0,error:``}),e.cr(d,r).then(e=>j(d,{groups:e,loading:!1,loaded:!0,scopeKey:n.clientId||n.region?`${n.clientId}|${n.region}`:``})).catch(e=>j(d,{error:e.message||`Could not load scoped groups`,loading:!1}))}function ne(){return N(d)}function W(e){O(JSON.parse(JSON.stringify(e))),o.message.success(`Copied settings from ${e.label||e.name}`)}async function G(t){if(D)try{let n={...t,addRow:D.addRow??t.addRow,payloadKey:D.payloadKey??t.payloadKey,fields:JSON.parse(JSON.stringify(D.fields??[]))};await e.ri(t.id,n,ne(t.module||d)),o.message.success(`Pasted settings into ${t.label||t.name}`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not paste settings`)}}function re(){v(null),u(hx(k)),I(d),d!==`all`&&I(`all`)}let ie=k.map(({key:e,label:t,color:n})=>{let r=l[e]??{groups:[],loading:!1,loaded:!1,error:``},i=[...r.groups].sort((e,t)=>(e.order??0)-(t.order??0));return{key:e,label:(0,c.jsxs)(`span`,{className:`fg-tab-label`,children:[(0,c.jsx)(`span`,{className:`fg-tab-dot`,style:{background:n}}),t,(0,c.jsx)(o.Badge,{count:r.groups.length,showZero:!0,color:n,size:`small`})]}),children:(0,c.jsxs)(`div`,{className:`fg-tab-content`,children:[r.error&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:r.error,style:{marginBottom:12}}),(0,c.jsx)(`div`,{className:`fg-tab-toolbar`,children:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),disabled:e===`all`,onClick:()=>{f(e),R()},children:`Add Group`})}),(0,c.jsx)(o.Spin,{spinning:r.loading,children:(0,c.jsx)(Lx,{groups:i,onEdit:z,onDelete:V,onCopy:W,onPaste:G,canPaste:!!D,onReorder:e===`all`?void 0:H})})]})}}),ae=d===`all`?A[0]?.value??`jobs`:d,oe=k.find(e=>e.key===ae)?.label??ae,se=[{key:`module`,label:`Module Form`,children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Z,{children:(0,c.jsxs)(`div`,{className:`fg-scope-toolbar`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{children:(0,c.jsxs)(Xb,{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,c.jsx)(`b`,{children:`All`}),` tab always shows the defaults.`]})}),M(d)&&(0,c.jsx)(`div`,{style:{marginTop:6},children:(0,c.jsx)(o.Tag,{color:`processing`,children:`Editing ${x.find(e=>(e._id??e.id)===C.clientId)?.clientName??`client`} config for ${d}`})})]}),(0,c.jsxs)(o.Space,{wrap:!0,size:8,children:[(0,c.jsx)(o.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=>U({clientId:e??``})}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>I(d),children:`Reload`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),disabled:d===`all`,onClick:()=>E(!0),children:`Preview`})]})]})}),(0,c.jsx)(Z,{children:(0,c.jsx)(o.Spin,{spinning:r,children:(0,c.jsx)(o.Tabs,{activeKey:d,onChange:L,items:ie,size:`middle`,className:`fg-tabs`})})}),(0,c.jsx)(Ix,{open:p,editingGroup:h,defaultModule:d===`all`?A[0]?.value??``:d,moduleOptions:A,allGroupsByModule:Object.fromEntries(Object.entries(l).filter(([e])=>e!==`all`).map(([e,t])=>[e,t.groups??[]])),onClose:B,onSaved:ee,onSaveGroup:(t,n)=>n?e.ri(n.id,t,ne(t.module)):e.Un(t,ne(t.module))}),(0,c.jsx)(o.Drawer,{open:T,onClose:()=>E(!1),width:`92vw`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EyeOutlined,{}),` `,oe,` Add Form Preview`]}),classNames:{body:`fg-preview-body`},destroyOnClose:!0,children:(0,c.jsx)(Qs,{moduleName:ae,clientId:C.clientId,region:C.region,cancelPath:`/${ae}`,onSubmit:async()=>o.message.info(`Preview only. No record was created.`),breadcrumbItems:[{label:`Admin`},{label:`Form Groups`},{label:`${oe} Preview`}]},`${ae}-${C.clientId}-${C.region}`)})]})},{key:`custom`,label:`Custom Form`,children:(0,c.jsx)(Z,{children:(0,c.jsx)(zx,{moduleOptions:A})})},{key:`defaultFields`,label:`Default Fields`,children:(0,c.jsx)(Yb,{moduleOptions:A})}];return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),title:`Form Groups`,extra:y===`module`?(0,c.jsxs)(o.Space,{size:8,wrap:!0,children:[(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>te(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>te(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all form groups`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>te(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),onClick:R,children:`New Group`})]}):null,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(Xb,{type:`secondary`,style:{fontSize:13},children:[(0,c.jsx)(`strong`,{children:`Module Form`}),` — configure the default add/edit form for each module.`,` `,(0,c.jsx)(`strong`,{children:`Custom Form`}),` — create standalone named forms (module + action) for context-specific flows such as quick-add or popup forms.`]})]}),(0,c.jsx)(Z,{styles:{body:{padding:`0 0`}},children:(0,c.jsx)(o.Tabs,{activeKey:y,onChange:b,items:se,size:`middle`,className:`fg-top-tabs`,tabBarStyle:{padding:`0 16px`,margin:0},destroyInactiveTabPane:!1})}),(0,c.jsx)(qb,{open:!!_,scope:`formGroups`,action:_?.action,title:_?.title,description:_?.description,confirmLabel:_?.confirmLabel,danger:_?.danger,onCancel:()=>v(null),onVerified:re})]})}var Vx=`2026-08-06T13:33:00.000Z`,{Text:Q}=o.Typography,Hx,Ux=new Map;function Wx(){return Hx||=e.mr().catch(e=>{throw Hx=void 0,e}),Hx}function Gx(t){return Ux.has(t)||Ux.set(t,e.vr(t).catch(e=>{throw Ux.delete(t),e})),Ux.get(t)}var Kx={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.`}},qx=[{label:`Default`,value:`default`},{label:`Title Case On`,value:`on`},{label:`Off (raw text)`,value:`off`}],Jx=e=>e===!0?`on`:e===!1?`off`:`default`,Yx=e=>e===`on`?!0:e===`off`?!1:void 0,Xx=e=>e===!0||e===1||e===`1`;function Zx(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 Qx(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.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 _b(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 $x(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 eS(e){return Number(e?.show??1)===0}function tS(e,t){let n=[];return{nextGroups:(e??[]).map(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 nS({value:e,onChange:t}){return(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Input,{size:`small`,placeholder:`#0053a5`,value:e??``,onChange:e=>t(e.target.value),className:`fg-mono-input`,prefix:(0,c.jsx)(s.BgColorsOutlined,{style:{color:e||`#bbb`}})}),(0,c.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 rS({fieldMeta:e,rules:t,ignore:n,fieldOptions:r,onChangeRules:i,onChangeIgnore:a}){let l=Array.isArray(t)?t:[],u=e?.labelWhen,d=l.length===0&&!!(u?.field&&u?.label),f=(e,t)=>i(l.map((n,r)=>r===e?{...n,...t}:n)),p=e=>i(l.filter((t,n)=>n!==e));return(0,c.jsxs)(`div`,{className:`fg-form-section`,style:{marginTop:14,marginBottom:0},children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Conditional Label`}),(0,c.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,c.jsx)(`b`,{children:e?.label}),`) is used. Detail view only — the add/edit forms are unaffected.`]}),d&&(0,c.jsx)(o.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,c.jsx)(o.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`})}),l.map((e,t)=>{let n=_b(e.operator);return(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`When field`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Is`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:hb,value:e.operator??`eq`,onChange:e=>f(t,{operator:e})})]}),n&&(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`C2C`,value:e.value??``,onChange:e=>f(t,{value:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1.2},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Show label`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Employer Rate`,value:e.label??``,onChange:e=>f(t,{label:e.target.value})})]}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>p(t)})]},t)}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>i([...l,{field:``,operator:`eq`,value:``,label:``}]),children:`Add rule`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!n,onChange:e=>a(!e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Use conditional labels in the detail view`})]}),(0,c.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 iS({open:t,fieldMeta:n,value:r,moduleFieldOptions:i,onClose:l,onSave:u}){let[d,f]=(0,a.useState)(()=>({...r??{}})),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)(`display`);(0,a.useEffect)(()=>{if(!t||_!==`lookup`)return;let e=!1;return Wx().then(t=>{e||m(t.map(e=>typeof e==`string`?e:e.name??e.value??``).filter(Boolean))}).catch(()=>{}),()=>{e=!0}},[_,t]),(0,a.useEffect)(()=>{if(!t||_!==`lookup`||!d.lookupCollection)return;let e=!1;return Gx(d.lookupCollection).then(t=>{e||g(t.map(e=>typeof e==`string`?e:e.value??e.field??e.label??``).filter(Boolean))}).catch(()=>{}),()=>{e=!0}},[_,t,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,c.jsxs)(o.Modal,{open:t,onCancel:l,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal detail-field-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EditOutlined,{}),` `,n?.label,(0,c.jsx)(`code`,{className:`fg-field-key-hint`,style:{marginLeft:8},children:n?.key})]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:l,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>u(d),children:`Apply`})]}),children:[(0,c.jsxs)(`div`,{className:`detail-editor-nav`,role:`tablist`,"aria-label":`Field settings`,children:[(0,c.jsx)(o.Button,{type:_===`display`?`primary`:`text`,onClick:()=>v(`display`),children:`Display`}),(0,c.jsx)(o.Button,{type:_===`lookup`?`primary`:`text`,onClick:()=>v(`lookup`),children:`Reference lookup`})]}),_===`display`&&(0,c.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Display`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label override`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:n?.label,value:d.label??``,onChange:e=>y(`label`,e.target.value)})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. $`,value:d.prefix??``,onChange:e=>y(`prefix`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. yrs`,value:d.suffix??``,onChange:e=>y(`suffix`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,c.jsx)(nS,{value:d.color,onChange:e=>y(`color`,e)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:qx,value:Jx(d.capitalize),onChange:e=>y(`capitalize`,Yx(e))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hidden,onChange:e=>y(`hidden`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide this field everywhere (detail view and the add/edit form)`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideInDetail,onChange:e=>y(`hideInDetail`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide in the detail view only (keep it in the add/edit form)`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideWhenEmpty||!!d.hideWhenEmptyInDetail,onChange:e=>f(t=>({...t,hideWhenEmpty:e,hideWhenEmptyInDetail:e?t.hideWhenEmptyInDetail:!1}))}),(0,c.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,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideWhenZero,onChange:e=>y(`hideWhenZero`,e)}),(0,c.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,c.jsx)(rS,{fieldMeta:n,rules:d.labelWhen,ignore:d.ignoreLabelWhenInDetail,fieldOptions:i,onChangeRules:e=>y(`labelWhen`,e),onChangeIgnore:e=>y(`ignoreLabelWhenInDetail`,e)}),(0,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Render Type`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:T,onChange:e=>y(`renderType`,e),options:e.Mt}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Empty text`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:Yl[T]??Yl.default,value:C.emptyText??``,onChange:e=>w(`emptyText`,e.target.value)}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Document mode`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:C.documentMode||`preview`,onChange:e=>w(`documentMode`,e),options:e.jt})]}),D&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Text transform`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:C.textTransform||`none`,onChange:e=>w(`textTransform`,e===`none`?void 0:e),options:e.Nt})]}),E&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Tag colour`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`geekblue / #0053a5`,value:C.tagColor??``,onChange:e=>w(`tagColor`,e.target.value),className:`fg-mono-input`})]}),T===`date`&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Date format (dayjs tokens)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`DD/MM/YYYY`,value:C.dateFormat??``,onChange:e=>w(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),T===`phone`&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Country-code field on the record`}),(0,c.jsx)(o.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,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Currency symbol`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`$ / ₹ / £`,value:C.currencySymbol??``,onChange:e=>w(`currencySymbol`,e.target.value)})]}),T===`budget`&&(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Unit (e.g. Monthly)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Monthly`,value:C.unit??``,onChange:e=>w(`unit`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!C.showEmpty,onChange:e=>w(`showEmpty`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Show empty values`})]})]}),_===`lookup`&&(0,c.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Reference Lookup (id → name)`}),(0,c.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,c.jsx)(`code`,{children:`{ id, value }`}),`.`]}),(0,c.jsxs)(`div`,{style:{marginBottom:10},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Collection`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field 2`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value Field (FK)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`_id`,value:d.valueField??``,onChange:e=>y(`valueField`,e.target.value),className:`fg-mono-input`})]})]})]})]})}function aS(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 oS(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 sS({open:e,merge:t,fieldOptions:n,groupOptions:r,onClose:i,onSave:l}){let[u,d]=(0,a.useState)(()=>({key:``,label:``,fields:[],separator:` - `,template:``,prefix:``,suffix:``,color:``,capitalize:void 0,group:``,hideSources:!0,...t??{},mapRows:aS(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,c.jsx)(o.Modal,{open:e,onCancel:i,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.MergeCellsOutlined,{}),` `,t?`Edit Merged Field`:`New Merged Field`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:i,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!u.key?.trim())return o.message.error(`A merge key is required`);if(!/^[a-z0-9_]+$/.test(u.key))return o.message.error(`Key: lowercase letters, numbers, underscores only`);if(!(u.fields??[]).length)return o.message.error(`Pick at least one source field`);let{mapRows:e,...t}=u;l({...t,valueMaps:oS(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Merged Field`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`experience_range`,value:u.key??``,onChange:e=>f(`key`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Experience`,value:u.label??``,onChange:e=>f(`label`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Source fields (combined in order)`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Template `,(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`(optional — overrides separator)`})]}),(0,c.jsx)(o.Input.TextArea,{rows:2,value:u.template??``,onChange:e=>f(`template`,e.target.value),placeholder:`{clientBudgetStart} - {clientBudgetEnd} {clientBudgetCurrency}/{clientBudgetUnit}`,className:`fg-mono-input`}),(0,c.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,c.jsx)(`code`,{children:`80 $/hour`}),` rather than `,(0,c.jsx)(`code`,{children:`80 - $/hour`}),`. That only applies to pure connectors (`,(0,c.jsx)(`code`,{children:`-`}),` `,(0,c.jsx)(`code`,{children:`/`}),` `,(0,c.jsx)(`code`,{children:`,`}),` `,(0,c.jsx)(`code`,{children:`|`}),` `,(0,c.jsx)(`code`,{children:`:`}),` and spaces) — literal words you type, like `,(0,c.jsx)(`code`,{children:`Rate:`}),`, are always kept. Put spacing in the template itself, never inside a Value Map: a mapped value like `,(0,c.jsx)(`code`,{children:`" hour"`}),` adds a gap the template cannot see, which is how `,(0,c.jsx)(`code`,{children:`$/hour`}),` came out as `,(0,c.jsx)(`code`,{children:`$ / hour`}),`.`]}),(u.fields??[]).length>0&&(0,c.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:4,marginTop:6},children:(u.fields??[]).map(e=>(0,c.jsxs)(o.Tag,{color:`blue`,style:{cursor:`pointer`,margin:0},onClick:()=>f(`template`,`${u.template??``}{${e}}`),children:[`+ `,`{${e}}`]},e))}),(0,c.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,c.jsx)(`code`,{children:`60 - 80 $/Monthly`}),`.`]})]}),(0,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value mappings (raw → display)`}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.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,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6,alignItems:`center`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:`Monthly`,value:e.from,onChange:e=>p(t,{from:e.target.value})}),(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`→`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:`mon`,value:e.to,onChange:e=>p(t,{to:e.target.value})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>m(t)})]},t)),!(u.mapRows??[]).length&&(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Separator `,(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`(used when no template)`})]}),(0,c.jsx)(o.Input,{size:`small`,placeholder:` - `,value:u.separator??``,onChange:e=>f(`separator`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Place in group`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,value:u.prefix??``,onChange:e=>f(`prefix`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`yrs`,value:u.suffix??``,onChange:e=>f(`suffix`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,c.jsx)(nS,{value:u.color,onChange:e=>f(`color`,e)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:qx,value:Jx(u.capitalize),onChange:e=>f(`capitalize`,Yx(e))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:u.hideSources!==!1,onChange:e=>f(`hideSources`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide the source fields after merging`})]})]})})}function cS({open:t,module:n,onClose:r}){let[i,l]=(0,a.useState)(``),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)({}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(``),v=async()=>{if(!i.trim())return o.message.warning(`Enter a record _id to preview`);h(!0),_(``);try{let[t]=await Promise.all([e.Pr(n,i.trim()),e.Rn()]);d(t),p(xl(t)),t.length||_(`No groups returned — check the id and module.`)}catch(e){_(e?.message||`Failed to load preview`)}finally{h(!1)}};return(0,c.jsxs)(o.Drawer,{open:t,onClose:r,width:520,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EyeOutlined,{}),` Detail Preview — `,n]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},children:[(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`,marginBottom:14},children:[(0,c.jsx)(o.Input,{placeholder:`Paste a record _id (24-char ObjectId)`,value:i,onChange:e=>l(e.target.value),onPressEnter:v,className:`fg-mono-input`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:v,children:`Load`})]}),g&&(0,c.jsx)(o.Alert,{type:`warning`,showIcon:!0,message:g,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:m,children:[u.map(e=>(0,c.jsxs)(`div`,{style:{marginBottom:18},children:[(0,c.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,c.jsxs)(`div`,{style:{display:`flex`,gap:10,padding:`4px 0`,borderBottom:`1px dashed #eee`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12,width:150,flexShrink:0},children:wl(e,f)}),(0,c.jsx)(mu,{field:e})]},e.field))]},e.id??e.name)),!m&&!u.length&&!g&&(0,c.jsx)(o.Empty,{description:`Load a record to preview its detail view.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})]})]})}var lS=[{label:`Common (no region profile)`,value:``},{label:`United States (US)`,value:`US`},{label:`United Kingdom (UK)`,value:`UK`},{label:`India (IND)`,value:`IND`}],uS=[{key:`default`,label:`Any value`,placeholder:Yl.default},{key:`group`,label:`Empty group`,placeholder:`No <group name> added`},{key:`document`,label:`Document`,placeholder:Yl.document},{key:`date`,label:`Date`,placeholder:Yl.date},{key:`phone`,label:`Phone`,placeholder:Yl.phone},{key:`email`,label:`Email`,placeholder:Yl.email},{key:`link`,label:`Link`,placeholder:Yl.link},{key:`skills`,label:`Skills/tags`,placeholder:Yl.skills}];function dS(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 fS({open:t,onClose:n}){let[r,i]=(0,a.useState)(()=>({...e.Ln()})),[l,u]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!t)return;let n=!1;return e.xr().then(e=>{n||i(t=>({...t,...dS(e)}))}).catch(()=>{}),()=>{n=!0}},[t]);let d=(e,t)=>i(n=>({...n,[e]:t})),f=(0,a.useMemo)(()=>e.An(r).map(({value:e,label:t})=>({value:e,label:t})),[r.timeZoneAliases]),p=async()=>{u(!0);try{let t={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 e.Yr(t),e.Fn(t),o.message.success(`Display defaults saved`),n()}catch(e){o.message.error(e?.message||`Could not save defaults`)}finally{u(!1)}},m={fontSize:12,display:`block`,marginBottom:4};return(0,c.jsxs)(o.Drawer,{open:t,onClose:n,width:460,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.SettingOutlined,{}),` Display Defaults`]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>i({...e.Pn}),children:`Reset to built-in`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:l,onClick:p,children:`Save Defaults`})]}),children:[(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Documents / Files`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`S3 Base URL`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:e.Pn.s3BaseUrl,value:r.s3BaseUrl??``,onChange:e=>d(`s3BaseUrl`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Document name priority (first match wins)`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`name, documentName, uploadedFileName…`,value:r.documentNameOrder??[],onChange:e=>d(`documentNameOrder`,e)})]})]}),(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Value Formatting`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Date format (dayjs tokens)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`DD MMM YYYY`,value:r.dateFormat??``,onChange:e=>d(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Phone format (digit groups, e.g. 3-3-4 → 999-878-3413)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`3-3-4`,value:r.phoneFormat??``,onChange:e=>d(`phoneFormat`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Fallback country code (leave blank — recommended)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = no code`,value:r.phoneCountryCode??``,onChange:e=>d(`phoneCountryCode`,e.target.value),className:`fg-mono-input`}),(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — true`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Yes`,value:r.booleanTrueLabel??``,onChange:e=>d(`booleanTrueLabel`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — false`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`No`,value:r.booleanFalseLabel??``,onChange:e=>d(`booleanFalseLabel`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Region`}),(0,c.jsx)(o.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:lS,getPopupContainer:()=>document.body}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Application time zone`}),(0,c.jsx)(o.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,c.jsx)(Q,{type:`secondary`,style:{...m,marginTop:4},children:r.timeZone?`Everyone now sees and enters times in ${e.Mn({...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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Date and time format`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`MMM DD, YYYY | hh:mm A`,value:r.dateTimeFormat??``,onChange:e=>d(`dateTimeFormat`,e.target.value)}),(0,c.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,c.jsxs)(`b`,{children:[` `,e.On(Vx,{...r,showTimeZoneLabel:r.showTimeZoneLabel!==!1})||`—`]})]})]}),(0,c.jsxs)(`div`,{style:{flex:`0 0 200px`},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Show the time zone`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(o.Switch,{size:`small`,checked:r.showTimeZoneLabel!==!1,onChange:e=>d(`showTimeZoneLabel`,e),checkedChildren:`Shown`,unCheckedChildren:`Hidden`})}),(0,c.jsxs)(Q,{type:`secondary`,style:{...m,marginTop:4},children:[`Adds a small "`,e.Nn(r),`" after every time, so nobody has to guess whose clock it is. Only times get it — plain dates never do.`]})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Empty placeholder`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`-`,value:r.emptyPlaceholder??``,onChange:e=>d(`emptyPlaceholder`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Object / array separator`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:` - `,value:r.separator??``,onChange:e=>d(`separator`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:18},children:[(0,c.jsx)(Q,{strong:!0,style:{fontSize:12},children:`Empty-value text by kind`}),(0,c.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,c.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:uS.map(({key:e,label:t,placeholder:n})=>(0,c.jsxs)(`div`,{style:{flex:`1 1 190px`},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:t}),(0,c.jsx)(o.Input,{size:`small`,placeholder:n,value:r.emptyTexts?.[e]??``,onChange:t=>d(`emptyTexts`,{...r.emptyTexts??{},[e]:t.target.value})})]},e))})]})]})]})}function pS(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)({}),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(``),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(null),[j,M]=(0,a.useState)(!1),[N,P]=(0,a.useState)(!1),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)(0),[z,B]=(0,a.useState)(``),[ee,V]=(0,a.useState)([]),[H,te]=(0,a.useState)(``),[U,ne]=(0,a.useState)(``),[W,G]=(0,a.useState)({});function re(e){I(Kx[e])}async function ie(t,n,r,i){let a=d;f(e=>e.map(e=>e.id===t.id?{...e,[n]:r}:e)),G(e=>({...e,[`${t.id}:${n}`]:!0}));try{await e.ri(t.id,{...t,[n]:r}),o.message.success(r?i.on:i.off)}catch(e){f(a),o.message.error(e?.message||`Could not update group visibility`)}finally{G(e=>{let r={...e};return delete r[`${t.id}:${n}`],r})}}async function ae(t,n,r){let i=String(r??``).trim();if(i===String(t?.[n]??``).trim())return;let a=d;f(e=>e.map(e=>e.id===t.id?{...e,[n]:i}:e));try{await e.ri(t.id,{...t,[n]:i}),o.message.success(`Empty text saved`)}catch(e){f(a),o.message.error(e?.message||`Could not save empty text`)}}let oe=(e,t)=>ie(e,`hideGroup`,t,{on:`Group hidden from add/edit forms and the detail view`,off:`Group is visible again`}),se=(e,t)=>ie(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`}),ce=(e,t)=>ie(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 le(){I(null),R(e=>e+1)}(0,a.useEffect)(()=>{e.sr({limit:200}).then(V).catch(()=>V([]))},[]),(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t),t.length&&u(t[0].key)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{if(!l)return;let t=!1;return(async()=>{S(!0),w(``);try{let[n,r]=await Promise.all([e.cr(l,{clientId:H}),e.br(l,{clientId:H})]);if(t)return;ne(r.clientId??``),f(n??[]),m(Zx(n)),g((n??[]).map(e=>({value:e.name,label:e.label??e.name})));let i={};(r.fields??[]).forEach(e=>{i[e.field]=e}),v(i),b(r.merges??[])}catch(e){t||w(e?.message||`Failed to load configuration`)}finally{t||S(!1)}})(),()=>{t=!0}},[l,L,H]);let ue=(0,a.useMemo)(()=>p.map(e=>({value:e.key,label:`${e.label} (${e.key})`})),[p]);async function de(){E(!0);try{let t=Object.entries(_).map(([e,t])=>Qx(e,t)).filter(Boolean),{nextGroups:n,changed:r}=tS(d,_);await e.Jr({module:l,fields:t,merges:$x(y),clientId:H}),r.length&&(f(n),m(Zx(n)),g(n.map(e=>({value:e.name,label:e.label??e.name})))),ne(H),o.message.success(H?`Detail view configuration saved for this client`:`Detail view configuration saved`)}catch(e){o.message.error(e?.message||`Could not save configuration`)}finally{E(!1)}}function fe(e){v(t=>({...t,[D.key]:{...e,field:D.key}})),O(null)}function pe(e){v(t=>{let n={...t};return delete n[e],n})}function me(e){b(t=>{let n=[...t];return k.index===null?n.push(e):n[k.index]=e,n}),A(null)}function he(e,t){v(n=>{let r=n[e]??{field:e};return{...n,[e]:{...r,hidden:t}}})}let ge=e=>{if(!e)return null;let t=[];e.label&&t.push((0,c.jsx)(o.Tag,{color:`blue`,children:`label`},`l`)),(e.prefix||e.suffix)&&t.push((0,c.jsx)(o.Tag,{color:`geekblue`,children:`±fix`},`ps`)),e.color&&t.push((0,c.jsx)(o.Tag,{color:e.color,children:`colour`},`c`)),e.capitalize===!0&&t.push((0,c.jsx)(o.Tag,{color:`purple`,children:`Title`},`cap`)),e.capitalize===!1&&t.push((0,c.jsx)(o.Tag,{color:`default`,children:`raw`},`cap`)),e.lookupCollection&&t.push((0,c.jsxs)(o.Tag,{color:`volcano`,children:[`lookup: `,e.lookupCollection]},`lk`)),e.ignoreLabelWhenInDetail&&t.push((0,c.jsx)(o.Tag,{color:`default`,children:`static label`},`ilw`));let n=e.renderType||(e.documentPreview?`document`:e.displayAs);return n&&n!==`auto`&&t.push((0,c.jsx)(o.Tag,{color:`cyan`,children:n},`rt`)),t.length?t:(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},K=[{title:`Group`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsx)(Q,{strong:!0,style:{color:`var(--color-text-heading)`},children:e??t.name})},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Order`,dataIndex:`order`,key:`order`,width:72,align:`center`,render:e=>(0,c.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,width:76,align:`center`,render:e=>(0,c.jsx)(o.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,c.jsx)(o.Tag,{color:`blue`,style:{margin:0},children:n}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Hide Group`,key:`hideGroup`,width:110,align:`center`,render:(e,t)=>(0,c.jsx)(o.Tooltip,{title:Xx(t.hideGroup)?`Hidden from add/edit forms AND the detail view`:`Visible in both — same flag as Form Groups`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:Xx(t.hideGroup),loading:!!W[`${t.id}:hideGroup`],onChange:e=>oe(t,e)})})},{title:`Show Condition`,key:`ignoreShowIfInDetail`,width:130,align:`center`,render:(e,t)=>{let n=t.showIf?.field?`${t.showIf.field} ${t.showIf.operator??`eq`} ${t.showIf.value??``}`.trim():null;return n?(0,c.jsx)(o.Tooltip,{title:Xx(t.ignoreShowIfInDetail)?`Always shown, ignoring "${n}"`:`Hidden in the detail view unless "${n}"`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Always`,unCheckedChildren:`Follow`,checked:Xx(t.ignoreShowIfInDetail),loading:!!W[`${t.id}:ignoreShowIfInDetail`],onChange:e=>ce(t,e)})}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Empty Text`,key:`emptyText`,width:220,render:(e,t)=>Xx(t.addRow)?(0,c.jsx)(o.Input,{size:`small`,defaultValue:t.emptyText??``,placeholder:`No ${String(t.label??t.name??``).toLowerCase()} added`,onBlur:e=>ae(t,`emptyText`,e.target.value),onPressEnter:e=>e.currentTarget.blur()}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},{title:`Hide in Detail`,key:`hideGroupInDetail`,width:120,align:`center`,render:(e,t)=>(0,c.jsx)(o.Tooltip,{title:Xx(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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:Xx(t.hideGroupInDetail),loading:!!W[`${t.id}:hideGroupInDetail`],onChange:e=>se(t,e)})})}],_e=e=>{let t=e.fields??[];return t.length?(0,c.jsx)(`div`,{className:`fg-expanded-fields`,children:t.map(t=>{let n=_[t.field],r=n?.hidden??eS(t),i={key:t.field,label:t.label??t.field,type:t.type??`text`,group:e.label??e.name,labelWhen:t.labelWhen,lookupDefaults:t.lookupCollection?{lookupCollection:t.lookupCollection,displayField:t.displayField??``,displayField2:t.displayField2??``,valueField:t.valueField||`_id`}:{}};return(0,c.jsxs)(`div`,{className:`fg-field-row`,children:[(0,c.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,c.jsx)(`span`,{className:`fg-field-row-label`,children:n?.label||t.label}),(0,c.jsx)(`span`,{className:`fg-field-row-key`,children:t.field}),(0,c.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,t.type,`)`]}),Hb(t)&&(0,c.jsx)(o.Tooltip,{title:(()=>{let e=Ub(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,c.jsx)(o.Tag,{color:`magenta`,style:{marginLeft:6},children:`Unique`})}),(()=>{let e=(n?.labelWhen??[]).filter(e=>e?.field&&e?.label),r=e.length?e:t.labelWhen?.field&&t.labelWhen?.label?[t.labelWhen]:[];if(!r.length)return null;let i=n?.ignoreLabelWhenInDetail;return(0,c.jsx)(o.Tooltip,{title:i?`Conditional labels ignored here — the detail view always shows "${t.label}"`:`${e.length?`Set in Detail Groups`:`Inherited from Form Groups`} — ${r.map(e=>`"${e.label}" when ${e.field} ${e.operator??`eq`} ${e.value??``}`.trim()).join(`; `)}`,children:(0,c.jsxs)(o.Tag,{color:i?`default`:e.length?`purple`:`blue`,style:{marginLeft:6},children:[`⇄ `,r[0].label,r.length>1?` +${r.length-1}`:``]})})})()]}),(0,c.jsx)(`div`,{className:`fg-field-row-flags`,children:ge(n)}),(0,c.jsxs)(o.Space,{size:4,style:{marginLeft:`auto`},children:[(0,c.jsx)(o.Tooltip,{title:r?`Hidden in form and detail view`:`Visible`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:r,onChange:e=>he(t.field,e)})}),(0,c.jsx)(o.Tooltip,{title:`Customize field`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>O(i)})}),n&&(0,c.jsx)(o.Tooltip,{title:`Reset to default`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>pe(t.field)})})]})]},t.field)})}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`})},ve=(0,a.useMemo)(()=>{let e=z.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,z]),ye=[{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsxs)(`span`,{children:[(0,c.jsx)(Q,{strong:!0,children:e||t.key}),(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:t.key})]})},{title:`Fields`,dataIndex:`fields`,key:`fields`,render:e=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(e??[]).map(e=>(0,c.jsx)(o.Tag,{children:e},e))})},{title:`Format`,key:`sep`,width:220,render:(e,t)=>(0,c.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,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>A({index:n,merge:t})})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>b(e=>e.filter((e,t)=>t!==n))})})]})}],be=t.map(e=>({key:e.key,label:e.label}));return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.BgColorsOutlined,{}),title:`Detail Groups`,extra:(0,c.jsxs)(o.Space,{size:8,wrap:!0,children:[(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>re(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>re(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all detail settings`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>re(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.SettingOutlined,{}),onClick:()=>P(!0),children:`Display Defaults`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),disabled:!l,onClick:()=>M(!0),children:`Preview`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:T,disabled:!l,onClick:de,children:`Save Configuration`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(`div`,{className:`fg-scope-toolbar`,style:{marginBottom:12},children:[(0,c.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,c.jsxs)(o.Space,{wrap:!0,size:8,children:[(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,showSearch:!0,placeholder:`Client (default)`,style:{width:240},value:H||void 0,optionFilterProp:`label`,options:ee.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>te(e??``)}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>R(e=>e+1),children:`Reload`})]})]}),H&&!U&&!x&&(0,c.jsx)(o.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.`}),(0,c.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,c.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,c.jsxs)(o.Spin,{spinning:r,children:[(0,c.jsx)(o.Tabs,{activeKey:l,onChange:u,items:be.map(e=>({...e,children:null})),className:`admin-module-tabs`}),C&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:C,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:x,children:[(0,c.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search groups or fields`,value:z,onChange:e=>B(e.target.value)}),(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[d.length,` groups · `,p.length,` fields`]})]}),(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.name,dataSource:ve,columns:K,pagination:!1,size:`small`,className:`fg-table`,expandable:{expandedRowRender:_e,rowExpandable:()=>!0},locale:{emptyText:(0,c.jsx)(o.Empty,{description:`Select a module to see its groups and fields.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})}}),(0,c.jsxs)(`div`,{style:{margin:`20px 0 8px`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,c.jsxs)(Q,{strong:!0,children:[(0,c.jsx)(s.MergeCellsOutlined,{}),` Merged Fields`]}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),disabled:!l,onClick:()=>A({index:null,merge:null}),children:`Add Merge`})]}),(0,c.jsx)(o.Table,{rowKey:`key`,dataSource:y,columns:ye,pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{description:`No merged fields. Combine e.g. 'from' + 'to' into one.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]})}),(0,c.jsx)(iS,{open:!!D,fieldMeta:D,value:D?{...D.lookupDefaults,..._[D.key]??{}}:null,moduleFieldOptions:ue,onClose:()=>O(null),onSave:fe},D?.key??`field-closed`),(0,c.jsx)(sS,{open:!!k,merge:k?.merge,fieldOptions:ue,groupOptions:h,onClose:()=>A(null),onSave:me},k?`merge-${k.index??`new`}`:`merge-closed`),(0,c.jsx)(fS,{open:N,onClose:()=>P(!1)}),(0,c.jsx)(cS,{open:j,module:l,onClose:()=>M(!1)}),(0,c.jsx)(qb,{open:!!F,scope:`detailConfig`,action:F?.action,title:F?.title,description:F?.description,confirmLabel:F?.confirmLabel,danger:F?.danger,onCancel:()=>I(null),onVerified:le})]})}var mS=`/admin/email-templates`,hS=`/email-templates`;function gS(e){return e?.data??e}async function _S({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=gS(await t.a(t.b,`${mS}?${s}`))??{};return{items:Array.isArray(c.items)?c.items:[],totalCount:Number(c.totalCount??0)}}async function vS(e){return gS(await t.a(t.b,`${mS}/${encodeURIComponent(e)}`))}async function yS(e){return t.a(t.b,mS,{method:`POST`,body:JSON.stringify(e)})}async function bS(e,n){return t.a(t.b,`${mS}/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(n)})}async function xS(e){return t.a(t.b,`${mS}/${encodeURIComponent(e)}`,{method:`DELETE`})}async function SS({module:e=``,action:n=``}={}){let r=new URLSearchParams;e&&r.set(`module`,e),n&&r.set(`action`,n);let i=gS(await t.a(t.b,`${hS}${r.toString()?`?${r}`:``}`));return Array.isArray(i)?i:[]}async function CS(e){return gS(await t.a(t.b,`${hS}/${encodeURIComponent(e)}`))}async function wS(){let e=gS(await t.a(t.b,`/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 TS({offset:e=0,limit:n=20,search:r=``}={}){let i=gS(await t.a(t.b,`/signature/homePage?${new URLSearchParams({offset:String(e),limit:String(n),sortBy:`new`,searchValue:r})}`))??{},a=Array.isArray(i.data)?i.data.map(e=>({...e,isActive:e.isActive??e.status??!1})):[];return{items:a,totalCount:Number(i.totalCount??a.length)}}async function ES(e){return gS(await t.a(t.b,`/signature/editPreview?signatureId=${encodeURIComponent(e)}`))}async function DS(e){return t.a(t.b,`/signature/add`,{method:`POST`,body:JSON.stringify(e)})}async function OS(e){return t.a(t.b,`/signature/edit`,{method:`PUT`,body:JSON.stringify(e)})}async function kS(e){return t.a(t.b,`/signature/delete?signatureId=${encodeURIComponent(e)}`,{method:`DELETE`})}async function AS(e,n){return t.a(t.b,`/signature/statusUpdate?signatureId=${encodeURIComponent(e)}&status=${n}`,{method:`PUT`})}var jS={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:MS}=o.Typography,NS=[{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)`}],PS=[{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)`}],FS=[`GET`,`POST`,`PUT`,`DELETE`],IS=[`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`],LS={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`},RS=[{value:`notEmpty`,label:`is set (not empty)`},{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`}];function zS(){return`action_${Date.now()}`}function BS({open:e,initial:t,isChild:n,popupForms:r,templateOptions:i,permissionModules:l,permissionActions:u,onClose:d,onSave:f}){let[p]=o.Form.useForm(),[m,h]=(0,a.useState)(!1),g=o.Form.useWatch(`actionType`,p)??`navigate`,_=o.Form.useWatch(`showInDetail`,p)??!1,v=o.Form.useWatch(`popupKey`,p)??``,y=o.Form.useWatch(`doneOperator`,p)??`notEmpty`;(0,a.useEffect)(()=>{if(e){let[e=``,n=``]=(t?.permission??``).split(`.`);p.setFieldsValue({...LS,...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.actionType===`modal`&&g&&l?n.popupFieldOverrides=[{name:g,dataSource:l,...l===`master`?{masterName:u?.trim()}:{},..._?{labelKey:_}:{},...v?{valueKey:v}:{}}]:n.popupFieldOverrides=void 0,h(!0);try{await f({...n,...t?{popupState:t}:{popupState:void 0}})}finally{h(!1)}},x=[...IS.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,c.jsx)(o.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,c.jsx)(s.SaveOutlined,{})},className:`fg-editor-modal action-editor-modal`,children:(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,initialValues:LS,className:`action-editor-form`,children:[(0,c.jsx)(`div`,{className:`action-editor-intro`,children:`Choose what the action does, then decide where it appears and who can use it.`}),(0,c.jsxs)(`div`,{className:`action-editor-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`key`,label:`Key`,rules:[{required:!0,message:`Key is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. sourceCandidates`})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Source Candidates`})}),(0,c.jsx)(o.Form.Item,{name:`icon`,label:`Icon`,rules:[{required:!1,message:`Icon is required`}],children:(0,c.jsx)(o.Select,{options:NS,placeholder:`Select icon`,allowClear:!0})}),(0,c.jsx)(o.Form.Item,{name:`actionType`,label:`Action Type`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{options:PS})})]}),g===`group`&&(0,c.jsx)(o.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,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Behaviour`}),g===`navigate`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:`routeTemplate`,label:`Route Template`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. /app/jobs/edit/:_id`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{options:[{value:`_self`,label:`Same tab`},{value:`_blank`,label:`New tab`}]})})]}),g===`modal`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{showSearch:!0,optionFilterProp:`label`,options:x,placeholder:`Select popup form`})}),(0,c.jsx)(o.Form.Item,{name:`popupStateText`,label:`Popup Context (JSON, optional)`,tooltip:`Static context passed to the popup, for example {"notesfor":"candidate"}`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,placeholder:`{"notesfor":"candidate"}`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`apiMethod`,label:`Submit Method`,style:{width:150},children:(0,c.jsx)(o.Select,{options:FS.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. /module-data-update`})})]}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Popup Dropdown Source`}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`popupFieldName`,label:`Field Name`,style:{width:`28%`},tooltip:`The popup field to override. For Change Status, use "status".`,children:(0,c.jsx)(o.Input,{placeholder:`status`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldDataSource`,label:`Source`,style:{width:`24%`},children:(0,c.jsx)(o.Select,{allowClear:!0,options:[{value:`master`,label:`Master`}],placeholder:`Default`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldMasterName`,label:`Master Name`,style:{width:`48%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissions`})})]}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`popupFieldLabelKey`,label:`Label Key`,style:{width:`50%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissionStatusText`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldValueKey`,label:`Value Key`,style:{width:`50%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissionStatusText`})})]})]}),g===`modal`&&[`mail`,`vendor-share`].includes(v)&&(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`No default — user selects in composer`})}),g===`modal`&&v===`mail`&&(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Required`,unCheckedChildren:`Not required`})}),g===`api`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:`apiMethod`,label:`API Method`,children:(0,c.jsx)(o.Select,{options:FS.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.Form.Item,{name:`apiPath`,label:`API Path`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. /jobs/:_id`})})]}),g===`copy`&&(0,c.jsx)(o.Form.Item,{name:`copyField`,label:`Record Field to Copy`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. email or applicantRefrenceId`})}),g===`document`&&(0,c.jsx)(o.Form.Item,{name:`documentField`,label:`Document Field`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. resume or attachment`})}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Availability and access`}),(0,c.jsx)(o.Form.Item,{name:`allowedTabs`,label:`Allowed Tabs (optional)`,tooltip:`Leave empty to show on every tab.`,children:(0,c.jsx)(o.Select,{mode:`tags`,tokenSeparators:[`,`],placeholder:`e.g. allJobs`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. job`,options:l.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.Form.Item,{name:`permissionAction`,label:`Role Permission — Action`,style:{width:`50%`},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. edit`,options:u.map(e=>({value:e,label:e}))})})]}),(0,c.jsx)(o.Form.Item,{name:`permissionKey`,label:`Permission Key (row-level gate)`,tooltip:`Maps to record.actionPermission.<key>. Leave blank to always show.`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. edit, sourceCandidates, sharePermission`})}),(0,c.jsxs)(`div`,{className:`action-toggle-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`allowMultiple`,label:`Multiple Records`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`danger`,label:`Danger`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`showInList`,label:`Show in List`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`showInDetail`,label:`Show in Detail`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]}),_&&(0,c.jsx)(o.Form.Item,{name:`detailPlacement`,label:`Detail Placement`,children:(0,c.jsx)(o.Select,{options:[{value:`primary`,label:`Primary button`},{value:`more`,label:`More actions menu`}]})}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Done state (optional)`}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. Moved to Onboarded`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. onboardingStatus`})}),(0,c.jsx)(o.Form.Item,{name:`doneOperator`,label:`Condition`,style:{width:`30%`},children:(0,c.jsx)(o.Select,{options:RS})}),(0,c.jsx)(o.Form.Item,{name:`doneValue`,label:`Value`,style:{width:`30%`},hidden:y!==`eq`&&y!==`ne`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. In Progress`})})]}),(0,c.jsx)(o.Form.Item,{name:`doneTone`,label:`Done Colour`,children:(0,c.jsx)(o.Select,{options:[{value:`success`,label:`Success (green)`},{value:`primary`,label:`Primary (blue)`},{value:`danger`,label:`Danger (red)`}]})})]})})}function VS(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(``),[l,u]=(0,a.useState)([]),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(null),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)([]),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)(null),[N,P]=(0,a.useState)(``),[F,I]=(0,a.useState)([]),[L,R]=(0,a.useState)([]);(0,a.useEffect)(()=>{e.or().then(e=>{let t=tb(e);n(t),i(e=>e||t[0]?.value||``)}).catch(()=>{n([])})},[]),(0,a.useEffect)(()=>{Promise.all([e.kr().catch(()=>[]),e.Or().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,a.useCallback)(async()=>{if(r){v(!0),S(null),u([]);try{u(await e.Vr(r))}catch(e){S(e.message)}finally{v(!1)}}},[r]);(0,a.useEffect)(()=>{queueMicrotask(()=>{z()})},[z]),(0,a.useEffect)(()=>{Promise.all([e.yr(r,`popup`).catch(()=>[]),SS({module:r}).catch(()=>[])]).then(([e,t])=>{O(e),A(t.map(e=>({value:e._id??e.id,label:`${e.name} · ${e.action}`})))})},[r]),(0,a.useEffect)(()=>{queueMicrotask(()=>{let e=l.filter(e=>e.roleId===0),t=e.find(e=>e.module===r)??e[0];f(t??null),m(t?t.rowActions??[]:[]),g(!1)})},[r,l]);let B=async()=>{b(!0);try{if(d)await e.di(d.id??d._id,p),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:p}:e)),o.message.success(`Config saved`);else{let t=await e.Yn({module:r,roleId:0,rowActions:p}),n=t?.data??t;f(n),u(e=>[...e,n]),o.message.success(`Config created`)}g(!1)}catch(e){o.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}finally{b(!1)}},ee=async()=>{if(d)try{await e.ar(d.id??d._id),o.message.success(`Config deleted`),await z()}catch(e){o.message.error(e.message)}},[V,H]=(0,a.useState)(null),te=(e=null)=>{H(typeof e==`string`?e:null),E(null),w(!0)},U=(e,t=null)=>{H(t),E(e),w(!0)},ne=async t=>{let n;n=V?p.map(e=>{if(e.key!==V)return e;let n=e.children??[],r=T?n.map(e=>e.key===T.key?{...e,...t}:e):[...n,{...LS,...t,_localKey:zS()}];return{...e,children:r}}):T?p.map(e=>e.key===T.key?{...e,...t}:e):[...p,{...LS,...t,_localKey:zS()}];try{if(d)await e.di(d.id??d._id,n),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:n}:e)),o.message.success(`Config saved`);else{let t=await e.Yn({module:r,roleId:0,rowActions:n}),i=t?.data??t;f(i),u(e=>[...e,i]),o.message.success(`Config created`)}m(n),g(!1),w(!1)}catch(e){o.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}},W=(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)},G=(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 re(e){M(jS[e])}function ie(){M(null),z()}let ae=(0,a.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]),oe=[{title:`Order`,key:`order`,width:76,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{size:`small`,type:`text`,disabled:t._actionIndex===0,onClick:()=>G(t._actionIndex,-1),children:`↑`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,disabled:t._actionIndex===p.length-1,onClick:()=>G(t._actionIndex,1),children:`↓`})]})},{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{strong:!0,children:t.label||t.key}),(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(o.Tag,{color:`blue`,children:t.actionType}),(0,c.jsx)(MS,{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,c.jsxs)(o.Space,{size:[4,4],wrap:!0,children:[t.showInList&&(0,c.jsx)(o.Tag,{color:`green`,children:`List`}),(t.showInDetail??t.showInList)&&(0,c.jsxs)(o.Tag,{color:`purple`,children:[`Detail · `,t.detailPlacement||`more`]}),t.allowMultiple&&(0,c.jsx)(o.Tag,{children:`Multi-select`}),t.danger&&(0,c.jsx)(o.Tag,{color:`red`,children:`Destructive`}),!t.showInList&&!(t.showInDetail??t.showInList)&&(0,c.jsx)(MS,{type:`secondary`,children:`Nowhere`})]})},{title:`Access`,key:`access`,width:170,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:110,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[t.actionType===`group`&&(0,c.jsx)(o.Tooltip,{title:`Add child action`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>te(t.key)})}),(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>U(t)})}),(0,c.jsx)(o.Popconfirm,{title:`Remove this action?`,onConfirm:()=>W(t.key),okText:`Remove`,okType:`danger`,children:(0,c.jsx)(o.Tooltip,{title:`Remove`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}],se=e=>[{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{strong:!0,children:t.label||t.key}),(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(o.Tag,{color:`blue`,children:t.actionType}),(0,c.jsx)(MS,{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,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:80,fixed:`right`,render:(t,n)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>U(n,e)})}),(0,c.jsx)(o.Popconfirm,{title:`Remove this child action?`,onConfirm:()=>W(n.key,e),okText:`Remove`,okType:`danger`,children:(0,c.jsx)(o.Tooltip,{title:`Remove`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}];return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ToolOutlined,{}),title:`Actions`,extra:(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>re(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>re(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all actions`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>re(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(MS,{type:`secondary`,children:`Build one action once, then control its List and Detail placement, permissions, tabs, and multi-select behaviour.`})]}),(0,c.jsx)(Z,{styles:{body:{padding:`14px 18px`}},children:(0,c.jsxs)(`div`,{className:`admin-config-context`,children:[(0,c.jsxs)(`div`,{className:`admin-config-context-copy`,children:[(0,c.jsx)(MS,{strong:!0,children:`Configuration context`}),(0,c.jsx)(MS,{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,c.jsxs)(`div`,{className:`admin-config-context-controls`,children:[(0,c.jsxs)(`label`,{className:`admin-config-control`,children:[(0,c.jsx)(MS,{type:`secondary`,style:{display:`block`,marginBottom:4,fontSize:12},children:`Module`}),(0,c.jsx)(o.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:t.map(e=>({value:e.value,label:e.label===e.value?e.value:`${e.label} (${e.value})`}))})]}),(0,c.jsx)(`div`,{className:`admin-config-reload`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:z,loading:_,children:`Reload`})})]})]})}),x&&(0,c.jsx)(o.Alert,{type:`error`,message:x,showIcon:!0}),(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ToolOutlined,{}),title:(0,c.jsxs)(o.Space,{wrap:!0,children:[(0,c.jsxs)(`span`,{children:[p.length,` configured action`,p.length===1?``:`s`]}),d?(0,c.jsx)(o.Tag,{color:`green`,children:`Default config loaded (All Roles)`}):(0,c.jsx)(o.Tag,{color:`orange`,children:`No config — will create on Save`})]}),extra:(0,c.jsxs)(o.Space,{wrap:!0,children:[d&&(0,c.jsx)(o.Popconfirm,{title:`Delete this entire config?`,onConfirm:ee,okText:`Delete`,okType:`danger`,children:(0,c.jsx)(o.Button,{danger:!0,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),children:`Delete Config`})}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>te(),children:`New action`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:y,disabled:!h,onClick:B,children:`Save Config`})]}),children:[(0,c.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search actions`,value:N,onChange:e=>P(e.target.value)}),h&&(0,c.jsx)(MS,{type:`warning`,children:`Unsaved changes`})]}),(0,c.jsx)(o.Spin,{spinning:_,children:(0,c.jsx)(o.Table,{dataSource:ae.map((e,t)=>({...e,_actionIndex:p.indexOf(e),_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:oe,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,c.jsx)(o.Table,{dataSource:(e.children??[]).map((e,t)=>({...e,_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:se(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,c.jsx)(BS,{open:C,initial:T,isChild:!!V,popupForms:D,templateOptions:k,permissionModules:F,permissionActions:L,onClose:()=>w(!1),onSave:ne}),(0,c.jsx)(qb,{open:!!j,scope:`rowActions`,action:j?.action,title:j?.title,description:j?.description,confirmLabel:j?.confirmLabel,danger:j?.danger,onCancel:()=>M(null),onVerified:ie})]})}var{Text:HS,Title:US}=o.Typography,WS=[{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`}],GS=[{value:`{currentUserId}`,label:`{currentUserId} — the signed-in user`}],KS=[{value:`myJobs`,label:`My Jobs`},{value:`allJobs`,label:`All Jobs`}],qS=[`eq`,`ne`,`contains`,`includes`,`notIncludes`],JS=`scope`,YS=`fieldEq`,XS=[{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}],ZS=()=>({field:``,operator:`eq`,value:``,compareField:``}),QS=()=>({name:``,description:``,conditions:[ZS()],blockedActions:[],disabledActions:[],allowedActions:[],isActive:!0});function $S(e){return WS.find(t=>t.value===e)?.label??e}function eC(e){return e.operator===JS?`scope = ${e.value}`:e.operator===YS?`${e.field} = field:${e.compareField}`:[`isEmpty`,`notEmpty`].includes(e.operator)?`${e.field} ${$S(e.operator)}`:`${e.field} ${$S(e.operator)} "${e.value}"`}function tC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(QS()),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)([]),[D,O]=(0,a.useState)([]);(0,a.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{i(!0),e.or().then(e=>{if(t)return;let r=tb(e);n(r),u(e=>r.some(t=>t.value===e)?e:r[0]?.value??``)}).catch(()=>{t||(n([]),u(``))}).finally(()=>{t||i(!1)})}),()=>{t=!0}},[]);function k(t){m(!0),e.Ar(t).then(e=>f(Array.isArray(e)?e:[])).catch(()=>f([])).finally(()=>m(!1))}function A(t){e.Fr(t).then(e=>{E((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))}).catch(()=>E([]))}function j(t){e.Vr(t).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,a.useEffect)(()=>{queueMicrotask(()=>{if(!l){f([]),E([]),O([]);return}k(l),A(l),j(l)})},[l]);function M(){v(null),b(QS()),g(!0)}function N(e){v(e),b({name:e.name??``,description:e.description??``,conditions:e.conditions?.length?e.conditions.map(e=>({...e})):[ZS()],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 e.si(_.id,y),o.message.success(`Rule updated`)):(await e.qn({...y,module:l}),o.message.success(`Rule created`)),g(!1),k(l)}catch(e){o.message.error(e.message)}finally{S(!1)}}}async function F(t){try{await e.nr(t.id),o.message.success(`Rule deleted`)}catch(e){o.message.error(e.message)}k(l)}async function I(){w(!0);try{for(let t of XS)await e.qn({...t,module:l});o.message.success(`Default job rules created`),k(l)}catch(e){o.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,ZS()]}))}function z(e){b(t=>({...t,conditions:t.conditions.filter((t,n)=>n!==e)}))}return(0,c.jsxs)(`div`,{style:{padding:`24px 0`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,marginBottom:8,flexWrap:`wrap`},children:[(0,c.jsx)(US,{level:5,style:{margin:0},children:`Action Rules`}),(0,c.jsx)(o.Select,{options:t,value:l,loading:r,placeholder:`Select module`,onChange:u,style:{width:200}}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.PlusOutlined,{}),type:`primary`,disabled:!l,onClick:M,children:`Add Rule`}),(l===`job`||l===`jobs`)&&(0,c.jsx)(o.Tooltip,{title:`Create the 3 standard job rules that replace the hardcoded backend logic`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),loading:C,onClick:I,children:`Seed Job Defaults`})})]}),(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16,fontSize:12},message:(0,c.jsxs)(`span`,{children:[`Rules are evaluated `,(0,c.jsx)(`b`,{children:`per row`}),` in the list view using the record's own field values. When `,(0,c.jsx)(`b`,{children:`all conditions`}),` of a rule match, the listed action buttons are hidden for that row. The `,(0,c.jsx)(`b`,{children:`key`}),` of each blocked action must match what is set in `,(0,c.jsx)(`b`,{children:`Row Actions`}),` config.`]})}),(0,c.jsx)(o.Table,{columns:[{title:`Rule Name`,dataIndex:`name`,key:`name`,width:200,render:(e,t)=>(0,c.jsxs)(`div`,{children:[(0,c.jsx)(HS,{strong:!0,children:e}),t.description?(0,c.jsx)(`div`,{children:(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:11},children:t.description})}):null]})},{title:`Conditions (ALL must match)`,key:`conditions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,direction:`vertical`,children:(t.conditions??[]).map((e,t)=>(0,c.jsx)(o.Tag,{style:{fontFamily:`monospace`,fontSize:11,margin:0},children:eC(e)},t))})},{title:`Blocked Row Actions`,key:`blockedActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.blockedActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`volcano`,children:e},e))})},{title:`Disabled Row Actions`,key:`disabledActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.disabledActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`gold`,children:e},e))})},{title:`Only These Allowed`,key:`allowedActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.allowedActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`green`,children:e},e))})},{title:`Active`,dataIndex:`isActive`,key:`isActive`,width:70,render:e=>(0,c.jsx)(o.Tag,{color:e?`green`:`default`,children:e?`On`:`Off`})},{title:``,key:`act`,width:80,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.EditOutlined,{}),size:`small`,type:`text`,onClick:()=>N(t)})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this rule?`,onConfirm:()=>F(t),children:(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),size:`small`,type:`text`})})})]})}],dataSource:d,loading:p,rowKey:`id`,size:`small`,pagination:!1,locale:{emptyText:l?`No rules yet. Click "Add Rule" to get started.`:`No modules found. Configure modules first.`}}),(0,c.jsx)(o.Drawer,{open:h,title:_?`Edit: ${_.name}`:`Add Action Rule`,width:620,onClose:()=>g(!1),footer:(0,c.jsxs)(o.Space,{style:{float:`right`},children:[(0,c.jsx)(o.Button,{onClick:()=>g(!1),children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:x,onClick:P,children:`Save Rule`})]}),children:(0,c.jsxs)(o.Form,{layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{label:`Rule Name`,required:!0,children:(0,c.jsx)(o.Input,{value:y.name,placeholder:`e.g. Fulfilled jobs — block sourcing`,onChange:e=>b(t=>({...t,name:e.target.value}))})}),(0,c.jsx)(o.Form.Item,{label:`Description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2,value:y.description,placeholder:`Explain when this rule applies`,onChange:e=>b(t=>({...t,description:e.target.value}))})}),(0,c.jsx)(o.Form.Item,{label:`Active`,children:(0,c.jsx)(o.Switch,{checked:y.isActive,onChange:e=>b(t=>({...t,isActive:e}))})}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Conditions `,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12},children:`(ALL must match for the rule to fire)`})]}),y.conditions.map((e,t)=>(0,c.jsxs)(`div`,{style:{background:`#fafafa`,border:`1px solid #f0f0f0`,borderRadius:6,padding:`10px 12px`,marginBottom:8},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{label:`Operator`,style:{marginBottom:0,minWidth:140},children:(0,c.jsx)(o.Select,{options:WS,value:e.operator,style:{width:140},onChange:e=>L(t,{operator:e,value:``,compareField:``})})}),e.operator!==JS&&(0,c.jsxs)(o.Form.Item,{label:`Record Field`,style:{marginBottom:0,flex:1,minWidth:180},children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Field from the record (e.g. `,(0,c.jsx)(`code`,{children:`jobRecruitmentStatus`}),`, `,(0,c.jsx)(`code`,{children:`recruiters`}),`)`]})]}),qS.includes(e.operator)&&(0,c.jsxs)(o.Form.Item,{label:`Value`,style:{marginBottom:0,minWidth:180},children:[(0,c.jsx)(o.Select,{showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.value?[e.value]:[],options:GS,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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Type a literal, or pick `,(0,c.jsx)(`code`,{children:`{currentUserId}`}),` for the signed-in user.`]})]}),e.operator===JS&&(0,c.jsxs)(o.Form.Item,{label:`Scope Value`,style:{marginBottom:0,minWidth:140},children:[(0,c.jsx)(o.Select,{options:KS,value:e.value||void 0,style:{width:150},placeholder:`Select scope`,onChange:e=>L(t,{value:e})}),(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:11},children:`Current view tab (myJobs / allJobs)`})]}),e.operator===YS&&(0,c.jsxs)(o.Form.Item,{label:`Compare To Field`,style:{marginBottom:0,minWidth:160},children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`e.g. `,(0,c.jsx)(`code`,{children:`submissionCount`})]})]}),(0,c.jsx)(`div`,{style:{paddingTop:22},children:(0,c.jsx)(o.Button,{danger:!0,disabled:y.conditions.length<=1,icon:(0,c.jsx)(s.DeleteOutlined,{}),size:`small`,type:`text`,onClick:()=>z(t)})})]}),(0,c.jsx)(`div`,{style:{marginTop:6},children:(0,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Preview: `,(0,c.jsx)(`code`,{style:{color:`#1677ff`},children:eC(e)})]})})]},t)),(0,c.jsx)(o.Button,{size:`small`,style:{marginBottom:16},onClick:R,children:`+ Add Condition`}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Blocked Row Actions`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(hidden when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Must match the `,(0,c.jsx)(`b`,{children:`key`}),` of a Row Action (configured in Admin → Row Actions). Common job keys: `,(0,c.jsx)(`code`,{children:`sourceCandidates`}),`, `,(0,c.jsx)(`code`,{children:`quickSubmit`}),`,`,` `,(0,c.jsx)(`code`,{children:`changeStatus`}),`, `,(0,c.jsx)(`code`,{children:`share`}),`, `,(0,c.jsx)(`code`,{children:`addNotes`}),`, `,(0,c.jsx)(`code`,{children:`assign`}),`.`]})]}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Disabled Row Actions`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(stay visible, greyed out, when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{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,c.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,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Only These Actions Allowed`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(everything else is hidden when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`The `,(0,c.jsx)(`b`,{children:`inverse`}),` of Blocked. Use it for "when this happens, only these remain" — e.g. an inactive job where only `,(0,c.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,c.jsx)(`br`,{}),`Leave it `,(0,c.jsx)(`b`,{children:`empty`}),` for any normal rule — an allow-list that names nothing would hide everything.`]})]})]})})]})}function nC(){return(0,c.jsx)(o.Tabs,{defaultActiveKey:`actions`,className:`admin-config-tabs`,destroyOnHidden:!1,items:[{key:`actions`,label:`Action library`,icon:(0,c.jsx)(s.ThunderboltOutlined,{}),children:(0,c.jsx)(VS,{})},{key:`rules`,label:`Visibility rules`,icon:(0,c.jsx)(s.ApartmentOutlined,{}),children:(0,c.jsx)(tC,{})}]})}var{Text:rC}=o.Typography,iC={name:``,module:``,action:``,clientId:``,description:``,toMail:[],ccMail:[],bccMail:[],subject:``,body:``,isActive:!0},aC=e=>e?._id??e?.id;function oC(e){return String(e??``).trim().replace(/^{{\s*/,``).replace(/\s*}}$/,``).trim().replace(/^\./,``).trim()}function sC(...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 cC({open:t,templateId:n,modules:r,clients:i,onClose:s,onSaved:l}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)({});async function C(t){if(!t){v([]);return}let n=await e.Vr(t).catch(()=>[]),r=new Map;n.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(){b((await Promise.all((r??[]).map(async t=>{let n=t.value;return(await e.Fr(n).catch(()=>[])).map(e=>{let r=e.value??e.field??e.fieldKey??e.key??e.name,i=e.path??e.value??e.field??e.fieldKey??e.key??e.name;return{key:oC(r),value:oC(i),label:e.label??e.fieldName??e.name??e.value,moduleName:n,moduleLabel:t.label??n}}).filter(e=>e.key&&e.value)}))).flat())}(0,a.useEffect)(()=>{if(!t)return;let e=!1;return queueMicrotask(()=>{g(!0),w().catch(()=>{}),(n?vS(n):Promise.resolve(iC)).then(t=>{if(e)return;let n={...iC,...t,action:t?.action?[t.action]:[],clientId:t?.clientIdStr||(typeof t?.clientId==`string`?t.clientId:``)};u.setFieldsValue(n),f(n.body||``);let r={};(t?.placeholders??t?.placeHolder??[]).forEach(e=>{(e?.holders??[]).forEach(t=>{if(t?.key){let n=oC(t.key);r[n]={moduleName:e.moduleName,value:oC(t.value)}}})}),S(r),C(n.module)}).catch(e=>o.message.error(e?.message||`Could not load template`)).finally(()=>{e||g(!1)})}),()=>{e=!0}},[u,t,n,r]);function T(e){let t=`{{.${e.key}}}`;S(t=>({...t,[e.key]:{moduleName:e.moduleName,value:e.value}})),f(e=>`${e}${e?` `:``}${t}`),o.message.success(`Inserted ${t} from ${e.moduleLabel||e.moduleName}`)}function E(e,t){let n=x[e];if(n?.moduleName&&n?.value)return n;let r=y.filter(t=>t.key===e),i=r.find(e=>e.moduleName===t)??r[0];return i?{moduleName:i.moduleName,value:i.value}:null}async function D(){try{let e=await u.validateFields();if(!d.trim()){o.message.error(`Message body is required`);return}m(!0);let t=sC(e.subject,d),r=new Map;t.forEach(t=>{let n=E(t,e.module);n&&(r.has(n.moduleName)||r.set(n.moduleName,[]),r.get(n.moduleName).push({key:t,value:n.value}))});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,n?await bS(n,a):await yS(a),o.message.success(n?`Template updated`:`Template created`),l()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save template`)}finally{m(!1)}}let O=(0,a.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,c.jsx)(o.Drawer,{open:t,onClose:s,width:`min(920px, 96vw)`,title:n?`Edit email template`:`New email template`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:s,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:p,onClick:D,children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{form:u,layout:`vertical`,initialValues:iC,disabled:h,className:`template-editor-form`,children:[(0,c.jsxs)(`div`,{className:`template-editor-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`name`,label:`Template name`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Candidate introduction`})}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{showSearch:!0,optionFilterProp:`label`,options:r,onChange:e=>{u.setFieldValue(`action`,``),C(e)}})}),(0,c.jsx)(o.Form.Item,{name:`action`,label:`Action`,rules:[{required:!0}],tooltip:`Pick a Row Action, or TYPE a system action key. Not every email comes from a row action — the credentials mail sent when an employer's recruiters are provisioned uses "accountCreated", which is raised by a workflow and so never appears in this list.`,children:(0,c.jsx)(o.Select,{showSearch:!0,mode:`tags`,maxCount:1,optionFilterProp:`label`,options:_,placeholder:`Select a row action, or type a system key (e.g. accountCreated)`})}),(0,c.jsx)(o.Form.Item,{name:`clientId`,label:`Client scope (optional)`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`Available to every client`})})]}),(0,c.jsx)(o.Form.Item,{name:`description`,label:`Description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2})}),(0,c.jsxs)(`div`,{className:`template-editor-grid template-editor-grid--three`,children:[(0,c.jsx)(o.Form.Item,{name:`toMail`,label:`Default To`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,c.jsx)(o.Form.Item,{name:`ccMail`,label:`Default Cc`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,c.jsx)(o.Form.Item,{name:`bccMail`,label:`Default Bcc`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})})]}),(0,c.jsx)(o.Form.Item,{name:`subject`,label:`Subject`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Email subject`})}),(0,c.jsx)(o.Form.Item,{label:`Message`,required:!0,children:(0,c.jsx)(e.Sn,{value:d,onChange:f,placeholder:`Write the reusable email body…`})}),(0,c.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,c.jsx)(rC,{strong:!0,children:`All module placeholders`}),(0,c.jsx)(rC,{type:`secondary`,children:`Placeholders from every configured module are available. Click one to append it; its source module is saved automatically.`}),O.map(e=>(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{type:`secondary`,strong:!0,children:e.label||e.moduleName}),(0,c.jsx)(`div`,{className:`template-placeholder-list`,children:e.fields.map(t=>(0,c.jsx)(o.Tooltip,{title:`${t.label||t.key} · ${t.value}`,children:(0,c.jsx)(o.Tag,{color:`blue`,style:{cursor:`pointer`},onClick:()=>T(t),children:`{{.${t.key}}}`})},`${e.moduleName}:${t.key}:${t.value}`))})]},e.moduleName)),!O.length&&(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`No module fields available`})]}),(0,c.jsx)(o.Form.Item,{name:`isActive`,label:`Available in mail composer`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]})})}function lC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(1),[h,g]=(0,a.useState)(20),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(null),[C,w]=(0,a.useState)(!1),T=(0,a.useMemo)(()=>_.map(e=>({value:e.key??e.module??e.value,label:e.label??e.name??e.key??e.module??e.value})).filter(e=>e.value),[_]);function E(e=p,t=h,r=d){u(!0),_S({offset:(e-1)*t,limit:t,search:r}).then(({items:e,totalCount:t})=>{n(e),i(t)}).catch(e=>o.message.error(e?.message||`Could not load templates`)).finally(()=>u(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{E(1,h,``)})},[]),(0,a.useEffect)(()=>{Promise.all([e.hr(),e.sr({limit:200})]).then(([e,t])=>{v(tb(e).map(({value:e,label:t})=>({key:e,label:t}))),b(t)}).catch(()=>{})},[]);async function D(e,t){let r=aC(e);try{await bS(r,{...e,isActive:t}),n(e=>e.map(e=>aC(e)===r?{...e,isActive:t}:e))}catch(e){o.message.error(e?.message||`Could not update status`)}}async function O(e){try{await xS(e),o.message.success(`Template deleted`),E(1),m(1)}catch(e){o.message.error(e?.message||`Could not delete template`)}}let k=[{title:`Template`,key:`template`,width:300,ellipsis:!0,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell templates-primary-cell`,children:[(0,c.jsx)(rC,{strong:!0,ellipsis:{tooltip:t.name},children:t.name}),(0,c.jsx)(rC,{type:`secondary`,ellipsis:{tooltip:t.description||t.subject},children:t.description||t.subject||`No description`})]})},{title:`Module`,dataIndex:`module`,key:`module`,width:140,ellipsis:!0,responsive:[`sm`],render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,children:e}):`—`},{title:`Action`,dataIndex:`action`,key:`action`,width:180,ellipsis:!0,responsive:[`md`],render:e=>e?(0,c.jsx)(rC,{code:!0,ellipsis:{tooltip:e},children:e}):`—`},{title:`Recipients`,key:`recipients`,width:130,responsive:[`lg`],render:(e,t)=>`${(t.toMail?.length??0)+(t.ccMail?.length??0)+(t.bccMail?.length??0)} defaults`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>D(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{S(aC(t)),w(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this template?`,onConfirm:()=>O(aC(t)),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],A=y.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e._id})).filter(e=>e.value);return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.MailOutlined,{}),title:`Email templates`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{S(null),w(!0)},children:`New template`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(rC,{type:`secondary`,children:`Create reusable, module-aware email content. Modules, actions and placeholders are read from DB configuration.`})]}),(0,c.jsxs)(Z,{title:`${r} template${r===1?``:`s`}`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>E(),children:`Reload`}),children:[(0,c.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search templates`,value:d,onChange:e=>{let t=e.target.value;f(t),m(1),E(1,h,t)}})}),(0,c.jsx)(`div`,{className:`templates-table-viewport`,children:(0,c.jsx)(o.Table,{rowKey:aC,columns:k,dataSource:t,loading:l,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:914,y:`calc(100vh - 410px)`},pagination:{current:p,pageSize:h,total:r,showSizeChanger:!0,responsive:!0,onChange:(e,t)=>{m(e),g(t),E(e,t)}}})})]}),(0,c.jsx)(cC,{open:C,templateId:x,modules:T,clients:A,onClose:()=>w(!1),onSaved:()=>{w(!1),E()}})]})}function uC({open:t,signatureId:n,onClose:r,onSaved:i}){let[s,l]=(0,a.useState)(``),[u,d]=(0,a.useState)(``),[f,p]=(0,a.useState)({module:`userSignature`,keys:[]}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!t)return;let e=!1;return queueMicrotask(()=>{_(!0),Promise.all([n?ES(n):Promise.resolve(null),wS()]).then(([t,n])=>{e||(l(t?.signatureName??``),d(t?.signature??``),p(n??{module:`userSignature`,keys:[]}))}).catch(()=>{e||o.message.error(`Could not load signature details`)}).finally(()=>{e||_(!1)})}),()=>{e=!0}},[t,n]);function v(e){let t=`{{.${e.key}}}`;d(e=>`${e}${e?` `:``}${t}`)}async function y(){if(!s.trim())return o.message.error(`Signature name is required`);if(!u.trim())return o.message.error(`Signature content is required`);h(!0);try{let e=sC(u),t=(f.keys??[]).filter(t=>e.has(t.key)).map(e=>({key:e.key,value:e.value})),r={signatureId:n,signatureName:s,signature:u,signatureLogoPath:``,placeHolder:t.length?[{moduleName:f.module||`userSignature`,holders:t}]:[]};n?await OS(r):await DS(r),o.message.success(n?`Signature updated`:`Signature created`),i()}catch(e){o.message.error(e?.message||`Could not save signature`)}finally{h(!1)}}let b=(f.keys??[]).filter(e=>![`Role_id`,`Role_name`,`Reporting_manager`].includes(e.key)),x=(f.keys??[]).filter(e=>[`Role_id`,`Role_name`,`Reporting_manager`].includes(e.key)),S=e=>(0,c.jsx)(`div`,{className:`template-placeholder-list`,children:e.map(e=>(0,c.jsx)(o.Tooltip,{title:`Mongo field: ${e.value}`,children:(0,c.jsx)(o.Tag,{color:`blue`,style:{cursor:`pointer`},onClick:()=>v(e),children:`{{.${e.key}}}`})},e.key))});return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(820px, 96vw)`,title:n?`Edit signature`:`New signature`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:y,children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{label:`Signature name`,required:!0,children:(0,c.jsx)(o.Input,{value:s,onChange:e=>l(e.target.value)})}),(0,c.jsx)(o.Form.Item,{label:`Signature content`,required:!0,children:(0,c.jsx)(e.Sn,{value:u,onChange:d,placeholder:`Create the reusable signature…`})}),(0,c.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,c.jsx)(rC,{strong:!0,children:`Signature placeholders`}),(0,c.jsx)(rC,{type:`secondary`,children:`Click a placeholder to add it to the signature. Values resolve from MongoDB users and roles when mail is generated.`}),g?(0,c.jsx)(rC,{type:`secondary`,children:`Loading placeholders…`}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{strong:!0,children:`User details`}),S(b)]}),(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{strong:!0,children:`Role details`}),S(x)]}),!f.keys?.length&&(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`No signature placeholders available`})]})]})]})})}function dC(){let[e,t]=(0,a.useState)([]),[n,r]=(0,a.useState)(0),[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(``),[f,p]=(0,a.useState)(1),[m,h]=(0,a.useState)(20),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(null);function b(e=f,n=m,i=u){l(!0),TS({offset:(e-1)*n,limit:n,search:i}).then(({items:e,totalCount:n})=>{t(e),r(n)}).catch(()=>o.message.error(`Could not load signatures`)).finally(()=>l(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{b(1,m,``)})},[]);async function x(e,n){try{await AS(e.signatureId,n),t(t=>t.map(t=>t.signatureId===e.signatureId?{...t,isActive:n}:t))}catch{o.message.error(`Could not update status`)}}async function S(e){try{await kS(e),o.message.success(`Signature deleted`),p(1),b(1)}catch{o.message.error(`Could not delete signature`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.MailOutlined,{}),title:`Signature templates`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{y(null),_(!0)},children:`New signature`}),children:(0,c.jsx)(rC,{type:`secondary`,children:`Existing company and user signatures from the shared DB.`})}),(0,c.jsxs)(Z,{title:`${n} signature${n===1?``:`s`}`,children:[(0,c.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),value:u,placeholder:`Search signatures`,onChange:e=>{d(e.target.value),p(1),b(1,m,e.target.value)}})}),(0,c.jsx)(`div`,{className:`templates-table-viewport`,children:(0,c.jsx)(o.Table,{rowKey:`signatureId`,dataSource:e,columns:[{title:`Signature`,dataIndex:`templateName`,key:`name`,width:300,ellipsis:!0,render:e=>(0,c.jsx)(rC,{strong:!0,ellipsis:{tooltip:e},children:e||`Untitled signature`})},{title:`Created`,dataIndex:`createdDt`,key:`created`,width:150,responsive:[`md`],render:e=>e?new Date(e).toLocaleDateString():`—`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>x(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{y(t.signatureId),_(!0)}}),(0,c.jsx)(o.Popconfirm,{title:`Delete this signature?`,onConfirm:()=>S(t.signatureId),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],loading:i,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:614,y:`calc(100vh - 410px)`},pagination:{current:f,pageSize:m,total:n,responsive:!0,onChange:(e,t)=>{p(e),h(t),b(e,t)}}})})]}),(0,c.jsx)(uC,{open:g,signatureId:v,onClose:()=>_(!1),onSaved:()=>{_(!1),b()}})]})}function fC(){return(0,c.jsx)(o.Tabs,{defaultActiveKey:`email`,className:`admin-config-tabs`,items:[{key:`email`,label:`Email templates`,children:(0,c.jsx)(lC,{})},{key:`signature`,label:`Signatures`,children:(0,c.jsx)(dC,{})}]})}var{Text:pC}=o.Typography,mC={serviceKey:``,label:``,baseUrl:``,authHeader:``,authValue:``,enabled:!0};function hC({open:t,service:n,onClose:r,onSaved:i}){let[s]=o.Form.useForm(),[l,u]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&s.setFieldsValue({...mC,...n,authValue:``})},[t,n,s]);async function d(){try{let t=await s.validateFields();u(!0),await e.Kr(t),o.message.success(`AI service saved`),i()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save AI service`)}finally{u(!1)}}return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(560px, 96vw)`,title:n?`Edit AI service`:`New AI service`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:l,onClick:d,children:`Save`})]}),children:(0,c.jsxs)(o.Form,{form:s,layout:`vertical`,initialValues:mC,children:[(0,c.jsx)(o.Form.Item,{name:`serviceKey`,label:`Service Key`,rules:[{required:!0,message:`Service key is required`}],tooltip:`Referenced by an AI Action's Service Key on any form field (e.g. pyOps).`,children:(0,c.jsx)(o.Input,{placeholder:`pyOps`,disabled:!!n,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Label`,children:(0,c.jsx)(o.Input,{placeholder:`Resume/JD Parsing Service`})}),(0,c.jsx)(o.Form.Item,{name:`baseUrl`,label:`Base URL`,rules:[{required:!0,message:`Base URL is required`}],children:(0,c.jsx)(o.Input,{placeholder:`https://ai.example.com`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`authHeader`,label:`Auth Header (optional)`,children:(0,c.jsx)(o.Input,{placeholder:`x-api-key`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`authValue`,label:`Auth Value`,tooltip:`Write-only — leave blank to keep the currently saved value.`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?`Unchanged`:``})}),(0,c.jsx)(o.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]})})}function gC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null);function p(){i(!0),e.lr().then(e=>n(Array.isArray(e)?e:[])).catch(e=>o.message.error(e?.message||`Could not load AI services`)).finally(()=>i(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{p()})},[]);async function m(t,r){try{await e.Kr({...t,enabled:r}),n(e=>e.map(e=>e.serviceKey===t.serviceKey?{...e,enabled:r}:e))}catch(e){o.message.error(e?.message||`Could not update AI service`)}}async function h(t){try{await e.Zn(t),o.message.success(`AI service deleted`),p()}catch(e){o.message.error(e?.message||`Could not delete AI service`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`AI Services`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New service`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(pC,{type:`secondary`,children:`Register the AI/automation backends that admin-configured "AI Actions" (Generate/Parse-style buttons on any form field) call. A field's AI Action names a Service Key here — no URL is ever hardcoded in the app.`})]}),(0,c.jsx)(Z,{title:`${t.length} service${t.length===1?``:`s`}`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:p,children:`Reload`}),children:(0,c.jsx)(o.Table,{rowKey:`serviceKey`,columns:[{title:`Service`,key:`service`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(pC,{strong:!0,children:t.label||t.serviceKey}),(0,c.jsx)(pC,{type:`secondary`,code:!0,children:t.serviceKey})]})},{title:`Base URL`,dataIndex:`baseUrl`,key:`baseUrl`,ellipsis:!0,render:e=>(0,c.jsx)(pC,{code:!0,ellipsis:{tooltip:e},children:e})},{title:`Auth Header`,dataIndex:`authHeader`,key:`authHeader`,width:140,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,key:`enabled`,width:90,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>m(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this AI service?`,onConfirm:()=>h(t.serviceKey),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],dataSource:t,loading:r,className:`fg-table`,size:`small`})}),(0,c.jsx)(hC,{open:l,service:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:_C}=o.Typography,vC={integrationKey:``,label:``,category:`GENERAL`,updateMethod:`MANUAL`,enabled:!0,provider:``,baseUrl:``,authType:`API_KEY`,authHeader:`x-api-key`,authValue:``,clientId:``,clientSecret:``,tokenUrl:``,createPath:``,statusPath:``,testPath:``,webhookSecret:``,targetModule:``,targetField:``,stageMatchField:``,stageMatchValue:``,stageStatusField:``,providerStatusPath:``,providerReferencePath:``,statusMappings:[{providerStatus:``,applicationStatus:``}]},yC=[{label:`API Key`,value:`API_KEY`},{label:`Bearer Token`,value:`BEARER_TOKEN`},{label:`Basic Authentication`,value:`BASIC_AUTH`},{label:`OAuth 2.0 Client Credentials`,value:`OAUTH2_CLIENT_CREDENTIALS`}];function bC(e){let t=Object.fromEntries((e.statusMappings??[]).filter(e=>e?.providerStatus&&e?.applicationStatus).map(e=>[e.providerStatus.trim(),e.applicationStatus.trim()])),n={...e,statusMapping:e.updateMethod===`API`?{targetModule:e.targetModule,targetField:e.targetField,stageMatchField:e.stageMatchField,stageMatchValue:e.stageMatchValue,stageStatusField:e.stageStatusField,providerStatusPath:e.providerStatusPath,providerReferencePath:e.providerReferencePath,values:t}:void 0};return[`statusMappings`,`targetModule`,`targetField`,`stageMatchField`,`stageMatchValue`,`stageStatusField`,`providerStatusPath`,`providerReferencePath`].forEach(e=>delete n[e]),n}function xC({open:t,integration:n,onClose:r,onSaved:i}){let[l]=o.Form.useForm(),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(!1),m=o.Form.useWatch(`updateMethod`,l),h=o.Form.useWatch(`authType`,l),g=m===`API`,_=h===`OAUTH2_CLIENT_CREDENTIALS`;(0,a.useEffect)(()=>{if(!t)return;let e=n?.statusMapping??{};l.setFieldsValue({...vC,...n,authValue:``,clientSecret:``,webhookSecret:``,targetModule:e.targetModule??``,targetField:e.targetField??``,stageMatchField:e.stageMatchField??``,stageMatchValue:e.stageMatchValue??``,stageStatusField:e.stageStatusField??``,providerStatusPath:e.providerStatusPath??``,providerReferencePath:e.providerReferencePath??``,statusMappings:Object.entries(e.values??{}).map(([e,t])=>({providerStatus:e,applicationStatus:t})).concat(Object.keys(e.values??{}).length?[]:[{providerStatus:``,applicationStatus:``}])})},[l,n,t]);async function v(){try{let t=bC(await l.validateFields());d(!0),await e.Xr(t),o.message.success(`Integration saved`),i()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save integration`)}finally{d(!1)}}async function y(){try{let t=await l.validateFields([`integrationKey`,`baseUrl`,`testPath`,`authType`,`authHeader`,`authValue`,`clientId`,`clientSecret`,`tokenUrl`]);p(!0);let n=await e.ni(bC({...l.getFieldsValue(!0),...t}));o.message.success(n?.message||`Connection successful${n?.statusCode?` (${n.statusCode})`:``}`)}catch(e){e?.errorFields||o.message.error(e?.message||`Connection test failed`)}finally{p(!1)}}return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(680px, 96vw)`,title:n?`Edit ${n.label}`:`Add Integration`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[g&&(0,c.jsx)(o.Button,{loading:f,onClick:y,children:`Test Connection`}),(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:u,onClick:v,children:`Save`})]}),children:(0,c.jsxs)(o.Form,{form:l,layout:`vertical`,initialValues:vC,children:[(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`label`,label:`Integration Name`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Background Check`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`integrationKey`,label:`Integration Key`,rules:[{required:!0},{pattern:/^[a-z][a-z0-9_-]{1,63}$/,message:`Use lowercase letters, numbers, _ or -`}],children:(0,c.jsx)(o.Input,{placeholder:`bgc`,disabled:!!n})})})]}),(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`category`,label:`Category`,children:(0,c.jsx)(o.Select,{options:[{value:`ONBOARDING`,label:`Onboarding`},{value:`HRMS`,label:`HRMS`},{value:`PAYROLL`,label:`Payroll`},{value:`ESIGNATURE`,label:`E-Signature`},{value:`VMS`,label:`VMS`},{value:`GENERAL`,label:`General / Custom`}]})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})})]}),(0,c.jsx)(o.Form.Item,{name:`updateMethod`,label:`Update Method`,rules:[{required:!0}],children:(0,c.jsx)(o.Radio.Group,{optionType:`button`,buttonStyle:`solid`,options:[{label:`Manual Update`,value:`MANUAL`},{label:`API Integration`,value:`API`}]})}),!g&&(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`This integration will use manual updates.`}),g&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Alert,{type:n?.credentialsConfigured?`success`:`warning`,showIcon:!0,message:n?.credentialsConfigured?`Credentials configured`:`Credentials required`,description:`Secrets are write-only. Leave a secret blank while editing to keep its current value.`,style:{marginBottom:16}}),(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`provider`,label:`Provider`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Provider name`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`baseUrl`,label:`API Base URL`,rules:[{required:!0,type:`url`}],children:(0,c.jsx)(o.Input,{placeholder:`https://api.provider.com`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`createPath`,label:`Create/Submit Path`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`/v1/requests`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`statusPath`,label:`Status Path`,rules:[{required:!0}],tooltip:`Use {referenceId} as a placeholder.`,children:(0,c.jsx)(o.Input,{placeholder:`/v1/requests/{referenceId}`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`testPath`,label:`Test Connection Path`,rules:[{required:!0}],tooltip:`A safe GET endpoint used only to validate URL and credentials.`,children:(0,c.jsx)(o.Input,{placeholder:`/v1/health`})})})]}),(0,c.jsx)(o.Form.Item,{name:`authType`,label:`Authentication Type`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{options:yC})}),_?(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`clientId`,label:`Client ID`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`clientSecret`,label:`Client Secret`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.credentialsConfigured?`Unchanged`:`Required`})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{name:`tokenUrl`,label:`Token URL`,rules:[{required:!0,type:`url`}],children:(0,c.jsx)(o.Input,{})})})]}):(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`authHeader`,label:`Authentication Header`,children:(0,c.jsx)(o.Input,{placeholder:`x-api-key`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`authValue`,label:`API Credential`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.credentialsConfigured?`Unchanged`:`Required`})})})]}),(0,c.jsx)(o.Form.Item,{name:`webhookSecret`,label:`Webhook Signing Secret (optional)`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.webhookConfigured?`Unchanged`:``})}),(0,c.jsxs)(Z,{title:`Status Mapping`,children:[(0,c.jsx)(_C,{type:`secondary`,children:`Map a status from the provider response into a module field or a matching workflow stage.`}),(0,c.jsxs)(o.Row,{gutter:16,style:{marginTop:16},children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`targetModule`,label:`Target Module`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`onboarding`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`targetField`,label:`Target Field`,rules:[{required:!0}],tooltip:`Use stages for a stage-array update, or a direct field name.`,children:(0,c.jsx)(o.Input,{placeholder:`stages`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`providerStatusPath`,label:`Provider Status JSON Path`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`data.status`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`providerReferencePath`,label:`Provider Reference JSON Path`,children:(0,c.jsx)(o.Input,{placeholder:`data.id`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageMatchField`,label:`Stage Match Field`,children:(0,c.jsx)(o.Input,{placeholder:`stageCode`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageMatchValue`,label:`Stage Match Value`,children:(0,c.jsx)(o.Input,{placeholder:`BGC`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageStatusField`,label:`Stage Status Field`,children:(0,c.jsx)(o.Input,{placeholder:`status`})})})]}),(0,c.jsx)(_C,{strong:!0,children:`Status Values`}),(0,c.jsx)(o.Form.List,{name:`statusMappings`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(o.Space,{direction:`vertical`,style:{width:`100%`,marginTop:8},children:[e.map(e=>(0,c.jsxs)(o.Row,{gutter:12,children:[(0,c.jsx)(o.Col,{flex:`1 1 220px`,children:(0,c.jsx)(o.Form.Item,{...e,name:[e.name,`providerStatus`],rules:[{required:!0,message:`Provider status is required`}],children:(0,c.jsx)(o.Input,{placeholder:`Provider status, e.g. completed`})})}),(0,c.jsx)(o.Col,{flex:`1 1 220px`,children:(0,c.jsx)(o.Form.Item,{...e,name:[e.name,`applicationStatus`],rules:[{required:!0,message:`Application status is required`}],children:(0,c.jsx)(o.Input,{placeholder:`Zinnext status, e.g. CLEARED`})})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{danger:!0,onClick:()=>n(e.name),children:`Remove`})})]},e.key)),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({providerStatus:``,applicationStatus:``}),children:`Add Status Mapping`})]})})]})]})]})})}function SC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null),p=(0,a.useCallback)(()=>{i(!0),e.wr().then(e=>n(Array.isArray(e)?e:[])).catch(e=>o.message.error(e?.message||`Could not load integrations`)).finally(()=>i(!1))},[]);(0,a.useEffect)(()=>{queueMicrotask(p)},[p]);async function m(t){try{await e.$n(t),o.message.success(`Integration deleted`),p()}catch(e){o.message.error(e?.message||`Could not delete integration`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ApiOutlined,{}),title:`Integrations`,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`Add Integration`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(_C,{type:`secondary`,children:`Configure reusable manual or API integrations for onboarding, payroll, e-signature, VMS, HRMS, and custom workflows.`})]}),(0,c.jsx)(Z,{title:`${t.length} integration${t.length===1?``:`s`}`,children:(0,c.jsx)(o.Table,{rowKey:`integrationKey`,columns:[{title:`Integration`,key:`name`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(_C,{strong:!0,children:t.label}),(0,c.jsx)(_C,{type:`secondary`,code:!0,children:t.integrationKey})]})},{title:`Category`,dataIndex:`category`,width:130,render:e=>e||`GENERAL`},{title:`Method`,dataIndex:`updateMethod`,width:110,render:e=>(0,c.jsx)(o.Tag,{color:e===`API`?`blue`:`default`,children:e})},{title:`Provider`,dataIndex:`provider`,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,width:90,render:e=>(0,c.jsx)(o.Tag,{color:e?`green`:`default`,children:e?`Yes`:`No`})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}}),(0,c.jsx)(o.Popconfirm,{title:`Delete this integration?`,onConfirm:()=>m(t.integrationKey),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],dataSource:t,loading:r,size:`small`,className:`fg-table`})}),(0,c.jsx)(xC,{open:l,integration:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:$}=o.Typography;function CC({rows:e,onChange:t,keyPlaceholder:n,valuePlaceholder:r}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,c.jsxs)(`div`,{children:[e.map((e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(`span`,{style:{color:`#94a3b8`,alignSelf:`center`},children:`→`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`})]})}function wC({rows:e,onChange:t,keyPlaceholder:n=`field`,valuePlaceholder:r=`literal or {{field.path}}`}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,c.jsxs)(`div`,{children:[e.map((e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1.6},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:[`Values are read as JSON when possible (true, 123, ["a","b"]) — otherwise kept as literal text. Use `,(0,c.jsx)(`code`,{children:`{{field.path}}`}),` to reference a payload field, or `,(0,c.jsx)(`code`,{children:`{{now}}`}),` for the current time.`]})]})}function TC(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:String(t??``)}))}function EC(e){let t={};for(let n of e??[])n.key?.trim()&&(t[n.key.trim()]=n.value??``);return t}function DC(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)}))}function OC(e){let t={};for(let n of e??[]){if(!n.key?.trim())continue;let e=n.value;if(typeof e==`string`){let t=e.trim();if(t!==``)try{e=JSON.parse(t)}catch{}}t[n.key.trim()]=e}return t}function kC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceModule:``,sourceIdField:``,required:!1,...t??{},fieldMapRows:TC(t?.fieldMap)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.DatabaseOutlined,{}),` `,t?`Edit Denormalize Rule`:`New Denormalize Rule`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceModule?.trim())return o.message.error(`Source module is required`);if(!i.sourceIdField?.trim())return o.message.error(`Source id field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:EC(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source module`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`job`,value:i.sourceModule??``,onChange:e=>u(`sourceModule`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source id field (on THIS payload)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`jobId`,value:i.sourceIdField??``,onChange:e=>u(`sourceIdField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!i.required,onChange:e=>u(`required`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Required — block the write if the source record can't be found`})]}),(0,c.jsxs)(`div`,{style:{marginTop:16},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source field → this payload's field)`}),(0,c.jsx)(CC,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`jobTitle`,valuePlaceholder:`jobTitle`})]})]})})}function AC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceField:``,targetField:``,sourceCollection:``,idField:``,idOutputKey:``,stampNow:``,...t??{},fieldMapRows:TC(t?.fieldMap)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ApartmentOutlined,{}),` `,t?`Edit Array Enrichment`:`New Array Enrichment`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return o.message.error(`Source field is required`);if(!i.targetField?.trim())return o.message.error(`Target field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:EC(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (array of ids on this payload)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruitersData`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Target field (enriched array written here)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruiters`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source collection`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`users (default)`,value:i.sourceCollection??``,onChange:e=>u(`sourceCollection`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Id field on that collection`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`legacyUserId (default)`,value:i.idField??``,onChange:e=>u(`idField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:16},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source collection field → output key)`}),(0,c.jsx)(CC,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`firstName`,valuePlaceholder:`recruiterName`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also write the matched id as`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruiterId`,value:i.idOutputKey??``,onChange:e=>u(`idOutputKey`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also stamp the current time as`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`assignedDateTime`,value:i.stampNow??``,onChange:e=>u(`stampNow`,e.target.value),className:`fg-mono-input`})]})]})]})})}function jC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceField:``,targetField:``,uploadedFileNameField:``,uniqueNameField:``,uploadedAtField:``,uploadedByField:``,arrayMode:!1,nameFromField:``,nameOutputField:``,historyField:``,historySnapshotKey:``,historyReason:``,...t??{},staticFieldRows:TC(t?.staticFields),arrayFieldNameRows:TC(t?.arrayFieldNames)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.DatabaseOutlined,{}),` `,t?`Edit File Field Map`:`New File Field Map`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return o.message.error(`Source field (the multipart upload key) is required`);if(!i.targetField?.trim())return o.message.error(`Target field is required`);let{staticFieldRows:e,arrayFieldNameRows:t,...n}=i;r({...n,staticFields:EC(e),arrayFieldNames:EC(t)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Turns one uploaded file field into a nested object (or array of objects) instead of a flat S3 path string — for schemas like a candidate's resume/passport/visa that store location + filename + who/when as sub-fields.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (multipart upload key)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Target field `,i.arrayMode?`(array)`:`(location sub-field)`]}),(0,c.jsx)(o.Input,{size:`small`,placeholder:i.arrayMode?`documents`:`resume.location`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!i.arrayMode,onChange:e=>u(`arrayMode`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Array mode — every uploaded file becomes one element (e.g. "documents")`})]}),i.arrayMode?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Sub-field names (location / uploadedFileName / uniqueName → this schema's names)`}),(0,c.jsx)(CC,{rows:i.arrayFieldNameRows??[],onChange:e=>u(`arrayFieldNameRows`,e),keyPlaceholder:`location`,valuePlaceholder:`documentCopyLocation`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Take each element's display name from (payload array field)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documents`,value:i.nameFromField??``,onChange:e=>u(`nameFromField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...reading its field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documentName`,value:i.nameOutputField??``,onChange:e=>u(`nameOutputField`,e.target.value),className:`fg-mono-input`})]})]})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Original filename field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedFileName`,value:i.uploadedFileNameField??``,onChange:e=>u(`uploadedFileNameField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Unique name field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uniqueName`,value:i.uniqueNameField??``,onChange:e=>u(`uniqueNameField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-at field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedAt`,value:i.uploadedAtField??``,onChange:e=>u(`uploadedAtField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-by field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedBy`,value:i.uploadedByField??``,onChange:e=>u(`uploadedByField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Static fields (literal value written alongside the upload)`}),(0,c.jsx)(CC,{rows:i.staticFieldRows??[],onChange:e=>u(`staticFieldRows`,e),keyPlaceholder:`resume.source`,valuePlaceholder:`candidate`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Append a snapshot to (history array field)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resumeHistory`,value:i.historyField??``,onChange:e=>u(`historyField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...under snapshot key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume`,value:i.historySnapshotKey??``,onChange:e=>u(`historySnapshotKey`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...with reason`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Initial resume upload`,value:i.historyReason??``,onChange:e=>u(`historyReason`,e.target.value),className:`fg-mono-input`})]})]})]})]})})}function MC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({name:``,seedField:``,direction:`up`,stopRole:0,includeSeed:!0,...t??{}})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:620,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ApartmentOutlined,{}),` `,t?`Edit Hierarchy Expansion`:`New Hierarchy Expansion`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.name?.trim())return o.message.error(`Name is required — this is how RelatedUpdates/Notify reference the result`);if(!/^[a-zA-Z0-9_]+$/.test(i.name))return o.message.error(`Name: letters, numbers, underscores only`);r(i)},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Name`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`chain`,value:i.name??``,onChange:e=>u(`name`,e.target.value),className:`fg-mono-input`}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:11},children:[`Referenced as `,(0,c.jsx)(`code`,{children:`{{hierarchy.`+(i.name||`name`)+`}}`})]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Seed field (blank = the caller)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruitersData`,value:i.seedField??``,onChange:e=>u(`seedField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Direction`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:i.direction||`up`,onChange:e=>u(`direction`,e),options:[{value:`up`,label:`Up — toward admin (reporting chain)`},{value:`down`,label:`Down — toward subordinates (team)`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Stop at role id (up only, 0 = walk to the top)`}),(0,c.jsx)(o.InputNumber,{size:`small`,style:{width:`100%`},min:0,value:i.stopRole??0,onChange:e=>u(`stopRole`,e??0),disabled:i.direction!==`up`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:i.includeSeed!==!1,onChange:e=>u(`includeSeed`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Include the seed user(s) themselves in the result`})]})]})})}function NC({open:e,rule:t,hierarchyNames:n,onClose:r,onSave:i}){let[l,u]=(0,a.useState)(()=>({collectionName:``,targetModule:``,matchField:``,scopeTenant:!1,forEach:``,insertMode:!!(t?.insertIfMissing&&Object.keys(t.insertIfMissing).length),...t??{},extraFilterRows:DC(t?.extraFilter),pullRows:DC(t?.pull),pushRows:DC(t?.push),setRows:DC(t?.set),setIfNonBlankRows:DC(t?.setIfNonBlank),insertIfMissingRows:DC(t?.insertIfMissing)})),d=(e,t)=>u(n=>({...n,[e]:t})),f=()=>{if(!l.collectionName?.trim()&&!l.targetModule?.trim())return o.message.error(`Set either a collection name or a target module`);let{extraFilterRows:e,pullRows:t,pushRows:n,setRows:r,setIfNonBlankRows:a,insertIfMissingRows:s,insertMode:c,...u}=l;i({...u,extraFilter:OC(e),pull:c?{}:OC(t),push:c?{}:OC(n),set:c?{}:OC(r),setIfNonBlank:c?{}:OC(a),insertIfMissing:c?OC(s):{}})},p=(n??[]).map(e=>({value:`hierarchy.${e}`,label:`{{hierarchy.${e}}}`}));return(0,c.jsx)(o.Modal,{open:e,onCancel:r,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ThunderboltOutlined,{}),` `,t?`Edit Related Update`:`New Related Update`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:f,children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Target`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Collection name (used verbatim)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`hiringProgress`,value:l.collectionName??``,onChange:e=>d(`collectionName`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`— or — target module`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`job`,value:l.targetModule??``,onChange:e=>d(`targetModule`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Match field (this payload's field holding the target _id)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`jobId (blank for a tenant-scoped board)`,value:l.matchField??``,onChange:e=>d(`matchField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Repeat once per element of (ForEach)`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},allowClear:!0,showSearch:!0,placeholder:`e.g. {{hierarchy.chain}}`,value:l.forEach||void 0,onChange:e=>d(`forEach`,e??``),options:p})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!l.scopeTenant,onChange:e=>d(`scopeTenant`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Scope filter to the caller's tenant/business/businessUnit`})]}),(0,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Extra filter (merged into the match filter)`}),(0,c.jsx)(wC,{rows:l.extraFilterRows??[],onChange:e=>d(`extraFilterRows`,e),keyPlaceholder:`recruiterId`,valuePlaceholder:`{"$in":"{{hierarchy.chain}}"}`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:18},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!l.insertMode,onChange:e=>d(`insertMode`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Insert-only-if-missing (seed a new document instead of updating an existing one)`})]}),l.insertMode?(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Document to insert when the filter matches nothing`}),(0,c.jsx)(wC,{rows:l.insertIfMissingRows??[],onChange:e=>d(`insertIfMissingRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})]}):(0,c.jsx)(o.Tabs,{size:`small`,style:{marginTop:10},items:[{key:`pull`,label:`Pull`,children:(0,c.jsx)(wC,{rows:l.pullRows??[],onChange:e=>d(`pullRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"candidateId":"{{applicantId}}"}`})},{key:`push`,label:`Push`,children:(0,c.jsx)(wC,{rows:l.pushRows??[],onChange:e=>d(`pushRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"status":"{{submissionStatus}}"}`})},{key:`set`,label:`Set`,children:(0,c.jsx)(wC,{rows:l.setRows??[],onChange:e=>d(`setRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})},{key:`setIfNonBlank`,label:`Set if non-blank`,children:(0,c.jsx)(wC,{rows:l.setIfNonBlankRows??[],onChange:e=>d(`setIfNonBlankRows`,e),keyPlaceholder:`resume.location`,valuePlaceholder:`{{resume.location}}`})}]})]})})}function PC({icon:e,title:t,description:n,rules:r,columns:i,onAdd:a,onEdit:l,onDelete:u}){return(0,c.jsxs)(Z,{title:(0,c.jsxs)(`span`,{children:[e,` `,t]}),extra:(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:a,children:`Add`}),styles:{body:{paddingTop:8}},children:[n&&(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:n}),(0,c.jsx)(o.Table,{rowKey:(e,t)=>t,dataSource:r,columns:[...i,{title:``,key:`actions`,width:80,align:`right`,render:(e,t,n)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>l(n,t)})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>u(n)})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`Not configured`})}})]})}var FC={sequence:null,duplicateCheck:null,fileVersioning:null,denormalizations:[],arrayEnrichments:[],fileFieldMaps:[],sanitizeFields:[],defaults:{},hierarchyExpands:[],relatedUpdates:[],notify:null,cacheInvalidate:[]};function IC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)({storage:`mongo`}),[p,m]=(0,a.useState)(`mongo`),[h,g]=(0,a.useState)(FC),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)(null),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(null),[j,M]=(0,a.useState)(null);(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t),t.length&&u(t[0].key)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{if(!l)return;let t=!1;return(async()=>{v(!0),S(``);try{let n=await e.jr(l);if(t)return;let r=n.gateway??{storage:`mongo`};f(r),m(r.storage||`mongo`),g({...FC,...n.strategies??{}})}catch(e){t||S(e?.message||`Failed to load automations`)}finally{t||v(!1)}})(),()=>{t=!0}},[l]);let N=(0,a.useMemo)(()=>(h.hierarchyExpands??[]).map(e=>e.name).filter(Boolean),[h.hierarchyExpands]);function P(e,t){g(n=>({...n,[e]:t}))}function F(e,t){g(n=>{let r=n.duplicateCheck??{},i=[...r.stages??[]];return i[e]=t,{...n,duplicateCheck:{...r,stages:i}}})}function I(){b(!0),e.Zr(l,{gateway:d,strategies:{...h,denormalizations:h.denormalizations?.length?h.denormalizations:void 0,arrayEnrichments:h.arrayEnrichments?.length?h.arrayEnrichments:void 0,fileFieldMaps:h.fileFieldMaps?.length?h.fileFieldMaps:void 0,sanitizeFields:h.sanitizeFields?.length?h.sanitizeFields:void 0,hierarchyExpands:h.hierarchyExpands?.length?h.hierarchyExpands:void 0,relatedUpdates:h.relatedUpdates?.length?h.relatedUpdates:void 0,cacheInvalidate:h.cacheInvalidate?.length?h.cacheInvalidate:void 0,defaults:Object.keys(h.defaults??{}).length?h.defaults:void 0}}).then(()=>{m(d.storage||`mongo`),o.message.success(`Automations saved`)}).catch(e=>o.message.error(e?.message||`Could not save automations`)).finally(()=>b(!1))}function L(){if((d.storage||`mongo`)!==p){o.Modal.confirm({title:`Change how this module persists writes?`,content:`You're switching ${l} from "${p}" to "${d.storage}". `+(d.storage===`mongo`?`This module will stop calling its downstream service and this gateway will own the write + every Strategy below.`:`This module will stop using the Strategies below and go back to calling its downstream service.`)+` Make sure the downstream service / e2e checks are ready before confirming.`,okText:`Confirm cutover`,okButtonProps:{danger:!0},onOk:I});return}I()}let R=[{title:`Source module`,dataIndex:`sourceModule`,key:`sourceModule`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Source id field`,dataIndex:`sourceIdField`,key:`sourceIdField`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,c.jsx)(o.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})},{title:`Required`,dataIndex:`required`,key:`required`,width:90,render:e=>e?(0,c.jsx)(o.Tag,{color:`volcano`,children:`Required`}):(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`optional`})}],z=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`From collection`,key:`coll`,render:(e,t)=>t.sourceCollection||`users`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,c.jsx)(o.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})}],B=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Mode`,dataIndex:`arrayMode`,key:`arrayMode`,width:100,render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,children:`Array`}):(0,c.jsx)(o.Tag,{children:`Single`})},{title:`History`,dataIndex:`historyField`,key:`historyField`,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`—`})}],ee=[{title:`Name`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:`{{hierarchy.`+e+`}}`})},{title:`Seed field`,dataIndex:`seedField`,key:`seedField`,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`caller`})},{title:`Direction`,dataIndex:`direction`,key:`direction`,render:e=>(0,c.jsx)(o.Tag,{color:e===`down`?`blue`:`purple`,children:e===`down`?`Down — team`:`Up — chain`})},{title:`Stop role`,dataIndex:`stopRole`,key:`stopRole`,width:90,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`top`})}],V=[{title:`Target`,key:`target`,render:(e,t)=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:t.collectionName||t.targetModule})},{title:`Match`,key:`match`,render:(e,t)=>t.matchField||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`tenant-scoped`})},{title:`For each`,key:`forEach`,render:(e,t)=>t.forEach?(0,c.jsx)(o.Tag,{color:`geekblue`,children:`{{${t.forEach}}}`}):(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`once`})},{title:`Mode`,key:`mode`,render:(e,t)=>Object.keys(t.insertIfMissing??{}).length?(0,c.jsx)(o.Tag,{color:`green`,children:`Insert if missing`}):(0,c.jsx)(o.Tag,{children:`Update`})}],H=t.map(e=>({key:e.key,label:e.label}));return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`Automations`,extra:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:y,disabled:!l,onClick:L,children:`Save Automations`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)($,{type:`secondary`,style:{fontSize:13},children:`Config-driven side-effects the common CRUD gateway runs around a create — reference ids, duplicate checks, cross-module field snapshots, reporting-chain hierarchy expansion, board updates, notifications, cache invalidation. Nothing here is module-specific: the same engine serves every module.`})]}),(0,c.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,c.jsxs)(o.Spin,{spinning:r,children:[(0,c.jsx)(o.Tabs,{activeKey:l,onChange:u,items:H.map(e=>({...e,children:null})),className:`admin-module-tabs`}),x&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:x,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:_,children:[(0,c.jsxs)(Z,{title:`Gateway`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Selects how a write to this module persists. "Proxy" forwards to a downstream microservice (which owns every side-effect below itself). "Mongo" makes THIS gateway own the write and run every Strategy configured below.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Storage`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:d.storage||`mongo`,onChange:e=>f(t=>({...t,storage:e})),options:[{value:`mongo`,label:`Mongo — this gateway owns the write`},{value:`proxy`,label:`Proxy — forward to a downstream service`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`File field key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`file`,value:d.fileKey??``,onChange:e=>f(t=>({...t,fileKey:e.target.value})),className:`fg-mono-input`})]})]}),d.storage===`proxy`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL env var`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`JOBS_SERVICE_URL`,value:d.baseUrlEnv??``,onChange:e=>f(t=>({...t,baseUrlEnv:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL (fallback)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`http://...`,value:d.baseUrl??``,onChange:e=>f(t=>({...t,baseUrl:e.target.value})),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Create path`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/jobs`,value:d.createPath??``,onChange:e=>f(t=>({...t,createPath:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update path (%s = id)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/edit/%s`,value:d.updatePath??``,onChange:e=>f(t=>({...t,updatePath:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update method`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:d.updateMethod||`PUT`,onChange:e=>f(t=>({...t,updateMethod:e})),options:[`PUT`,`POST`,`PATCH`].map(e=>({value:e,label:e}))})]})]})]})]}),(0,c.jsxs)(Z,{title:`Reference ID (Sequence)`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.sequence,onChange:e=>P(`sequence`,e?{field:``,prefix:``,counterKey:``}:null)}),(0,c.jsxs)($,{style:{fontSize:13},children:[`Generate a "`,`{prefix}{n}`,`" reference id on create`]})]}),h.sequence&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Payload field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`submissionId`,value:h.sequence.field??``,onChange:e=>P(`sequence`,{...h.sequence,field:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`sub`,value:h.sequence.prefix??``,onChange:e=>P(`sequence`,{...h.sequence,prefix:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counter key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`submissions`,value:h.sequence.counterKey??``,onChange:e=>P(`sequence`,{...h.sequence,counterKey:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,c.jsxs)(Z,{title:`Check for someone already on file`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Before a new record is saved, look for one that already matches. This is what stops the same person being added twice under slightly different details.`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.duplicateCheck,onChange:e=>P(`duplicateCheck`,e?{stages:[],policy:`prompt`,displayFields:[],message:``}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Check before saving a new record`})]}),h.duplicateCheck&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:6},children:[(0,c.jsx)(`b`,{children:`Checks run in order, top first, and stop at the first match.`}),` Put your most certain check first — matching an email or a phone number is near proof; matching a name alone is only a maybe, so it belongs lower down.`]}),(h.duplicateCheck.stages??[]).map((e,t)=>(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,c.jsxs)(`div`,{style:{flex:1.6},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Check `,t+1,` — compare these`]}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`email, contactNumber`,value:e.fields??[],onChange:n=>F(t,{...e,fields:n})})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counts as a match when`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:e.match??`all`,onChange:n=>F(t,{...e,match:n}),options:[{value:`any`,label:`Any one of them matches`},{value:`all`,label:`All of them match`}]})]}),(0,c.jsxs)(`div`,{style:{flex:.8},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How sure is it?`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:e.weight??`strong`,onChange:n=>F(t,{...e,weight:n}),options:[{value:`strong`,label:`Almost certainly the same`},{value:`weak`,label:`Possibly the same`}]})]}),(0,c.jsxs)(`div`,{style:{flex:2},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`What to tell the user`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`A candidate with this email already exists — {name}, last updated {age}.`,value:e.message??``,onChange:n=>F(t,{...e,message:n.target.value})})]}),(0,c.jsx)(o.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:(h.duplicateCheck.stages??[]).filter((e,n)=>n!==t)}),children:`Remove`})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,style:{marginBottom:12},onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:[...h.duplicateCheck.stages??[],{fields:[],match:`any`,weight:`strong`}]}),children:`Add another check`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`When a match is found`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:h.duplicateCheck.policy??`prompt`,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,policy:e}),options:[{value:`prompt`,label:`Ask, and offer to update the existing one`},{value:`block`,label:`Refuse to save, and name the existing one`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1.2},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which details identify the record`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.duplicateCheck.displayFields??[],onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,displayFields:e})})]})]}),(0,c.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:10},children:(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where to open the existing record`}),(0,c.jsx)(o.Input,{size:`small`,className:`fg-mono-input`,placeholder:`/candidate/edit/:id`,value:h.duplicateCheck.editRoute??``,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,editRoute:e.target.value})})]})}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[`The page that opens when someone chooses to update the record you already have. Use `,(0,c.jsx)(`b`,{children:`:id`}),` where the record's id goes. This has to be filled in — it cannot be worked out, because addresses follow no single pattern (this app uses `,(0,c.jsx)(`code`,{children:`/candidate/edit/:id`}),` but `,(0,c.jsx)(`code`,{children:`/clients/edit/:id`}),`). Left blank, the dialog still appears and simply does not navigate, rather than sending anyone to a page that does not exist.`]}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:8},children:[`In any message you can use `,(0,c.jsx)(`b`,{children:`{name}`}),` for the matched record and`,(0,c.jsxs)(`b`,{children:[` `,`{age}`]}),` for how long ago it was last touched ("about 2 months ago"). `,(0,c.jsx)(`b`,{children:`{updatedOn}`}),` gives the date instead. Only the details listed above are shown — nothing else about the record is revealed.`]})]})]}),(0,c.jsxs)(Z,{title:`Keep previous versions of an uploaded file`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Normally a new upload replaces the old one and it is gone. Turn this on and the last few are kept instead — useful when someone sends an updated CV and you may want to look back at the earlier one. Everywhere in the app still shows the newest; the older ones sit behind it.`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.fileVersioning,onChange:e=>P(`fileVersioning`,e?{fields:[],keep:2,historyKey:``,s3Prefix:``,deleteEvicted:!1}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Keep previous uploads`})]}),h.fileVersioning&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginBottom:10},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`},children:`Where the older versions are kept`}),(0,c.jsxs)(o.Radio.Group,{size:`small`,value:h.fileVersioning.store===`documents`?`documents`:`record`,onChange:e=>{let t=e.target.value,n={...h.fileVersioning,store:t===`documents`?`documents`:``};t===`documents`&&(n.linkField=n.linkField||`documentIds`,n.clearRecordKeys=n.clearRecordKeys?.length?n.clearRecordKeys:(n.fields??[]).flatMap(e=>[`${e}History`,`${e}Versions`])),P(`fileVersioning`,n)},children:[(0,c.jsx)(o.Radio,{value:`documents`,children:`In Documents (recommended)`}),(0,c.jsx)(o.Radio,{value:`record`,children:`On the record itself`})]}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[(0,c.jsx)(`b`,{children:`In Documents`}),` keeps the file and all its earlier versions in one place, the same place every other document lives. The record just points at it — so when a candidate is submitted for a job, the submission shows the very same file, and replacing it updates both at once. `,(0,c.jsx)(`b`,{children:`On the record itself`}),` is the older way: each record keeps its own copy of the history, which is why the same résumé could end up recorded several times over and the copies could disagree.`]})]}),h.fileVersioning.store===`documents`&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:10},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`List of attached documents is kept in`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documentIds`,value:h.fileVersioning.linkField??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,linkField:e.target.value})})]}),(0,c.jsxs)(`div`,{style:{flex:1.6},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Old history fields to clear off the record`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resumeHistory`,value:h.fileVersioning.clearRecordKeys??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,clearRecordKeys:e})})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which uploads`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resume`,value:h.fileVersioning.fields??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,fields:e})})]}),(0,c.jsxs)(`div`,{style:{flex:.7},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How many to keep`}),(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,value:h.fileVersioning.keep??2,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,keep:Number(e.target.value)||1})})]}),(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where the files are grouped`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`candidates/{recordId}/resume`,value:h.fileVersioning.s3Prefix??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,s3Prefix:e.target.value})})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.fileVersioning.deleteEvicted,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,deleteEvicted:e})}),(0,c.jsx)($,{style:{fontSize:13},children:`Also delete the file once it drops off the end`})]}),(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:`Leave that switch OFF unless you are sure. With it off, an older file simply stops being shown and can still be recovered. With it on, it is deleted from storage permanently and cannot be brought back. Keeping 2 means a third upload pushes the first one off the end.`})]})]}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`Denormalizations`,description:`Copy fields from ANOTHER module's record onto this payload before insert (e.g. a submission snapshotting job title/client).`,rules:h.denormalizations??[],columns:R,onAdd:()=>w({index:null,rule:null}),onEdit:(e,t)=>w({index:e,rule:t}),onDelete:e=>P(`denormalizations`,(h.denormalizations??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ApartmentOutlined,{}),title:`Array Enrichments`,description:`Enrich a payload array of ids (e.g. recruitersData) into objects carrying looked-up fields (name, email) before insert.`,rules:h.arrayEnrichments??[],columns:z,onAdd:()=>E({index:null,rule:null}),onEdit:(e,t)=>E({index:e,rule:t}),onDelete:e=>P(`arrayEnrichments`,(h.arrayEnrichments??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`File Field Maps`,description:`Turn an uploaded file field into a nested object (location + filename + who/when) or an array of such objects, instead of a flat S3 path string — needed for schemas like resume/passport/visa.`,rules:h.fileFieldMaps??[],columns:B,onAdd:()=>O({index:null,rule:null}),onEdit:(e,t)=>O({index:e,rule:t}),onDelete:e=>P(`fileFieldMaps`,(h.fileFieldMaps??[]).filter((t,n)=>n!==e))}),(0,c.jsxs)(Z,{title:`Sanitize Fields`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Trim and HTML-escape these payload fields before anything else runs — basic XSS-safety for free-text fields (e.g. firstName/lastName) that might later be embedded in an HTML activity comment or email.`}),(0,c.jsx)(o.Select,{mode:`tags`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.sanitizeFields??[],onChange:e=>P(`sanitizeFields`,e)})]}),(0,c.jsxs)(Z,{title:`Defaults`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Set a field only when the payload doesn't already carry a non-blank value — status defaults, empty arrays.`}),(0,c.jsx)(wC,{rows:DC(h.defaults),onChange:e=>P(`defaults`,OC(e)),keyPlaceholder:`internalSubmissionStatus.internalSubmissionStatusText`,valuePlaceholder:`"Under Evaluation"`})]}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ApartmentOutlined,{}),title:`Hierarchy Expansions`,description:`Walk the reporting chain up (toward admin) or down (toward a team) from a seed user, publishing the result as {{hierarchy.<name>}} for Related Updates / Notify to use.`,rules:h.hierarchyExpands??[],columns:ee,onAdd:()=>A({index:null,rule:null}),onEdit:(e,t)=>A({index:e,rule:t}),onDelete:e=>P(`hierarchyExpands`,(h.hierarchyExpands??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`Related Updates`,description:`Best-effort side-effect writes to other collections after a successful insert — board state, activity logs. Combine with ForEach + a Hierarchy Expansion to seed one document per user in a chain.`,rules:h.relatedUpdates??[],columns:V,onAdd:()=>M({index:null,rule:null}),onEdit:(e,t)=>M({index:e,rule:t}),onDelete:e=>P(`relatedUpdates`,(h.relatedUpdates??[]).filter((t,n)=>n!==e))}),(0,c.jsxs)(Z,{title:`Notify`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.notify,onChange:e=>P(`notify`,e?{action:``,subjectDefault:``,bodyDefault:``,toReportingManager:!1,toHierarchy:``}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Send a best-effort email after a successful insert`})]}),h.notify&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Action (matched against an EmailTemplates doc)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`internalSubmit`,value:h.notify.action??``,onChange:e=>P(`notify`,{...h.notify,action:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Notify entire hierarchy chain`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},allowClear:!0,placeholder:`pick a Hierarchy Expansion`,value:h.notify.toHierarchy||void 0,onChange:e=>P(`notify`,{...h.notify,toHierarchy:e??``}),options:N.map(e=>({value:e,label:e}))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.notify.toReportingManager,onChange:e=>P(`notify`,{...h.notify,toReportingManager:e})}),(0,c.jsx)($,{style:{fontSize:13},children:`Also notify the caller's direct reporting manager`})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default subject`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`New submission`,value:h.notify.subjectDefault??``,onChange:e=>P(`notify`,{...h.notify,subjectDefault:e.target.value})})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default body (used when no EmailTemplates doc matches)`}),(0,c.jsx)(o.Input.TextArea,{rows:4,value:h.notify.bodyDefault??``,onChange:e=>P(`notify`,{...h.notify,bodyDefault:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,c.jsxs)(Z,{title:`Cache Invalidate`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:[`Redis key patterns (with `,`{{field}}`,` tokens) to SCAN+DEL after a successful insert.`]}),(0,c.jsx)(o.Select,{mode:`tags`,style:{width:`100%`},placeholder:`jobs:{{tenantId}}:{{businessId}}:{{businessUnitId}}:*`,value:h.cacheInvalidate??[],onChange:e=>P(`cacheInvalidate`,e)})]})]})]})}),(0,c.jsx)(kC,{open:!!C,rule:C?.rule,onClose:()=>w(null),onSave:e=>{P(`denormalizations`,C.index===null?[...h.denormalizations??[],e]:(h.denormalizations??[]).map((t,n)=>n===C.index?e:t)),w(null)}},C?`denorm-${C.index??`new`}`:`denorm-closed`),(0,c.jsx)(AC,{open:!!T,rule:T?.rule,onClose:()=>E(null),onSave:e=>{P(`arrayEnrichments`,T.index===null?[...h.arrayEnrichments??[],e]:(h.arrayEnrichments??[]).map((t,n)=>n===T.index?e:t)),E(null)}},T?`enrich-${T.index??`new`}`:`enrich-closed`),(0,c.jsx)(jC,{open:!!D,rule:D?.rule,onClose:()=>O(null),onSave:e=>{P(`fileFieldMaps`,D.index===null?[...h.fileFieldMaps??[],e]:(h.fileFieldMaps??[]).map((t,n)=>n===D.index?e:t)),O(null)}},D?`filemap-${D.index??`new`}`:`filemap-closed`),(0,c.jsx)(MC,{open:!!k,rule:k?.rule,onClose:()=>A(null),onSave:e=>{P(`hierarchyExpands`,k.index===null?[...h.hierarchyExpands??[],e]:(h.hierarchyExpands??[]).map((t,n)=>n===k.index?e:t)),A(null)}},k?`hier-${k.index??`new`}`:`hier-closed`),(0,c.jsx)(NC,{open:!!j,rule:j?.rule,hierarchyNames:N,onClose:()=>M(null),onSave:e=>{P(`relatedUpdates`,j.index===null?[...h.relatedUpdates??[],e]:(h.relatedUpdates??[]).map((t,n)=>n===j.index?e:t)),M(null)}},j?`ru-${j.index??`new`}`:`ru-closed`)]})}var{Text:LC}=o.Typography,RC=[`beforeCreate`,`afterCreate`,`beforeUpdate`,`afterUpdate`,`beforeDelete`,`afterDelete`],zC=[`sanitizeFields`,`generateSequence`,`duplicateCheck`,`copyFields`,`arrayEnrich`,`setDefaults`,`resolve`,`updateRelated`,`notify`,`invalidateCache`,`webhook`,`linkDocuments`,`captureFileUrls`],BC={linkDocuments:{text:`Share one record’s uploaded files with another, without making a second copy. Used so a submission shows the candidate’s résumé and paperwork, and anything uploaded during the submission appears on the candidate too. Both records get the list of document ids written onto them.`,sample:{sourceModule:`candidates`,sourceIdField:`applicantId`,targetModule:`submissions`,linkField:`documentIds`,fieldNames:[],backLink:!0}},captureFileUrls:{text:`File a document that was generated elsewhere and handed to us as a link — a formatted résumé or an attestation PDF — so it sits with every other attachment instead of being a loose field on the record.`,sample:{linkField:`documentIds`,files:[{urlField:`resumeUrl`,nameField:`resumeFileName`,fieldName:`formattedResume`,defaultName:`Formatted Resume.pdf`},{urlField:`attestationUrl`,nameField:`attestationFileName`,fieldName:`attestation`,defaultName:`Attestation.pdf`}]}}};function VC(e){return JSON.stringify(e??{},null,2)}function HC({action:e,onChange:t,onRemove:n}){let[r,i]=(0,a.useState)(()=>VC(e.config)),[l,u]=(0,a.useState)(!1);return(0,c.jsxs)(`div`,{style:{border:`1px solid #e2e8f0`,borderRadius:8,padding:10,marginTop:8},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:[(0,c.jsx)(o.Select,{size:`small`,style:{width:200},showSearch:!0,value:e.type||void 0,placeholder:`action type`,options:zC.map(e=>({value:e})),onChange:n=>{let r=e.config&&Object.keys(e.config).length>0,i=BC[n]?.sample;t(r||!i?{...e,type:n}:{...e,type:n,config:i})}}),l&&(0,c.jsx)(o.Tag,{color:`red`,children:`invalid JSON`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),style:{marginLeft:`auto`},onClick:n})]}),BC[e.type]&&(0,c.jsx)(`p`,{style:{margin:`8px 0 0`,fontSize:12,color:`#64748b`,lineHeight:1.5},children:BC[e.type].text}),(0,c.jsx)(o.Input.TextArea,{rows:Math.min(14,Math.max(3,r.split(`
|
|
6
|
+
Upload the résumé first — we can read the details straight from it`})}),(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Checks against other records and other rows`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On blur`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Enforced`,unCheckedChildren:`Off`})})]}),(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`showIf`,`field`]),n=e([...x,`showIf`,`operator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Show Condition`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`field`],label:`Show only when field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`field key — blank = always show`,style:{width:210},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. yes`,style:{width:100},className:`fg-mono-input`})})]})]}),t&&(0,c.jsx)(o.Form.List,{name:[r,`showIf`,`conditions`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{style:{marginTop:8},children:[e.length>0&&(0,c.jsx)(o.Form.Item,{name:[r,`showIf`,`logic`],label:`Combine when`,style:{marginBottom:6},initialValue:`and`,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:t})=>{let r=t([...x,`showIf`,`conditions`,e.name,`operator`])??`eq`,i=cx.includes(r);return(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`},children:[(0,c.jsx)(o.Form.Item,{name:[e.name,`field`],label:`And field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`field key`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[e.name,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[e.name,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma for list`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,onClick:()=>n(e.name),children:`Remove`})]})}},e.key)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,style:{marginTop:4},onClick:()=>t({field:``,operator:`eq`,value:``}),children:`+ Add condition`})]})}),t&&(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`labelWhen`,`field`]),n=e([...x,`labelWhen`,`operator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Label`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`field`],label:`Watch field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = use normal label`,style:{width:190},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`operator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`value`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`labelWhen`,`label`],label:`Alternate label`,style:{marginBottom:0},rules:[{required:!0,message:`Enter alternate label`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. Employer Rate`,style:{width:170}})})]})]}),t&&(0,c.jsx)(`p`,{className:`fg-source-hint`,style:{marginTop:4},children:`Only the displayed label changes. The field key and submitted payload stay unchanged.`})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`colWhenField`]),n=e([...x,`colWhenOperator`])??`eq`,i=cx.includes(n);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Conditional Width`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`colWhenField`],label:`Watch field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = always use Width`,style:{width:190},className:`fg-mono-input`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`colWhenOperator`],label:`Operator`,style:{marginBottom:0},initialValue:`eq`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:sx,getPopupContainer:()=>document.body})}),i&&(0,c.jsx)(o.Form.Item,{name:[r,`colWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`comma-separated for one-of`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`colWhenCol`],label:`Width when matched`,style:{marginBottom:0},rules:[{required:!0,message:`Enter a width (1-24)`}],children:(0,c.jsx)(o.InputNumber,{size:`small`,min:1,max:24,style:{width:150},placeholder:`e.g. 6`})})]})]}),t&&(0,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>{let t=e([...x,`verifyAction`]);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Field Verification`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`verifyAction`],label:`Action`,style:{marginBottom:0},children:(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`None`,style:{width:130},options:[{label:`Email`,value:`email`}]})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:[r,`verifyResultField`],label:`Result field`,style:{marginBottom:0},rules:[{required:!0,message:`Result field is required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyTimestampField`],label:`Timestamp field`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. validatedAt`,style:{width:150},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyIdleLabel`],label:`Initial text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Verify Email`,style:{width:130}})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyRetryLabel`],label:`Retry text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Re Verify`,style:{width:120}})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifySuccessLabel`],label:`Success text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Valid`,style:{width:110}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. isAccountCreate`,style:{width:190},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`verifyLockedLabel`],label:`Locked text`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Verified`,style:{width:110}})})]})]}),t&&(0,c.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,c.jsx)(o.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),l=[`label`,`object`,`custom`].includes(i);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Payload Mapping`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`payloadKey`],label:`Payload Key`,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`defaults to field key`,style:{width:180},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`source key (cross-module prefill)`,style:{width:200},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:260},placeholder:`Last recorded: {value}`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. job`,style:{width:160},className:`fg-mono-input`})}),(0,c.jsx)(o.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`]),l=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,c.jsxs)(`div`,{style:{width:`100%`,margin:`4px 0 8px`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,c.jsx)(Xb,{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,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],[...n,{field:``,value:``,setValue:``}]),children:`Add`})]}),n.length>0&&(0,c.jsx)(o.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,c.jsx)(o.Checkbox,{children:`Reset this field when the condition no longer matches`})}),n.length>0&&(0,c.jsx)(o.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,c.jsx)(o.Checkbox,{children:`Offer the chosen record ONLY while its condition matches (hide it otherwise)`})}),n.map((e,d)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,alignItems:`center`,marginTop:6},children:[(0,c.jsx)(o.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,c.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`=`}),(0,c.jsx)(o.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,c.jsx)(`span`,{style:{color:`#94a3b8`,fontSize:12},children:`→`}),e.clearValue?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12,width:220},children:`clear this field`}):(0,c.jsx)(kx,{collection:i,displayField:a,valueField:l,value:e.setValue,labelValue:e.setValueLabel,onChange:(e,t)=>u(d,{setValue:e,setValueLabel:t})}),(0,c.jsx)(o.Checkbox,{checked:!!e.clearValue,onChange:e=>u(d,{clearValue:e.target.checked}),children:(0,c.jsx)(`span`,{style:{fontSize:12},children:`Clear`})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>t([`fields`,r,`prefillWhen`],n.filter((e,t)=>t!==d))})]},d))]})}}),(0,c.jsx)(o.Form.Item,{name:[r,`dataType`],label:`Data Type`,style:{marginBottom:8},initialValue:`auto`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:170},options:lx,getPopupContainer:()=>document.body})}),n===`array`&&(0,c.jsx)(o.Form.Item,{name:[r,`elementType`],label:`Array Element Type`,style:{marginBottom:8},children:(0,c.jsx)(o.Select,{size:`small`,style:{width:130},options:ux,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.Form.Item,{name:[r,`payloadMode`],label:`Payload Mode`,style:{marginBottom:8},initialValue:`auto`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:210},options:dx,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.Form.Item,{name:[r,`defaultValue`],label:`Default Value`,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`optional`,style:{width:130}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. 0, candidate`,style:{width:170}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`linkedIn, socialProfiles[type=linkedin].value`,style:{width:300},className:`fg-mono-input`})})]}),(l||a)&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsx)(o.Form.Item,{name:[r,`valueKey`],label:`Value Key (id)`,style:{marginBottom:8,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. id`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[r,`displayKey`],label:`Display Key (label)`,style:{marginBottom:8,flex:1},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. name`,className:`fg-mono-input`})}),a&&(0,c.jsx)(o.Form.Item,{name:[r,`richValue`],label:`Keep label`,valuePropName:`checked`,style:{marginBottom:8},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})})]}),i===`custom`&&(0,c.jsxs)(`div`,{style:{marginBottom:8},children:[(0,c.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Payload Template (JSON) — tokens: `,`{{value}} {{label}} {{raw.field}}`]}),(0,c.jsx)(o.Form.Item,{name:[r,`payloadTemplate`],style:{marginBottom:0},children:(0,c.jsx)(o.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "countryId": "{{value}}", "countryName": "{{label}}" }`})})]}),(0,c.jsxs)(`details`,{style:{marginTop:4},children:[(0,c.jsx)(`summary`,{className:`fg-source-hint`,style:{cursor:`pointer`},children:`Advanced: transform rule / omit empty`}),(0,c.jsxs)(`div`,{style:{marginTop:6},children:[(0,c.jsxs)(`span`,{className:`fg-static-options-hint`,children:[`Transform Rule (JSON) — e.g. `,`{ "map": { "true": "high", "false": "medium" } }`]}),(0,c.jsx)(o.Form.Item,{name:[r,`transformRule`],style:{marginBottom:6},children:(0,c.jsx)(o.Input.TextArea,{rows:2,className:`fg-mono-input`,placeholder:`{ "map": { "true": "high" }, "default": "medium" }`})}),(0,c.jsx)(o.Form.Item,{name:[r,`omitEmpty`],label:`Omit when empty`,valuePropName:`checked`,style:{marginBottom:0},initialValue:!1,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Omit`,unCheckedChildren:`Send`})})]})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:t})=>{let n=t([...x,`type`]);if([`select`,`radio`,`checkbox`,`date`,`time`,`file`,`location`].includes(n))return null;let i=t([...x,`validator`,`type`]),a=i&&![`email`,`websiteUrl`,`jobDescription`].includes(i),s=i===`jobDescription`;return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Input Validator`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`type`],label:`Type`,style:{marginBottom:0},children:(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,placeholder:`None — no char restriction`,style:{width:260},options:e.yt})}),a&&(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`maxLength`],label:`Max Length`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,placeholder:`e.g. 55`,style:{width:90}})}),s&&(0,c.jsx)(o.Form.Item,{name:[r,`validator`,`maxChars`],label:`Max Chars`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,placeholder:`1500`,style:{width:90}})}),i&&(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:t([...x,`label`])||`Field`,style:{width:180}})})]})]})}}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Grey this out when a tick-box is ticked`}),(0,c.jsx)(o.Form.Item,{name:[r,`disabledByField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key (e.g. currentlyPursuing)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsx)(`span`,{className:`fg-options-label`,children:`Require this once a sibling field has a value`}),(0,c.jsx)(o.Form.Item,{name:[r,`requiredIfField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key (e.g. empSigninAuthAlternatePhone)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Put the country code in its own box`}),(0,c.jsx)(o.Form.Item,{name:[r,`splitDialCodeInto`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. contactCountryCode`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Empty another box when this is ticked`}),(0,c.jsx)(o.Form.Item,{name:[r,`linkedClearField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`sibling field key to clear (e.g. endDate)`,className:`fg-mono-input`,style:{width:260}})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(o.Form.Item,{name:[r,`exclusiveInGroup`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`One row only`,unCheckedChildren:`Any row`})}),(0,c.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,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`When this changes, clear the rest of the group`}),(0,c.jsx)(o.Form.Item,{name:[r,`clearGroupOnChange`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Clear`,unCheckedChildren:`Keep`})}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Autofill Fields (JSON)`}),(0,c.jsx)(o.Form.Item,{name:[r,`autofillFrom`],style:{marginBottom:0},children:(0,c.jsx)(o.Input.TextArea,{rows:3,className:`fg-mono-input`,placeholder:`[{"optionKey":"vendorContact.email","targetField":"vendorEmail"}]`})}),(0,c.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,c.jsx)(`b`,{children:` optionKey`}),` is where the value sits on the picked record, and`,(0,c.jsx)(`b`,{children:` targetField`}),` is the box to put it in.`]})]})]}):null}}),(0,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`Validations`})]}),(0,c.jsx)(o.Form.List,{name:[r,`validations`],children:(e,{add:n,remove:i})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:n})=>(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:6},children:({getFieldValue:e})=>{let a=e([...y,r,`validations`,n,`type`]),l=px(a),u=e([...y,r,`type`]),d=a===`dateAfterField`||a===`dateBeforeField`,f=(e(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=(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})`})),m=ox.filter(e=>u===`date`?e.dateOnly||e.value===`required`||e.value===`unique`:!e.dateOnly).map(e=>({label:e.label,value:e.value})),h=a===vb,g=e([...y,r])??{},_=kb(g),b=[...y,r,`validations`,n,`value`],x=h?Fb(e(b),g):null,S=h?Wb({primaryModule:v.primaryModule,groupTargetModule:v.getTargetModule(),field:g,config:x,collectionForModule:v.collectionForModule}):null,C=(e(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,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,placeholder:u===`date`?`Date condition`:`Type`,style:{width:210},listHeight:400,getPopupContainer:()=>document.body,options:m,onChange:e=>{if(e===`unique`){let e=t.getFieldValue(b);t.setFieldValue(b,Fb(e,t.getFieldValue([...y,r])??{}))}else typeof t.getFieldValue(b)==`object`&&t.setFieldValue(b,``)}})}),l.hasValue&&!h&&(0,c.jsx)(o.Form.Item,{name:[n,`value`],style:{marginBottom:0},children:d?(0,c.jsx)(o.Select,{size:`small`,showSearch:!0,allowClear:!0,placeholder:`Related date field`,style:{width:210},options:f,optionFilterProp:`label`,getPopupContainer:()=>document.body}):(0,c.jsx)(o.Input,{size:`small`,type:l.valueType===`number`?`number`:`text`,placeholder:l.placeholder,style:{width:90}})}),l.needsField&&(0,c.jsx)(o.Form.Item,{name:[n,`field`],style:{marginBottom:0},rules:[{required:!0,message:`Pick the capping field`}],children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{name:[n,`message`],style:{marginBottom:0,flex:1},rules:l.messageOptional?[]:[{required:!0,whitespace:!0,message:`Message required`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:l.messageOptional?`Optional — uses default`:h?`e.g. Email already present`:`Error message shown to user`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>i(n)})]}),d&&(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Start and end date rules`}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Different days`,unCheckedChildren:`Same day OK`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,type:`number`,min:0,placeholder:`e.g. 6`,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:[n,`minGap`,`unit`],label:`Unit`,style:{marginBottom:0},initialValue:`month`,children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginTop:6},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Uniqueness settings`}),_.supported?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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=jb(t);return n?Promise.reject(Error(n)):Promise.resolve()}}],children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:210},options:yb,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:190},options:bb,getPopupContainer:()=>document.body})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Skip`,unCheckedChildren:`Check`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{size:`small`,style:{width:220},options:Cb,getPopupContainer:()=>document.body})})]}),(0,c.jsxs)(`p`,{className:`fg-source-hint`,style:{marginTop:6},children:[`Target module: `,(0,c.jsx)(`code`,{children:S?.module||`—`}),` · `,`Target collection: `,(0,c.jsx)(`code`,{children:S?.collection||`resolved on the server`}),` · `,`Form field: `,(0,c.jsx)(`code`,{children:S?.formField||`—`}),` · `,`Stored field: `,(0,c.jsx)(`code`,{children:S?.storedField||`—`})]}),S?.isCrossModule&&(0,c.jsxs)(`p`,{className:`fg-source-hint`,children:[`This group writes to `,(0,c.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,c.jsx)(o.Form.List,{name:[n,`value`,`alsoCheck`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{style:{marginTop:8},children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Also check these collections`}),e.map(({key:e,name:t,...r})=>(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`,alignItems:`flex-end`,marginTop:4},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. users`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`(optional)`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:150},className:`fg-mono-input`,placeholder:`e.g. email`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:190},className:`fg-mono-input`,placeholder:`e.g. recruiters.accountUserId`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:140},className:`fg-mono-input`,placeholder:`_id`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`(uses rule message)`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginBottom:6},onClick:()=>n(t)})]},e)),(()=>{let e=(x?.alsoCheck??[]).flatMap((e,t)=>zb(e).map(e=>`#${t+1}: ${e}`));return e.length?(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,style:{marginTop:6},message:e[0]}):null})(),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t(Ib()),children:`Add collection`}),(0,c.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,c.jsx)(o.Alert,{type:`warning`,showIcon:!0,style:{marginTop:4},message:`Uniqueness is not available for this field type`,description:_.reason})]})]})}},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>n({type:``,value:``,field:``,message:``}),className:`fg-add-val-btn`,children:`Add Validation`})]})})]}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.SafetyCertificateOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`Override checkbox`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{flexWrap:`wrap`},children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{width:280},placeholder:`e.g. Rate agreed above the job rate`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,className:`fg-mono-input`,style:{width:200},placeholder:`blank = automatic`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Saved`,unCheckedChildren:`Session`})})]})]}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-options-controls`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmTitle`],label:`Confirm title`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:300},placeholder:`blank = a sensible default`})}),(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmOkText`],label:`Confirm button`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`e.g. Yes, remove the limit`})}),(0,c.jsx)(o.Form.Item,{name:[r,`overrideConfirmCancelText`],label:`Cancel button`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,style:{width:200},placeholder:`e.g. Keep the limit`})})]}),(0,c.jsx)(o.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,c.jsx)(o.Input.TextArea,{size:`small`,rows:2,placeholder:`blank = a sensible default naming this field`})}),(0,c.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,c.jsxs)(`div`,{className:`fg-validations-section`,children:[(0,c.jsxs)(`div`,{className:`fg-validations-header`,children:[(0,c.jsx)(s.ThunderboltOutlined,{className:`fg-val-icon`}),(0,c.jsx)(`span`,{className:`fg-val-title`,children:`AI Actions`})]}),(0,c.jsx)(o.Form.List,{name:[r,`aiActions`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-ai-action-card`,children:[(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`key`],style:{marginBottom:0},rules:[{required:!0,message:`Key`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`key (e.g. generateJD)`,style:{width:150}})}),(0,c.jsx)(o.Form.Item,{name:[t,`label`],style:{marginBottom:0},rules:[{required:!0,message:`Label`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Button label`,style:{width:170}})}),(0,c.jsx)(o.Form.Item,{name:[t,`trigger`],style:{marginBottom:0},initialValue:`click`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:100},options:[{label:`Click`,value:`click`},{label:`Upload`,value:`upload`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`bodyType`],style:{marginBottom:0},initialValue:`json`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:110},options:[{label:`JSON`,value:`json`},{label:`Multipart`,value:`multipart`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`position`],style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,style:{marginTop:4},onClick:()=>n(t)})]}),(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`serviceKey`],style:{marginBottom:0},rules:[{required:!0,message:`Service key`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Service key (e.g. pyOps)`,style:{width:170}})}),(0,c.jsx)(o.Form.Item,{name:[t,`endpointPath`],style:{marginBottom:0,flex:1},rules:[{required:!0,message:`Endpoint path`}],children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/promtJD`,className:`fg-mono-input`})})]}),(0,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.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,c.jsx)(o.Form.List,{name:[t,`inputs`],children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-val-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`param`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`param`,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:[t,`sourceField`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`source field`,className:`fg-mono-input`,style:{width:150}})}),(0,c.jsx)(o.Form.Item,{name:[t,`kind`],style:{marginBottom:0},initialValue:`text`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:90},options:[{label:`Text`,value:`text`},{label:`File`,value:`file`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`transform`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`transform`,style:{width:120}})}),(0,c.jsx)(o.Form.Item,{name:[t,`group`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`group (either/or)`,style:{width:130}})}),(0,c.jsx)(o.Form.Item,{name:[t,`minWords`],style:{marginBottom:0},children:(0,c.jsx)(o.InputNumber,{size:`small`,min:0,placeholder:`min words`,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:[t,`required`],valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Checkbox,{children:`Required`})}),(0,c.jsx)(s.MinusCircleOutlined,{className:`fg-remove-icon`,onClick:()=>n(t)})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({kind:`text`}),children:`Add Input`})]})})]}),(0,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Where the details sit in the reply (optional)`}),(0,c.jsx)(o.Form.Item,{name:[t,`responseDataPath`],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. data`,className:`fg-mono-input`,style:{width:200}})}),(0,c.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,c.jsxs)(`div`,{className:`fg-ai-subsection`,children:[(0,c.jsx)(`span`,{className:`fg-options-label`,children:`Before filling in the form`}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmWhen`],style:{marginBottom:0},initialValue:`targetsFilled`,children:(0,c.jsx)(o.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,c.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e([...x,`aiActions`,t,`confirmWhen`])===`never`?null:(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`title`],label:`Question heading`,style:{marginBottom:0,flex:`1 1 220px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Fill the form from this file?`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`body`],label:`Explanation`,style:{marginBottom:0,flex:`1 1 320px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`We read details from the uploaded file. Applying them will replace what you have already entered.`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`ok`],label:`Yes button`,style:{marginBottom:0,flex:`0 1 160px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Parse & fill`})}),(0,c.jsx)(o.Form.Item,{name:[t,`confirmMessages`,`cancel`],label:`No button`,style:{marginBottom:0,flex:`0 1 180px`},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`Keep what I typed`})})]})})]})]},e)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({trigger:`click`,bodyType:`json`,inputs:[]}),className:`fg-add-val-btn`,children:`Add AI Action`})]})})]})]}),(0,c.jsx)(o.Tooltip,{title:`Remove field`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>i(r),"aria-label":`Remove field`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]})]})},n)}),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{r({type:`text`,show:!0,req:!1,edit:!0,dataSource:`static`,masterName:``,options:[]}),g?.(n.length,!0)},block:!0,className:`fg-add-field-btn`,children:`Add Field`})]})}function Ix({open:t,editingGroup:n,defaultModule:r,moduleOptions:i,allGroupsByModule:l,onClose:u,onSaved:d,onSaveGroup:f}){let[p]=o.Form.useForm(),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(r),[v,y]=(0,a.useState)({}),[b,x]=(0,a.useState)(!1),[S,C]=(0,a.useState)(()=>new Set),[w,T]=(0,a.useState)(null),[E,D]=(0,a.useState)(()=>new Set),[O,k]=(0,a.useState)(`settings`),[A,j]=(0,a.useState)(!1),M=(0,a.useRef)({}),N=(0,a.useRef)(null),P=Px();(0,a.useEffect)(()=>{if(!t||!g)return;let n=!1;return e.Nr(g).then(e=>{n||C(new Set(Array.isArray(e)?e:[]))}).catch(()=>{n||C(new Set)}),()=>{n=!0}},[t,g]);async function F(t){if(!(!t||M.current[t])){M.current[t]=`loading`,x(!0);try{let n=await e.Fr(t);y(e=>({...e,[t]:n})),M.current[t]=`loaded`}catch{delete M.current[t]}finally{x(!1)}}}(0,a.useEffect)(()=>{if(!t)return;let e=n?.module??r;_(e),n?p.setFieldsValue({module:n.module,name:n.name,label:n.label,addRow:n.addRow??!1,hideGroup:n.hideGroup??!1,hideGroupInForm:n.hideGroupInForm??!1,moduleName:n.moduleName??``,linkMode:n.parentRefField?`forward`:`reverse`,linkField:n.linkField??``,linkTypeField:n.linkTypeField??``,parentRefField:n.parentRefField??``,writeRefs:n.writeRefs??[],dependsOn:n.dependsOn??[],optionalWrite:n.optionalWrite??!1,hierarchyLevel:n.hierarchyLevel??void 0,hierarchyParent:n.hierarchyParent??void 0,hierarchyLinkField:n.hierarchyLinkField??``,allowCollapse:n.allowCollapse??!1,defaultCollapsed:n.defaultCollapsed??!1,appendHistory:n.appendHistory??!1,historyField:[n.historyField,...n.historyFields??[]].filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t).join(`, `),historyTimestampField:n.historyTimestampField??``,historyLabels:Object.entries(n.historyLabels??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyLabelFrom:Object.entries(n.historyLabelFrom??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyAfterGroup:n.historyAfterGroup??``,historyAmountFields:Object.entries(n.historyAmountFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyCurrencyFields:Object.entries(n.historyCurrencyFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),historyUnitFields:Object.entries(n.historyUnitFields??{}).map(([e,t])=>`${e}=${t}`).join(`, `),minRows:n.minRows??``,maxRows:n.maxRows??``,initialRows:n.initialRows??``,requireOne:n.requireOne??!1,allowInProgress:n.allowInProgress!==!1,inProgressMessage:n.inProgressMessage??``,orderByEnabled:!!n.orderBy,levelRuleEnabled:!!n.levelRule,orderBy:n.orderBy??null,levelRule:n.levelRule??null,regionRules:n.regionRules??null,requireValidatedField:n.requireValidatedField??``,linkGroup:n.linkGroup??``,mergeInto:n.mergeInto??``,mergePosition:n.mergePosition??`bottom`,showIfField:n.showIf?.field??``,showIfOperator:n.showIf?.operator??`notEmpty`,showIfValue:n.showIf?.value??``,disabledIfField:n.disabledIf?.field??``,disabledIfOperator:n.disabledIf?.operator??`notEmpty`,disabledIfValue:n.disabledIf?.value??``,submitDisabledMessage:n.submitDisabledMessage??``,infoEnabled:n.infoEnabled??!1,infoText:n.infoText??``,toggleEnabled:n.toggleEnabled??!1,toggleLabel:n.toggleLabel??``,toggleField:n.toggleField??``,afterSubmitMode:n.afterSubmit?.mode??void 0,afterSubmitTarget:n.afterSubmit?.target??``,formActions:(n.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:n.submitMessages?.addSuccess??``,submitMsgEditSuccess:n.submitMessages?.editSuccess??``,submitMsgAddError:n.submitMessages?.addError??``,submitMsgEditError:n.submitMessages?.editError??``,submitMsgSuppress:n.submitMessages?.suppress??!1,order:n.order??0,fields:[...n.fields??[]].sort((e,t)=>Number(e.order??0)-Number(t.order??0)).map(Mx)}):(p.resetFields(),p.setFieldsValue({module:e,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(e)},[t,n,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 t=l[e]??[],r=new Set;return t.forEach(e=>{n&&e.id===n.id||(e.fields??[]).forEach(e=>{e.field&&r.add(e.field)})}),r}function ee(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 V(e){let t=B(e);return(v[e]??[]).map(e=>({value:e.value,disabled:t.has(e.value),label:(0,c.jsxs)(`span`,{style:{opacity:t.has(e.value)?.4:1},children:[e.label,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value}),t.has(e.value)&&(0,c.jsx)(`span`,{className:`fg-field-taken-hint`,children:`(in another group)`})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function H(){try{let t=await p.validateFields(),r={...p.getFieldsValue(!0),...t,fields:p.getFieldValue(`fields`)??[]},i=Cx(r.fields);if(i.length){o.message.error(`Uniqueness rule cannot be saved — ${i[0]}`);return}if(r.moduleName){let e=r.name||r.label||`this group`,t=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();if(t||i){if(r.linkMode===`forward`){o.message.error(`Group "${e}": Hierarchy cannot be combined with a forward link (parentRefField) — choose one linkage mode.`);return}if(!t||!i){o.message.error(`Group "${e}": set both "Parent collection" and "Store parent id in field" to use Hierarchy.`);return}if(t===r.moduleName){o.message.error(`Group "${e}": Hierarchy parent cannot be this group's own Target Collection.`);return}let a=(l[r.module]??[]).filter(e=>!n||e.id!==n.id),s=new Map;a.forEach(e=>{e.moduleName&&s.set(e.moduleName,e.hierarchyParent??null)}),s.set(r.moduleName,t);let c=t,u=new Set([r.moduleName]),d=!1;for(;c&&c!==r.module;){if(u.has(c)){d=!0;break}u.add(c),c=s.get(c)??null}if(d){o.message.error(`Group "${e}": this Hierarchy parent chain loops back on itself — pick a different Parent collection.`);return}}}h(!0);let a={module:r.module,name:r.name,label:r.label,addRow:r.addRow??!1,order:Number(r.order??0),fields:Ox(r.fields??[])};if(r.hideGroup&&(a.hideGroup=!0),r.hideGroupInForm&&(a.hideGroupInForm=!0),r.moduleName){if(a.moduleName=r.moduleName,r.linkMode===`forward`){let e=String(r.parentRefField??``).trim();e&&(a.parentRefField=e)}else{let e=String(r.linkField??``).trim(),t=String(r.linkTypeField??``).trim();e&&(a.linkField=e),t&&(a.linkTypeField=t)}let e=(r.writeRefs??[]).filter(e=>e?.fromModule&&e?.targetField);e.length&&(a.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&&(a.dependsOn=t),r.optionalWrite&&(a.optionalWrite=!0);let n=String(r.hierarchyParent??``).trim(),i=String(r.hierarchyLinkField??``).trim();n&&i&&(a.hierarchyParent=n,a.hierarchyLinkField=i);let o=Number(r.hierarchyLevel);Number.isFinite(o)&&o>0&&(a.hierarchyLevel=o)}let s=String(r.historyField??``).split(`,`).map(e=>e.trim()).filter(Boolean).filter((e,t,n)=>n.indexOf(e)===t);if(r.allowCollapse&&(a.allowCollapse=!0,r.defaultCollapsed&&(a.defaultCollapsed=!0)),r.appendHistory&&s.length){a.appendHistory=!0,a.historyField=s[0],s.length>1&&(a.historyFields=s.slice(1)),String(r.historyTimestampField??``).trim()&&(a.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&&s.includes(r)&&(t[r]=i)}),t},t=e(r.historyLabels);Object.keys(t).length&&(a.historyLabels=t);let n=e(r.historyLabelFrom);Object.keys(n).length&&(a.historyLabelFrom=n);let i=e(r.historyAmountFields);Object.keys(i).length&&(a.historyAmountFields=i);let o=e(r.historyCurrencyFields);Object.keys(o).length&&(a.historyCurrencyFields=o);let c=e(r.historyUnitFields);Object.keys(c).length&&(a.historyUnitFields=c),String(r.historyAfterGroup??``).trim()&&(a.historyAfterGroup=r.historyAfterGroup.trim())}if(r.addRow&&r.minRows!==void 0&&r.minRows!==``&&(a.minRows=Number(r.minRows)),r.addRow&&r.initialRows!==void 0&&r.initialRows!==``&&(a.initialRows=Number(r.initialRows)),r.addRow&&r.maxRows!==void 0&&r.maxRows!==``&&(a.maxRows=Number(r.maxRows)),r.addRow&&String(r.requireValidatedField??``).trim()&&(a.requireValidatedField=r.requireValidatedField.trim()),r.addRow&&r.requireOne&&(a.requireOne=!0),r.allowInProgress===!1){a.allowInProgress=!1;let e=String(r.inProgressMessage??``).trim();e&&(a.inProgressMessage=e)}if(r.orderByEnabled&&(a.orderBy=r.orderBy??Ex),r.levelRuleEnabled&&(a.levelRule=r.levelRule??Dx),r.regionRules&&(a.regionRules=r.regionRules),r.addRow&&r.linkGroup&&(a.linkGroup=r.linkGroup.trim()),String(r.mergeInto??``).trim()&&(a.mergeInto=r.mergeInto.trim(),r.mergePosition===`top`&&(a.mergePosition=`top`)),String(r.showIfField??``).trim()){let e=r.showIfOperator||`notEmpty`;a.showIf={field:r.showIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.showIfValue??``).trim()&&(a.showIf.value=r.showIfValue.trim())}if(String(r.submitDisabledMessage??``).trim()&&(a.submitDisabledMessage=r.submitDisabledMessage.trim()),String(r.disabledIfField??``).trim()){let e=r.disabledIfOperator||`notEmpty`;a.disabledIf={field:r.disabledIfField.trim(),operator:e},[`eq`,`neq`,`in`,`notIn`].includes(e)&&String(r.disabledIfValue??``).trim()&&(a.disabledIf.value=r.disabledIfValue.trim())}r.infoEnabled&&r.infoText&&(a.infoEnabled=!0,a.infoText=r.infoText),r.toggleEnabled&&r.toggleField&&(a.toggleEnabled=!0,a.toggleLabel=r.toggleLabel||`Toggle`,a.toggleField=r.toggleField),r.afterSubmitMode&&(a.afterSubmit={mode:r.afterSubmitMode},(r.afterSubmitMode===`route`||r.afterSubmitMode===`detail`)&&(a.afterSubmit.target=(r.afterSubmitTarget||``).trim()));let c=(r.formActions??[]).filter(e=>String(e?.label??``).trim());c.length&&(a.formActions=c.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&&(a.submitMessages=u),n)for(let[e,t]of Object.entries(n))t==null||t===``||e in a||jx.has(e)||(a[e]=t);f?(await f(a,n),o.message.success(n?`Group updated`:`Group created`)):n?(await e.ri(n.id,a),o.message.success(`Group updated`)):(await e.Un(a),o.message.success(`Group created`)),D(new Set),k(`settings`),j(!1),d()}catch(e){if(e?.errorFields)return;o.message.error(e.message||`Could not save group`)}finally{h(!1)}}let te=(0,a.useMemo)(()=>V(g||r),[l,r,n,g,v]);return(0,c.jsx)(o.Modal,{open:t,onCancel:L,width:1080,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal fg-group-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),n?` Edit Form Group`:` New Form Group`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:L,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:H,icon:n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),children:n?`Update Group`:`Create Group`})]}),children:(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,className:`fg-form fg-editor-form fg-group-editor-form`,children:[(0,c.jsxs)(`div`,{className:`fg-group-editor-tabs`,role:`tablist`,"aria-label":`Form group editor sections`,children:[(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`settings`,className:O===`settings`?`is-active`:``,onClick:()=>R(`settings`),children:[(0,c.jsx)(`span`,{className:`fg-editor-tab-number`,children:`1`}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`Group settings`}),(0,c.jsx)(`small`,{children:`Name, behaviour and display options`})]})]}),(0,c.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":O===`fields`,className:O===`fields`?`is-active`:``,onClick:()=>R(`fields`),children:[(0,c.jsx)(`span`,{className:`fg-editor-tab-number`,children:`2`}),(0,c.jsxs)(`span`,{children:[(0,c.jsx)(`strong`,{children:`Fields`}),(0,c.jsxs)(`small`,{children:[n?.fields?.length??0,` configured fields`]})]})]})]}),(0,c.jsxs)(`div`,{className:`fg-group-editor-panel${O===`settings`?` is-active`:``}`,children:[(0,c.jsxs)(`div`,{className:`fg-form-section fg-group-settings-card`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Group Info`}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,c.jsx)(o.Select,{options:i,placeholder:`Select module`,onChange:I})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Group Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Work Experience`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. work_experience`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Linkage`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`how this collection links to the main record (ids stored as ObjectId)`})]}),(0,c.jsx)(o.Form.Item,{name:`linkMode`,style:{marginBottom:8},children:(0,c.jsxs)(o.Radio.Group,{optionType:`button`,buttonStyle:`solid`,size:`small`,children:[(0,c.jsx)(o.Radio.Button,{value:`reverse`,children:`Target stores this record’s id (child→parent)`}),(0,c.jsx)(o.Radio.Button,{value:`forward`,children:`This record stores the target’s id (lookup)`})]})}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},children:({getFieldValue:e})=>e(`linkMode`)===`forward`?(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. employerRef`,className:`fg-mono-input`,style:{width:260}})}):(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. jobRef`,className:`fg-mono-input`,style:{width:220}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. parentType`,className:`fg-mono-input`,style:{width:220}})})]})})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Hierarchy`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`chain this collection under another collection of the same form`})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`},children:[(0,c.jsx)(o.Form.Item,{name:`hierarchyLevel`,label:`Level`,tooltip:`Explicit ordering when several collections chain together — level 1 is written first.`,style:{marginBottom:0},children:(0,c.jsx)(o.InputNumber,{min:1,max:99,style:{width:120}})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,placeholder:`No hierarchy (default)`,optionFilterProp:`label`,options:(()=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=l[t]??[],a=new Set,o=[];return t&&(o.push({value:t,label:`Main record (${t})`}),a.add(t)),i.forEach(e=>{let t=e.moduleName;!t||t===n||a.has(t)||(a.add(t),o.push({value:t,label:t}))}),o})()})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. trainerId`,className:`fg-mono-input`,style:{width:200}})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,noStyle:!0,children:({getFieldValue:e})=>{let t=e(`module`)||g||r,n=e(`moduleName`),i=l[t]??[],a=Nx(t,n,e(`hierarchyParent`),e(`hierarchyLinkField`),i);return a?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:a}):null}})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`moduleName`)?(0,c.jsxs)(`div`,{className:`fg-options-block`,style:{marginBottom:12},children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Linked-write dependencies`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`inject ids created by other writes of this same form submit`})]}),(0,c.jsx)(o.Form.List,{name:`writeRefs`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{children:[e.map(({key:e,name:t,...r})=>(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{alignItems:`flex-end`,marginBottom:6},children:[(0,c.jsx)(o.Form.Item,{...r,name:[t,`fromModule`],label:`Id from (module)`,rules:[{required:!0,message:`Module`}],style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{...r,name:[t,`targetField`],label:`Store into field`,rules:[{required:!0,message:`Field`}],style:{marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`e.g. userId or links.userId`,style:{width:220},className:`fg-mono-input`})}),(0,c.jsx)(o.Tooltip,{title:`Remove dependency`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove dependency`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]},e)),(0,c.jsx)(o.Button,{type:`dashed`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({fromModule:``,targetField:``}),children:`Add Dependency`})]})}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{marginTop:10},children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{mode:`tags`,placeholder:`e.g. users`,options:i.map(e=>({value:e.value,label:e.value}))})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Best-effort`,unCheckedChildren:`Required`})})]})]}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`allowCollapse`);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Collapsible section`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`let users fold this section away — useful on long forms`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Collapsible`,unCheckedChildren:`Always open`})}),t&&(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Closed`,unCheckedChildren:`Open`})})]})]})}}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:12},className:`fg-group-conditional`,children:({getFieldValue:e})=>{let t=e(`appendHistory`);return(0,c.jsxs)(`div`,{className:`fg-options-block`,children:[(0,c.jsxs)(`span`,{className:`fg-options-label`,children:[`Append as history`,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,style:{marginLeft:6},children:`keep every past save instead of overwriting (e.g. rate negotiation history)`})]}),(0,c.jsxs)(`div`,{className:`fg-options-controls`,children:[(0,c.jsx)(o.Form.Item,{name:`appendHistory`,valuePropName:`checked`,style:{marginBottom:0},children:(0,c.jsx)(o.Switch,{checkedChildren:`Append`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. proposedRate, candidateBudget`,style:{width:240},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`historyTimestampField`,label:`Timestamp key`,tooltip:`Key stamped onto each saved entry. Blank defaults to 'timestamp'.`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{size:`small`,placeholder:`timestamp`,style:{width:140},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=Candidate Rate, proposedRate=Proposed Rate`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudget.candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetStart`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetCurrency`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`candidateBudget=candidateBudgetUnit`,style:{width:320},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`employer_details`,style:{width:200},className:`fg-mono-input`})})]})]}),t&&(0,c.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,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`order`,label:`Display Order`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:100}})}),(0,c.jsx)(o.Form.Item,{name:`addRow`,label:`Allow Add Row`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Form hidden`,unCheckedChildren:`Shown`})}),(0,c.jsx)(o.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,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`showIfField`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,c.jsx)(o.Form.Item,{name:`showIfOperator`,noStyle:!0,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.showIfOperator!==t.showIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`showIfOperator`))?(0,c.jsx)(o.Form.Item,{name:`showIfValue`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Read-only`,unCheckedChildren:`Editable`})}),(0,c.jsx)(o.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,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`disabledIfField`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Field key e.g. contractType`,style:{width:`45%`}})}),(0,c.jsx)(o.Form.Item,{name:`disabledIfOperator`,noStyle:!0,children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:(e,t)=>e.disabledIfOperator!==t.disabledIfOperator,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e(`disabledIfOperator`))?(0,c.jsx)(o.Form.Item,{name:`disabledIfValue`,noStyle:!0,children:(0,c.jsx)(o.Input,{placeholder:`Value(s), comma for list`,style:{width:`25%`}})}):null})]})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. Complete all mandatory fields`,allowClear:!0})}),(0,c.jsx)(o.Form.Item,{name:`minRows`,label:`Min Rows`,tooltip:`Minimum rows users must keep. Delete is disabled at this count.`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:`initialRows`,label:`Initial Rows`,tooltip:`How many empty rows to show on load (0 = show only the + button).`,children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:90}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isValid`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Allowed`,unCheckedChildren:`Must be finished`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`A completed qualification is required — an in-progress course cannot be submitted.`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. workHistory`,style:{width:160},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. submission_current_employer`,style:{width:220},className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{style:{width:140},options:[{label:`Below host fields`,value:`bottom`},{label:`Above host fields`,value:`top`}]})}),(0,c.jsx)(o.Form.Item,{name:`infoEnabled`,label:`Group Info`,valuePropName:`checked`,initialValue:!1,children:(0,c.jsx)(o.Switch,{checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,c.jsx)(o.Form.Item,{name:`toggleEnabled`,label:`Group Switch`,valuePropName:`checked`,initialValue:!1,children:(0,c.jsx)(o.Switch,{checkedChildren:`On`,unCheckedChildren:`Off`})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`infoEnabled`)?(0,c.jsx)(o.Form.Item,{name:`infoText`,label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:0},className:`fg-group-conditional`,children:({getFieldValue:e})=>e(`toggleEnabled`)?(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`toggleLabel`,label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Fresher`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,c.jsx)(`div`,{className:`fg-inline-row`,children:(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/trainers/:id`,className:`fg-mono-input`})})}}),(0,c.jsx)(o.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,c.jsx)(o.Form.List,{name:`formActions`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(`div`,{className:`fg-form-actions-list`,children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-form-action-row`,style:{border:`1px solid #eee`,borderRadius:8,padding:10,marginBottom:8},children:[(0,c.jsxs)(o.Space,{wrap:!0,align:`start`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`label`],label:`Button Label`,rules:[{required:!0,message:`Label`}],style:{marginBottom:8},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Create and Source Candidate`,style:{width:240}})}),(0,c.jsx)(o.Form.Item,{name:[t,`tone`],label:`Type`,style:{marginBottom:8},children:(0,c.jsx)(o.Select,{style:{width:130},options:[{value:`primary`,label:`Primary`},{value:`default`,label:`Secondary`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`afterSubmitMode`],label:`After Submit`,style:{marginBottom:8},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`route`,`detail`].includes(e([`formActions`,t,`afterSubmitMode`]))?(0,c.jsx)(o.Form.Item,{name:[t,`afterSubmitTarget`],label:`Target`,style:{marginBottom:8},rules:[{pattern:/^\//,message:`Must start with /`}],children:(0,c.jsx)(o.Input,{placeholder:`/jobs/:id/source`,className:`fg-mono-input`,style:{width:200}})}):null}),(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>n(t),style:{marginTop:28}})]}),(0,c.jsxs)(o.Space,{wrap:!0,align:`start`,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. assignedTo`,style:{width:200}})}),(0,c.jsx)(o.Form.Item,{name:[t,`enabledWhenOperator`],label:`Condition`,style:{marginBottom:0},children:(0,c.jsx)(o.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,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>[`eq`,`neq`,`in`,`notIn`].includes(e([`formActions`,t,`enabledWhenOperator`]))?(0,c.jsx)(o.Form.Item,{name:[t,`enabledWhenValue`],label:`Value`,style:{marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`Value(s)`,style:{width:160}})}):null})]})]},e)),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({tone:`primary`,afterSubmitMode:`stay`,enabledWhenOperator:`notEmpty`}),children:`Add submit button`})]})})}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:"${module} has added successfully",style:{width:280}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:"${module} has Updated successfully",style:{width:280}})})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:`submitMsgAddError`,label:`Add Error Message`,tooltip:`Toast shown when Add fails. Blank = show the server's error.`,children:(0,c.jsx)(o.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,c.jsx)(o.Form.Item,{name:`submitMsgEditError`,label:`Edit Error Message`,tooltip:`Toast shown when Edit fails. Blank = show the server's error.`,children:(0,c.jsx)(o.Input,{placeholder:`Server error (default)`,style:{width:280}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Hidden`,unCheckedChildren:`Shown`})})]})]}),(0,c.jsxs)(`div`,{className:`fg-editor-next-row`,children:[(0,c.jsx)(Xb,{type:`secondary`,children:`Next, review the fields included in this group.`}),(0,c.jsx)(o.Button,{type:`primary`,onClick:()=>R(`fields`),children:`Continue to Fields`})]})]}),A&&(0,c.jsxs)(`div`,{className:`fg-group-editor-panel${O===`fields`?` is-active`:``}`,children:[(0,c.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,c.jsx)(`span`,{className:`fg-fields-title`,children:`Fields`}),(0,c.jsx)(`span`,{className:`fg-fields-hint`,children:`Open only the field you want to change`}),b&&(0,c.jsx)(o.Spin,{size:`small`}),!b&&te.length>0&&(0,c.jsxs)(`span`,{className:`fg-fields-hint`,children:[te.length,` fields available`]})]}),(0,c.jsx)(o.Form.List,{name:`fields`,children:(e,{add:t,remove:n,move:i})=>Fx({form:p,fieldItems:e,add:t,remove:n,move:i,absBase:[],moduleFieldOptions:te,fieldsLoading:b,dragIndexRef:N,dragOverIndex:w,setDragOverIndex:T,onFieldKeySelect:(e,t)=>ee(e,t),expandedFieldKeys:E,onToggleField:z,defaultFieldSet:S,uniqueTarget:{primaryModule:p.getFieldValue(`module`)||r||``,getTargetModule:()=>p.getFieldValue(`moduleName`)||``,collectionForModule:P}})})]})]})})}function Lx({groups:e,onEdit:t,onDelete:n,onCopy:r,onPaste:i,canPaste:l,onReorder:u}){let d=(0,a.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,a.useMemo)(()=>{function e({"data-row-index":e,...t}){return e===void 0?(0,c.jsx)(`tr`,{...t}):(0,c.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]);return(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.name,dataSource:f,columns:[...p?[{title:``,key:`drag`,width:34,align:`center`,render:()=>(0,c.jsx)(s.HolderOutlined,{className:`fg-drag-handle`,style:{cursor:`grab`,color:`var(--color-text-secondary)`}})}]:[],{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:6,children:[(0,c.jsx)(Xb,{strong:!0,style:{color:`var(--color-text-heading)`},children:e}),t.hideGroup&&(0,c.jsx)(o.Tag,{color:`default`,children:`Hidden`}),!t.hideGroup&&t.hideGroupInForm&&(0,c.jsx)(o.Tag,{color:`default`,children:`Detail only`}),t.moduleName&&(0,c.jsxs)(o.Tag,{color:`purple`,children:[`→ `,t.moduleName]}),t.hierarchyParent&&(0,c.jsxs)(o.Tag,{color:`gold`,children:[`L`,t.hierarchyLevel??`?`,` ← `,t.hierarchyParent]})]})},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Add Row`,dataIndex:`addRow`,key:`addRow`,align:`center`,width:90,render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,style:{margin:0},children:`Yes`}):(0,c.jsx)(o.Tag,{color:`default`,style:{margin:0},children:`No`})},{title:`Order`,dataIndex:`order`,key:`order`,align:`center`,width:72,render:e=>(0,c.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,align:`center`,width:76,render:e=>(0,c.jsx)(o.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:132,render:(e,a)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Copy settings`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.CopyOutlined,{}),onClick:()=>r(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Tooltip,{title:`Paste copied settings into this group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.SnippetsOutlined,{}),disabled:!l,onClick:()=>i(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Tooltip,{title:`Edit group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>t(a),className:`fg-action-btn`})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this group?`,description:`All field mappings inside will be removed.`,onConfirm:()=>n(a.id),okText:`Delete`,okButtonProps:{danger:!0},children:(0,c.jsx)(o.Tooltip,{title:`Delete group`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}],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,c.jsx)(o.Empty,{description:`No groups configured for this module yet.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})},expandable:{expandedRowRender:e=>(e.fields??[]).length===0?(0,c.jsx)(Xb,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`}):(0,c.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,c.jsxs)(`div`,{className:`fg-field-row`,children:[(0,c.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,c.jsx)(`span`,{className:`fg-field-row-label`,children:e.label}),(0,c.jsx)(`span`,{className:`fg-field-row-key`,children:e.field}),(0,c.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,e.type,`)`]}),[`select`,`radio`,`checkbox`].includes(e.type)&&e.dataSource&&(0,c.jsx)(o.Tag,{color:t[e.dataSource]??`default`,style:{fontSize:10,marginLeft:6},children:n[e.dataSource]??e.dataSource})]}),(0,c.jsxs)(`div`,{className:`fg-field-row-flags`,children:[e.show===1&&(0,c.jsx)(o.Tag,{color:`blue`,style:{marginRight:4},children:`Show`}),e.showOnAdd===!1&&(0,c.jsx)(o.Tag,{color:`orange`,style:{marginRight:4},children:`Edit only`}),e.req===1&&(0,c.jsx)(o.Tag,{color:`red`,style:{marginRight:4},children:`Required`}),e.edit===1&&(0,c.jsx)(o.Tag,{color:`green`,style:{marginRight:4},children:`Editable`}),e.formatter&&(0,c.jsxs)(o.Tag,{color:`purple`,style:{marginRight:4},children:[`fmt: `,e.formatter]})]}),(e.validations??[]).length>0&&(0,c.jsxs)(`div`,{className:`fg-field-row-validations`,children:[(0,c.jsx)(s.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??``,s=r?`Stored field`:t.field&&!(t.value!==void 0&&t.value!==``)?`Field`:`Value`;return(0,c.jsx)(o.Tooltip,{title:`${a===``?``:`${s}: ${a} — `}${t.message}`,children:(0,c.jsxs)(o.Tag,{color:fx[t.type]??`default`,style:{cursor:`default`,fontFamily:`monospace`,fontSize:10},children:[t.type,a===``?``:`(${a})`]})},n)})]})]},e.field)})}),rowExpandable:()=>!0}})}function Rx({open:t,editingForm:n,moduleOptions:r,onClose:i,onSaved:l}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)(!1),[p,m]=(0,a.useState)(``),[h,g]=(0,a.useState)({}),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(null),x=(0,a.useRef)({}),S=(0,a.useRef)(null),C=Px();async function w(t){if(!(!t||x.current[t])){v(!0);try{let n=await e.Fr(t);g(e=>({...e,[t]:n})),x.current[t]=!0}catch{}finally{v(!1)}}}(0,a.useEffect)(()=>{if(!t){x.current={},g({});return}if(n){let e=n.module;m(e),u.setFieldsValue({module:e,formType:n.formType||`popup`,action:n.action,label:n.label,booleanSearchEnabled:n.booleanSearchEnabled??!1,booleanSearchEndpoint:n.booleanSearchEndpoint??``,booleanDefaultSourceType:n.booleanDefaultSourceType??``,actionButtonEnabled:n.actionButtonEnabled??!1,actionButtonLabel:n.actionButtonLabel??``,actionButtonUrl:n.actionButtonUrl??``,actionButtonTarget:n.actionButtonTarget??`_self`,groups:(n.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(Mx)}))}),w(e)}else u.resetFields(),u.setFieldsValue({groups:[],formType:`popup`}),m(``)},[t,n,u]);function T(e){m(e),w(e)}function E(){return(h[p]??[]).map(e=>({value:e.value,label:(0,c.jsxs)(`span`,{children:[e.label,(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:e.value})]}),searchLabel:`${e.label} ${e.value}`.toLowerCase()}))}async function D(){try{let t=await u.validateFields(),r=(t.groups??[]).flatMap(e=>Cx(e?.fields));if(r.length){o.message.error(`Uniqueness rule cannot be saved — ${r[0]}`);return}f(!0);let i={module:t.module,formType:t.formType,action:t.action.trim(),label:t.label,...t.formType===`search`&&t.booleanSearchEnabled?{booleanSearchEnabled:!0,booleanSearchEndpoint:String(t.booleanSearchEndpoint??``).trim(),...t.booleanDefaultSourceType?{booleanDefaultSourceType:t.booleanDefaultSourceType}:{}}:{},actionButtonEnabled:!!t.actionButtonEnabled,actionButtonLabel:String(t.actionButtonLabel??``).trim(),actionButtonUrl:String(t.actionButtonUrl??``).trim(),actionButtonTarget:t.actionButtonTarget||`_self`,groups:(t.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:Ox(e.fields??[]),...e.infoEnabled&&e.infoText?{infoEnabled:!0,infoText:e.infoText}:{}}))};n?(await e.ii(n.id,{...n,...i}),o.message.success(`Custom form updated`)):(await e.Wn(i),o.message.success(`Custom form created`)),l()}catch(e){if(e?.errorFields)return;o.message.error(e.message||`Could not save custom form`)}finally{f(!1)}}let O=E();return(0,c.jsx)(o.Modal,{open:t,onCancel:i,width:1120,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),n?` Edit Custom Form`:` New Custom Form`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:i,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:d,onClick:D,icon:n?(0,c.jsx)(s.EditOutlined,{}):(0,c.jsx)(s.PlusOutlined,{}),children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{form:u,layout:`vertical`,className:`fg-form fg-editor-form`,children:[(0,c.jsxs)(`div`,{className:`fg-form-section fg-editor-sticky-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Form Identity`}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0,message:`Select a module`}],children:(0,c.jsx)(o.Select,{options:r,placeholder:`Select module`,onChange:T})}),(0,c.jsx)(o.Form.Item,{name:`formType`,label:`Form Type`,rules:[{required:!0,message:`Form Type is required`}],initialValue:`popup`,children:(0,c.jsx)(o.Select,{placeholder:`Select form type`,options:[{label:`Search`,value:`search`},{label:`Popup`,value:`popup`}]})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. quickAdd`,className:`fg-mono-input`,disabled:!!n})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Display Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Quick Add Job`})}),(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>{if(e(`formType`)!==`search`)return null;let t=e(`booleanSearchEnabled`);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),t&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/candidates/boolean-search`,className:`fg-mono-input`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`internal,dice`,className:`fg-mono-input`})})]})]})}}),(0,c.jsx)(o.Form.Item,{noStyle:!0,shouldUpdate:!0,children:({getFieldValue:e})=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),e(`actionButtonEnabled`)&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`Job Description`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`/jobs/detailview?id=:jobId&tab=details`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`actionButtonTarget`,label:`Open In`,initialValue:`_self`,children:(0,c.jsx)(o.Select,{size:`small`,style:{width:180},options:[{label:`Same tab`,value:`_self`},{label:`New tab`,value:`_blank`}]})})]})]})})]}),(0,c.jsxs)(`div`,{className:`fg-fields-header`,children:[(0,c.jsx)(`span`,{className:`fg-fields-title`,children:`Groups`}),(0,c.jsx)(`span`,{className:`fg-fields-hint`,children:`Each group holds a set of form fields`}),_&&(0,c.jsx)(o.Spin,{size:`small`})]}),(0,c.jsx)(o.Form.List,{name:`groups`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(c.Fragment,{children:[e.map(({key:e,name:t})=>(0,c.jsxs)(`div`,{className:`fg-form-section`,style:{marginBottom:16},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,marginBottom:10},children:[(0,c.jsxs)(`span`,{className:`fg-form-section-label`,style:{marginBottom:0},children:[`Group `,t+1]}),(0,c.jsx)(o.Tooltip,{title:`Remove group`,children:(0,c.jsx)(`button`,{type:`button`,className:`fg-field-remove-btn`,onClick:()=>n(t),"aria-label":`Remove group`,children:(0,c.jsx)(s.MinusCircleOutlined,{})})})]}),(0,c.jsxs)(`div`,{className:`fg-inline-row`,style:{flexWrap:`wrap`,marginBottom:8},children:[(0,c.jsx)(o.Form.Item,{name:[t,`label`],label:`Group Label`,rules:[{required:!0,message:`Required`}],style:{flex:2,marginBottom:8},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Basic Info`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. basicInfo`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[t,`addRow`],label:`Add Row`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hidden`,unCheckedChildren:`Visible`})}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{type:`number`,min:0,style:{width:80}})}),(0,c.jsx)(o.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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Yes`,unCheckedChildren:`No`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. workHistory`,style:{width:130},className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:[t,`infoEnabled`],label:`Group Info`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Info`,unCheckedChildren:`Info`})}),(0,c.jsx)(o.Form.Item,{name:[t,`toggleEnabled`],label:`Group Switch`,valuePropName:`checked`,initialValue:!1,style:{marginBottom:8},children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`On`,unCheckedChildren:`Off`})}),(0,c.jsx)(o.Form.Item,{name:[t,`order`],label:`Order`,initialValue:0,style:{marginBottom:8},children:(0,c.jsx)(o.Input,{type:`number`,min:0,style:{width:70}})})]}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`infoEnabled`])?(0,c.jsx)(o.Form.Item,{name:[t,`infoText`],label:`Group Info Message`,rules:[{required:!0,message:`Enter group info message`}],children:(0,c.jsx)(o.Input.TextArea,{rows:2,placeholder:`Message shown when users hover the group info icon`})}):null}),(0,c.jsx)(o.Form.Item,{shouldUpdate:!0,style:{marginBottom:8},children:({getFieldValue:e})=>e([`groups`,t,`toggleEnabled`])?(0,c.jsxs)(`div`,{className:`fg-inline-row`,children:[(0,c.jsx)(o.Form.Item,{name:[t,`toggleLabel`],label:`Switch Label`,rules:[{required:!0,message:`Enter switch label`}],style:{flex:1,marginBottom:0},children:(0,c.jsx)(o.Input,{placeholder:`e.g. Fresher`})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. isFresher`,className:`fg-mono-input`})})]}):null}),(0,c.jsx)(`div`,{className:`fg-fields-header`,style:{marginTop:4,marginBottom:8},children:(0,c.jsx)(`span`,{className:`fg-fields-title`,style:{fontSize:12},children:`Fields`})}),(0,c.jsx)(o.Form.List,{name:[t,`fields`],children:(e,{add:n,remove:r,move:i})=>Fx({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,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),block:!0,style:{marginBottom:16},onClick:()=>t({label:``,name:``,addRow:!1,order:e.length,fields:[]}),children:`Add Group`})]})})]})})}function zx({moduleOptions:t}){let[n,r]=(0,a.useState)([]),[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(null);function m(){l(!0),e.yr().then(e=>r(e)).catch(e=>o.message.error(e.message||`Could not load custom forms`)).finally(()=>l(!1))}(0,a.useEffect)(()=>{m()},[]);async function h(t){try{await e.Qn(t.id),o.message.success(`Custom form deleted`),m()}catch(e){o.message.error(e.message||`Could not delete custom form`)}}return(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{className:`fg-tab-toolbar`,style:{marginBottom:12},children:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{p(null),d(!0)},children:`New Custom Form`})}),(0,c.jsx)(o.Spin,{spinning:i,children:(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.action,dataSource:n,columns:[{title:`Module`,dataIndex:`module`,key:`module`,render:e=>(0,c.jsx)(o.Tag,{color:`blue`,children:e})},{title:`Action Key`,dataIndex:`action`,key:`action`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Label`,dataIndex:`label`,key:`label`,render:e=>(0,c.jsx)(Xb,{strong:!0,style:{color:`var(--color-text-heading)`},children:e})},{title:`Groups`,dataIndex:`groups`,key:`groups`,align:`center`,width:76,render:e=>(0,c.jsx)(o.Badge,{count:e?.length??0,showZero:!0,color:`var(--color-brand)`})},{title:``,key:`actions`,align:`right`,width:100,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit form`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{p(t),d(!0)},className:`fg-action-btn`})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this custom form?`,description:`All configured groups will be lost.`,onConfirm:()=>h(t),okText:`Delete`,okButtonProps:{danger:!0},children:(0,c.jsx)(o.Tooltip,{title:`Delete form`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),className:`fg-action-btn`})})})]})}],pagination:!1,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{description:`No custom forms yet. Click 'New Custom Form' to create one.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE,style:{padding:`24px 0`}})}})}),(0,c.jsx)(Rx,{open:u,editingForm:f,moduleOptions:t,onClose:()=>{d(!1),p(null)},onSaved:()=>{d(!1),p(null),m()}})]})}function Bx(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)({}),[d,f]=(0,a.useState)(`all`),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(null),[_,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(`module`),[x,S]=(0,a.useState)([]),[C,w]=(0,a.useState)({clientId:``,region:``}),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(null),k=mx(t),A=t.map(e=>({value:e.key,label:e.label}));(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t);let r=mx(t);u(hx(r)),F(`all`,r)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{e.sr({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(t,n){if(!(n??k).find(e=>e.key===t))return;let r=P(t);j(t,{loading:!0,error:``}),e.cr(t===`all`?``:t,N(t)).then(e=>j(t,{groups:e,loading:!1,loaded:!0,scopeKey:r})).catch(e=>j(t,{error:e.message||`Could not load groups`,loading:!1}))}function I(e){F(e,null)}function L(e){f(e),(!l[e]?.loaded||l[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 ee(){B(),I(d),d!==`all`&&I(`all`)}async function V(t){try{await e.Xn(t,ne()),o.message.success(`Group deleted`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not delete group`)}}async function H(t){let n=t.map((e,t)=>({g:e,index:t})).filter(({g:e,index:t})=>Number(e.order??0)!==t&&e.id);if(n.length)try{await Promise.all(n.map(({g:t,index:n})=>e.ri(t.id,{...t,order:n},ne(t.module||d)))),o.message.success(`Group order updated`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not reorder groups`),I(d)}}function te(e){v(Zb[e])}function U(t){let n={...C,...t};if(w(n),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=n.clientId||n.region?n:{};j(d,{loading:!0,error:``}),e.cr(d,r).then(e=>j(d,{groups:e,loading:!1,loaded:!0,scopeKey:n.clientId||n.region?`${n.clientId}|${n.region}`:``})).catch(e=>j(d,{error:e.message||`Could not load scoped groups`,loading:!1}))}function ne(){return N(d)}function W(e){O(JSON.parse(JSON.stringify(e))),o.message.success(`Copied settings from ${e.label||e.name}`)}async function G(t){if(D)try{let n={...t,addRow:D.addRow??t.addRow,payloadKey:D.payloadKey??t.payloadKey,fields:JSON.parse(JSON.stringify(D.fields??[]))};await e.ri(t.id,n,ne(t.module||d)),o.message.success(`Pasted settings into ${t.label||t.name}`),I(d),d!==`all`&&I(`all`)}catch(e){o.message.error(e.message||`Could not paste settings`)}}function re(){v(null),u(hx(k)),I(d),d!==`all`&&I(`all`)}let ie=k.map(({key:e,label:t,color:n})=>{let r=l[e]??{groups:[],loading:!1,loaded:!1,error:``},i=[...r.groups].sort((e,t)=>(e.order??0)-(t.order??0));return{key:e,label:(0,c.jsxs)(`span`,{className:`fg-tab-label`,children:[(0,c.jsx)(`span`,{className:`fg-tab-dot`,style:{background:n}}),t,(0,c.jsx)(o.Badge,{count:r.groups.length,showZero:!0,color:n,size:`small`})]}),children:(0,c.jsxs)(`div`,{className:`fg-tab-content`,children:[r.error&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:r.error,style:{marginBottom:12}}),(0,c.jsx)(`div`,{className:`fg-tab-toolbar`,children:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),disabled:e===`all`,onClick:()=>{f(e),R()},children:`Add Group`})}),(0,c.jsx)(o.Spin,{spinning:r.loading,children:(0,c.jsx)(Lx,{groups:i,onEdit:z,onDelete:V,onCopy:W,onPaste:G,canPaste:!!D,onReorder:e===`all`?void 0:H})})]})}}),ae=d===`all`?A[0]?.value??`jobs`:d,oe=k.find(e=>e.key===ae)?.label??ae,se=[{key:`module`,label:`Module Form`,children:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Z,{children:(0,c.jsxs)(`div`,{className:`fg-scope-toolbar`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`div`,{children:(0,c.jsxs)(Xb,{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,c.jsx)(`b`,{children:`All`}),` tab always shows the defaults.`]})}),M(d)&&(0,c.jsx)(`div`,{style:{marginTop:6},children:(0,c.jsx)(o.Tag,{color:`processing`,children:`Editing ${x.find(e=>(e._id??e.id)===C.clientId)?.clientName??`client`} config for ${d}`})})]}),(0,c.jsxs)(o.Space,{wrap:!0,size:8,children:[(0,c.jsx)(o.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=>U({clientId:e??``})}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>I(d),children:`Reload`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),disabled:d===`all`,onClick:()=>E(!0),children:`Preview`})]})]})}),(0,c.jsx)(Z,{children:(0,c.jsx)(o.Spin,{spinning:r,children:(0,c.jsx)(o.Tabs,{activeKey:d,onChange:L,items:ie,size:`middle`,className:`fg-tabs`})})}),(0,c.jsx)(Ix,{open:p,editingGroup:h,defaultModule:d===`all`?A[0]?.value??``:d,moduleOptions:A,allGroupsByModule:Object.fromEntries(Object.entries(l).filter(([e])=>e!==`all`).map(([e,t])=>[e,t.groups??[]])),onClose:B,onSaved:ee,onSaveGroup:(t,n)=>n?e.ri(n.id,t,ne(t.module)):e.Un(t,ne(t.module))}),(0,c.jsx)(o.Drawer,{open:T,onClose:()=>E(!1),width:`92vw`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EyeOutlined,{}),` `,oe,` Add Form Preview`]}),classNames:{body:`fg-preview-body`},destroyOnClose:!0,children:(0,c.jsx)(Qs,{moduleName:ae,clientId:C.clientId,region:C.region,cancelPath:`/${ae}`,onSubmit:async()=>o.message.info(`Preview only. No record was created.`),breadcrumbItems:[{label:`Admin`},{label:`Form Groups`},{label:`${oe} Preview`}]},`${ae}-${C.clientId}-${C.region}`)})]})},{key:`custom`,label:`Custom Form`,children:(0,c.jsx)(Z,{children:(0,c.jsx)(zx,{moduleOptions:A})})},{key:`defaultFields`,label:`Default Fields`,children:(0,c.jsx)(Yb,{moduleOptions:A})}];return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),title:`Form Groups`,extra:y===`module`?(0,c.jsxs)(o.Space,{size:8,wrap:!0,children:[(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>te(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>te(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all form groups`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>te(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),onClick:R,children:`New Group`})]}):null,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(Xb,{type:`secondary`,style:{fontSize:13},children:[(0,c.jsx)(`strong`,{children:`Module Form`}),` — configure the default add/edit form for each module.`,` `,(0,c.jsx)(`strong`,{children:`Custom Form`}),` — create standalone named forms (module + action) for context-specific flows such as quick-add or popup forms.`]})]}),(0,c.jsx)(Z,{styles:{body:{padding:`0 0`}},children:(0,c.jsx)(o.Tabs,{activeKey:y,onChange:b,items:se,size:`middle`,className:`fg-top-tabs`,tabBarStyle:{padding:`0 16px`,margin:0},destroyInactiveTabPane:!1})}),(0,c.jsx)(qb,{open:!!_,scope:`formGroups`,action:_?.action,title:_?.title,description:_?.description,confirmLabel:_?.confirmLabel,danger:_?.danger,onCancel:()=>v(null),onVerified:re})]})}var Vx=`2026-08-06T13:33:00.000Z`,{Text:Q}=o.Typography,Hx,Ux=new Map;function Wx(){return Hx||=e.mr().catch(e=>{throw Hx=void 0,e}),Hx}function Gx(t){return Ux.has(t)||Ux.set(t,e.vr(t).catch(e=>{throw Ux.delete(t),e})),Ux.get(t)}var Kx={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.`}},qx=[{label:`Default`,value:`default`},{label:`Title Case On`,value:`on`},{label:`Off (raw text)`,value:`off`}],Jx=e=>e===!0?`on`:e===!1?`off`:`default`,Yx=e=>e===`on`?!0:e===`off`?!1:void 0,Xx=e=>e===!0||e===1||e===`1`;function Zx(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 Qx(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.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 _b(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 $x(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 eS(e){return Number(e?.show??1)===0}function tS(e,t){let n=[];return{nextGroups:(e??[]).map(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 nS({value:e,onChange:t}){return(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`},children:[(0,c.jsx)(o.Input,{size:`small`,placeholder:`#0053a5`,value:e??``,onChange:e=>t(e.target.value),className:`fg-mono-input`,prefix:(0,c.jsx)(s.BgColorsOutlined,{style:{color:e||`#bbb`}})}),(0,c.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 rS({fieldMeta:e,rules:t,ignore:n,fieldOptions:r,onChangeRules:i,onChangeIgnore:a}){let l=Array.isArray(t)?t:[],u=e?.labelWhen,d=l.length===0&&!!(u?.field&&u?.label),f=(e,t)=>i(l.map((n,r)=>r===e?{...n,...t}:n)),p=e=>i(l.filter((t,n)=>n!==e));return(0,c.jsxs)(`div`,{className:`fg-form-section`,style:{marginTop:14,marginBottom:0},children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Conditional Label`}),(0,c.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,c.jsx)(`b`,{children:e?.label}),`) is used. Detail view only — the add/edit forms are unaffected.`]}),d&&(0,c.jsx)(o.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,c.jsx)(o.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`})}),l.map((e,t)=>{let n=_b(e.operator);return(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`When field`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Is`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:hb,value:e.operator??`eq`,onChange:e=>f(t,{operator:e})})]}),n&&(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`C2C`,value:e.value??``,onChange:e=>f(t,{value:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1.2},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Show label`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Employer Rate`,value:e.label??``,onChange:e=>f(t,{label:e.target.value})})]}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>p(t)})]},t)}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>i([...l,{field:``,operator:`eq`,value:``,label:``}]),children:`Add rule`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!n,onChange:e=>a(!e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Use conditional labels in the detail view`})]}),(0,c.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 iS({open:t,fieldMeta:n,value:r,moduleFieldOptions:i,onClose:l,onSave:u}){let[d,f]=(0,a.useState)(()=>({...r??{}})),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)(`display`);(0,a.useEffect)(()=>{if(!t||_!==`lookup`)return;let e=!1;return Wx().then(t=>{e||m(t.map(e=>typeof e==`string`?e:e.name??e.value??``).filter(Boolean))}).catch(()=>{}),()=>{e=!0}},[_,t]),(0,a.useEffect)(()=>{if(!t||_!==`lookup`||!d.lookupCollection)return;let e=!1;return Gx(d.lookupCollection).then(t=>{e||g(t.map(e=>typeof e==`string`?e:e.value??e.field??e.label??``).filter(Boolean))}).catch(()=>{}),()=>{e=!0}},[_,t,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,c.jsxs)(o.Modal,{open:t,onCancel:l,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal detail-field-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EditOutlined,{}),` `,n?.label,(0,c.jsx)(`code`,{className:`fg-field-key-hint`,style:{marginLeft:8},children:n?.key})]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:l,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>u(d),children:`Apply`})]}),children:[(0,c.jsxs)(`div`,{className:`detail-editor-nav`,role:`tablist`,"aria-label":`Field settings`,children:[(0,c.jsx)(o.Button,{type:_===`display`?`primary`:`text`,onClick:()=>v(`display`),children:`Display`}),(0,c.jsx)(o.Button,{type:_===`lookup`?`primary`:`text`,onClick:()=>v(`lookup`),children:`Reference lookup`})]}),_===`display`&&(0,c.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Display`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label override`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:n?.label,value:d.label??``,onChange:e=>y(`label`,e.target.value)})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. $`,value:d.prefix??``,onChange:e=>y(`prefix`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`e.g. yrs`,value:d.suffix??``,onChange:e=>y(`suffix`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,c.jsx)(nS,{value:d.color,onChange:e=>y(`color`,e)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:qx,value:Jx(d.capitalize),onChange:e=>y(`capitalize`,Yx(e))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hidden,onChange:e=>y(`hidden`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide this field everywhere (detail view and the add/edit form)`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideInDetail,onChange:e=>y(`hideInDetail`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide in the detail view only (keep it in the add/edit form)`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideWhenEmpty||!!d.hideWhenEmptyInDetail,onChange:e=>f(t=>({...t,hideWhenEmpty:e,hideWhenEmptyInDetail:e?t.hideWhenEmptyInDetail:!1}))}),(0,c.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,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!d.hideWhenZero,onChange:e=>y(`hideWhenZero`,e)}),(0,c.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,c.jsx)(rS,{fieldMeta:n,rules:d.labelWhen,ignore:d.ignoreLabelWhenInDetail,fieldOptions:i,onChangeRules:e=>y(`labelWhen`,e),onChangeIgnore:e=>y(`ignoreLabelWhenInDetail`,e)}),(0,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Render Type`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:T,onChange:e=>y(`renderType`,e),options:e.Mt}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Empty text`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:Yl[T]??Yl.default,value:C.emptyText??``,onChange:e=>w(`emptyText`,e.target.value)}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Document mode`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:C.documentMode||`preview`,onChange:e=>w(`documentMode`,e),options:e.jt})]}),D&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Text transform`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:C.textTransform||`none`,onChange:e=>w(`textTransform`,e===`none`?void 0:e),options:e.Nt})]}),E&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Tag colour`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`geekblue / #0053a5`,value:C.tagColor??``,onChange:e=>w(`tagColor`,e.target.value),className:`fg-mono-input`})]}),T===`date`&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Date format (dayjs tokens)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`DD/MM/YYYY`,value:C.dateFormat??``,onChange:e=>w(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),T===`phone`&&(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Country-code field on the record`}),(0,c.jsx)(o.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,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Currency symbol`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`$ / ₹ / £`,value:C.currencySymbol??``,onChange:e=>w(`currencySymbol`,e.target.value)})]}),T===`budget`&&(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Unit (e.g. Monthly)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Monthly`,value:C.unit??``,onChange:e=>w(`unit`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!C.showEmpty,onChange:e=>w(`showEmpty`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Show empty values`})]})]}),_===`lookup`&&(0,c.jsxs)(`div`,{className:`fg-form-section detail-editor-panel`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Reference Lookup (id → name)`}),(0,c.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,c.jsx)(`code`,{children:`{ id, value }`}),`.`]}),(0,c.jsxs)(`div`,{style:{marginBottom:10},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Collection`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Display Field 2`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value Field (FK)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`_id`,value:d.valueField??``,onChange:e=>y(`valueField`,e.target.value),className:`fg-mono-input`})]})]})]})]})}function aS(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 oS(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 sS({open:e,merge:t,fieldOptions:n,groupOptions:r,onClose:i,onSave:l}){let[u,d]=(0,a.useState)(()=>({key:``,label:``,fields:[],separator:` - `,template:``,prefix:``,suffix:``,color:``,capitalize:void 0,group:``,hideSources:!0,...t??{},mapRows:aS(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,c.jsx)(o.Modal,{open:e,onCancel:i,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.MergeCellsOutlined,{}),` `,t?`Edit Merged Field`:`New Merged Field`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:i,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!u.key?.trim())return o.message.error(`A merge key is required`);if(!/^[a-z0-9_]+$/.test(u.key))return o.message.error(`Key: lowercase letters, numbers, underscores only`);if(!(u.fields??[]).length)return o.message.error(`Pick at least one source field`);let{mapRows:e,...t}=u;l({...t,valueMaps:oS(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Merged Field`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`experience_range`,value:u.key??``,onChange:e=>f(`key`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Label`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Experience`,value:u.label??``,onChange:e=>f(`label`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Source fields (combined in order)`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Template `,(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`(optional — overrides separator)`})]}),(0,c.jsx)(o.Input.TextArea,{rows:2,value:u.template??``,onChange:e=>f(`template`,e.target.value),placeholder:`{clientBudgetStart} - {clientBudgetEnd} {clientBudgetCurrency}/{clientBudgetUnit}`,className:`fg-mono-input`}),(0,c.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,c.jsx)(`code`,{children:`80 $/hour`}),` rather than `,(0,c.jsx)(`code`,{children:`80 - $/hour`}),`. That only applies to pure connectors (`,(0,c.jsx)(`code`,{children:`-`}),` `,(0,c.jsx)(`code`,{children:`/`}),` `,(0,c.jsx)(`code`,{children:`,`}),` `,(0,c.jsx)(`code`,{children:`|`}),` `,(0,c.jsx)(`code`,{children:`:`}),` and spaces) — literal words you type, like `,(0,c.jsx)(`code`,{children:`Rate:`}),`, are always kept. Put spacing in the template itself, never inside a Value Map: a mapped value like `,(0,c.jsx)(`code`,{children:`" hour"`}),` adds a gap the template cannot see, which is how `,(0,c.jsx)(`code`,{children:`$/hour`}),` came out as `,(0,c.jsx)(`code`,{children:`$ / hour`}),`.`]}),(u.fields??[]).length>0&&(0,c.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:4,marginTop:6},children:(u.fields??[]).map(e=>(0,c.jsxs)(o.Tag,{color:`blue`,style:{cursor:`pointer`,margin:0},onClick:()=>f(`template`,`${u.template??``}{${e}}`),children:[`+ `,`{${e}}`]},e))}),(0,c.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,c.jsx)(`code`,{children:`60 - 80 $/Monthly`}),`.`]})]}),(0,c.jsxs)(`div`,{style:{margin:`12px 0`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Value mappings (raw → display)`}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.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,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6,alignItems:`center`},children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:`Monthly`,value:e.from,onChange:e=>p(t,{from:e.target.value})}),(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`→`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:`mon`,value:e.to,onChange:e=>p(t,{to:e.target.value})}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>m(t)})]},t)),!(u.mapRows??[]).length&&(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[`Separator `,(0,c.jsx)(`span`,{style:{color:`#94a3b8`},children:`(used when no template)`})]}),(0,c.jsx)(o.Input,{size:`small`,placeholder:` - `,value:u.separator??``,onChange:e=>f(`separator`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Place in group`}),(0,c.jsx)(o.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,value:u.prefix??``,onChange:e=>f(`prefix`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Suffix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`yrs`,value:u.suffix??``,onChange:e=>f(`suffix`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Colour`}),(0,c.jsx)(nS,{value:u.color,onChange:e=>f(`color`,e)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`Capitalize`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},options:qx,value:Jx(u.capitalize),onChange:e=>f(`capitalize`,Yx(e))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:u.hideSources!==!1,onChange:e=>f(`hideSources`,e)}),(0,c.jsx)(Q,{style:{fontSize:13},children:`Hide the source fields after merging`})]})]})})}function cS({open:t,module:n,onClose:r}){let[i,l]=(0,a.useState)(``),[u,d]=(0,a.useState)([]),[f,p]=(0,a.useState)({}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(``),v=async()=>{if(!i.trim())return o.message.warning(`Enter a record _id to preview`);h(!0),_(``);try{let[t]=await Promise.all([e.Pr(n,i.trim()),e.Rn()]);d(t),p(xl(t)),t.length||_(`No groups returned — check the id and module.`)}catch(e){_(e?.message||`Failed to load preview`)}finally{h(!1)}};return(0,c.jsxs)(o.Drawer,{open:t,onClose:r,width:520,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.EyeOutlined,{}),` Detail Preview — `,n]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},children:[(0,c.jsxs)(o.Space.Compact,{style:{width:`100%`,marginBottom:14},children:[(0,c.jsx)(o.Input,{placeholder:`Paste a record _id (24-char ObjectId)`,value:i,onChange:e=>l(e.target.value),onPressEnter:v,className:`fg-mono-input`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:v,children:`Load`})]}),g&&(0,c.jsx)(o.Alert,{type:`warning`,showIcon:!0,message:g,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:m,children:[u.map(e=>(0,c.jsxs)(`div`,{style:{marginBottom:18},children:[(0,c.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,c.jsxs)(`div`,{style:{display:`flex`,gap:10,padding:`4px 0`,borderBottom:`1px dashed #eee`},children:[(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12,width:150,flexShrink:0},children:wl(e,f)}),(0,c.jsx)(mu,{field:e})]},e.field))]},e.id??e.name)),!m&&!u.length&&!g&&(0,c.jsx)(o.Empty,{description:`Load a record to preview its detail view.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})]})]})}var lS=[{label:`Common (no region profile)`,value:``},{label:`United States (US)`,value:`US`},{label:`United Kingdom (UK)`,value:`UK`},{label:`India (IND)`,value:`IND`}],uS=[{key:`default`,label:`Any value`,placeholder:Yl.default},{key:`group`,label:`Empty group`,placeholder:`No <group name> added`},{key:`document`,label:`Document`,placeholder:Yl.document},{key:`date`,label:`Date`,placeholder:Yl.date},{key:`phone`,label:`Phone`,placeholder:Yl.phone},{key:`email`,label:`Email`,placeholder:Yl.email},{key:`link`,label:`Link`,placeholder:Yl.link},{key:`skills`,label:`Skills/tags`,placeholder:Yl.skills}];function dS(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 fS({open:t,onClose:n}){let[r,i]=(0,a.useState)(()=>({...e.Ln()})),[l,u]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!t)return;let n=!1;return e.xr().then(e=>{n||i(t=>({...t,...dS(e)}))}).catch(()=>{}),()=>{n=!0}},[t]);let d=(e,t)=>i(n=>({...n,[e]:t})),f=(0,a.useMemo)(()=>e.An(r).map(({value:e,label:t})=>({value:e,label:t})),[r.timeZoneAliases]),p=async()=>{u(!0);try{let t={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 e.Yr(t),e.Fn(t),o.message.success(`Display defaults saved`),n()}catch(e){o.message.error(e?.message||`Could not save defaults`)}finally{u(!1)}},m={fontSize:12,display:`block`,marginBottom:4};return(0,c.jsxs)(o.Drawer,{open:t,onClose:n,width:460,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.SettingOutlined,{}),` Display Defaults`]}),classNames:{header:`fg-drawer-header`,body:`fg-drawer-body`},footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>i({...e.Pn}),children:`Reset to built-in`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:l,onClick:p,children:`Save Defaults`})]}),children:[(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Documents / Files`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`S3 Base URL`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:e.Pn.s3BaseUrl,value:r.s3BaseUrl??``,onChange:e=>d(`s3BaseUrl`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Document name priority (first match wins)`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`name, documentName, uploadedFileName…`,value:r.documentNameOrder??[],onChange:e=>d(`documentNameOrder`,e)})]})]}),(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Value Formatting`}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Date format (dayjs tokens)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`DD MMM YYYY`,value:r.dateFormat??``,onChange:e=>d(`dateFormat`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Phone format (digit groups, e.g. 3-3-4 → 999-878-3413)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`3-3-4`,value:r.phoneFormat??``,onChange:e=>d(`phoneFormat`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{marginBottom:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Fallback country code (leave blank — recommended)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`blank = no code`,value:r.phoneCountryCode??``,onChange:e=>d(`phoneCountryCode`,e.target.value),className:`fg-mono-input`}),(0,c.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,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — true`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Yes`,value:r.booleanTrueLabel??``,onChange:e=>d(`booleanTrueLabel`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Boolean — false`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`No`,value:r.booleanFalseLabel??``,onChange:e=>d(`booleanFalseLabel`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Region`}),(0,c.jsx)(o.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:lS,getPopupContainer:()=>document.body}),(0,c.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,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Application time zone`}),(0,c.jsx)(o.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,c.jsx)(Q,{type:`secondary`,style:{...m,marginTop:4},children:r.timeZone?`Everyone now sees and enters times in ${e.Mn({...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,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Date and time format`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`MMM DD, YYYY | hh:mm A`,value:r.dateTimeFormat??``,onChange:e=>d(`dateTimeFormat`,e.target.value)}),(0,c.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,c.jsxs)(`b`,{children:[` `,e.On(Vx,{...r,showTimeZoneLabel:r.showTimeZoneLabel!==!1})||`—`]})]})]}),(0,c.jsxs)(`div`,{style:{flex:`0 0 200px`},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Show the time zone`}),(0,c.jsx)(`div`,{children:(0,c.jsx)(o.Switch,{size:`small`,checked:r.showTimeZoneLabel!==!1,onChange:e=>d(`showTimeZoneLabel`,e),checkedChildren:`Shown`,unCheckedChildren:`Hidden`})}),(0,c.jsxs)(Q,{type:`secondary`,style:{...m,marginTop:4},children:[`Adds a small "`,e.Nn(r),`" after every time, so nobody has to guess whose clock it is. Only times get it — plain dates never do.`]})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Empty placeholder`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`-`,value:r.emptyPlaceholder??``,onChange:e=>d(`emptyPlaceholder`,e.target.value)})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:`Object / array separator`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:` - `,value:r.separator??``,onChange:e=>d(`separator`,e.target.value)})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:18},children:[(0,c.jsx)(Q,{strong:!0,style:{fontSize:12},children:`Empty-value text by kind`}),(0,c.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,c.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:8,flexWrap:`wrap`},children:uS.map(({key:e,label:t,placeholder:n})=>(0,c.jsxs)(`div`,{style:{flex:`1 1 190px`},children:[(0,c.jsx)(Q,{type:`secondary`,style:m,children:t}),(0,c.jsx)(o.Input,{size:`small`,placeholder:n,value:r.emptyTexts?.[e]??``,onChange:t=>d(`emptyTexts`,{...r.emptyTexts??{},[e]:t.target.value})})]},e))})]})]})]})}function pS(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)([]),[_,v]=(0,a.useState)({}),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(``),[T,E]=(0,a.useState)(!1),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(null),[j,M]=(0,a.useState)(!1),[N,P]=(0,a.useState)(!1),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)(0),[z,B]=(0,a.useState)(``),[ee,V]=(0,a.useState)([]),[H,te]=(0,a.useState)(``),[U,ne]=(0,a.useState)(``),[W,G]=(0,a.useState)({});function re(e){I(Kx[e])}async function ie(t,n,r,i){let a=d;f(e=>e.map(e=>e.id===t.id?{...e,[n]:r}:e)),G(e=>({...e,[`${t.id}:${n}`]:!0}));try{await e.ri(t.id,{...t,[n]:r}),o.message.success(r?i.on:i.off)}catch(e){f(a),o.message.error(e?.message||`Could not update group visibility`)}finally{G(e=>{let r={...e};return delete r[`${t.id}:${n}`],r})}}async function ae(t,n,r){let i=String(r??``).trim();if(i===String(t?.[n]??``).trim())return;let a=d;f(e=>e.map(e=>e.id===t.id?{...e,[n]:i}:e));try{await e.ri(t.id,{...t,[n]:i}),o.message.success(`Empty text saved`)}catch(e){f(a),o.message.error(e?.message||`Could not save empty text`)}}let oe=(e,t)=>ie(e,`hideGroup`,t,{on:`Group hidden from add/edit forms and the detail view`,off:`Group is visible again`}),se=(e,t)=>ie(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`}),ce=(e,t)=>ie(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 le(){I(null),R(e=>e+1)}(0,a.useEffect)(()=>{e.sr({limit:200}).then(V).catch(()=>V([]))},[]),(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t),t.length&&u(t[0].key)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{if(!l)return;let t=!1;return(async()=>{S(!0),w(``);try{let[n,r]=await Promise.all([e.cr(l,{clientId:H}),e.br(l,{clientId:H})]);if(t)return;ne(r.clientId??``),f(n??[]),m(Zx(n)),g((n??[]).map(e=>({value:e.name,label:e.label??e.name})));let i={};(r.fields??[]).forEach(e=>{i[e.field]=e}),v(i),b(r.merges??[])}catch(e){t||w(e?.message||`Failed to load configuration`)}finally{t||S(!1)}})(),()=>{t=!0}},[l,L,H]);let ue=(0,a.useMemo)(()=>p.map(e=>({value:e.key,label:`${e.label} (${e.key})`})),[p]);async function de(){E(!0);try{let t=Object.entries(_).map(([e,t])=>Qx(e,t)).filter(Boolean),{nextGroups:n,changed:r}=tS(d,_);await e.Jr({module:l,fields:t,merges:$x(y),clientId:H}),r.length&&(f(n),m(Zx(n)),g(n.map(e=>({value:e.name,label:e.label??e.name})))),ne(H),o.message.success(H?`Detail view configuration saved for this client`:`Detail view configuration saved`)}catch(e){o.message.error(e?.message||`Could not save configuration`)}finally{E(!1)}}function fe(e){v(t=>({...t,[D.key]:{...e,field:D.key}})),O(null)}function pe(e){v(t=>{let n={...t};return delete n[e],n})}function me(e){b(t=>{let n=[...t];return k.index===null?n.push(e):n[k.index]=e,n}),A(null)}function he(e,t){v(n=>{let r=n[e]??{field:e};return{...n,[e]:{...r,hidden:t}}})}let ge=e=>{if(!e)return null;let t=[];e.label&&t.push((0,c.jsx)(o.Tag,{color:`blue`,children:`label`},`l`)),(e.prefix||e.suffix)&&t.push((0,c.jsx)(o.Tag,{color:`geekblue`,children:`±fix`},`ps`)),e.color&&t.push((0,c.jsx)(o.Tag,{color:e.color,children:`colour`},`c`)),e.capitalize===!0&&t.push((0,c.jsx)(o.Tag,{color:`purple`,children:`Title`},`cap`)),e.capitalize===!1&&t.push((0,c.jsx)(o.Tag,{color:`default`,children:`raw`},`cap`)),e.lookupCollection&&t.push((0,c.jsxs)(o.Tag,{color:`volcano`,children:[`lookup: `,e.lookupCollection]},`lk`)),e.ignoreLabelWhenInDetail&&t.push((0,c.jsx)(o.Tag,{color:`default`,children:`static label`},`ilw`));let n=e.renderType||(e.documentPreview?`document`:e.displayAs);return n&&n!==`auto`&&t.push((0,c.jsx)(o.Tag,{color:`cyan`,children:n},`rt`)),t.length?t:(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},K=[{title:`Group`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsx)(Q,{strong:!0,style:{color:`var(--color-text-heading)`},children:e??t.name})},{title:`Key`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Order`,dataIndex:`order`,key:`order`,width:72,align:`center`,render:e=>(0,c.jsx)(`span`,{className:`fg-order-cell`,children:e??0})},{title:`Fields`,dataIndex:`fields`,key:`fields`,width:76,align:`center`,render:e=>(0,c.jsx)(o.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,c.jsx)(o.Tag,{color:`blue`,style:{margin:0},children:n}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Hide Group`,key:`hideGroup`,width:110,align:`center`,render:(e,t)=>(0,c.jsx)(o.Tooltip,{title:Xx(t.hideGroup)?`Hidden from add/edit forms AND the detail view`:`Visible in both — same flag as Form Groups`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:Xx(t.hideGroup),loading:!!W[`${t.id}:hideGroup`],onChange:e=>oe(t,e)})})},{title:`Show Condition`,key:`ignoreShowIfInDetail`,width:130,align:`center`,render:(e,t)=>{let n=t.showIf?.field?`${t.showIf.field} ${t.showIf.operator??`eq`} ${t.showIf.value??``}`.trim():null;return n?(0,c.jsx)(o.Tooltip,{title:Xx(t.ignoreShowIfInDetail)?`Always shown, ignoring "${n}"`:`Hidden in the detail view unless "${n}"`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Always`,unCheckedChildren:`Follow`,checked:Xx(t.ignoreShowIfInDetail),loading:!!W[`${t.id}:ignoreShowIfInDetail`],onChange:e=>ce(t,e)})}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})}},{title:`Empty Text`,key:`emptyText`,width:220,render:(e,t)=>Xx(t.addRow)?(0,c.jsx)(o.Input,{size:`small`,defaultValue:t.emptyText??``,placeholder:`No ${String(t.label??t.name??``).toLowerCase()} added`,onBlur:e=>ae(t,`emptyText`,e.target.value),onPressEnter:e=>e.currentTarget.blur()}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`—`})},{title:`Hide in Detail`,key:`hideGroupInDetail`,width:120,align:`center`,render:(e,t)=>(0,c.jsx)(o.Tooltip,{title:Xx(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,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:Xx(t.hideGroupInDetail),loading:!!W[`${t.id}:hideGroupInDetail`],onChange:e=>se(t,e)})})}],_e=e=>{let t=e.fields??[];return t.length?(0,c.jsx)(`div`,{className:`fg-expanded-fields`,children:t.map(t=>{let n=_[t.field],r=n?.hidden??eS(t),i={key:t.field,label:t.label??t.field,type:t.type??`text`,group:e.label??e.name,labelWhen:t.labelWhen,lookupDefaults:t.lookupCollection?{lookupCollection:t.lookupCollection,displayField:t.displayField??``,displayField2:t.displayField2??``,valueField:t.valueField||`_id`}:{}};return(0,c.jsxs)(`div`,{className:`fg-field-row`,children:[(0,c.jsxs)(`div`,{className:`fg-field-row-info`,children:[(0,c.jsx)(`span`,{className:`fg-field-row-label`,children:n?.label||t.label}),(0,c.jsx)(`span`,{className:`fg-field-row-key`,children:t.field}),(0,c.jsxs)(`span`,{className:`fg-field-row-type`,children:[`(`,t.type,`)`]}),Hb(t)&&(0,c.jsx)(o.Tooltip,{title:(()=>{let e=Ub(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,c.jsx)(o.Tag,{color:`magenta`,style:{marginLeft:6},children:`Unique`})}),(()=>{let e=(n?.labelWhen??[]).filter(e=>e?.field&&e?.label),r=e.length?e:t.labelWhen?.field&&t.labelWhen?.label?[t.labelWhen]:[];if(!r.length)return null;let i=n?.ignoreLabelWhenInDetail;return(0,c.jsx)(o.Tooltip,{title:i?`Conditional labels ignored here — the detail view always shows "${t.label}"`:`${e.length?`Set in Detail Groups`:`Inherited from Form Groups`} — ${r.map(e=>`"${e.label}" when ${e.field} ${e.operator??`eq`} ${e.value??``}`.trim()).join(`; `)}`,children:(0,c.jsxs)(o.Tag,{color:i?`default`:e.length?`purple`:`blue`,style:{marginLeft:6},children:[`⇄ `,r[0].label,r.length>1?` +${r.length-1}`:``]})})})()]}),(0,c.jsx)(`div`,{className:`fg-field-row-flags`,children:ge(n)}),(0,c.jsxs)(o.Space,{size:4,style:{marginLeft:`auto`},children:[(0,c.jsx)(o.Tooltip,{title:r?`Hidden in form and detail view`:`Visible`,children:(0,c.jsx)(o.Switch,{size:`small`,checkedChildren:`Hide`,unCheckedChildren:`Show`,checked:r,onChange:e=>he(t.field,e)})}),(0,c.jsx)(o.Tooltip,{title:`Customize field`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>O(i)})}),n&&(0,c.jsx)(o.Tooltip,{title:`Reset to default`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>pe(t.field)})})]})]},t.field)})}):(0,c.jsx)(Q,{type:`secondary`,style:{fontSize:12},children:`No fields in this group.`})},ve=(0,a.useMemo)(()=>{let e=z.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,z]),ye=[{title:`Label`,dataIndex:`label`,key:`label`,render:(e,t)=>(0,c.jsxs)(`span`,{children:[(0,c.jsx)(Q,{strong:!0,children:e||t.key}),(0,c.jsx)(`span`,{className:`fg-field-key-hint`,children:t.key})]})},{title:`Fields`,dataIndex:`fields`,key:`fields`,render:e=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(e??[]).map(e=>(0,c.jsx)(o.Tag,{children:e},e))})},{title:`Format`,key:`sep`,width:220,render:(e,t)=>(0,c.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,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>A({index:n,merge:t})})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>b(e=>e.filter((e,t)=>t!==n))})})]})}],be=t.map(e=>({key:e.key,label:e.label}));return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.BgColorsOutlined,{}),title:`Detail Groups`,extra:(0,c.jsxs)(o.Space,{size:8,wrap:!0,children:[(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>re(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>re(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all detail settings`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>re(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.SettingOutlined,{}),onClick:()=>P(!0),children:`Display Defaults`}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.EyeOutlined,{}),disabled:!l,onClick:()=>M(!0),children:`Preview`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:T,disabled:!l,onClick:de,children:`Save Configuration`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(`div`,{className:`fg-scope-toolbar`,style:{marginBottom:12},children:[(0,c.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,c.jsxs)(o.Space,{wrap:!0,size:8,children:[(0,c.jsx)(o.Select,{size:`small`,allowClear:!0,showSearch:!0,placeholder:`Client (default)`,style:{width:240},value:H||void 0,optionFilterProp:`label`,options:ee.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e.clientRefrenceId??e._id})).filter(e=>e.value),onChange:e=>te(e??``)}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>R(e=>e+1),children:`Reload`})]})]}),H&&!U&&!x&&(0,c.jsx)(o.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.`}),(0,c.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,c.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,c.jsxs)(o.Spin,{spinning:r,children:[(0,c.jsx)(o.Tabs,{activeKey:l,onChange:u,items:be.map(e=>({...e,children:null})),className:`admin-module-tabs`}),C&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:C,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:x,children:[(0,c.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search groups or fields`,value:z,onChange:e=>B(e.target.value)}),(0,c.jsxs)(Q,{type:`secondary`,style:{fontSize:12},children:[d.length,` groups · `,p.length,` fields`]})]}),(0,c.jsx)(o.Table,{rowKey:e=>e.id??e.name,dataSource:ve,columns:K,pagination:!1,size:`small`,className:`fg-table`,expandable:{expandedRowRender:_e,rowExpandable:()=>!0},locale:{emptyText:(0,c.jsx)(o.Empty,{description:`Select a module to see its groups and fields.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})}}),(0,c.jsxs)(`div`,{style:{margin:`20px 0 8px`,display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,c.jsxs)(Q,{strong:!0,children:[(0,c.jsx)(s.MergeCellsOutlined,{}),` Merged Fields`]}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),disabled:!l,onClick:()=>A({index:null,merge:null}),children:`Add Merge`})]}),(0,c.jsx)(o.Table,{rowKey:`key`,dataSource:y,columns:ye,pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{description:`No merged fields. Combine e.g. 'from' + 'to' into one.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]})}),(0,c.jsx)(iS,{open:!!D,fieldMeta:D,value:D?{...D.lookupDefaults,..._[D.key]??{}}:null,moduleFieldOptions:ue,onClose:()=>O(null),onSave:fe},D?.key??`field-closed`),(0,c.jsx)(sS,{open:!!k,merge:k?.merge,fieldOptions:ue,groupOptions:h,onClose:()=>A(null),onSave:me},k?`merge-${k.index??`new`}`:`merge-closed`),(0,c.jsx)(fS,{open:N,onClose:()=>P(!1)}),(0,c.jsx)(cS,{open:j,module:l,onClose:()=>M(!1)}),(0,c.jsx)(qb,{open:!!F,scope:`detailConfig`,action:F?.action,title:F?.title,description:F?.description,confirmLabel:F?.confirmLabel,danger:F?.danger,onCancel:()=>I(null),onVerified:le})]})}var mS=`/admin/email-templates`,hS=`/email-templates`;function gS(e){return e?.data??e}async function _S({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=gS(await t.a(t.b,`${mS}?${s}`))??{};return{items:Array.isArray(c.items)?c.items:[],totalCount:Number(c.totalCount??0)}}async function vS(e){return gS(await t.a(t.b,`${mS}/${encodeURIComponent(e)}`))}async function yS(e){return t.a(t.b,mS,{method:`POST`,body:JSON.stringify(e)})}async function bS(e,n){return t.a(t.b,`${mS}/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(n)})}async function xS(e){return t.a(t.b,`${mS}/${encodeURIComponent(e)}`,{method:`DELETE`})}async function SS({module:e=``,action:n=``}={}){let r=new URLSearchParams;e&&r.set(`module`,e),n&&r.set(`action`,n);let i=gS(await t.a(t.b,`${hS}${r.toString()?`?${r}`:``}`));return Array.isArray(i)?i:[]}async function CS(e){return gS(await t.a(t.b,`${hS}/${encodeURIComponent(e)}`))}async function wS(){let e=gS(await t.a(t.b,`/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 TS({offset:e=0,limit:n=20,search:r=``}={}){let i=gS(await t.a(t.b,`/signature/homePage?${new URLSearchParams({offset:String(e),limit:String(n),sortBy:`new`,searchValue:r})}`))??{},a=Array.isArray(i.data)?i.data.map(e=>({...e,isActive:e.isActive??e.status??!1})):[];return{items:a,totalCount:Number(i.totalCount??a.length)}}async function ES(e){return gS(await t.a(t.b,`/signature/editPreview?signatureId=${encodeURIComponent(e)}`))}async function DS(e){return t.a(t.b,`/signature/add`,{method:`POST`,body:JSON.stringify(e)})}async function OS(e){return t.a(t.b,`/signature/edit`,{method:`PUT`,body:JSON.stringify(e)})}async function kS(e){return t.a(t.b,`/signature/delete?signatureId=${encodeURIComponent(e)}`,{method:`DELETE`})}async function AS(e,n){return t.a(t.b,`/signature/statusUpdate?signatureId=${encodeURIComponent(e)}&status=${n}`,{method:`PUT`})}var jS={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:MS}=o.Typography,NS=[{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)`}],PS=[{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)`}],FS=[`GET`,`POST`,`PUT`,`DELETE`],IS=[`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`],LS={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`},RS=[{value:`notEmpty`,label:`is set (not empty)`},{value:`eq`,label:`equals`},{value:`ne`,label:`not equals`},{value:`isEmpty`,label:`is empty`}];function zS(){return`action_${Date.now()}`}function BS({open:e,initial:t,isChild:n,popupForms:r,templateOptions:i,permissionModules:l,permissionActions:u,onClose:d,onSave:f}){let[p]=o.Form.useForm(),[m,h]=(0,a.useState)(!1),g=o.Form.useWatch(`actionType`,p)??`navigate`,_=o.Form.useWatch(`showInDetail`,p)??!1,v=o.Form.useWatch(`popupKey`,p)??``,y=o.Form.useWatch(`doneOperator`,p)??`notEmpty`;(0,a.useEffect)(()=>{if(e){let[e=``,n=``]=(t?.permission??``).split(`.`);p.setFieldsValue({...LS,...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.actionType===`modal`&&g&&l?n.popupFieldOverrides=[{name:g,dataSource:l,...l===`master`?{masterName:u?.trim()}:{},..._?{labelKey:_}:{},...v?{valueKey:v}:{}}]:n.popupFieldOverrides=void 0,h(!0);try{await f({...n,...t?{popupState:t}:{popupState:void 0}})}finally{h(!1)}},x=[...IS.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,c.jsx)(o.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,c.jsx)(s.SaveOutlined,{})},className:`fg-editor-modal action-editor-modal`,children:(0,c.jsxs)(o.Form,{form:p,layout:`vertical`,initialValues:LS,className:`action-editor-form`,children:[(0,c.jsx)(`div`,{className:`action-editor-intro`,children:`Choose what the action does, then decide where it appears and who can use it.`}),(0,c.jsxs)(`div`,{className:`action-editor-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`key`,label:`Key`,rules:[{required:!0,message:`Key is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. sourceCandidates`})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Label`,rules:[{required:!0,message:`Label is required`}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. Source Candidates`})}),(0,c.jsx)(o.Form.Item,{name:`icon`,label:`Icon`,rules:[{required:!1,message:`Icon is required`}],children:(0,c.jsx)(o.Select,{options:NS,placeholder:`Select icon`,allowClear:!0})}),(0,c.jsx)(o.Form.Item,{name:`actionType`,label:`Action Type`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{options:PS})})]}),g===`group`&&(0,c.jsx)(o.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,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Behaviour`}),g===`navigate`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:`routeTemplate`,label:`Route Template`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. /app/jobs/edit/:_id`})}),(0,c.jsx)(o.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,c.jsx)(o.Select,{options:[{value:`_self`,label:`Same tab`},{value:`_blank`,label:`New tab`}]})})]}),g===`modal`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{showSearch:!0,optionFilterProp:`label`,options:x,placeholder:`Select popup form`})}),(0,c.jsx)(o.Form.Item,{name:`popupStateText`,label:`Popup Context (JSON, optional)`,tooltip:`Static context passed to the popup, for example {"notesfor":"candidate"}`,children:(0,c.jsx)(o.Input.TextArea,{rows:4,placeholder:`{"notesfor":"candidate"}`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`apiMethod`,label:`Submit Method`,style:{width:150},children:(0,c.jsx)(o.Select,{options:FS.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. /module-data-update`})})]}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Popup Dropdown Source`}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`popupFieldName`,label:`Field Name`,style:{width:`28%`},tooltip:`The popup field to override. For Change Status, use "status".`,children:(0,c.jsx)(o.Input,{placeholder:`status`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldDataSource`,label:`Source`,style:{width:`24%`},children:(0,c.jsx)(o.Select,{allowClear:!0,options:[{value:`master`,label:`Master`}],placeholder:`Default`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldMasterName`,label:`Master Name`,style:{width:`48%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissions`})})]}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.Form.Item,{name:`popupFieldLabelKey`,label:`Label Key`,style:{width:`50%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissionStatusText`})}),(0,c.jsx)(o.Form.Item,{name:`popupFieldValueKey`,label:`Value Key`,style:{width:`50%`},children:(0,c.jsx)(o.Input,{placeholder:`clientSubmissionStatusText`})})]})]}),g===`modal`&&[`mail`,`vendor-share`].includes(v)&&(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`No default — user selects in composer`})}),g===`modal`&&v===`mail`&&(0,c.jsx)(o.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,c.jsx)(o.Switch,{checkedChildren:`Required`,unCheckedChildren:`Not required`})}),g===`api`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Form.Item,{name:`apiMethod`,label:`API Method`,children:(0,c.jsx)(o.Select,{options:FS.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.Form.Item,{name:`apiPath`,label:`API Path`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. /jobs/:_id`})})]}),g===`copy`&&(0,c.jsx)(o.Form.Item,{name:`copyField`,label:`Record Field to Copy`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. email or applicantRefrenceId`})}),g===`document`&&(0,c.jsx)(o.Form.Item,{name:`documentField`,label:`Document Field`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`e.g. resume or attachment`})}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Availability and access`}),(0,c.jsx)(o.Form.Item,{name:`allowedTabs`,label:`Allowed Tabs (optional)`,tooltip:`Leave empty to show on every tab.`,children:(0,c.jsx)(o.Select,{mode:`tags`,tokenSeparators:[`,`],placeholder:`e.g. allJobs`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.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,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. job`,options:l.map(e=>({value:e,label:e}))})}),(0,c.jsx)(o.Form.Item,{name:`permissionAction`,label:`Role Permission — Action`,style:{width:`50%`},children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,placeholder:`e.g. edit`,options:u.map(e=>({value:e,label:e}))})})]}),(0,c.jsx)(o.Form.Item,{name:`permissionKey`,label:`Permission Key (row-level gate)`,tooltip:`Maps to record.actionPermission.<key>. Leave blank to always show.`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. edit, sourceCandidates, sharePermission`})}),(0,c.jsxs)(`div`,{className:`action-toggle-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`allowMultiple`,label:`Multiple Records`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`danger`,label:`Danger`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`showInList`,label:`Show in List`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})}),(0,c.jsx)(o.Form.Item,{name:`showInDetail`,label:`Show in Detail`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]}),_&&(0,c.jsx)(o.Form.Item,{name:`detailPlacement`,label:`Detail Placement`,children:(0,c.jsx)(o.Select,{options:[{value:`primary`,label:`Primary button`},{value:`more`,label:`More actions menu`}]})}),(0,c.jsx)(`div`,{className:`action-editor-section-title`,children:`Done state (optional)`}),(0,c.jsx)(o.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,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. Moved to Onboarded`})}),(0,c.jsxs)(o.Space.Compact,{block:!0,children:[(0,c.jsx)(o.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,c.jsx)(o.Input,{placeholder:`e.g. onboardingStatus`})}),(0,c.jsx)(o.Form.Item,{name:`doneOperator`,label:`Condition`,style:{width:`30%`},children:(0,c.jsx)(o.Select,{options:RS})}),(0,c.jsx)(o.Form.Item,{name:`doneValue`,label:`Value`,style:{width:`30%`},hidden:y!==`eq`&&y!==`ne`,children:(0,c.jsx)(o.Input,{placeholder:`e.g. In Progress`})})]}),(0,c.jsx)(o.Form.Item,{name:`doneTone`,label:`Done Colour`,children:(0,c.jsx)(o.Select,{options:[{value:`success`,label:`Success (green)`},{value:`primary`,label:`Primary (blue)`},{value:`danger`,label:`Danger (red)`}]})})]})})}function VS(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(``),[l,u]=(0,a.useState)([]),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)([]),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(null),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)([]),[k,A]=(0,a.useState)([]),[j,M]=(0,a.useState)(null),[N,P]=(0,a.useState)(``),[F,I]=(0,a.useState)([]),[L,R]=(0,a.useState)([]);(0,a.useEffect)(()=>{e.kr().then(e=>{let t=tb(e);n(t),i(e=>e||t[0]?.value||``)}).catch(()=>{n([])})},[]),(0,a.useEffect)(()=>{Promise.all([e.kr().catch(()=>[]),e.Or().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,a.useCallback)(async()=>{if(r){v(!0),S(null),u([]);try{u(await e.Vr(r))}catch(e){S(e.message)}finally{v(!1)}}},[r]);(0,a.useEffect)(()=>{queueMicrotask(()=>{z()})},[z]),(0,a.useEffect)(()=>{Promise.all([e.yr(r,`popup`).catch(()=>[]),SS({module:r}).catch(()=>[])]).then(([e,t])=>{O(e),A(t.map(e=>({value:e._id??e.id,label:`${e.name} · ${e.action}`})))})},[r]),(0,a.useEffect)(()=>{queueMicrotask(()=>{let e=l.filter(e=>e.roleId===0),t=e.find(e=>e.module===r)??e[0];f(t??null),m(t?t.rowActions??[]:[]),g(!1)})},[r,l]);let B=async()=>{b(!0);try{if(d)await e.di(d.id??d._id,p),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:p}:e)),o.message.success(`Config saved`);else{let t=await e.Yn({module:r,roleId:0,rowActions:p}),n=t?.data??t;f(n),u(e=>[...e,n]),o.message.success(`Config created`)}g(!1)}catch(e){o.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}finally{b(!1)}},ee=async()=>{if(d)try{await e.ar(d.id??d._id),o.message.success(`Config deleted`),await z()}catch(e){o.message.error(e.message)}},[V,H]=(0,a.useState)(null),te=(e=null)=>{H(typeof e==`string`?e:null),E(null),w(!0)},U=(e,t=null)=>{H(t),E(e),w(!0)},ne=async t=>{let n;n=V?p.map(e=>{if(e.key!==V)return e;let n=e.children??[],r=T?n.map(e=>e.key===T.key?{...e,...t}:e):[...n,{...LS,...t,_localKey:zS()}];return{...e,children:r}}):T?p.map(e=>e.key===T.key?{...e,...t}:e):[...p,{...LS,...t,_localKey:zS()}];try{if(d)await e.di(d.id??d._id,n),u(e=>e.map(e=>(e.id??e._id)===(d.id??d._id)?{...e,rowActions:n}:e)),o.message.success(`Config saved`);else{let t=await e.Yn({module:r,roleId:0,rowActions:n}),i=t?.data??t;f(i),u(e=>[...e,i]),o.message.success(`Config created`)}m(n),g(!1),w(!1)}catch(e){o.message.error(e.message),String(e.message??``).toLowerCase().includes(`already exists`)&&z()}},W=(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)},G=(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 re(e){M(jS[e])}function ie(){M(null),z()}let ae=(0,a.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]),oe=[{title:`Order`,key:`order`,width:76,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{size:`small`,type:`text`,disabled:t._actionIndex===0,onClick:()=>G(t._actionIndex,-1),children:`↑`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,disabled:t._actionIndex===p.length-1,onClick:()=>G(t._actionIndex,1),children:`↓`})]})},{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{strong:!0,children:t.label||t.key}),(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(o.Tag,{color:`blue`,children:t.actionType}),(0,c.jsx)(MS,{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,c.jsxs)(o.Space,{size:[4,4],wrap:!0,children:[t.showInList&&(0,c.jsx)(o.Tag,{color:`green`,children:`List`}),(t.showInDetail??t.showInList)&&(0,c.jsxs)(o.Tag,{color:`purple`,children:[`Detail · `,t.detailPlacement||`more`]}),t.allowMultiple&&(0,c.jsx)(o.Tag,{children:`Multi-select`}),t.danger&&(0,c.jsx)(o.Tag,{color:`red`,children:`Destructive`}),!t.showInList&&!(t.showInDetail??t.showInList)&&(0,c.jsx)(MS,{type:`secondary`,children:`Nowhere`})]})},{title:`Access`,key:`access`,width:170,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:110,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[t.actionType===`group`&&(0,c.jsx)(o.Tooltip,{title:`Add child action`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>te(t.key)})}),(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>U(t)})}),(0,c.jsx)(o.Popconfirm,{title:`Remove this action?`,onConfirm:()=>W(t.key),okText:`Remove`,okType:`danger`,children:(0,c.jsx)(o.Tooltip,{title:`Remove`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}],se=e=>[{title:`Action`,key:`identity`,width:210,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{strong:!0,children:t.label||t.key}),(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.key})]})},{title:`Behaviour`,key:`destination`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(o.Tag,{color:`blue`,children:t.actionType}),(0,c.jsx)(MS,{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,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(MS,{type:`secondary`,children:t.permission||`All permitted roles`}),t.permissionKey&&(0,c.jsx)(MS,{type:`secondary`,code:!0,children:t.permissionKey})]})},{title:``,key:`actions`,width:80,fixed:`right`,render:(t,n)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>U(n,e)})}),(0,c.jsx)(o.Popconfirm,{title:`Remove this child action?`,onConfirm:()=>W(n.key,e),okText:`Remove`,okType:`danger`,children:(0,c.jsx)(o.Tooltip,{title:`Remove`,children:(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}];return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ToolOutlined,{}),title:`Actions`,extra:(0,c.jsx)(o.Dropdown,{trigger:[`click`],menu:{items:[{key:`save`,label:`Save current as default`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>re(`save`)},{key:`restore`,label:`Restore saved default`,icon:(0,c.jsx)(s.CloudDownloadOutlined,{}),onClick:()=>re(`restore`)},{type:`divider`},{key:`reset`,label:`Reset all actions`,icon:(0,c.jsx)(s.ReloadOutlined,{}),danger:!0,onClick:()=>re(`reset`)}]},children:(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.MoreOutlined,{}),children:`Workspace defaults`})}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(MS,{type:`secondary`,children:`Build one action once, then control its List and Detail placement, permissions, tabs, and multi-select behaviour.`})]}),(0,c.jsx)(Z,{styles:{body:{padding:`14px 18px`}},children:(0,c.jsxs)(`div`,{className:`admin-config-context`,children:[(0,c.jsxs)(`div`,{className:`admin-config-context-copy`,children:[(0,c.jsx)(MS,{strong:!0,children:`Configuration context`}),(0,c.jsx)(MS,{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,c.jsxs)(`div`,{className:`admin-config-context-controls`,children:[(0,c.jsxs)(`label`,{className:`admin-config-control`,children:[(0,c.jsx)(MS,{type:`secondary`,style:{display:`block`,marginBottom:4,fontSize:12},children:`Module`}),(0,c.jsx)(o.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:t.map(e=>({value:e.value,label:e.label===e.value?e.value:`${e.label} (${e.value})`}))})]}),(0,c.jsx)(`div`,{className:`admin-config-reload`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:z,loading:_,children:`Reload`})})]})]})}),x&&(0,c.jsx)(o.Alert,{type:`error`,message:x,showIcon:!0}),(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ToolOutlined,{}),title:(0,c.jsxs)(o.Space,{wrap:!0,children:[(0,c.jsxs)(`span`,{children:[p.length,` configured action`,p.length===1?``:`s`]}),d?(0,c.jsx)(o.Tag,{color:`green`,children:`Default config loaded (All Roles)`}):(0,c.jsx)(o.Tag,{color:`orange`,children:`No config — will create on Save`})]}),extra:(0,c.jsxs)(o.Space,{wrap:!0,children:[d&&(0,c.jsx)(o.Popconfirm,{title:`Delete this entire config?`,onConfirm:ee,okText:`Delete`,okType:`danger`,children:(0,c.jsx)(o.Button,{danger:!0,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{}),children:`Delete Config`})}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>te(),children:`New action`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:y,disabled:!h,onClick:B,children:`Save Config`})]}),children:[(0,c.jsxs)(`div`,{className:`admin-config-table-tools`,children:[(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search actions`,value:N,onChange:e=>P(e.target.value)}),h&&(0,c.jsx)(MS,{type:`warning`,children:`Unsaved changes`})]}),(0,c.jsx)(o.Spin,{spinning:_,children:(0,c.jsx)(o.Table,{dataSource:ae.map((e,t)=>({...e,_actionIndex:p.indexOf(e),_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:oe,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,c.jsx)(o.Table,{dataSource:(e.children??[]).map((e,t)=>({...e,_rowKey:e.key||e._localKey||t})),rowKey:`_rowKey`,columns:se(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,c.jsx)(BS,{open:C,initial:T,isChild:!!V,popupForms:D,templateOptions:k,permissionModules:F,permissionActions:L,onClose:()=>w(!1),onSave:ne}),(0,c.jsx)(qb,{open:!!j,scope:`rowActions`,action:j?.action,title:j?.title,description:j?.description,confirmLabel:j?.confirmLabel,danger:j?.danger,onCancel:()=>M(null),onVerified:ie})]})}var{Text:HS,Title:US}=o.Typography,WS=[{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`}],GS=[{value:`{currentUserId}`,label:`{currentUserId} — the signed-in user`}],KS=[{value:`myJobs`,label:`My Jobs`},{value:`allJobs`,label:`All Jobs`}],qS=[`eq`,`ne`,`contains`,`includes`,`notIncludes`],JS=`scope`,YS=`fieldEq`,XS=[{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}],ZS=()=>({field:``,operator:`eq`,value:``,compareField:``}),QS=()=>({name:``,description:``,conditions:[ZS()],blockedActions:[],disabledActions:[],allowedActions:[],isActive:!0});function $S(e){return WS.find(t=>t.value===e)?.label??e}function eC(e){return e.operator===JS?`scope = ${e.value}`:e.operator===YS?`${e.field} = field:${e.compareField}`:[`isEmpty`,`notEmpty`].includes(e.operator)?`${e.field} ${$S(e.operator)}`:`${e.field} ${$S(e.operator)} "${e.value}"`}function tC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(QS()),[x,S]=(0,a.useState)(!1),[C,w]=(0,a.useState)(!1),[T,E]=(0,a.useState)([]),[D,O]=(0,a.useState)([]);(0,a.useEffect)(()=>{let t=!1;return queueMicrotask(()=>{i(!0),e.or().then(e=>{if(t)return;let r=tb(e);n(r),u(e=>r.some(t=>t.value===e)?e:r[0]?.value??``)}).catch(()=>{t||(n([]),u(``))}).finally(()=>{t||i(!1)})}),()=>{t=!0}},[]);function k(t){m(!0),e.Ar(t).then(e=>f(Array.isArray(e)?e:[])).catch(()=>f([])).finally(()=>m(!1))}function A(t){e.Fr(t).then(e=>{E((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))}).catch(()=>E([]))}function j(t){e.Vr(t).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,a.useEffect)(()=>{queueMicrotask(()=>{if(!l){f([]),E([]),O([]);return}k(l),A(l),j(l)})},[l]);function M(){v(null),b(QS()),g(!0)}function N(e){v(e),b({name:e.name??``,description:e.description??``,conditions:e.conditions?.length?e.conditions.map(e=>({...e})):[ZS()],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 e.si(_.id,y),o.message.success(`Rule updated`)):(await e.qn({...y,module:l}),o.message.success(`Rule created`)),g(!1),k(l)}catch(e){o.message.error(e.message)}finally{S(!1)}}}async function F(t){try{await e.nr(t.id),o.message.success(`Rule deleted`)}catch(e){o.message.error(e.message)}k(l)}async function I(){w(!0);try{for(let t of XS)await e.qn({...t,module:l});o.message.success(`Default job rules created`),k(l)}catch(e){o.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,ZS()]}))}function z(e){b(t=>({...t,conditions:t.conditions.filter((t,n)=>n!==e)}))}return(0,c.jsxs)(`div`,{style:{padding:`24px 0`},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,marginBottom:8,flexWrap:`wrap`},children:[(0,c.jsx)(US,{level:5,style:{margin:0},children:`Action Rules`}),(0,c.jsx)(o.Select,{options:t,value:l,loading:r,placeholder:`Select module`,onChange:u,style:{width:200}}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.PlusOutlined,{}),type:`primary`,disabled:!l,onClick:M,children:`Add Rule`}),(l===`job`||l===`jobs`)&&(0,c.jsx)(o.Tooltip,{title:`Create the 3 standard job rules that replace the hardcoded backend logic`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),loading:C,onClick:I,children:`Seed Job Defaults`})})]}),(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,style:{marginBottom:16,fontSize:12},message:(0,c.jsxs)(`span`,{children:[`Rules are evaluated `,(0,c.jsx)(`b`,{children:`per row`}),` in the list view using the record's own field values. When `,(0,c.jsx)(`b`,{children:`all conditions`}),` of a rule match, the listed action buttons are hidden for that row. The `,(0,c.jsx)(`b`,{children:`key`}),` of each blocked action must match what is set in `,(0,c.jsx)(`b`,{children:`Row Actions`}),` config.`]})}),(0,c.jsx)(o.Table,{columns:[{title:`Rule Name`,dataIndex:`name`,key:`name`,width:200,render:(e,t)=>(0,c.jsxs)(`div`,{children:[(0,c.jsx)(HS,{strong:!0,children:e}),t.description?(0,c.jsx)(`div`,{children:(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:11},children:t.description})}):null]})},{title:`Conditions (ALL must match)`,key:`conditions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,direction:`vertical`,children:(t.conditions??[]).map((e,t)=>(0,c.jsx)(o.Tag,{style:{fontFamily:`monospace`,fontSize:11,margin:0},children:eC(e)},t))})},{title:`Blocked Row Actions`,key:`blockedActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.blockedActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`volcano`,children:e},e))})},{title:`Disabled Row Actions`,key:`disabledActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.disabledActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`gold`,children:e},e))})},{title:`Only These Allowed`,key:`allowedActions`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.allowedActions??[]).map(e=>(0,c.jsx)(o.Tag,{color:`green`,children:e},e))})},{title:`Active`,dataIndex:`isActive`,key:`isActive`,width:70,render:e=>(0,c.jsx)(o.Tag,{color:e?`green`:`default`,children:e?`On`:`Off`})},{title:``,key:`act`,width:80,render:(e,t)=>(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.EditOutlined,{}),size:`small`,type:`text`,onClick:()=>N(t)})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this rule?`,onConfirm:()=>F(t),children:(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),size:`small`,type:`text`})})})]})}],dataSource:d,loading:p,rowKey:`id`,size:`small`,pagination:!1,locale:{emptyText:l?`No rules yet. Click "Add Rule" to get started.`:`No modules found. Configure modules first.`}}),(0,c.jsx)(o.Drawer,{open:h,title:_?`Edit: ${_.name}`:`Add Action Rule`,width:620,onClose:()=>g(!1),footer:(0,c.jsxs)(o.Space,{style:{float:`right`},children:[(0,c.jsx)(o.Button,{onClick:()=>g(!1),children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:x,onClick:P,children:`Save Rule`})]}),children:(0,c.jsxs)(o.Form,{layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{label:`Rule Name`,required:!0,children:(0,c.jsx)(o.Input,{value:y.name,placeholder:`e.g. Fulfilled jobs — block sourcing`,onChange:e=>b(t=>({...t,name:e.target.value}))})}),(0,c.jsx)(o.Form.Item,{label:`Description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2,value:y.description,placeholder:`Explain when this rule applies`,onChange:e=>b(t=>({...t,description:e.target.value}))})}),(0,c.jsx)(o.Form.Item,{label:`Active`,children:(0,c.jsx)(o.Switch,{checked:y.isActive,onChange:e=>b(t=>({...t,isActive:e}))})}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Conditions `,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12},children:`(ALL must match for the rule to fire)`})]}),y.conditions.map((e,t)=>(0,c.jsxs)(`div`,{style:{background:`#fafafa`,border:`1px solid #f0f0f0`,borderRadius:6,padding:`10px 12px`,marginBottom:8},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`flex-start`,flexWrap:`wrap`},children:[(0,c.jsx)(o.Form.Item,{label:`Operator`,style:{marginBottom:0,minWidth:140},children:(0,c.jsx)(o.Select,{options:WS,value:e.operator,style:{width:140},onChange:e=>L(t,{operator:e,value:``,compareField:``})})}),e.operator!==JS&&(0,c.jsxs)(o.Form.Item,{label:`Record Field`,style:{marginBottom:0,flex:1,minWidth:180},children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Field from the record (e.g. `,(0,c.jsx)(`code`,{children:`jobRecruitmentStatus`}),`, `,(0,c.jsx)(`code`,{children:`recruiters`}),`)`]})]}),qS.includes(e.operator)&&(0,c.jsxs)(o.Form.Item,{label:`Value`,style:{marginBottom:0,minWidth:180},children:[(0,c.jsx)(o.Select,{showSearch:!0,allowClear:!0,mode:`tags`,maxCount:1,value:e.value?[e.value]:[],options:GS,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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Type a literal, or pick `,(0,c.jsx)(`code`,{children:`{currentUserId}`}),` for the signed-in user.`]})]}),e.operator===JS&&(0,c.jsxs)(o.Form.Item,{label:`Scope Value`,style:{marginBottom:0,minWidth:140},children:[(0,c.jsx)(o.Select,{options:KS,value:e.value||void 0,style:{width:150},placeholder:`Select scope`,onChange:e=>L(t,{value:e})}),(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:11},children:`Current view tab (myJobs / allJobs)`})]}),e.operator===YS&&(0,c.jsxs)(o.Form.Item,{label:`Compare To Field`,style:{marginBottom:0,minWidth:160},children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`e.g. `,(0,c.jsx)(`code`,{children:`submissionCount`})]})]}),(0,c.jsx)(`div`,{style:{paddingTop:22},children:(0,c.jsx)(o.Button,{danger:!0,disabled:y.conditions.length<=1,icon:(0,c.jsx)(s.DeleteOutlined,{}),size:`small`,type:`text`,onClick:()=>z(t)})})]}),(0,c.jsx)(`div`,{style:{marginTop:6},children:(0,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Preview: `,(0,c.jsx)(`code`,{style:{color:`#1677ff`},children:eC(e)})]})})]},t)),(0,c.jsx)(o.Button,{size:`small`,style:{marginBottom:16},onClick:R,children:`+ Add Condition`}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Blocked Row Actions`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(hidden when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`Must match the `,(0,c.jsx)(`b`,{children:`key`}),` of a Row Action (configured in Admin → Row Actions). Common job keys: `,(0,c.jsx)(`code`,{children:`sourceCandidates`}),`, `,(0,c.jsx)(`code`,{children:`quickSubmit`}),`,`,` `,(0,c.jsx)(`code`,{children:`changeStatus`}),`, `,(0,c.jsx)(`code`,{children:`share`}),`, `,(0,c.jsx)(`code`,{children:`addNotes`}),`, `,(0,c.jsx)(`code`,{children:`assign`}),`.`]})]}),(0,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Disabled Row Actions`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(stay visible, greyed out, when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{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,c.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,c.jsxs)(o.Divider,{orientation:`left`,orientationMargin:0,style:{fontSize:13},children:[`Only These Actions Allowed`,(0,c.jsx)(HS,{type:`secondary`,style:{fontSize:12,marginLeft:8},children:`(everything else is hidden when this rule fires)`})]}),(0,c.jsxs)(o.Form.Item,{children:[(0,c.jsx)(o.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,c.jsxs)(HS,{type:`secondary`,style:{fontSize:11},children:[`The `,(0,c.jsx)(`b`,{children:`inverse`}),` of Blocked. Use it for "when this happens, only these remain" — e.g. an inactive job where only `,(0,c.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,c.jsx)(`br`,{}),`Leave it `,(0,c.jsx)(`b`,{children:`empty`}),` for any normal rule — an allow-list that names nothing would hide everything.`]})]})]})})]})}function nC(){return(0,c.jsx)(o.Tabs,{defaultActiveKey:`actions`,className:`admin-config-tabs`,destroyOnHidden:!1,items:[{key:`actions`,label:`Action library`,icon:(0,c.jsx)(s.ThunderboltOutlined,{}),children:(0,c.jsx)(VS,{})},{key:`rules`,label:`Visibility rules`,icon:(0,c.jsx)(s.ApartmentOutlined,{}),children:(0,c.jsx)(tC,{})}]})}var{Text:rC}=o.Typography,iC={name:``,module:``,action:``,clientId:``,description:``,toMail:[],ccMail:[],bccMail:[],subject:``,body:``,isActive:!0},aC=e=>e?._id??e?.id;function oC(e){return String(e??``).trim().replace(/^{{\s*/,``).replace(/\s*}}$/,``).trim().replace(/^\./,``).trim()}function sC(...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 cC({open:t,templateId:n,modules:r,clients:i,onClose:s,onSaved:l}){let[u]=o.Form.useForm(),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)({});async function C(t){if(!t){v([]);return}let n=await e.Vr(t).catch(()=>[]),r=new Map;n.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(){b((await Promise.all((r??[]).map(async t=>{let n=t.value;return(await e.Fr(n).catch(()=>[])).map(e=>{let r=e.value??e.field??e.fieldKey??e.key??e.name,i=e.path??e.value??e.field??e.fieldKey??e.key??e.name;return{key:oC(r),value:oC(i),label:e.label??e.fieldName??e.name??e.value,moduleName:n,moduleLabel:t.label??n}}).filter(e=>e.key&&e.value)}))).flat())}(0,a.useEffect)(()=>{if(!t)return;let e=!1;return queueMicrotask(()=>{g(!0),w().catch(()=>{}),(n?vS(n):Promise.resolve(iC)).then(t=>{if(e)return;let n={...iC,...t,action:t?.action?[t.action]:[],clientId:t?.clientIdStr||(typeof t?.clientId==`string`?t.clientId:``)};u.setFieldsValue(n),f(n.body||``);let r={};(t?.placeholders??t?.placeHolder??[]).forEach(e=>{(e?.holders??[]).forEach(t=>{if(t?.key){let n=oC(t.key);r[n]={moduleName:e.moduleName,value:oC(t.value)}}})}),S(r),C(n.module)}).catch(e=>o.message.error(e?.message||`Could not load template`)).finally(()=>{e||g(!1)})}),()=>{e=!0}},[u,t,n,r]);function T(e){let t=`{{.${e.key}}}`;S(t=>({...t,[e.key]:{moduleName:e.moduleName,value:e.value}})),f(e=>`${e}${e?` `:``}${t}`),o.message.success(`Inserted ${t} from ${e.moduleLabel||e.moduleName}`)}function E(e,t){let n=x[e];if(n?.moduleName&&n?.value)return n;let r=y.filter(t=>t.key===e),i=r.find(e=>e.moduleName===t)??r[0];return i?{moduleName:i.moduleName,value:i.value}:null}async function D(){try{let e=await u.validateFields();if(!d.trim()){o.message.error(`Message body is required`);return}m(!0);let t=sC(e.subject,d),r=new Map;t.forEach(t=>{let n=E(t,e.module);n&&(r.has(n.moduleName)||r.set(n.moduleName,[]),r.get(n.moduleName).push({key:t,value:n.value}))});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,n?await bS(n,a):await yS(a),o.message.success(n?`Template updated`:`Template created`),l()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save template`)}finally{m(!1)}}let O=(0,a.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,c.jsx)(o.Drawer,{open:t,onClose:s,width:`min(920px, 96vw)`,title:n?`Edit email template`:`New email template`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:s,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:p,onClick:D,children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{form:u,layout:`vertical`,initialValues:iC,disabled:h,className:`template-editor-form`,children:[(0,c.jsxs)(`div`,{className:`template-editor-grid`,children:[(0,c.jsx)(o.Form.Item,{name:`name`,label:`Template name`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Candidate introduction`})}),(0,c.jsx)(o.Form.Item,{name:`module`,label:`Module`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{showSearch:!0,optionFilterProp:`label`,options:r,onChange:e=>{u.setFieldValue(`action`,``),C(e)}})}),(0,c.jsx)(o.Form.Item,{name:`action`,label:`Action`,rules:[{required:!0}],tooltip:`Pick a Row Action, or TYPE a system action key. Not every email comes from a row action — the credentials mail sent when an employer's recruiters are provisioned uses "accountCreated", which is raised by a workflow and so never appears in this list.`,children:(0,c.jsx)(o.Select,{showSearch:!0,mode:`tags`,maxCount:1,optionFilterProp:`label`,options:_,placeholder:`Select a row action, or type a system key (e.g. accountCreated)`})}),(0,c.jsx)(o.Form.Item,{name:`clientId`,label:`Client scope (optional)`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,optionFilterProp:`label`,options:i,placeholder:`Available to every client`})})]}),(0,c.jsx)(o.Form.Item,{name:`description`,label:`Description`,children:(0,c.jsx)(o.Input.TextArea,{rows:2})}),(0,c.jsxs)(`div`,{className:`template-editor-grid template-editor-grid--three`,children:[(0,c.jsx)(o.Form.Item,{name:`toMail`,label:`Default To`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,c.jsx)(o.Form.Item,{name:`ccMail`,label:`Default Cc`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})}),(0,c.jsx)(o.Form.Item,{name:`bccMail`,label:`Default Bcc`,children:(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`]})})]}),(0,c.jsx)(o.Form.Item,{name:`subject`,label:`Subject`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Email subject`})}),(0,c.jsx)(o.Form.Item,{label:`Message`,required:!0,children:(0,c.jsx)(e.Sn,{value:d,onChange:f,placeholder:`Write the reusable email body…`})}),(0,c.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,c.jsx)(rC,{strong:!0,children:`All module placeholders`}),(0,c.jsx)(rC,{type:`secondary`,children:`Placeholders from every configured module are available. Click one to append it; its source module is saved automatically.`}),O.map(e=>(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{type:`secondary`,strong:!0,children:e.label||e.moduleName}),(0,c.jsx)(`div`,{className:`template-placeholder-list`,children:e.fields.map(t=>(0,c.jsx)(o.Tooltip,{title:`${t.label||t.key} · ${t.value}`,children:(0,c.jsx)(o.Tag,{color:`blue`,style:{cursor:`pointer`},onClick:()=>T(t),children:`{{.${t.key}}}`})},`${e.moduleName}:${t.key}:${t.value}`))})]},e.moduleName)),!O.length&&(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`No module fields available`})]}),(0,c.jsx)(o.Form.Item,{name:`isActive`,label:`Available in mail composer`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]})})}function lC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(1),[h,g]=(0,a.useState)(20),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)(null),[C,w]=(0,a.useState)(!1),T=(0,a.useMemo)(()=>_.map(e=>({value:e.key??e.module??e.value,label:e.label??e.name??e.key??e.module??e.value})).filter(e=>e.value),[_]);function E(e=p,t=h,r=d){u(!0),_S({offset:(e-1)*t,limit:t,search:r}).then(({items:e,totalCount:t})=>{n(e),i(t)}).catch(e=>o.message.error(e?.message||`Could not load templates`)).finally(()=>u(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{E(1,h,``)})},[]),(0,a.useEffect)(()=>{Promise.all([e.hr(),e.sr({limit:200})]).then(([e,t])=>{v(tb(e).map(({value:e,label:t})=>({key:e,label:t}))),b(t)}).catch(()=>{})},[]);async function D(e,t){let r=aC(e);try{await bS(r,{...e,isActive:t}),n(e=>e.map(e=>aC(e)===r?{...e,isActive:t}:e))}catch(e){o.message.error(e?.message||`Could not update status`)}}async function O(e){try{await xS(e),o.message.success(`Template deleted`),E(1),m(1)}catch(e){o.message.error(e?.message||`Could not delete template`)}}let k=[{title:`Template`,key:`template`,width:300,ellipsis:!0,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell templates-primary-cell`,children:[(0,c.jsx)(rC,{strong:!0,ellipsis:{tooltip:t.name},children:t.name}),(0,c.jsx)(rC,{type:`secondary`,ellipsis:{tooltip:t.description||t.subject},children:t.description||t.subject||`No description`})]})},{title:`Module`,dataIndex:`module`,key:`module`,width:140,ellipsis:!0,responsive:[`sm`],render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,children:e}):`—`},{title:`Action`,dataIndex:`action`,key:`action`,width:180,ellipsis:!0,responsive:[`md`],render:e=>e?(0,c.jsx)(rC,{code:!0,ellipsis:{tooltip:e},children:e}):`—`},{title:`Recipients`,key:`recipients`,width:130,responsive:[`lg`],render:(e,t)=>`${(t.toMail?.length??0)+(t.ccMail?.length??0)+(t.bccMail?.length??0)} defaults`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>D(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{S(aC(t)),w(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this template?`,onConfirm:()=>O(aC(t)),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],A=y.map(e=>({value:e._id??e.id,label:e.clientName??e.name??e._id})).filter(e=>e.value);return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.MailOutlined,{}),title:`Email templates`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{S(null),w(!0)},children:`New template`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(rC,{type:`secondary`,children:`Create reusable, module-aware email content. Modules, actions and placeholders are read from DB configuration.`})]}),(0,c.jsxs)(Z,{title:`${r} template${r===1?``:`s`}`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:()=>E(),children:`Reload`}),children:[(0,c.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),placeholder:`Search templates`,value:d,onChange:e=>{let t=e.target.value;f(t),m(1),E(1,h,t)}})}),(0,c.jsx)(`div`,{className:`templates-table-viewport`,children:(0,c.jsx)(o.Table,{rowKey:aC,columns:k,dataSource:t,loading:l,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:914,y:`calc(100vh - 410px)`},pagination:{current:p,pageSize:h,total:r,showSizeChanger:!0,responsive:!0,onChange:(e,t)=>{m(e),g(t),E(e,t)}}})})]}),(0,c.jsx)(cC,{open:C,templateId:x,modules:T,clients:A,onClose:()=>w(!1),onSaved:()=>{w(!1),E()}})]})}function uC({open:t,signatureId:n,onClose:r,onSaved:i}){let[s,l]=(0,a.useState)(``),[u,d]=(0,a.useState)(``),[f,p]=(0,a.useState)({module:`userSignature`,keys:[]}),[m,h]=(0,a.useState)(!1),[g,_]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!t)return;let e=!1;return queueMicrotask(()=>{_(!0),Promise.all([n?ES(n):Promise.resolve(null),wS()]).then(([t,n])=>{e||(l(t?.signatureName??``),d(t?.signature??``),p(n??{module:`userSignature`,keys:[]}))}).catch(()=>{e||o.message.error(`Could not load signature details`)}).finally(()=>{e||_(!1)})}),()=>{e=!0}},[t,n]);function v(e){let t=`{{.${e.key}}}`;d(e=>`${e}${e?` `:``}${t}`)}async function y(){if(!s.trim())return o.message.error(`Signature name is required`);if(!u.trim())return o.message.error(`Signature content is required`);h(!0);try{let e=sC(u),t=(f.keys??[]).filter(t=>e.has(t.key)).map(e=>({key:e.key,value:e.value})),r={signatureId:n,signatureName:s,signature:u,signatureLogoPath:``,placeHolder:t.length?[{moduleName:f.module||`userSignature`,holders:t}]:[]};n?await OS(r):await DS(r),o.message.success(n?`Signature updated`:`Signature created`),i()}catch(e){o.message.error(e?.message||`Could not save signature`)}finally{h(!1)}}let b=(f.keys??[]).filter(e=>![`Role_id`,`Role_name`,`Reporting_manager`].includes(e.key)),x=(f.keys??[]).filter(e=>[`Role_id`,`Role_name`,`Reporting_manager`].includes(e.key)),S=e=>(0,c.jsx)(`div`,{className:`template-placeholder-list`,children:e.map(e=>(0,c.jsx)(o.Tooltip,{title:`Mongo field: ${e.value}`,children:(0,c.jsx)(o.Tag,{color:`blue`,style:{cursor:`pointer`},onClick:()=>v(e),children:`{{.${e.key}}}`})},e.key))});return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(820px, 96vw)`,title:n?`Edit signature`:`New signature`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:m,onClick:y,children:n?`Update`:`Create`})]}),children:(0,c.jsxs)(o.Form,{layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{label:`Signature name`,required:!0,children:(0,c.jsx)(o.Input,{value:s,onChange:e=>l(e.target.value)})}),(0,c.jsx)(o.Form.Item,{label:`Signature content`,required:!0,children:(0,c.jsx)(e.Sn,{value:u,onChange:d,placeholder:`Create the reusable signature…`})}),(0,c.jsxs)(`div`,{className:`template-placeholder-panel`,children:[(0,c.jsx)(rC,{strong:!0,children:`Signature placeholders`}),(0,c.jsx)(rC,{type:`secondary`,children:`Click a placeholder to add it to the signature. Values resolve from MongoDB users and roles when mail is generated.`}),g?(0,c.jsx)(rC,{type:`secondary`,children:`Loading placeholders…`}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{strong:!0,children:`User details`}),S(b)]}),(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)(rC,{strong:!0,children:`Role details`}),S(x)]}),!f.keys?.length&&(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`No signature placeholders available`})]})]})]})})}function dC(){let[e,t]=(0,a.useState)([]),[n,r]=(0,a.useState)(0),[i,l]=(0,a.useState)(!1),[u,d]=(0,a.useState)(``),[f,p]=(0,a.useState)(1),[m,h]=(0,a.useState)(20),[g,_]=(0,a.useState)(!1),[v,y]=(0,a.useState)(null);function b(e=f,n=m,i=u){l(!0),TS({offset:(e-1)*n,limit:n,search:i}).then(({items:e,totalCount:n})=>{t(e),r(n)}).catch(()=>o.message.error(`Could not load signatures`)).finally(()=>l(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{b(1,m,``)})},[]);async function x(e,n){try{await AS(e.signatureId,n),t(t=>t.map(t=>t.signatureId===e.signatureId?{...t,isActive:n}:t))}catch{o.message.error(`Could not update status`)}}async function S(e){try{await kS(e),o.message.success(`Signature deleted`),p(1),b(1)}catch{o.message.error(`Could not delete signature`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsx)(Z,{icon:(0,c.jsx)(s.MailOutlined,{}),title:`Signature templates`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{y(null),_(!0)},children:`New signature`}),children:(0,c.jsx)(rC,{type:`secondary`,children:`Existing company and user signatures from the shared DB.`})}),(0,c.jsxs)(Z,{title:`${n} signature${n===1?``:`s`}`,children:[(0,c.jsx)(`div`,{className:`admin-config-table-tools`,children:(0,c.jsx)(o.Input,{allowClear:!0,prefix:(0,c.jsx)(s.SearchOutlined,{}),value:u,placeholder:`Search signatures`,onChange:e=>{d(e.target.value),p(1),b(1,m,e.target.value)}})}),(0,c.jsx)(`div`,{className:`templates-table-viewport`,children:(0,c.jsx)(o.Table,{rowKey:`signatureId`,dataSource:e,columns:[{title:`Signature`,dataIndex:`templateName`,key:`name`,width:300,ellipsis:!0,render:e=>(0,c.jsx)(rC,{strong:!0,ellipsis:{tooltip:e},children:e||`Untitled signature`})},{title:`Created`,dataIndex:`createdDt`,key:`created`,width:150,responsive:[`md`],render:e=>e?new Date(e).toLocaleDateString():`—`},{title:`Active`,dataIndex:`isActive`,key:`active`,width:80,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>x(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{y(t.signatureId),_(!0)}}),(0,c.jsx)(o.Popconfirm,{title:`Delete this signature?`,onConfirm:()=>S(t.signatureId),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],loading:i,className:`fg-table`,size:`small`,tableLayout:`fixed`,sticky:!0,scroll:{x:614,y:`calc(100vh - 410px)`},pagination:{current:f,pageSize:m,total:n,responsive:!0,onChange:(e,t)=>{p(e),h(t),b(e,t)}}})})]}),(0,c.jsx)(uC,{open:g,signatureId:v,onClose:()=>_(!1),onSaved:()=>{_(!1),b()}})]})}function fC(){return(0,c.jsx)(o.Tabs,{defaultActiveKey:`email`,className:`admin-config-tabs`,items:[{key:`email`,label:`Email templates`,children:(0,c.jsx)(lC,{})},{key:`signature`,label:`Signatures`,children:(0,c.jsx)(dC,{})}]})}var{Text:pC}=o.Typography,mC={serviceKey:``,label:``,baseUrl:``,authHeader:``,authValue:``,enabled:!0};function hC({open:t,service:n,onClose:r,onSaved:i}){let[s]=o.Form.useForm(),[l,u]=(0,a.useState)(!1);(0,a.useEffect)(()=>{t&&s.setFieldsValue({...mC,...n,authValue:``})},[t,n,s]);async function d(){try{let t=await s.validateFields();u(!0),await e.Kr(t),o.message.success(`AI service saved`),i()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save AI service`)}finally{u(!1)}}return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(560px, 96vw)`,title:n?`Edit AI service`:`New AI service`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:l,onClick:d,children:`Save`})]}),children:(0,c.jsxs)(o.Form,{form:s,layout:`vertical`,initialValues:mC,children:[(0,c.jsx)(o.Form.Item,{name:`serviceKey`,label:`Service Key`,rules:[{required:!0,message:`Service key is required`}],tooltip:`Referenced by an AI Action's Service Key on any form field (e.g. pyOps).`,children:(0,c.jsx)(o.Input,{placeholder:`pyOps`,disabled:!!n,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`label`,label:`Label`,children:(0,c.jsx)(o.Input,{placeholder:`Resume/JD Parsing Service`})}),(0,c.jsx)(o.Form.Item,{name:`baseUrl`,label:`Base URL`,rules:[{required:!0,message:`Base URL is required`}],children:(0,c.jsx)(o.Input,{placeholder:`https://ai.example.com`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`authHeader`,label:`Auth Header (optional)`,children:(0,c.jsx)(o.Input,{placeholder:`x-api-key`,className:`fg-mono-input`})}),(0,c.jsx)(o.Form.Item,{name:`authValue`,label:`Auth Value`,tooltip:`Write-only — leave blank to keep the currently saved value.`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?`Unchanged`:``})}),(0,c.jsx)(o.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})]})})}function gC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null);function p(){i(!0),e.lr().then(e=>n(Array.isArray(e)?e:[])).catch(e=>o.message.error(e?.message||`Could not load AI services`)).finally(()=>i(!1))}(0,a.useEffect)(()=>{queueMicrotask(()=>{p()})},[]);async function m(t,r){try{await e.Kr({...t,enabled:r}),n(e=>e.map(e=>e.serviceKey===t.serviceKey?{...e,enabled:r}:e))}catch(e){o.message.error(e?.message||`Could not update AI service`)}}async function h(t){try{await e.Zn(t),o.message.success(`AI service deleted`),p()}catch(e){o.message.error(e?.message||`Could not delete AI service`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`AI Services`,extra:(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New service`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(pC,{type:`secondary`,children:`Register the AI/automation backends that admin-configured "AI Actions" (Generate/Parse-style buttons on any form field) call. A field's AI Action names a Service Key here — no URL is ever hardcoded in the app.`})]}),(0,c.jsx)(Z,{title:`${t.length} service${t.length===1?``:`s`}`,extra:(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:p,children:`Reload`}),children:(0,c.jsx)(o.Table,{rowKey:`serviceKey`,columns:[{title:`Service`,key:`service`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(pC,{strong:!0,children:t.label||t.serviceKey}),(0,c.jsx)(pC,{type:`secondary`,code:!0,children:t.serviceKey})]})},{title:`Base URL`,dataIndex:`baseUrl`,key:`baseUrl`,ellipsis:!0,render:e=>(0,c.jsx)(pC,{code:!0,ellipsis:{tooltip:e},children:e})},{title:`Auth Header`,dataIndex:`authHeader`,key:`authHeader`,width:140,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,key:`enabled`,width:90,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:e,onChange:e=>m(t,e)})},{title:``,key:`actions`,width:84,fixed:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this AI service?`,onConfirm:()=>h(t.serviceKey),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],dataSource:t,loading:r,className:`fg-table`,size:`small`})}),(0,c.jsx)(hC,{open:l,service:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:_C}=o.Typography,vC={integrationKey:``,label:``,category:`GENERAL`,updateMethod:`MANUAL`,enabled:!0,provider:``,baseUrl:``,authType:`API_KEY`,authHeader:`x-api-key`,authValue:``,clientId:``,clientSecret:``,tokenUrl:``,createPath:``,statusPath:``,testPath:``,webhookSecret:``,targetModule:``,targetField:``,stageMatchField:``,stageMatchValue:``,stageStatusField:``,providerStatusPath:``,providerReferencePath:``,statusMappings:[{providerStatus:``,applicationStatus:``}]},yC=[{label:`API Key`,value:`API_KEY`},{label:`Bearer Token`,value:`BEARER_TOKEN`},{label:`Basic Authentication`,value:`BASIC_AUTH`},{label:`OAuth 2.0 Client Credentials`,value:`OAUTH2_CLIENT_CREDENTIALS`}];function bC(e){let t=Object.fromEntries((e.statusMappings??[]).filter(e=>e?.providerStatus&&e?.applicationStatus).map(e=>[e.providerStatus.trim(),e.applicationStatus.trim()])),n={...e,statusMapping:e.updateMethod===`API`?{targetModule:e.targetModule,targetField:e.targetField,stageMatchField:e.stageMatchField,stageMatchValue:e.stageMatchValue,stageStatusField:e.stageStatusField,providerStatusPath:e.providerStatusPath,providerReferencePath:e.providerReferencePath,values:t}:void 0};return[`statusMappings`,`targetModule`,`targetField`,`stageMatchField`,`stageMatchValue`,`stageStatusField`,`providerStatusPath`,`providerReferencePath`].forEach(e=>delete n[e]),n}function xC({open:t,integration:n,onClose:r,onSaved:i}){let[l]=o.Form.useForm(),[u,d]=(0,a.useState)(!1),[f,p]=(0,a.useState)(!1),m=o.Form.useWatch(`updateMethod`,l),h=o.Form.useWatch(`authType`,l),g=m===`API`,_=h===`OAUTH2_CLIENT_CREDENTIALS`;(0,a.useEffect)(()=>{if(!t)return;let e=n?.statusMapping??{};l.setFieldsValue({...vC,...n,authValue:``,clientSecret:``,webhookSecret:``,targetModule:e.targetModule??``,targetField:e.targetField??``,stageMatchField:e.stageMatchField??``,stageMatchValue:e.stageMatchValue??``,stageStatusField:e.stageStatusField??``,providerStatusPath:e.providerStatusPath??``,providerReferencePath:e.providerReferencePath??``,statusMappings:Object.entries(e.values??{}).map(([e,t])=>({providerStatus:e,applicationStatus:t})).concat(Object.keys(e.values??{}).length?[]:[{providerStatus:``,applicationStatus:``}])})},[l,n,t]);async function v(){try{let t=bC(await l.validateFields());d(!0),await e.Xr(t),o.message.success(`Integration saved`),i()}catch(e){e?.errorFields||o.message.error(e?.message||`Could not save integration`)}finally{d(!1)}}async function y(){try{let t=await l.validateFields([`integrationKey`,`baseUrl`,`testPath`,`authType`,`authHeader`,`authValue`,`clientId`,`clientSecret`,`tokenUrl`]);p(!0);let n=await e.ni(bC({...l.getFieldsValue(!0),...t}));o.message.success(n?.message||`Connection successful${n?.statusCode?` (${n.statusCode})`:``}`)}catch(e){e?.errorFields||o.message.error(e?.message||`Connection test failed`)}finally{p(!1)}}return(0,c.jsx)(o.Drawer,{open:t,onClose:r,width:`min(680px, 96vw)`,title:n?`Edit ${n.label}`:`Add Integration`,destroyOnClose:!0,extra:(0,c.jsxs)(o.Space,{children:[g&&(0,c.jsx)(o.Button,{loading:f,onClick:y,children:`Test Connection`}),(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:u,onClick:v,children:`Save`})]}),children:(0,c.jsxs)(o.Form,{form:l,layout:`vertical`,initialValues:vC,children:[(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`label`,label:`Integration Name`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Background Check`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`integrationKey`,label:`Integration Key`,rules:[{required:!0},{pattern:/^[a-z][a-z0-9_-]{1,63}$/,message:`Use lowercase letters, numbers, _ or -`}],children:(0,c.jsx)(o.Input,{placeholder:`bgc`,disabled:!!n})})})]}),(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`category`,label:`Category`,children:(0,c.jsx)(o.Select,{options:[{value:`ONBOARDING`,label:`Onboarding`},{value:`HRMS`,label:`HRMS`},{value:`PAYROLL`,label:`Payroll`},{value:`ESIGNATURE`,label:`E-Signature`},{value:`VMS`,label:`VMS`},{value:`GENERAL`,label:`General / Custom`}]})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`enabled`,label:`Enabled`,valuePropName:`checked`,children:(0,c.jsx)(o.Switch,{})})})]}),(0,c.jsx)(o.Form.Item,{name:`updateMethod`,label:`Update Method`,rules:[{required:!0}],children:(0,c.jsx)(o.Radio.Group,{optionType:`button`,buttonStyle:`solid`,options:[{label:`Manual Update`,value:`MANUAL`},{label:`API Integration`,value:`API`}]})}),!g&&(0,c.jsx)(o.Alert,{type:`info`,showIcon:!0,message:`This integration will use manual updates.`}),g&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o.Alert,{type:n?.credentialsConfigured?`success`:`warning`,showIcon:!0,message:n?.credentialsConfigured?`Credentials configured`:`Credentials required`,description:`Secrets are write-only. Leave a secret blank while editing to keep its current value.`,style:{marginBottom:16}}),(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`provider`,label:`Provider`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`Provider name`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`baseUrl`,label:`API Base URL`,rules:[{required:!0,type:`url`}],children:(0,c.jsx)(o.Input,{placeholder:`https://api.provider.com`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`createPath`,label:`Create/Submit Path`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`/v1/requests`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`statusPath`,label:`Status Path`,rules:[{required:!0}],tooltip:`Use {referenceId} as a placeholder.`,children:(0,c.jsx)(o.Input,{placeholder:`/v1/requests/{referenceId}`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`testPath`,label:`Test Connection Path`,rules:[{required:!0}],tooltip:`A safe GET endpoint used only to validate URL and credentials.`,children:(0,c.jsx)(o.Input,{placeholder:`/v1/health`})})})]}),(0,c.jsx)(o.Form.Item,{name:`authType`,label:`Authentication Type`,rules:[{required:!0}],children:(0,c.jsx)(o.Select,{options:yC})}),_?(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`clientId`,label:`Client ID`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`clientSecret`,label:`Client Secret`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.credentialsConfigured?`Unchanged`:`Required`})})}),(0,c.jsx)(o.Col,{xs:24,children:(0,c.jsx)(o.Form.Item,{name:`tokenUrl`,label:`Token URL`,rules:[{required:!0,type:`url`}],children:(0,c.jsx)(o.Input,{})})})]}):(0,c.jsxs)(o.Row,{gutter:16,children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`authHeader`,label:`Authentication Header`,children:(0,c.jsx)(o.Input,{placeholder:`x-api-key`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`authValue`,label:`API Credential`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.credentialsConfigured?`Unchanged`:`Required`})})})]}),(0,c.jsx)(o.Form.Item,{name:`webhookSecret`,label:`Webhook Signing Secret (optional)`,children:(0,c.jsx)(o.Input.Password,{placeholder:n?.webhookConfigured?`Unchanged`:``})}),(0,c.jsxs)(Z,{title:`Status Mapping`,children:[(0,c.jsx)(_C,{type:`secondary`,children:`Map a status from the provider response into a module field or a matching workflow stage.`}),(0,c.jsxs)(o.Row,{gutter:16,style:{marginTop:16},children:[(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`targetModule`,label:`Target Module`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`onboarding`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`targetField`,label:`Target Field`,rules:[{required:!0}],tooltip:`Use stages for a stage-array update, or a direct field name.`,children:(0,c.jsx)(o.Input,{placeholder:`stages`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`providerStatusPath`,label:`Provider Status JSON Path`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`data.status`})})}),(0,c.jsx)(o.Col,{xs:24,md:12,children:(0,c.jsx)(o.Form.Item,{name:`providerReferencePath`,label:`Provider Reference JSON Path`,children:(0,c.jsx)(o.Input,{placeholder:`data.id`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageMatchField`,label:`Stage Match Field`,children:(0,c.jsx)(o.Input,{placeholder:`stageCode`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageMatchValue`,label:`Stage Match Value`,children:(0,c.jsx)(o.Input,{placeholder:`BGC`})})}),(0,c.jsx)(o.Col,{xs:24,md:8,children:(0,c.jsx)(o.Form.Item,{name:`stageStatusField`,label:`Stage Status Field`,children:(0,c.jsx)(o.Input,{placeholder:`status`})})})]}),(0,c.jsx)(_C,{strong:!0,children:`Status Values`}),(0,c.jsx)(o.Form.List,{name:`statusMappings`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(o.Space,{direction:`vertical`,style:{width:`100%`,marginTop:8},children:[e.map(e=>(0,c.jsxs)(o.Row,{gutter:12,children:[(0,c.jsx)(o.Col,{flex:`1 1 220px`,children:(0,c.jsx)(o.Form.Item,{...e,name:[e.name,`providerStatus`],rules:[{required:!0,message:`Provider status is required`}],children:(0,c.jsx)(o.Input,{placeholder:`Provider status, e.g. completed`})})}),(0,c.jsx)(o.Col,{flex:`1 1 220px`,children:(0,c.jsx)(o.Form.Item,{...e,name:[e.name,`applicationStatus`],rules:[{required:!0,message:`Application status is required`}],children:(0,c.jsx)(o.Input,{placeholder:`Zinnext status, e.g. CLEARED`})})}),(0,c.jsx)(o.Col,{children:(0,c.jsx)(o.Button,{danger:!0,onClick:()=>n(e.name),children:`Remove`})})]},e.key)),(0,c.jsx)(o.Button,{type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({providerStatus:``,applicationStatus:``}),children:`Add Status Mapping`})]})})]})]})]})})}function SC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null),p=(0,a.useCallback)(()=>{i(!0),e.wr().then(e=>n(Array.isArray(e)?e:[])).catch(e=>o.message.error(e?.message||`Could not load integrations`)).finally(()=>i(!1))},[]);(0,a.useEffect)(()=>{queueMicrotask(p)},[p]);async function m(t){try{await e.$n(t),o.message.success(`Integration deleted`),p()}catch(e){o.message.error(e?.message||`Could not delete integration`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ApiOutlined,{}),title:`Integrations`,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`Add Integration`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(_C,{type:`secondary`,children:`Configure reusable manual or API integrations for onboarding, payroll, e-signature, VMS, HRMS, and custom workflows.`})]}),(0,c.jsx)(Z,{title:`${t.length} integration${t.length===1?``:`s`}`,children:(0,c.jsx)(o.Table,{rowKey:`integrationKey`,columns:[{title:`Integration`,key:`name`,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-config-primary-cell`,children:[(0,c.jsx)(_C,{strong:!0,children:t.label}),(0,c.jsx)(_C,{type:`secondary`,code:!0,children:t.integrationKey})]})},{title:`Category`,dataIndex:`category`,width:130,render:e=>e||`GENERAL`},{title:`Method`,dataIndex:`updateMethod`,width:110,render:e=>(0,c.jsx)(o.Tag,{color:e===`API`?`blue`:`default`,children:e})},{title:`Provider`,dataIndex:`provider`,render:e=>e||`—`},{title:`Enabled`,dataIndex:`enabled`,width:90,render:e=>(0,c.jsx)(o.Tag,{color:e?`green`:`default`,children:e?`Yes`:`No`})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{type:`text`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}}),(0,c.jsx)(o.Popconfirm,{title:`Delete this integration?`,onConfirm:()=>m(t.integrationKey),children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],dataSource:t,loading:r,size:`small`,className:`fg-table`})}),(0,c.jsx)(xC,{open:l,integration:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}var{Text:$}=o.Typography;function CC({rows:e,onChange:t,keyPlaceholder:n,valuePlaceholder:r}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,c.jsxs)(`div`,{children:[e.map((e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(`span`,{style:{color:`#94a3b8`,alignSelf:`center`},children:`→`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`})]})}function wC({rows:e,onChange:t,keyPlaceholder:n=`field`,valuePlaceholder:r=`literal or {{field.path}}`}){let i=(n,r)=>t(e.map((e,t)=>t===n?{...e,...r}:e)),a=n=>t(e.filter((e,t)=>t!==n));return(0,c.jsxs)(`div`,{children:[e.map((e,t)=>(0,c.jsxs)(`div`,{style:{display:`flex`,gap:6,marginTop:6},children:[(0,c.jsx)(o.Input,{size:`small`,style:{flex:1},placeholder:n,value:e.key,onChange:e=>i(t,{key:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Input,{size:`small`,style:{flex:1.6},placeholder:r,value:e.value,onChange:e=>i(t,{value:e.target.value}),className:`fg-mono-input`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>a(t)})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),style:{marginTop:6},onClick:()=>t([...e,{key:``,value:``}]),children:`Add`}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:4},children:[`Values are read as JSON when possible (true, 123, ["a","b"]) — otherwise kept as literal text. Use `,(0,c.jsx)(`code`,{children:`{{field.path}}`}),` to reference a payload field, or `,(0,c.jsx)(`code`,{children:`{{now}}`}),` for the current time.`]})]})}function TC(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:String(t??``)}))}function EC(e){let t={};for(let n of e??[])n.key?.trim()&&(t[n.key.trim()]=n.value??``);return t}function DC(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)}))}function OC(e){let t={};for(let n of e??[]){if(!n.key?.trim())continue;let e=n.value;if(typeof e==`string`){let t=e.trim();if(t!==``)try{e=JSON.parse(t)}catch{}}t[n.key.trim()]=e}return t}function kC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceModule:``,sourceIdField:``,required:!1,...t??{},fieldMapRows:TC(t?.fieldMap)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.DatabaseOutlined,{}),` `,t?`Edit Denormalize Rule`:`New Denormalize Rule`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceModule?.trim())return o.message.error(`Source module is required`);if(!i.sourceIdField?.trim())return o.message.error(`Source id field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:EC(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source module`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`job`,value:i.sourceModule??``,onChange:e=>u(`sourceModule`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source id field (on THIS payload)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`jobId`,value:i.sourceIdField??``,onChange:e=>u(`sourceIdField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!i.required,onChange:e=>u(`required`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Required — block the write if the source record can't be found`})]}),(0,c.jsxs)(`div`,{style:{marginTop:16},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source field → this payload's field)`}),(0,c.jsx)(CC,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`jobTitle`,valuePlaceholder:`jobTitle`})]})]})})}function AC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceField:``,targetField:``,sourceCollection:``,idField:``,idOutputKey:``,stampNow:``,...t??{},fieldMapRows:TC(t?.fieldMap)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:640,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ApartmentOutlined,{}),` `,t?`Edit Array Enrichment`:`New Array Enrichment`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return o.message.error(`Source field is required`);if(!i.targetField?.trim())return o.message.error(`Target field is required`);let{fieldMapRows:e,...t}=i;r({...t,fieldMap:EC(e)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (array of ids on this payload)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruitersData`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Target field (enriched array written here)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruiters`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source collection`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`users (default)`,value:i.sourceCollection??``,onChange:e=>u(`sourceCollection`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Id field on that collection`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`legacyUserId (default)`,value:i.idField??``,onChange:e=>u(`idField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:16},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Field map (source collection field → output key)`}),(0,c.jsx)(CC,{rows:i.fieldMapRows??[],onChange:e=>u(`fieldMapRows`,e),keyPlaceholder:`firstName`,valuePlaceholder:`recruiterName`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also write the matched id as`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruiterId`,value:i.idOutputKey??``,onChange:e=>u(`idOutputKey`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Also stamp the current time as`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`assignedDateTime`,value:i.stampNow??``,onChange:e=>u(`stampNow`,e.target.value),className:`fg-mono-input`})]})]})]})})}function jC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({sourceField:``,targetField:``,uploadedFileNameField:``,uniqueNameField:``,uploadedAtField:``,uploadedByField:``,arrayMode:!1,nameFromField:``,nameOutputField:``,historyField:``,historySnapshotKey:``,historyReason:``,...t??{},staticFieldRows:TC(t?.staticFields),arrayFieldNameRows:TC(t?.arrayFieldNames)})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:760,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.DatabaseOutlined,{}),` `,t?`Edit File Field Map`:`New File Field Map`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.sourceField?.trim())return o.message.error(`Source field (the multipart upload key) is required`);if(!i.targetField?.trim())return o.message.error(`Target field is required`);let{staticFieldRows:e,arrayFieldNameRows:t,...n}=i;r({...n,staticFields:EC(e),arrayFieldNames:EC(t)})},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Turns one uploaded file field into a nested object (or array of objects) instead of a flat S3 path string — for schemas like a candidate's resume/passport/visa that store location + filename + who/when as sub-fields.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Source field (multipart upload key)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume`,value:i.sourceField??``,onChange:e=>u(`sourceField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Target field `,i.arrayMode?`(array)`:`(location sub-field)`]}),(0,c.jsx)(o.Input,{size:`small`,placeholder:i.arrayMode?`documents`:`resume.location`,value:i.targetField??``,onChange:e=>u(`targetField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!i.arrayMode,onChange:e=>u(`arrayMode`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Array mode — every uploaded file becomes one element (e.g. "documents")`})]}),i.arrayMode?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Sub-field names (location / uploadedFileName / uniqueName → this schema's names)`}),(0,c.jsx)(CC,{rows:i.arrayFieldNameRows??[],onChange:e=>u(`arrayFieldNameRows`,e),keyPlaceholder:`location`,valuePlaceholder:`documentCopyLocation`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Take each element's display name from (payload array field)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documents`,value:i.nameFromField??``,onChange:e=>u(`nameFromField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...reading its field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documentName`,value:i.nameOutputField??``,onChange:e=>u(`nameOutputField`,e.target.value),className:`fg-mono-input`})]})]})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Original filename field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedFileName`,value:i.uploadedFileNameField??``,onChange:e=>u(`uploadedFileNameField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Unique name field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uniqueName`,value:i.uniqueNameField??``,onChange:e=>u(`uniqueNameField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-at field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedAt`,value:i.uploadedAtField??``,onChange:e=>u(`uploadedAtField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Uploaded-by field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume.uploadedBy`,value:i.uploadedByField??``,onChange:e=>u(`uploadedByField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Static fields (literal value written alongside the upload)`}),(0,c.jsx)(CC,{rows:i.staticFieldRows??[],onChange:e=>u(`staticFieldRows`,e),keyPlaceholder:`resume.source`,valuePlaceholder:`candidate`})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Append a snapshot to (history array field)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resumeHistory`,value:i.historyField??``,onChange:e=>u(`historyField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...under snapshot key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`resume`,value:i.historySnapshotKey??``,onChange:e=>u(`historySnapshotKey`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`...with reason`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`Initial resume upload`,value:i.historyReason??``,onChange:e=>u(`historyReason`,e.target.value),className:`fg-mono-input`})]})]})]})]})})}function MC({open:e,rule:t,onClose:n,onSave:r}){let[i,l]=(0,a.useState)(()=>({name:``,seedField:``,direction:`up`,stopRole:0,includeSeed:!0,...t??{}})),u=(e,t)=>l(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:n,width:620,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ApartmentOutlined,{}),` `,t?`Edit Hierarchy Expansion`:`New Hierarchy Expansion`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:n,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!i.name?.trim())return o.message.error(`Name is required — this is how RelatedUpdates/Notify reference the result`);if(!/^[a-zA-Z0-9_]+$/.test(i.name))return o.message.error(`Name: letters, numbers, underscores only`);r(i)},children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Name`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`chain`,value:i.name??``,onChange:e=>u(`name`,e.target.value),className:`fg-mono-input`}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:11},children:[`Referenced as `,(0,c.jsx)(`code`,{children:`{{hierarchy.`+(i.name||`name`)+`}}`})]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Seed field (blank = the caller)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`recruitersData`,value:i.seedField??``,onChange:e=>u(`seedField`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Direction`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:i.direction||`up`,onChange:e=>u(`direction`,e),options:[{value:`up`,label:`Up — toward admin (reporting chain)`},{value:`down`,label:`Down — toward subordinates (team)`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Stop at role id (up only, 0 = walk to the top)`}),(0,c.jsx)(o.InputNumber,{size:`small`,style:{width:`100%`},min:0,value:i.stopRole??0,onChange:e=>u(`stopRole`,e??0),disabled:i.direction!==`up`})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:i.includeSeed!==!1,onChange:e=>u(`includeSeed`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Include the seed user(s) themselves in the result`})]})]})})}function NC({open:e,rule:t,hierarchyNames:n,onClose:r,onSave:i}){let[l,u]=(0,a.useState)(()=>({collectionName:``,targetModule:``,matchField:``,scopeTenant:!1,forEach:``,insertMode:!!(t?.insertIfMissing&&Object.keys(t.insertIfMissing).length),...t??{},extraFilterRows:DC(t?.extraFilter),pullRows:DC(t?.pull),pushRows:DC(t?.push),setRows:DC(t?.set),setIfNonBlankRows:DC(t?.setIfNonBlank),insertIfMissingRows:DC(t?.insertIfMissing)})),d=(e,t)=>u(n=>({...n,[e]:t})),f=()=>{if(!l.collectionName?.trim()&&!l.targetModule?.trim())return o.message.error(`Set either a collection name or a target module`);let{extraFilterRows:e,pullRows:t,pushRows:n,setRows:r,setIfNonBlankRows:a,insertIfMissingRows:s,insertMode:c,...u}=l;i({...u,extraFilter:OC(e),pull:c?{}:OC(t),push:c?{}:OC(n),set:c?{}:OC(r),setIfNonBlank:c?{}:OC(a),insertIfMissing:c?OC(s):{}})},p=(n??[]).map(e=>({value:`hierarchy.${e}`,label:`{{hierarchy.${e}}}`}));return(0,c.jsx)(o.Modal,{open:e,onCancel:r,width:820,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ThunderboltOutlined,{}),` `,t?`Edit Related Update`:`New Related Update`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:f,children:`Apply`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsx)(`div`,{className:`fg-form-section-label`,children:`Target`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Collection name (used verbatim)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`hiringProgress`,value:l.collectionName??``,onChange:e=>d(`collectionName`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`— or — target module`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`job`,value:l.targetModule??``,onChange:e=>d(`targetModule`,e.target.value),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Match field (this payload's field holding the target _id)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`jobId (blank for a tenant-scoped board)`,value:l.matchField??``,onChange:e=>d(`matchField`,e.target.value),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Repeat once per element of (ForEach)`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},allowClear:!0,showSearch:!0,placeholder:`e.g. {{hierarchy.chain}}`,value:l.forEach||void 0,onChange:e=>d(`forEach`,e??``),options:p})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:14},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!l.scopeTenant,onChange:e=>d(`scopeTenant`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Scope filter to the caller's tenant/business/businessUnit`})]}),(0,c.jsxs)(`div`,{style:{marginTop:14},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Extra filter (merged into the match filter)`}),(0,c.jsx)(wC,{rows:l.extraFilterRows??[],onChange:e=>d(`extraFilterRows`,e),keyPlaceholder:`recruiterId`,valuePlaceholder:`{"$in":"{{hierarchy.chain}}"}`})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:18},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!l.insertMode,onChange:e=>d(`insertMode`,e)}),(0,c.jsx)($,{style:{fontSize:13},children:`Insert-only-if-missing (seed a new document instead of updating an existing one)`})]}),l.insertMode?(0,c.jsxs)(`div`,{style:{marginTop:10},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Document to insert when the filter matches nothing`}),(0,c.jsx)(wC,{rows:l.insertIfMissingRows??[],onChange:e=>d(`insertIfMissingRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})]}):(0,c.jsx)(o.Tabs,{size:`small`,style:{marginTop:10},items:[{key:`pull`,label:`Pull`,children:(0,c.jsx)(wC,{rows:l.pullRows??[],onChange:e=>d(`pullRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"candidateId":"{{applicantId}}"}`})},{key:`push`,label:`Push`,children:(0,c.jsx)(wC,{rows:l.pushRows??[],onChange:e=>d(`pushRows`,e),keyPlaceholder:`submitted`,valuePlaceholder:`{"status":"{{submissionStatus}}"}`})},{key:`set`,label:`Set`,children:(0,c.jsx)(wC,{rows:l.setRows??[],onChange:e=>d(`setRows`,e),keyPlaceholder:`hiringProgressJobStatus`,valuePlaceholder:`"unread"`})},{key:`setIfNonBlank`,label:`Set if non-blank`,children:(0,c.jsx)(wC,{rows:l.setIfNonBlankRows??[],onChange:e=>d(`setIfNonBlankRows`,e),keyPlaceholder:`resume.location`,valuePlaceholder:`{{resume.location}}`})}]})]})})}function PC({icon:e,title:t,description:n,rules:r,columns:i,onAdd:a,onEdit:l,onDelete:u}){return(0,c.jsxs)(Z,{title:(0,c.jsxs)(`span`,{children:[e,` `,t]}),extra:(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:a,children:`Add`}),styles:{body:{paddingTop:8}},children:[n&&(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:n}),(0,c.jsx)(o.Table,{rowKey:(e,t)=>t,dataSource:r,columns:[...i,{title:``,key:`actions`,width:80,align:`right`,render:(e,t,n)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>l(n,t)})}),(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>u(n)})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`Not configured`})}})]})}var FC={sequence:null,duplicateCheck:null,fileVersioning:null,denormalizations:[],arrayEnrichments:[],fileFieldMaps:[],sanitizeFields:[],defaults:{},hierarchyExpands:[],relatedUpdates:[],notify:null,cacheInvalidate:[]};function IC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(``),[d,f]=(0,a.useState)({storage:`mongo`}),[p,m]=(0,a.useState)(`mongo`),[h,g]=(0,a.useState)(FC),[_,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)(!1),[x,S]=(0,a.useState)(``),[C,w]=(0,a.useState)(null),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)(null),[k,A]=(0,a.useState)(null),[j,M]=(0,a.useState)(null);(0,a.useEffect)(()=>{e.hr().then(e=>{let t=tb(e).map(({value:e,label:t})=>({key:e,label:t}));n(t),t.length&&u(t[0].key)}).catch(()=>n([])).finally(()=>i(!1))},[]),(0,a.useEffect)(()=>{if(!l)return;let t=!1;return(async()=>{v(!0),S(``);try{let n=await e.jr(l);if(t)return;let r=n.gateway??{storage:`mongo`};f(r),m(r.storage||`mongo`),g({...FC,...n.strategies??{}})}catch(e){t||S(e?.message||`Failed to load automations`)}finally{t||v(!1)}})(),()=>{t=!0}},[l]);let N=(0,a.useMemo)(()=>(h.hierarchyExpands??[]).map(e=>e.name).filter(Boolean),[h.hierarchyExpands]);function P(e,t){g(n=>({...n,[e]:t}))}function F(e,t){g(n=>{let r=n.duplicateCheck??{},i=[...r.stages??[]];return i[e]=t,{...n,duplicateCheck:{...r,stages:i}}})}function I(){b(!0),e.Zr(l,{gateway:d,strategies:{...h,denormalizations:h.denormalizations?.length?h.denormalizations:void 0,arrayEnrichments:h.arrayEnrichments?.length?h.arrayEnrichments:void 0,fileFieldMaps:h.fileFieldMaps?.length?h.fileFieldMaps:void 0,sanitizeFields:h.sanitizeFields?.length?h.sanitizeFields:void 0,hierarchyExpands:h.hierarchyExpands?.length?h.hierarchyExpands:void 0,relatedUpdates:h.relatedUpdates?.length?h.relatedUpdates:void 0,cacheInvalidate:h.cacheInvalidate?.length?h.cacheInvalidate:void 0,defaults:Object.keys(h.defaults??{}).length?h.defaults:void 0}}).then(()=>{m(d.storage||`mongo`),o.message.success(`Automations saved`)}).catch(e=>o.message.error(e?.message||`Could not save automations`)).finally(()=>b(!1))}function L(){if((d.storage||`mongo`)!==p){o.Modal.confirm({title:`Change how this module persists writes?`,content:`You're switching ${l} from "${p}" to "${d.storage}". `+(d.storage===`mongo`?`This module will stop calling its downstream service and this gateway will own the write + every Strategy below.`:`This module will stop using the Strategies below and go back to calling its downstream service.`)+` Make sure the downstream service / e2e checks are ready before confirming.`,okText:`Confirm cutover`,okButtonProps:{danger:!0},onOk:I});return}I()}let R=[{title:`Source module`,dataIndex:`sourceModule`,key:`sourceModule`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Source id field`,dataIndex:`sourceIdField`,key:`sourceIdField`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,c.jsx)(o.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})},{title:`Required`,dataIndex:`required`,key:`required`,width:90,render:e=>e?(0,c.jsx)(o.Tag,{color:`volcano`,children:`Required`}):(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`optional`})}],z=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`From collection`,key:`coll`,render:(e,t)=>t.sourceCollection||`users`},{title:`Fields`,key:`fields`,render:(e,t)=>(0,c.jsx)(o.Badge,{count:Object.keys(t.fieldMap??{}).length,showZero:!0,color:`var(--color-brand)`})}],B=[{title:`Source field`,dataIndex:`sourceField`,key:`sourceField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Target field`,dataIndex:`targetField`,key:`targetField`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Mode`,dataIndex:`arrayMode`,key:`arrayMode`,width:100,render:e=>e?(0,c.jsx)(o.Tag,{color:`blue`,children:`Array`}):(0,c.jsx)(o.Tag,{children:`Single`})},{title:`History`,dataIndex:`historyField`,key:`historyField`,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`—`})}],ee=[{title:`Name`,dataIndex:`name`,key:`name`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:`{{hierarchy.`+e+`}}`})},{title:`Seed field`,dataIndex:`seedField`,key:`seedField`,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`caller`})},{title:`Direction`,dataIndex:`direction`,key:`direction`,render:e=>(0,c.jsx)(o.Tag,{color:e===`down`?`blue`:`purple`,children:e===`down`?`Down — team`:`Up — chain`})},{title:`Stop role`,dataIndex:`stopRole`,key:`stopRole`,width:90,render:e=>e||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`top`})}],V=[{title:`Target`,key:`target`,render:(e,t)=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:t.collectionName||t.targetModule})},{title:`Match`,key:`match`,render:(e,t)=>t.matchField||(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`tenant-scoped`})},{title:`For each`,key:`forEach`,render:(e,t)=>t.forEach?(0,c.jsx)(o.Tag,{color:`geekblue`,children:`{{${t.forEach}}}`}):(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`once`})},{title:`Mode`,key:`mode`,render:(e,t)=>Object.keys(t.insertIfMissing??{}).length?(0,c.jsx)(o.Tag,{color:`green`,children:`Insert if missing`}):(0,c.jsx)(o.Tag,{children:`Update`})}],H=t.map(e=>({key:e.key,label:e.label}));return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`Automations`,extra:(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:y,disabled:!l,onClick:L,children:`Save Automations`}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)($,{type:`secondary`,style:{fontSize:13},children:`Config-driven side-effects the common CRUD gateway runs around a create — reference ids, duplicate checks, cross-module field snapshots, reporting-chain hierarchy expansion, board updates, notifications, cache invalidation. Nothing here is module-specific: the same engine serves every module.`})]}),(0,c.jsx)(Z,{styles:{body:{paddingTop:8}},children:(0,c.jsxs)(o.Spin,{spinning:r,children:[(0,c.jsx)(o.Tabs,{activeKey:l,onChange:u,items:H.map(e=>({...e,children:null})),className:`admin-module-tabs`}),x&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:x,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:_,children:[(0,c.jsxs)(Z,{title:`Gateway`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Selects how a write to this module persists. "Proxy" forwards to a downstream microservice (which owns every side-effect below itself). "Mongo" makes THIS gateway own the write and run every Strategy configured below.`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Storage`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:d.storage||`mongo`,onChange:e=>f(t=>({...t,storage:e})),options:[{value:`mongo`,label:`Mongo — this gateway owns the write`},{value:`proxy`,label:`Proxy — forward to a downstream service`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`File field key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`file`,value:d.fileKey??``,onChange:e=>f(t=>({...t,fileKey:e.target.value})),className:`fg-mono-input`})]})]}),d.storage===`proxy`&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL env var`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`JOBS_SERVICE_URL`,value:d.baseUrlEnv??``,onChange:e=>f(t=>({...t,baseUrlEnv:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Base URL (fallback)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`http://...`,value:d.baseUrl??``,onChange:e=>f(t=>({...t,baseUrl:e.target.value})),className:`fg-mono-input`})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginTop:12},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Create path`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/jobs`,value:d.createPath??``,onChange:e=>f(t=>({...t,createPath:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update path (%s = id)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`/v1/edit/%s`,value:d.updatePath??``,onChange:e=>f(t=>({...t,updatePath:e.target.value})),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Update method`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:d.updateMethod||`PUT`,onChange:e=>f(t=>({...t,updateMethod:e})),options:[`PUT`,`POST`,`PATCH`].map(e=>({value:e,label:e}))})]})]})]})]}),(0,c.jsxs)(Z,{title:`Reference ID (Sequence)`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.sequence,onChange:e=>P(`sequence`,e?{field:``,prefix:``,counterKey:``}:null)}),(0,c.jsxs)($,{style:{fontSize:13},children:[`Generate a "`,`{prefix}{n}`,`" reference id on create`]})]}),h.sequence&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Payload field`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`submissionId`,value:h.sequence.field??``,onChange:e=>P(`sequence`,{...h.sequence,field:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Prefix`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`sub`,value:h.sequence.prefix??``,onChange:e=>P(`sequence`,{...h.sequence,prefix:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counter key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`submissions`,value:h.sequence.counterKey??``,onChange:e=>P(`sequence`,{...h.sequence,counterKey:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,c.jsxs)(Z,{title:`Check for someone already on file`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Before a new record is saved, look for one that already matches. This is what stops the same person being added twice under slightly different details.`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.duplicateCheck,onChange:e=>P(`duplicateCheck`,e?{stages:[],policy:`prompt`,displayFields:[],message:``}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Check before saving a new record`})]}),h.duplicateCheck&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:6},children:[(0,c.jsx)(`b`,{children:`Checks run in order, top first, and stop at the first match.`}),` Put your most certain check first — matching an email or a phone number is near proof; matching a name alone is only a maybe, so it belongs lower down.`]}),(h.duplicateCheck.stages??[]).map((e,t)=>(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:8,alignItems:`flex-end`},children:[(0,c.jsxs)(`div`,{style:{flex:1.6},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12},children:[`Check `,t+1,` — compare these`]}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`email, contactNumber`,value:e.fields??[],onChange:n=>F(t,{...e,fields:n})})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Counts as a match when`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:e.match??`all`,onChange:n=>F(t,{...e,match:n}),options:[{value:`any`,label:`Any one of them matches`},{value:`all`,label:`All of them match`}]})]}),(0,c.jsxs)(`div`,{style:{flex:.8},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How sure is it?`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:e.weight??`strong`,onChange:n=>F(t,{...e,weight:n}),options:[{value:`strong`,label:`Almost certainly the same`},{value:`weak`,label:`Possibly the same`}]})]}),(0,c.jsxs)(`div`,{style:{flex:2},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`What to tell the user`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`A candidate with this email already exists — {name}, last updated {age}.`,value:e.message??``,onChange:n=>F(t,{...e,message:n.target.value})})]}),(0,c.jsx)(o.Button,{size:`small`,danger:!0,type:`text`,onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:(h.duplicateCheck.stages??[]).filter((e,n)=>n!==t)}),children:`Remove`})]},t)),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,style:{marginBottom:12},onClick:()=>P(`duplicateCheck`,{...h.duplicateCheck,stages:[...h.duplicateCheck.stages??[],{fields:[],match:`any`,weight:`strong`}]}),children:`Add another check`}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`When a match is found`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:h.duplicateCheck.policy??`prompt`,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,policy:e}),options:[{value:`prompt`,label:`Ask, and offer to update the existing one`},{value:`block`,label:`Refuse to save, and name the existing one`}]})]}),(0,c.jsxs)(`div`,{style:{flex:1.2},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which details identify the record`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.duplicateCheck.displayFields??[],onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,displayFields:e})})]})]}),(0,c.jsx)(`div`,{className:`fg-field-meta-row`,style:{marginTop:10},children:(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where to open the existing record`}),(0,c.jsx)(o.Input,{size:`small`,className:`fg-mono-input`,placeholder:`/candidate/edit/:id`,value:h.duplicateCheck.editRoute??``,onChange:e=>P(`duplicateCheck`,{...h.duplicateCheck,editRoute:e.target.value})})]})}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[`The page that opens when someone chooses to update the record you already have. Use `,(0,c.jsx)(`b`,{children:`:id`}),` where the record's id goes. This has to be filled in — it cannot be worked out, because addresses follow no single pattern (this app uses `,(0,c.jsx)(`code`,{children:`/candidate/edit/:id`}),` but `,(0,c.jsx)(`code`,{children:`/clients/edit/:id`}),`). Left blank, the dialog still appears and simply does not navigate, rather than sending anyone to a page that does not exist.`]}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:8},children:[`In any message you can use `,(0,c.jsx)(`b`,{children:`{name}`}),` for the matched record and`,(0,c.jsxs)(`b`,{children:[` `,`{age}`]}),` for how long ago it was last touched ("about 2 months ago"). `,(0,c.jsx)(`b`,{children:`{updatedOn}`}),` gives the date instead. Only the details listed above are shown — nothing else about the record is revealed.`]})]})]}),(0,c.jsxs)(Z,{title:`Keep previous versions of an uploaded file`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:10},children:`Normally a new upload replaces the old one and it is gone. Turn this on and the last few are kept instead — useful when someone sends an updated CV and you may want to look back at the earlier one. Everywhere in the app still shows the newest; the older ones sit behind it.`}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.fileVersioning,onChange:e=>P(`fileVersioning`,e?{fields:[],keep:2,historyKey:``,s3Prefix:``,deleteEvicted:!1}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Keep previous uploads`})]}),h.fileVersioning&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{style:{marginBottom:10},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`},children:`Where the older versions are kept`}),(0,c.jsxs)(o.Radio.Group,{size:`small`,value:h.fileVersioning.store===`documents`?`documents`:`record`,onChange:e=>{let t=e.target.value,n={...h.fileVersioning,store:t===`documents`?`documents`:``};t===`documents`&&(n.linkField=n.linkField||`documentIds`,n.clearRecordKeys=n.clearRecordKeys?.length?n.clearRecordKeys:(n.fields??[]).flatMap(e=>[`${e}History`,`${e}Versions`])),P(`fileVersioning`,n)},children:[(0,c.jsx)(o.Radio,{value:`documents`,children:`In Documents (recommended)`}),(0,c.jsx)(o.Radio,{value:`record`,children:`On the record itself`})]}),(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:[(0,c.jsx)(`b`,{children:`In Documents`}),` keeps the file and all its earlier versions in one place, the same place every other document lives. The record just points at it — so when a candidate is submitted for a job, the submission shows the very same file, and replacing it updates both at once. `,(0,c.jsx)(`b`,{children:`On the record itself`}),` is the older way: each record keeps its own copy of the history, which is why the same résumé could end up recorded several times over and the copies could disagree.`]})]}),h.fileVersioning.store===`documents`&&(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,style:{marginBottom:10},children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`List of attached documents is kept in`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`documentIds`,value:h.fileVersioning.linkField??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,linkField:e.target.value})})]}),(0,c.jsxs)(`div`,{style:{flex:1.6},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Old history fields to clear off the record`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resumeHistory`,value:h.fileVersioning.clearRecordKeys??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,clearRecordKeys:e})})]})]}),(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Which uploads`}),(0,c.jsx)(o.Select,{mode:`tags`,size:`small`,style:{width:`100%`},placeholder:`resume`,value:h.fileVersioning.fields??[],onChange:e=>P(`fileVersioning`,{...h.fileVersioning,fields:e})})]}),(0,c.jsxs)(`div`,{style:{flex:.7},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`How many to keep`}),(0,c.jsx)(o.Input,{size:`small`,type:`number`,min:1,value:h.fileVersioning.keep??2,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,keep:Number(e.target.value)||1})})]}),(0,c.jsxs)(`div`,{style:{flex:1.4},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Where the files are grouped`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`candidates/{recordId}/resume`,value:h.fileVersioning.s3Prefix??``,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,s3Prefix:e.target.value})})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.fileVersioning.deleteEvicted,onChange:e=>P(`fileVersioning`,{...h.fileVersioning,deleteEvicted:e})}),(0,c.jsx)($,{style:{fontSize:13},children:`Also delete the file once it drops off the end`})]}),(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginTop:6},children:`Leave that switch OFF unless you are sure. With it off, an older file simply stops being shown and can still be recovered. With it on, it is deleted from storage permanently and cannot be brought back. Keeping 2 means a third upload pushes the first one off the end.`})]})]}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`Denormalizations`,description:`Copy fields from ANOTHER module's record onto this payload before insert (e.g. a submission snapshotting job title/client).`,rules:h.denormalizations??[],columns:R,onAdd:()=>w({index:null,rule:null}),onEdit:(e,t)=>w({index:e,rule:t}),onDelete:e=>P(`denormalizations`,(h.denormalizations??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ApartmentOutlined,{}),title:`Array Enrichments`,description:`Enrich a payload array of ids (e.g. recruitersData) into objects carrying looked-up fields (name, email) before insert.`,rules:h.arrayEnrichments??[],columns:z,onAdd:()=>E({index:null,rule:null}),onEdit:(e,t)=>E({index:e,rule:t}),onDelete:e=>P(`arrayEnrichments`,(h.arrayEnrichments??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`File Field Maps`,description:`Turn an uploaded file field into a nested object (location + filename + who/when) or an array of such objects, instead of a flat S3 path string — needed for schemas like resume/passport/visa.`,rules:h.fileFieldMaps??[],columns:B,onAdd:()=>O({index:null,rule:null}),onEdit:(e,t)=>O({index:e,rule:t}),onDelete:e=>P(`fileFieldMaps`,(h.fileFieldMaps??[]).filter((t,n)=>n!==e))}),(0,c.jsxs)(Z,{title:`Sanitize Fields`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Trim and HTML-escape these payload fields before anything else runs — basic XSS-safety for free-text fields (e.g. firstName/lastName) that might later be embedded in an HTML activity comment or email.`}),(0,c.jsx)(o.Select,{mode:`tags`,style:{width:`100%`},placeholder:`firstName, lastName, email`,value:h.sanitizeFields??[],onChange:e=>P(`sanitizeFields`,e)})]}),(0,c.jsxs)(Z,{title:`Defaults`,styles:{body:{paddingTop:8}},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:`Set a field only when the payload doesn't already carry a non-blank value — status defaults, empty arrays.`}),(0,c.jsx)(wC,{rows:DC(h.defaults),onChange:e=>P(`defaults`,OC(e)),keyPlaceholder:`internalSubmissionStatus.internalSubmissionStatusText`,valuePlaceholder:`"Under Evaluation"`})]}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ApartmentOutlined,{}),title:`Hierarchy Expansions`,description:`Walk the reporting chain up (toward admin) or down (toward a team) from a seed user, publishing the result as {{hierarchy.<name>}} for Related Updates / Notify to use.`,rules:h.hierarchyExpands??[],columns:ee,onAdd:()=>A({index:null,rule:null}),onEdit:(e,t)=>A({index:e,rule:t}),onDelete:e=>P(`hierarchyExpands`,(h.hierarchyExpands??[]).filter((t,n)=>n!==e))}),(0,c.jsx)(PC,{icon:(0,c.jsx)(s.ThunderboltOutlined,{}),title:`Related Updates`,description:`Best-effort side-effect writes to other collections after a successful insert — board state, activity logs. Combine with ForEach + a Hierarchy Expansion to seed one document per user in a chain.`,rules:h.relatedUpdates??[],columns:V,onAdd:()=>M({index:null,rule:null}),onEdit:(e,t)=>M({index:e,rule:t}),onDelete:e=>P(`relatedUpdates`,(h.relatedUpdates??[]).filter((t,n)=>n!==e))}),(0,c.jsxs)(Z,{title:`Notify`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginBottom:10},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.notify,onChange:e=>P(`notify`,e?{action:``,subjectDefault:``,bodyDefault:``,toReportingManager:!1,toHierarchy:``}:null)}),(0,c.jsx)($,{style:{fontSize:13},children:`Send a best-effort email after a successful insert`})]}),h.notify&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Action (matched against an EmailTemplates doc)`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`internalSubmit`,value:h.notify.action??``,onChange:e=>P(`notify`,{...h.notify,action:e.target.value}),className:`fg-mono-input`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Notify entire hierarchy chain`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},allowClear:!0,placeholder:`pick a Hierarchy Expansion`,value:h.notify.toHierarchy||void 0,onChange:e=>P(`notify`,{...h.notify,toHierarchy:e??``}),options:N.map(e=>({value:e,label:e}))})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:!!h.notify.toReportingManager,onChange:e=>P(`notify`,{...h.notify,toReportingManager:e})}),(0,c.jsx)($,{style:{fontSize:13},children:`Also notify the caller's direct reporting manager`})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default subject`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`New submission`,value:h.notify.subjectDefault??``,onChange:e=>P(`notify`,{...h.notify,subjectDefault:e.target.value})})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsx)($,{type:`secondary`,style:{fontSize:12},children:`Default body (used when no EmailTemplates doc matches)`}),(0,c.jsx)(o.Input.TextArea,{rows:4,value:h.notify.bodyDefault??``,onChange:e=>P(`notify`,{...h.notify,bodyDefault:e.target.value}),className:`fg-mono-input`})]})]})]}),(0,c.jsxs)(Z,{title:`Cache Invalidate`,styles:{body:{paddingTop:8}},children:[(0,c.jsxs)($,{type:`secondary`,style:{fontSize:12,display:`block`,marginBottom:8},children:[`Redis key patterns (with `,`{{field}}`,` tokens) to SCAN+DEL after a successful insert.`]}),(0,c.jsx)(o.Select,{mode:`tags`,style:{width:`100%`},placeholder:`jobs:{{tenantId}}:{{businessId}}:{{businessUnitId}}:*`,value:h.cacheInvalidate??[],onChange:e=>P(`cacheInvalidate`,e)})]})]})]})}),(0,c.jsx)(kC,{open:!!C,rule:C?.rule,onClose:()=>w(null),onSave:e=>{P(`denormalizations`,C.index===null?[...h.denormalizations??[],e]:(h.denormalizations??[]).map((t,n)=>n===C.index?e:t)),w(null)}},C?`denorm-${C.index??`new`}`:`denorm-closed`),(0,c.jsx)(AC,{open:!!T,rule:T?.rule,onClose:()=>E(null),onSave:e=>{P(`arrayEnrichments`,T.index===null?[...h.arrayEnrichments??[],e]:(h.arrayEnrichments??[]).map((t,n)=>n===T.index?e:t)),E(null)}},T?`enrich-${T.index??`new`}`:`enrich-closed`),(0,c.jsx)(jC,{open:!!D,rule:D?.rule,onClose:()=>O(null),onSave:e=>{P(`fileFieldMaps`,D.index===null?[...h.fileFieldMaps??[],e]:(h.fileFieldMaps??[]).map((t,n)=>n===D.index?e:t)),O(null)}},D?`filemap-${D.index??`new`}`:`filemap-closed`),(0,c.jsx)(MC,{open:!!k,rule:k?.rule,onClose:()=>A(null),onSave:e=>{P(`hierarchyExpands`,k.index===null?[...h.hierarchyExpands??[],e]:(h.hierarchyExpands??[]).map((t,n)=>n===k.index?e:t)),A(null)}},k?`hier-${k.index??`new`}`:`hier-closed`),(0,c.jsx)(NC,{open:!!j,rule:j?.rule,hierarchyNames:N,onClose:()=>M(null),onSave:e=>{P(`relatedUpdates`,j.index===null?[...h.relatedUpdates??[],e]:(h.relatedUpdates??[]).map((t,n)=>n===j.index?e:t)),M(null)}},j?`ru-${j.index??`new`}`:`ru-closed`)]})}var{Text:LC}=o.Typography,RC=[`beforeCreate`,`afterCreate`,`beforeUpdate`,`afterUpdate`,`beforeDelete`,`afterDelete`],zC=[`sanitizeFields`,`generateSequence`,`duplicateCheck`,`copyFields`,`arrayEnrich`,`setDefaults`,`resolve`,`updateRelated`,`notify`,`invalidateCache`,`webhook`,`linkDocuments`,`captureFileUrls`],BC={linkDocuments:{text:`Share one record’s uploaded files with another, without making a second copy. Used so a submission shows the candidate’s résumé and paperwork, and anything uploaded during the submission appears on the candidate too. Both records get the list of document ids written onto them.`,sample:{sourceModule:`candidates`,sourceIdField:`applicantId`,targetModule:`submissions`,linkField:`documentIds`,fieldNames:[],backLink:!0}},captureFileUrls:{text:`File a document that was generated elsewhere and handed to us as a link — a formatted résumé or an attestation PDF — so it sits with every other attachment instead of being a loose field on the record.`,sample:{linkField:`documentIds`,files:[{urlField:`resumeUrl`,nameField:`resumeFileName`,fieldName:`formattedResume`,defaultName:`Formatted Resume.pdf`},{urlField:`attestationUrl`,nameField:`attestationFileName`,fieldName:`attestation`,defaultName:`Attestation.pdf`}]}}};function VC(e){return JSON.stringify(e??{},null,2)}function HC({action:e,onChange:t,onRemove:n}){let[r,i]=(0,a.useState)(()=>VC(e.config)),[l,u]=(0,a.useState)(!1);return(0,c.jsxs)(`div`,{style:{border:`1px solid #e2e8f0`,borderRadius:8,padding:10,marginTop:8},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,gap:8,alignItems:`center`},children:[(0,c.jsx)(o.Select,{size:`small`,style:{width:200},showSearch:!0,value:e.type||void 0,placeholder:`action type`,options:zC.map(e=>({value:e})),onChange:n=>{let r=e.config&&Object.keys(e.config).length>0,i=BC[n]?.sample;t(r||!i?{...e,type:n}:{...e,type:n,config:i})}}),l&&(0,c.jsx)(o.Tag,{color:`red`,children:`invalid JSON`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),style:{marginLeft:`auto`},onClick:n})]}),BC[e.type]&&(0,c.jsx)(`p`,{style:{margin:`8px 0 0`,fontSize:12,color:`#64748b`,lineHeight:1.5},children:BC[e.type].text}),(0,c.jsx)(o.Input.TextArea,{rows:Math.min(14,Math.max(3,r.split(`
|
|
7
7
|
`).length)),value:r,className:`fg-mono-input`,style:{marginTop:8,fontSize:12},onChange:n=>{i(n.target.value);try{t({...e,config:JSON.parse(n.target.value||`{}`)}),u(!1)}catch{u(!0)}}})]})}function UC({open:e,doc:t,moduleOptions:n,onClose:r,onSave:i}){let[l,u]=(0,a.useState)(()=>({key:``,module:``,event:`afterCreate`,order:10,isActive:!0,condition:{},actions:[],...t??{}})),[d,f]=(0,a.useState)(()=>VC(t?.condition)),[p,m]=(0,a.useState)(!1),h=(e,t)=>u(n=>({...n,[e]:t}));return(0,c.jsx)(o.Modal,{open:e,onCancel:r,width:840,centered:!0,destroyOnClose:!0,maskClosable:!1,className:`fg-editor-modal`,title:(0,c.jsxs)(`span`,{className:`fg-drawer-title`,children:[(0,c.jsx)(s.ApartmentOutlined,{}),` `,t?`Edit Workflow`:`New Workflow`]}),footer:(0,c.jsxs)(`div`,{className:`fg-drawer-footer`,children:[(0,c.jsx)(o.Button,{onClick:r,children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),onClick:()=>{if(!l.key?.trim())return o.message.error(`Key is required`);if(!l.module?.trim())return o.message.error(`Module is required`);if(p)return o.message.error(`Condition JSON is invalid`);if(!(l.actions??[]).length)return o.message.error(`At least one action is required`);if((l.actions??[]).some(e=>!e.type))return o.message.error(`Every action needs a type`);let e={...l};delete e.id,delete e._id,i(e)},children:`Save Workflow`})]}),children:(0,c.jsxs)(`div`,{className:`fg-form-section`,children:[(0,c.jsxs)(`div`,{className:`fg-field-meta-row`,children:[(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(LC,{type:`secondary`,style:{fontSize:12},children:`Key`}),(0,c.jsx)(o.Input,{size:`small`,placeholder:`jobs-create-after`,value:l.key??``,onChange:e=>h(`key`,e.target.value),className:`fg-mono-input`,disabled:!!t})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(LC,{type:`secondary`,style:{fontSize:12},children:`Module`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},showSearch:!0,value:l.module||void 0,options:n,onChange:e=>h(`module`,e),placeholder:`jobs`})]}),(0,c.jsxs)(`div`,{style:{flex:1},children:[(0,c.jsx)(LC,{type:`secondary`,style:{fontSize:12},children:`Event`}),(0,c.jsx)(o.Select,{size:`small`,style:{width:`100%`},value:l.event,options:RC.map(e=>({value:e})),onChange:e=>h(`event`,e)})]}),(0,c.jsxs)(`div`,{style:{width:90},children:[(0,c.jsx)(LC,{type:`secondary`,style:{fontSize:12},children:`Order`}),(0,c.jsx)(o.InputNumber,{size:`small`,style:{width:`100%`},value:l.order??10,onChange:e=>h(`order`,e??10)})]})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,marginTop:12},children:[(0,c.jsx)(o.Switch,{size:`small`,checked:l.isActive!==!1,onChange:e=>h(`isActive`,e)}),(0,c.jsx)(LC,{style:{fontSize:13},children:`Active`})]}),(0,c.jsxs)(`div`,{style:{marginTop:12},children:[(0,c.jsxs)(LC,{type:`secondary`,style:{fontSize:12},children:[`Condition (all must match the payload; empty = always run) `,p&&(0,c.jsx)(o.Tag,{color:`red`,children:`invalid JSON`})]}),(0,c.jsx)(o.Input.TextArea,{rows:2,value:d,className:`fg-mono-input`,style:{fontSize:12},onChange:e=>{f(e.target.value);try{h(`condition`,JSON.parse(e.target.value||`{}`)),m(!1)}catch{m(!0)}}})]}),(0,c.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginTop:14},children:[(0,c.jsx)(LC,{strong:!0,style:{fontSize:13},children:`Actions (run in order)`}),(0,c.jsx)(o.Button,{size:`small`,type:`dashed`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>h(`actions`,[...l.actions??[],{type:``,config:{}}]),children:`Add Action`})]}),(l.actions??[]).map((e,t)=>(0,c.jsx)(HC,{action:e,onChange:e=>h(`actions`,l.actions.map((n,r)=>r===t?e:n)),onRemove:()=>h(`actions`,l.actions.filter((e,n)=>n!==t))},t)),(0,c.jsxs)(LC,{type:`secondary`,style:{fontSize:11,display:`block`,marginTop:8},children:[`Config supports `,(0,c.jsx)(`code`,{children:`{{field.path}}`}),`, `,(0,c.jsx)(`code`,{children:`{{now}}`}),`, `,(0,c.jsx)(`code`,{children:`{{__userId}}`}),`,`,` `,(0,c.jsx)(`code`,{children:`{{__userName}}`}),`, and `,(0,c.jsx)(`code`,{children:`{{hierarchy.<name>}}`}),` from a `,(0,c.jsx)(`code`,{children:`resolve`}),` action.`]})]})})}function WC(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)([]),[l,u]=(0,a.useState)(!0),[d,f]=(0,a.useState)(``),[p,m]=(0,a.useState)(null),[h,g]=(0,a.useState)(``),[_,v]=(0,a.useState)(0);(0,a.useEffect)(()=>{let t=!1;return e.Wr(`workflows`).then(e=>{t||n(e)}).catch(e=>{t||f(e?.message||`Failed to load workflows`)}).finally(()=>{t||u(!1)}),()=>{t=!0}},[_]),(0,a.useEffect)(()=>{e.hr().then(e=>i(tb(e).map(({value:e,label:t})=>({value:e,label:t})))).catch(()=>i([]))},[]);let y=()=>{u(!0),f(``),v(e=>e+1)};async function b(t){try{await e.$r(`workflows`,t),o.message.success(`Workflow "${t.key}" saved`),m(null),y()}catch(e){o.message.error(e?.message||`Could not save workflow`)}}async function x(t){try{await e.ir(`workflows`,t),o.message.success(`Workflow "${t}" deleted`),y()}catch(e){o.message.error(e?.message||`Could not delete workflow`)}}async function S(t,n){let r={...t};delete r.id,delete r._id;try{await e.$r(`workflows`,{...r,isActive:n}),y()}catch(e){o.message.error(e?.message||`Could not update workflow`)}}let C=(0,a.useMemo)(()=>t.filter(e=>!h||e.module===h),[t,h]);return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.ApartmentOutlined,{}),title:`Workflows`,extra:(0,c.jsxs)(o.Space,{size:8,children:[(0,c.jsx)(o.Select,{size:`small`,style:{minWidth:160},allowClear:!0,placeholder:`Filter by module`,options:r,value:h||void 0,onChange:e=>g(e??``)}),(0,c.jsx)(o.Button,{size:`small`,icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:y,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,size:`small`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>m({doc:null}),children:`New Workflow`})]}),children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsxs)(LC,{type:`secondary`,style:{fontSize:13},children:[`Event-driven behavior per module — reference ids, duplicate checks, snapshots, hierarchy fan-outs, board updates, notifications, cache — executed by the platform Workflow Engine on every create/update/delete.`,(0,c.jsx)(o.Tag,{style:{marginLeft:8},children:`before*`}),` actions can block the write; `,(0,c.jsx)(o.Tag,{children:`after*`}),` actions are best-effort.`]})]}),(0,c.jsxs)(Z,{styles:{body:{paddingTop:8}},children:[d&&(0,c.jsx)(o.Alert,{type:`error`,showIcon:!0,message:d,style:{marginBottom:12}}),(0,c.jsxs)(o.Spin,{spinning:l,children:[(0,c.jsxs)(`div`,{style:{marginBottom:8},children:[(0,c.jsx)(o.Badge,{count:C.length,showZero:!0,color:`var(--color-brand)`}),` `,(0,c.jsx)(LC,{type:`secondary`,style:{fontSize:12},children:`workflows`})]}),(0,c.jsx)(o.Table,{rowKey:`key`,dataSource:C,columns:[{title:`Key`,dataIndex:`key`,key:`key`,render:e=>(0,c.jsx)(`code`,{className:`fg-table-code`,children:e})},{title:`Module`,dataIndex:`module`,key:`module`,width:130,render:e=>(0,c.jsx)(o.Tag,{color:`geekblue`,children:e})},{title:`Event`,dataIndex:`event`,key:`event`,width:130,render:e=>(0,c.jsx)(o.Tag,{color:String(e).startsWith(`before`)?`purple`:`green`,children:e})},{title:`Actions`,key:`acts`,render:(e,t)=>(0,c.jsx)(o.Space,{size:4,wrap:!0,children:(t.actions??[]).map((e,t)=>(0,c.jsx)(o.Tag,{style:{margin:0},children:e.type},t))})},{title:`Order`,dataIndex:`order`,key:`order`,width:70,align:`center`},{title:`Active`,key:`active`,width:80,align:`center`,render:(e,t)=>(0,c.jsx)(o.Switch,{size:`small`,checked:t.isActive!==!1,onChange:e=>S(t,e)})},{title:``,key:`ops`,width:90,align:`right`,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>m({doc:t})})}),(0,c.jsx)(o.Popconfirm,{title:`Delete workflow "${t.key}"?`,onConfirm:()=>x(t.key),children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],pagination:!1,size:`small`,className:`fg-table`,locale:{emptyText:(0,c.jsx)(o.Empty,{description:`No workflows configured.`,image:o.Empty.PRESENTED_IMAGE_SIMPLE})}})]})]}),(0,c.jsx)(UC,{open:!!p,doc:p?.doc,moduleOptions:r,onClose:()=>m(null),onSave:b},p?p.doc?.key??`new`:`closed`)]})}var{Text:GC}=o.Typography,KC=e=>e?._id??e?.id,qC=`masters`;function JC(){return{tenantId:localStorage.getItem(`tenantId`)||``,businessId:localStorage.getItem(`businessId`)||``,businessUnitId:localStorage.getItem(`businessUnitId`)||``}}function YC(e){return e&&typeof e==`object`?e.$oid??e.oid??e.id??``:e??``}function XC(e,t){return t.map(t=>YC(e?.[t])).find(e=>e!=null&&e!==``)??``}function ZC(e,t){return[[t.tenantId,[`tid`,`tenantId`]],[t.businessId,[`bid`,`businessId`]],[t.businessUnitId,[`buid`,`businessUnitId`]]].every(([t,n])=>{if(!t)return!0;let r=String(XC(e,n));return!r||r===String(t)})}function QC(e){return Array.isArray(e?.masterFeeds)?e.masterFeeds:[]}function $C(e){return e.reduce((e,t)=>Math.max(e,Number(t?.uniqueId)||0),0)+1}function ew(e){return Array.isArray(e?.taxHistory)?e.taxHistory:[]}function tw(e){let t=e?.taxValue;if(t!=null&&t!==``)return Number(t);let n=ew(e).at(-1),r=n?.taxValue??n?.value;return r!=null&&r!==``?Number(r):void 0}function nw(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(t)}function rw(e){let t=ew(e).at(-1);return t?.updatedAt??t?.timestamp??e?.updatedAt}function iw({open:t,record:n,onClose:r,onSaved:i}){let[s]=o.Form.useForm(),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)([]),[p,m]=(0,a.useState)(!1),h=(0,a.useRef)(null),g=!!n;(0,a.useEffect)(()=>{t&&queueMicrotask(()=>{s.resetFields(),s.setFieldsValue({name:n?.name??void 0,taxValue:tw(n)}),f(n?.name?[{label:n.name,value:n.name}]:[])})},[t,n,s]);function _(t){if(h.current&&clearTimeout(h.current),!t||t.trim().length<2){f([]);return}m(!0),h.current=setTimeout(()=>{e.Er(t.trim()).then(f).catch(()=>f([])).finally(()=>m(!1))},350)}async function v(){let t=await s.validateFields(),r=Number(t.taxValue),a={name:t.name,taxValue:r,taxHistory:{taxValue:r}};u(!0);try{g?await e.ci(`locations`,KC(n),a):await e.Jn(`locations`,a),o.message.success(g?`Tax updated`:`Location and tax created`),i()}catch(e){o.message.error(e?.message||`Could not save location and tax`)}finally{u(!1)}}return(0,c.jsx)(o.Modal,{open:t,onCancel:r,onOk:v,confirmLoading:l,destroyOnHidden:!0,title:g?`Edit Tax — ${n?.name??``}`:`New Location`,children:(0,c.jsxs)(o.Form,{form:s,layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{name:`name`,label:`Location`,rules:[{required:!0,message:`Location is required`}],tooltip:g?`Location cannot be changed once created — only the tax is editable.`:`Search and pick from the location master.`,children:(0,c.jsx)(o.Select,{showSearch:!0,disabled:g,placeholder:`Type at least 2 characters to search…`,filterOption:!1,onSearch:_,notFoundContent:p?`Searching…`:null,options:d})}),(0,c.jsx)(o.Form.Item,{name:`taxValue`,label:`Tax`,rules:[{required:!0,message:`Tax is required`},{type:`number`,min:0,max:100,message:`Tax must be between 0 and 100`}],children:(0,c.jsx)(o.InputNumber,{style:{width:`100%`},min:0,max:100,step:.01,suffix:`%`,placeholder:`8.875`,autoFocus:g})})]})})}function aw({record:e}){let t=[...ew(e)].reverse();return t.length?(0,c.jsx)(o.Space,{direction:`vertical`,size:4,style:{padding:`4px 8px`},children:t.map((e,t)=>(0,c.jsxs)(o.Space,{size:10,children:[(0,c.jsxs)(o.Tag,{color:t===0?`green`:`default`,style:{margin:0},children:[e.taxValue??e.value,`%`]}),(0,c.jsx)(GC,{type:`secondary`,style:{fontSize:12},children:nw(e.updatedAt??e.timestamp)}),t===0&&(0,c.jsx)(GC,{type:`secondary`,style:{fontSize:12},children:`(current)`})]},t))}):(0,c.jsx)(o.Empty,{image:o.Empty.PRESENTED_IMAGE_SIMPLE,description:`No tax history yet`})}function ow(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null);function p(){i(!0),e.Ur(`locations`).then(({items:e})=>n(e)).catch(e=>o.message.error(e?.message||`Could not load locations`)).finally(()=>i(!1))}(0,a.useEffect)(()=>{queueMicrotask(p)},[]);async function m(t){try{await e.rr(`locations`,t),o.message.success(`Location deleted`),p()}catch(e){o.message.error(e?.message||`Could not delete location`)}}return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsx)(Z,{title:`${t.length} location${t.length===1?``:`s`}`,extra:(0,c.jsxs)(o.Space,{children:[(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:p,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New location`})]}),children:(0,c.jsx)(o.Table,{rowKey:KC,columns:[{title:`Location`,dataIndex:`name`,key:`name`},{title:`Tax`,key:`taxValue`,width:100,render:(e,t)=>{let n=tw(t);return Number.isFinite(n)?(0,c.jsxs)(o.Tag,{color:`blue`,children:[n,`%`]}):`—`}},{title:`Tax updated`,key:`taxUpdatedAt`,render:(e,t)=>nw(rw(t))},{title:`Created`,key:`createdAt`,responsive:[`lg`],render:(e,t)=>nw(t?.createdAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit tax`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this location?`,onConfirm:()=>m(KC(t)),children:(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}],dataSource:t,loading:r,size:`small`,pagination:!1,className:`fg-table`,expandable:{expandedRowRender:e=>(0,c.jsx)(aw,{record:e}),rowExpandable:e=>ew(e).length>0},locale:{emptyText:`No locations yet. Click "New location" to add one.`}})}),(0,c.jsx)(iw,{open:l,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),p()}})]})}function sw({open:t,record:n,onClose:r,onSaved:i}){let[l]=o.Form.useForm(),[u,d]=(0,a.useState)(!1),f=!!n;(0,a.useEffect)(()=>{t&&queueMicrotask(()=>{l.resetFields(),l.setFieldsValue({masterName:n?.masterName??``,schemaVersion:n?.schemaVersion??1,masterFeeds:QC(n).length?QC(n):[{uniqueId:1,name:``,type:`neutral`,status:!0,isdeleted:!1}]})})},[t,n,l]);async function p(){let t=await l.validateFields(),r=JC(),a=(t.masterFeeds??[]).map((e,t)=>({uniqueId:Number(e.uniqueId)||t+1,name:String(e.name??``).trim(),type:String(e.type??``).trim(),status:e.status!==!1,isdeleted:e.isdeleted===!0})).filter(e=>e.name),s={...r,tid:r.tenantId,bid:r.businessId,buid:r.businessUnitId,schemaVersion:Number(t.schemaVersion)||1,masterName:t.masterName.trim(),masterFeeds:a};d(!0);try{f?await e.ci(qC,KC(n),s):await e.Jn(qC,s),o.message.success(f?`Master value updated`:`Master value created`),i()}catch(e){o.message.error(e?.message||`Could not save master value`)}finally{d(!1)}}return(0,c.jsx)(o.Modal,{open:t,onCancel:r,onOk:p,confirmLoading:u,destroyOnHidden:!0,title:f?`Edit Master Feed`:`New Master Feed`,width:760,children:(0,c.jsxs)(o.Form,{form:l,layout:`vertical`,children:[(0,c.jsx)(o.Form.Item,{name:`masterName`,label:`Master Name`,rules:[{required:!0,message:`Master name is required`}],children:(0,c.jsx)(o.Input,{placeholder:`blacklistType`,autoFocus:!f,disabled:f})}),(0,c.jsx)(o.Form.Item,{name:`schemaVersion`,label:`Schema Version`,children:(0,c.jsx)(o.InputNumber,{min:1,style:{width:`100%`}})}),(0,c.jsx)(o.Form.List,{name:`masterFeeds`,children:(e,{add:t,remove:n})=>(0,c.jsxs)(o.Space,{direction:`vertical`,style:{width:`100%`},size:10,children:[e.map(({key:e,name:t})=>(0,c.jsxs)(o.Space,{align:`baseline`,wrap:!0,children:[(0,c.jsx)(o.Form.Item,{name:[t,`uniqueId`],label:`ID`,rules:[{required:!0,message:`ID required`}],children:(0,c.jsx)(o.InputNumber,{min:1,style:{width:90}})}),(0,c.jsx)(o.Form.Item,{name:[t,`name`],label:`Name`,rules:[{required:!0,message:`Name required`}],children:(0,c.jsx)(o.Input,{placeholder:`Dropdown label`,style:{width:280}})}),(0,c.jsx)(o.Form.Item,{name:[t,`type`],label:`Type`,children:(0,c.jsx)(o.Select,{allowClear:!0,placeholder:`Select type`,style:{width:120},options:[{label:`Positive`,value:`positive`},{label:`Neutral`,value:`neutral`},{label:`Negative`,value:`negative`}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`status`],label:`Status`,initialValue:!0,children:(0,c.jsx)(o.Select,{style:{width:110},options:[{label:`Active`,value:!0},{label:`Inactive`,value:!1}]})}),(0,c.jsx)(o.Form.Item,{name:[t,`isdeleted`],label:`Deleted`,initialValue:!1,children:(0,c.jsx)(o.Select,{style:{width:110},options:[{label:`No`,value:!1},{label:`Yes`,value:!0}]})}),(0,c.jsx)(o.Tooltip,{title:`Remove row`,children:(0,c.jsx)(o.Button,{type:`text`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),onClick:()=>n(t)})})]},e)),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>t({uniqueId:$C(l.getFieldValue(`masterFeeds`)??[]),name:``,type:`neutral`,status:!0,isdeleted:!1}),children:`Add feed value`})]})})]})})}function cw(){let[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!1),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)(``);function h(){let t=JC();i(!0),e.Ur(qC,{limit:500}).then(({items:e})=>{n(e.filter(e=>ZC(e,t)))}).catch(e=>o.message.error(e?.message||`Could not load master values`)).finally(()=>i(!1))}(0,a.useEffect)(()=>{queueMicrotask(h)},[]);async function g(t){try{await e.rr(qC,t),o.message.success(`Master value deleted`),h()}catch(e){o.message.error(e?.message||`Could not delete master value`)}}let _=p?t.filter(e=>String(e?.masterName??``).toLowerCase()===p.toLowerCase()):t,v=[...new Set(t.map(e=>e?.masterName).filter(Boolean))].sort((e,t)=>String(e).localeCompare(String(t))).map(e=>({label:e,value:e}));return(0,c.jsxs)(`div`,{className:`fg-section admin-config-section`,children:[(0,c.jsx)(Z,{title:`${_.length} master${_.length===1?``:`s`}`,extra:(0,c.jsxs)(o.Space,{wrap:!0,children:[(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,placeholder:`Filter master name`,value:p||void 0,options:v,onChange:e=>m(e??``),style:{minWidth:220}}),(0,c.jsx)(o.Button,{icon:(0,c.jsx)(s.ReloadOutlined,{}),onClick:h,children:`Reload`}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:()=>{f(null),u(!0)},children:`New master`})]}),children:(0,c.jsx)(o.Table,{rowKey:KC,columns:[{title:`Master Name`,dataIndex:`masterName`,key:`masterName`,width:180},{title:`Feed Values`,key:`masterFeeds`,render:(e,t)=>(0,c.jsx)(o.Space,{wrap:!0,children:QC(t).filter(e=>!e.isdeleted).map(e=>(0,c.jsx)(o.Tag,{color:e.status===!1?`default`:`blue`,children:e.name},e.uniqueId??e.name))})},{title:`Count`,key:`count`,width:90,render:(e,t)=>QC(t).filter(e=>!e.isdeleted).length},{title:`Updated`,key:`updatedAt`,responsive:[`lg`],render:(e,t)=>nw(t?.updatedAt)},{title:``,key:`actions`,width:90,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Tooltip,{title:`Edit`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>{f(t),u(!0)}})}),(0,c.jsx)(o.Popconfirm,{title:`Delete this master?`,onConfirm:()=>g(KC(t)),children:(0,c.jsx)(o.Tooltip,{title:`Delete`,children:(0,c.jsx)(o.Button,{type:`text`,size:`small`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{})})})})]})}],dataSource:_,loading:r,size:`small`,pagination:{pageSize:10,showSizeChanger:!0},className:`fg-table`,locale:{emptyText:`No masters yet. Click "New master" to add one.`}})}),(0,c.jsx)(sw,{open:l,record:d,onClose:()=>u(!1),onSaved:()=>{u(!1),h()}})]})}function lw(){return(0,c.jsxs)(`div`,{className:`fg-section`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`Master Collections`,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(GC,{type:`secondary`,style:{fontSize:13},children:`Create, update, and delete master documents, then customize multiple dropdown values inside masterFeeds. Records are saved with the current tenant, business, business unit, and master name.`})]}),(0,c.jsx)(cw,{}),(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.DatabaseOutlined,{}),title:`Location Tax Master`,children:[(0,c.jsx)(`div`,{className:`admin-accent-bar`}),(0,c.jsx)(GC,{type:`secondary`,style:{fontSize:13},children:`Pick a location from the master list and set its tax. Once added, only the tax can be changed — every change is kept in a timeline with its timestamp. Expand a row to see the full tax history.`})]}),(0,c.jsx)(ow,{})]})}var{Text:uw,Title:dw}=o.Typography;function fw(){let[e]=o.Form.useForm(),[t,n]=(0,a.useState)([]),[r,i]=(0,a.useState)(!0),[l,u]=(0,a.useState)(!1),[d,f]=(0,a.useState)(null),[p,m]=(0,a.useState)(!1);async function h(){i(!0);try{n(await wy())}catch(e){o.message.error(e.message||`Unable to load menus`)}finally{i(!1)}}(0,a.useEffect)(()=>{h()},[]);let g=(0,a.useMemo)(()=>t.filter(e=>!d||e.menu_id!==d.menu_id).map(e=>({label:e.menu_name,value:e.menu_id})),[d,t]);function _(){f(null),e.resetFields(),e.setFieldsValue({menu_type:`MENU`,display_order:t.length+1,status:`ACTIVE`}),m(!0)}function v(t){f(t),e.setFieldsValue(t),m(!0)}async function y(e){u(!0);try{d?await Ey(d.menu_id,e):await Ty(e),o.message.success(d?`Menu updated`:`Menu created`),m(!1),await h()}catch(e){o.message.error(e.message||`Unable to save menu`)}finally{u(!1)}}async function b(e){try{await Dy(e),o.message.success(`Menu deleted`),await h()}catch(e){o.message.error(e.message||`Unable to delete menu`)}}return(0,c.jsxs)(`section`,{className:`admin-section`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(dw,{level:4,children:`Menus`}),(0,c.jsx)(uw,{type:`secondary`,children:`Manage records in the MongoDB menus collection.`})]}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:_,children:`Add Menu`})]}),(0,c.jsx)(o.Table,{rowKey:`menu_id`,loading:r,columns:[{title:`Name`,dataIndex:`menu_name`},{title:`Key`,dataIndex:`menu_key`,render:e=>(0,c.jsx)(o.Tag,{children:e})},{title:`Route / API`,dataIndex:`api_url`},{title:`Type`,dataIndex:`menu_type`,width:110},{title:`Order`,dataIndex:`display_order`,width:80},{title:`Status`,dataIndex:`status`,width:100,render:e=>(0,c.jsx)(o.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{title:``,key:`actions`,width:90,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Button,{"aria-label":`Edit menu`,size:`small`,icon:(0,c.jsx)(s.EditOutlined,{}),onClick:()=>v(t)}),(0,c.jsx)(o.Popconfirm,{title:`Delete menu?`,onConfirm:()=>b(t.menu_id),children:(0,c.jsx)(o.Button,{"aria-label":`Delete menu`,danger:!0,size:`small`,icon:(0,c.jsx)(s.DeleteOutlined,{})})})]})}],dataSource:t,size:`small`,pagination:{pageSize:10}}),(0,c.jsx)(o.Modal,{title:d?`Edit Menu`:`Add Menu`,open:p,onCancel:()=>m(!1),onOk:()=>e.submit(),confirmLoading:l,destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:e,layout:`vertical`,onFinish:y,children:[(0,c.jsx)(o.Form.Item,{name:`menu_name`,label:`Menu name`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{})}),(0,c.jsx)(o.Form.Item,{name:`menu_key`,label:`Menu key`,rules:[{required:!0}],children:(0,c.jsx)(o.Input,{placeholder:`jobs`})}),(0,c.jsx)(o.Form.Item,{name:`api_url`,label:`Route / API URL`,children:(0,c.jsx)(o.Input,{placeholder:`/jobs`})}),(0,c.jsx)(o.Form.Item,{name:`component_name`,label:`Component`,children:(0,c.jsx)(o.Input,{placeholder:`Jobs`})}),(0,c.jsxs)(`div`,{className:`admin-form-row`,children:[(0,c.jsx)(o.Form.Item,{name:`menu_type`,label:`Type`,children:(0,c.jsx)(o.Select,{options:[{value:`MENU`},{value:`FOOTER`},{value:`CHILD`}]})}),(0,c.jsx)(o.Form.Item,{name:`parent_menu_id`,label:`Parent`,children:(0,c.jsx)(o.Select,{allowClear:!0,options:g})})]}),(0,c.jsxs)(`div`,{className:`admin-form-row`,children:[(0,c.jsx)(o.Form.Item,{name:`display_order`,label:`Display order`,children:(0,c.jsx)(o.InputNumber,{min:0})}),(0,c.jsx)(o.Form.Item,{name:`status`,label:`Status`,children:(0,c.jsx)(o.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]}),(0,c.jsx)(o.Form.Item,{name:`icon`,label:`Icon`,children:(0,c.jsx)(o.Input,{placeholder:`AppstoreOutlined`})})]})})]})}var{Content:pw,Header:mw,Sider:hw}=o.Layout,{Text:gw,Title:_w}=o.Typography;function vw(e){return String(e??``).trim().replace(/[\s_-]+/g,` `).toUpperCase()}function yw(e){return String(e||``).replace(/[-_]/g,` `).replace(/\b\w/g,e=>e.toUpperCase()).trim()}function bw(e){return String(e||``).trim().toLowerCase()}function xw(e){return e?.key||e?.collectionName||e?.value||``}function Sw(e=[],t=[]){let n=[],r=new Set,i=new Set,a=new Set;return e.forEach(e=>{let t=xw(e);if(!t)return;let o=bw(e.key||t),s=bw(e.collectionName);e.seeded&&(i.add(o),s&&i.add(s)),s&&a.add(s),r.add(t),n.push({label:e.label||yw(t),value:t,disabled:!!e.seeded})}),t.forEach(e=>{let t=String(e||``).trim();if(!t||r.has(t))return;let o=bw(t);a.has(o)||i.has(o)||(r.add(t),n.push({label:yw(t),value:t,disabled:!1}))}),n}function Cw(e){let t=e?.user_type_id??e?.userTypeId??e?.id,n=e?.user_type_name??e?.userTypeName??e?.name;return Number(t)===1||vw(n)===`SUPER ADMIN`}function ww(e){return`${e?.first_name??e?.firstName??``} ${e?.last_name??e?.lastName??``}`.trim()||e?.username||e?.userName||e?.email||`User ${e?.user_id??e?.userId??``}`}function Tw(e){return e.flatMap(e=>{let t=e.menu_id??e.menuId??e.MenuID,n=e.menu_name??e.menuName??e.MenuName??`Menu ${t??``}`,r=e.menu_key??e.menuKey??e.MenuKey??``,i=e.permissions??e.Permissions??{};return Object.entries(i).map(([e,i])=>{let a=i.permission_id??i.permissionId??i.PermissionID,o=i.permission_key??i.permissionKey??i.PermissionKey??e,s=i.value??i.Value??i.access_value??i.accessValue??i;return{key:`${r??n??t}:${a??o}`,menuId:t,menuName:n,menuKey:r,permissionId:a,permissionKey:o,accessValue:+(Number(s)===1)}})})}function Ew(e){return String(e.menuKey??e.menuName??e.menuId).trim().toLowerCase()}var Dw=[{permissionId:null,permissionKey:`sendApprove`,permissionName:`Send Approve`}];function Ow(e){let t=Array.isArray(e)?e:e?.permissions??e?.actions??e?.data??e,n=(Array.isArray(t)?t:Object.values(t??{})).map(e=>({permissionId:e.permission_id??e.permissionId??e.legacyPermissionId??e.id??null,permissionKey:e.permission_key??e.permissionKey??e.key,permissionName:e.permission_name??e.permissionName??e.name??e.label})).filter(e=>e.permissionKey),r=new Set(n.map(e=>String(e.permissionKey).trim().toLowerCase()));return Dw.forEach(e=>{r.has(e.permissionKey.toLowerCase())||n.push(e)}),n}function kw(e={}){return String(e.permissionName??``).trim()||String(e.permissionKey??``).replaceAll(`_`,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).replace(/\b\w/g,e=>e.toUpperCase())}function Aw({title:e,description:t,selectedName:n,loading:r,saving:i,rows:a,onChange:l,onMove:u,onSave:d}){let f=Object.values(a.reduce((e,t)=>{let n=Ew(t);return e[n]||(e[n]={key:n,menuName:t.menuName,menuKey:t.menuKey,permissions:[]}),e[n].permissions.push(t),e},{}));return(0,c.jsxs)(`section`,{className:`admin-editor`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:e}),(0,c.jsx)(gw,{type:`secondary`,children:n||t})]}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.SaveOutlined,{}),loading:i,disabled:!n||a.length===0,onClick:d,children:`Save`})]}),r?(0,c.jsx)(`div`,{className:`admin-loading`,children:(0,c.jsx)(o.Spin,{})}):f.length?(0,c.jsx)(o.Table,{size:`small`,rowKey:`key`,columns:[{title:`Menu`,dataIndex:`menuName`,width:220,render:(e,t)=>(0,c.jsxs)(`div`,{className:`admin-menu-order-cell`,children:[(0,c.jsxs)(`div`,{className:`admin-menu-cell`,children:[(0,c.jsx)(`span`,{children:e}),(0,c.jsx)(gw,{type:`secondary`,children:t.menuKey})]}),(0,c.jsxs)(o.Space,{size:2,children:[(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.ArrowUpOutlined,{}),onClick:()=>u(t.key,-1),"aria-label":`Move ${e} up`}),(0,c.jsx)(o.Button,{size:`small`,type:`text`,icon:(0,c.jsx)(s.ArrowDownOutlined,{}),onClick:()=>u(t.key,1),"aria-label":`Move ${e} down`})]})]})},{title:`Actions`,dataIndex:`permissions`,render:e=>(0,c.jsx)(`div`,{className:`admin-permission-controls`,children:e.filter(e=>My(e.menuName??e.menuKey,e.permissionKey)).map(e=>(0,c.jsx)(`label`,{className:`admin-permission-control`,children:(0,c.jsx)(o.Checkbox,{checked:e.accessValue===1,onChange:t=>l(e.key,+!!t.target.checked),"aria-label":`${e.menuName} ${e.permissionKey}`,children:kw(e)})},e.key))})}],dataSource:f,pagination:!1,scroll:{y:420}}):(0,c.jsx)(o.Empty,{description:`Select a record to customize permissions`})]})}function jw({onLogout:n}){let[r]=o.Form.useForm(),[i]=o.Form.useForm(),[l,u]=(0,a.useState)(`users`),[d,f]=(0,a.useState)(!0),[p,m]=(0,a.useState)(!1),[h,g]=(0,a.useState)(!1),[_,v]=(0,a.useState)([]),[y,b]=(0,a.useState)([]),[x,S]=(0,a.useState)([]),[C,w]=(0,a.useState)([]),[T,E]=(0,a.useState)(null),[D,O]=(0,a.useState)([]),[k,A]=(0,a.useState)(!1),[j,M]=(0,a.useState)(null),[N,P]=(0,a.useState)(!1),[F,I]=(0,a.useState)(null),[L,R]=(0,a.useState)([]),[z,B]=(0,a.useState)(!1),[ee,V]=(0,a.useState)(!1),[H,te]=(0,a.useState)(null),[U,ne]=(0,a.useState)(!1),[W,G]=(0,a.useState)(null),[re,ie]=(0,a.useState)(`listView`),[ae,oe]=(0,a.useState)([]),[se,ce]=(0,a.useState)([]),[le,ue]=(0,a.useState)(!1),[de,fe]=(0,a.useState)(!1),pe=t.u(),me=(0,a.useMemo)(()=>ae.filter(e=>!e.disabled),[ae]),he=!le&&me.length===0,ge=(0,a.useCallback)(async()=>{ue(!0);try{let[t,n]=await Promise.all([e.Sr(),e.mr()]),r=Sw(t.modules,n),i=new Set(r.filter(e=>!e.disabled).map(e=>e.value));oe(r),ce(e=>e.filter(e=>i.has(e)))}catch{o.message.error(`Failed to load seed status`)}finally{ue(!1)}},[]);(0,a.useEffect)(()=>{ge()},[ge]);async function K(){if(se.length===0){o.message.warning(he?`All modules already seeded.`:`Select at least one module to seed.`);return}fe(!0);try{await e.ti(se),o.message.success(`User type field config seeded`),ce([]),await ge()}catch(e){o.message.error(e?.message||`Seed failed`)}finally{fe(!1)}}async function _e(){f(!0);try{let[e,t,n,r]=await Promise.allSettled([hy(),by(),wy(),Oy()]),i=e.status===`fulfilled`?e.value:[],a=t.status===`fulfilled`?t.value:[];e.status===`rejected`&&o.message.error(e.reason?.message||`Unable to load users`),t.status===`rejected`&&o.message.error(t.reason?.message||`Unable to load user types`),v(i??[]),b(a??[]),S(n.status===`fulfilled`?n.value??[]:[]),w(r.status===`fulfilled`?Ow(r.value):[]),E((a??[])[0]?.user_type_id??null)}catch(e){o.message.error(e.message||`Unable to load admin data`)}finally{f(!1)}}(0,a.useEffect)(()=>{queueMicrotask(()=>{_e()})},[]),(0,a.useEffect)(()=>{queueMicrotask(()=>{if(!T){O([]);return}m(!0),console.log(`DEBUG requesting role permissions for selectedUserTypeId=`,T,`localStorage scope=`,{tenantId:localStorage.getItem(`tenantId`),businessId:localStorage.getItem(`businessId`),businessUnitId:localStorage.getItem(`businessUnitId`)}),ky(T).then(e=>{console.log(`DEBUG raw groups from /get-role-details`,e);let t=Tw(e??[]);console.log(`DEBUG savedRows (jobs only)`,t.filter(e=>Ew(e)===`jobs`||Ew(e)===`job`));let n=new Map(t.map(e=>[`${Ew(e)}:${String(e.permissionKey).toLowerCase()}`,e.accessValue]));console.log(`DEBUG savedAccess keys`,[...n.keys()]),console.log(`DEBUG menus (jobs only)`,x.filter(e=>String(e.menu_key??e.menu_name??e.menu_id).trim().toLowerCase()===`jobs`));let r=x.flatMap(e=>C.map(t=>{let r=String(e.menu_key??e.menu_name??e.menu_id).trim().toLowerCase(),i=String(t.permissionKey).toLowerCase();return{key:`${e.menu_key??e.menu_name??e.menu_id}:${t.permissionId??t.permissionKey}`,menuId:e.menu_id,menuName:e.menu_name,menuKey:e.menu_key,permissionId:t.permissionId,permissionKey:t.permissionKey,accessValue:n.get(`${r}:${i}`)??0}}));console.log(`DEBUG final rows (jobs only)`,r.filter(e=>Ew(e)===`jobs`||Ew(e)===`job`)),O(r)}).catch(e=>o.message.error(e.message||`Unable to load role permissions`)).finally(()=>m(!1))})},[T,x,C]);let ve=(0,a.useMemo)(()=>y.find(e=>e.user_type_id===T),[T,y]),ye=(0,a.useMemo)(()=>y.reduce((e,t)=>({...e,[t.user_type_id]:t.user_type_name}),{}),[y]),be=(0,a.useMemo)(()=>y.filter(e=>!Cw(e)),[y]),xe=(0,a.useMemo)(()=>_.filter(e=>!Cw({user_type_id:e.user_type_id,user_type_name:ye[e.user_type_id]})),[ye,_]);(0,a.useEffect)(()=>{if(!k){R([]);return}let e=Number(r.getFieldValue(`user_type_id`)??0);if(!e){R([]);return}let t=!1;return B(!0),gy(e).then(e=>{t||R(e.filter(e=>!j||e.user_id!==j.user_id))}).catch(e=>{t||(o.message.error(e.message||`Unable to load reporting users`),R([]))}).finally(()=>{t||B(!1)}),()=>{t=!0}},[j,r,k]);let Se=(0,a.useMemo)(()=>L.map(e=>({label:ww(e),value:e.user_id})),[L]),Ce=(0,a.useMemo)(()=>_.reduce((e,t)=>({...e,[t.user_id]:ww(t)}),{}),[_]);xe.length,y.length,x.length;let we=[{key:`form-groups`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.AppstoreAddOutlined,{}),` Form Groups`]}),title:`Form Groups`,description:`Build module add and edit form groups with validations, dropdowns, and custom forms.`,component:(0,c.jsx)(Bx,{})},{key:`detail-groups`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.BgColorsOutlined,{}),` Detail Groups`]}),title:`Detail Groups`,description:`Control detail-view labels, rendering, lookups, merged fields, and display defaults.`,component:(0,c.jsx)(pS,{})},{key:`actions`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.ThunderboltOutlined,{}),` Actions`]}),title:`Actions`,description:`Manage row action buttons and their visibility rules from one workspace.`,component:(0,c.jsx)(nC,{})},{key:`templates`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.MailOutlined,{}),` Templates`]}),title:`Templates`,description:`Manage reusable email templates and signatures.`,component:(0,c.jsx)(fC,{})},{key:`ai-services`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.ThunderboltOutlined,{}),` AI Services`]}),title:`AI Services`,description:`Register the AI and automation services used by admin-configured AI actions.`,component:(0,c.jsx)(gC,{})},{key:`bgc-integration`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.SafetyCertificateOutlined,{}),` Integrations`]}),title:`Integrations`,description:`Manage manual and API integrations used across application workflows.`,component:(0,c.jsx)(SC,{})},{key:`automations`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.ApartmentOutlined,{}),` Automations`]}),title:`Automations`,description:`Reference ids, duplicate checks, cross-module snapshots, reporting-chain hierarchy expansion, board updates, notifications, and cache invalidation — per module, config-driven.`,component:(0,c.jsx)(IC,{})},{key:`workflows`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.ApartmentOutlined,{}),` Workflows`]}),title:`Workflows`,description:`Event-driven behavior per module (beforeCreate/afterCreate/…): the metadata the platform Workflow Engine executes — where the jobs, candidates, and submissions create flows live.`,component:(0,c.jsx)(WC,{})},{key:`masters`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.AppstoreAddOutlined,{}),` Masters`]}),title:`Masters`,description:`Shared Location and Tax lists used across modules (e.g. the submission form’s W2 employer section).`,component:(0,c.jsx)(lw,{})}],Te=[{key:`users`,icon:(0,c.jsx)(s.UserOutlined,{}),label:`Users`},{key:`roles`,icon:(0,c.jsx)(s.TeamOutlined,{}),label:`User Types`},{key:`menus`,icon:(0,c.jsx)(s.MenuOutlined,{}),label:`Menus`},{key:`configurations`,icon:(0,c.jsx)(s.AppstoreAddOutlined,{}),label:`Configurations`},{key:`integrations`,icon:(0,c.jsx)(s.SafetyCertificateOutlined,{}),label:`Integrations`}];function Ee(e,t){O(n=>{let r=n.filter(t=>t.key===e).length;return console.log(`DEBUG updateRolePermission`,{key:e,value:t,matchCount:r}),n.map(n=>n.key===e?{...n,accessValue:t}:n)})}async function De(){g(!0);try{console.log(`DEBUG saveRolePermissions jobs rows`,D.filter(e=>Ew(e)===`jobs`||Ew(e)===`job`)),await Ay(T,D.map(e=>({menu_id:e.menuId,menu_name:e.menuName,menu_key:e.menuKey,permission_id:e.permissionId,permission_key:e.permissionKey,access_value:e.accessValue,updated_by:pe?.userId??null}))),o.message.success(`Role permissions updated`)}catch(e){o.message.error(e.message||`Unable to save role permissions`)}finally{g(!1)}}function Oe(){M(null),r.resetFields(),r.setFieldsValue({status:`ACTIVE`,user_type_id:be[0]?.user_type_id,reporting_id:0}),A(!0)}function ke(e){M(e),r.setFieldsValue({first_name:e.first_name,last_name:e.last_name,username:e.username,email:e.email,mobile:e.mobile,user_type_id:e.user_type_id,reporting_id:e.reporting_id??e.reportingId??0,profile_image:e.profile_image,status:e.status}),A(!0)}async function Ae(e){P(!0);try{let t={...e,status:e.status===1||e.status===`1`||e.status===!0?`ACTIVE`:e.status===0||e.status===`0`||e.status===!1?`INACTIVE`:String(e.status??`ACTIVE`).toUpperCase(),updated_by:pe?.userId??null,created_by:pe?.userId??null};t.password||delete t.password,j?(await vy(j.user_id,t),o.message.success(`User updated`)):(await _y(t),o.message.success(`User created`)),A(!1),M(null),await _e()}catch(e){o.message.error(e.message||`Unable to save user`)}finally{P(!1)}}async function je(e){I(e);try{await yy(e),o.message.success(`User deleted`),await _e()}catch(e){o.message.error(e.message||`Unable to delete user`)}finally{I(null)}}function Me(e,t){ie(`listView`),G({kind:e,record:t}),e===`role`&&E(t.user_type_id)}function Ne(e,t){O(n=>{let r=[...new Set(n.map(Ew))],i=r.indexOf(e),a=i+t;if(i<0||a<0||a>=r.length)return n;[r[i],r[a]]=[r[a],r[i]];let o=new Map(r.map((e,t)=>[e,t]));return[...n].sort((e,t)=>o.get(Ew(e))-o.get(Ew(t)))})}function Pe(){te(null),i.resetFields(),i.setFieldsValue({status:`ACTIVE`}),V(!0)}function Fe(e){te(e),V(!0),i.setFieldsValue(e)}async function q(e){ne(!0);try{let t=pe?.userId??null,n=!!H,r=n?await Sy(H.user_type_id,{...e,updated_by:t}):await xy({...e,created_by:t,visible_menu_ids:[]}),i=r.user_type_id;o.message.success(n?`User type updated`:`User type created. Customize its menus and permissions.`),V(!1),await _e(),E(i),n||(ie(`permissions`),G({kind:`role`,record:{...e,...r,user_type_id:i,user_type_name:r.user_type_name??e.user_type_name}}))}catch(e){o.message.error(e.message||`Unable to save role`)}finally{ne(!1)}}async function Ie(e){try{await Cy(e),o.message.success(`Role deleted`),await _e()}catch(e){o.message.error(e.message||`Unable to delete role`)}}return(0,c.jsxs)(o.Layout,{className:`admin-shell`,children:[(0,c.jsx)(hw,{width:248,className:`admin-sider`,children:(0,c.jsxs)(`div`,{className:`admin-sidebar-nav`,children:[(0,c.jsx)(gw,{className:`admin-sidebar-title`,children:`Admin Menu`}),(0,c.jsx)(o.Menu,{theme:`dark`,mode:`inline`,selectedKeys:[l],onClick:({key:e})=>u(e),items:Te})]})}),(0,c.jsx)(o.Layout,{children:(0,c.jsxs)(pw,{className:`admin-content`,children:[(0,c.jsx)(c.Fragment,{children:(0,c.jsx)(o.Tabs,{activeKey:l,onChange:u,tabBarStyle:{display:`none`},items:[{key:`users`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.UserOutlined,{}),` Users`]}),children:(0,c.jsx)(`div`,{className:`admin-stack`,children:(0,c.jsxs)(`section`,{className:`admin-section`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:`Users`}),(0,c.jsx)(gw,{type:`secondary`,children:`Create and manage users with non-super-admin user types.`})]}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:Oe,children:`Add`})]}),(0,c.jsx)(om,{listName:`Users`,loading:d,fields:[{label:`Name`,value:`first_name`,render:(e,t)=>`${e??``} ${t.last_name??``}`.trim()||t.username},{label:`Email`,value:`email`},{label:`User Type`,value:`user_type_id`,width:160,render:e=>ye[e]||`Type ${e}`},{label:`Reporting Manager`,value:`reporting_id`,width:180,render:e=>Ce[e]||`None`},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,c.jsx)(o.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:150,sorter:!1,render:(e,t)=>(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Button,{"aria-label":`Edit user`,icon:(0,c.jsx)(s.EditOutlined,{}),size:`small`,onClick:()=>ke(t)}),(0,c.jsx)(o.Popconfirm,{title:`Delete user?`,description:`This removes the user from the auth database.`,okText:`Delete`,okButtonProps:{danger:!0},onConfirm:()=>je(t.user_id),children:(0,c.jsx)(o.Button,{danger:!0,"aria-label":`Delete user`,icon:(0,c.jsx)(s.DeleteOutlined,{}),loading:F===t.user_id,size:`small`})})]})}],dataSource:xe.map(e=>({...e,key:e.user_id})),total:xe.length,rowSelection:!1})]})})},{key:`roles`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.TeamOutlined,{}),` User Types`]}),children:(0,c.jsxs)(`div`,{className:`admin-stack`,children:[(0,c.jsxs)(Z,{icon:(0,c.jsx)(s.AppstoreOutlined,{}),title:`Field Config Seed`,style:{marginBottom:12},children:[(0,c.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:12,flexWrap:`wrap`},children:[(0,c.jsx)(`div`,{style:{minWidth:320,flex:1},children:(0,c.jsx)(o.Select,{mode:`multiple`,allowClear:!0,showSearch:!0,value:se,options:ae,placeholder:he?`All modules already seeded`:`Select modules or collections to seed`,disabled:le||de||he,loading:le,onChange:ce,style:{width:`100%`}})}),(0,c.jsx)(o.Button,{type:`primary`,loading:de,disabled:le||se.length===0,onClick:K,children:`Seed Field Config`})]}),(0,c.jsx)(gw,{type:`secondary`,style:{display:`block`,marginTop:8,fontSize:12},children:he?`Seed is disabled because all configured modules already have user type field config data.`:`Already seeded modules are disabled. New modules or collections can still be seeded.`})]}),(0,c.jsxs)(`section`,{className:`admin-section`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:`User Types`}),(0,c.jsx)(gw,{type:`secondary`,children:`Role level permissions are inherited by users.`})]}),(0,c.jsx)(o.Button,{type:`primary`,icon:(0,c.jsx)(s.PlusOutlined,{}),onClick:Pe,children:`Add Role`})]}),(0,c.jsx)(om,{listName:`User Types`,loading:d,fields:[{label:`User Type`,value:`user_type_name`},{label:`Description`,value:`description`},{label:`Status`,value:`status`,width:110,sorter:!1,render:e=>(0,c.jsx)(o.Tag,{color:e===`ACTIVE`?`green`:`default`,children:e})},{label:`Actions`,value:`_actions`,width:260,sorter:!1,render:(e,t)=>{let n=Number(t.role_type)===1;return(0,c.jsxs)(o.Space,{size:4,children:[(0,c.jsx)(o.Button,{"aria-label":`Configure role`,size:`small`,onClick:()=>Me(`role`,t),children:`Config`}),(0,c.jsx)(o.Button,{"aria-label":`Edit role`,disabled:!n,icon:(0,c.jsx)(s.EditOutlined,{}),size:`small`,onClick:()=>Fe(t)}),n&&!Cw(t)&&(0,c.jsx)(o.Popconfirm,{title:`Delete role?`,onConfirm:()=>Ie(t.user_type_id),children:(0,c.jsx)(o.Button,{"aria-label":`Delete role`,danger:!0,icon:(0,c.jsx)(s.DeleteOutlined,{}),size:`small`})})]})}}],dataSource:y.map(e=>({...e,key:e.user_type_id,roleId:e.user_type_id,roleName:e.user_type_name})),total:y.length,rowSelection:!1})]})]})},{key:`menus`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.MenuOutlined,{}),` Menus`]}),children:(0,c.jsx)(fw,{})},{key:`configurations`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.AppstoreAddOutlined,{}),` Configurations`]}),children:(0,c.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,c.jsxs)(`div`,{className:`admin-section-head`,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:`Configuration Center`}),(0,c.jsx)(gw,{type:`secondary`,children:`CORE-THEME admin modules embedded into the admin dashboard.`})]}),(0,c.jsxs)(o.Tag,{color:`blue`,children:[we.length,` configurations`]})]}),(0,c.jsx)(o.Tabs,{className:`admin-config-tabs`,defaultActiveKey:`form-groups`,tabPosition:`left`,items:we.map(e=>({key:e.key,label:e.label,children:(0,c.jsxs)(`div`,{className:`admin-config-panel`,children:[(0,c.jsx)(`div`,{className:`admin-config-panel-head`,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:e.title}),(0,c.jsx)(gw,{type:`secondary`,children:e.description})]})}),(0,c.jsx)(`div`,{className:`admin-config-panel-body`,children:e.component})]})}))})]})},{key:`integrations`,label:(0,c.jsxs)(`span`,{children:[(0,c.jsx)(s.SafetyCertificateOutlined,{}),` Integrations`]}),children:(0,c.jsxs)(`section`,{className:`admin-section admin-config-workspace`,children:[(0,c.jsx)(`div`,{className:`admin-section-head`,children:(0,c.jsxs)(`div`,{children:[(0,c.jsx)(_w,{level:4,children:`Integrations`}),(0,c.jsx)(gw,{type:`secondary`,children:`Configure external services used by onboarding and other workflows.`})]})}),(0,c.jsx)(`div`,{className:`admin-config-panel`,children:(0,c.jsx)(`div`,{className:`admin-config-panel-body`,children:(0,c.jsx)(SC,{})})})]})}]})}),(0,c.jsxs)(o.Modal,{className:`uss-modal`,title:`Configure User Type: ${W?.record?.user_type_name??``}`,open:!!W,onCancel:()=>G(null),footer:null,destroyOnHidden:!0,width:900,children:[(0,c.jsx)(`div`,{className:`uss-config-toggle`,style:{marginBottom:12},children:[{key:`listView`,label:`List View`},{key:`filter`,label:`Filter`},{key:`form`,label:`Form`},{key:`permissions`,label:`Permissions`},{key:`actions`,label:`Actions`}].map(e=>(0,c.jsx)(`button`,{type:`button`,className:`uss-config-btn${re===e.key?` active`:``}`,onClick:()=>ie(e.key),children:e.label},e.key))}),W&&re===`permissions`?(0,c.jsx)(Aw,{title:`Role Permissions`,description:`Configure menu permissions for this user type`,selectedName:ve?.user_type_name,loading:p,saving:h,rows:D,onChange:Ee,onMove:Ne,onSave:De}):W&&re===`actions`?(0,c.jsx)(mb,{role:{...W.record,roleId:W.record.user_type_id,roleName:W.record.user_type_name}},`${W.record?.user_type_id}-actions`):W&&re===`form`?(0,c.jsx)(ob,{role:{...W.record,roleId:W.record.user_type_id,roleName:W.record.user_type_name}},`${W.record?.user_type_id}-form`):W?(0,c.jsx)(Yy,{role:{...W.record,roleId:W.record.user_type_id,roleName:W.record.user_type_name},configType:re},`${W.record?.user_type_id}-${re}`):null]}),(0,c.jsx)(o.Modal,{className:`admin-role-modal`,title:H?`Edit User Type`:`Create User Type`,open:ee,onCancel:()=>V(!1),onOk:()=>i.submit(),okText:H?`Save`:`Next`,confirmLoading:U,destroyOnHidden:!0,width:900,children:(0,c.jsxs)(o.Form,{form:i,layout:`vertical`,onFinish:q,children:[(0,c.jsx)(o.Form.Item,{name:`user_type_name`,label:`Role name`,rules:[{required:!0,message:`Role name is required`}],children:(0,c.jsx)(o.Input,{placeholder:`Recruiter`})}),(0,c.jsx)(o.Form.Item,{name:`description`,label:`Description`,children:(0,c.jsx)(o.Input.TextArea,{rows:3})}),(0,c.jsx)(o.Form.Item,{name:`status`,label:`Status`,children:(0,c.jsx)(o.Select,{options:[{value:`ACTIVE`},{value:`INACTIVE`}]})})]})}),(0,c.jsx)(o.Modal,{title:j?`Edit User`:`Add User`,open:k,onCancel:()=>A(!1),onOk:()=>r.submit(),confirmLoading:N,destroyOnHidden:!0,children:(0,c.jsxs)(o.Form,{form:r,layout:`vertical`,requiredMark:!1,onFinish:Ae,children:[(0,c.jsxs)(`div`,{className:`admin-form-row`,children:[(0,c.jsx)(o.Form.Item,{label:`First Name`,name:`first_name`,rules:[{required:!0,message:`First name is required`}],children:(0,c.jsx)(o.Input,{placeholder:`John`})}),(0,c.jsx)(o.Form.Item,{label:`Last Name`,name:`last_name`,children:(0,c.jsx)(o.Input,{placeholder:`Doe`})})]}),(0,c.jsx)(o.Form.Item,{label:`Username`,name:`username`,rules:[{required:!0,message:`Username is required`}],children:(0,c.jsx)(o.Input,{placeholder:`john.doe`})}),(0,c.jsx)(o.Form.Item,{label:`Email`,name:`email`,rules:[{required:!0,message:`Email is required`},{type:`email`,message:`Enter a valid email`}],children:(0,c.jsx)(o.Input,{placeholder:`john@example.com`})}),(0,c.jsx)(o.Form.Item,{label:`Password`,name:`password`,rules:j?[]:[{required:!0,message:`Password is required`}],children:(0,c.jsx)(o.Input.Password,{placeholder:j?`Leave empty to keep current password`:`Password`})}),(0,c.jsxs)(`div`,{className:`admin-form-row`,children:[(0,c.jsx)(o.Form.Item,{label:`Mobile`,name:`mobile`,children:(0,c.jsx)(o.Input,{placeholder:`9999999999`})}),(0,c.jsx)(o.Form.Item,{label:`User Type`,name:`user_type_id`,rules:[{required:!0,message:`User type is required`}],children:(0,c.jsx)(o.Select,{placeholder:`Select user type`,onChange:()=>{R([]),queueMicrotask(()=>{let e=Number(r.getFieldValue(`user_type_id`)??0);e&&(B(!0),gy(e).then(e=>{R(e.filter(e=>!j||e.user_id!==j.user_id))}).catch(e=>{o.message.error(e.message||`Unable to load reporting users`),R([])}).finally(()=>{B(!1)}))})},options:be.map(e=>({label:e.user_type_name,value:e.user_type_id}))})})]}),(0,c.jsx)(o.Form.Item,{label:`Reporting Manager`,name:`reporting_id`,children:(0,c.jsx)(o.Select,{allowClear:!0,showSearch:!0,loading:z,placeholder:`Select reporting manager`,optionFilterProp:`label`,options:[{label:`None`,value:0},...Se]})}),(0,c.jsx)(o.Form.Item,{label:`Profile Image`,name:`profile_image`,children:(0,c.jsx)(o.Input,{placeholder:`https://...`})}),(0,c.jsx)(o.Form.Item,{label:`Status`,name:`status`,children:(0,c.jsx)(o.Select,{options:[{label:`ACTIVE`,value:`ACTIVE`},{label:`INACTIVE`,value:`INACTIVE`}]})})]})})]})})]})}var Mw=jw;function Nw(e,t){return String(e||t).replace(/\/\*$/,``).replace(/\/+$/,``)||t}function Pw({loginPath:e=`/login`,adminPath:t=`/admin`,fallbackPath:n=`/`}){let r=(0,u.useNavigate)(),i=Nw(e,`/login`),a=Nw(t,`/admin`),o=`${a}/*`;return(0,c.jsxs)(u.Routes,{children:[(0,c.jsx)(u.Route,{path:i,element:(0,c.jsx)(Cv,{defaultRedirectPath:a,onLogin:()=>r(a,{replace:!0})})}),(0,c.jsx)(u.Route,{path:o,element:(0,c.jsx)(bv,{loginPath:i,children:(0,c.jsx)(Sv,{children:(0,c.jsx)(Mw,{onLogout:()=>r(i,{replace:!0})})})})}),(0,c.jsx)(u.Route,{path:n,element:(0,c.jsx)(u.Navigate,{to:a,replace:!0})}),(0,c.jsx)(u.Route,{path:`*`,element:(0,c.jsx)(u.Navigate,{to:a,replace:!0})})]})}function Fw(e){return(0,c.jsx)(u.BrowserRouter,{children:(0,c.jsx)(Pw,{...e})})}function Iw(e){return Array.isArray(e)?e.map(String).map(e=>e.trim()).filter(Boolean):String(e??``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Lw(e){return Iw(e).every(e=>/^[^,\s@]+@[^,\s@]+\.[^\s@]{2,}$/.test(e))}var{Text:Rw}=o.Typography;function zw(e,t){return[...new Set([...Iw(e),...Iw(t)])].join(`, `)}function Bw(e,t){return String(t??``).split(`.`).reduce((e,t)=>e?.[t],e)}function Vw(e,t,n){if(!n)return String(e??``);let r=new Map;return(t??[]).forEach(e=>(e.holders??[]).forEach(e=>{r.set(e.key,Bw(n,e.value))})),String(e??``).replace(/{{\.([\w.]+)}}/g,(e,t)=>{let n=r.get(t);return n==null?e:String(n)})}function Hw({value:t,onChange:n,defaultTemplateId:r=``,ready:i=!0,title:l=`Mail`,hint:u,bccHint:d,afterBcc:f,beforeFields:p,className:m=``,contextRecords:h=[]}){let g=(0,a.useRef)(``),_=e=>n?.({...t,...e});async function v(e,n=!1){if(e)try{let r=await CS(e),i=h[0];_({to:zw(t.to,(r?.toMail??[]).map(e=>Vw(e,r?.placeholders,i))),cc:zw(t.cc,(r?.ccMail??[]).map(e=>Vw(e,r?.placeholders,i))),bcc:zw(t.bcc,(r?.bccMail??[]).map(e=>Vw(e,r?.placeholders,i))),subject:Vw(r?.subject,r?.placeholders,i),contents:Vw(r?.body,r?.placeholders,i)}),n||o.message.success(`Loaded ${r?.name||`email template`}`)}catch(e){n||o.message.error(e?.message||`Could not load email template`)}}return(0,a.useEffect)(()=>{!i||!r||g.current===r||(g.current=r,v(r,!0))},[r,i]),(0,c.jsxs)(`div`,{className:`common-mail-composer ${m}`.trim(),children:[(0,c.jsx)(`div`,{className:`mail-popup__header`,children:(0,c.jsxs)(`div`,{className:`mail-popup__header-brand`,children:[(0,c.jsx)(`span`,{className:`dynamic-popup__header-icon-box`,children:(0,c.jsx)(s.MailOutlined,{})}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`span`,{className:`dynamic-popup__header-label`,children:l}),u&&(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__header-hint`,children:u})]})]})}),(0,c.jsxs)(`div`,{className:`mail-popup__body`,children:[p&&(0,c.jsxs)(c.Fragment,{children:[p,(0,c.jsx)(o.Divider,{})]}),(0,c.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__field-label`,children:`To`}),(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:Iw(t.to),onChange:e=>_({to:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:`Add email addresses`}),(0,c.jsxs)(`div`,{className:`mail-popup__cc-bcc-actions`,children:[!t.showCc&&(0,c.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>_({showCc:!0}),children:`Cc`}),!t.showBcc&&(0,c.jsx)(`span`,{className:`mail-popup__cc-bcc-link`,onClick:()=>_({showBcc:!0}),children:`Bcc`})]})]}),(0,c.jsx)(o.Divider,{}),t.showCc&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__field-label`,children:`Cc`}),(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:Iw(t.cc),onChange:e=>_({cc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`})]}),(0,c.jsx)(o.Divider,{})]}),t.showBcc&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__field-label`,children:`Bcc`}),(0,c.jsx)(o.Select,{mode:`tags`,open:!1,tokenSeparators:[`,`],value:Iw(t.bcc),onChange:e=>_({bcc:e.join(`, `)}),variant:`borderless`,className:`mail-popup__recipient-select`,placeholder:d})]}),f,(0,c.jsx)(o.Divider,{})]}),(0,c.jsxs)(`div`,{className:`mail-popup__field-row`,children:[(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__field-label`,children:`Subject`}),(0,c.jsx)(o.Input,{variant:`borderless`,value:t.subject,onChange:e=>_({subject:e.target.value}),placeholder:`Enter subject`,className:`mail-popup__field-input`})]}),(0,c.jsx)(o.Divider,{}),(0,c.jsxs)(`div`,{className:`mail-popup__message-section`,children:[(0,c.jsx)(Rw,{type:`secondary`,className:`mail-popup__message-label`,children:`Message`}),(0,c.jsx)(e.Sn,{value:t.contents,onChange:e=>_({contents:e})})]})]})]})}var{Text:Uw}=o.Typography,Ww=/^[a-fA-F0-9]{24}$/;function Gw(e){return e===!0?!0:typeof e==`number`?e===1:typeof e==`string`?[`true`,`1`,`yes`,`y`,`on`].includes(e.trim().toLowerCase()):!1}function Kw(e){return[`candidate`,`candidates`].includes(String(e??``).trim().toLowerCase())}function qw(e,...t){for(let n of t){let t=String(n).split(`.`).reduce((e,t)=>e?.[t],e);if(t!=null&&String(t).trim()!==``)return t}}function Jw(e){return[qw(e,`jobReferenceId`,`clientJobId`,`jobCode`,`reqId`,`jobId`),qw(e,`jobTitle`,`title`,`name`)].filter(Boolean).join(` - `)||String(qw(e,`_id`,`id`)??`Job`)}function Yw(e){let t=qw(e,`_id`,`id`,`jobId`);return t?{value:String(t),label:Jw(e),raw:e}:null}function Xw(e=[],t=[]){let n=[...t,`email`,`candidateEmail`,`candidate_email`,`emailId`,`mailId`,`alternateEmail`,`altEmail`,`basicDetails.email`,`basicDetails.alternateEmail`,`basicDetails.altEmail`,`candidate.email`,`candidate.emailId`,`submission.email`,`submission.candidateEmail`].filter(Boolean);return e.flatMap(e=>n.map(t=>qw(e,t))).flatMap(e=>Array.isArray(e)?e:[e]).flatMap(Iw)}function Zw(e){return e?.data?.record??e?.record??e?.data??e}function Qw(e){let t=qw(e,`jobId`,`job_id`,`job._id`,`job.id`,`jobs._id`,`jobs.id`);return typeof t==`object`?qw(t,`_id`,`id`,`$oid`):t}function $w(e={}){return{subject:e.subject??e.Subject??``,contents:e.contents??e.Contents??e.body??e.Body??``,toMail:e.toMail??e.ToMail??[],ccMail:e.ccMail??e.CcMail??[],bccMail:e.bccMail??e.BccMail??[]}}function eT(){let t=(0,u.useNavigate)(),{state:n={}}=(0,u.useLocation)(),{selectedIds:r=[],selectedRecords:i=[],recipients:s=[],subject:l=``,onSend:d,moduleName:f=``,popupAction:p={}}=n,m=Gw(p.requireJobId)||Gw(n.requireJobId)||Kw(f),h=(0,a.useMemo)(()=>[p.recipientField,p.recipientPath,n.recipientField,n.recipientPath],[p.recipientField,p.recipientPath,n.recipientField,n.recipientPath]),g=r.join(`|`),_=(0,a.useMemo)(()=>[...s,...Xw(i,h)],[s,i,h]),v=String(n.jobId??Qw(i[0])??``).trim(),y=r[0]??i[0]?._id??i[0]?.id??``,[b,x]=(0,a.useState)(v),[S,C]=(0,a.useState)(m?v:String(v||y||``)),[w,T]=(0,a.useState)({to:[...new Set(_)].join(`, `),cc:``,bcc:``,subject:l,contents:``,showCc:!1,showBcc:!1}),[E,D]=(0,a.useState)(!S),[O,k]=(0,a.useState)(!1),[A,j]=(0,a.useState)([]),[M,N]=(0,a.useState)(!1),[P,F]=(0,a.useState)(!1),I=(0,a.useRef)(!1),L=(0,a.useRef)(``),R=(0,a.useRef)(0);(0,a.useEffect)(()=>{if(!Kw(f)||I.current||Iw(w.to).length>0||r.length===0||L.current===g)return;let t=!1;return L.current=g,Promise.all(r.map(t=>e.un(f,t).catch(()=>null))).then(e=>{if(t)return;let n=Xw(e.map(Zw).filter(Boolean),h);n.length&&T(e=>Iw(e.to).length>0?e:{...e,to:[...new Set(n)].join(`, `)})}),()=>{t=!0}},[w.to,f,h,g,r]),(0,a.useEffect)(()=>{if(!S){D(!0);return}let e=++R.current,t=!1;async function n(){D(!1),k(!0),T(e=>({...e,contents:``}));try{let n=$w(await cn(S)),r=n.contents||``;if(r.trim())try{r=await ln(r,n.subject||l)}catch(n){!t&&e===R.current&&o.message.warning(n?.message||`Mail content formatting failed. Showing original content.`)}if(t||e!==R.current)return;T(e=>({...e,subject:n.subject||e.subject,to:n.toMail?.length?Array.isArray(n.toMail)?n.toMail.join(`, `):String(n.toMail):e.to,cc:n.ccMail?.length?Array.isArray(n.ccMail)?n.ccMail.join(`, `):String(n.ccMail):e.cc,bcc:n.bccMail?.length?Array.isArray(n.bccMail)?n.bccMail.join(`, `):String(n.bccMail):e.bcc,contents:r||n.contents||e.contents,showCc:e.showCc||!!n.ccMail?.length,showBcc:e.showBcc||!!n.bccMail?.length}))}catch(n){!t&&e===R.current&&m&&o.message.error(n?.message||`Could not load mail template for this Job ID`)}finally{!t&&e===R.current&&(D(!0),k(!1))}}return n(),()=>{t=!0}},[S,m]);function z(e=b){let t=String(e??``).trim();if(!Ww.test(t)){C(``),t&&o.message.warning(`Enter a valid 24-character Job ID`);return}if(t===S){C(``),queueMicrotask(()=>C(t));return}C(t)}function B(e,t){if(!e){C(``),x(``);return}let n=t?.label??``;x(String(n||(e??``))),z(e)}function ee(e){let t=String(e??``).trim();if(x(t),t.length<3){j([]);return}N(!0),te(t).then(e=>{j((Array.isArray(e)?e:[]).map(Yw).filter(Boolean))}).catch(e=>o.message.error(e?.message||`Unable to search jobs`)).finally(()=>N(!1))}let V=E&&(!m||Ww.test(S))&&Iw(w.to).length+Iw(w.cc).length+Iw(w.bcc).length>0&&Lw(w.to)&&Lw(w.cc)&&Lw(w.bcc)&&w.subject.trim()&&w.contents.trim();async function H(){if(!(!V||P)){F(!0);try{await un({jobId:S,toMail:Iw(w.to),ccMail:Iw(w.cc),bccMail:Iw(w.bcc),subject:w.subject,contents:w.contents}),o.message.success(`Mail sent successfully`),typeof d==`function`&&d({...w,message:w.contents,selectedIds:r}),t(-1)}catch(e){o.message.error(e?.message||`Failed to send mail`)}finally{F(!1)}}}function U(e){e?.to!==w.to&&(I.current=!0),T(e)}return(0,c.jsx)(o.Drawer,{open:!0,placement:`right`,onClose:()=>t(-1),closable:!1,rootClassName:`mail-popup`,width:620,maskClosable:!1,footer:(0,c.jsxs)(`div`,{className:`mail-popup__footer`,children:[(0,c.jsx)(o.Button,{onClick:()=>t(-1),children:`Cancel`}),(0,c.jsx)(o.Button,{type:`primary`,loading:P,disabled:!V,onClick:H,children:`Send`})]}),children:(0,c.jsx)(o.Spin,{spinning:O,tip:`Loading mail content...`,size:`large`,children:(0,c.jsx)(Hw,{value:w,onChange:U,moduleName:f,defaultTemplateId:m?``:p.defaultTemplateId??n.defaultTemplateId??``,ready:E,contextRecords:i,beforeFields:m?(0,c.jsxs)(`div`,{className:`mail-popup__job-row`,children:[(0,c.jsx)(Uw,{type:`secondary`,className:`mail-popup__field-label`,children:`Job Title / ID`}),(0,c.jsx)(o.Select,{showSearch:!0,allowClear:!0,filterOption:!1,value:S||void 0,searchValue:b,onSearch:ee,onChange:B,onClear:()=>{C(``),x(``),j([])},placeholder:`Minimum 3 characters`,notFoundContent:M||O?(0,c.jsx)(o.Spin,{size:`small`}):null,options:A,className:`mail-popup__job-input`})]}):null})})})}var{Text:tT}=o.Typography,nT=2,rT=`overview.summary.role summary.job summary.role overview.job description.description.about the role.about the job.job title.role.responsibilities.roles responsibilities.roles and responsibilities.roles & responsibilities.key responsibilities.requirements.required skills.preferred skills.technical skills.key skills.skills.competencies.nice to have.good to have.qualifications.required qualifications.preferred qualifications.education.experience.benefits`.split(`.`),iT=new Set(rT),aT=/(education|qualification)/i,oT=/(skill|competenc)/i,sT=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),cT=e=>e.replace(/\w[^\s/]*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()),lT=e=>[...new Set(e)];function uT(e){let t=String(e);return t=t.replace(/<\s*(br|\/p|\/div|\/h[1-6]|\/li|\/tr)\s*\/?>/gi,`
|
|
8
8
|
`).replace(/<\s*li[^>]*>/gi,`
|
|
9
9
|
`).replace(/<[^>]+>/g,` `),t=t.replace(/ /gi,` `).replace(/&/gi,`&`).replace(/</gi,`<`).replace(/>/gi,`>`).replace(/'|'/gi,`'`).replace(/"/gi,`"`),t.replace(/[ \t\f\v]+/g,` `).replace(/\n{2,}/g,`
|