@lokalise/harmony 1.20.0 → 1.20.2

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/harmony.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var an=Object.defineProperty;var on=(e,t,n)=>t in e?an(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ee=(e,t,n)=>on(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),h=require("react"),d=require("@lokalise/louis"),se=require("date-fns"),cn=require("date-fns-tz"),r=require("zod"),Re=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),w=require("@lokalise/frontend-http-client"),R=require("@tanstack/react-query"),M=require("@lokalise/universal-ts-utils/node");function ln(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,s.get?s:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const K=ln(h),ne={Completed:"completed",InProgress:"in_progress",Created:"created",Queued:"queued"},C={...ne,NotStarted:"not_started"},F={translation:"translation",review:"review",lqa_by_ai:"lqa_by_ai",automatic_translation:"automatic_translation"};var te=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Tt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var me,$e;function Ie(){if($e)return me;$e=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return me=e,me}var ge,Fe;function un(){if(Fe)return ge;Fe=1;var e=typeof te=="object"&&te&&te.Object===Object&&te;return ge=e,ge}var _e,Ke;function jt(){if(Ke)return _e;Ke=1;var e=un(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return _e=n,_e}var fe,Qe;function dn(){if(Qe)return fe;Qe=1;var e=jt(),t=function(){return e.Date.now()};return fe=t,fe}var pe,Je;function mn(){if(Je)return pe;Je=1;var e=/\s/;function t(n){for(var s=n.length;s--&&e.test(n.charAt(s)););return s}return pe=t,pe}var he,We;function gn(){if(We)return he;We=1;var e=mn(),t=/^\s+/;function n(s){return s&&s.slice(0,e(s)+1).replace(t,"")}return he=n,he}var be,Ye;function vt(){if(Ye)return be;Ye=1;var e=jt(),t=e.Symbol;return be=t,be}var Te,Xe;function _n(){if(Xe)return Te;Xe=1;var e=vt(),t=Object.prototype,n=t.hasOwnProperty,s=t.toString,o=e?e.toStringTag:void 0;function i(c){var l=n.call(c,o),m=c[o];try{c[o]=void 0;var u=!0}catch{}var g=s.call(c);return u&&(l?c[o]=m:delete c[o]),g}return Te=i,Te}var je,Ve;function fn(){if(Ve)return je;Ve=1;var e=Object.prototype,t=e.toString;function n(s){return t.call(s)}return je=n,je}var ve,Ze;function pn(){if(Ze)return ve;Ze=1;var e=vt(),t=_n(),n=fn(),s="[object Null]",o="[object Undefined]",i=e?e.toStringTag:void 0;function c(l){return l==null?l===void 0?o:s:i&&i in Object(l)?t(l):n(l)}return ve=c,ve}var ye,et;function hn(){if(et)return ye;et=1;function e(t){return t!=null&&typeof t=="object"}return ye=e,ye}var Se,tt;function bn(){if(tt)return Se;tt=1;var e=pn(),t=hn(),n="[object Symbol]";function s(o){return typeof o=="symbol"||t(o)&&e(o)==n}return Se=s,Se}var Ee,nt;function Tn(){if(nt)return Ee;nt=1;var e=gn(),t=Ie(),n=bn(),s=NaN,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function m(u){if(typeof u=="number")return u;if(n(u))return s;if(t(u)){var g=typeof u.valueOf=="function"?u.valueOf():u;u=t(g)?g+"":g}if(typeof u!="string")return u===0?u:+u;u=e(u);var f=i.test(u);return f||c.test(u)?l(u.slice(2),f?2:8):o.test(u)?s:+u}return Ee=m,Ee}var xe,rt;function yt(){if(rt)return xe;rt=1;var e=Ie(),t=dn(),n=Tn(),s="Expected a function",o=Math.max,i=Math.min;function c(l,m,u){var g,f,v,y,_,E,T=0,p=!1,b=!1,j=!0;if(typeof l!="function")throw new TypeError(s);m=n(m)||0,e(u)&&(p=!!u.leading,b="maxWait"in u,v=b?o(n(u.maxWait)||0,m):v,j="trailing"in u?!!u.trailing:j);function P(S){var N=g,G=f;return g=f=void 0,T=S,y=l.apply(G,N),y}function x(S){return T=S,_=setTimeout(Z,m),p?P(S):y}function V(S){var N=S-E,G=S-T,Ge=m-N;return b?i(Ge,v-G):Ge}function He(S){var N=S-E,G=S-T;return E===void 0||N>=m||N<0||b&&G>=v}function Z(){var S=t();if(He(S))return De(S);_=setTimeout(Z,V(S))}function De(S){return _=void 0,j&&g?P(S):(g=f=void 0,y)}function rn(){_!==void 0&&clearTimeout(_),T=0,g=E=f=_=void 0}function sn(){return _===void 0?y:De(t())}function de(){var S=t(),N=He(S);if(g=arguments,f=this,E=S,N){if(_===void 0)return x(E);if(b)return clearTimeout(_),_=setTimeout(Z,m),P(E)}return _===void 0&&(_=setTimeout(Z,m)),y}return de.cancel=rn,de.flush=sn,de}return xe=c,xe}var jn=yt();const vn=Tt(jn);var Pe,st;function yn(){if(st)return Pe;st=1;var e=yt(),t=Ie(),n="Expected a function";function s(o,i,c){var l=!0,m=!0;if(typeof o!="function")throw new TypeError(n);return t(c)&&(l="leading"in c?!!c.leading:l,m="trailing"in c?!!c.trailing:m),e(o,i,{leading:l,maxWait:i,trailing:m})}return Pe=s,Pe}var Sn=yn();const En=Tt(Sn),xn=(e,t,n,s)=>{switch(t){case"debounce":return vn(e,n,s);case"throttle":return En(e,n,s);default:return e}},Pn=e=>{const t=K.useRef(e);return K.useEffect(()=>{t.current=e}),K.useMemo(()=>(...n)=>{var s;return(s=t.current)===null||s===void 0?void 0:s.call(t,...n)},[])},zn=e=>{const[t,n]=K.useState((e==null?void 0:e.current)||null);return e&&setTimeout(()=>{e.current!==t&&n(e.current)},0),{refProxy:K.useMemo(()=>new Proxy(o=>{o!==t&&n(o)},{get(o,i){return i==="current"?t:o[i]},set(o,i,c){return i==="current"?n(c):o[i]=c,!0}}),[t]),refElement:t,setRefElement:n}},Cn=(e,t)=>t==="border-box"?{width:e.borderBoxSize[0].inlineSize,height:e.borderBoxSize[0].blockSize}:t==="content-box"?{width:e.contentBoxSize[0].inlineSize,height:e.contentBoxSize[0].blockSize}:{width:e.contentRect.width,height:e.contentRect.height};function wn({skipOnMount:e=!1,refreshMode:t,refreshRate:n=1e3,refreshOptions:s,handleWidth:o=!0,handleHeight:i=!0,targetRef:c,observerOptions:l,onResize:m}={}){const u=h.useRef(e),g=Pn(m),[f,v]=h.useState({width:void 0,height:void 0}),{refProxy:y,refElement:_}=zn(c),{box:E}=l||{},T=h.useCallback(b=>{if(!o&&!i)return;if(u.current){u.current=!1;return}const j=(P,x)=>o&&P.width!==x.width||i&&P.height!==x.height;b.forEach(P=>{const x=Cn(P,E);v(V=>j(V,x)?(g==null||g({width:x.width,height:x.height,entry:P}),x):V)})},[o,i,u,E]),p=h.useCallback(xn(T,t,n,s),[T,t,n,s]);return h.useEffect(()=>{let b;return _?(b=new window.ResizeObserver(p),b.observe(_,l)):(f.width||f.height)&&(g==null||g({width:null,height:null,entry:null}),v({width:void 0,height:void 0})),()=>{var j,P,x;(j=b==null?void 0:b.disconnect)===null||j===void 0||j.call(b),(x=(P=p).cancel)===null||x===void 0||x.call(P)}},[p,_]),Object.assign({ref:y},f)}function St(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=St(e[t]))&&(s&&(s+=" "),s+=n)}else for(n in e)e[n]&&(s&&(s+=" "),s+=n);return s}function I(){for(var e,t,n=0,s="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=St(e))&&(s&&(s+=" "),s+=t);return s}const kn="_headerContainer_1cubo_1",An="_navigationTabList_1cubo_8",Rn="_navigationTab_1cubo_8",In="_headerContent_1cubo_34",Nn="_staticEnabled_1cubo_50",q={headerContainer:kn,navigationTabList:An,navigationTab:Rn,headerContent:In,staticEnabled:Nn},Ln=77,Q=({sticky:e,children:t})=>{const{ref:n,height:s}=wn({refreshMode:"debounce",refreshRate:0}),[o,i]=h.useState(!1),c=()=>o?!e:!0;h.useEffect(()=>{const m=()=>{i(window.scrollY>0)};return window.addEventListener("scroll",m),()=>window.removeEventListener("scroll",m)},[]);const l=`${s||Ln}px`;return a.jsx("div",{style:{minHeight:l},children:a.jsx("div",{children:a.jsxs("div",{ref:n,className:I(q.headerContent,{[q.staticEnabled]:c()}),children:[a.jsx(Q.Header,{}),a.jsx(Q.Tabs,{}),t]})})})};Q.Header=({children:e})=>a.jsx("div",{className:q.headerContainer,children:e});Q.Tabs=({children:e})=>a.jsx("div",{className:"flex justify-between gap-2 nowrap",children:e});const On="_sidebarContainer_bmdti_1",Mn={sidebarContainer:On},Un="_logoLink_1baxb_1",Bn={logoLink:Un},qn=({src:e,href:t="/",ariaLabel:n="Lokalise App Home",alt:s="Lokalise Logo"})=>a.jsx("a",{className:Bn.logoLink,href:t,"aria-label":n,children:a.jsx("img",{src:e,alt:s})}),Hn="_link_18vhx_1",Dn="_active_18vhx_18",at={link:Hn,active:Dn},Gn=({label:e,to:t,icon:n})=>a.jsx(d.Tooltip,{placement:"right",tooltip:e,children:a.jsx(d.Link,{className:I(at.link,{[at.active]:window.location.pathname.startsWith(t)}),href:t,children:a.jsx(n,{size:"25px"})})}),$n="_dropdownButton_13l5r_1",Fn="_dropdownButtonActive_13l5r_18",ot={dropdownButton:$n,dropdownButtonActive:Fn},Kn=({children:e,icon:t})=>a.jsx(d.Menu,{menuButton:({opened:n})=>a.jsx(d.Tooltip,{placement:"right",tooltip:"Help",children:a.jsx("button",{type:"button",className:I(ot.dropdownButton,{[ot.dropdownButtonActive]:n}),children:a.jsx(t,{size:"25px"})})}),children:a.jsx(d.MenuList,{placement:"right-start",children:e})}),Qn="_iconContainer_nz34m_1",Jn={iconContainer:Qn},Et=({className:e=""})=>a.jsx("div",{"aria-label":"Upgrade Icon",className:I(Jn.iconContainer,"flex-row","items-center","justify-center",e),children:a.jsx(d.CaretUpIcon,{})}),Wn="_menuContainer_ywskt_5",Yn="_profileButton_ywskt_15",Xn="_profileImage_ywskt_28",Vn="_profileImageHighlight_ywskt_36",Zn="_profileImageUpgradeIcon_ywskt_40",er="_userIconWrapper_ywskt_46",L={menuContainer:Wn,profileButton:Yn,profileImage:Xn,profileImageHighlight:Vn,profileImageUpgradeIcon:Zn,userIconWrapper:er},xt=h.createContext({}),Y=()=>h.useContext(xt),tr=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:s,showBillingButton:o,allowTeamCreation:i,isProviderAlpha:c,canAccessTeamSettings:l,isEndOfTrialActive:m,isTeamSuspended:u,isFullyAuthenticated:g}=Y();return a.jsx(d.Menu,{menuButton:()=>a.jsxs("button",{className:L.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?a.jsx("img",{src:t.logoUrl,className:I(L.profileImage,{[L.profileImageHighlight]:s}),alt:"Team Logo"}):a.jsx("div",{className:I(L.userIconWrapper,"flex-row","align-center","items-center",{[L.profileImageHighlight]:s}),children:a.jsx(d.UserIcon,{size:"25px"})}),s&&a.jsx(Et,{className:L.profileImageUpgradeIcon})]}),children:a.jsx(d.MenuList,{placement:"right-end",className:L.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,canAccessTeamSettings:l,isEndOfTrialActive:m,isTeamSuspended:u,showBillingButton:o,isProviderAlpha:c,isFullyAuthenticated:g})})})},Ne=0,Pt=9999,zt=[150,151,250,251],Ct=[152,153,252,253],wt=[154,155,157,158,254,255,258,354,355,358],kt=[156,159,160,256,259,260],Le=9998,ae=e=>e===Ne,Oe=e=>e===Pt,nr=e=>zt.includes(e),rr=e=>Ct.includes(e),sr=e=>wt.includes(e),ar=e=>kt.includes(e),or=e=>e>Ne&&e<Le,ir=e=>e===Le,cr=/\n/,it=(e,t,n)=>e.split(t).flatMap((s,o)=>o!==0?[h.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),s]:s),lr=(e,t,n)=>typeof e=="string"?it(e,t,n):e.flatMap(s=>typeof s=="string"?it(s,t,n):s),At=e=>lr(e,cr,a.jsx("br",{})),ur=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,dr=e=>e.match(ur)??[],ct=(e,t,n)=>{const s=e.split(t);if(s.length===1)return e;const o=[];return s[0]!==""&&o.push(s[0]),s.shift(),s[s.length-1]===""&&s.pop(),o.push(a.jsx("a",{href:t,target:"_blank",rel:"noreferrer noopener",children:t},t+n)),o.push(s.join(t)),o.filter(i=>i!=="")},lt=e=>{const t=dr(e);return t!=null&&t.length?t.reduce((n,s,o)=>typeof n=="string"?ct(n,s,o):n.flatMap(i=>typeof i=="string"?ct(i,s,o):i),e):e},Rt=e=>typeof e=="string"?lt(e):e.flatMap(t=>typeof t=="string"?lt(t):t,e),It=(e,t="PP")=>se.format(e,t),mr=(e,t,n="PP")=>se.format(cn.toZonedTime(e,t),n),oe=e=>{h.useEffect(e,[])},ut={biller:"biller",owner:"owner"},dt=[ut.biller,ut.owner],gr=({children:e,config:t})=>{const{teams:n,currentTeamId:s,planId:o,isEndOfTrialActive:i,isFullyAuthenticated:c,userTeamRole:l}=t,m=n.find(p=>p.id===s),u=n.filter(p=>p.id!==s),g=dt.includes(l),f=dt.includes(l),v=ae(o)||Oe(o),T={...t,currentTeam:m,otherTeams:u,canChangeBilling:g,canAccessTeamSettings:f,isOnFreeOrTrialPlan:v,showUpgradeCta:c&&v&&g,showBillingButton:c&&f&&g,allowTeamCreation:c&&!i};return a.jsx(xt.Provider,{value:T,children:e})},_r=({config:e,children:t})=>a.jsx(gr,{config:e,children:a.jsx(tr,{children:t})}),fr="_container_q5pot_1",pr="_profileEmail_q5pot_5",mt={container:fr,profileEmail:pr},hr=({href:e,onClick:t,userEmail:n,hideBottomDivider:s})=>{const{isEndOfTrialActive:o,isTeamSuspended:i}=Y();return o||i?null:a.jsxs(a.Fragment,{children:[a.jsx(d.MenuItem,{href:e,onClick:()=>{t==null||t()},children:a.jsxs("div",{className:`flex-col ${mt.container}`,children:[a.jsx("span",{children:"Profile Settings"}),a.jsx("span",{className:mt.profileEmail,children:n})]})}),!s&&a.jsx(d.MenuDivider,{})]})},br="_wrapper_15d85_1",Tr="_profileImage_15d85_14",jr="_teamName_15d85_22",vr="_planLabel_15d85_29",yr="_membership_15d85_38",Sr="_defaultProfileImage_15d85_44",U={wrapper:br,profileImage:Tr,teamName:jr,planLabel:vr,membership:yr,defaultProfileImage:Sr},Nt=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:s,planId:o}=Y(),i=e||s;if(!i)return null;const c=ae(o)?"Free":Oe(o)?"Trial":void 0,l=t?d.MenuItem:"div";return a.jsxs(l,{className:`flex-row gap-2 flex-nowrap items-center ${U.wrapper}`,...t&&{onClick:()=>t(i)},children:[i.logoUrl?a.jsx("img",{className:U.profileImage,src:i.logoUrl,alt:"Team Logo"}):a.jsx("span",{className:`flex-row justify-center items-center ${U.defaultProfileImage}`,children:a.jsx(d.UserIcon,{size:"25px"})}),a.jsxs("div",{className:"flex-col items-start",children:[a.jsxs("div",{className:"flex-row items-center flex-nowrap gap-2",children:[a.jsx("span",{title:i.name,className:U.teamName,children:i.name}),c&&!n&&a.jsx("span",{className:`flex-row justify-center items-center ${U.planLabel}`,children:c})]}),a.jsx("span",{className:U.membership,children:i.role})]})]})},Er="_teamsContainer_1t68g_1",xr={teamsContainer:Er},Pr=({onSwitchTeam:e})=>{const{otherTeams:t}=Y();return t.length===0?null:a.jsx("div",{"data-testid":"sidebar-team-switch",className:`flex-col items-stretch ${xr.teamsContainer}`,children:t.map(n=>a.jsx(Nt,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},zr="_container_1u995_1",Cr="_planCta_1u995_15",wr="_upgradeIconWrapper_1u995_19",ze={container:zr,planCta:Cr,upgradeIconWrapper:wr},kr=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:s}=Y();if(!s)return null;const c=ae(t)?"Your team is currently on the Free plan":`Free trial ends in ${n} ${n===1?"day":"days"}`;return a.jsxs(d.MenuItem,{"data-testid":"sidebar-upgrade-menu-item",href:e,className:`flex-col gap-1 items-start ${ze.container}`,children:[a.jsx("span",{className:ze.planCta,children:c}),a.jsxs("div",{className:`flex-row items-center gap-1 ${ze.upgradeIconWrapper}`,children:[a.jsx(Et,{}),a.jsx("span",{children:"See upgrade options"})]})]})},Ar=Math.min,Rr=Math.max;function gt(e,t,n){return Rr(e,Ar(t,n))}function Lt(e,t){return typeof e=="function"?e(t):e}function Ot(e){return e.split("-")[0]}function Ir(e){return e==="x"?"y":"x"}function Nr(e){return["top","bottom"].includes(Ot(e))?"y":"x"}function Lr(e){return{top:0,right:0,bottom:0,left:0,...e}}function Or(e){return typeof e!="number"?Lr(e):{top:e,right:e,bottom:e,left:e}}function _t(e){const{x:t,y:n,width:s,height:o}=e;return{width:s,height:o,top:n,left:t,right:t+s,bottom:n+o,x:t,y:n}}async function Mr(e,t){var n;t===void 0&&(t={});const{x:s,y:o,platform:i,rects:c,elements:l,strategy:m}=e,{boundary:u="clippingAncestors",rootBoundary:g="viewport",elementContext:f="floating",altBoundary:v=!1,padding:y=0}=Lt(t,e),_=Or(y),T=l[v?f==="floating"?"reference":"floating":f],p=_t(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(T)))==null||n?T:T.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(l.floating)),boundary:u,rootBoundary:g,strategy:m})),b=f==="floating"?{x:s,y:o,width:c.floating.width,height:c.floating.height}:c.reference,j=await(i.getOffsetParent==null?void 0:i.getOffsetParent(l.floating)),P=await(i.isElement==null?void 0:i.isElement(j))?await(i.getScale==null?void 0:i.getScale(j))||{x:1,y:1}:{x:1,y:1},x=_t(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:b,offsetParent:j,strategy:m}):b);return{top:(p.top-x.top+_.top)/P.y,bottom:(x.bottom-p.bottom+_.bottom)/P.y,left:(p.left-x.left+_.left)/P.x,right:(x.right-p.right+_.right)/P.x}}const Ur=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:s,placement:o}=t,{mainAxis:i=!0,crossAxis:c=!1,limiter:l={fn:T=>{let{x:p,y:b}=T;return{x:p,y:b}}},...m}=Lt(e,t),u={x:n,y:s},g=await Mr(t,m),f=Nr(Ot(o)),v=Ir(f);let y=u[v],_=u[f];if(i){const T=v==="y"?"top":"left",p=v==="y"?"bottom":"right",b=y+g[T],j=y-g[p];y=gt(b,y,j)}if(c){const T=f==="y"?"top":"left",p=f==="y"?"bottom":"right",b=_+g[T],j=_-g[p];_=gt(b,_,j)}const E=l.fn({...t,[v]:y,[f]:_});return{...E,data:{x:E.x-n,y:E.y-s,enabled:{[v]:i,[f]:c}}}}}},Br="_navItem_1dudv_1",qr="_activeNavItem_1dudv_18",Hr="_badge_1dudv_23",Ce={navItem:Br,activeNavItem:qr,badge:Hr},Mt=h.createContext({}),X=()=>h.useContext(Mt),Dr=e=>{const t=e.lastIndexOf("."),n=e.slice(0,t),s=e.slice(t+1);return{name:n,extension:s}},Gr=(e,t)=>{switch(e){case C.Completed:return t<100?"Closed":"Completed";case C.Created:return t>0?"In progress":"Not started";case C.InProgress:return"In progress";case C.Queued:return"Queued";case C.NotStarted:return"Not started";default:return"-"}},$r=e=>{const t=e.progress??0;return e.status===C.Created&&t>0?C.InProgress:e.status},Fr={[F.translation]:"#0891B2",[F.review]:"#16922D",[F.lqa_by_ai]:"#8B5CF6",[F.automatic_translation]:"#60A5FA"},Kr=e=>{const t=[C.InProgress,C.Created,C.Completed];return e.filter(n=>n.status!=="queued").map(n=>({...n,status:$r(n)})).sort((n,s)=>n.status===C.InProgress&&n.progress===100?-1:s.status===C.InProgress&&s.progress===100?1:n.status===s.status?n.name<s.name?1:-1:t.indexOf(n.status)-t.indexOf(s.status))},ft=e=>[ne.InProgress,ne.Created].includes(e),Qr=(e,t)=>ft(e.status)&&ft(t.status)&&(t.progress??0)>=100,Jr=({task:e,language:t})=>{const[n,s]=h.useState(!1),[o,i]=h.useState(!1),{onLanguageCompleteConfirm:c,fetchTasks:l}=X(),m=()=>{i(!1)};return a.jsxs(a.Fragment,{children:[o&&a.jsx(d.ConfirmModal,{opened:!0,loading:n,title:`Are you finished with ${t.name}?`,confirmText:"Mark as done",closeText:"Cancel",onClose:m,onConfirm:async()=>{s(!0),await c({task:e,language:t,closePrompt:m}),l()},children:a.jsxs(d.Alert,{status:"info",children:["Make sure you are finished and ",a.jsx("strong",{children:"mark it as done"})," to notify your team admin. This action cannot be undone, and the language might no longer be available for you to edit."]})}),a.jsx(d.Link,{disabled:n,onClick:()=>{i(!0)},children:"Mark as done"})]})},Wr="_langRowCompleted_vpgdi_1",Yr="_langCellSecondary_vpgdi_15",Xr="_langStatus_vpgdi_20",we={langRowCompleted:Wr,langCellSecondary:Yr,langStatus:Xr},Vr=({language:e,task:t})=>{const{getProjectUrl:n,langNameOnClick:s,langProgressOnClick:o}=X(),i=e.progress??0,c=e.status===C.Completed,l=Qr(t,e);return a.jsxs("tr",{className:I({[we.langRowCompleted]:l}),children:[a.jsx("td",{children:a.jsx(d.Tooltip,{tooltip:"Open in bilingual view",children:a.jsx(d.Link,{href:n({task:t,language:e}),onClick:()=>{s==null||s({task:t,language:e})},children:e.name})})}),a.jsx("td",{className:we.langCellSecondary,children:l||c?"0":a.jsx(d.Tooltip,{tooltip:"Open uncompleted items",children:a.jsx(d.Link,{href:n({task:t,language:e,taskUncompleted:!0}),onClick:()=>{o==null||o({task:t,language:e})},children:e.base_words_total-e.base_words_done})})}),a.jsxs("td",{children:[i,"%"]}),a.jsx("td",{children:l?a.jsx(Jr,{task:t,language:e}):a.jsx("span",{className:`${we.langStatus} flex-row items-center justify-start`,"data-status":e.status,children:Gr(e.status,i)})})]})},Zr="_taskContainer_mt2or_1",es="_taskTitle_mt2or_21",ts="_taskDescription_mt2or_28",ns="_languagesTable_mt2or_35",rs="_metadata_mt2or_87",B={taskContainer:Zr,taskTitle:es,taskDescription:ts,languagesTable:ns,metadata:rs},ss=({task:e})=>{const{getProjectUrl:t,taskTitleOnClick:n}=X(),s=Kr(e.langs),o=i=>{window.open(`/style-guide/${e.team_id}/download/${i.id}/link`,"_blank","noopener,noreferrer")};return a.jsxs("div",{className:B.taskContainer,children:[a.jsxs("div",{className:"flex-row gap-1 items-center",children:[a.jsxs("div",{className:"flex-row gap-1 items-start flex-wrap",children:[a.jsx(d.Tag,{color:Fr[e.task_type],variant:"solid",children:e.task_type.toLocaleUpperCase()}),e.due_date&&a.jsxs(d.Tag,{color:"#EAB308",children:["DUE ",It(se.parseISO(e.due_date),"yyyy-MM-dd")]})]}),e.style_guides.length>0&&a.jsx("div",{className:"flex-row",children:e.style_guides.length===1?a.jsx(d.Button,{size:"sm",variant:"secondary",onClick:()=>o(e.style_guides[0]),children:"Download style guide"}):a.jsx(d.Menu,{menuButton:a.jsx(d.Button,{variant:"secondary",size:"sm",children:"Download style guide"}),children:a.jsx(d.MenuList,{children:e.style_guides.map(i=>a.jsx(d.MenuItem,{onClick:()=>o(i),children:Dr(i.name).name},i.id))})})})]}),a.jsx("h4",{className:B.taskTitle,children:a.jsx(d.Link,{href:t({task:e,view:"multi"}),onClick:()=>{n==null||n({task:e})},children:e.title})}),e.description&&a.jsx("div",{className:B.taskDescription,children:At(Rt(e.description))}),a.jsxs("table",{className:B.languagesTable,children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Languages"}),a.jsx("th",{children:"Words to do"}),a.jsx("th",{children:"Progress"}),a.jsx("th",{children:"Status"})]})}),a.jsx("tbody",{children:s.map(i=>a.jsx(Vr,{language:i,task:e},i.lang_id))})]}),a.jsxs("div",{"data-testid":"sidebar-task-overview-metadata",className:B.metadata,children:[a.jsxs("span",{children:["Source: ",e.source_lang_name]}),a.jsx("span",{children:e.created_by_fullname}),a.jsxs("span",{children:["In ",e.project_name,e.master_branching_enabled==="1"&&a.jsx("div",{className:B.tag,children:e.branch_name?e.branch_name:"master"})]})]})]})},z={TaskCompleted:"task_completed",TaskClosed:"task_closed",Refresh:"refresh",ShowDialog:"show_dialog"},as="_loadingContainer_19d6m_1",os="_noTasksContainer_19d6m_7",is="_noTasksHeading_19d6m_14",cs="_noTasksText_19d6m_18",ls="_tasksContainer_19d6m_23",$={loadingContainer:as,noTasksContainer:os,noTasksHeading:is,noTasksText:cs,tasksContainer:ls},us=()=>{const{tasks:e,onTasksWidgetOpen:t,loadingTasks:n,fetchTasks:s}=X();return oe(()=>((async()=>{const i=await s();t==null||t({tasks:i})})(),document.addEventListener(z.TaskCompleted,s),document.addEventListener(z.TaskClosed,s),document.addEventListener(z.Refresh,s),()=>{document.removeEventListener(z.TaskCompleted,s),document.removeEventListener(z.TaskClosed,s),document.removeEventListener(z.Refresh,s)})),n?a.jsx("div",{"data-testid":"sidebar-tasks-loading-popover",className:$.loadingContainer,children:a.jsx(d.Loading,{})}):e.length===0?a.jsxs("div",{"data-testid":"sidebar-no-tasks-popover",className:$.noTasksContainer,children:[a.jsx("h3",{className:$.noTasksHeading,children:"No tasks"}),a.jsxs("div",{className:$.noTasksText,children:["Your incoming tasks will appear here.",a.jsx("br",{}),a.jsx(d.Link,{href:"https://docs.lokalise.com/translation-workflow/tasks",target:"_new",children:"Learn more"})]})]}):a.jsx("div",{"data-testid":"sidebar-tasks-popover",className:$.tasksContainer,children:e.map(o=>a.jsx(ss,{task:o},o.id))})},ds=({children:e,config:t})=>{const[n,s]=h.useState([]),[o,i]=h.useState(!0),[c,l]=h.useState(0),{getProjectUrl:m,onLanguageCompleteConfirm:u,onTasksWidgetOpen:g,langNameOnClick:f,langProgressOnClick:v,taskTitleOnClick:y}=t,{getTasks:_,getTasksCount:E}=t,T=async()=>{i(!0);const j=await _();return s(j),i(!1),j},p=async()=>{const j=await E();l(j)};oe(()=>(p(),document.addEventListener(z.TaskCompleted,p),document.addEventListener(z.TaskClosed,p),document.addEventListener(z.Refresh,p),()=>{document.removeEventListener(z.TaskCompleted,p),document.removeEventListener(z.TaskClosed,p),document.removeEventListener(z.Refresh,p)}));const b={fetchTasks:T,tasks:n,tasksCount:c,loadingTasks:o,getProjectUrl:m,onLanguageCompleteConfirm:u,onTasksWidgetOpen:g,langNameOnClick:f,langProgressOnClick:v,taskTitleOnClick:y};return a.jsx(Mt.Provider,{value:b,children:e})},ms=e=>function(n){const{config:s,...o}=n;return a.jsx(ds,{config:s,children:a.jsx(e,{...o})})},gs=ms(()=>{const[e,t]=h.useState(!1),{tasksCount:n}=X();return oe(()=>{const s=()=>{t(!0)};return document.addEventListener(z.ShowDialog,s),()=>{document.removeEventListener(z.ShowDialog,s)}}),a.jsx(d.Tooltip,{tooltip:"Tasks",placement:"right",children:a.jsx(d.Popover,{content:a.jsx(us,{}),placement:"right",open:e,onOpenChange:t,middlewares:[Ur({padding:{top:32,bottom:32}})],children:s=>a.jsxs(d.Button,{type:"button","data-testid":"sidebar-tasks-widget-button","aria-label":"Tasks",className:I(Ce.navItem,{[Ce.activeNavItem]:s}),children:[a.jsx(d.JobIcon,{size:"25px"}),n>0&&a.jsx("div",{className:Ce.badge,"aria-label":`${n} items requiring attention`,children:n>9?"9+":n})]})})})}),k=({children:e,...t})=>a.jsx("nav",{...t,className:Mn.sidebarContainer,children:e}),_s=({children:e})=>a.jsx("div",{children:e});k.Top=_s;const fs=({children:e})=>a.jsx("div",{children:e});k.Bottom=fs;k.Avatar=qn;k.IconLink=Gn;k.Menu=Kn;k.ProfileMenu=_r;k.TeamSwitch=Pr;k.TeamMenuItem=Nt;k.UpgradeMenuItem=kr;k.ProfileSettingsMenuItem=hr;k.Tasks=gs;const ps="_breadcrumbsItem_1hm6a_1",hs="_breadcrumbs_1hm6a_1",pt={breadcrumbsItem:ps,breadcrumbs:hs},bs=({items:e})=>a.jsx("nav",{"aria-label":"breadcrumb",className:pt.breadcrumbs,children:e.map((t,n)=>a.jsxs(h.Fragment,{children:[a.jsx(d.Link,{className:pt.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&a.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),Ts=({items:e})=>a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs(h.Fragment,{children:[!!n&&t.some(s=>s.visible)&&a.jsx(d.MenuDivider,{}),t.filter(({visible:s})=>s).map(({link:s,label:o,onClick:i})=>a.jsx(d.MenuItem,{href:s||"#","aria-label":o,onClick:i,children:o},o))]},t[0].label))}),js="_badge_1pc1v_1",vs="_tag_1pc1v_15",ys="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",Ss="_disabled_1pc1v_57",Es="_projectNavigationItem_1pc1v_61",xs="_projectNavigationItemDisabled_1pc1v_67",O={badge:js,tag:vs,withNavLinkStyle:ys,disabled:Ss,projectNavigationItem:Es,projectNavigationItemDisabled:xs},ht=({label:e,badge:t,novel:n})=>a.jsxs("div",{className:"flex gap-1",children:[a.jsxs("div",{children:[a.jsx("span",{children:e}),!!t&&a.jsx("div",{className:O.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&a.jsx(d.Tag,{className:O.tag,children:n})]}),ke=h.forwardRef(({label:e,href:t="",disabled:n=!1,badge:s,onClick:o,novel:i},c)=>a.jsx(d.Tooltip,{tooltip:"You do not have access to this function",show:n,children:a.jsx("div",{className:n?O.projectNavigationItemDisabled:O.projectNavigationItem,children:o||n||!t?a.jsx("button",{type:"button",ref:c,className:I(O.withNavLinkStyle,{[O.disabled]:n}),disabled:n,onClick:o,children:a.jsx(ht,{label:e,badge:s,novel:i})}):a.jsx("a",{href:t,className:O.withNavLinkStyle,children:a.jsx(ht,{label:e,badge:s,novel:i})})})}));ke.displayName="NavigationTabsItem";const Ps=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,zs=e=>e.visible&&(!e.dropdown||Ps(e.dropdown)),Cs=({navigation:e,activeItem:t})=>a.jsx("nav",{"aria-label":"Project",children:a.jsx("ul",{className:q.navigationTabList,"aria-orientation":"horizontal",children:e.filter(zs).map(n=>{var s,o,i;return n.dropdown?a.jsx("li",{className:q.navigationTab,"data-testid":n.key,"aria-selected":(s=n.isActive)==null?void 0:s.call(n,t),children:a.jsx(d.Menu,{menuButton:({opened:c})=>a.jsx(ke,{label:n.label,disabled:n.disabled,active:c}),children:a.jsx(d.MenuList,{children:a.jsx(Ts,{items:n.dropdown})})})},n.key):a.jsx("li",{className:q.navigationTab,"data-testid":n.key,"aria-selected":(o=n.isActive)==null?void 0:o.call(n,t),children:a.jsx(ke,{label:n.label,href:n.link,onClick:n.onClick,disabled:n.disabled,badge:n.badge,novel:n.novel,active:(i=n.isActive)==null?void 0:i.call(n,t)})},n.key)})})});class A{constructor(t){this.factories=t}static create(t={}){return new A([()=>t])}add(t,n){return new A([...this.factories,()=>({[t]:n})])}and(t){return new A([...this.factories,()=>t])}from(t){return new A([...this.factories,t])}with(t){return t.apply(this)}merge(t){return new A([...this.factories,...t.factories])}async resolve(){const t=this.factories.map(s=>s()),n=await Promise.all(t);return Object.assign({},...n)}}function Me(e){return new ws(e)}class ws{constructor(t){this.middleware=t}apply(t){return t.from(async()=>{const n=this.middleware(A.create());return n instanceof Promise?n.then(s=>s.resolve()):n.resolve()})}}const Ut=r.z.union([r.z.literal("owner"),r.z.literal("admin"),r.z.literal("biller"),r.z.literal("member")]),ks=r.z.object({userId:r.z.number(),userUuid:r.z.string().uuid(),teamId:r.z.number(),teamUuid:r.z.string().uuid(),userTeamRole:Ut,userEmail:r.z.string().email(),userName:r.z.string(),userCurrentTeamId:r.z.number(),planId:r.z.number(),planName:r.z.string(),isProviderAlpha:r.z.boolean(),isFullyAuthenticated:r.z.boolean(),exp:r.z.number()});function H(e){try{const t=e.split(".")[1],n=atob(t);return ks.parse(JSON.parse(n))}catch{return}}class J extends Error{constructor(){super(...arguments);ee(this,"name","UnauthorizedError");ee(this,"status",401)}}function As(e){return Me(async t=>{var i,c;const n=e.getCurrentToken()??await((i=e.generateNewToken)==null?void 0:i.call(e));if(!n)throw new J;const{exp:s}=H(n.accessToken)??{exp:0};if(!se.isThisSecond(new Date(s)))return t.add("authorization",`Bearer ${n.accessToken}`);const o=await e.refreshToken(n);if(!o)throw new J;return(c=e.onNewTokenIssued)==null||c.call(e,o),t.add("authorization",`Bearer ${o.accessToken}`)})}const Rs=Me(e=>e.and({"x-lokalise-plugin":"true"}));function Ue(){const e=Ae(document.cookie,"accessToken"),t=Ae(document.cookie,"refreshToken");return!e||!t?null:{accessToken:e,refreshToken:t}}function Bt(){return Ae(document.cookie,"csrf_token")??null}function Ae(e,t){var n,s;return(s=(n=e.split(";").find(o=>o.trim().startsWith(`${t}=`)))==null?void 0:n.trim())==null?void 0:s.substring(t.length+1)}function Is(){const e=Ue();if(!e)return;const t=H(e.accessToken);if(t)return{...e,payload:t}}const qt=r.z.union([r.z.object({authorization:r.z.string()}),r.z.object({AUTHORIZATION:r.z.string()})]),Ns=r.z.union([r.z.object({"X-API-Token":r.z.string()}),r.z.object({"X-Api-Token":r.z.string()}),r.z.object({"x-api-token":r.z.string()}),r.z.object({"X-API-TOKEN":r.z.string()})]),Ls=r.z.union([qt,Ns]),Os=r.z.union([r.z.object({"X-Lokalise-Plugin":r.z.string()}),r.z.object({"x-lokalise-plugin":r.z.string()}),r.z.object({"X-LOKALISE-PLUGIN":r.z.string()})]),D=Ls.and(Os),Ms=r.z.object({accessToken:r.z.string(),refreshToken:r.z.string()}),Us=r.z.union([r.z.object({"X-Csrf-Token":r.z.string()}),r.z.object({"X-CSRF-Token":r.z.string()}),r.z.object({"x-csrf-token":r.z.string()}),r.z.object({"X-CSRF-TOKEN":r.z.string()})]),Bs=r.z.union([qt,Us]),ie=Re.buildPayloadRoute({description:"Takes a teamId and returns a JWT token access and refresh token for the user",method:"post",requestPathParamsSchema:r.z.object({teamId:r.z.number()}),pathResolver:e=>`/team/${e.teamId}/actions/get-user-token`,requestHeaderSchema:Bs,requestBodySchema:r.z.undefined(),isEmptyResponseExpected:!0,successResponseBodySchema:Ms});function qs(e,t,n){return async()=>{const s=t();if(!s)throw new J;return w.sendByPayloadRoute(e,ie,{pathParams:{teamId:Number(await n())},headers:await A.create().add("x-csrf-token",s).resolve()})}}function Hs(e){return async({accessToken:t,refreshToken:n})=>{const s=H(t);if(!s)throw new J;return w.sendByPayloadRoute(e,ie,{pathParams:{teamId:s.teamId},headers:await A.create().add("authorization",`Bearer ${n}`).resolve()})}}const Ht={teamKey:e=>["getUserToken",e]},Dt=(e,t,n)=>R.useQuery({...n,queryFn:async({queryKey:[s,o]})=>w.sendByPayloadRoute(e,ie,{headers:await t.resolve(),pathParams:{teamId:o}})}),re=class re extends CustomEvent{constructor(t){super(re.eventName,{detail:{token:t,payload:H(t.accessToken)}})}};ee(re,"eventName","new-jwt-issued");let W=re;function Ds(e,t,n){const s=Bt(),o=Dt(e,t.add("x-csrf-token",s??""),{queryKey:Ht.teamKey(n),enabled:s!==void 0}),i=h.useRef();return h.useEffect(()=>{o.data&&o.data.accessToken!==i.current&&(window.dispatchEvent(new W(o.data)),i.current=o.data.accessToken)},[o.data]),o}function Be(){const[e,t]=h.useState();return h.useEffect(()=>{const n=o=>{t(o.detail.payload)},s=Ue();return t(s?H(s.accessToken):void 0),window.addEventListener(W.eventName,n),()=>{window.removeEventListener(W.eventName,n)}},[]),e}const Gs=D,$s=r.z.object({user_id:r.z.number(),email:r.z.string().email(),fullname:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),role:Ut}),Fs=r.z.object({team_id:r.z.number(),team_user:$s}),Gt=M.buildGetRoute({description:"Get the details of a team user",requestHeaderSchema:Gs,requestPathParamsSchema:r.z.object({teamId:r.z.number(),userId:r.z.number()}),pathResolver:({teamId:e,userId:t})=>`/teams/${e}/users/${t}`,successResponseBodySchema:Fs}),$t={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},Ft=(e,t,n)=>R.useQuery({...n,queryFn:async({queryKey:[s,o,i]})=>w.sendByGetRoute(e,Gt,{headers:await t.resolve(),pathParams:{teamId:o,userId:i}})});function Ks(e,t){const n=Be();return Ft(e,t,{queryKey:$t.teamUserKey((n==null?void 0:n.teamId)??0,(n==null?void 0:n.userId)??0),enabled:(n==null?void 0:n.userId)!==void 0&&n.teamId!==void 0})}const Qs=r.z.object({lang_id:r.z.number(),lang_iso:r.z.string(),lang_name:r.z.string(),is_writable:r.z.union([r.z.literal(0),r.z.literal(1)])}),Js=r.z.object({user_id:r.z.number(),email:r.z.string().email(),fullname:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),admin_rights:r.z.array(r.z.string()),languages:r.z.array(Qs),is_admin:r.z.boolean(),is_reviewer:r.z.boolean()}),Ws=r.z.object({project_id:r.z.string(),contributors:r.z.array(Js)}),Kt=M.buildGetRoute({description:"Get the details of a project contributor",requestHeaderSchema:D,requestPathParamsSchema:r.z.object({projectId:r.z.string(),contributorId:r.z.number()}),pathResolver:({projectId:e,contributorId:t})=>`/projects/${e}/contributors/${t}`,successResponseBodySchema:Ws}),Qt={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},Jt=(e,t,n)=>R.useQuery({...n,queryFn:async({queryKey:[s,o,i]})=>w.sendByGetRoute(e,Kt,{pathParams:{projectId:o,contributorId:i},headers:await t.resolve()})});function Ys(e,t,n){const s=Be();return Jt(e,t,{queryKey:Qt.projectUserKey(n,(s==null?void 0:s.userId)??0),enabled:s!==void 0})}const Xs=r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional()}),Vs=r.z.object({language_id:r.z.number(),language_iso:r.z.string(),progress:r.z.number(),words_to_do:r.z.number()}),Zs=r.z.object({projectId:r.z.string()}),Wt=r.z.object({lang_id:r.z.number(),lang_iso:r.z.string(),lang_name:r.z.string(),is_rtl:r.z.boolean(),plural_forms:r.z.array(r.z.string().optional())}),ea=r.z.object({project_id:r.z.string(),project_uuid:r.z.string().uuid(),languages:r.z.array(Wt)}),ta=r.z.object({projectId:r.z.string()}),na=r.z.object({languages:r.z.array(r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional(),custom_name:r.z.string().optional(),custom_plural_forms:r.z.array(r.z.string()).optional()}))}),ra=r.z.object({project_id:r.z.string(),project_uuid:r.z.string().uuid(),languages:r.z.array(Wt),errors:r.z.array(r.z.object({message:r.z.string(),code:r.z.number(),lang_iso:r.z.string()})).optional()}),sa=r.z.object({projectId:r.z.string()}),aa=r.z.object({langs:r.z.array(r.z.object({lang_iso:r.z.string(),base_lang:r.z.boolean()}))}),oa=r.z.object({result:r.z.boolean()}),Yt=M.buildGetRoute({description:"List of project languages",requestHeaderSchema:D,requestPathParamsSchema:Zs,pathResolver:({projectId:e})=>`/projects/${e}/languages`,successResponseBodySchema:ea}),Xt=M.buildPayloadRoute({description:"Add languages to existing project",requestHeaderSchema:D,method:"post",requestPathParamsSchema:ta,pathResolver:({projectId:e})=>`/projects/${e}/languages`,requestBodySchema:na,successResponseBodySchema:ra}),Vt=M.buildPayloadRoute({description:"Bulk update project languages",requestHeaderSchema:D,method:"put",requestPathParamsSchema:sa,pathResolver:({projectId:e})=>`/projects/${e}/languages/bulk-update`,requestBodySchema:aa,successResponseBodySchema:oa}),ce=D,qe=r.z.union([r.z.literal("localization_files"),r.z.literal("paged_documents"),r.z.literal("marketing")]),ia=r.z.object({per_platform_key_names:r.z.boolean(),reviewing:r.z.boolean(),auto_toggle_unverified:r.z.boolean(),offline_translation:r.z.boolean(),key_editing:r.z.boolean(),inline_machine_translations:r.z.boolean(),custom_translation_statuses:r.z.boolean(),custom_translation_statuses_allow_multiple:r.z.boolean(),segmentation:r.z.boolean(),contributor_preview_download_enabled:r.z.boolean()}),ca=r.z.object({not_reviewed:r.z.number(),unverified:r.z.number(),spelling_grammar:r.z.number(),inconsistent_placeholders:r.z.number(),inconsistent_html:r.z.number(),different_number_of_urls:r.z.number(),different_urls:r.z.number(),leading_whitespace:r.z.number(),trailing_whitespace:r.z.number(),different_number_of_email_address:r.z.number(),different_email_address:r.z.number(),different_brackets:r.z.number(),different_numbers:r.z.number(),double_space:r.z.number(),special_placeholder:r.z.number(),unbalanced_brackets:r.z.number()}),la=r.z.object({progress_total:r.z.number(),keys_total:r.z.number(),team:r.z.number(),base_words:r.z.number(),qa_issues_total:r.z.number(),qa_issues:ca,languages:r.z.array(Vs)}),le=r.z.object({project_id:r.z.string(),uuid:r.z.string().uuid(),project_type:qe,name:r.z.string(),description:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),created_by:r.z.number(),created_by_email:r.z.string(),team_id:r.z.number(),base_language_id:r.z.number(),base_language_iso:r.z.string(),settings:ia.optional(),statistics:la.optional()}),ua=r.z.object({name:r.z.string(),team_id:r.z.string(),base_lang_iso:r.z.string(),languages:r.z.array(Xs),project_type:qe,is_segmentation_enabled:r.z.boolean()}),bt=r.z.union([r.z.literal(0),r.z.literal(1)]),da=r.z.object({filter_type:qe.optional(),filter_team_id:r.z.number().optional(),filter_names:r.z.string().optional(),include_statistics:bt.optional(),include_settings:bt.optional(),limit:r.z.number().optional(),page:r.z.number().optional()}),ma=r.z.object({projects:r.z.array(le)}),ga=r.z.object({project_id:r.z.string()}),_a=r.z.object({project_id:r.z.string()}),fa=r.z.object({name:r.z.string().min(1),description:r.z.string().optional()}),ue=()=>"/projects",Zt=Re.buildPayloadRoute({description:"Create a new project",requestHeaderSchema:ce,method:"post",pathResolver:ue,requestBodySchema:ua,successResponseBodySchema:le}),en=M.buildGetRoute({description:"List all projects",requestHeaderSchema:ce,pathResolver:ue,requestQuerySchema:da,successResponseBodySchema:ma}),tn=M.buildGetRoute({description:"Retrieve a project",requestHeaderSchema:ce,requestPathParamsSchema:ga,pathResolver:({project_id:e})=>`${ue()}/${e}`,successResponseBodySchema:le}),nn=Re.buildPayloadRoute({description:"Update a project",requestHeaderSchema:ce,method:"put",requestPathParamsSchema:_a,pathResolver:({project_id:e})=>`${ue()}/${e}`,requestBodySchema:fa,successResponseBodySchema:le});function pa(e,t,n={}){return R.useMutation({...n,mutationFn:async s=>w.sendByPayloadRoute(e,Zt,{headers:await t.resolve(),body:s})})}const ha={projectIdKey:e=>["listProjectLanguages",e]};function ba(e,t,n){return R.useQuery({...n,queryFn:async({queryKey:[s,o]})=>w.sendByGetRoute(e,Yt,{headers:await t.resolve(),pathParams:{projectId:o}})})}const Ta={paramsKey:e=>["listProjects",e]};function ja(e,t,n){return R.useQuery({...n,queryFn:async({queryKey:[s,o]})=>w.sendByGetRoute(e,en,{headers:await t.resolve(),queryParams:o})})}const va={projectIdKey:e=>["retrieveProject",e]};function ya(e,t,n){return R.useQuery({...n,queryFn:async({queryKey:[s,o]})=>w.sendByGetRoute(e,tn,{headers:await t.resolve(),pathParams:{project_id:o}})})}function Sa(e,t,n,s={}){return R.useMutation({...s,mutationFn:async o=>w.sendByPayloadRoute(e,nn,{headers:await t.resolve(),body:o,pathParams:n})})}function Ea(e,t,n,s={}){return R.useMutation({...s,mutationFn:async o=>w.sendByPayloadRoute(e,Vt,{pathParams:t,headers:await n.resolve(),body:o})})}function xa(e,t,n,s={}){return R.useMutation({...s,mutationFn:async o=>w.sendByPayloadRoute(e,Xt,{pathParams:t,headers:await n.resolve(),body:o})})}exports.Breadcrumbs=bs;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=Le;exports.ENTERPRISE_PLAN_IDS=kt;exports.ESSENTIAL_PLAN_IDS=Ct;exports.FREE_PLAN_ID=Ne;exports.HeaderBuilder=A;exports.JwtAuthHeaderBuilderMiddleware=As;exports.NavigationPanel=Q;exports.NavigationTabs=Cs;exports.PRO_PLAN_IDS=wt;exports.PublicApiHeaderBuilderMiddleware=Rs;exports.START_PLAN_IDS=zt;exports.Sidebar=k;exports.SidebarTaskLanguageStatuses=C;exports.SidebarTaskStatuses=ne;exports.SidebarTaskTypeOptions=F;exports.TRIAL_PLAN_ID=Pt;exports.UnauthorizedError=J;exports.addLanguagesToProject=Xt;exports.bulkUpdateProjectLanguages=Vt;exports.convertNewLineToBreakTag=At;exports.createHeaderBuilderMiddleware=Me;exports.createProject=Zt;exports.formatDate=It;exports.formatDateTz=mr;exports.generateTokenFromClassicSession=qs;exports.getAuthenticatedSessionDetailFromRequest=Is;exports.getCsrfTokenFromCookie=Bt;exports.getJwtTokenFromCookie=Ue;exports.getTeamUser=Gt;exports.getTeamUsersQueryKey=$t;exports.getUserToken=ie;exports.getUserTokenKey=Ht;exports.isEnterpriseOpenSourcePlan=ir;exports.isEnterprisePlan=ar;exports.isEssentialPlan=rr;exports.isFreePlan=ae;exports.isPaidPlan=or;exports.isProPlan=sr;exports.isStartPlan=nr;exports.isTrialPlan=Oe;exports.listProjectLanguages=Yt;exports.listProjectLanguagesKey=ha;exports.listProjects=en;exports.listProjectsKey=Ta;exports.makeUrlClickable=Rt;exports.parseJwtTokenPayload=H;exports.refreshExpiredToken=Hs;exports.retrieveContributor=Kt;exports.retrieveContributorKeys=Qt;exports.retrieveProject=tn;exports.retrieveProjectQueryKey=va;exports.updateProject=nn;exports.useAddLanguagesToProjectMutation=xa;exports.useAuthenticatedProjectContributor=Ys;exports.useAuthenticatedSessionPayload=Be;exports.useAuthenticatedUser=Ks;exports.useBulkUpdateProjectLanguagesMutation=Ea;exports.useCreateProjectMutation=pa;exports.useEffectOnce=oe;exports.useGetPromotedClassicSessionJwtQuery=Ds;exports.useGetTeamUsersQuery=Ft;exports.useGetUserTokenQuery=Dt;exports.useListProjectLanguagesQuery=ba;exports.useListProjectsQuery=ja;exports.useRetrieveContributorQuery=Jt;exports.useRetrieveProjectQuery=ya;exports.useUpdateProjectMutation=Sa;
1
+ "use strict";var In=Object.defineProperty;var kn=(e,t,n)=>t in e?In(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ne=(e,t,n)=>kn(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),h=require("react"),d=require("@lokalise/louis"),oe=require("date-fns"),Nn=require("date-fns-tz"),r=require("zod"),ke=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),z=require("@lokalise/frontend-http-client"),k=require("@tanstack/react-query"),U=require("@lokalise/universal-ts-utils/node");function On(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,s.get?s:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const F=On(h),se={Completed:"completed",InProgress:"in_progress",Created:"created",Queued:"queued"},x={...se,NotStarted:"not_started"},J={translation:"translation",review:"review",lqa_by_ai:"lqa_by_ai",automatic_translation:"automatic_translation"};var re=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function St(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _e,Fe;function Ne(){if(Fe)return _e;Fe=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return _e=e,_e}var ge,Ke;function Ln(){if(Ke)return ge;Ke=1;var e=typeof re=="object"&&re&&re.Object===Object&&re;return ge=e,ge}var fe,Qe;function vt(){if(Qe)return fe;Qe=1;var e=Ln(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return fe=n,fe}var pe,We;function Mn(){if(We)return pe;We=1;var e=vt(),t=function(){return e.Date.now()};return pe=t,pe}var he,Ye;function Un(){if(Ye)return he;Ye=1;var e=/\s/;function t(n){for(var s=n.length;s--&&e.test(n.charAt(s)););return s}return he=t,he}var be,Xe;function Hn(){if(Xe)return be;Xe=1;var e=Un(),t=/^\s+/;function n(s){return s&&s.slice(0,e(s)+1).replace(t,"")}return be=n,be}var Te,Ve;function jt(){if(Ve)return Te;Ve=1;var e=vt(),t=e.Symbol;return Te=t,Te}var Ee,Ze;function Bn(){if(Ze)return Ee;Ze=1;var e=jt(),t=Object.prototype,n=t.hasOwnProperty,s=t.toString,o=e?e.toStringTag:void 0;function i(c){var l=n.call(c,o),m=c[o];try{c[o]=void 0;var u=!0}catch{}var _=s.call(c);return u&&(l?c[o]=m:delete c[o]),_}return Ee=i,Ee}var Se,et;function Dn(){if(et)return Se;et=1;var e=Object.prototype,t=e.toString;function n(s){return t.call(s)}return Se=n,Se}var ve,tt;function qn(){if(tt)return ve;tt=1;var e=jt(),t=Bn(),n=Dn(),s="[object Null]",o="[object Undefined]",i=e?e.toStringTag:void 0;function c(l){return l==null?l===void 0?o:s:i&&i in Object(l)?t(l):n(l)}return ve=c,ve}var je,nt;function Gn(){if(nt)return je;nt=1;function e(t){return t!=null&&typeof t=="object"}return je=e,je}var ye,rt;function $n(){if(rt)return ye;rt=1;var e=qn(),t=Gn(),n="[object Symbol]";function s(o){return typeof o=="symbol"||t(o)&&e(o)==n}return ye=s,ye}var Ae,st;function Jn(){if(st)return Ae;st=1;var e=Hn(),t=Ne(),n=$n(),s=NaN,o=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function m(u){if(typeof u=="number")return u;if(n(u))return s;if(t(u)){var _=typeof u.valueOf=="function"?u.valueOf():u;u=t(_)?_+"":_}if(typeof u!="string")return u===0?u:+u;u=e(u);var f=i.test(u);return f||c.test(u)?l(u.slice(2),f?2:8):o.test(u)?s:+u}return Ae=m,Ae}var Ce,at;function yt(){if(at)return Ce;at=1;var e=Ne(),t=Mn(),n=Jn(),s="Expected a function",o=Math.max,i=Math.min;function c(l,m,u){var _,f,S,v,g,y,T=0,p=!1,b=!1,E=!0;if(typeof l!="function")throw new TypeError(s);m=n(m)||0,e(u)&&(p=!!u.leading,b="maxWait"in u,S=b?o(n(u.maxWait)||0,m):S,E="trailing"in u?!!u.trailing:E);function C(j){var N=_,G=f;return _=f=void 0,T=j,v=l.apply(G,N),v}function A(j){return T=j,g=setTimeout(te,m),p?C(j):v}function ee(j){var N=j-y,G=j-T,Je=m-N;return b?i(Je,S-G):Je}function Ge(j){var N=j-y,G=j-T;return y===void 0||N>=m||N<0||b&&G>=S}function te(){var j=t();if(Ge(j))return $e(j);g=setTimeout(te,ee(j))}function $e(j){return g=void 0,E&&_?C(j):(_=f=void 0,v)}function zn(){g!==void 0&&clearTimeout(g),T=0,_=y=f=g=void 0}function wn(){return g===void 0?v:$e(t())}function me(){var j=t(),N=Ge(j);if(_=arguments,f=this,y=j,N){if(g===void 0)return A(y);if(b)return clearTimeout(g),g=setTimeout(te,m),C(y)}return g===void 0&&(g=setTimeout(te,m)),v}return me.cancel=zn,me.flush=wn,me}return Ce=c,Ce}var Fn=yt();const Kn=St(Fn);var Pe,ot;function Qn(){if(ot)return Pe;ot=1;var e=yt(),t=Ne(),n="Expected a function";function s(o,i,c){var l=!0,m=!0;if(typeof o!="function")throw new TypeError(n);return t(c)&&(l="leading"in c?!!c.leading:l,m="trailing"in c?!!c.trailing:m),e(o,i,{leading:l,maxWait:i,trailing:m})}return Pe=s,Pe}var Wn=Qn();const Yn=St(Wn),Xn=(e,t,n,s)=>{switch(t){case"debounce":return Kn(e,n,s);case"throttle":return Yn(e,n,s);default:return e}},Vn=e=>{const t=F.useRef(e);return F.useEffect(()=>{t.current=e}),F.useMemo(()=>(...n)=>{var s;return(s=t.current)===null||s===void 0?void 0:s.call(t,...n)},[])},Zn=e=>{const[t,n]=F.useState((e==null?void 0:e.current)||null);return e&&setTimeout(()=>{e.current!==t&&n(e.current)},0),{refProxy:F.useMemo(()=>new Proxy(o=>{o!==t&&n(o)},{get(o,i){return i==="current"?t:o[i]},set(o,i,c){return i==="current"?n(c):o[i]=c,!0}}),[t]),refElement:t,setRefElement:n}},er=(e,t)=>t==="border-box"?{width:e.borderBoxSize[0].inlineSize,height:e.borderBoxSize[0].blockSize}:t==="content-box"?{width:e.contentBoxSize[0].inlineSize,height:e.contentBoxSize[0].blockSize}:{width:e.contentRect.width,height:e.contentRect.height};function tr({skipOnMount:e=!1,refreshMode:t,refreshRate:n=1e3,refreshOptions:s,handleWidth:o=!0,handleHeight:i=!0,targetRef:c,observerOptions:l,onResize:m}={}){const u=h.useRef(e),_=Vn(m),[f,S]=h.useState({width:void 0,height:void 0}),{refProxy:v,refElement:g}=Zn(c),{box:y}=l||{},T=h.useCallback(b=>{if(!o&&!i)return;if(u.current){u.current=!1;return}const E=(C,A)=>o&&C.width!==A.width||i&&C.height!==A.height;b.forEach(C=>{const A=er(C,y);S(ee=>E(ee,A)?(_==null||_({width:A.width,height:A.height,entry:C}),A):ee)})},[o,i,u,y]),p=h.useCallback(Xn(T,t,n,s),[T,t,n,s]);return h.useEffect(()=>{let b;return g?(b=new window.ResizeObserver(p),b.observe(g,l)):(f.width||f.height)&&(_==null||_({width:null,height:null,entry:null}),S({width:void 0,height:void 0})),()=>{var E,C,A;(E=b==null?void 0:b.disconnect)===null||E===void 0||E.call(b),(A=(C=p).cancel)===null||A===void 0||A.call(C)}},[p,g]),Object.assign({ref:v},f)}function At(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=At(e[t]))&&(s&&(s+=" "),s+=n)}else for(n in e)e[n]&&(s&&(s+=" "),s+=n);return s}function I(){for(var e,t,n=0,s="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=At(e))&&(s&&(s+=" "),s+=t);return s}const nr="_headerContainer_1cubo_1",rr="_navigationTabList_1cubo_8",sr="_navigationTab_1cubo_8",ar="_headerContent_1cubo_34",or="_staticEnabled_1cubo_50",D={headerContainer:nr,navigationTabList:rr,navigationTab:sr,headerContent:ar,staticEnabled:or},ir=77,K=({sticky:e,children:t})=>{const{ref:n,height:s}=tr({refreshMode:"debounce",refreshRate:0}),[o,i]=h.useState(!1),c=()=>o?!e:!0;h.useEffect(()=>{const m=()=>{i(window.scrollY>0)};return window.addEventListener("scroll",m),()=>window.removeEventListener("scroll",m)},[]);const l=`${s||ir}px`;return a.jsx("div",{style:{minHeight:l},children:a.jsx("div",{children:a.jsxs("div",{ref:n,className:I(D.headerContent,{[D.staticEnabled]:c()}),children:[a.jsx(K.Header,{}),a.jsx(K.Tabs,{}),t]})})})};K.Header=({children:e})=>a.jsx("div",{className:D.headerContainer,children:e});K.Tabs=({children:e})=>a.jsx("div",{className:"flex justify-between gap-2 nowrap",children:e});const cr="_sidebarContainer_bmdti_1",lr={sidebarContainer:cr},ur="_logoLink_1baxb_1",dr={logoLink:ur},mr=({src:e,href:t="/",ariaLabel:n="Lokalise App Home",alt:s="Lokalise Logo"})=>a.jsx("a",{className:dr.logoLink,href:t,"aria-label":n,children:a.jsx("img",{src:e,alt:s})}),_r="_link_18vhx_1",gr="_active_18vhx_18",it={link:_r,active:gr},fr=({label:e,to:t,icon:n})=>a.jsx(d.Tooltip,{placement:"right",tooltip:e,children:a.jsx(d.Link,{className:I(it.link,{[it.active]:window.location.pathname.startsWith(t)}),href:t,children:a.jsx(n,{size:"25px"})})}),pr="_dropdownButton_13l5r_1",hr="_dropdownButtonActive_13l5r_18",ct={dropdownButton:pr,dropdownButtonActive:hr},br=({children:e,icon:t})=>a.jsx(d.Menu,{menuButton:({opened:n})=>a.jsx(d.Tooltip,{placement:"right",tooltip:"Help",children:a.jsx("button",{type:"button",className:I(ct.dropdownButton,{[ct.dropdownButtonActive]:n}),children:a.jsx(t,{size:"25px"})})}),children:a.jsx(d.MenuList,{placement:"right-start",children:e})}),Tr="_iconContainer_nz34m_1",Er={iconContainer:Tr},Ct=({className:e=""})=>a.jsx("div",{"aria-label":"Upgrade Icon",className:I(Er.iconContainer,"flex-row","items-center","justify-center",e),children:a.jsx(d.CaretUpIcon,{})}),Sr="_menuContainer_1phdw_10",vr="_profileButton_1phdw_20",jr="_profileImage_1phdw_33",yr="_profileImageHighlight_1phdw_41",Ar="_profileImageUpgradeIcon_1phdw_45",Cr="_userIconWrapper_1phdw_51",L={menuContainer:Sr,profileButton:vr,profileImage:jr,profileImageHighlight:yr,profileImageUpgradeIcon:Ar,userIconWrapper:Cr},Pt=h.createContext({}),Y=()=>h.useContext(Pt),Pr=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:s,showBillingButton:o,allowTeamCreation:i,isProviderAlpha:c,canAccessTeamSettings:l,isEndOfTrialActive:m,isTeamSuspended:u,isFullyAuthenticated:_}=Y();return a.jsx(d.Menu,{menuButton:()=>a.jsxs("button",{className:L.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?a.jsx("img",{src:t.logoUrl,className:I(L.profileImage,{[L.profileImageHighlight]:s}),alt:"Team Logo"}):a.jsx("div",{className:I(L.userIconWrapper,"flex-row","align-center","items-center",{[L.profileImageHighlight]:s}),children:a.jsx(d.UserIcon,{size:"25px"})}),s&&a.jsx(Ct,{className:L.profileImageUpgradeIcon})]}),children:a.jsx(d.MenuList,{placement:"right-end",className:L.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,canAccessTeamSettings:l,isEndOfTrialActive:m,isTeamSuspended:u,showBillingButton:o,isProviderAlpha:c,isFullyAuthenticated:_})})})},Oe=0,xt=9999,Rt=[150,151,250,251],zt=[152,153,252,253],wt=[154,155,157,158,254,255,258,354,355,358],It=[156,159,160,256,259,260],Le=9998,ie=e=>e===Oe,Me=e=>e===xt,xr=e=>Rt.includes(e),Rr=e=>zt.includes(e),zr=e=>wt.includes(e),wr=e=>It.includes(e),Ir=e=>e>Oe&&e<Le,kr=e=>e===Le,Nr=/\n/,lt=(e,t,n)=>e.split(t).flatMap((s,o)=>o!==0?[h.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),s]:s),Or=(e,t,n)=>typeof e=="string"?lt(e,t,n):e.flatMap(s=>typeof s=="string"?lt(s,t,n):s),kt=e=>Or(e,Nr,a.jsx("br",{})),Lr=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,Mr=e=>e.match(Lr)??[],ut=(e,t,n)=>{const s=e.split(t);if(s.length===1)return e;const o=[];return s[0]!==""&&o.push(s[0]),s.shift(),s[s.length-1]===""&&s.pop(),o.push(a.jsx("a",{href:t,target:"_blank",rel:"noreferrer noopener",children:t},t+n)),o.push(s.join(t)),o.filter(i=>i!=="")},dt=e=>{const t=Mr(e);return t!=null&&t.length?t.reduce((n,s,o)=>typeof n=="string"?ut(n,s,o):n.flatMap(i=>typeof i=="string"?ut(i,s,o):i),e):e},Nt=e=>typeof e=="string"?dt(e):e.flatMap(t=>typeof t=="string"?dt(t):t,e),Ot=(e,t="PP")=>oe.format(e,t),Ur=(e,t,n="PP")=>oe.format(Nn.toZonedTime(e,t),n),ce=e=>{h.useEffect(e,[])},mt={biller:"biller",owner:"owner"},_t=[mt.biller,mt.owner],Hr=({children:e,config:t})=>{const{teams:n,currentTeamId:s,planId:o,isEndOfTrialActive:i,isFullyAuthenticated:c,userTeamRole:l}=t,m=n.find(p=>p.id===s),u=n.filter(p=>p.id!==s),_=_t.includes(l),f=_t.includes(l),S=ie(o)||Me(o),T={...t,currentTeam:m,otherTeams:u,canChangeBilling:_,canAccessTeamSettings:f,isOnFreeOrTrialPlan:S,showUpgradeCta:c&&S&&_,showBillingButton:c&&f&&_,allowTeamCreation:c&&!i};return a.jsx(Pt.Provider,{value:T,children:e})},Br=({config:e,children:t})=>a.jsx(Hr,{config:e,children:a.jsx(Pr,{children:t})}),Dr="_container_q5pot_1",qr="_profileEmail_q5pot_5",gt={container:Dr,profileEmail:qr},Gr=({href:e,onClick:t,userEmail:n,hideBottomDivider:s})=>{const{isEndOfTrialActive:o,isTeamSuspended:i}=Y();return o||i?null:a.jsxs(a.Fragment,{children:[a.jsx(d.MenuItem,{href:e,onClick:()=>{t==null||t()},children:a.jsxs("div",{className:`flex-col ${gt.container}`,children:[a.jsx("span",{children:"Profile Settings"}),a.jsx("span",{className:gt.profileEmail,children:n})]})}),!s&&a.jsx(d.MenuDivider,{})]})},$r="_wrapper_1in7x_5",Jr="_profileImage_1in7x_11",Fr="_teamDetails_1in7x_19",Kr="_planWrapper_1in7x_28",Qr="_teamName_1in7x_36",Wr="_planLabel_1in7x_45",Yr="_membership_1in7x_53",Xr="_defaultProfileImage_1in7x_59",O={wrapper:$r,profileImage:Jr,teamDetails:Fr,planWrapper:Kr,teamName:Qr,planLabel:Wr,membership:Yr,defaultProfileImage:Xr},Lt=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:s,planId:o}=Y(),i=e||s;if(!i)return null;const c=ie(o)?"Free":Me(o)?"Trial":void 0,l=t?d.MenuItem:"div";return a.jsxs(l,{className:O.wrapper,...t&&{onClick:()=>t(i)},children:[i.logoUrl?a.jsx("img",{className:O.profileImage,src:i.logoUrl,alt:""}):a.jsx("span",{className:`${O.defaultProfileImage}`,children:a.jsx(d.UserIcon,{size:"25px"})}),a.jsxs("div",{className:O.teamDetails,children:[a.jsxs("div",{className:O.planWrapper,children:[a.jsx("span",{className:O.teamName,children:i.name}),c&&!n&&a.jsx("span",{className:`${O.planLabel}`,children:c})]}),a.jsx("span",{className:O.membership,children:i.role})]})]})},Vr="_teamsContainer_1ncrr_5",Zr={teamsContainer:Vr},es=({onSwitchTeam:e})=>{const{otherTeams:t}=Y();return t.length===0?null:a.jsx("div",{"data-testid":"sidebar-team-switch",className:`flex-col items-stretch ${Zr.teamsContainer}`,children:t.map(n=>a.jsx(Lt,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},ts="_container_1u995_1",ns="_planCta_1u995_15",rs="_upgradeIconWrapper_1u995_19",xe={container:ts,planCta:ns,upgradeIconWrapper:rs},ss=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:s}=Y();if(!s)return null;const c=ie(t)?"Your team is currently on the Free plan":`Free trial ends in ${n} ${n===1?"day":"days"}`;return a.jsxs(d.MenuItem,{"data-testid":"sidebar-upgrade-menu-item",href:e,className:`flex-col gap-1 items-start ${xe.container}`,children:[a.jsx("span",{className:xe.planCta,children:c}),a.jsxs("div",{className:`flex-row items-center gap-1 ${xe.upgradeIconWrapper}`,children:[a.jsx(Ct,{}),a.jsx("span",{children:"See upgrade options"})]})]})},as=Math.min,os=Math.max;function ft(e,t,n){return os(e,as(t,n))}function Mt(e,t){return typeof e=="function"?e(t):e}function Ut(e){return e.split("-")[0]}function is(e){return e==="x"?"y":"x"}function cs(e){return["top","bottom"].includes(Ut(e))?"y":"x"}function ls(e){return{top:0,right:0,bottom:0,left:0,...e}}function us(e){return typeof e!="number"?ls(e):{top:e,right:e,bottom:e,left:e}}function pt(e){const{x:t,y:n,width:s,height:o}=e;return{width:s,height:o,top:n,left:t,right:t+s,bottom:n+o,x:t,y:n}}async function ds(e,t){var n;t===void 0&&(t={});const{x:s,y:o,platform:i,rects:c,elements:l,strategy:m}=e,{boundary:u="clippingAncestors",rootBoundary:_="viewport",elementContext:f="floating",altBoundary:S=!1,padding:v=0}=Mt(t,e),g=us(v),T=l[S?f==="floating"?"reference":"floating":f],p=pt(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(T)))==null||n?T:T.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(l.floating)),boundary:u,rootBoundary:_,strategy:m})),b=f==="floating"?{x:s,y:o,width:c.floating.width,height:c.floating.height}:c.reference,E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(l.floating)),C=await(i.isElement==null?void 0:i.isElement(E))?await(i.getScale==null?void 0:i.getScale(E))||{x:1,y:1}:{x:1,y:1},A=pt(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:b,offsetParent:E,strategy:m}):b);return{top:(p.top-A.top+g.top)/C.y,bottom:(A.bottom-p.bottom+g.bottom)/C.y,left:(p.left-A.left+g.left)/C.x,right:(A.right-p.right+g.right)/C.x}}const ms=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:s,placement:o}=t,{mainAxis:i=!0,crossAxis:c=!1,limiter:l={fn:T=>{let{x:p,y:b}=T;return{x:p,y:b}}},...m}=Mt(e,t),u={x:n,y:s},_=await ds(t,m),f=cs(Ut(o)),S=is(f);let v=u[S],g=u[f];if(i){const T=S==="y"?"top":"left",p=S==="y"?"bottom":"right",b=v+_[T],E=v-_[p];v=ft(b,v,E)}if(c){const T=f==="y"?"top":"left",p=f==="y"?"bottom":"right",b=g+_[T],E=g-_[p];g=ft(b,g,E)}const y=l.fn({...t,[S]:v,[f]:g});return{...y,data:{x:y.x-n,y:y.y-s,enabled:{[S]:i,[f]:c}}}}}},_s="_navItem_1dudv_1",gs="_activeNavItem_1dudv_18",fs="_badge_1dudv_23",Re={navItem:_s,activeNavItem:gs,badge:fs},Ht=h.createContext({}),X=()=>h.useContext(Ht),ps=e=>{const t=e.lastIndexOf("."),n=e.slice(0,t),s=e.slice(t+1);return{name:n,extension:s}},hs=(e,t)=>{switch(e){case x.Completed:return t<100?"Closed":"Completed";case x.Created:return t>0?"In progress":"Not started";case x.InProgress:return"In progress";case x.Queued:return"Queued";case x.NotStarted:return"Not started";default:return"-"}},bs=e=>{const t=e.progress??0;return e.status===x.Created&&t>0?x.InProgress:e.status},Ts={[J.translation]:"#0891B2",[J.review]:"#16922D",[J.lqa_by_ai]:"#8B5CF6",[J.automatic_translation]:"#60A5FA"},Es=e=>{const t=[x.InProgress,x.Created,x.Completed];return e.filter(n=>n.status!=="queued").map(n=>({...n,status:bs(n)})).sort((n,s)=>n.status===x.InProgress&&n.progress===100?-1:s.status===x.InProgress&&s.progress===100?1:n.status===s.status?n.name<s.name?1:-1:t.indexOf(n.status)-t.indexOf(s.status))},ht=e=>[se.InProgress,se.Created].includes(e),Ss=(e,t)=>ht(e.status)&&ht(t.status)&&(t.progress??0)>=100,vs=({task:e,language:t})=>{const[n,s]=h.useState(!1),[o,i]=h.useState(!1),{onLanguageCompleteConfirm:c,fetchTasks:l}=X(),m=()=>{i(!1)};return a.jsxs(a.Fragment,{children:[o&&a.jsx(d.ConfirmModal,{opened:!0,loading:n,title:`Are you finished with ${t.name}?`,confirmText:"Mark as done",closeText:"Cancel",onClose:m,onConfirm:async()=>{s(!0),await c({task:e,language:t,closePrompt:m}),l()},children:a.jsxs(d.Alert,{status:"info",children:["Make sure you are finished and ",a.jsx("strong",{children:"mark it as done"})," to notify your team admin. This action cannot be undone, and the language might no longer be available for you to edit."]})}),a.jsx(d.Link,{disabled:n,onClick:()=>{i(!0)},children:"Mark as done"})]})},js="_langRowCompleted_vpgdi_1",ys="_langCellSecondary_vpgdi_15",As="_langStatus_vpgdi_20",ze={langRowCompleted:js,langCellSecondary:ys,langStatus:As},Cs=({language:e,task:t})=>{const{getProjectUrl:n,langNameOnClick:s,langProgressOnClick:o}=X(),i=e.progress??0,c=e.status===x.Completed,l=Ss(t,e);return a.jsxs("tr",{className:I({[ze.langRowCompleted]:l}),children:[a.jsx("td",{children:a.jsx(d.Tooltip,{tooltip:"Open in bilingual view",children:a.jsx(d.Link,{href:n({task:t,language:e}),onClick:()=>{s==null||s({task:t,language:e})},children:e.name})})}),a.jsx("td",{className:ze.langCellSecondary,children:l||c?"0":a.jsx(d.Tooltip,{tooltip:"Open uncompleted items",children:a.jsx(d.Link,{href:n({task:t,language:e,taskUncompleted:!0}),onClick:()=>{o==null||o({task:t,language:e})},children:e.base_words_total-e.base_words_done})})}),a.jsxs("td",{children:[i,"%"]}),a.jsx("td",{children:l?a.jsx(vs,{task:t,language:e}):a.jsx("span",{className:`${ze.langStatus} flex-row items-center justify-start`,"data-status":e.status,children:hs(e.status,i)})})]})},Ps="_taskContainer_mt2or_1",xs="_taskTitle_mt2or_21",Rs="_taskDescription_mt2or_28",zs="_languagesTable_mt2or_35",ws="_metadata_mt2or_87",B={taskContainer:Ps,taskTitle:xs,taskDescription:Rs,languagesTable:zs,metadata:ws},Is=({task:e})=>{const{getProjectUrl:t,taskTitleOnClick:n}=X(),s=Es(e.langs),o=i=>{window.open(`/style-guide/${e.team_id}/download/${i.id}/link`,"_blank","noopener,noreferrer")};return a.jsxs("div",{className:B.taskContainer,children:[a.jsxs("div",{className:"flex-row gap-1 items-center",children:[a.jsxs("div",{className:"flex-row gap-1 items-start flex-wrap",children:[a.jsx(d.Tag,{color:Ts[e.task_type],variant:"solid",children:e.task_type.toLocaleUpperCase()}),e.due_date&&a.jsxs(d.Tag,{color:"#EAB308",children:["DUE ",Ot(oe.parseISO(e.due_date),"yyyy-MM-dd")]})]}),e.style_guides.length>0&&a.jsx("div",{className:"flex-row",children:e.style_guides.length===1?a.jsx(d.Button,{size:"sm",variant:"secondary",onClick:()=>o(e.style_guides[0]),children:"Download style guide"}):a.jsx(d.Menu,{menuButton:a.jsx(d.Button,{variant:"secondary",size:"sm",children:"Download style guide"}),children:a.jsx(d.MenuList,{children:e.style_guides.map(i=>a.jsx(d.MenuItem,{onClick:()=>o(i),children:ps(i.name).name},i.id))})})})]}),a.jsx("h4",{className:B.taskTitle,children:a.jsx(d.Link,{href:t({task:e,view:"multi"}),onClick:()=>{n==null||n({task:e})},children:e.title})}),e.description&&a.jsx("div",{className:B.taskDescription,children:kt(Nt(e.description))}),a.jsxs("table",{className:B.languagesTable,children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Languages"}),a.jsx("th",{children:"Words to do"}),a.jsx("th",{children:"Progress"}),a.jsx("th",{children:"Status"})]})}),a.jsx("tbody",{children:s.map(i=>a.jsx(Cs,{language:i,task:e},i.lang_id))})]}),a.jsxs("div",{"data-testid":"sidebar-task-overview-metadata",className:B.metadata,children:[a.jsxs("span",{children:["Source: ",e.source_lang_name]}),a.jsx("span",{children:e.created_by_fullname}),a.jsxs("span",{children:["In ",e.project_name,e.master_branching_enabled==="1"&&a.jsx("div",{className:B.tag,children:e.branch_name?e.branch_name:"master"})]})]})]})},P={TaskCompleted:"task_completed",TaskClosed:"task_closed",Refresh:"refresh",ShowDialog:"show_dialog"},ks="_loadingContainer_19d6m_1",Ns="_noTasksContainer_19d6m_7",Os="_noTasksHeading_19d6m_14",Ls="_noTasksText_19d6m_18",Ms="_tasksContainer_19d6m_23",$={loadingContainer:ks,noTasksContainer:Ns,noTasksHeading:Os,noTasksText:Ls,tasksContainer:Ms},Us=()=>{const{tasks:e,onTasksWidgetOpen:t,loadingTasks:n,fetchTasks:s}=X();return ce(()=>((async()=>{const i=await s();t==null||t({tasks:i})})(),document.addEventListener(P.TaskCompleted,s),document.addEventListener(P.TaskClosed,s),document.addEventListener(P.Refresh,s),()=>{document.removeEventListener(P.TaskCompleted,s),document.removeEventListener(P.TaskClosed,s),document.removeEventListener(P.Refresh,s)})),n?a.jsx("div",{"data-testid":"sidebar-tasks-loading-popover",className:$.loadingContainer,children:a.jsx(d.Loading,{})}):e.length===0?a.jsxs("div",{"data-testid":"sidebar-no-tasks-popover",className:$.noTasksContainer,children:[a.jsx("h3",{className:$.noTasksHeading,children:"No tasks"}),a.jsxs("div",{className:$.noTasksText,children:["Your incoming tasks will appear here.",a.jsx("br",{}),a.jsx(d.Link,{href:"https://docs.lokalise.com/translation-workflow/tasks",target:"_new",children:"Learn more"})]})]}):a.jsx("div",{"data-testid":"sidebar-tasks-popover",className:$.tasksContainer,children:e.map(o=>a.jsx(Is,{task:o},o.id))})},Hs=({children:e,config:t})=>{const[n,s]=h.useState([]),[o,i]=h.useState(!0),[c,l]=h.useState(0),{getProjectUrl:m,onLanguageCompleteConfirm:u,onTasksWidgetOpen:_,langNameOnClick:f,langProgressOnClick:S,taskTitleOnClick:v}=t,{getTasks:g,getTasksCount:y}=t,T=async()=>{i(!0);const E=await g();return s(E),i(!1),E},p=async()=>{const E=await y();l(E)};ce(()=>(p(),document.addEventListener(P.TaskCompleted,p),document.addEventListener(P.TaskClosed,p),document.addEventListener(P.Refresh,p),()=>{document.removeEventListener(P.TaskCompleted,p),document.removeEventListener(P.TaskClosed,p),document.removeEventListener(P.Refresh,p)}));const b={fetchTasks:T,tasks:n,tasksCount:c,loadingTasks:o,getProjectUrl:m,onLanguageCompleteConfirm:u,onTasksWidgetOpen:_,langNameOnClick:f,langProgressOnClick:S,taskTitleOnClick:v};return a.jsx(Ht.Provider,{value:b,children:e})},Bs=e=>function(n){const{config:s,...o}=n;return a.jsx(Hs,{config:s,children:a.jsx(e,{...o})})},Ds=Bs(()=>{const[e,t]=h.useState(!1),{tasksCount:n}=X();return ce(()=>{const s=()=>{t(!0)};return document.addEventListener(P.ShowDialog,s),()=>{document.removeEventListener(P.ShowDialog,s)}}),a.jsx(d.Tooltip,{tooltip:"Tasks",placement:"right",children:a.jsx(d.Popover,{content:a.jsx(Us,{}),placement:"right",open:e,onOpenChange:t,middlewares:[ms({padding:{top:32,bottom:32}})],children:s=>a.jsxs(d.Button,{type:"button","data-testid":"sidebar-tasks-widget-button","aria-label":"Tasks",className:I(Re.navItem,{[Re.activeNavItem]:s}),children:[a.jsx(d.JobIcon,{size:"25px"}),n>0&&a.jsx("div",{className:Re.badge,"aria-label":`${n} items requiring attention`,children:n>9?"9+":n})]})})})}),R=({children:e,...t})=>a.jsx("nav",{...t,className:lr.sidebarContainer,children:e}),qs=({children:e})=>a.jsx("div",{children:e});R.Top=qs;const Gs=({children:e})=>a.jsx("div",{children:e});R.Bottom=Gs;R.Avatar=mr;R.IconLink=fr;R.Menu=br;R.ProfileMenu=Br;R.TeamSwitch=es;R.TeamMenuItem=Lt;R.UpgradeMenuItem=ss;R.ProfileSettingsMenuItem=Gr;R.Tasks=Ds;const $s="_breadcrumbsItem_1hm6a_1",Js="_breadcrumbs_1hm6a_1",bt={breadcrumbsItem:$s,breadcrumbs:Js},Fs=({items:e})=>a.jsx("nav",{"aria-label":"breadcrumb",className:bt.breadcrumbs,children:e.map((t,n)=>a.jsxs(h.Fragment,{children:[a.jsx(d.Link,{className:bt.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&a.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),Ks=({items:e})=>a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs(h.Fragment,{children:[!!n&&t.some(s=>s.visible)&&a.jsx(d.MenuDivider,{}),t.filter(({visible:s})=>s).map(({link:s,label:o,onClick:i})=>a.jsx(d.MenuItem,{href:s||"#","aria-label":o,onClick:i,children:o},o))]},t[0].label))}),Qs="_badge_1pc1v_1",Ws="_tag_1pc1v_15",Ys="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",Xs="_disabled_1pc1v_57",Vs="_projectNavigationItem_1pc1v_61",Zs="_projectNavigationItemDisabled_1pc1v_67",M={badge:Qs,tag:Ws,withNavLinkStyle:Ys,disabled:Xs,projectNavigationItem:Vs,projectNavigationItemDisabled:Zs},Tt=({label:e,badge:t,novel:n})=>a.jsxs("div",{className:"flex gap-1",children:[a.jsxs("div",{children:[a.jsx("span",{children:e}),!!t&&a.jsx("div",{className:M.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&a.jsx(d.Tag,{className:M.tag,children:n})]}),we=h.forwardRef(({label:e,href:t="",disabled:n=!1,badge:s,onClick:o,novel:i},c)=>a.jsx(d.Tooltip,{tooltip:"You do not have access to this function",show:n,children:a.jsx("div",{className:n?M.projectNavigationItemDisabled:M.projectNavigationItem,children:o||n||!t?a.jsx("button",{type:"button",ref:c,className:I(M.withNavLinkStyle,{[M.disabled]:n}),disabled:n,onClick:o,children:a.jsx(Tt,{label:e,badge:s,novel:i})}):a.jsx("a",{href:t,className:M.withNavLinkStyle,children:a.jsx(Tt,{label:e,badge:s,novel:i})})})}));we.displayName="NavigationTabsItem";const ea=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,ta=e=>e.visible&&(!e.dropdown||ea(e.dropdown)),na=({navigation:e,activeItem:t})=>a.jsx("nav",{"aria-label":"Project",children:a.jsx("ul",{className:D.navigationTabList,"aria-orientation":"horizontal",children:e.filter(ta).map(n=>{var s,o,i;return n.dropdown?a.jsx("li",{className:D.navigationTab,"data-testid":n.key,"aria-selected":(s=n.isActive)==null?void 0:s.call(n,t),children:a.jsx(d.Menu,{menuButton:({opened:c})=>a.jsx(we,{label:n.label,disabled:n.disabled,active:c}),children:a.jsx(d.MenuList,{children:a.jsx(Ks,{items:n.dropdown})})})},n.key):a.jsx("li",{className:D.navigationTab,"data-testid":n.key,"aria-selected":(o=n.isActive)==null?void 0:o.call(n,t),children:a.jsx(we,{label:n.label,href:n.link,onClick:n.onClick,disabled:n.disabled,badge:n.badge,novel:n.novel,active:(i=n.isActive)==null?void 0:i.call(n,t)})},n.key)})})});class w{constructor(t){this.factories=t}static create(t={}){return new w([()=>t])}add(t,n){return new w([...this.factories,()=>({[t]:n})])}and(t){return new w([...this.factories,()=>t])}from(t){return new w([...this.factories,t])}with(t){return t.apply(this)}merge(t){return new w([...this.factories,...t.factories])}async resolve(){const t=this.factories.map(s=>s()),n=await Promise.all(t);return Object.assign({},...n)}}function Ue(e){return new ra(e)}class ra{constructor(t){this.middleware=t}apply(t){return t.from(async()=>{const n=this.middleware(w.create());return n instanceof Promise?n.then(s=>s.resolve()):n.resolve()})}}const He=r.z.union([r.z.literal("owner"),r.z.literal("admin"),r.z.literal("biller"),r.z.literal("member")]),sa=r.z.object({userId:r.z.number(),userUuid:r.z.string().uuid(),teamId:r.z.number(),teamUuid:r.z.string().uuid(),userTeamRole:He,userEmail:r.z.string().email(),userName:r.z.string(),userCurrentTeamId:r.z.number(),planId:r.z.number(),planName:r.z.string(),isProviderAlpha:r.z.boolean(),isFullyAuthenticated:r.z.boolean(),exp:r.z.number()});function q(e){try{const t=e.split(".")[1],n=atob(t);return sa.parse(JSON.parse(n))}catch{return}}class Q extends Error{constructor(){super(...arguments);ne(this,"name","UnauthorizedError");ne(this,"status",401)}}function aa(e){return Ue(async t=>{var i,c;const n=e.getCurrentToken()??await((i=e.generateNewToken)==null?void 0:i.call(e));if(!n)throw new Q;const{exp:s}=q(n.accessToken)??{exp:0};if(!oe.isThisSecond(new Date(s)))return t.add("authorization",`Bearer ${n.accessToken}`);const o=await e.refreshToken(n);if(!o)throw new Q;return(c=e.onNewTokenIssued)==null||c.call(e,o),t.add("authorization",`Bearer ${o.accessToken}`)})}const oa=Ue(e=>e.and({"x-lokalise-plugin":"true"}));function Be(){const e=Ie(document.cookie,"accessToken"),t=Ie(document.cookie,"refreshToken");return!e||!t?null:{accessToken:e,refreshToken:t}}function Bt(){return Ie(document.cookie,"csrf_token")??null}function Ie(e,t){var n,s;return(s=(n=e.split(";").find(o=>o.trim().startsWith(`${t}=`)))==null?void 0:n.trim())==null?void 0:s.substring(t.length+1)}function ia(){const e=Be();if(!e)return;const t=q(e.accessToken);if(t)return{...e,payload:t}}const Dt=r.z.union([r.z.object({authorization:r.z.string()}),r.z.object({AUTHORIZATION:r.z.string()})]),ca=r.z.union([r.z.object({"X-API-Token":r.z.string()}),r.z.object({"X-Api-Token":r.z.string()}),r.z.object({"x-api-token":r.z.string()}),r.z.object({"X-API-TOKEN":r.z.string()})]),la=r.z.union([Dt,ca]),ua=r.z.union([r.z.object({"X-Lokalise-Plugin":r.z.string()}),r.z.object({"x-lokalise-plugin":r.z.string()}),r.z.object({"X-LOKALISE-PLUGIN":r.z.string()})]),H=la.and(ua),qt=r.z.object({accessToken:r.z.string(),refreshToken:r.z.string()}),da=r.z.union([r.z.object({"X-Csrf-Token":r.z.string()}),r.z.object({"X-CSRF-Token":r.z.string()}),r.z.object({"x-csrf-token":r.z.string()}),r.z.object({"X-CSRF-TOKEN":r.z.string()})]),Gt=r.z.union([Dt,da]),le=ke.buildPayloadRoute({description:"Takes a teamId and returns a JWT token access and refresh token for the user",method:"post",requestPathParamsSchema:r.z.object({teamId:r.z.number()}),pathResolver:e=>`/team/${e.teamId}/actions/get-user-token`,requestHeaderSchema:Gt,requestBodySchema:r.z.undefined(),isEmptyResponseExpected:!0,successResponseBodySchema:qt});function ma(e,t,n){return async()=>{const s=t();if(!s)throw new Q;return z.sendByPayloadRoute(e,le,{pathParams:{teamId:Number(await n())},headers:await w.create().add("x-csrf-token",s).resolve()})}}function _a(e){return async({accessToken:t,refreshToken:n})=>{const s=q(t);if(!s)throw new Q;return z.sendByPayloadRoute(e,le,{pathParams:{teamId:s.teamId},headers:await w.create().add("authorization",`Bearer ${n}`).resolve()})}}const $t={teamKey:e=>["getUserToken",e]},Jt=(e,t,n)=>k.useQuery({...n,queryFn:async({queryKey:[s,o]})=>z.sendByPayloadRoute(e,le,{headers:await t.resolve(),pathParams:{teamId:o}})}),ae=class ae extends CustomEvent{constructor(t){super(ae.eventName,{detail:{token:t,payload:q(t.accessToken)}})}};ne(ae,"eventName","new-jwt-issued");let W=ae;function ga(e,t,n){const s=Bt(),o=Jt(e,t.add("x-csrf-token",s??""),{queryKey:$t.teamKey(n),enabled:s!==void 0}),i=h.useRef();return h.useEffect(()=>{o.data&&o.data.accessToken!==i.current&&(window.dispatchEvent(new W(o.data)),i.current=o.data.accessToken)},[o.data]),o}function De(){const[e,t]=h.useState();return h.useEffect(()=>{const n=o=>{t(o.detail.payload)},s=Be();return t(s?q(s.accessToken):void 0),window.addEventListener(W.eventName,n),()=>{window.removeEventListener(W.eventName,n)}},[]),e}const Ft=H,Kt=r.z.object({user_id:r.z.number(),email:r.z.string().email(),fullname:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),role:He}),Qt=r.z.object({team_id:r.z.number(),team_user:Kt}),Wt=U.buildGetRoute({description:"Get the details of a team user",requestHeaderSchema:Ft,requestPathParamsSchema:r.z.object({teamId:r.z.number(),userId:r.z.number()}),pathResolver:({teamId:e,userId:t})=>`/teams/${e}/users/${t}`,successResponseBodySchema:Qt}),Yt={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},Xt=(e,t,n)=>k.useQuery({...n,queryFn:async({queryKey:[s,o,i]})=>z.sendByGetRoute(e,Wt,{headers:await t.resolve(),pathParams:{teamId:o,userId:i}})});function fa(e,t){const n=De();return Xt(e,t,{queryKey:Yt.teamUserKey((n==null?void 0:n.teamId)??0,(n==null?void 0:n.userId)??0),enabled:(n==null?void 0:n.userId)!==void 0&&n.teamId!==void 0})}const pa=H,Vt=r.z.object({lang_id:r.z.number(),lang_iso:r.z.string(),lang_name:r.z.string(),is_writable:r.z.union([r.z.literal(0),r.z.literal(1)])}),Zt=r.z.object({user_id:r.z.number(),email:r.z.string().email(),fullname:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),admin_rights:r.z.array(r.z.string()),languages:r.z.array(Vt),is_admin:r.z.boolean(),is_reviewer:r.z.boolean()}),en=r.z.object({project_id:r.z.string(),contributors:r.z.array(Zt)}),tn=U.buildGetRoute({description:"Get the details of a project contributor",requestHeaderSchema:H,requestPathParamsSchema:r.z.object({projectId:r.z.string(),contributorId:r.z.number()}),pathResolver:({projectId:e,contributorId:t})=>`/projects/${e}/contributors/${t}`,successResponseBodySchema:en}),nn={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},rn=(e,t,n)=>k.useQuery({...n,queryFn:async({queryKey:[s,o,i]})=>z.sendByGetRoute(e,tn,{pathParams:{projectId:o,contributorId:i},headers:await t.resolve()})});function ha(e,t,n){const s=De();return rn(e,t,{queryKey:nn.projectUserKey(n,(s==null?void 0:s.userId)??0),enabled:s!==void 0})}const sn=r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional()}),an=r.z.object({language_id:r.z.number(),language_iso:r.z.string(),progress:r.z.number(),words_to_do:r.z.number()}),on=r.z.object({projectId:r.z.string()}),qe=r.z.object({lang_id:r.z.number(),lang_iso:r.z.string(),lang_name:r.z.string(),is_rtl:r.z.boolean(),plural_forms:r.z.array(r.z.string().optional())}),cn=r.z.object({project_id:r.z.string(),project_uuid:r.z.string().uuid(),languages:r.z.array(qe)}),ln=r.z.object({projectId:r.z.string()}),un=r.z.object({languages:r.z.array(r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional(),custom_name:r.z.string().optional(),custom_plural_forms:r.z.array(r.z.string()).optional()}))}),dn=r.z.object({project_id:r.z.string(),project_uuid:r.z.string().uuid(),languages:r.z.array(qe),errors:r.z.array(r.z.object({message:r.z.string(),code:r.z.number(),lang_iso:r.z.string()})).optional()}),mn=r.z.object({projectId:r.z.string()}),_n=r.z.object({langs:r.z.array(r.z.object({lang_iso:r.z.string(),base_lang:r.z.boolean()}))}),gn=r.z.object({result:r.z.boolean()}),fn=U.buildGetRoute({description:"List of project languages",requestHeaderSchema:H,requestPathParamsSchema:on,pathResolver:({projectId:e})=>`/projects/${e}/languages`,successResponseBodySchema:cn}),ba=U.buildPayloadRoute({description:"Add languages to existing project",requestHeaderSchema:H,method:"post",requestPathParamsSchema:ln,pathResolver:({projectId:e})=>`/projects/${e}/languages`,requestBodySchema:un,successResponseBodySchema:dn}),pn=U.buildPayloadRoute({description:"Bulk update project languages",requestHeaderSchema:H,method:"put",requestPathParamsSchema:mn,pathResolver:({projectId:e})=>`/projects/${e}/languages/bulk-update`,requestBodySchema:_n,successResponseBodySchema:gn}),V=H,ue=r.z.union([r.z.literal("localization_files"),r.z.literal("paged_documents"),r.z.literal("marketing")]),hn=r.z.object({per_platform_key_names:r.z.boolean(),reviewing:r.z.boolean(),auto_toggle_unverified:r.z.boolean(),offline_translation:r.z.boolean(),key_editing:r.z.boolean(),inline_machine_translations:r.z.boolean(),custom_translation_statuses:r.z.boolean(),custom_translation_statuses_allow_multiple:r.z.boolean(),segmentation:r.z.boolean(),contributor_preview_download_enabled:r.z.boolean()}),bn=r.z.object({not_reviewed:r.z.number(),unverified:r.z.number(),spelling_grammar:r.z.number(),inconsistent_placeholders:r.z.number(),inconsistent_html:r.z.number(),different_number_of_urls:r.z.number(),different_urls:r.z.number(),leading_whitespace:r.z.number(),trailing_whitespace:r.z.number(),different_number_of_email_address:r.z.number(),different_email_address:r.z.number(),different_brackets:r.z.number(),different_numbers:r.z.number(),double_space:r.z.number(),special_placeholder:r.z.number(),unbalanced_brackets:r.z.number()}),Tn=r.z.object({progress_total:r.z.number(),keys_total:r.z.number(),team:r.z.number(),base_words:r.z.number(),qa_issues_total:r.z.number(),qa_issues:bn,languages:r.z.array(an)}),Z=r.z.object({project_id:r.z.string(),uuid:r.z.string().uuid(),project_type:ue,name:r.z.string(),description:r.z.string(),created_at:r.z.string(),created_at_timestamp:r.z.number(),created_by:r.z.number(),created_by_email:r.z.string(),team_id:r.z.number(),base_language_id:r.z.number(),base_language_iso:r.z.string(),settings:hn.optional(),statistics:Tn.optional()}),En=r.z.object({name:r.z.string(),team_id:r.z.string(),base_lang_iso:r.z.string(),languages:r.z.array(sn),project_type:ue,is_segmentation_enabled:r.z.boolean()}),Et=r.z.union([r.z.literal(0),r.z.literal(1)]),Sn=r.z.object({filter_type:ue.optional(),filter_team_id:r.z.number().optional(),filter_names:r.z.string().optional(),include_statistics:Et.optional(),include_settings:Et.optional(),limit:r.z.number().optional(),page:r.z.number().optional()}),vn=r.z.object({projects:r.z.array(Z)}),jn=r.z.object({project_id:r.z.string()}),yn=r.z.object({project_id:r.z.string()}),An=r.z.object({name:r.z.string().min(1),description:r.z.string().optional()}),de=()=>"/projects",Cn=ke.buildPayloadRoute({description:"Create a new project",requestHeaderSchema:V,method:"post",pathResolver:de,requestBodySchema:En,successResponseBodySchema:Z}),Pn=U.buildGetRoute({description:"List all projects",requestHeaderSchema:V,pathResolver:de,requestQuerySchema:Sn,successResponseBodySchema:vn}),xn=U.buildGetRoute({description:"Retrieve a project",requestHeaderSchema:V,requestPathParamsSchema:jn,pathResolver:({project_id:e})=>`${de()}/${e}`,successResponseBodySchema:Z}),Rn=ke.buildPayloadRoute({description:"Update a project",requestHeaderSchema:V,method:"put",requestPathParamsSchema:yn,pathResolver:({project_id:e})=>`${de()}/${e}`,requestBodySchema:An,successResponseBodySchema:Z});function Ta(e,t,n={}){return k.useMutation({...n,mutationFn:async s=>z.sendByPayloadRoute(e,Cn,{headers:await t.resolve(),body:s})})}const Ea={projectIdKey:e=>["listProjectLanguages",e]};function Sa(e,t,n){return k.useQuery({...n,queryFn:async({queryKey:[s,o]})=>z.sendByGetRoute(e,fn,{headers:await t.resolve(),pathParams:{projectId:o}})})}const va={paramsKey:e=>["listProjects",e]};function ja(e,t,n){return k.useQuery({...n,queryFn:async({queryKey:[s,o]})=>z.sendByGetRoute(e,Pn,{headers:await t.resolve(),queryParams:o})})}const ya={projectIdKey:e=>["retrieveProject",e]};function Aa(e,t,n){return k.useQuery({...n,queryFn:async({queryKey:[s,o]})=>z.sendByGetRoute(e,xn,{headers:await t.resolve(),pathParams:{project_id:o}})})}function Ca(e,t,n,s={}){return k.useMutation({...s,mutationFn:async o=>z.sendByPayloadRoute(e,Rn,{headers:await t.resolve(),body:o,pathParams:n})})}function Pa(e,t,n,s={}){return k.useMutation({...s,mutationFn:async o=>z.sendByPayloadRoute(e,pn,{pathParams:t,headers:await n.resolve(),body:o})})}exports.ADD_LANGUAGES_TO_PROJECT_PATH_PARAMS_SCHEMA=ln;exports.ADD_LANGUAGES_TO_PROJECT_REQUEST_BODY_SCHEMA=un;exports.ADD_LANGUAGES_TO_PROJECT_RESPONSE_SCHEMA=dn;exports.BULK_UPDATE_PROJECT_LANGUAGES_PATH_PARAMS_SCHEMA=mn;exports.BULK_UPDATE_PROJECT_LANGUAGES_REQUEST_BODY_SCHEMA=_n;exports.BULK_UPDATE_PROJECT_LANGUAGES_RESPONSE_SCHEMA=gn;exports.Breadcrumbs=Fs;exports.CONTRIBUTOR_API_BASE_HEADER_SCHEMA=pa;exports.CONTRIBUTOR_LANGUAGE_SCHEMA=Vt;exports.CONTRIBUTOR_SCHEMA=Zt;exports.CREATE_PROJECT_REQUEST_BODY_SCHEMA=En;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=Le;exports.ENTERPRISE_PLAN_IDS=It;exports.ESSENTIAL_PLAN_IDS=zt;exports.FREE_PLAN_ID=Oe;exports.HeaderBuilder=w;exports.JWT_TOKEN_SCHEMA=qt;exports.JwtAuthHeaderBuilderMiddleware=aa;exports.LANGUAGE_ISO_SCHEMA=sn;exports.LANGUAGE_SCHEMA=qe;exports.LANGUAGE_STATISTICS_SCHEMA=an;exports.LIST_PROJECTS_REQUEST_QUERY_SCHEMA=Sn;exports.LIST_PROJECTS_SUCCESS_RESPONSE_BODY=vn;exports.LIST_PROJECT_LANGUAGES_PATH_PARAMS_SCHEMA=on;exports.LIST_PROJECT_LANGUAGES_RESPONSE_SCHEMA=cn;exports.NavigationPanel=K;exports.NavigationTabs=na;exports.PROJECT_API_BASE_HEADERS_SCHEMA=V;exports.PROJECT_QA_ISSUES_SCHEMA=bn;exports.PROJECT_SCHEMA=Z;exports.PROJECT_SETTINGS_SCHEMA=hn;exports.PROJECT_STATISTICS_SCHEMA=Tn;exports.PROJECT_TYPE_SCHEMA=ue;exports.PRO_PLAN_IDS=wt;exports.PublicApiHeaderBuilderMiddleware=oa;exports.RETRIEVE_CONTRIBUTORS_RESPONSE_SCHEMA=en;exports.RETRIEVE_PROJECT_PATH_PARAM_SCHEMA=jn;exports.START_PLAN_IDS=Rt;exports.Sidebar=R;exports.SidebarTaskLanguageStatuses=x;exports.SidebarTaskStatuses=se;exports.SidebarTaskTypeOptions=J;exports.TEAM_ROLE_SCHEMA=He;exports.TEAM_USER_API_BASE_HEADERS_SCHEMA=Ft;exports.TEAM_USER_RESPONSE_SCHEMA=Qt;exports.TEAM_USER_SCHEMA=Kt;exports.TRIAL_PLAN_ID=xt;exports.UPDATE_PROJECT_PATH_PARAMS_SCHEMA=yn;exports.UPDATE_PROJECT_REQUEST_BODY_SCHEMA=An;exports.USER_TOKEN_REQUEST_HEADER_SCHEMA=Gt;exports.UnauthorizedError=Q;exports.addLanguagesToProject=ba;exports.bulkUpdateProjectLanguages=pn;exports.convertNewLineToBreakTag=kt;exports.createHeaderBuilderMiddleware=Ue;exports.createProject=Cn;exports.formatDate=Ot;exports.formatDateTz=Ur;exports.generateTokenFromClassicSession=ma;exports.getAuthenticatedSessionDetailFromRequest=ia;exports.getCsrfTokenFromCookie=Bt;exports.getJwtTokenFromCookie=Be;exports.getTeamUser=Wt;exports.getTeamUsersQueryKey=Yt;exports.getUserToken=le;exports.getUserTokenKey=$t;exports.isEnterpriseOpenSourcePlan=kr;exports.isEnterprisePlan=wr;exports.isEssentialPlan=Rr;exports.isFreePlan=ie;exports.isPaidPlan=Ir;exports.isProPlan=zr;exports.isStartPlan=xr;exports.isTrialPlan=Me;exports.listProjectLanguages=fn;exports.listProjectLanguagesKey=Ea;exports.listProjects=Pn;exports.listProjectsKey=va;exports.makeUrlClickable=Nt;exports.parseJwtTokenPayload=q;exports.refreshExpiredToken=_a;exports.retrieveContributor=tn;exports.retrieveContributorKeys=nn;exports.retrieveProject=xn;exports.retrieveProjectQueryKey=ya;exports.updateProject=Rn;exports.useAuthenticatedProjectContributor=ha;exports.useAuthenticatedSessionPayload=De;exports.useAuthenticatedUser=fa;exports.useBulkUpdateProjectLanguagesMutation=Pa;exports.useCreateProjectMutation=Ta;exports.useEffectOnce=ce;exports.useGetPromotedClassicSessionJwtQuery=ga;exports.useGetTeamUsersQuery=Xt;exports.useGetUserTokenQuery=Jt;exports.useListProjectLanguagesQuery=Sa;exports.useListProjectsQuery=ja;exports.useRetrieveContributorQuery=rn;exports.useRetrieveProjectQuery=Aa;exports.useUpdateProjectMutation=Ca;
package/dist/harmony.css CHANGED
@@ -1 +1 @@
1
- ._headerContainer_1cubo_1{display:flex;margin-bottom:var(--lok-spacing-1);width:100%;align-items:center}._navigationTabList_1cubo_8{display:flex;list-style:none;flex-wrap:wrap;margin:0 0 0 calc(-1 * var(--lok-spacing-6));padding:0}._navigationTab_1cubo_8{border:none;margin:0;border-bottom:2px solid transparent;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;font:var(--lok-typography-body-small-default);color:var(--lok-color-text-default);margin:0 0 0 var(--lok-spacing-6)}._navigationTab_1cubo_8[aria-selected=true]{font-weight:500;color:var(--lok-color-text-active);border-bottom-color:var(--lok-color-text-active)}._headerContent_1cubo_34{position:fixed;background-color:var(--lok-color-background-surface-default);top:0;left:95px;right:32px;z-index:899;padding-top:var(--lok-spacing-5);padding-left:30px;padding-right:30px;margin-left:-30px;margin-right:-30px;border-bottom:1px solid var(--lok-color-border-default)}._staticEnabled_1cubo_50{z-index:var(--lok-z-index-auto);position:relative;top:inherit;left:0;right:0;padding-top:0;box-shadow:none}._sidebarContainer_bmdti_1{border-right:1px solid var(--lok-color-border-default);position:fixed;width:65px;top:0;left:0;bottom:0;background-color:var(--lok-color-background-surface-middle);display:flex;justify-content:space-between;flex-direction:column;padding-bottom:var(--lok-spacing-3);z-index:1}._logoLink_bmdti_16{display:flex;align-items:center;justify-content:center;height:67px;position:relative}._logoLink_bmdti_16:hover{background-color:var(--lok-color-background-surface-middle)}._logoLink_bmdti_16>img{width:36px}._logoLink_1baxb_1{display:flex;align-items:center;justify-content:center;height:67px;position:relative}._logoLink_1baxb_1:hover{background-color:var(--lok-color-background-surface-middle)}._logoLink_1baxb_1>img{width:36px}._link_18vhx_1._link_18vhx_1{display:flex;justify-content:center;align-items:center;height:65px;width:64px;background:transparent;border:none;outline:none;color:var(--lok-color-text-light-default)}._link_18vhx_1._link_18vhx_1:hover,._active_18vhx_18._active_18vhx_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._dropdownButton_13l5r_1{display:flex;justify-content:center;align-items:center;height:65px;width:64px;background:transparent;border:none;outline:none;color:var(--lok-color-text-light-default)}._dropdownButton_13l5r_1:hover,._dropdownButtonActive_13l5r_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._iconContainer_nz34m_1{color:var(--lok-color-background-surface-default);background-color:var(--lok-color-background-action-danger-default);border-radius:100%;font-size:10px;height:16px;width:16px}._popoverContent_ywskt_1{width:300px}._menuContainer_ywskt_5{width:300px;font-size:var(--lok-font-size-small)}._menuContainer_ywskt_5 button,._menuContainer_ywskt_5 a{font-size:var(--lok-font-size-small);padding:var(--lok-spacing-3) var(--lok-spacing-4)}._profileButton_ywskt_15{cursor:pointer;position:relative;border:none;background:transparent;height:65px;width:65px}._profileButton_ywskt_15:hover{background:none}._profileImage_ywskt_28{width:40px;height:40px;border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._profileImageHighlight_ywskt_36{border:3px solid var(--lok-color-background-action-danger-default)}._profileImageUpgradeIcon_ywskt_40{position:absolute;bottom:10px;right:10px}._userIconWrapper_ywskt_46{width:45px;height:45px;display:flex;align-items:center;border-radius:var(--lok-radius-rounded);justify-content:center;margin:auto}._container_q5pot_1{max-width:100%}._profileEmail_q5pot_5{color:var(--lok-color-text-light-default);font-size:var(--lok-font-size-tiny);max-width:100%;overflow:hidden;text-overflow:ellipsis}._wrapper_15d85_1{padding:var(--lok-spacing-3) var(--lok-spacing-4)}._buttonWrapper_15d85_5{background:transparent;outline:none;border:none}._buttonWrapper_15d85_5:hover{background:var(--lok-color-background-active)}._profileImage_15d85_14{width:40px;height:40px;border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._teamName_15d85_22{font:var(--lok-typography-body-base-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._planLabel_15d85_29{font:var(--lok-typography-body-tiny-default);height:20px;border-radius:var(--lok-radius-rounded);padding:2px var(--lok-spacing-2);background-color:var(--lok-color-background-danger);white-space:nowrap}._membership_15d85_38{font:var(--lok-typography-body-action-base);text-transform:capitalize;color:var(--lok-color-text-light-default)}._defaultProfileImage_15d85_44{width:40px;height:40px}._teamsContainer_1t68g_1{width:100%;max-height:350px;overflow-y:auto}._profileImage_1t68g_10{width:40px;height:40px;border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._container_1u995_1{max-width:100%;min-width:0;padding:var(--lok-spacing-3) var(--lok-spacing-4);background:var(--lok-color-background-surface-middle);border:0}._container_1u995_1:hover ._upgrade-icon_1u995_9{color:var(--lok-color-text-inverse)}._planCta_1u995_15{font:var(--lok-typography-body-small-default)}._upgradeIconWrapper_1u995_19{color:var(--lok-color-text-danger);font:var(--lok-typography-body-small-strong);height:16px}._navItem_1dudv_1._navItem_1dudv_1{border:0;background:none;width:100%;display:flex;justify-content:center;align-items:center;position:relative;height:65px;color:var(--lok-color-text-light-default)}._navItem_1dudv_1._navItem_1dudv_1:hover,._activeNavItem_1dudv_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._badge_1dudv_23{position:absolute;top:calc(50% - 16px);left:calc(50% + 2px);display:flex;align-items:center;justify-content:center;text-align:center;width:16px;height:16px;border-radius:var(--lok-radius-rounded);background-color:var(--lok-color-text-danger);font-size:var(--lok-font-size-tiny);text-transform:uppercase;color:var(--lok-color-text-inverse)}._langRowCompleted_vpgdi_1{background:var(--lok-color-background-info)}._langRowCompleted_vpgdi_1 td{overflow:hidden;text-overflow:ellipsis;text-align:start}._langRowCompleted_vpgdi_1 td:first-child{border-left:2px solid var(--lok-color-background-action-primary-default)}._langCellSecondary_vpgdi_15{color:var(--lok-color-text-light-default);text-align:left}._langStatus_vpgdi_20{color:var(--lok-color-text-light-default)}._langStatus_vpgdi_20:before{display:inline-block;content:"";width:6px;height:6px;border-radius:50%;margin:var(--lok-spacing-1);background-color:#cbd5e0}._langStatus_vpgdi_20[data-status=completed]:before{background-color:#60e778}._langStatus_vpgdi_20[data-status=in_progress]:before{background-color:#facc15}._taskContainer_mt2or_1{padding:var(--lok-spacing-4);position:relative}._taskContainer_mt2or_1:not(:first-child):before{display:block;content:"";height:1px;width:calc(100% - 2 * var(--lok-spacing-4));position:absolute;top:0;left:var(--lok-spacing-4);background:var(--lok-color-background-surface-fore)}._tagDue_mt2or_17{background:#dea829}._taskTitle_mt2or_21{font:var(--lok-typography-body-small-default);overflow:hidden;text-overflow:ellipsis;margin-block:var(--lok-spacing-4) var(--lok-spacing-2)}._taskDescription_mt2or_28{color:var(--lok-color-text-light-default);font:var(--lok-typography-body-action-small);overflow:hidden;text-overflow:ellipsis}._languagesTable_mt2or_35{table-layout:fixed;margin-top:var(--lok-spacing-3);width:auto;margin-left:calc(var(--lok-spacing-4) * -1);border-collapse:separate}._languagesTable_mt2or_35 tbody td{padding-top:var(--lok-spacing-1);padding-bottom:var(--lok-spacing-1)}._languagesTable_mt2or_35 thead th:first-child,._languagesTable_mt2or_35 tbody td:first-child{padding-left:var(--lok-spacing-4)}._languagesTable_mt2or_35 thead th,._languagesTable_mt2or_35 tbody td{padding-left:var(--lok-spacing-2)}._languagesTable_mt2or_35 thead th:last-child,._languagesTable_mt2or_35 tbody td:last-child{padding-right:var(--lok-spacing-4)}._languagesTable_mt2or_35 thead tr th{color:var(--lok-color-text-light-default);text-align:left;padding-bottom:var(--lok-spacing-1);font:var(--lok-typography-body-tiny-default);text-transform:uppercase}._languagesTable_mt2or_35 thead tr th:nth-child(1){width:170px}._languagesTable_mt2or_35 thead tr th:nth-child(2){width:107px}._languagesTable_mt2or_35 thead tr th:nth-child(3){width:75px}._languagesTable_mt2or_35 thead tr th:nth-child(4){width:118px}._metadata_mt2or_87{color:var(--lok-color-text-light-default);margin:var(--lok-spacing-4) 0 0;font:var(--lok-typography-body-tiny-default)}._metadata_mt2or_87>span{overflow:hidden;text-overflow:ellipsis;flex-basis:100%;max-width:max-content}._metadata_mt2or_87>span:not(:first-child){margin-left:var(--lok-spacing-1)}._metadata_mt2or_87>span:not(:first-child):before{content:"•";margin-right:var(--lok-spacing-1)}._loadingContainer_19d6m_1{height:100px;width:487px;left:69px}._noTasksContainer_19d6m_7{text-align:center;padding:var(--lok-spacing-8);width:360px;left:65px}._noTasksHeading_19d6m_14{font:var(--lok-typography-heading-3)}._noTasksText_19d6m_18{font:var(--lok-typography-body-action-base);color:var(--lok-color-text-light-default)}._tasksContainer_19d6m_23{width:487px;max-height:70vh;overflow-y:auto;overflow-x:hidden;left:65px}._breadcrumbsItem_1hm6a_1{color:var(--lok-color-text-light-default);text-decoration:none}._breadcrumbs_1hm6a_1{font:var(--lok-typography-body-small-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:var(--lok-spacing-1);max-width:90%}._breadcrumbs_1hm6a_1>*{white-space:nowrap}._badge_1pc1v_1{position:absolute;top:5px;right:-13px;background-color:var(--lok-color-background-action-danger-default);font-size:8px;color:var(--lok-color-text-inverse);border-radius:var(--lok-radius-rounded);width:12px;height:12px;line-height:12px;text-align:center}._tag_1pc1v_15{background-color:var(--lok-color-background-active);border:none;color:var(--lok-color-background-action-primary-pressed)}._withLinkStyle_1pc1v_21{cursor:pointer;font-size:inherit;font-weight:inherit;line-height:inherit;color:var(--lok-color-background-action-primary-default);background-color:transparent;padding:0;border:none}._withLinkStyle_1pc1v_21:hover,._withLinkStyle_1pc1v_21:focus{color:var(--lok-color-background-action-primary-hover)}._withLinkStyle_1pc1v_21:active,._withLinkStyle_1pc1v_21:active:hover{color:var(--lok-color-background-action-primary-pressed)}._withNavLinkStyle_1pc1v_42{color:inherit;display:block;position:relative;padding-top:var(--lok-spacing-2);padding-bottom:14px;background-color:transparent;text-decoration:none}._withNavLinkStyle_1pc1v_42[disabled]{pointer-events:none}._withNavLinkStyle_1pc1v_42._disabled_1pc1v_57{color:var(--lok-color-text-disabled)}._projectNavigationItem_1pc1v_61{display:flex;align-items:center;justify-content:space-between}._projectNavigationItemDisabled_1pc1v_67{opacity:.6;pointer-events:none}
1
+ ._headerContainer_1cubo_1{display:flex;margin-bottom:var(--lok-spacing-1);width:100%;align-items:center}._navigationTabList_1cubo_8{display:flex;list-style:none;flex-wrap:wrap;margin:0 0 0 calc(-1 * var(--lok-spacing-6));padding:0}._navigationTab_1cubo_8{border:none;margin:0;border-bottom:2px solid transparent;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;font:var(--lok-typography-body-small-default);color:var(--lok-color-text-default);margin:0 0 0 var(--lok-spacing-6)}._navigationTab_1cubo_8[aria-selected=true]{font-weight:500;color:var(--lok-color-text-active);border-bottom-color:var(--lok-color-text-active)}._headerContent_1cubo_34{position:fixed;background-color:var(--lok-color-background-surface-default);top:0;left:95px;right:32px;z-index:899;padding-top:var(--lok-spacing-5);padding-left:30px;padding-right:30px;margin-left:-30px;margin-right:-30px;border-bottom:1px solid var(--lok-color-border-default)}._staticEnabled_1cubo_50{z-index:var(--lok-z-index-auto);position:relative;top:inherit;left:0;right:0;padding-top:0;box-shadow:none}._sidebarContainer_bmdti_1{border-right:1px solid var(--lok-color-border-default);position:fixed;width:65px;top:0;left:0;bottom:0;background-color:var(--lok-color-background-surface-middle);display:flex;justify-content:space-between;flex-direction:column;padding-bottom:var(--lok-spacing-3);z-index:1}._logoLink_bmdti_16{display:flex;align-items:center;justify-content:center;height:67px;position:relative}._logoLink_bmdti_16:hover{background-color:var(--lok-color-background-surface-middle)}._logoLink_bmdti_16>img{width:36px}._logoLink_1baxb_1{display:flex;align-items:center;justify-content:center;height:67px;position:relative}._logoLink_1baxb_1:hover{background-color:var(--lok-color-background-surface-middle)}._logoLink_1baxb_1>img{width:36px}._link_18vhx_1._link_18vhx_1{display:flex;justify-content:center;align-items:center;height:65px;width:64px;background:transparent;border:none;outline:none;color:var(--lok-color-text-light-default)}._link_18vhx_1._link_18vhx_1:hover,._active_18vhx_18._active_18vhx_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._dropdownButton_13l5r_1{display:flex;justify-content:center;align-items:center;height:65px;width:64px;background:transparent;border:none;outline:none;color:var(--lok-color-text-light-default)}._dropdownButton_13l5r_1:hover,._dropdownButtonActive_13l5r_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._iconContainer_nz34m_1{color:var(--lok-color-background-surface-default);background-color:var(--lok-color-background-action-danger-default);border-radius:100%;font-size:10px;height:16px;width:16px}:root{--menu-container-width: 300px;--profile-button-size: 65px}._popoverContent_1phdw_6{width:var(--menu-container-width)}._menuContainer_1phdw_10{width:var(--menu-container-width);font-size:var(--lok-font-size-small)}._menuContainer_1phdw_10 button,._menuContainer_1phdw_10 a{font-size:var(--lok-font-size-small);padding:var(--lok-spacing-3) var(--lok-spacing-4)}._profileButton_1phdw_20{cursor:pointer;position:relative;border:none;background:transparent;height:var(--profile-button-size);width:var(--profile-button-size)}._profileButton_1phdw_20:hover{background:none}._profileImage_1phdw_33{width:40px;height:40px;border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._profileImageHighlight_1phdw_41{border:3px solid var(--lok-color-background-action-danger-default)}._profileImageUpgradeIcon_1phdw_45{position:absolute;bottom:10px;right:10px}._userIconWrapper_1phdw_51{width:45px;height:45px;display:flex;align-items:center;border-radius:var(--lok-radius-rounded);justify-content:center;margin:auto}._container_q5pot_1{max-width:100%}._profileEmail_q5pot_5{color:var(--lok-color-text-light-default);font-size:var(--lok-font-size-tiny);max-width:100%;overflow:hidden;text-overflow:ellipsis}._wrapper_1in7x_5{padding:var(--lok-spacing-3) var(--lok-spacing-4);gap:var(--lok-spacing-2);display:flex}._profileImage_1in7x_11{width:var(--profile-image-size);height:var(--profile-image-size);border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._teamDetails_1in7x_19{align-items:flex-start;display:flex;flex-direction:column;flex:1;gap:1px;min-width:0}._planWrapper_1in7x_28{align-items:center;display:flex;flex-wrap:nowrap;gap:var(--lok-spacing-2);width:100%}._teamName_1in7x_36{flex:1;font:var(--lok-typography-body-base-default);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._planLabel_1in7x_45{background-color:var(--lok-color-background-danger);border-radius:var(--lok-radius-rounded);font:var(--lok-typography-body-tiny-default);padding:2px var(--lok-spacing-2);white-space:nowrap}._membership_1in7x_53{color:var(--lok-color-text-light-default);font:var(--lok-typography-body-action-base);text-transform:capitalize}._defaultProfileImage_1in7x_59{width:var(--profile-image-size);height:var(--profile-image-size)}:root{--profile-image-size: 40px}._teamsContainer_1ncrr_5{width:100%;max-height:350px;overflow-x:hidden;overflow-y:auto}._profileImage_1ncrr_15{width:var(--profile-image-size);height:var(--profile-image-size);border-radius:100%;background-color:var(--lok-color-background-surface-default);object-fit:contain}._container_1u995_1{max-width:100%;min-width:0;padding:var(--lok-spacing-3) var(--lok-spacing-4);background:var(--lok-color-background-surface-middle);border:0}._container_1u995_1:hover ._upgrade-icon_1u995_9{color:var(--lok-color-text-inverse)}._planCta_1u995_15{font:var(--lok-typography-body-small-default)}._upgradeIconWrapper_1u995_19{color:var(--lok-color-text-danger);font:var(--lok-typography-body-small-strong);height:16px}._navItem_1dudv_1._navItem_1dudv_1{border:0;background:none;width:100%;display:flex;justify-content:center;align-items:center;position:relative;height:65px;color:var(--lok-color-text-light-default)}._navItem_1dudv_1._navItem_1dudv_1:hover,._activeNavItem_1dudv_18{color:var(--lok-color-background-action-primary-default);background-color:var(--lok-color-background-surface-fore)}._badge_1dudv_23{position:absolute;top:calc(50% - 16px);left:calc(50% + 2px);display:flex;align-items:center;justify-content:center;text-align:center;width:16px;height:16px;border-radius:var(--lok-radius-rounded);background-color:var(--lok-color-text-danger);font-size:var(--lok-font-size-tiny);text-transform:uppercase;color:var(--lok-color-text-inverse)}._langRowCompleted_vpgdi_1{background:var(--lok-color-background-info)}._langRowCompleted_vpgdi_1 td{overflow:hidden;text-overflow:ellipsis;text-align:start}._langRowCompleted_vpgdi_1 td:first-child{border-left:2px solid var(--lok-color-background-action-primary-default)}._langCellSecondary_vpgdi_15{color:var(--lok-color-text-light-default);text-align:left}._langStatus_vpgdi_20{color:var(--lok-color-text-light-default)}._langStatus_vpgdi_20:before{display:inline-block;content:"";width:6px;height:6px;border-radius:50%;margin:var(--lok-spacing-1);background-color:#cbd5e0}._langStatus_vpgdi_20[data-status=completed]:before{background-color:#60e778}._langStatus_vpgdi_20[data-status=in_progress]:before{background-color:#facc15}._taskContainer_mt2or_1{padding:var(--lok-spacing-4);position:relative}._taskContainer_mt2or_1:not(:first-child):before{display:block;content:"";height:1px;width:calc(100% - 2 * var(--lok-spacing-4));position:absolute;top:0;left:var(--lok-spacing-4);background:var(--lok-color-background-surface-fore)}._tagDue_mt2or_17{background:#dea829}._taskTitle_mt2or_21{font:var(--lok-typography-body-small-default);overflow:hidden;text-overflow:ellipsis;margin-block:var(--lok-spacing-4) var(--lok-spacing-2)}._taskDescription_mt2or_28{color:var(--lok-color-text-light-default);font:var(--lok-typography-body-action-small);overflow:hidden;text-overflow:ellipsis}._languagesTable_mt2or_35{table-layout:fixed;margin-top:var(--lok-spacing-3);width:auto;margin-left:calc(var(--lok-spacing-4) * -1);border-collapse:separate}._languagesTable_mt2or_35 tbody td{padding-top:var(--lok-spacing-1);padding-bottom:var(--lok-spacing-1)}._languagesTable_mt2or_35 thead th:first-child,._languagesTable_mt2or_35 tbody td:first-child{padding-left:var(--lok-spacing-4)}._languagesTable_mt2or_35 thead th,._languagesTable_mt2or_35 tbody td{padding-left:var(--lok-spacing-2)}._languagesTable_mt2or_35 thead th:last-child,._languagesTable_mt2or_35 tbody td:last-child{padding-right:var(--lok-spacing-4)}._languagesTable_mt2or_35 thead tr th{color:var(--lok-color-text-light-default);text-align:left;padding-bottom:var(--lok-spacing-1);font:var(--lok-typography-body-tiny-default);text-transform:uppercase}._languagesTable_mt2or_35 thead tr th:nth-child(1){width:170px}._languagesTable_mt2or_35 thead tr th:nth-child(2){width:107px}._languagesTable_mt2or_35 thead tr th:nth-child(3){width:75px}._languagesTable_mt2or_35 thead tr th:nth-child(4){width:118px}._metadata_mt2or_87{color:var(--lok-color-text-light-default);margin:var(--lok-spacing-4) 0 0;font:var(--lok-typography-body-tiny-default)}._metadata_mt2or_87>span{overflow:hidden;text-overflow:ellipsis;flex-basis:100%;max-width:max-content}._metadata_mt2or_87>span:not(:first-child){margin-left:var(--lok-spacing-1)}._metadata_mt2or_87>span:not(:first-child):before{content:"•";margin-right:var(--lok-spacing-1)}._loadingContainer_19d6m_1{height:100px;width:487px;left:69px}._noTasksContainer_19d6m_7{text-align:center;padding:var(--lok-spacing-8);width:360px;left:65px}._noTasksHeading_19d6m_14{font:var(--lok-typography-heading-3)}._noTasksText_19d6m_18{font:var(--lok-typography-body-action-base);color:var(--lok-color-text-light-default)}._tasksContainer_19d6m_23{width:487px;max-height:70vh;overflow-y:auto;overflow-x:hidden;left:65px}._breadcrumbsItem_1hm6a_1{color:var(--lok-color-text-light-default);text-decoration:none}._breadcrumbs_1hm6a_1{font:var(--lok-typography-body-small-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:var(--lok-spacing-1);max-width:90%}._breadcrumbs_1hm6a_1>*{white-space:nowrap}._badge_1pc1v_1{position:absolute;top:5px;right:-13px;background-color:var(--lok-color-background-action-danger-default);font-size:8px;color:var(--lok-color-text-inverse);border-radius:var(--lok-radius-rounded);width:12px;height:12px;line-height:12px;text-align:center}._tag_1pc1v_15{background-color:var(--lok-color-background-active);border:none;color:var(--lok-color-background-action-primary-pressed)}._withLinkStyle_1pc1v_21{cursor:pointer;font-size:inherit;font-weight:inherit;line-height:inherit;color:var(--lok-color-background-action-primary-default);background-color:transparent;padding:0;border:none}._withLinkStyle_1pc1v_21:hover,._withLinkStyle_1pc1v_21:focus{color:var(--lok-color-background-action-primary-hover)}._withLinkStyle_1pc1v_21:active,._withLinkStyle_1pc1v_21:active:hover{color:var(--lok-color-background-action-primary-pressed)}._withNavLinkStyle_1pc1v_42{color:inherit;display:block;position:relative;padding-top:var(--lok-spacing-2);padding-bottom:14px;background-color:transparent;text-decoration:none}._withNavLinkStyle_1pc1v_42[disabled]{pointer-events:none}._withNavLinkStyle_1pc1v_42._disabled_1pc1v_57{color:var(--lok-color-text-disabled)}._projectNavigationItem_1pc1v_61{display:flex;align-items:center;justify-content:space-between}._projectNavigationItemDisabled_1pc1v_67{opacity:.6;pointer-events:none}