@lokalise/harmony 1.6.0-exp-jwtutils.6 → 1.6.0-exp-jwtutils.8

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 wt=Object.defineProperty;var It=(e,t,n)=>t in e?wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var xe=(e,t,n)=>It(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),b=require("react"),m=require("@lokalise/louis"),U=require("@lokalise/frontend-http-client"),xt=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),o=require("zod"),fe=require("@tanstack/react-query"),Ve=require("@lokalise/universal-ts-utils/node"),Ye=require("date-fns"),St=require("date-fns-tz");function Nt(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 O=Nt(b);var $=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ze(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var J,Se;function me(){if(Se)return J;Se=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return J=e,J}var Q,Ne;function Pt(){if(Ne)return Q;Ne=1;var e=typeof $=="object"&&$&&$.Object===Object&&$;return Q=e,Q}var V,Pe;function Xe(){if(Pe)return V;Pe=1;var e=Pt(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return V=n,V}var Y,Ee;function Et(){if(Ee)return Y;Ee=1;var e=Xe(),t=function(){return e.Date.now()};return Y=t,Y}var Z,ke;function kt(){if(ke)return Z;ke=1;var e=/\s/;function t(n){for(var r=n.length;r--&&e.test(n.charAt(r)););return r}return Z=t,Z}var X,Ce;function Ct(){if(Ce)return X;Ce=1;var e=kt(),t=/^\s+/;function n(r){return r&&r.slice(0,e(r)+1).replace(t,"")}return X=n,X}var ee,Re;function et(){if(Re)return ee;Re=1;var e=Xe(),t=e.Symbol;return ee=t,ee}var te,Ae;function Rt(){if(Ae)return te;Ae=1;var e=et(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,s=e?e.toStringTag:void 0;function i(c){var u=n.call(c,s),d=c[s];try{c[s]=void 0;var l=!0}catch{}var f=r.call(c);return l&&(u?c[s]=d:delete c[s]),f}return te=i,te}var ne,ze;function At(){if(ze)return ne;ze=1;var e=Object.prototype,t=e.toString;function n(r){return t.call(r)}return ne=n,ne}var re,Le;function zt(){if(Le)return re;Le=1;var e=et(),t=Rt(),n=At(),r="[object Null]",s="[object Undefined]",i=e?e.toStringTag:void 0;function c(u){return u==null?u===void 0?s:r:i&&i in Object(u)?t(u):n(u)}return re=c,re}var se,Oe;function Lt(){if(Oe)return se;Oe=1;function e(t){return t!=null&&typeof t=="object"}return se=e,se}var ae,qe;function Ot(){if(qe)return ae;qe=1;var e=zt(),t=Lt(),n="[object Symbol]";function r(s){return typeof s=="symbol"||t(s)&&e(s)==n}return ae=r,ae}var ie,Ue;function qt(){if(Ue)return ie;Ue=1;var e=Ct(),t=me(),n=Ot(),r=NaN,s=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;function d(l){if(typeof l=="number")return l;if(n(l))return r;if(t(l)){var f=typeof l.valueOf=="function"?l.valueOf():l;l=t(f)?f+"":f}if(typeof l!="string")return l===0?l:+l;l=e(l);var p=i.test(l);return p||c.test(l)?u(l.slice(2),p?2:8):s.test(l)?r:+l}return ie=d,ie}var oe,Me;function tt(){if(Me)return oe;Me=1;var e=me(),t=Et(),n=qt(),r="Expected a function",s=Math.max,i=Math.min;function c(u,d,l){var f,p,y,j,_,w,x=0,N=!1,g=!1,S=!0;if(typeof u!="function")throw new TypeError(r);d=n(d)||0,e(l)&&(N=!!l.leading,g="maxWait"in l,y=g?s(n(l.maxWait)||0,d):y,S="trailing"in l?!!l.trailing:S);function T(h){var P=f,L=p;return f=p=void 0,x=h,j=u.apply(L,P),j}function v(h){return x=h,_=setTimeout(D,d),N?T(h):j}function B(h){var P=h-w,L=h-x,Ie=d-P;return g?i(Ie,y-L):Ie}function je(h){var P=h-w,L=h-x;return w===void 0||P>=d||P<0||g&&L>=y}function D(){var h=t();if(je(h))return we(h);_=setTimeout(D,B(h))}function we(h){return _=void 0,S&&f?T(h):(f=p=void 0,j)}function yt(){_!==void 0&&clearTimeout(_),x=0,f=w=p=_=void 0}function jt(){return _===void 0?j:we(t())}function W(){var h=t(),P=je(h);if(f=arguments,p=this,w=h,P){if(_===void 0)return v(w);if(g)return clearTimeout(_),_=setTimeout(D,d),T(w)}return _===void 0&&(_=setTimeout(D,d)),j}return W.cancel=yt,W.flush=jt,W}return oe=c,oe}var Ut=tt();const Mt=Ze(Ut);var ce,Be;function Bt(){if(Be)return ce;Be=1;var e=tt(),t=me(),n="Expected a function";function r(s,i,c){var u=!0,d=!0;if(typeof s!="function")throw new TypeError(n);return t(c)&&(u="leading"in c?!!c.leading:u,d="trailing"in c?!!c.trailing:d),e(s,i,{leading:u,maxWait:i,trailing:d})}return ce=r,ce}var Dt=Bt();const $t=Ze(Dt),Ft=(e,t,n,r)=>{switch(t){case"debounce":return Mt(e,n,r);case"throttle":return $t(e,n,r);default:return e}},Gt=e=>{const t=O.useRef(e);return O.useEffect(()=>{t.current=e}),O.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])},Ht=e=>{const[t,n]=O.useState((e==null?void 0:e.current)||null);return e&&setTimeout(()=>{e.current!==t&&n(e.current)},0),{refProxy:O.useMemo(()=>new Proxy(s=>{s!==t&&n(s)},{get(s,i){return i==="current"?t:s[i]},set(s,i,c){return i==="current"?n(c):s[i]=c,!0}}),[t]),refElement:t,setRefElement:n}},Kt=(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 Wt({skipOnMount:e=!1,refreshMode:t,refreshRate:n=1e3,refreshOptions:r,handleWidth:s=!0,handleHeight:i=!0,targetRef:c,observerOptions:u,onResize:d}={}){const l=b.useRef(e),f=Gt(d),[p,y]=b.useState({width:void 0,height:void 0}),{refProxy:j,refElement:_}=Ht(c),{box:w}=u||{},x=b.useCallback(g=>{if(!s&&!i)return;if(l.current){l.current=!1;return}const S=(T,v)=>s&&T.width!==v.width||i&&T.height!==v.height;g.forEach(T=>{const v=Kt(T,w);y(B=>S(B,v)?(f==null||f({width:v.width,height:v.height,entry:T}),v):B)})},[s,i,l,w]),N=b.useCallback(Ft(x,t,n,r),[x,t,n,r]);return b.useEffect(()=>{let g;return _?(g=new window.ResizeObserver(N),g.observe(_,u)):(p.width||p.height)&&(f==null||f({width:null,height:null,entry:null}),y({width:void 0,height:void 0})),()=>{var S,T,v;(S=g==null?void 0:g.disconnect)===null||S===void 0||S.call(g),(v=(T=N).cancel)===null||v===void 0||v.call(T)}},[N,_]),Object.assign({ref:j},p)}function nt(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=nt(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function C(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=nt(e))&&(r&&(r+=" "),r+=t);return r}const Jt="_headerContainer_1cubo_1",Qt="_navigationTabList_1cubo_8",Vt="_navigationTab_1cubo_8",Yt="_headerContent_1cubo_34",Zt="_staticEnabled_1cubo_50",A={headerContainer:Jt,navigationTabList:Qt,navigationTab:Vt,headerContent:Yt,staticEnabled:Zt},Xt=77,q=({sticky:e,children:t})=>{const{ref:n,height:r}=Wt({refreshMode:"debounce",refreshRate:0}),[s,i]=b.useState(!1),c=()=>s?!e:!0;b.useEffect(()=>{const d=()=>{i(window.scrollY>0)};return window.addEventListener("scroll",d),()=>window.removeEventListener("scroll",d)},[]);const u=`${r||Xt}px`;return a.jsx("div",{style:{minHeight:u},children:a.jsx("div",{children:a.jsxs("div",{ref:n,className:C(A.headerContent,{[A.staticEnabled]:c()}),children:[a.jsx(q.Header,{}),a.jsx(q.Tabs,{}),t]})})})};q.Header=({children:e})=>a.jsx("div",{className:A.headerContainer,children:e});q.Tabs=({children:e})=>a.jsx("div",{className:"flex justify-between gap-2 nowrap",children:e});const en="_sidebarContainer_bmdti_1",tn={sidebarContainer:en},nn="_logoLink_1baxb_1",rn={logoLink:nn},sn=({src:e,href:t="/",ariaLabel:n="Home",alt:r="Lokalise"})=>a.jsx("a",{className:rn.logoLink,href:t,"aria-label":n,children:a.jsx("img",{src:e,alt:r})}),an="_link_1weq1_1",on="_active_1weq1_18",De={link:an,active:on},cn=({label:e,to:t,icon:n})=>a.jsx(m.Tooltip,{placement:"right",tooltip:e,children:a.jsx(m.Link,{className:C(De.link,{[De.active]:window.location.pathname.startsWith(t)}),href:t,children:a.jsx(n,{size:"25px"})})}),ln="_dropdownButton_hwh0c_1",un="_dropdownButtonActive_hwh0c_18",$e={dropdownButton:ln,dropdownButtonActive:un},dn=({children:e,icon:t})=>a.jsx(m.Menu,{menuButton:({opened:n})=>a.jsx(m.Tooltip,{placement:"right",tooltip:"Help",children:a.jsx("button",{type:"button",className:C($e.dropdownButton,{[$e.dropdownButtonActive]:n}),children:a.jsx(t,{size:"25px"})})}),children:a.jsx(m.MenuList,{placement:"right-start",children:e})}),fn="_iconContainer_nz34m_1",mn={iconContainer:fn},rt=({className:e=""})=>a.jsx("div",{"aria-label":"Upgrade Icon",className:C(mn.iconContainer,"flex-row","items-center","justify-center",e),children:a.jsx(m.CaretUpIcon,{})}),hn="_menuContainer_wbu3u_5",bn="_profileButton_wbu3u_16",gn="_profileImage_wbu3u_29",_n="_profileImageHighlight_wbu3u_37",pn="_profileImageUpgradeIcon_wbu3u_41",vn="_userIconWrapper_wbu3u_47",E={menuContainer:hn,profileButton:bn,profileImage:gn,profileImageHighlight:_n,profileImageUpgradeIcon:pn,userIconWrapper:vn},st=b.createContext({}),M=()=>b.useContext(st),Tn=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:r,showBillingButton:s,allowTeamCreation:i,isLimitedView:c,isProviderAlpha:u,canAccessTeamSettings:d,isEndOfTrialActive:l,isTeamSuspended:f}=M();return a.jsx(m.Menu,{menuButton:()=>a.jsxs("button",{className:E.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?a.jsx("img",{src:t.logoUrl,className:C(E.profileImage,{[E.profileImageHighlight]:r}),alt:"Team Logo"}):a.jsx("div",{className:C(E.userIconWrapper,"flex-row","align-center","items-center",{[E.profileImageHighlight]:r}),children:a.jsx(m.UserIcon,{size:"25px"})}),r&&a.jsx(rt,{className:E.profileImageUpgradeIcon})]}),children:a.jsx(m.MenuList,{placement:"right-end",className:E.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,isLimitedView:c,canAccessTeamSettings:d,isEndOfTrialActive:l,isTeamSuspended:f,showBillingButton:s,isProviderAlpha:u})})})},he=0,at=9999,it=[150,151,250,251],ot=[152,153,252,253],ct=[154,155,157,158,254,255,258,354,355,358],lt=[156,159,160,256,259,260],be=9998,H=e=>e===he,ge=e=>e===at,yn=e=>it.includes(e),jn=e=>ot.includes(e),wn=e=>ct.includes(e),In=e=>lt.includes(e),xn=e=>e>he&&e<be,Sn=e=>e===be,Nn=/\n/,Fe=(e,t,n)=>e.split(t).flatMap((r,s)=>s!==0?[b.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),r]:r),Pn=(e,t,n)=>typeof e=="string"?Fe(e,t,n):e.flatMap(r=>typeof r=="string"?Fe(r,t,n):r),En=e=>Pn(e,Nn,a.jsx("br",{})),kn=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,Cn=e=>e.match(kn)??[],Ge=(e,t,n)=>{const r=e.split(t);if(r.length===1)return e;const s=[];return r[0]!==""&&s.push(r[0]),r.shift(),r[r.length-1]===""&&r.pop(),s.push(a.jsx("a",{href:t,target:"_blank",rel:"noreferrer noopener",children:t},t+n)),s.push(r.join(t)),s.filter(i=>i!=="")},He=e=>{const t=Cn(e);return t!=null&&t.length?t.reduce((n,r,s)=>typeof n=="string"?Ge(n,r,s):n.flatMap(i=>typeof i=="string"?Ge(i,r,s):i),e):e},Rn=e=>typeof e=="string"?He(e):e.flatMap(t=>typeof t=="string"?He(t):t,e),An=(e,t="PP")=>Ye.format(e,t),zn=(e,t,n="PP")=>Ye.format(St.toZonedTime(e,t),n),Ln=e=>{b.useEffect(e,[])},On=({children:e,config:t})=>{const{teams:n,currentTeamId:r,planId:s,isLimitedView:i,isTeamSuspended:c,canAccessTeamSettings:u,isEndOfTrialActive:d}=t,l=n.find(g=>g.id===r),f=n.filter(g=>g.id!==r),p=(l==null?void 0:l.role)??"",y=["biller","owner"].includes(p),j=H(s)||ge(s),N={...t,currentTeam:l,otherTeams:f,canChangeBilling:y,isOnFreeOrTrialPlan:j,showUpgradeCta:!i&&j&&y&&!c,showBillingButton:!i&&u&&y,allowTeamCreation:!i&&!d};return a.jsx(st.Provider,{value:N,children:e})},qn=({config:e,children:t})=>a.jsx(On,{config:e,children:a.jsx(Tn,{children:t})}),Un="_container_q5pot_1",Mn="_profileEmail_q5pot_5",Ke={container:Un,profileEmail:Mn},Bn=({href:e,onClick:t,userEmail:n,hideBottomDivider:r})=>{const{isEndOfTrialActive:s,isTeamSuspended:i}=M();return s||i?null:a.jsxs(a.Fragment,{children:[a.jsx(m.MenuItem,{href:e,onClick:()=>{t==null||t()},children:a.jsxs("div",{className:`flex-col ${Ke.container}`,children:[a.jsx("span",{children:"Profile Settings"}),a.jsx("span",{className:Ke.profileEmail,children:n})]})}),!r&&a.jsx(m.MenuDivider,{})]})},Dn="_wrapper_15d85_1",$n="_profileImage_15d85_14",Fn="_teamName_15d85_22",Gn="_planLabel_15d85_29",Hn="_membership_15d85_38",Kn="_defaultProfileImage_15d85_44",R={wrapper:Dn,profileImage:$n,teamName:Fn,planLabel:Gn,membership:Hn,defaultProfileImage:Kn},ut=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:r,planId:s}=M(),i=e||r;if(!i)return null;const c=H(s)?"Free":ge(s)?"Trial":void 0,u=t?m.MenuItem:"div";return a.jsxs(u,{className:`flex-row gap-2 flex-nowrap items-center ${R.wrapper}`,...t&&{onClick:()=>t(i)},children:[i.logoUrl?a.jsx("img",{className:R.profileImage,src:i.logoUrl,alt:"Team Logo"}):a.jsx("span",{className:`flex-row justify-center items-center ${R.defaultProfileImage}`,children:a.jsx(m.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:R.teamName,children:i.name}),c&&!n&&a.jsx("span",{className:`flex-row justify-center items-center ${R.planLabel}`,children:c})]}),a.jsx("span",{className:R.membership,children:i.role})]})]})},Wn="_teamsContainer_1t68g_1",Jn={teamsContainer:Wn},Qn=({onSwitchTeam:e})=>{const{otherTeams:t}=M();return t.length===0?null:a.jsx("div",{className:`flex-col items-stretch ${Jn.teamsContainer}`,children:t.map(n=>a.jsx(ut,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},Vn="_container_1u995_1",Yn="_planCta_1u995_15",Zn="_upgradeIconWrapper_1u995_19",le={container:Vn,planCta:Yn,upgradeIconWrapper:Zn},Xn=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:r}=M();if(!r)return null;const c=H(t)?"Your team is currently on the Free plan":`Free trial ends in ${n} ${n===1?"day":"days"}`;return a.jsxs(m.MenuItem,{href:e,className:`flex-col gap-1 items-start ${le.container}`,children:[a.jsx("span",{className:le.planCta,children:c}),a.jsxs("div",{className:`flex-row items-center gap-1 ${le.upgradeIconWrapper}`,children:[a.jsx(rt,{}),a.jsx("span",{children:"See upgrade options"})]})]})},I=({children:e,...t})=>a.jsx("nav",{...t,className:tn.sidebarContainer,children:e});I.Top=({children:e})=>a.jsx("div",{children:e});I.Bottom=({children:e})=>a.jsx("div",{children:e});I.Avatar=sn;I.IconLink=cn;I.Menu=dn;I.ProfileMenu=qn;I.TeamSwitch=Qn;I.TeamMenuItem=ut;I.UpgradeMenuItem=Xn;I.ProfileSettingsMenuItem=Bn;const er="_breadcrumbsItem_1hm6a_1",tr="_breadcrumbs_1hm6a_1",We={breadcrumbsItem:er,breadcrumbs:tr},nr=({items:e})=>a.jsx("nav",{"aria-label":"breadcrumb",className:We.breadcrumbs,children:e.map((t,n)=>a.jsxs(b.Fragment,{children:[a.jsx(m.Link,{className:We.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&a.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),rr=({items:e})=>a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs(b.Fragment,{children:[!!n&&t.some(r=>r.visible)&&a.jsx(m.MenuDivider,{}),t.filter(({visible:r})=>r).map(({link:r,label:s,onClick:i})=>a.jsx(m.MenuItem,{href:r||"#","aria-label":s,onClick:i,children:s},s))]},t[0].label))}),sr="_badge_1pc1v_1",ar="_tag_1pc1v_15",ir="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",or="_disabled_1pc1v_57",cr="_projectNavigationItem_1pc1v_61",lr="_projectNavigationItemDisabled_1pc1v_67",k={badge:sr,tag:ar,withNavLinkStyle:ir,disabled:or,projectNavigationItem:cr,projectNavigationItemDisabled:lr},Je=({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:k.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&a.jsx(m.Tag,{className:k.tag,children:n})]}),ue=b.forwardRef(({label:e,href:t="",disabled:n=!1,badge:r,onClick:s,novel:i},c)=>a.jsx(m.Tooltip,{tooltip:"You do not have access to this function",show:n,children:a.jsx("div",{className:n?k.projectNavigationItemDisabled:k.projectNavigationItem,children:s||n||!t?a.jsx("button",{type:"button",ref:c,className:C(k.withNavLinkStyle,{[k.disabled]:n}),disabled:n,onClick:s,children:a.jsx(Je,{label:e,badge:r,novel:i})}):a.jsx("a",{href:t,className:k.withNavLinkStyle,children:a.jsx(Je,{label:e,badge:r,novel:i})})})}));ue.displayName="NavigationTabsItem";const ur=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,dr=e=>e.visible&&(!e.dropdown||ur(e.dropdown)),fr=({navigation:e,activeItem:t})=>a.jsx("nav",{"aria-label":"Project",children:a.jsx("ul",{className:A.navigationTabList,"aria-orientation":"horizontal",children:e.filter(dr).map(n=>{var r,s,i;return n.dropdown?a.jsx("li",{className:A.navigationTab,"data-testid":n.key,"aria-selected":(r=n.isActive)==null?void 0:r.call(n,t),children:a.jsx(m.Menu,{menuButton:({opened:c})=>a.jsx(ue,{label:n.label,disabled:n.disabled,active:c}),children:a.jsx(m.MenuList,{children:a.jsx(rr,{items:n.dropdown})})})},n.key):a.jsx("li",{className:A.navigationTab,"data-testid":n.key,"aria-selected":(s=n.isActive)==null?void 0:s.call(n,t),children:a.jsx(ue,{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)})})}),dt=o.z.object({accessToken:o.z.string(),refreshToken:o.z.string()}),K=xt.buildPayloadRoute({description:"Takes a teamId and returns a JWT token access and refresh token for the user",method:"post",requestPathParamsSchema:o.z.object({teamId:o.z.number()}),pathResolver:e=>`/team/${e.teamId}/actions/get-user-token`,requestHeaderSchema:o.z.object({Authorization:o.z.string().optional(),"x-csrf-token":o.z.string().optional()}),requestBodySchema:o.z.undefined(),successResponseBodySchema:dt}),_e={teamKey:e=>["getUserToken",e]},ft=(e,t,n)=>fe.useQuery({...n,queryFn:({queryKey:[r,s]})=>U.sendByPayloadRoute(e,K,{pathParams:{teamId:s},headers:{}}),queryKey:_e.teamKey(t)}),mt=o.z.union([o.z.literal("owner"),o.z.literal("admin"),o.z.literal("biller"),o.z.literal("member")]),mr=o.z.object({userId:o.z.number(),teamId:o.z.number(),userTeamRole:mt,userEmail:o.z.string().email(),userCurrentTeamId:o.z.number(),planId:o.z.number(),planName:o.z.string(),isProviderAlpha:o.z.boolean(),isFullyAuthenticated:o.z.boolean(),exp:o.z.number()});function pe(e){try{const t=e.split(".")[1],n=atob(t);return mr.parse(JSON.parse(n))}catch{return}}const G=class G extends CustomEvent{constructor(t){super(G.eventName,{detail:{token:t,payload:pe(t.accessToken)}})}};xe(G,"eventName","new-jwt-issued");let z=G;const hr=_e;function br(e,t){const n=ft(e,t),r=b.useRef();return b.useEffect(()=>{n.data&&n.data.accessToken!==r.current&&(window.dispatchEvent(new z(n.data)),r.current=n.data.accessToken)},[n.data]),n}function ht(){const e=de("accessToken"),t=de("refreshToken");return!e||!t?Promise.resolve(void 0):Promise.resolve({accessToken:e,refreshToken:t})}function gr(){return Promise.resolve(de("csrf_token"))}function de(e){var n;const t=document.cookie.split(";").find(r=>r.trim().startsWith(e));return(n=t==null?void 0:t.split("="))==null?void 0:n[1]}function ve(){const[e,t]=b.useState();return b.useEffect(()=>{let n=!1;const r=s=>{t(s.detail.payload),n=!0};return ht().then(s=>s&&pe(s.accessToken)).then(s=>{n||t(s)}),window.addEventListener(z.eventName,r),()=>{window.removeEventListener(z.eventName,r)}},[]),e}const bt=o.z.object({user_id:o.z.number(),email:o.z.string().email(),fullname:o.z.string(),created_at:o.z.string(),created_at_timestamp:o.z.number(),role:mt}),_r=o.z.object({team_id:o.z.number(),team_user:bt}),gt=Ve.buildGetRoute({description:"Get the details of a team user",requestPathParamsSchema:o.z.object({teamId:o.z.number(),userId:o.z.number()}),pathResolver:({teamId:e,userId:t})=>`/teams/${e}/users/${t}`,successResponseBodySchema:_r}),Te={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},_t=(e,t,n,r)=>fe.useQuery({...r,queryKey:Te.teamUserKey(t,n),queryFn:({queryKey:[s,i,c]})=>U.sendByGetRoute(e,gt,{pathParams:{teamId:i,userId:c}})}),pr=Te;function vr(e){const t=ve();return _t(e,(t==null?void 0:t.teamId)??0,(t==null?void 0:t.userId)??0,{enabled:t!==void 0})}const Tr=o.z.object({lang_id:o.z.number(),lang_iso:o.z.string(),lang_name:o.z.string(),is_writable:o.z.union([o.z.literal(0),o.z.literal(1)])}),yr=o.z.object({user_id:o.z.number(),email:o.z.string().email(),fullname:o.z.string(),created_at:o.z.string(),created_at_timestamp:o.z.number(),admin_rights:o.z.array(o.z.string()),languages:o.z.array(Tr),is_admin:o.z.boolean(),is_reviewer:o.z.boolean()}),jr=o.z.object({project_id:o.z.string(),contributors:o.z.array(yr)}),pt=Ve.buildGetRoute({description:"Get the details of a project contributor",requestPathParamsSchema:o.z.object({projectId:o.z.string(),contributorId:o.z.number()}),pathResolver:({projectId:e,contributorId:t})=>`/projects/${e}/contributors/${t}`,successResponseBodySchema:jr}),ye={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},vt=(e,t,n,r)=>fe.useQuery({...r,queryKey:ye.projectUserKey(n,t),queryFn:({queryKey:[s,i,c]})=>U.sendByGetRoute(e,pt,{pathParams:{projectId:i,contributorId:c}})}),wr=ye;function Ir(e,t){const n=ve();return vt(e,(n==null?void 0:n.userId)??0,t,{enabled:n!==void 0})}function F(e){return{Authorization:`Bearer ${e}`}}function xr(e,t){return n=>async(r,s)=>{var u;const i=await t.getCachedJwtToken();if(i===void 0)return n(r,s);const c=await n(r,{...s,headers:{...s.headers,...F(i.accessToken)}});if(i&&(c.status===401||c.status===403)){const d=pe(i.accessToken);if(!d)return c;const l=await U.sendByPayloadRoute(e,K,{pathParams:{teamId:d.teamId},headers:F(i.refreshToken)});return await((u=t.onNewJwtTokenIssued)==null?void 0:u.call(t,l)),n(r,{...s,headers:{...s.headers,...F(l.accessToken)}})}return c}}const Tt={wretch:{lokaliseAuth(e){return this.middlewares([xr(this,e)])}}};function Sr(e,t){return n=>async(r,s)=>{var d;if(await t.getCachedJwtToken()!==void 0)return n(r,s);const c=await t.getCsrfToken();if(c===void 0)return n(r,s);const u=await U.sendByPayloadRoute(e,K,{pathParams:{teamId:await t.getTeamId()},headers:{"x-csrf-token":c}});return await((d=t.onNewJwtTokenIssued)==null?void 0:d.call(t,u)),n(r,{...s,headers:{...s.headers,...F(u.accessToken)}})}}const Nr={wretch:{lokaliseAuth(e={}){return this.addon(Tt).lokaliseAuth(Qe(e))},promoteClassicSession(e){const t=Qe(e);return this.middlewares([Sr(this,t)])}}};function Qe(e){return{...e,getCachedJwtToken:e.getCachedJwtToken??ht,getCsrfToken:"getCsrfToken"in e?e.getCsrfToken:gr,onNewJwtTokenIssued:t=>{var n;return window.dispatchEvent(new z(t)),((n=e.onNewJwtTokenIssued)==null?void 0:n.call(e,t))??Promise.resolve()}}}exports.Breadcrumbs=nr;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=be;exports.ENTERPRISE_PLAN_IDS=lt;exports.ESSENTIAL_PLAN_IDS=ot;exports.FREE_PLAN_ID=he;exports.JWT_TOKEN_SCHEMA=dt;exports.LokaliseAuthAddon=Tt;exports.LokaliseAuthBrowserAddon=Nr;exports.NavigationPanel=q;exports.NavigationTabs=fr;exports.PRO_PLAN_IDS=ct;exports.START_PLAN_IDS=it;exports.Sidebar=I;exports.TEAM_USER_SCHEMA=bt;exports.TRIAL_PLAN_ID=at;exports.authenticatedContributorKeys=wr;exports.authenticatedUserKeys=pr;exports.convertNewLineToBreakTag=En;exports.formatDate=An;exports.formatDateTz=zn;exports.getPromotedClassicSessionJwtKey=hr;exports.getTeamUser=gt;exports.getTeamUsersQueryKey=Te;exports.getUserToken=K;exports.getUserTokenKey=_e;exports.isEnterpriseOpenSourcePlan=Sn;exports.isEnterprisePlan=In;exports.isEssentialPlan=jn;exports.isFreePlan=H;exports.isPaidPlan=xn;exports.isProPlan=wn;exports.isStartPlan=yn;exports.isTrialPlan=ge;exports.makeUrlClickable=Rn;exports.retrieveContributor=pt;exports.retrieveContributorKeys=ye;exports.useAuthenticatedProjectContributor=Ir;exports.useAuthenticatedSessionPayload=ve;exports.useAuthenticatedUser=vr;exports.useEffectOnce=Ln;exports.useGetPromotedClassicSessionJwtQuery=br;exports.useGetUserTokenQuery=ft;exports.useRetrieveContributorQuery=vt;exports.userGetTeamUsersQuery=_t;
1
+ "use strict";var wt=Object.defineProperty;var It=(e,t,n)=>t in e?wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var xe=(e,t,n)=>It(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),b=require("react"),m=require("@lokalise/louis"),o=require("zod"),U=require("@lokalise/frontend-http-client"),xt=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),me=require("@tanstack/react-query"),Ve=require("@lokalise/universal-ts-utils/node"),Ye=require("date-fns"),St=require("date-fns-tz");function Nt(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 O=Nt(b);var $=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ze(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Q,Se;function he(){if(Se)return Q;Se=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return Q=e,Q}var V,Ne;function Pt(){if(Ne)return V;Ne=1;var e=typeof $=="object"&&$&&$.Object===Object&&$;return V=e,V}var Y,Pe;function Xe(){if(Pe)return Y;Pe=1;var e=Pt(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Y=n,Y}var Z,Ee;function Et(){if(Ee)return Z;Ee=1;var e=Xe(),t=function(){return e.Date.now()};return Z=t,Z}var X,ke;function kt(){if(ke)return X;ke=1;var e=/\s/;function t(n){for(var r=n.length;r--&&e.test(n.charAt(r)););return r}return X=t,X}var ee,Ce;function Ct(){if(Ce)return ee;Ce=1;var e=kt(),t=/^\s+/;function n(r){return r&&r.slice(0,e(r)+1).replace(t,"")}return ee=n,ee}var te,Re;function et(){if(Re)return te;Re=1;var e=Xe(),t=e.Symbol;return te=t,te}var ne,Ae;function Rt(){if(Ae)return ne;Ae=1;var e=et(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,s=e?e.toStringTag:void 0;function i(c){var u=n.call(c,s),d=c[s];try{c[s]=void 0;var l=!0}catch{}var f=r.call(c);return l&&(u?c[s]=d:delete c[s]),f}return ne=i,ne}var re,ze;function At(){if(ze)return re;ze=1;var e=Object.prototype,t=e.toString;function n(r){return t.call(r)}return re=n,re}var se,Le;function zt(){if(Le)return se;Le=1;var e=et(),t=Rt(),n=At(),r="[object Null]",s="[object Undefined]",i=e?e.toStringTag:void 0;function c(u){return u==null?u===void 0?s:r:i&&i in Object(u)?t(u):n(u)}return se=c,se}var ae,Oe;function Lt(){if(Oe)return ae;Oe=1;function e(t){return t!=null&&typeof t=="object"}return ae=e,ae}var ie,qe;function Ot(){if(qe)return ie;qe=1;var e=zt(),t=Lt(),n="[object Symbol]";function r(s){return typeof s=="symbol"||t(s)&&e(s)==n}return ie=r,ie}var oe,Ue;function qt(){if(Ue)return oe;Ue=1;var e=Ct(),t=he(),n=Ot(),r=NaN,s=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt;function d(l){if(typeof l=="number")return l;if(n(l))return r;if(t(l)){var f=typeof l.valueOf=="function"?l.valueOf():l;l=t(f)?f+"":f}if(typeof l!="string")return l===0?l:+l;l=e(l);var p=i.test(l);return p||c.test(l)?u(l.slice(2),p?2:8):s.test(l)?r:+l}return oe=d,oe}var ce,Me;function tt(){if(Me)return ce;Me=1;var e=he(),t=Et(),n=qt(),r="Expected a function",s=Math.max,i=Math.min;function c(u,d,l){var f,p,y,j,_,w,x=0,N=!1,g=!1,S=!0;if(typeof u!="function")throw new TypeError(r);d=n(d)||0,e(l)&&(N=!!l.leading,g="maxWait"in l,y=g?s(n(l.maxWait)||0,d):y,S="trailing"in l?!!l.trailing:S);function T(h){var P=f,L=p;return f=p=void 0,x=h,j=u.apply(L,P),j}function v(h){return x=h,_=setTimeout(D,d),N?T(h):j}function B(h){var P=h-w,L=h-x,Ie=d-P;return g?i(Ie,y-L):Ie}function je(h){var P=h-w,L=h-x;return w===void 0||P>=d||P<0||g&&L>=y}function D(){var h=t();if(je(h))return we(h);_=setTimeout(D,B(h))}function we(h){return _=void 0,S&&f?T(h):(f=p=void 0,j)}function yt(){_!==void 0&&clearTimeout(_),x=0,f=w=p=_=void 0}function jt(){return _===void 0?j:we(t())}function J(){var h=t(),P=je(h);if(f=arguments,p=this,w=h,P){if(_===void 0)return v(w);if(g)return clearTimeout(_),_=setTimeout(D,d),T(w)}return _===void 0&&(_=setTimeout(D,d)),j}return J.cancel=yt,J.flush=jt,J}return ce=c,ce}var Ut=tt();const Mt=Ze(Ut);var le,Be;function Bt(){if(Be)return le;Be=1;var e=tt(),t=he(),n="Expected a function";function r(s,i,c){var u=!0,d=!0;if(typeof s!="function")throw new TypeError(n);return t(c)&&(u="leading"in c?!!c.leading:u,d="trailing"in c?!!c.trailing:d),e(s,i,{leading:u,maxWait:i,trailing:d})}return le=r,le}var Dt=Bt();const $t=Ze(Dt),Ft=(e,t,n,r)=>{switch(t){case"debounce":return Mt(e,n,r);case"throttle":return $t(e,n,r);default:return e}},Gt=e=>{const t=O.useRef(e);return O.useEffect(()=>{t.current=e}),O.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])},Ht=e=>{const[t,n]=O.useState((e==null?void 0:e.current)||null);return e&&setTimeout(()=>{e.current!==t&&n(e.current)},0),{refProxy:O.useMemo(()=>new Proxy(s=>{s!==t&&n(s)},{get(s,i){return i==="current"?t:s[i]},set(s,i,c){return i==="current"?n(c):s[i]=c,!0}}),[t]),refElement:t,setRefElement:n}},Kt=(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 Wt({skipOnMount:e=!1,refreshMode:t,refreshRate:n=1e3,refreshOptions:r,handleWidth:s=!0,handleHeight:i=!0,targetRef:c,observerOptions:u,onResize:d}={}){const l=b.useRef(e),f=Gt(d),[p,y]=b.useState({width:void 0,height:void 0}),{refProxy:j,refElement:_}=Ht(c),{box:w}=u||{},x=b.useCallback(g=>{if(!s&&!i)return;if(l.current){l.current=!1;return}const S=(T,v)=>s&&T.width!==v.width||i&&T.height!==v.height;g.forEach(T=>{const v=Kt(T,w);y(B=>S(B,v)?(f==null||f({width:v.width,height:v.height,entry:T}),v):B)})},[s,i,l,w]),N=b.useCallback(Ft(x,t,n,r),[x,t,n,r]);return b.useEffect(()=>{let g;return _?(g=new window.ResizeObserver(N),g.observe(_,u)):(p.width||p.height)&&(f==null||f({width:null,height:null,entry:null}),y({width:void 0,height:void 0})),()=>{var S,T,v;(S=g==null?void 0:g.disconnect)===null||S===void 0||S.call(g),(v=(T=N).cancel)===null||v===void 0||v.call(T)}},[N,_]),Object.assign({ref:j},p)}function nt(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=nt(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function C(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=nt(e))&&(r&&(r+=" "),r+=t);return r}const Jt="_headerContainer_1cubo_1",Qt="_navigationTabList_1cubo_8",Vt="_navigationTab_1cubo_8",Yt="_headerContent_1cubo_34",Zt="_staticEnabled_1cubo_50",A={headerContainer:Jt,navigationTabList:Qt,navigationTab:Vt,headerContent:Yt,staticEnabled:Zt},Xt=77,q=({sticky:e,children:t})=>{const{ref:n,height:r}=Wt({refreshMode:"debounce",refreshRate:0}),[s,i]=b.useState(!1),c=()=>s?!e:!0;b.useEffect(()=>{const d=()=>{i(window.scrollY>0)};return window.addEventListener("scroll",d),()=>window.removeEventListener("scroll",d)},[]);const u=`${r||Xt}px`;return a.jsx("div",{style:{minHeight:u},children:a.jsx("div",{children:a.jsxs("div",{ref:n,className:C(A.headerContent,{[A.staticEnabled]:c()}),children:[a.jsx(q.Header,{}),a.jsx(q.Tabs,{}),t]})})})};q.Header=({children:e})=>a.jsx("div",{className:A.headerContainer,children:e});q.Tabs=({children:e})=>a.jsx("div",{className:"flex justify-between gap-2 nowrap",children:e});const en="_sidebarContainer_bmdti_1",tn={sidebarContainer:en},nn="_logoLink_1baxb_1",rn={logoLink:nn},sn=({src:e,href:t="/",ariaLabel:n="Home",alt:r="Lokalise"})=>a.jsx("a",{className:rn.logoLink,href:t,"aria-label":n,children:a.jsx("img",{src:e,alt:r})}),an="_link_1weq1_1",on="_active_1weq1_18",De={link:an,active:on},cn=({label:e,to:t,icon:n})=>a.jsx(m.Tooltip,{placement:"right",tooltip:e,children:a.jsx(m.Link,{className:C(De.link,{[De.active]:window.location.pathname.startsWith(t)}),href:t,children:a.jsx(n,{size:"25px"})})}),ln="_dropdownButton_hwh0c_1",un="_dropdownButtonActive_hwh0c_18",$e={dropdownButton:ln,dropdownButtonActive:un},dn=({children:e,icon:t})=>a.jsx(m.Menu,{menuButton:({opened:n})=>a.jsx(m.Tooltip,{placement:"right",tooltip:"Help",children:a.jsx("button",{type:"button",className:C($e.dropdownButton,{[$e.dropdownButtonActive]:n}),children:a.jsx(t,{size:"25px"})})}),children:a.jsx(m.MenuList,{placement:"right-start",children:e})}),fn="_iconContainer_nz34m_1",mn={iconContainer:fn},rt=({className:e=""})=>a.jsx("div",{"aria-label":"Upgrade Icon",className:C(mn.iconContainer,"flex-row","items-center","justify-center",e),children:a.jsx(m.CaretUpIcon,{})}),hn="_menuContainer_wbu3u_5",bn="_profileButton_wbu3u_16",gn="_profileImage_wbu3u_29",_n="_profileImageHighlight_wbu3u_37",pn="_profileImageUpgradeIcon_wbu3u_41",vn="_userIconWrapper_wbu3u_47",E={menuContainer:hn,profileButton:bn,profileImage:gn,profileImageHighlight:_n,profileImageUpgradeIcon:pn,userIconWrapper:vn},st=b.createContext({}),M=()=>b.useContext(st),Tn=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:r,showBillingButton:s,allowTeamCreation:i,isLimitedView:c,isProviderAlpha:u,canAccessTeamSettings:d,isEndOfTrialActive:l,isTeamSuspended:f}=M();return a.jsx(m.Menu,{menuButton:()=>a.jsxs("button",{className:E.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?a.jsx("img",{src:t.logoUrl,className:C(E.profileImage,{[E.profileImageHighlight]:r}),alt:"Team Logo"}):a.jsx("div",{className:C(E.userIconWrapper,"flex-row","align-center","items-center",{[E.profileImageHighlight]:r}),children:a.jsx(m.UserIcon,{size:"25px"})}),r&&a.jsx(rt,{className:E.profileImageUpgradeIcon})]}),children:a.jsx(m.MenuList,{placement:"right-end",className:E.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,isLimitedView:c,canAccessTeamSettings:d,isEndOfTrialActive:l,isTeamSuspended:f,showBillingButton:s,isProviderAlpha:u})})})},be=0,at=9999,it=[150,151,250,251],ot=[152,153,252,253],ct=[154,155,157,158,254,255,258,354,355,358],lt=[156,159,160,256,259,260],ge=9998,H=e=>e===be,_e=e=>e===at,yn=e=>it.includes(e),jn=e=>ot.includes(e),wn=e=>ct.includes(e),In=e=>lt.includes(e),xn=e=>e>be&&e<ge,Sn=e=>e===ge,Nn=/\n/,Fe=(e,t,n)=>e.split(t).flatMap((r,s)=>s!==0?[b.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),r]:r),Pn=(e,t,n)=>typeof e=="string"?Fe(e,t,n):e.flatMap(r=>typeof r=="string"?Fe(r,t,n):r),En=e=>Pn(e,Nn,a.jsx("br",{})),kn=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,Cn=e=>e.match(kn)??[],Ge=(e,t,n)=>{const r=e.split(t);if(r.length===1)return e;const s=[];return r[0]!==""&&s.push(r[0]),r.shift(),r[r.length-1]===""&&r.pop(),s.push(a.jsx("a",{href:t,target:"_blank",rel:"noreferrer noopener",children:t},t+n)),s.push(r.join(t)),s.filter(i=>i!=="")},He=e=>{const t=Cn(e);return t!=null&&t.length?t.reduce((n,r,s)=>typeof n=="string"?Ge(n,r,s):n.flatMap(i=>typeof i=="string"?Ge(i,r,s):i),e):e},Rn=e=>typeof e=="string"?He(e):e.flatMap(t=>typeof t=="string"?He(t):t,e),An=(e,t="PP")=>Ye.format(e,t),zn=(e,t,n="PP")=>Ye.format(St.toZonedTime(e,t),n),Ln=e=>{b.useEffect(e,[])},On=({children:e,config:t})=>{const{teams:n,currentTeamId:r,planId:s,isLimitedView:i,isTeamSuspended:c,canAccessTeamSettings:u,isEndOfTrialActive:d}=t,l=n.find(g=>g.id===r),f=n.filter(g=>g.id!==r),p=(l==null?void 0:l.role)??"",y=["biller","owner"].includes(p),j=H(s)||_e(s),N={...t,currentTeam:l,otherTeams:f,canChangeBilling:y,isOnFreeOrTrialPlan:j,showUpgradeCta:!i&&j&&y&&!c,showBillingButton:!i&&u&&y,allowTeamCreation:!i&&!d};return a.jsx(st.Provider,{value:N,children:e})},qn=({config:e,children:t})=>a.jsx(On,{config:e,children:a.jsx(Tn,{children:t})}),Un="_container_q5pot_1",Mn="_profileEmail_q5pot_5",Ke={container:Un,profileEmail:Mn},Bn=({href:e,onClick:t,userEmail:n,hideBottomDivider:r})=>{const{isEndOfTrialActive:s,isTeamSuspended:i}=M();return s||i?null:a.jsxs(a.Fragment,{children:[a.jsx(m.MenuItem,{href:e,onClick:()=>{t==null||t()},children:a.jsxs("div",{className:`flex-col ${Ke.container}`,children:[a.jsx("span",{children:"Profile Settings"}),a.jsx("span",{className:Ke.profileEmail,children:n})]})}),!r&&a.jsx(m.MenuDivider,{})]})},Dn="_wrapper_15d85_1",$n="_profileImage_15d85_14",Fn="_teamName_15d85_22",Gn="_planLabel_15d85_29",Hn="_membership_15d85_38",Kn="_defaultProfileImage_15d85_44",R={wrapper:Dn,profileImage:$n,teamName:Fn,planLabel:Gn,membership:Hn,defaultProfileImage:Kn},ut=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:r,planId:s}=M(),i=e||r;if(!i)return null;const c=H(s)?"Free":_e(s)?"Trial":void 0,u=t?m.MenuItem:"div";return a.jsxs(u,{className:`flex-row gap-2 flex-nowrap items-center ${R.wrapper}`,...t&&{onClick:()=>t(i)},children:[i.logoUrl?a.jsx("img",{className:R.profileImage,src:i.logoUrl,alt:"Team Logo"}):a.jsx("span",{className:`flex-row justify-center items-center ${R.defaultProfileImage}`,children:a.jsx(m.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:R.teamName,children:i.name}),c&&!n&&a.jsx("span",{className:`flex-row justify-center items-center ${R.planLabel}`,children:c})]}),a.jsx("span",{className:R.membership,children:i.role})]})]})},Wn="_teamsContainer_1t68g_1",Jn={teamsContainer:Wn},Qn=({onSwitchTeam:e})=>{const{otherTeams:t}=M();return t.length===0?null:a.jsx("div",{className:`flex-col items-stretch ${Jn.teamsContainer}`,children:t.map(n=>a.jsx(ut,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},Vn="_container_1u995_1",Yn="_planCta_1u995_15",Zn="_upgradeIconWrapper_1u995_19",ue={container:Vn,planCta:Yn,upgradeIconWrapper:Zn},Xn=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:r}=M();if(!r)return null;const c=H(t)?"Your team is currently on the Free plan":`Free trial ends in ${n} ${n===1?"day":"days"}`;return a.jsxs(m.MenuItem,{href:e,className:`flex-col gap-1 items-start ${ue.container}`,children:[a.jsx("span",{className:ue.planCta,children:c}),a.jsxs("div",{className:`flex-row items-center gap-1 ${ue.upgradeIconWrapper}`,children:[a.jsx(rt,{}),a.jsx("span",{children:"See upgrade options"})]})]})},I=({children:e,...t})=>a.jsx("nav",{...t,className:tn.sidebarContainer,children:e});I.Top=({children:e})=>a.jsx("div",{children:e});I.Bottom=({children:e})=>a.jsx("div",{children:e});I.Avatar=sn;I.IconLink=cn;I.Menu=dn;I.ProfileMenu=qn;I.TeamSwitch=Qn;I.TeamMenuItem=ut;I.UpgradeMenuItem=Xn;I.ProfileSettingsMenuItem=Bn;const er="_breadcrumbsItem_1hm6a_1",tr="_breadcrumbs_1hm6a_1",We={breadcrumbsItem:er,breadcrumbs:tr},nr=({items:e})=>a.jsx("nav",{"aria-label":"breadcrumb",className:We.breadcrumbs,children:e.map((t,n)=>a.jsxs(b.Fragment,{children:[a.jsx(m.Link,{className:We.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&a.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),rr=({items:e})=>a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs(b.Fragment,{children:[!!n&&t.some(r=>r.visible)&&a.jsx(m.MenuDivider,{}),t.filter(({visible:r})=>r).map(({link:r,label:s,onClick:i})=>a.jsx(m.MenuItem,{href:r||"#","aria-label":s,onClick:i,children:s},s))]},t[0].label))}),sr="_badge_1pc1v_1",ar="_tag_1pc1v_15",ir="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",or="_disabled_1pc1v_57",cr="_projectNavigationItem_1pc1v_61",lr="_projectNavigationItemDisabled_1pc1v_67",k={badge:sr,tag:ar,withNavLinkStyle:ir,disabled:or,projectNavigationItem:cr,projectNavigationItemDisabled:lr},Je=({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:k.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&a.jsx(m.Tag,{className:k.tag,children:n})]}),de=b.forwardRef(({label:e,href:t="",disabled:n=!1,badge:r,onClick:s,novel:i},c)=>a.jsx(m.Tooltip,{tooltip:"You do not have access to this function",show:n,children:a.jsx("div",{className:n?k.projectNavigationItemDisabled:k.projectNavigationItem,children:s||n||!t?a.jsx("button",{type:"button",ref:c,className:C(k.withNavLinkStyle,{[k.disabled]:n}),disabled:n,onClick:s,children:a.jsx(Je,{label:e,badge:r,novel:i})}):a.jsx("a",{href:t,className:k.withNavLinkStyle,children:a.jsx(Je,{label:e,badge:r,novel:i})})})}));de.displayName="NavigationTabsItem";const ur=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,dr=e=>e.visible&&(!e.dropdown||ur(e.dropdown)),fr=({navigation:e,activeItem:t})=>a.jsx("nav",{"aria-label":"Project",children:a.jsx("ul",{className:A.navigationTabList,"aria-orientation":"horizontal",children:e.filter(dr).map(n=>{var r,s,i;return n.dropdown?a.jsx("li",{className:A.navigationTab,"data-testid":n.key,"aria-selected":(r=n.isActive)==null?void 0:r.call(n,t),children:a.jsx(m.Menu,{menuButton:({opened:c})=>a.jsx(de,{label:n.label,disabled:n.disabled,active:c}),children:a.jsx(m.MenuList,{children:a.jsx(rr,{items:n.dropdown})})})},n.key):a.jsx("li",{className:A.navigationTab,"data-testid":n.key,"aria-selected":(s=n.isActive)==null?void 0:s.call(n,t),children:a.jsx(de,{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)})})}),dt=o.z.object({accessToken:o.z.string(),refreshToken:o.z.string()}),K=xt.buildPayloadRoute({description:"Takes a teamId and returns a JWT token access and refresh token for the user",method:"post",requestPathParamsSchema:o.z.object({teamId:o.z.number()}),pathResolver:e=>`/team/${e.teamId}/actions/get-user-token`,requestHeaderSchema:o.z.object({Authorization:o.z.string().optional(),"x-csrf-token":o.z.string().optional()}),requestBodySchema:o.z.undefined(),successResponseBodySchema:dt}),pe={teamKey:e=>["getUserToken",e]},ft=(e,t,n)=>me.useQuery({...n,queryFn:({queryKey:[r,s]})=>U.sendByPayloadRoute(e,K,{pathParams:{teamId:s},headers:{}}),queryKey:pe.teamKey(t)}),mt=o.z.union([o.z.literal("owner"),o.z.literal("admin"),o.z.literal("biller"),o.z.literal("member")]),mr=o.z.object({userId:o.z.number(),teamId:o.z.number(),userTeamRole:mt,userEmail:o.z.string().email(),userCurrentTeamId:o.z.number(),planId:o.z.number(),planName:o.z.string(),isProviderAlpha:o.z.boolean(),isFullyAuthenticated:o.z.boolean(),exp:o.z.number()});function W(e){try{const t=e.split(".")[1],n=atob(t);return mr.parse(JSON.parse(n))}catch{return}}const G=class G extends CustomEvent{constructor(t){super(G.eventName,{detail:{token:t,payload:W(t.accessToken)}})}};xe(G,"eventName","new-jwt-issued");let z=G;const hr=pe;function br(e,t){const n=ft(e,t),r=b.useRef();return b.useEffect(()=>{n.data&&n.data.accessToken!==r.current&&(window.dispatchEvent(new z(n.data)),r.current=n.data.accessToken)},[n.data]),n}function ht(){const e=fe("accessToken"),t=fe("refreshToken");return!e||!t?Promise.resolve(void 0):Promise.resolve({accessToken:e,refreshToken:t})}function gr(){return Promise.resolve(fe("csrf_token"))}function fe(e){var n;const t=document.cookie.split(";").find(r=>r.trim().startsWith(e));return(n=t==null?void 0:t.split("="))==null?void 0:n[1]}function ve(){const[e,t]=b.useState();return b.useEffect(()=>{let n=!1;const r=s=>{t(s.detail.payload),n=!0};return ht().then(s=>s&&W(s.accessToken)).then(s=>{n||t(s)}),window.addEventListener(z.eventName,r),()=>{window.removeEventListener(z.eventName,r)}},[]),e}const bt=o.z.object({user_id:o.z.number(),email:o.z.string().email(),fullname:o.z.string(),created_at:o.z.string(),created_at_timestamp:o.z.number(),role:mt}),_r=o.z.object({team_id:o.z.number(),team_user:bt}),gt=Ve.buildGetRoute({description:"Get the details of a team user",requestPathParamsSchema:o.z.object({teamId:o.z.number(),userId:o.z.number()}),pathResolver:({teamId:e,userId:t})=>`/teams/${e}/users/${t}`,successResponseBodySchema:_r}),Te={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},_t=(e,t,n,r)=>me.useQuery({...r,queryKey:Te.teamUserKey(t,n),queryFn:({queryKey:[s,i,c]})=>U.sendByGetRoute(e,gt,{pathParams:{teamId:i,userId:c}})}),pr=Te;function vr(e){const t=ve();return _t(e,(t==null?void 0:t.teamId)??0,(t==null?void 0:t.userId)??0,{enabled:t!==void 0})}const Tr=o.z.object({lang_id:o.z.number(),lang_iso:o.z.string(),lang_name:o.z.string(),is_writable:o.z.union([o.z.literal(0),o.z.literal(1)])}),yr=o.z.object({user_id:o.z.number(),email:o.z.string().email(),fullname:o.z.string(),created_at:o.z.string(),created_at_timestamp:o.z.number(),admin_rights:o.z.array(o.z.string()),languages:o.z.array(Tr),is_admin:o.z.boolean(),is_reviewer:o.z.boolean()}),jr=o.z.object({project_id:o.z.string(),contributors:o.z.array(yr)}),pt=Ve.buildGetRoute({description:"Get the details of a project contributor",requestPathParamsSchema:o.z.object({projectId:o.z.string(),contributorId:o.z.number()}),pathResolver:({projectId:e,contributorId:t})=>`/projects/${e}/contributors/${t}`,successResponseBodySchema:jr}),ye={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},vt=(e,t,n,r)=>me.useQuery({...r,queryKey:ye.projectUserKey(n,t),queryFn:({queryKey:[s,i,c]})=>U.sendByGetRoute(e,pt,{pathParams:{projectId:i,contributorId:c}})}),wr=ye;function Ir(e,t){const n=ve();return vt(e,(n==null?void 0:n.userId)??0,t,{enabled:n!==void 0})}function F(e){return{Authorization:`Bearer ${e}`}}function xr(e,t){return n=>async(r,s)=>{var u;const i=await t.getCachedJwtToken();if(i===void 0)return n(r,s);const c=await n(r,{...s,headers:{...s.headers,...F(i.accessToken)}});if(i&&(c.status===401||c.status===403)){const d=W(i.accessToken);if(!d)return c;const l=await U.sendByPayloadRoute(e,K,{pathParams:{teamId:d.teamId},headers:F(i.refreshToken)});return await((u=t.onNewJwtTokenIssued)==null?void 0:u.call(t,l)),n(r,{...s,headers:{...s.headers,...F(l.accessToken)}})}return c}}const Tt={wretch:{lokaliseAuth(e){return this.middlewares([xr(this,e)])}}};function Sr(e,t){return n=>async(r,s)=>{var d;if(await t.getCachedJwtToken()!==void 0)return n(r,s);const c=await t.getCsrfToken();if(c===void 0)return n(r,s);const u=await U.sendByPayloadRoute(e,K,{pathParams:{teamId:await t.getTeamId()},headers:{"x-csrf-token":c}});return await((d=t.onNewJwtTokenIssued)==null?void 0:d.call(t,u)),n(r,{...s,headers:{...s.headers,...F(u.accessToken)}})}}const Nr={wretch:{lokaliseAuth(e={}){return this.addon(Tt).lokaliseAuth(Qe(e))},promoteClassicSession(e){const t=Qe(e);return this.middlewares([Sr(this,t)])}}};function Qe(e){return{...e,getCachedJwtToken:e.getCachedJwtToken??ht,getCsrfToken:"getCsrfToken"in e?e.getCsrfToken:gr,onNewJwtTokenIssued:t=>{var n;return window.dispatchEvent(new z(t)),((n=e.onNewJwtTokenIssued)==null?void 0:n.call(e,t))??Promise.resolve()}}}exports.Breadcrumbs=nr;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=ge;exports.ENTERPRISE_PLAN_IDS=lt;exports.ESSENTIAL_PLAN_IDS=ot;exports.FREE_PLAN_ID=be;exports.JWT_TOKEN_SCHEMA=dt;exports.LokaliseAuthAddon=Tt;exports.LokaliseAuthBrowserAddon=Nr;exports.NavigationPanel=q;exports.NavigationTabs=fr;exports.PRO_PLAN_IDS=ct;exports.START_PLAN_IDS=it;exports.Sidebar=I;exports.TEAM_USER_SCHEMA=bt;exports.TRIAL_PLAN_ID=at;exports.authenticatedContributorKeys=wr;exports.authenticatedUserKeys=pr;exports.convertNewLineToBreakTag=En;exports.formatDate=An;exports.formatDateTz=zn;exports.getPromotedClassicSessionJwtKey=hr;exports.getTeamUser=gt;exports.getTeamUsersQueryKey=Te;exports.getUserToken=K;exports.getUserTokenKey=pe;exports.isEnterpriseOpenSourcePlan=Sn;exports.isEnterprisePlan=In;exports.isEssentialPlan=jn;exports.isFreePlan=H;exports.isPaidPlan=xn;exports.isProPlan=wn;exports.isStartPlan=yn;exports.isTrialPlan=_e;exports.makeUrlClickable=Rn;exports.parseJwtTokenPayload=W;exports.retrieveContributor=pt;exports.retrieveContributorKeys=ye;exports.useAuthenticatedProjectContributor=Ir;exports.useAuthenticatedSessionPayload=ve;exports.useAuthenticatedUser=vr;exports.useEffectOnce=Ln;exports.useGetPromotedClassicSessionJwtQuery=br;exports.useGetUserTokenQuery=ft;exports.useRetrieveContributorQuery=vt;exports.userGetTeamUsersQuery=_t;
package/dist/harmony.mjs CHANGED
@@ -5,9 +5,9 @@ import { jsx as i, jsxs as _, Fragment as Qe } from "react/jsx-runtime";
5
5
  import * as x from "react";
6
6
  import { useRef as Ve, useState as ue, useCallback as Ne, useEffect as q, useContext as St, createContext as kt, cloneElement as Et, Fragment as Ye, forwardRef as Pt } from "react";
7
7
  import { Tooltip as de, Link as Ze, Menu as me, MenuList as fe, CaretUpIcon as Ct, UserIcon as Xe, MenuItem as F, MenuDivider as et, Tag as Rt } from "@lokalise/louis";
8
+ import { z as s } from "zod";
8
9
  import { sendByPayloadRoute as he, sendByGetRoute as tt } from "@lokalise/frontend-http-client";
9
10
  import { buildPayloadRoute as jt } from "@lokalise/universal-ts-utils/api-contracts/apiContracts";
10
- import { z as s } from "zod";
11
11
  import { useQuery as ge } from "@tanstack/react-query";
12
12
  import { buildGetRoute as nt } from "@lokalise/universal-ts-utils/node";
13
13
  import { format as rt } from "date-fns";
@@ -938,6 +938,7 @@ export {
938
938
  Ur as isStartPlan,
939
939
  ft as isTrialPlan,
940
940
  Fr as makeUrlClickable,
941
+ ve as parseJwtTokenPayload,
941
942
  wr as retrieveContributor,
942
943
  Tt as retrieveContributorKeys,
943
944
  ta as useAuthenticatedProjectContributor,
@@ -1,6 +1,6 @@
1
1
  import { Wretch, WretchAddon } from 'wretch/types';
2
2
  import { JwtAuthProps } from './middleware/jwtAuthMiddleware';
3
- export interface LokaliseAuthAddonInterface {
4
- lokaliseAuth<T extends LokaliseAuthAddonInterface>(this: T & Wretch<T>, props: JwtAuthProps): this;
3
+ export interface LokaliseAuthAddon {
4
+ lokaliseAuth<T extends LokaliseAuthAddon>(this: T & Wretch<T>, props: JwtAuthProps): this;
5
5
  }
6
- export declare const LokaliseAuthAddon: WretchAddon<LokaliseAuthAddonInterface>;
6
+ export declare const LokaliseAuthAddon: WretchAddon<LokaliseAuthAddon>;
@@ -20,9 +20,9 @@ type BrowserPromoteAuthProps = Omit<PromoteAuthProps, 'getCachedJwtToken' | 'get
20
20
  */
21
21
  getCsrfToken?: PromoteAuthProps['getCsrfToken'];
22
22
  };
23
- export interface LokaliseAuthBrowserAddonInterface {
24
- lokaliseAuth<T extends LokaliseAuthBrowserAddonInterface>(this: T & Wretch<T>, props?: BrowserJwtAuthProps): this;
25
- promoteClassicSession<T extends LokaliseAuthBrowserAddonInterface>(this: T & Wretch<T>, props: BrowserPromoteAuthProps): this;
23
+ export interface LokaliseAuthBrowserAddon {
24
+ lokaliseAuth<T extends LokaliseAuthBrowserAddon>(this: T & Wretch<T>, props?: BrowserJwtAuthProps): this;
25
+ promoteClassicSession<T extends LokaliseAuthBrowserAddon>(this: T & Wretch<T>, props: BrowserPromoteAuthProps): this;
26
26
  }
27
- export declare const LokaliseAuthBrowserAddon: WretchAddon<LokaliseAuthBrowserAddonInterface>;
27
+ export declare const LokaliseAuthBrowserAddon: WretchAddon<LokaliseAuthBrowserAddon>;
28
28
  export {};
@@ -1,9 +1,16 @@
1
+ /**
2
+ * Auth
3
+ */
1
4
  export * from './frontend/hooks/useGetPromotedClassicSessionJwtQuery';
2
5
  export * from './frontend/hooks/useAuthenticatedSessionPayload';
3
6
  export * from './frontend/hooks/useAuthenticatedUser';
4
7
  export * from './frontend/hooks/useAuthenticatedProjectContributor';
8
+ export { parseJwtTokenPayload, type JwtTokenPayload } from './core/jwtTokenPayload';
9
+ export { LokaliseAuthAddon } from './core/lokaliseAuthAddon';
10
+ export { LokaliseAuthBrowserAddon } from './frontend/addon/lokaliseAuthBrowserAddon';
11
+ /**
12
+ * Public API
13
+ */
5
14
  export * from '../publicApi/hooks/useGetUserTokenQuery';
6
15
  export * from '../publicApi/hooks/userGetTeamUsersQuery';
7
16
  export * from '../publicApi/hooks/useRetrieveContributorQuery';
8
- export { LokaliseAuthAddon } from './core/lokaliseAuthAddon';
9
- export { LokaliseAuthBrowserAddon } from './frontend/addon/lokaliseAuthBrowserAddon';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/harmony",
3
- "version": "1.6.0-exp-jwtutils.6",
3
+ "version": "1.6.0-exp-jwtutils.8",
4
4
  "author": {
5
5
  "name": "Lokalise",
6
6
  "url": "https://lokalise.com/"