wfp-ui-innodata 1.0.0

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.
@@ -0,0 +1,22 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),H=require("react-router-dom");var W={exports:{}},E={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var ne;function Re(){if(ne)return E;ne=1;var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function s(o,c,l){var a=null;if(l!==void 0&&(a=""+l),c.key!==void 0&&(a=""+c.key),"key"in c){l={};for(var d in c)d!=="key"&&(l[d]=c[d])}else l=c;return c=l.ref,{$$typeof:r,type:o,key:a,ref:c!==void 0?c:null,props:l}}return E.Fragment=n,E.jsx=s,E.jsxs=s,E}var P={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var se;function Ee(){return se||(se=1,process.env.NODE_ENV!=="production"&&function(){function r(t){if(t==null)return null;if(typeof t=="function")return t.$$typeof===we?null:t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case D:return"Fragment";case ge:return"Profiler";case be:return"StrictMode";case ve:return"Suspense";case xe:return"SuspenseList";case je:return"Activity"}if(typeof t=="object")switch(typeof t.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),t.$$typeof){case pe:return"Portal";case he:return t.displayName||"Context";case fe:return(t._context.displayName||"Context")+".Consumer";case ye:var i=t.render;return t=t.displayName,t||(t=i.displayName||i.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case Ne:return i=t.displayName||null,i!==null?i:r(t.type)||"Memo";case B:i=t._payload,t=t._init;try{return r(t(i))}catch{}}return null}function n(t){return""+t}function s(t){try{n(t);var i=!1}catch{i=!0}if(i){i=console;var u=i.error,p=typeof Symbol=="function"&&Symbol.toStringTag&&t[Symbol.toStringTag]||t.constructor.name||"Object";return u.call(i,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",p),n(t)}}function o(t){if(t===D)return"<>";if(typeof t=="object"&&t!==null&&t.$$typeof===B)return"<...>";try{var i=r(t);return i?"<"+i+">":"<...>"}catch{return"<...>"}}function c(){var t=L.A;return t===null?null:t.getOwner()}function l(){return Error("react-stack-top-frame")}function a(t){if(Z.call(t,"key")){var i=Object.getOwnPropertyDescriptor(t,"key").get;if(i&&i.isReactWarning)return!1}return t.key!==void 0}function d(t,i){function u(){Q||(Q=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",i))}u.isReactWarning=!0,Object.defineProperty(t,"key",{get:u,configurable:!0})}function m(){var t=r(this.type);return K[t]||(K[t]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),t=this.props.ref,t!==void 0?t:null}function y(t,i,u,p,C,M){var b=u.ref;return t={$$typeof:X,type:t,key:i,props:u,_owner:p},(b!==void 0?b:null)!==null?Object.defineProperty(t,"ref",{enumerable:!1,get:m}):Object.defineProperty(t,"ref",{enumerable:!1,value:null}),t._store={},Object.defineProperty(t._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(t,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(t,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:C}),Object.defineProperty(t,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:M}),Object.freeze&&(Object.freeze(t.props),Object.freeze(t)),t}function S(t,i,u,p,C,M){var b=i.children;if(b!==void 0)if(p)if(Te(b)){for(p=0;p<b.length;p++)G(b[p]);Object.freeze&&Object.freeze(b)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else G(b);if(Z.call(i,"key")){b=r(t);var w=Object.keys(i).filter(function($e){return $e!=="key"});p=0<w.length?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}",re[b+p]||(w=0<w.length?"{"+w.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
+ let props = %s;
19
+ <%s {...props} />
20
+ React keys must be passed directly to JSX without using spread:
21
+ let props = %s;
22
+ <%s key={someKey} {...props} />`,p,b,w,b),re[b+p]=!0)}if(b=null,u!==void 0&&(s(u),b=""+u),a(i)&&(s(i.key),b=""+i.key),"key"in i){u={};for(var q in i)q!=="key"&&(u[q]=i[q])}else u=i;return b&&d(u,typeof t=="function"?t.displayName||t.name||"Unknown":t),y(t,b,u,c(),C,M)}function G(t){J(t)?t._store&&(t._store.validated=1):typeof t=="object"&&t!==null&&t.$$typeof===B&&(t._payload.status==="fulfilled"?J(t._payload.value)&&t._payload.value._store&&(t._payload.value._store.validated=1):t._store&&(t._store.validated=1))}function J(t){return typeof t=="object"&&t!==null&&t.$$typeof===X}var O=g,X=Symbol.for("react.transitional.element"),pe=Symbol.for("react.portal"),D=Symbol.for("react.fragment"),be=Symbol.for("react.strict_mode"),ge=Symbol.for("react.profiler"),fe=Symbol.for("react.consumer"),he=Symbol.for("react.context"),ye=Symbol.for("react.forward_ref"),ve=Symbol.for("react.suspense"),xe=Symbol.for("react.suspense_list"),Ne=Symbol.for("react.memo"),B=Symbol.for("react.lazy"),je=Symbol.for("react.activity"),we=Symbol.for("react.client.reference"),L=O.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=Object.prototype.hasOwnProperty,Te=Array.isArray,F=console.createTask?console.createTask:function(){return null};O={react_stack_bottom_frame:function(t){return t()}};var Q,K={},ee=O.react_stack_bottom_frame.bind(O,l)(),te=F(o(l)),re={};P.Fragment=D,P.jsx=function(t,i,u){var p=1e4>L.recentlyCreatedOwnerStacks++;return S(t,i,u,!1,p?Error("react-stack-top-frame"):ee,p?F(o(t)):te)},P.jsxs=function(t,i,u){var p=1e4>L.recentlyCreatedOwnerStacks++;return S(t,i,u,!0,p?Error("react-stack-top-frame"):ee,p?F(o(t)):te)}}()),P}process.env.NODE_ENV==="production"?W.exports=Re():W.exports=Ee();var e=W.exports;const Pe="_btn_1mzck_1",ke="_sm_1mzck_18",Ae="_md_1mzck_19",Se="_primary_1mzck_22",Oe="_success_1mzck_25",Ce="_danger_1mzck_28",Ie="_warning_1mzck_31",De="_ghost_1mzck_34",Be="_spinner_1mzck_38",Le="_wfpSpin_1mzck_1",T={btn:Pe,sm:ke,md:Ae,primary:Se,success:Oe,danger:Ce,warning:Ie,ghost:De,spinner:Be,wfpSpin:Le};function Fe({variant:r="primary",size:n="md",disabled:s=!1,loading:o=!1,onClick:c,children:l,type:a="button",className:d="",...m}){const y=[T.btn,T[r]||T.primary,T[n]||T.md,d].join(" ");return e.jsxs("button",{type:a,className:y,onClick:!s&&!o?c:void 0,disabled:s||o,...m,children:[o&&e.jsx("span",{className:T.spinner}),l]})}const Me="_wrapper_syblk_1",qe="_label_syblk_3",Ue="_req_syblk_10",ze="_tag_syblk_11",Ye="_input_syblk_21",He="_error_syblk_33",We="_readOnly_syblk_34",Ve="_errorMsg_syblk_36",v={wrapper:Me,label:qe,req:Ue,tag:ze,input:Ye,error:He,readOnly:We,errorMsg:Ve},Ge=g.memo(function({label:n,required:s=!1,error:o=null,readOnly:c=!1,tag:l=null,className:a="",...d}){const[m,y]=g.useState(!1),S=[v.input,o?v.error:"",c?v.readOnly:"",a].join(" ");return e.jsxs("div",{className:v.wrapper,children:[n&&e.jsxs("label",{className:v.label,children:[n,s&&e.jsx("span",{className:v.req,children:"*"}),l&&e.jsx("span",{className:v.tag,children:l})]}),e.jsx("input",{className:S,readOnly:c,onFocus:()=>y(!0),onBlur:()=>y(!1),...d}),o&&e.jsx("span",{className:v.errorMsg,children:o})]})}),Je="_wrapper_pzbpy_1",Xe="_label_pzbpy_3",Ze="_req_pzbpy_7",Qe="_select_pzbpy_9",Ke="_error_pzbpy_26",et="_errorMsg_pzbpy_28",$={wrapper:Je,label:Xe,req:Ze,select:Qe,error:Ke,errorMsg:et},tt=g.memo(function({label:n,required:s=!1,error:o=null,options:c=[],className:l="",...a}){const d=[$.select,o?$.error:"",l].join(" ");return e.jsxs("div",{className:$.wrapper,children:[n&&e.jsxs("label",{className:$.label,children:[n,s&&e.jsx("span",{className:$.req,children:"*"})]}),e.jsx("select",{className:d,...a,children:c.map((m,y)=>e.jsx("option",{value:m.value??m,children:m.label??m},y))}),o&&e.jsx("span",{className:$.errorMsg,children:o})]})}),rt="_wrapper_1ndkr_1",nt="_label_1ndkr_2",st="_req_1ndkr_3",at="_textarea_1ndkr_4",ot="_error_1ndkr_10",ct="_errorMsg_1ndkr_11",R={wrapper:rt,label:nt,req:st,textarea:at,error:ot,errorMsg:ct},lt=g.memo(function({label:n,required:s=!1,error:o=null,rows:c=3,className:l="",...a}){const d=[R.textarea,o?R.error:"",l].join(" ");return e.jsxs("div",{className:R.wrapper,children:[n&&e.jsxs("label",{className:R.label,children:[n,s&&e.jsx("span",{className:R.req,children:"*"})]}),e.jsx("textarea",{rows:c,className:d,...a}),o&&e.jsx("span",{className:R.errorMsg,children:o})]})}),it="_field_16wm4_1",_t={field:it};function dt({children:r,className:n=""}){return e.jsx("div",{className:`${_t.field} ${n}`,children:r})}const ut="_label_14432_1",mt={label:ut};function pt({children:r}){return e.jsx("div",{className:mt.label,children:r})}const bt="_divider_1xp5h_1",gt={divider:bt};function ft({className:r=""}){return e.jsx("hr",{className:`${gt.divider} ${r}`})}const ht="_row_jbp9f_1",yt={row:ht};function vt({children:r,gap:n=10,align:s="center",justify:o="flex-start",mb:c=0,className:l="",style:a={}}){return e.jsx("div",{className:`${yt.row} ${l}`,style:{gap:n,alignItems:s,justifyContent:o,marginBottom:c,...a},children:r})}const xt="_grid_16e4k_1",Nt={grid:xt};function jt({cols:r=2,gap:n=12,children:s,className:o="",style:c={}}){return e.jsx("div",{className:`${Nt.grid} ${o}`,style:{gridTemplateColumns:`repeat(${r},1fr)`,gap:n,...c},children:s})}const wt="_nav_1e0iw_1",Tt="_brand_1e0iw_6",$t="_brandName_1e0iw_7",Rt="_brandTag_1e0iw_8",Et="_tabs_1e0iw_9",Pt="_tab_1e0iw_9",kt="_tabActive_1e0iw_12",At="_right_1e0iw_13",St="_hrpId_1e0iw_14",Ot="_dot_1e0iw_15",h={nav:wt,brand:Tt,brandName:$t,brandTag:Rt,tabs:Et,tab:Pt,tabActive:kt,right:At,hrpId:St,dot:Ot},Ct=[{label:"Dashboard",path:"/"},{label:"ICC",path:"/icc"},{label:"Anaplan",path:"/anaplan"},{label:"+ New HRP",path:"/new-hrp"}];function oe({hrpId:r=null,statusColor:n="#1fd698"}){const s=H.useNavigate(),o=H.useLocation();return e.jsxs("nav",{className:h.nav,children:[e.jsxs("div",{className:h.brand,children:[e.jsx("span",{className:h.brandName,children:"Project Alpha"}),e.jsx("span",{className:h.brandTag,children:"PDO"})]}),e.jsx("div",{className:h.tabs,children:Ct.map(c=>e.jsx("button",{onClick:()=>s(c.path),className:`${h.tab} ${o.pathname===c.path?h.tabActive:""}`,children:c.label},c.path))}),e.jsxs("div",{className:h.right,children:[e.jsx("span",{children:"WW · FY26"}),r&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"·"}),e.jsx("span",{className:h.hrpId,children:r})]}),e.jsx("div",{className:h.dot,style:{background:n}})]})]})}const It="_sidebar_11r1l_1",Dt="_btn_11r1l_2",I={sidebar:It,btn:Dt};function ce(){const r=H.useNavigate();return e.jsxs("aside",{className:I.sidebar,children:[e.jsx("button",{className:I.btn,title:"Queue",onClick:()=>r("/"),children:"☰"}),e.jsx("button",{className:I.btn,title:"Settings",onClick:()=>{},children:"⚙"}),e.jsx("button",{className:I.btn,title:"Help",onClick:()=>{},children:"?"})]})}const Bt="_shell_15q67_1",Lt="_body_15q67_2",Ft="_main_15q67_3",U={shell:Bt,body:Lt,main:Ft};function Mt({children:r,hrpId:n,statusColor:s}){return e.jsxs("div",{className:U.shell,children:[e.jsx(oe,{hrpId:n,statusColor:s}),e.jsxs("div",{className:U.body,children:[e.jsx(ce,{}),e.jsx("main",{className:U.main,children:r})]})]})}const qt="_page_rebrs_1",Ut={page:qt};function zt({children:r}){return e.jsx("div",{className:Ut.page,children:r})}const Yt="_banner_y29wr_1",Ht="_error_y29wr_2",Wt="_warning_y29wr_3",Vt="_icon_y29wr_4",Gt="_body_y29wr_7",Jt="_msg_y29wr_8",Xt="_meta_y29wr_11",Zt="_code_y29wr_12",Qt="_retry_y29wr_13",Kt="_actions_y29wr_14",er="_actionBtn_y29wr_15",tr="_closeBtn_y29wr_16",rr="_zone_y29wr_17",f={banner:Yt,error:Ht,warning:Wt,icon:Vt,body:Gt,msg:Jt,meta:Xt,code:Zt,retry:Qt,actions:Kt,actionBtn:er,closeBtn:tr,zone:rr},ae={AUTH_ERROR:{type:"error",message:"Authentication failed. Please contact your administrator.",action:"Contact admin",retryable:!1},API_TIMEOUT:{type:"warning",message:"The request timed out. The system will retry automatically.",action:null,retryable:!0},RETRY_EXHAUSTED:{type:"error",message:"Service temporarily unavailable after multiple retries. Please try again later.",action:"Try again later",retryable:!1},RATE_LIMITED:{type:"warning",message:"Too many requests. The system will automatically resume shortly.",action:null,retryable:!0},HRP_NOT_FOUND:{type:"error",message:"The HRP could not be found. Please verify the HRP ID.",action:"Check HRP ID",retryable:!1},HRP_ALREADY_PROCESSED:{type:"warning",message:"This HRP has already been processed.",action:null,retryable:!1},INVALID_STAFFING_GROUP_NAME:{type:"error",message:"The staffing group name is invalid. Please check the project name.",action:"Edit name",retryable:!1},FB_ID_TIMEOUT:{type:"warning",message:"Staffing group approval timed out. The ICC team has been notified.",action:"Contact ICC team",retryable:!0},NO_ACTIVE_HRP:{type:"error",message:"No HRP is currently selected. Please return to the dashboard and select an HRP.",action:"Go to Dashboard",retryable:!1},ANAPLAN_MODEL_BUSY:{type:"warning",message:"Anaplan is currently busy. The system will retry automatically.",action:null,retryable:!0},ANAPLAN_ACTION_FAILED:{type:"error",message:"An Anaplan action failed. Please contact your administrator.",action:"Contact admin",retryable:!1},PROJECT_NAME_AMBIGUOUS:{type:"warning",message:"Could not automatically resolve the project name. Manual selection required.",action:"Select manually",retryable:!1},MAXBILL_VALIDATION_FAILED:{type:"error",message:"MaxBill data does not match expected values. Please review before proceeding.",action:"Review MaxBill",retryable:!1},DB_CONNECTION_FAILED:{type:"error",message:"Unable to connect to the database. Please try again shortly.",action:"Retry",retryable:!0},DB_QUERY_FAILED:{type:"error",message:"A database error occurred. Your data has not been changed.",action:"Retry",retryable:!0},DB_WRITE_FAILED:{type:"error",message:"Failed to save data. Please try again. No changes were made.",action:"Retry",retryable:!0},DB_RECORD_NOT_FOUND:{type:"error",message:"The requested record could not be found.",action:"Refresh",retryable:!1},DB_DUPLICATE_ENTRY:{type:"warning",message:"This record already exists.",action:null,retryable:!1},WS_CONNECTION_FAILED:{type:"warning",message:"Live updates disconnected. Reconnecting automatically.",action:null,retryable:!0},WS_TIMEOUT:{type:"warning",message:"Live connection timed out. Reconnecting…",action:null,retryable:!0},WS_AUTH_FAILED:{type:"error",message:"Live connection rejected. Please refresh the page.",action:"Refresh page",retryable:!1},FRONTEND_JS_ERROR:{type:"error",message:"Something went wrong on this page. Please refresh.",action:"Refresh page",retryable:!1},FRONTEND_NETWORK_ERROR:{type:"warning",message:"Network connection lost. Please check your internet connection.",action:"Check connection",retryable:!0},FRONTEND_VALIDATION_ERROR:{type:"warning",message:"Please fix the highlighted fields and try again.",action:null,retryable:!1},VALIDATION_ERROR:{type:"warning",message:"Please fix the highlighted fields and try again.",action:null,retryable:!1},EMAIL_SEND_FAILED:{type:"error",message:"Failed to send vendor email. Please try again or send manually.",action:"Retry",retryable:!0},LOOKUP_MISSING:{type:"error",message:"A required configuration mapping is missing. Please contact your administrator.",action:"Contact admin",retryable:!1},UNHANDLED_ERROR:{type:"error",message:"An unexpected error occurred. Please try again or contact support.",action:"Contact support",retryable:!1}};function le({code:r,message:n,type:s="error",onClose:o}){const c=r?ae[r]||ae.UNHANDLED_ERROR:{type:s,message:n,action:null,retryable:!1},l=c.type==="error";return e.jsxs("div",{className:`${f.banner} ${l?f.error:f.warning}`,children:[e.jsx("div",{className:f.icon,children:l?"✕":"⚠"}),e.jsxs("div",{className:f.body,children:[e.jsx("div",{className:f.msg,children:c.message}),e.jsxs("div",{className:f.meta,children:[r&&e.jsx("span",{className:f.code,children:r}),c.retryable&&e.jsx("span",{className:f.retry,children:"System will retry automatically"})]})]}),e.jsxs("div",{className:f.actions,children:[c.action&&e.jsx("button",{className:f.actionBtn,children:c.action}),e.jsx("button",{className:f.closeBtn,onClick:o,children:"✕"})]})]})}function nr({banners:r=[],onClose:n}){return r.length?e.jsx("div",{className:f.zone,children:r.map(s=>e.jsx(le,{code:s.code,onClose:()=>n(s.id)},s.id))}):null}const sr="_overlay_1vlo1_1",ar="_wfpFadeUp_1vlo1_1",or="_dialog_1vlo1_2",cr="_title_1vlo1_3",lr="_message_1vlo1_4",ir="_btns_1vlo1_5",_r="_cancel_1vlo1_6",dr="_confirm_1vlo1_7",ur="_success_1vlo1_8",mr="_danger_1vlo1_10",pr="_warning_1vlo1_12",x={overlay:sr,wfpFadeUp:ar,dialog:or,title:cr,message:lr,btns:ir,cancel:_r,confirm:dr,success:ur,danger:mr,warning:pr};function br({title:r,message:n,onConfirm:s,onCancel:o,type:c="danger"}){return e.jsx("div",{className:x.overlay,onClick:l=>l.target===l.currentTarget&&o(),children:e.jsxs("div",{className:x.dialog,children:[e.jsx("div",{className:x.title,children:r}),e.jsx("div",{className:x.message,children:n}),e.jsxs("div",{className:x.btns,children:[e.jsx("button",{className:x.cancel,onClick:o,children:"Cancel"}),e.jsx("button",{className:`${x.confirm} ${x[c]}`,onClick:s,children:"Confirm"})]})]})})}function gr(){const[r,n]=g.useState([]),s=g.useCallback(l=>n(a=>[{id:Date.now(),code:l},...a]),[]),o=g.useCallback(l=>n(a=>a.filter(d=>d.id!==l)),[]),c=g.useCallback(()=>n([]),[]);return{banners:r,push:s,close:o,clear:c}}const fr="_container_p895y_1",hr="_toast_p895y_2",yr="_wfpSlideIn_p895y_1",vr="_info_p895y_3",xr="_success_p895y_4",Nr="_warning_p895y_5",jr="_error_p895y_6",V={container:fr,toast:hr,wfpSlideIn:yr,info:vr,success:xr,warning:Nr,error:jr};function wr({message:r,type:n="info",onDone:s}){return g.useEffect(()=>{const o=setTimeout(s,3500);return()=>clearTimeout(o)},[]),e.jsx("div",{className:`${V.toast} ${V[n]}`,children:r})}const ie=g.createContext(null);function Tr({children:r}){const[n,s]=g.useState([]),o=g.useCallback((l,a="info")=>s(d=>[...d,{id:Date.now(),message:l,type:a}]),[]),c=g.useCallback(l=>s(a=>a.filter(d=>d.id!==l)),[]);return e.jsxs(ie.Provider,{value:o,children:[r,e.jsx("div",{className:V.container,children:n.map(l=>e.jsx(wr,{message:l.message,type:l.type,onDone:()=>c(l.id)},l.id))})]})}function $r(){const r=g.useContext(ie);if(!r)throw new Error("useToast must be inside ToastProvider");return r}const Rr="_chip_18rp2_1",Er={chip:Rr};function _e({id:r}){return e.jsx("span",{className:Er.chip,children:r})}const Pr="_badge_r5bqs_1",kr="_triage_r5bqs_2",Ar="_review_r5bqs_3",Sr="_auto_r5bqs_4",Or="_email_r5bqs_5",Cr="_done_r5bqs_6",Ir="_error_r5bqs_7",z={badge:Pr,triage:kr,review:Ar,auto:Sr,email:Or,done:Cr,error:Ir},Dr={triage:"• Needs Triage",review:"• Review Intake",auto:"• Automating",email:"• Send Vendor Email",done:"• Complete",error:"• Error"};function de({status:r}){return e.jsx("span",{className:`${z.badge} ${z[r]||z.error}`,children:Dr[r]||r})}const Br="_pill_1f8sz_1",Lr="_change_1f8sz_3",Fr="_offboard_1f8sz_4",Y={pill:Br,new:"_new_1f8sz_2",change:Lr,offboard:Fr};function ue({type:r}){return e.jsx("span",{className:`${Y.pill} ${Y[r]||Y.change}`,children:r})}const Mr="_row_1xcr3_1",qr="_dot_1xcr3_2",Ur="_done_1xcr3_3",zr="_active_1xcr3_4",Yr="_pending_1xcr3_5",Hr="_error_1xcr3_6",Wr="_sep_1xcr3_7",k={row:Mr,dot:qr,done:Ur,active:zr,pending:Yr,error:Hr,sep:Wr},Vr=["Triage","ICC","Anaplan","Intake","MaxBill"];function me({states:r=[]}){return e.jsx("div",{className:k.row,children:r.map((n,s)=>e.jsxs(g.Fragment,{children:[e.jsx("div",{className:`${k.dot} ${k[n]||k.pending}`,title:Vr[s]||""}),s<r.length-1&&e.jsx("span",{className:k.sep,children:"›"})]},s))})}const Gr="_card_mm918_1",Jr="_num_mm918_4",Xr="_lbl_mm918_5",Zr="_amber_mm918_6",Qr="_blue_mm918_7",Kr="_green_mm918_8",en="_red_mm918_9",tn="_white_mm918_10",A={card:Gr,num:Jr,lbl:Xr,amber:Zr,blue:Qr,green:Kr,red:en,white:tn};function rn({count:r,label:n,color:s="white",onClick:o}){return e.jsxs("div",{className:`${A.card} ${A[s]||A.white}`,onClick:o,children:[e.jsx("div",{className:A.num,children:r}),e.jsx("div",{className:A.lbl,children:n})]})}const nn="_bar_ph9gg_1",sn="_item_ph9gg_2",an="_lbl_ph9gg_3",on="_val_ph9gg_4",cn="_highlight_ph9gg_5",ln="_mono_ph9gg_6",_n="_right_ph9gg_7",N={bar:nn,item:sn,lbl:an,val:on,highlight:cn,mono:ln,right:_n};function dn({items:r=[],children:n}){return e.jsxs("div",{className:N.bar,children:[r.map((s,o)=>e.jsxs("div",{className:N.item,children:[e.jsx("span",{className:N.lbl,children:s.label}),e.jsx("span",{className:`${N.val} ${s.highlight?N.highlight:""} ${s.mono?N.mono:""}`,children:s.value})]},o)),n&&e.jsx("div",{className:N.right,children:n})]})}const un="_subnav_1c61u_1",mn="_step_1c61u_2",pn="_active_1c61u_3",bn="_dot_1c61u_4",gn="_done_1c61u_5",fn="_pending_1c61u_7",hn="_error_1c61u_8",yn="_sep_1c61u_9",vn="_time_1c61u_10",j={subnav:un,step:mn,active:pn,dot:bn,done:gn,pending:fn,error:hn,sep:yn,time:vn};function xn({steps:r=[]}){return e.jsx("div",{className:j.subnav,children:r.map((n,s)=>e.jsxs(g.Fragment,{children:[e.jsxs("div",{className:`${j.step} ${j[n.state]||j.pending}`,children:[e.jsx("div",{className:j.dot}),n.label,n.time&&e.jsx("span",{className:j.time,children:n.time})]}),s<r.length-1&&e.jsx("span",{className:j.sep,children:"›"})]},s))})}const Nn="_wrap_nt244_1",jn="_table_nt244_2",wn="_th_nt244_3",Tn="_td_nt244_4",$n="_tr_nt244_5",Rn="_done_nt244_7",En="_project_nt244_8",Pn="_unassigned_nt244_9",kn="_planner_nt244_10",An="_actionBtn_nt244_13",Sn="_triage_nt244_14",On="_review_nt244_15",Cn="_email_nt244_16",In="_retry_nt244_17",Dn="_auto_nt244_18",Bn="_log_nt244_19",_={wrap:Nn,table:jn,th:wn,td:Tn,tr:$n,done:Rn,project:En,unassigned:Pn,planner:kn,actionBtn:An,triage:Sn,review:On,email:Cn,retry:In,auto:Dn,log:Bn},Ln=["HRP ID","Project","Type","PJM","Vendor · Site","Hrs/Wk","Planner","Pipeline","Status","Action"];function Fn({hrps:r=[],onTriage:n,onReview:s,onEmail:o,onRetry:c}){function l({hrp:a}){const d=m=>m.stopPropagation();return a.status==="triage"?e.jsx("button",{className:`${_.actionBtn} ${_.triage}`,onClick:m=>{d(m),n==null||n(a.id)},children:"Triage →"}):a.status==="review"?e.jsx("button",{className:`${_.actionBtn} ${_.review}`,onClick:m=>{d(m),s==null||s(a.id)},children:"Review →"}):a.status==="email"?e.jsx("button",{className:`${_.actionBtn} ${_.email}`,onClick:m=>{d(m),o==null||o(a.id)},children:"Send Email →"}):a.status==="error"?e.jsx("button",{className:`${_.actionBtn} ${_.retry}`,onClick:m=>{d(m),c==null||c(a.id)},children:"Retry"}):a.status==="auto"?e.jsx("button",{className:`${_.actionBtn} ${_.auto}`,disabled:!0,children:"Automating…"}):e.jsx("button",{className:`${_.actionBtn} ${_.log}`,onClick:d,children:"Log"})}return e.jsx("div",{className:_.wrap,children:e.jsxs("table",{className:_.table,children:[e.jsx("thead",{children:e.jsx("tr",{children:Ln.map(a=>e.jsx("th",{className:_.th,children:a},a))})}),e.jsx("tbody",{children:r.map(a=>e.jsxs("tr",{className:`${_.tr} ${a.status==="done"?_.done:""}`,children:[e.jsx("td",{className:_.td,children:e.jsx(_e,{id:a.id})}),e.jsx("td",{className:_.td,children:e.jsx("span",{className:_.project,children:a.project})}),e.jsx("td",{className:_.td,children:e.jsx(ue,{type:a.type})}),e.jsx("td",{className:_.td,children:a.pjm}),e.jsxs("td",{className:`${_.td} ${a.vendor==="- not assigned -"?_.unassigned:""}`,children:[a.vendor,a.site?` – ${a.site}`:""]}),e.jsx("td",{className:_.td,children:a.hrs}),e.jsx("td",{className:`${_.td} ${_.planner}`,children:a.planner||"—"}),e.jsx("td",{className:_.td,children:e.jsx(me,{states:a.pipeline})}),e.jsx("td",{className:_.td,children:e.jsx(de,{status:a.status})}),e.jsx("td",{className:_.td,children:e.jsx(l,{hrp:a})})]},a.id))})]})})}exports.Banner=le;exports.BannerZone=nr;exports.Button=Fe;exports.ConfirmDialog=br;exports.Divider=ft;exports.FormField=dt;exports.Grid=jt;exports.HRPIdChip=_e;exports.HRPTable=Fn;exports.InfoBar=dn;exports.Input=Ge;exports.Page=zt;exports.PageShell=Mt;exports.PipelineDots=me;exports.Row=vt;exports.SectionLabel=pt;exports.Select=tt;exports.Sidebar=ce;exports.StatCard=rn;exports.StatusBadge=de;exports.SubnavPipeline=xn;exports.Textarea=lt;exports.ToastProvider=Tr;exports.TopNav=oe;exports.TypePill=ue;exports.useBanners=gr;exports.useToast=$r;
@@ -0,0 +1,834 @@
1
+ import D, { memo as G, useState as J, useCallback as P, createContext as je, useContext as we } from "react";
2
+ import { useNavigate as le, useLocation as $e } from "react-router-dom";
3
+ var W = { exports: {} }, R = {};
4
+ /**
5
+ * @license React
6
+ * react-jsx-runtime.production.js
7
+ *
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ var ae;
14
+ function Ee() {
15
+ if (ae) return R;
16
+ ae = 1;
17
+ var r = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
18
+ function s(o, c, l) {
19
+ var a = null;
20
+ if (l !== void 0 && (a = "" + l), c.key !== void 0 && (a = "" + c.key), "key" in c) {
21
+ l = {};
22
+ for (var d in c)
23
+ d !== "key" && (l[d] = c[d]);
24
+ } else l = c;
25
+ return c = l.ref, {
26
+ $$typeof: r,
27
+ type: o,
28
+ key: a,
29
+ ref: c !== void 0 ? c : null,
30
+ props: l
31
+ };
32
+ }
33
+ return R.Fragment = n, R.jsx = s, R.jsxs = s, R;
34
+ }
35
+ var T = {};
36
+ /**
37
+ * @license React
38
+ * react-jsx-runtime.development.js
39
+ *
40
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
41
+ *
42
+ * This source code is licensed under the MIT license found in the
43
+ * LICENSE file in the root directory of this source tree.
44
+ */
45
+ var oe;
46
+ function Re() {
47
+ return oe || (oe = 1, process.env.NODE_ENV !== "production" && function() {
48
+ function r(t) {
49
+ if (t == null) return null;
50
+ if (typeof t == "function")
51
+ return t.$$typeof === ve ? null : t.displayName || t.name || null;
52
+ if (typeof t == "string") return t;
53
+ switch (t) {
54
+ case L:
55
+ return "Fragment";
56
+ case ue:
57
+ return "Profiler";
58
+ case de:
59
+ return "StrictMode";
60
+ case fe:
61
+ return "Suspense";
62
+ case ge:
63
+ return "SuspenseList";
64
+ case ye:
65
+ return "Activity";
66
+ }
67
+ if (typeof t == "object")
68
+ switch (typeof t.tag == "number" && console.error(
69
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
70
+ ), t.$$typeof) {
71
+ case _e:
72
+ return "Portal";
73
+ case pe:
74
+ return t.displayName || "Context";
75
+ case me:
76
+ return (t._context.displayName || "Context") + ".Consumer";
77
+ case be:
78
+ var i = t.render;
79
+ return t = t.displayName, t || (t = i.displayName || i.name || "", t = t !== "" ? "ForwardRef(" + t + ")" : "ForwardRef"), t;
80
+ case he:
81
+ return i = t.displayName || null, i !== null ? i : r(t.type) || "Memo";
82
+ case B:
83
+ i = t._payload, t = t._init;
84
+ try {
85
+ return r(t(i));
86
+ } catch {
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ function n(t) {
92
+ return "" + t;
93
+ }
94
+ function s(t) {
95
+ try {
96
+ n(t);
97
+ var i = !1;
98
+ } catch {
99
+ i = !0;
100
+ }
101
+ if (i) {
102
+ i = console;
103
+ var u = i.error, p = typeof Symbol == "function" && Symbol.toStringTag && t[Symbol.toStringTag] || t.constructor.name || "Object";
104
+ return u.call(
105
+ i,
106
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
107
+ p
108
+ ), n(t);
109
+ }
110
+ }
111
+ function o(t) {
112
+ if (t === L) return "<>";
113
+ if (typeof t == "object" && t !== null && t.$$typeof === B)
114
+ return "<...>";
115
+ try {
116
+ var i = r(t);
117
+ return i ? "<" + i + ">" : "<...>";
118
+ } catch {
119
+ return "<...>";
120
+ }
121
+ }
122
+ function c() {
123
+ var t = F.A;
124
+ return t === null ? null : t.getOwner();
125
+ }
126
+ function l() {
127
+ return Error("react-stack-top-frame");
128
+ }
129
+ function a(t) {
130
+ if (K.call(t, "key")) {
131
+ var i = Object.getOwnPropertyDescriptor(t, "key").get;
132
+ if (i && i.isReactWarning) return !1;
133
+ }
134
+ return t.key !== void 0;
135
+ }
136
+ function d(t, i) {
137
+ function u() {
138
+ ee || (ee = !0, console.error(
139
+ "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
140
+ i
141
+ ));
142
+ }
143
+ u.isReactWarning = !0, Object.defineProperty(t, "key", {
144
+ get: u,
145
+ configurable: !0
146
+ });
147
+ }
148
+ function m() {
149
+ var t = r(this.type);
150
+ return te[t] || (te[t] = !0, console.error(
151
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
152
+ )), t = this.props.ref, t !== void 0 ? t : null;
153
+ }
154
+ function h(t, i, u, p, C, q) {
155
+ var b = u.ref;
156
+ return t = {
157
+ $$typeof: Z,
158
+ type: t,
159
+ key: i,
160
+ props: u,
161
+ _owner: p
162
+ }, (b !== void 0 ? b : null) !== null ? Object.defineProperty(t, "ref", {
163
+ enumerable: !1,
164
+ get: m
165
+ }) : Object.defineProperty(t, "ref", { enumerable: !1, value: null }), t._store = {}, Object.defineProperty(t._store, "validated", {
166
+ configurable: !1,
167
+ enumerable: !1,
168
+ writable: !0,
169
+ value: 0
170
+ }), Object.defineProperty(t, "_debugInfo", {
171
+ configurable: !1,
172
+ enumerable: !1,
173
+ writable: !0,
174
+ value: null
175
+ }), Object.defineProperty(t, "_debugStack", {
176
+ configurable: !1,
177
+ enumerable: !1,
178
+ writable: !0,
179
+ value: C
180
+ }), Object.defineProperty(t, "_debugTask", {
181
+ configurable: !1,
182
+ enumerable: !1,
183
+ writable: !0,
184
+ value: q
185
+ }), Object.freeze && (Object.freeze(t.props), Object.freeze(t)), t;
186
+ }
187
+ function O(t, i, u, p, C, q) {
188
+ var b = i.children;
189
+ if (b !== void 0)
190
+ if (p)
191
+ if (xe(b)) {
192
+ for (p = 0; p < b.length; p++)
193
+ X(b[p]);
194
+ Object.freeze && Object.freeze(b);
195
+ } else
196
+ console.error(
197
+ "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
198
+ );
199
+ else X(b);
200
+ if (K.call(i, "key")) {
201
+ b = r(t);
202
+ var j = Object.keys(i).filter(function(Ne) {
203
+ return Ne !== "key";
204
+ });
205
+ p = 0 < j.length ? "{key: someKey, " + j.join(": ..., ") + ": ...}" : "{key: someKey}", se[b + p] || (j = 0 < j.length ? "{" + j.join(": ..., ") + ": ...}" : "{}", console.error(
206
+ `A props object containing a "key" prop is being spread into JSX:
207
+ let props = %s;
208
+ <%s {...props} />
209
+ React keys must be passed directly to JSX without using spread:
210
+ let props = %s;
211
+ <%s key={someKey} {...props} />`,
212
+ p,
213
+ b,
214
+ j,
215
+ b
216
+ ), se[b + p] = !0);
217
+ }
218
+ if (b = null, u !== void 0 && (s(u), b = "" + u), a(i) && (s(i.key), b = "" + i.key), "key" in i) {
219
+ u = {};
220
+ for (var U in i)
221
+ U !== "key" && (u[U] = i[U]);
222
+ } else u = i;
223
+ return b && d(
224
+ u,
225
+ typeof t == "function" ? t.displayName || t.name || "Unknown" : t
226
+ ), h(
227
+ t,
228
+ b,
229
+ u,
230
+ c(),
231
+ C,
232
+ q
233
+ );
234
+ }
235
+ function X(t) {
236
+ Q(t) ? t._store && (t._store.validated = 1) : typeof t == "object" && t !== null && t.$$typeof === B && (t._payload.status === "fulfilled" ? Q(t._payload.value) && t._payload.value._store && (t._payload.value._store.validated = 1) : t._store && (t._store.validated = 1));
237
+ }
238
+ function Q(t) {
239
+ return typeof t == "object" && t !== null && t.$$typeof === Z;
240
+ }
241
+ var S = D, Z = Symbol.for("react.transitional.element"), _e = Symbol.for("react.portal"), L = Symbol.for("react.fragment"), de = Symbol.for("react.strict_mode"), ue = Symbol.for("react.profiler"), me = Symbol.for("react.consumer"), pe = Symbol.for("react.context"), be = Symbol.for("react.forward_ref"), fe = Symbol.for("react.suspense"), ge = Symbol.for("react.suspense_list"), he = Symbol.for("react.memo"), B = Symbol.for("react.lazy"), ye = Symbol.for("react.activity"), ve = Symbol.for("react.client.reference"), F = S.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, K = Object.prototype.hasOwnProperty, xe = Array.isArray, M = console.createTask ? console.createTask : function() {
242
+ return null;
243
+ };
244
+ S = {
245
+ react_stack_bottom_frame: function(t) {
246
+ return t();
247
+ }
248
+ };
249
+ var ee, te = {}, re = S.react_stack_bottom_frame.bind(
250
+ S,
251
+ l
252
+ )(), ne = M(o(l)), se = {};
253
+ T.Fragment = L, T.jsx = function(t, i, u) {
254
+ var p = 1e4 > F.recentlyCreatedOwnerStacks++;
255
+ return O(
256
+ t,
257
+ i,
258
+ u,
259
+ !1,
260
+ p ? Error("react-stack-top-frame") : re,
261
+ p ? M(o(t)) : ne
262
+ );
263
+ }, T.jsxs = function(t, i, u) {
264
+ var p = 1e4 > F.recentlyCreatedOwnerStacks++;
265
+ return O(
266
+ t,
267
+ i,
268
+ u,
269
+ !0,
270
+ p ? Error("react-stack-top-frame") : re,
271
+ p ? M(o(t)) : ne
272
+ );
273
+ };
274
+ }()), T;
275
+ }
276
+ process.env.NODE_ENV === "production" ? W.exports = Ee() : W.exports = Re();
277
+ var e = W.exports;
278
+ const Te = "_btn_1mzck_1", Ae = "_sm_1mzck_18", ke = "_md_1mzck_19", Pe = "_primary_1mzck_22", Oe = "_success_1mzck_25", Se = "_danger_1mzck_28", Ce = "_warning_1mzck_31", Ie = "_ghost_1mzck_34", De = "_spinner_1mzck_38", Le = "_wfpSpin_1mzck_1", w = {
279
+ btn: Te,
280
+ sm: Ae,
281
+ md: ke,
282
+ primary: Pe,
283
+ success: Oe,
284
+ danger: Se,
285
+ warning: Ce,
286
+ ghost: Ie,
287
+ spinner: De,
288
+ wfpSpin: Le
289
+ };
290
+ function Tn({
291
+ variant: r = "primary",
292
+ size: n = "md",
293
+ disabled: s = !1,
294
+ loading: o = !1,
295
+ onClick: c,
296
+ children: l,
297
+ type: a = "button",
298
+ className: d = "",
299
+ ...m
300
+ }) {
301
+ const h = [
302
+ w.btn,
303
+ w[r] || w.primary,
304
+ w[n] || w.md,
305
+ d
306
+ ].join(" ");
307
+ return /* @__PURE__ */ e.jsxs(
308
+ "button",
309
+ {
310
+ type: a,
311
+ className: h,
312
+ onClick: !s && !o ? c : void 0,
313
+ disabled: s || o,
314
+ ...m,
315
+ children: [
316
+ o && /* @__PURE__ */ e.jsx("span", { className: w.spinner }),
317
+ l
318
+ ]
319
+ }
320
+ );
321
+ }
322
+ const Be = "_wrapper_syblk_1", Fe = "_label_syblk_3", Me = "_req_syblk_10", qe = "_tag_syblk_11", Ue = "_input_syblk_21", ze = "_error_syblk_33", Ye = "_readOnly_syblk_34", He = "_errorMsg_syblk_36", y = {
323
+ wrapper: Be,
324
+ label: Fe,
325
+ req: Me,
326
+ tag: qe,
327
+ input: Ue,
328
+ error: ze,
329
+ readOnly: Ye,
330
+ errorMsg: He
331
+ }, An = G(function({
332
+ label: n,
333
+ required: s = !1,
334
+ error: o = null,
335
+ readOnly: c = !1,
336
+ tag: l = null,
337
+ className: a = "",
338
+ ...d
339
+ }) {
340
+ const [m, h] = J(!1), O = [
341
+ y.input,
342
+ o ? y.error : "",
343
+ c ? y.readOnly : "",
344
+ a
345
+ ].join(" ");
346
+ return /* @__PURE__ */ e.jsxs("div", { className: y.wrapper, children: [
347
+ n && /* @__PURE__ */ e.jsxs("label", { className: y.label, children: [
348
+ n,
349
+ s && /* @__PURE__ */ e.jsx("span", { className: y.req, children: "*" }),
350
+ l && /* @__PURE__ */ e.jsx("span", { className: y.tag, children: l })
351
+ ] }),
352
+ /* @__PURE__ */ e.jsx(
353
+ "input",
354
+ {
355
+ className: O,
356
+ readOnly: c,
357
+ onFocus: () => h(!0),
358
+ onBlur: () => h(!1),
359
+ ...d
360
+ }
361
+ ),
362
+ o && /* @__PURE__ */ e.jsx("span", { className: y.errorMsg, children: o })
363
+ ] });
364
+ }), We = "_wrapper_pzbpy_1", Ve = "_label_pzbpy_3", Ge = "_req_pzbpy_7", Je = "_select_pzbpy_9", Xe = "_error_pzbpy_26", Qe = "_errorMsg_pzbpy_28", $ = {
365
+ wrapper: We,
366
+ label: Ve,
367
+ req: Ge,
368
+ select: Je,
369
+ error: Xe,
370
+ errorMsg: Qe
371
+ }, kn = G(function({
372
+ label: n,
373
+ required: s = !1,
374
+ error: o = null,
375
+ options: c = [],
376
+ className: l = "",
377
+ ...a
378
+ }) {
379
+ const d = [$.select, o ? $.error : "", l].join(" ");
380
+ return /* @__PURE__ */ e.jsxs("div", { className: $.wrapper, children: [
381
+ n && /* @__PURE__ */ e.jsxs("label", { className: $.label, children: [
382
+ n,
383
+ s && /* @__PURE__ */ e.jsx("span", { className: $.req, children: "*" })
384
+ ] }),
385
+ /* @__PURE__ */ e.jsx("select", { className: d, ...a, children: c.map((m, h) => /* @__PURE__ */ e.jsx("option", { value: m.value ?? m, children: m.label ?? m }, h)) }),
386
+ o && /* @__PURE__ */ e.jsx("span", { className: $.errorMsg, children: o })
387
+ ] });
388
+ }), Ze = "_wrapper_1ndkr_1", Ke = "_label_1ndkr_2", et = "_req_1ndkr_3", tt = "_textarea_1ndkr_4", rt = "_error_1ndkr_10", nt = "_errorMsg_1ndkr_11", E = {
389
+ wrapper: Ze,
390
+ label: Ke,
391
+ req: et,
392
+ textarea: tt,
393
+ error: rt,
394
+ errorMsg: nt
395
+ }, Pn = G(function({
396
+ label: n,
397
+ required: s = !1,
398
+ error: o = null,
399
+ rows: c = 3,
400
+ className: l = "",
401
+ ...a
402
+ }) {
403
+ const d = [E.textarea, o ? E.error : "", l].join(" ");
404
+ return /* @__PURE__ */ e.jsxs("div", { className: E.wrapper, children: [
405
+ n && /* @__PURE__ */ e.jsxs("label", { className: E.label, children: [
406
+ n,
407
+ s && /* @__PURE__ */ e.jsx("span", { className: E.req, children: "*" })
408
+ ] }),
409
+ /* @__PURE__ */ e.jsx("textarea", { rows: c, className: d, ...a }),
410
+ o && /* @__PURE__ */ e.jsx("span", { className: E.errorMsg, children: o })
411
+ ] });
412
+ }), st = "_field_16wm4_1", at = {
413
+ field: st
414
+ };
415
+ function On({ children: r, className: n = "" }) {
416
+ return /* @__PURE__ */ e.jsx("div", { className: `${at.field} ${n}`, children: r });
417
+ }
418
+ const ot = "_label_14432_1", ct = {
419
+ label: ot
420
+ };
421
+ function Sn({ children: r }) {
422
+ return /* @__PURE__ */ e.jsx("div", { className: ct.label, children: r });
423
+ }
424
+ const lt = "_divider_1xp5h_1", it = {
425
+ divider: lt
426
+ };
427
+ function Cn({ className: r = "" }) {
428
+ return /* @__PURE__ */ e.jsx("hr", { className: `${it.divider} ${r}` });
429
+ }
430
+ const _t = "_row_jbp9f_1", dt = {
431
+ row: _t
432
+ };
433
+ function In({ children: r, gap: n = 10, align: s = "center", justify: o = "flex-start", mb: c = 0, className: l = "", style: a = {} }) {
434
+ return /* @__PURE__ */ e.jsx(
435
+ "div",
436
+ {
437
+ className: `${dt.row} ${l}`,
438
+ style: { gap: n, alignItems: s, justifyContent: o, marginBottom: c, ...a },
439
+ children: r
440
+ }
441
+ );
442
+ }
443
+ const ut = "_grid_16e4k_1", mt = {
444
+ grid: ut
445
+ };
446
+ function Dn({ cols: r = 2, gap: n = 12, children: s, className: o = "", style: c = {} }) {
447
+ return /* @__PURE__ */ e.jsx(
448
+ "div",
449
+ {
450
+ className: `${mt.grid} ${o}`,
451
+ style: { gridTemplateColumns: `repeat(${r},1fr)`, gap: n, ...c },
452
+ children: s
453
+ }
454
+ );
455
+ }
456
+ const pt = "_nav_1e0iw_1", bt = "_brand_1e0iw_6", ft = "_brandName_1e0iw_7", gt = "_brandTag_1e0iw_8", ht = "_tabs_1e0iw_9", yt = "_tab_1e0iw_9", vt = "_tabActive_1e0iw_12", xt = "_right_1e0iw_13", Nt = "_hrpId_1e0iw_14", jt = "_dot_1e0iw_15", g = {
457
+ nav: pt,
458
+ brand: bt,
459
+ brandName: ft,
460
+ brandTag: gt,
461
+ tabs: ht,
462
+ tab: yt,
463
+ tabActive: vt,
464
+ right: xt,
465
+ hrpId: Nt,
466
+ dot: jt
467
+ }, wt = [
468
+ { label: "Dashboard", path: "/" },
469
+ { label: "ICC", path: "/icc" },
470
+ { label: "Anaplan", path: "/anaplan" },
471
+ { label: "+ New HRP", path: "/new-hrp" }
472
+ ];
473
+ function $t({ hrpId: r = null, statusColor: n = "#1fd698" }) {
474
+ const s = le(), o = $e();
475
+ return /* @__PURE__ */ e.jsxs("nav", { className: g.nav, children: [
476
+ /* @__PURE__ */ e.jsxs("div", { className: g.brand, children: [
477
+ /* @__PURE__ */ e.jsx("span", { className: g.brandName, children: "Project Alpha" }),
478
+ /* @__PURE__ */ e.jsx("span", { className: g.brandTag, children: "PDO" })
479
+ ] }),
480
+ /* @__PURE__ */ e.jsx("div", { className: g.tabs, children: wt.map((c) => /* @__PURE__ */ e.jsx(
481
+ "button",
482
+ {
483
+ onClick: () => s(c.path),
484
+ className: `${g.tab} ${o.pathname === c.path ? g.tabActive : ""}`,
485
+ children: c.label
486
+ },
487
+ c.path
488
+ )) }),
489
+ /* @__PURE__ */ e.jsxs("div", { className: g.right, children: [
490
+ /* @__PURE__ */ e.jsx("span", { children: "WW · FY26" }),
491
+ r && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
492
+ /* @__PURE__ */ e.jsx("span", { children: "·" }),
493
+ /* @__PURE__ */ e.jsx("span", { className: g.hrpId, children: r })
494
+ ] }),
495
+ /* @__PURE__ */ e.jsx("div", { className: g.dot, style: { background: n } })
496
+ ] })
497
+ ] });
498
+ }
499
+ const Et = "_sidebar_11r1l_1", Rt = "_btn_11r1l_2", I = {
500
+ sidebar: Et,
501
+ btn: Rt
502
+ };
503
+ function Tt() {
504
+ const r = le();
505
+ return /* @__PURE__ */ e.jsxs("aside", { className: I.sidebar, children: [
506
+ /* @__PURE__ */ e.jsx("button", { className: I.btn, title: "Queue", onClick: () => r("/"), children: "☰" }),
507
+ /* @__PURE__ */ e.jsx("button", { className: I.btn, title: "Settings", onClick: () => {
508
+ }, children: "⚙" }),
509
+ /* @__PURE__ */ e.jsx("button", { className: I.btn, title: "Help", onClick: () => {
510
+ }, children: "?" })
511
+ ] });
512
+ }
513
+ const At = "_shell_15q67_1", kt = "_body_15q67_2", Pt = "_main_15q67_3", z = {
514
+ shell: At,
515
+ body: kt,
516
+ main: Pt
517
+ };
518
+ function Ln({ children: r, hrpId: n, statusColor: s }) {
519
+ return /* @__PURE__ */ e.jsxs("div", { className: z.shell, children: [
520
+ /* @__PURE__ */ e.jsx($t, { hrpId: n, statusColor: s }),
521
+ /* @__PURE__ */ e.jsxs("div", { className: z.body, children: [
522
+ /* @__PURE__ */ e.jsx(Tt, {}),
523
+ /* @__PURE__ */ e.jsx("main", { className: z.main, children: r })
524
+ ] })
525
+ ] });
526
+ }
527
+ const Ot = "_page_rebrs_1", St = {
528
+ page: Ot
529
+ };
530
+ function Bn({ children: r }) {
531
+ return /* @__PURE__ */ e.jsx("div", { className: St.page, children: r });
532
+ }
533
+ const Ct = "_banner_y29wr_1", It = "_error_y29wr_2", Dt = "_warning_y29wr_3", Lt = "_icon_y29wr_4", Bt = "_body_y29wr_7", Ft = "_msg_y29wr_8", Mt = "_meta_y29wr_11", qt = "_code_y29wr_12", Ut = "_retry_y29wr_13", zt = "_actions_y29wr_14", Yt = "_actionBtn_y29wr_15", Ht = "_closeBtn_y29wr_16", Wt = "_zone_y29wr_17", f = {
534
+ banner: Ct,
535
+ error: It,
536
+ warning: Dt,
537
+ icon: Lt,
538
+ body: Bt,
539
+ msg: Ft,
540
+ meta: Mt,
541
+ code: qt,
542
+ retry: Ut,
543
+ actions: zt,
544
+ actionBtn: Yt,
545
+ closeBtn: Ht,
546
+ zone: Wt
547
+ }, ce = {
548
+ AUTH_ERROR: { type: "error", message: "Authentication failed. Please contact your administrator.", action: "Contact admin", retryable: !1 },
549
+ API_TIMEOUT: { type: "warning", message: "The request timed out. The system will retry automatically.", action: null, retryable: !0 },
550
+ RETRY_EXHAUSTED: { type: "error", message: "Service temporarily unavailable after multiple retries. Please try again later.", action: "Try again later", retryable: !1 },
551
+ RATE_LIMITED: { type: "warning", message: "Too many requests. The system will automatically resume shortly.", action: null, retryable: !0 },
552
+ HRP_NOT_FOUND: { type: "error", message: "The HRP could not be found. Please verify the HRP ID.", action: "Check HRP ID", retryable: !1 },
553
+ HRP_ALREADY_PROCESSED: { type: "warning", message: "This HRP has already been processed.", action: null, retryable: !1 },
554
+ INVALID_STAFFING_GROUP_NAME: { type: "error", message: "The staffing group name is invalid. Please check the project name.", action: "Edit name", retryable: !1 },
555
+ FB_ID_TIMEOUT: { type: "warning", message: "Staffing group approval timed out. The ICC team has been notified.", action: "Contact ICC team", retryable: !0 },
556
+ NO_ACTIVE_HRP: { type: "error", message: "No HRP is currently selected. Please return to the dashboard and select an HRP.", action: "Go to Dashboard", retryable: !1 },
557
+ ANAPLAN_MODEL_BUSY: { type: "warning", message: "Anaplan is currently busy. The system will retry automatically.", action: null, retryable: !0 },
558
+ ANAPLAN_ACTION_FAILED: { type: "error", message: "An Anaplan action failed. Please contact your administrator.", action: "Contact admin", retryable: !1 },
559
+ PROJECT_NAME_AMBIGUOUS: { type: "warning", message: "Could not automatically resolve the project name. Manual selection required.", action: "Select manually", retryable: !1 },
560
+ MAXBILL_VALIDATION_FAILED: { type: "error", message: "MaxBill data does not match expected values. Please review before proceeding.", action: "Review MaxBill", retryable: !1 },
561
+ DB_CONNECTION_FAILED: { type: "error", message: "Unable to connect to the database. Please try again shortly.", action: "Retry", retryable: !0 },
562
+ DB_QUERY_FAILED: { type: "error", message: "A database error occurred. Your data has not been changed.", action: "Retry", retryable: !0 },
563
+ DB_WRITE_FAILED: { type: "error", message: "Failed to save data. Please try again. No changes were made.", action: "Retry", retryable: !0 },
564
+ DB_RECORD_NOT_FOUND: { type: "error", message: "The requested record could not be found.", action: "Refresh", retryable: !1 },
565
+ DB_DUPLICATE_ENTRY: { type: "warning", message: "This record already exists.", action: null, retryable: !1 },
566
+ WS_CONNECTION_FAILED: { type: "warning", message: "Live updates disconnected. Reconnecting automatically.", action: null, retryable: !0 },
567
+ WS_TIMEOUT: { type: "warning", message: "Live connection timed out. Reconnecting…", action: null, retryable: !0 },
568
+ WS_AUTH_FAILED: { type: "error", message: "Live connection rejected. Please refresh the page.", action: "Refresh page", retryable: !1 },
569
+ FRONTEND_JS_ERROR: { type: "error", message: "Something went wrong on this page. Please refresh.", action: "Refresh page", retryable: !1 },
570
+ FRONTEND_NETWORK_ERROR: { type: "warning", message: "Network connection lost. Please check your internet connection.", action: "Check connection", retryable: !0 },
571
+ FRONTEND_VALIDATION_ERROR: { type: "warning", message: "Please fix the highlighted fields and try again.", action: null, retryable: !1 },
572
+ VALIDATION_ERROR: { type: "warning", message: "Please fix the highlighted fields and try again.", action: null, retryable: !1 },
573
+ EMAIL_SEND_FAILED: { type: "error", message: "Failed to send vendor email. Please try again or send manually.", action: "Retry", retryable: !0 },
574
+ LOOKUP_MISSING: { type: "error", message: "A required configuration mapping is missing. Please contact your administrator.", action: "Contact admin", retryable: !1 },
575
+ UNHANDLED_ERROR: { type: "error", message: "An unexpected error occurred. Please try again or contact support.", action: "Contact support", retryable: !1 }
576
+ };
577
+ function Vt({ code: r, message: n, type: s = "error", onClose: o }) {
578
+ const c = r ? ce[r] || ce.UNHANDLED_ERROR : { type: s, message: n, action: null, retryable: !1 }, l = c.type === "error";
579
+ return /* @__PURE__ */ e.jsxs("div", { className: `${f.banner} ${l ? f.error : f.warning}`, children: [
580
+ /* @__PURE__ */ e.jsx("div", { className: f.icon, children: l ? "✕" : "⚠" }),
581
+ /* @__PURE__ */ e.jsxs("div", { className: f.body, children: [
582
+ /* @__PURE__ */ e.jsx("div", { className: f.msg, children: c.message }),
583
+ /* @__PURE__ */ e.jsxs("div", { className: f.meta, children: [
584
+ r && /* @__PURE__ */ e.jsx("span", { className: f.code, children: r }),
585
+ c.retryable && /* @__PURE__ */ e.jsx("span", { className: f.retry, children: "System will retry automatically" })
586
+ ] })
587
+ ] }),
588
+ /* @__PURE__ */ e.jsxs("div", { className: f.actions, children: [
589
+ c.action && /* @__PURE__ */ e.jsx("button", { className: f.actionBtn, children: c.action }),
590
+ /* @__PURE__ */ e.jsx("button", { className: f.closeBtn, onClick: o, children: "✕" })
591
+ ] })
592
+ ] });
593
+ }
594
+ function Fn({ banners: r = [], onClose: n }) {
595
+ return r.length ? /* @__PURE__ */ e.jsx("div", { className: f.zone, children: r.map((s) => /* @__PURE__ */ e.jsx(Vt, { code: s.code, onClose: () => n(s.id) }, s.id)) }) : null;
596
+ }
597
+ const Gt = "_overlay_1vlo1_1", Jt = "_wfpFadeUp_1vlo1_1", Xt = "_dialog_1vlo1_2", Qt = "_title_1vlo1_3", Zt = "_message_1vlo1_4", Kt = "_btns_1vlo1_5", er = "_cancel_1vlo1_6", tr = "_confirm_1vlo1_7", rr = "_success_1vlo1_8", nr = "_danger_1vlo1_10", sr = "_warning_1vlo1_12", v = {
598
+ overlay: Gt,
599
+ wfpFadeUp: Jt,
600
+ dialog: Xt,
601
+ title: Qt,
602
+ message: Zt,
603
+ btns: Kt,
604
+ cancel: er,
605
+ confirm: tr,
606
+ success: rr,
607
+ danger: nr,
608
+ warning: sr
609
+ };
610
+ function Mn({ title: r, message: n, onConfirm: s, onCancel: o, type: c = "danger" }) {
611
+ return /* @__PURE__ */ e.jsx("div", { className: v.overlay, onClick: (l) => l.target === l.currentTarget && o(), children: /* @__PURE__ */ e.jsxs("div", { className: v.dialog, children: [
612
+ /* @__PURE__ */ e.jsx("div", { className: v.title, children: r }),
613
+ /* @__PURE__ */ e.jsx("div", { className: v.message, children: n }),
614
+ /* @__PURE__ */ e.jsxs("div", { className: v.btns, children: [
615
+ /* @__PURE__ */ e.jsx("button", { className: v.cancel, onClick: o, children: "Cancel" }),
616
+ /* @__PURE__ */ e.jsx("button", { className: `${v.confirm} ${v[c]}`, onClick: s, children: "Confirm" })
617
+ ] })
618
+ ] }) });
619
+ }
620
+ function qn() {
621
+ const [r, n] = J([]), s = P((l) => n((a) => [{ id: Date.now(), code: l }, ...a]), []), o = P((l) => n((a) => a.filter((d) => d.id !== l)), []), c = P(() => n([]), []);
622
+ return { banners: r, push: s, close: o, clear: c };
623
+ }
624
+ const ar = "_container_p895y_1", or = "_toast_p895y_2", cr = "_wfpSlideIn_p895y_1", lr = "_info_p895y_3", ir = "_success_p895y_4", _r = "_warning_p895y_5", dr = "_error_p895y_6", V = {
625
+ container: ar,
626
+ toast: or,
627
+ wfpSlideIn: cr,
628
+ info: lr,
629
+ success: ir,
630
+ warning: _r,
631
+ error: dr
632
+ };
633
+ function ur({ message: r, type: n = "info", onDone: s }) {
634
+ return D.useEffect(() => {
635
+ const o = setTimeout(s, 3500);
636
+ return () => clearTimeout(o);
637
+ }, []), /* @__PURE__ */ e.jsx("div", { className: `${V.toast} ${V[n]}`, children: r });
638
+ }
639
+ const ie = je(null);
640
+ function Un({ children: r }) {
641
+ const [n, s] = J([]), o = P((l, a = "info") => s((d) => [...d, { id: Date.now(), message: l, type: a }]), []), c = P((l) => s((a) => a.filter((d) => d.id !== l)), []);
642
+ return /* @__PURE__ */ e.jsxs(ie.Provider, { value: o, children: [
643
+ r,
644
+ /* @__PURE__ */ e.jsx("div", { className: V.container, children: n.map((l) => /* @__PURE__ */ e.jsx(ur, { message: l.message, type: l.type, onDone: () => c(l.id) }, l.id)) })
645
+ ] });
646
+ }
647
+ function zn() {
648
+ const r = we(ie);
649
+ if (!r) throw new Error("useToast must be inside ToastProvider");
650
+ return r;
651
+ }
652
+ const mr = "_chip_18rp2_1", pr = {
653
+ chip: mr
654
+ };
655
+ function br({ id: r }) {
656
+ return /* @__PURE__ */ e.jsx("span", { className: pr.chip, children: r });
657
+ }
658
+ const fr = "_badge_r5bqs_1", gr = "_triage_r5bqs_2", hr = "_review_r5bqs_3", yr = "_auto_r5bqs_4", vr = "_email_r5bqs_5", xr = "_done_r5bqs_6", Nr = "_error_r5bqs_7", Y = {
659
+ badge: fr,
660
+ triage: gr,
661
+ review: hr,
662
+ auto: yr,
663
+ email: vr,
664
+ done: xr,
665
+ error: Nr
666
+ }, jr = {
667
+ triage: "• Needs Triage",
668
+ review: "• Review Intake",
669
+ auto: "• Automating",
670
+ email: "• Send Vendor Email",
671
+ done: "• Complete",
672
+ error: "• Error"
673
+ };
674
+ function wr({ status: r }) {
675
+ return /* @__PURE__ */ e.jsx("span", { className: `${Y.badge} ${Y[r] || Y.error}`, children: jr[r] || r });
676
+ }
677
+ const $r = "_pill_1f8sz_1", Er = "_change_1f8sz_3", Rr = "_offboard_1f8sz_4", H = {
678
+ pill: $r,
679
+ new: "_new_1f8sz_2",
680
+ change: Er,
681
+ offboard: Rr
682
+ };
683
+ function Tr({ type: r }) {
684
+ return /* @__PURE__ */ e.jsx("span", { className: `${H.pill} ${H[r] || H.change}`, children: r });
685
+ }
686
+ const Ar = "_row_1xcr3_1", kr = "_dot_1xcr3_2", Pr = "_done_1xcr3_3", Or = "_active_1xcr3_4", Sr = "_pending_1xcr3_5", Cr = "_error_1xcr3_6", Ir = "_sep_1xcr3_7", A = {
687
+ row: Ar,
688
+ dot: kr,
689
+ done: Pr,
690
+ active: Or,
691
+ pending: Sr,
692
+ error: Cr,
693
+ sep: Ir
694
+ }, Dr = ["Triage", "ICC", "Anaplan", "Intake", "MaxBill"];
695
+ function Lr({ states: r = [] }) {
696
+ return /* @__PURE__ */ e.jsx("div", { className: A.row, children: r.map((n, s) => /* @__PURE__ */ e.jsxs(D.Fragment, { children: [
697
+ /* @__PURE__ */ e.jsx("div", { className: `${A.dot} ${A[n] || A.pending}`, title: Dr[s] || "" }),
698
+ s < r.length - 1 && /* @__PURE__ */ e.jsx("span", { className: A.sep, children: "›" })
699
+ ] }, s)) });
700
+ }
701
+ const Br = "_card_mm918_1", Fr = "_num_mm918_4", Mr = "_lbl_mm918_5", qr = "_amber_mm918_6", Ur = "_blue_mm918_7", zr = "_green_mm918_8", Yr = "_red_mm918_9", Hr = "_white_mm918_10", k = {
702
+ card: Br,
703
+ num: Fr,
704
+ lbl: Mr,
705
+ amber: qr,
706
+ blue: Ur,
707
+ green: zr,
708
+ red: Yr,
709
+ white: Hr
710
+ };
711
+ function Yn({ count: r, label: n, color: s = "white", onClick: o }) {
712
+ return /* @__PURE__ */ e.jsxs("div", { className: `${k.card} ${k[s] || k.white}`, onClick: o, children: [
713
+ /* @__PURE__ */ e.jsx("div", { className: k.num, children: r }),
714
+ /* @__PURE__ */ e.jsx("div", { className: k.lbl, children: n })
715
+ ] });
716
+ }
717
+ const Wr = "_bar_ph9gg_1", Vr = "_item_ph9gg_2", Gr = "_lbl_ph9gg_3", Jr = "_val_ph9gg_4", Xr = "_highlight_ph9gg_5", Qr = "_mono_ph9gg_6", Zr = "_right_ph9gg_7", x = {
718
+ bar: Wr,
719
+ item: Vr,
720
+ lbl: Gr,
721
+ val: Jr,
722
+ highlight: Xr,
723
+ mono: Qr,
724
+ right: Zr
725
+ };
726
+ function Hn({ items: r = [], children: n }) {
727
+ return /* @__PURE__ */ e.jsxs("div", { className: x.bar, children: [
728
+ r.map((s, o) => /* @__PURE__ */ e.jsxs("div", { className: x.item, children: [
729
+ /* @__PURE__ */ e.jsx("span", { className: x.lbl, children: s.label }),
730
+ /* @__PURE__ */ e.jsx("span", { className: `${x.val} ${s.highlight ? x.highlight : ""} ${s.mono ? x.mono : ""}`, children: s.value })
731
+ ] }, o)),
732
+ n && /* @__PURE__ */ e.jsx("div", { className: x.right, children: n })
733
+ ] });
734
+ }
735
+ const Kr = "_subnav_1c61u_1", en = "_step_1c61u_2", tn = "_active_1c61u_3", rn = "_dot_1c61u_4", nn = "_done_1c61u_5", sn = "_pending_1c61u_7", an = "_error_1c61u_8", on = "_sep_1c61u_9", cn = "_time_1c61u_10", N = {
736
+ subnav: Kr,
737
+ step: en,
738
+ active: tn,
739
+ dot: rn,
740
+ done: nn,
741
+ pending: sn,
742
+ error: an,
743
+ sep: on,
744
+ time: cn
745
+ };
746
+ function Wn({ steps: r = [] }) {
747
+ return /* @__PURE__ */ e.jsx("div", { className: N.subnav, children: r.map((n, s) => /* @__PURE__ */ e.jsxs(D.Fragment, { children: [
748
+ /* @__PURE__ */ e.jsxs("div", { className: `${N.step} ${N[n.state] || N.pending}`, children: [
749
+ /* @__PURE__ */ e.jsx("div", { className: N.dot }),
750
+ n.label,
751
+ n.time && /* @__PURE__ */ e.jsx("span", { className: N.time, children: n.time })
752
+ ] }),
753
+ s < r.length - 1 && /* @__PURE__ */ e.jsx("span", { className: N.sep, children: "›" })
754
+ ] }, s)) });
755
+ }
756
+ const ln = "_wrap_nt244_1", _n = "_table_nt244_2", dn = "_th_nt244_3", un = "_td_nt244_4", mn = "_tr_nt244_5", pn = "_done_nt244_7", bn = "_project_nt244_8", fn = "_unassigned_nt244_9", gn = "_planner_nt244_10", hn = "_actionBtn_nt244_13", yn = "_triage_nt244_14", vn = "_review_nt244_15", xn = "_email_nt244_16", Nn = "_retry_nt244_17", jn = "_auto_nt244_18", wn = "_log_nt244_19", _ = {
757
+ wrap: ln,
758
+ table: _n,
759
+ th: dn,
760
+ td: un,
761
+ tr: mn,
762
+ done: pn,
763
+ project: bn,
764
+ unassigned: fn,
765
+ planner: gn,
766
+ actionBtn: hn,
767
+ triage: yn,
768
+ review: vn,
769
+ email: xn,
770
+ retry: Nn,
771
+ auto: jn,
772
+ log: wn
773
+ }, $n = ["HRP ID", "Project", "Type", "PJM", "Vendor · Site", "Hrs/Wk", "Planner", "Pipeline", "Status", "Action"];
774
+ function Vn({ hrps: r = [], onTriage: n, onReview: s, onEmail: o, onRetry: c }) {
775
+ function l({ hrp: a }) {
776
+ const d = (m) => m.stopPropagation();
777
+ return a.status === "triage" ? /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.triage}`, onClick: (m) => {
778
+ d(m), n == null || n(a.id);
779
+ }, children: "Triage →" }) : a.status === "review" ? /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.review}`, onClick: (m) => {
780
+ d(m), s == null || s(a.id);
781
+ }, children: "Review →" }) : a.status === "email" ? /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.email}`, onClick: (m) => {
782
+ d(m), o == null || o(a.id);
783
+ }, children: "Send Email →" }) : a.status === "error" ? /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.retry}`, onClick: (m) => {
784
+ d(m), c == null || c(a.id);
785
+ }, children: "Retry" }) : a.status === "auto" ? /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.auto}`, disabled: !0, children: "Automating…" }) : /* @__PURE__ */ e.jsx("button", { className: `${_.actionBtn} ${_.log}`, onClick: d, children: "Log" });
786
+ }
787
+ return /* @__PURE__ */ e.jsx("div", { className: _.wrap, children: /* @__PURE__ */ e.jsxs("table", { className: _.table, children: [
788
+ /* @__PURE__ */ e.jsx("thead", { children: /* @__PURE__ */ e.jsx("tr", { children: $n.map((a) => /* @__PURE__ */ e.jsx("th", { className: _.th, children: a }, a)) }) }),
789
+ /* @__PURE__ */ e.jsx("tbody", { children: r.map((a) => /* @__PURE__ */ e.jsxs("tr", { className: `${_.tr} ${a.status === "done" ? _.done : ""}`, children: [
790
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx(br, { id: a.id }) }),
791
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx("span", { className: _.project, children: a.project }) }),
792
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx(Tr, { type: a.type }) }),
793
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: a.pjm }),
794
+ /* @__PURE__ */ e.jsxs("td", { className: `${_.td} ${a.vendor === "- not assigned -" ? _.unassigned : ""}`, children: [
795
+ a.vendor,
796
+ a.site ? ` – ${a.site}` : ""
797
+ ] }),
798
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: a.hrs }),
799
+ /* @__PURE__ */ e.jsx("td", { className: `${_.td} ${_.planner}`, children: a.planner || "—" }),
800
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx(Lr, { states: a.pipeline }) }),
801
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx(wr, { status: a.status }) }),
802
+ /* @__PURE__ */ e.jsx("td", { className: _.td, children: /* @__PURE__ */ e.jsx(l, { hrp: a }) })
803
+ ] }, a.id)) })
804
+ ] }) });
805
+ }
806
+ export {
807
+ Vt as Banner,
808
+ Fn as BannerZone,
809
+ Tn as Button,
810
+ Mn as ConfirmDialog,
811
+ Cn as Divider,
812
+ On as FormField,
813
+ Dn as Grid,
814
+ br as HRPIdChip,
815
+ Vn as HRPTable,
816
+ Hn as InfoBar,
817
+ An as Input,
818
+ Bn as Page,
819
+ Ln as PageShell,
820
+ Lr as PipelineDots,
821
+ In as Row,
822
+ Sn as SectionLabel,
823
+ kn as Select,
824
+ Tt as Sidebar,
825
+ Yn as StatCard,
826
+ wr as StatusBadge,
827
+ Wn as SubnavPipeline,
828
+ Pn as Textarea,
829
+ Un as ToastProvider,
830
+ $t as TopNav,
831
+ Tr as TypePill,
832
+ qn as useBanners,
833
+ zn as useToast
834
+ };
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ ._btn_1mzck_1{display:inline-flex;align-items:center;gap:6px;font-family:var(--fn);font-weight:600;border-radius:var(--r2);border:1px solid transparent;cursor:pointer;transition:background .13s,opacity .13s;white-space:nowrap;line-height:1;text-decoration:none}._btn_1mzck_1:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}._sm_1mzck_18{padding:4px 11px;font-size:11px}._md_1mzck_19{padding:8px 18px;font-size:12px}._primary_1mzck_22{background:var(--ac);border-color:var(--ac);color:#fff}._primary_1mzck_22:hover{background:var(--ac2)}._success_1mzck_25{background:var(--gn2);border-color:var(--gn2);color:#fff}._success_1mzck_25:hover{background:var(--gn)}._danger_1mzck_28{background:var(--rd2);border-color:var(--rd2);color:#fff}._danger_1mzck_28:hover{background:var(--rd)}._warning_1mzck_31{background:#f59e0b2e;border-color:#f59e0b66;color:var(--am)}._warning_1mzck_31:hover{background:#f59e0b47}._ghost_1mzck_34{background:var(--sf2);border-color:var(--br2);color:var(--t2)}._ghost_1mzck_34:hover{color:var(--t1)}._spinner_1mzck_38{width:10px;height:10px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:_wfpSpin_1mzck_1 .7s linear infinite;display:inline-block}._wrapper_syblk_1{display:flex;flex-direction:column;gap:4px}._label_syblk_3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--t3)}._req_syblk_10{color:var(--rd);margin-left:2px}._tag_syblk_11{font-size:9px;background:#4f7cff33;color:#7b9bff;padding:1px 5px;border-radius:3px;margin-left:5px;font-weight:600}._input_syblk_21{background:var(--bg3);border:1px solid var(--br2);border-radius:var(--r);padding:7px 10px;font-size:12px;color:var(--t1);outline:none;width:100%;transition:border-color .13s}._input_syblk_21:focus{border-color:var(--ac);background:var(--sf2)}._input_syblk_21._error_syblk_33{border-color:var(--rd)!important}._input_syblk_21._readOnly_syblk_34{opacity:.65;cursor:default;background:#11182780}._errorMsg_syblk_36{font-size:10px;color:var(--rd);margin-top:2px}._wrapper_pzbpy_1{display:flex;flex-direction:column;gap:4px}._label_pzbpy_3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--t3)}._req_pzbpy_7{color:var(--rd);margin-left:2px}._select_pzbpy_9{background:var(--bg3);border:1px solid var(--br2);border-radius:var(--r);padding:7px 28px 7px 10px;font-size:12px;color:var(--t1);outline:none;width:100%;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath fill='%234a5878' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;transition:border-color .13s}._select_pzbpy_9:focus{border-color:var(--ac);background-color:var(--sf2)}._select_pzbpy_9._error_pzbpy_26{border-color:var(--rd)!important}._errorMsg_pzbpy_28{font-size:10px;color:var(--rd);margin-top:2px}._wrapper_1ndkr_1{display:flex;flex-direction:column;gap:4px}._label_1ndkr_2{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--t3)}._req_1ndkr_3{color:var(--rd);margin-left:2px}._textarea_1ndkr_4{background:var(--bg3);border:1px solid var(--br2);border-radius:var(--r);padding:7px 10px;font-size:12px;color:var(--t1);outline:none;width:100%;resize:vertical;transition:border-color .13s;line-height:1.6}._textarea_1ndkr_4:focus{border-color:var(--ac);background:var(--sf2)}._textarea_1ndkr_4._error_1ndkr_10{border-color:var(--rd)!important}._errorMsg_1ndkr_11{font-size:10px;color:var(--rd);margin-top:2px}._field_16wm4_1{display:flex;flex-direction:column;gap:4px}._label_14432_1{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--t3);padding:14px 0 10px;border-bottom:1px solid var(--br);margin-bottom:14px;text-align:center}._divider_1xp5h_1{height:1px;background:var(--br);margin:16px 0;border:none}._row_jbp9f_1{display:flex;align-items:center}._grid_16e4k_1{display:grid}._nav_1e0iw_1{background:var(--bg2);border-bottom:1px solid var(--br);height:44px;display:flex;align-items:center;padding:0 20px;position:sticky;top:0;z-index:100;flex-shrink:0}._brand_1e0iw_6{display:flex;align-items:center;gap:8px;margin-right:16px;font-family:var(--fh)}._brandName_1e0iw_7{font-size:13px;font-weight:800;color:var(--t1);letter-spacing:-.01em}._brandTag_1e0iw_8{background:var(--ac);color:#fff;font-size:9px;padding:2px 7px;border-radius:4px;font-weight:700;letter-spacing:.04em}._tabs_1e0iw_9{display:flex;align-items:center;gap:2px;flex:1}._tab_1e0iw_9{padding:5px 13px;font-size:12px;font-weight:500;color:var(--t2);border-radius:var(--r);cursor:pointer;border:none;background:none;transition:all .13s}._tab_1e0iw_9:hover{background:var(--bg3);color:var(--t1)}._tabActive_1e0iw_12{background:var(--sf2)!important;color:var(--t1)!important;font-weight:600!important}._right_1e0iw_13{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--t3)}._hrpId_1e0iw_14{font-family:var(--mo);color:var(--ac);font-size:11px}._dot_1e0iw_15{width:7px;height:7px;border-radius:50%;margin-left:4px}._sidebar_11r1l_1{width:36px;background:var(--bg2);border-right:1px solid var(--br);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:4px;flex-shrink:0}._btn_11r1l_2{width:28px;height:28px;border-radius:var(--r);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--t3);border:none;background:none;font-size:14px;transition:all .13s}._btn_11r1l_2:hover{background:var(--bg3);color:var(--t1)}._shell_15q67_1{display:flex;flex-direction:column;min-height:100vh}._body_15q67_2{display:flex;flex:1}._main_15q67_3{flex:1;overflow:auto;min-width:0}._page_rebrs_1{padding:20px 24px}._banner_y29wr_1{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:var(--r2);margin-bottom:8px;border:1px solid;animation:_wfpFadeUp_y29wr_1 .2s ease}._error_y29wr_2{background:#f04b4b14;border-color:#f04b4b4d;border-left:3px solid var(--rd)}._warning_y29wr_3{background:#f59e0b14;border-color:#f59e0b4d;border-left:3px solid var(--am)}._icon_y29wr_4{width:22px;height:22px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff}._error_y29wr_2 ._icon_y29wr_4{background:var(--rd2)}._warning_y29wr_3 ._icon_y29wr_4{background:var(--am2)}._body_y29wr_7{flex:1}._msg_y29wr_8{font-size:13px;font-weight:500;margin-bottom:3px}._error_y29wr_2 ._msg_y29wr_8{color:#f88}._warning_y29wr_3 ._msg_y29wr_8{color:#ffd080}._meta_y29wr_11{display:flex;align-items:center;gap:8px}._code_y29wr_12{font-family:var(--mo);font-size:10px;color:var(--t3);background:var(--bg3);padding:1px 5px;border-radius:3px}._retry_y29wr_13{font-size:11px;color:var(--t3)}._actions_y29wr_14{display:flex;gap:6px;flex-shrink:0;align-items:center}._actionBtn_y29wr_15{font-size:11px;font-weight:600;padding:3px 9px;border-radius:var(--r);cursor:pointer;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:var(--t1)}._closeBtn_y29wr_16{background:none;border:none;cursor:pointer;color:var(--t3);font-size:14px;padding:2px;line-height:1}._zone_y29wr_17{margin-bottom:12px}._overlay_1vlo1_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:8000;padding:20px;animation:_wfpFadeUp_1vlo1_1 .15s ease}._dialog_1vlo1_2{background:var(--sf);border:1px solid var(--br);border-radius:var(--r3);padding:28px;max-width:420px;width:100%;animation:_wfpFadeUp_1vlo1_1 .2s ease}._title_1vlo1_3{font-size:16px;font-weight:700;font-family:var(--fh);color:var(--t1);margin-bottom:8px}._message_1vlo1_4{font-size:13px;color:var(--t2);margin-bottom:22px;line-height:1.6}._btns_1vlo1_5{display:flex;justify-content:flex-end;gap:8px}._cancel_1vlo1_6{padding:7px 16px;font-size:12px;font-weight:600;border-radius:var(--r2);border:1px solid var(--br2);background:var(--sf2);color:var(--t2);cursor:pointer}._confirm_1vlo1_7{padding:7px 16px;font-size:12px;font-weight:600;border-radius:var(--r2);border:none;cursor:pointer;transition:background .13s;color:#fff}._success_1vlo1_8{background:var(--gn2)}._success_1vlo1_8:hover{background:var(--gn)}._danger_1vlo1_10{background:var(--rd2)}._danger_1vlo1_10:hover{background:var(--rd)}._warning_1vlo1_12{background:#f59e0b33;color:var(--am)}._container_p895y_1{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}._toast_p895y_2{background:var(--sf2);border:1px solid var(--br);border-radius:var(--r2);padding:10px 14px;font-size:12px;color:var(--t1);box-shadow:0 4px 20px #00000080;max-width:320px;animation:_wfpSlideIn_p895y_1 .2s ease;pointer-events:all}._info_p895y_3{border-color:#4f7cff80;color:#7b9bff}._success_p895y_4{border-color:#1fd69880;color:var(--gn)}._warning_p895y_5{border-color:#f59e0b80;color:var(--am)}._error_p895y_6{border-color:#f04b4b80;color:var(--rd)}._chip_18rp2_1{font-family:var(--mo);font-size:11px;color:var(--ac);font-weight:500}._badge_r5bqs_1{font-size:10px;font-weight:600;padding:3px 8px;border-radius:var(--r);white-space:nowrap;border:1px solid transparent}._triage_r5bqs_2{background:#f59e0b1f;color:var(--am);border-color:#f59e0b40}._review_r5bqs_3{background:#f070301f;color:var(--or);border-color:#f0703040}._auto_r5bqs_4{background:#4f7cff1f;color:#7b9bff;border-color:#4f7cff40}._email_r5bqs_5{background:#9b6ef31f;color:#b89bff;border-color:#9b6ef340}._done_r5bqs_6{background:#1fd6981f;color:var(--gn);border-color:#1fd69840}._error_r5bqs_7{background:#f04b4b1f;color:var(--rd);border-color:#f04b4b40}._pill_1f8sz_1{font-size:9px;font-weight:700;padding:2px 7px;border-radius:var(--r);text-transform:uppercase;letter-spacing:.04em}._new_1f8sz_2{background:#4f7cff2e;color:#7b9bff}._change_1f8sz_3{background:#f59e0b26;color:var(--am)}._offboard_1f8sz_4{background:#f04b4b26;color:var(--rd)}._row_1xcr3_1{display:flex;align-items:center;gap:3px}._dot_1xcr3_2{width:6px;height:6px;border-radius:50%;flex-shrink:0}._done_1xcr3_3{background:var(--gn)}._active_1xcr3_4{background:var(--am)}._pending_1xcr3_5{background:var(--t3)}._error_1xcr3_6{background:var(--rd)}._sep_1xcr3_7{color:var(--t3);font-size:8px}._card_mm918_1{background:var(--sf);padding:14px 18px;cursor:pointer;border-right:1px solid var(--br);transition:background .13s}._card_mm918_1:hover{background:var(--sf2)}._card_mm918_1:last-child{border-right:none}._num_mm918_4{font-size:28px;font-weight:800;font-family:var(--fh);line-height:1;margin-bottom:4px;letter-spacing:-.02em}._lbl_mm918_5{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--t3)}._amber_mm918_6 ._num_mm918_4{color:var(--am)}._blue_mm918_7 ._num_mm918_4{color:var(--ac)}._green_mm918_8 ._num_mm918_4{color:var(--gn)}._red_mm918_9 ._num_mm918_4{color:var(--rd)}._white_mm918_10 ._num_mm918_4{color:var(--t1)}._bar_ph9gg_1{display:flex;align-items:center;gap:20px;padding:8px 0 14px;border-bottom:1px solid var(--br);margin-bottom:16px;flex-wrap:wrap}._item_ph9gg_2{display:flex;flex-direction:column;gap:2px}._lbl_ph9gg_3{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--t3)}._val_ph9gg_4{font-size:12px;font-weight:500;color:var(--t1)}._highlight_ph9gg_5{color:var(--ac)}._mono_ph9gg_6{font-family:var(--mo)}._right_ph9gg_7{margin-left:auto}._subnav_1c61u_1{background:var(--bg2);border-bottom:1px solid var(--br);padding:0 20px;display:flex;align-items:center;gap:4px;min-height:36px;overflow-x:auto}._step_1c61u_2{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r);font-size:11px;font-weight:500;white-space:nowrap;color:var(--t2);border:none;background:none;border-bottom:2px solid transparent}._active_1c61u_3{color:var(--t1);background:var(--sf2);font-weight:600;border-bottom-color:var(--ac)}._dot_1c61u_4{width:7px;height:7px;border-radius:50%;flex-shrink:0}._done_1c61u_5 ._dot_1c61u_4{background:var(--gn)}._active_1c61u_3 ._dot_1c61u_4{background:var(--am)}._pending_1c61u_7 ._dot_1c61u_4{background:var(--t3)}._error_1c61u_8 ._dot_1c61u_4{background:var(--rd)}._sep_1c61u_9{color:var(--t3);font-size:10px;flex-shrink:0}._time_1c61u_10{font-size:10px;color:var(--t3);margin-left:4px}._wrap_nt244_1{overflow-x:auto}._table_nt244_2{width:100%;border-collapse:collapse;font-size:12px}._th_nt244_3{background:var(--sf);padding:8px 12px;text-align:left;font-size:10px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--br);white-space:nowrap}._td_nt244_4{padding:9px 12px;color:var(--t2);vertical-align:middle;border-bottom:1px solid var(--br);font-size:12px}._tr_nt244_5{cursor:pointer}._tr_nt244_5:hover ._td_nt244_4{background:var(--sf2)}._done_nt244_7 ._td_nt244_4{opacity:.55}._project_nt244_8{font-weight:500;color:var(--t1)}._unassigned_nt244_9{color:var(--rd);font-size:11px}._planner_nt244_10{font-size:11px;color:var(--t3)}._actionBtn_nt244_13{font-size:11px;font-weight:600;padding:4px 10px;border-radius:var(--r);cursor:pointer;transition:all .13s;background:var(--sf2)}._triage_nt244_14{border:1px solid rgba(245,158,11,.4);color:var(--am)}._review_nt244_15{border:1px solid rgba(240,112,48,.4);color:var(--or)}._email_nt244_16{border:1px solid rgba(155,110,243,.4);color:#b89bff}._retry_nt244_17{border:1px solid rgba(240,75,75,.4);color:var(--rd)}._auto_nt244_18{border:1px solid var(--br);color:var(--t3);opacity:.5;cursor:default}._log_nt244_19{border:1px solid var(--br2);color:var(--t2)}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "wfp-ui-innodata",
3
+ "version": "1.0.0",
4
+ "description": "Project Alpha PDO — shared UI component library",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.es.js",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.es.js",
10
+ "require": "./dist/index.cjs.js"
11
+ },
12
+ "./styles": "./dist/style.css"
13
+ },
14
+ "files": ["dist"],
15
+ "scripts": {
16
+ "build": "vite build",
17
+ "dev": "vite build --watch"
18
+ },
19
+ "peerDependencies": {
20
+ "react": ">=18.0.0",
21
+ "react-dom": ">=18.0.0",
22
+ "react-router-dom": ">=6.0.0"
23
+ },
24
+ "devDependencies": {
25
+ "@vitejs/plugin-react": "^4.2.1",
26
+ "vite": "^5.1.0"
27
+ }
28
+ }