@lokalise/harmony 1.15.1 → 1.16.0

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