@lokalise/harmony 1.6.0-exp-jwtutils.22 → 1.8.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.
Files changed (57) hide show
  1. package/README.md +64 -0
  2. package/dist/harmony.cjs +1 -1
  3. package/dist/harmony.mjs +547 -552
  4. package/dist/types/src/components/Sidebar/Sidebar.d.ts +5 -2
  5. package/dist/types/src/components/Sidebar/Sidebar.stories.d.ts +1 -0
  6. package/dist/types/src/components/Sidebar/Widgets/Avatar/Avatar.d.ts +3 -0
  7. package/dist/types/src/components/Sidebar/Widgets/IconLink/IconLink.d.ts +3 -0
  8. package/dist/types/src/components/Sidebar/Widgets/Menu/Menu.d.ts +3 -0
  9. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.d.ts +4 -0
  10. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.d.ts +4 -0
  11. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.d.ts +5 -0
  12. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.d.ts +3 -0
  13. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.d.ts +5 -0
  14. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/types.d.ts +9 -6
  15. package/dist/types/src/features/auth/backend/services/getAuthenticatedSessionDetailFromRequest.d.ts +10 -0
  16. package/dist/types/src/features/auth/core/jwtTokenPayload.d.ts +7 -14
  17. package/dist/types/src/features/auth/core/lokaliseAuthAddon.d.ts +8 -0
  18. package/dist/types/src/features/auth/core/middleware/jwtAuthMiddleware.d.ts +1 -1
  19. package/dist/types/src/features/auth/core/middleware/publicApiHeadersMiddleware.d.ts +3 -0
  20. package/dist/types/src/features/auth/core/types/jwtTokenPayload.d.ts +4 -4
  21. package/dist/types/src/features/auth/core/types/jwtTokenPayload.fixture.d.ts +5 -5
  22. package/dist/types/src/features/auth/core/utils/makeAuthHeader.d.ts +2 -3
  23. package/dist/types/src/features/auth/frontend/addon/lokaliseAuthBrowserAddon.d.ts +7 -0
  24. package/dist/types/src/features/auth/frontend/events/NewJwtIssuedEvent.d.ts +1 -1
  25. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedProjectContributor.d.ts +9 -1
  26. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedSessionPayload.d.ts +2 -2
  27. package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedUser.d.ts +7 -1
  28. package/dist/types/src/features/auth/frontend/hooks/useGetPromotedClassicSessionJwtQuery.d.ts +11 -202
  29. package/dist/types/src/features/auth/frontend/utils/cookieTokenUtils.d.ts +4 -0
  30. package/dist/types/src/features/auth/frontend/utils/cookieTokenUtils.test.d.ts +1 -0
  31. package/dist/types/src/features/auth/{index.d.ts → node.d.ts} +1 -11
  32. package/dist/types/src/features/node.d.ts +2 -0
  33. package/dist/types/src/features/publicApi/contributors.d.ts +3 -97
  34. package/dist/types/src/features/publicApi/hooks/useCreateProjectMutation.d.ts +11 -6
  35. package/dist/types/src/features/publicApi/hooks/useGetTeamUsersQuery.d.ts +11 -2
  36. package/dist/types/src/features/publicApi/hooks/useGetUserTokenQuery.d.ts +11 -2
  37. package/dist/types/src/features/publicApi/hooks/useListProjectsQuery.d.ts +13 -4
  38. package/dist/types/src/features/publicApi/hooks/useRetrieveContributorQuery.d.ts +11 -2
  39. package/dist/types/src/features/publicApi/hooks/useRetrieveProjectQuery.d.ts +13 -4
  40. package/dist/types/src/features/publicApi/{index.d.ts → node.d.ts} +6 -3
  41. package/dist/types/src/features/publicApi/projects.d.ts +259 -784
  42. package/dist/types/src/features/publicApi/teamUsers.d.ts +3 -70
  43. package/dist/types/src/features/publicApi/types/contributorTypes.d.ts +171 -0
  44. package/dist/types/src/features/publicApi/types/projectTypes.d.ts +1061 -0
  45. package/dist/types/src/features/publicApi/types/teamUserTypes.d.ts +70 -0
  46. package/dist/types/src/features/publicApi/types/userTokenTypes.d.ts +26 -0
  47. package/dist/types/src/features/publicApi/userToken.d.ts +0 -11
  48. package/dist/types/src/node.d.ts +3 -6
  49. package/dist/types/tests/utils.d.ts +1 -6
  50. package/package.json +23 -18
  51. package/dist/types/src/features/auth/bff/services/getAuthenticatedSessionDetailFromRequest.d.ts +0 -18
  52. package/dist/types/src/features/auth/frontend/utils/cookieToken.d.ts +0 -4
  53. package/dist/types/src/features/publicApi/types/project.d.ts +0 -522
  54. /package/dist/types/src/{features/auth/bff/services/getAuthenticatedSessionPayloadFromRequest.test.d.ts → components/Sidebar/Widgets/ProfileMenu/ProfileMenu.test.d.ts} +0 -0
  55. /package/dist/types/src/features/auth/{frontend/utils/cookieToken.test.d.ts → backend/services/getAuthenticatedSessionPayloadFromRequest.test.d.ts} +0 -0
  56. /package/dist/types/src/features/publicApi/types/{language.d.ts → languageTypes.d.ts} +0 -0
  57. /package/dist/types/src/features/publicApi/types/{teamRole.d.ts → teamRoleTypes.d.ts} +0 -0
package/README.md CHANGED
@@ -3,3 +3,67 @@ A temporary shared library designed to house reusable components, such as molecu
3
3
 
4
4
  ## Storybook
5
5
  https://lokalise.github.io/harmony/?path=/story/app-shell-navigationpanel--default&args=sticky:!true
6
+
7
+ ## Features
8
+
9
+ ### Authentication
10
+
11
+ This provides a wretch addon for authentication. It is used to add the authentication token to the request headers, and will handle automatic token refreshes.
12
+
13
+ To compliment this, there are a number of convenience hooks and functions to help with authentication in both a frontend and backend context.
14
+
15
+ #### Basic Frontend Usage
16
+
17
+ ```typescript
18
+ import { LokaliseAuthBrowserAddon } from '@lokalise/harmony';
19
+ import wretch from 'wretch';
20
+
21
+ // Add the addon to your client definition
22
+ export const appHttpClient = wretch('...')
23
+ .addon(LokaliseAuthBrowserAddon)
24
+ .errorType('json');
25
+
26
+ // You can create an authenticated client by calling the `lokaliseAuth` method,
27
+ // or you can use this metion to add authentication at a later point.
28
+ export const appAuthenticatedHttpClient = appHttpClient.lokaliseAuth();
29
+
30
+ // Additionally, you can promote a classic session to an authenticated session
31
+ // when configuring a client in the context of a classic PHP CSRF session.
32
+ // this `promoteClassicSession` method will automatically promote the session to JWT
33
+ // but does not apply the authentication token to the request headers.
34
+ // For this you should still chain the `lokaliseAuth` method.
35
+ export const appPromotingHttpClient = appHttpClient.promoteClassicSession({
36
+ getTeamId: async () => 000 /* Get the team ID from somewhere*/,
37
+ });
38
+ ```
39
+
40
+ ### Public API
41
+
42
+ This provides a set of type safe request routes for the public API. They are designed to be used with the `sendByRoute` style functions that accept a wretch client and a route object.
43
+
44
+ Additionally, there are a number of convenience hooks and functions to help with public API requests.
45
+
46
+ #### Basic Frontend Usage
47
+
48
+ ```typescript
49
+ import { sendByGetRoute } from '@lokalise/frontend-http-client'
50
+ import { type TeamUserResponse, getTeamUser } from '@lokalise/harmony';
51
+ import { appAuthenticatedHttpClient } from '../path/to/appAuthenticatedHttpClient';
52
+
53
+ const result: TeamUserResponse = await sendByGetRoute(appAuthenticatedHttpClient, getTeamUser, { pathParams: { teamId, userId } });
54
+ ```
55
+
56
+ #### Basic Backend Usage
57
+
58
+ ```typescript
59
+ import { sendByGetRoute } from '@lokalise/backend-http-client'
60
+ import { type TeamUserResponse, getTeamUser } from '@lokalise/harmony';
61
+ import { Client } from 'undici'
62
+
63
+ const result: TeamUserResponse = async (client: Client) => {
64
+ return sendByGetRoute(client, getTeamUser, {
65
+ pathParams: { teamId, userId },
66
+ headers: { 'Authorization': `Bearer token` }
67
+ });
68
+ }
69
+ ```
package/dist/harmony.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var kt=Object.defineProperty;var Ct=(e,t,n)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Pe=(e,t,n)=>Ct(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"),r=require("zod"),x=require("@lokalise/frontend-http-client"),Ze=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),N=require("@tanstack/react-query"),J=require("@lokalise/universal-ts-utils/node"),Xe=require("date-fns"),Nt=require("date-fns-tz");function At(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=At(b);var $=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function et(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Z,Ie;function ge(){if(Ie)return Z;Ie=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return Z=e,Z}var X,xe;function Lt(){if(xe)return X;xe=1;var e=typeof $=="object"&&$&&$.Object===Object&&$;return X=e,X}var ee,Re;function tt(){if(Re)return ee;Re=1;var e=Lt(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return ee=n,ee}var te,ke;function Ot(){if(ke)return te;ke=1;var e=tt(),t=function(){return e.Date.now()};return te=t,te}var ne,Ce;function qt(){if(Ce)return ne;Ce=1;var e=/\s/;function t(n){for(var s=n.length;s--&&e.test(n.charAt(s)););return s}return ne=t,ne}var re,Ne;function Mt(){if(Ne)return re;Ne=1;var e=qt(),t=/^\s+/;function n(s){return s&&s.slice(0,e(s)+1).replace(t,"")}return re=n,re}var se,Ae;function nt(){if(Ae)return se;Ae=1;var e=tt(),t=e.Symbol;return se=t,se}var ae,Le;function Ut(){if(Le)return ae;Le=1;var e=nt(),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 ae=i,ae}var oe,Oe;function Bt(){if(Oe)return oe;Oe=1;var e=Object.prototype,t=e.toString;function n(s){return t.call(s)}return oe=n,oe}var ie,qe;function Dt(){if(qe)return ie;qe=1;var e=nt(),t=Ut(),n=Bt(),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 ie=c,ie}var ce,Me;function Ht(){if(Me)return ce;Me=1;function e(t){return t!=null&&typeof t=="object"}return ce=e,ce}var ue,Ue;function Ft(){if(Ue)return ue;Ue=1;var e=Dt(),t=Ht(),n="[object Symbol]";function s(a){return typeof a=="symbol"||t(a)&&e(a)==n}return ue=s,ue}var le,Be;function $t(){if(Be)return le;Be=1;var e=Mt(),t=ge(),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 p=i.test(u);return p||c.test(u)?l(u.slice(2),p?2:8):a.test(u)?s:+u}return le=d,le}var de,De;function rt(){if(De)return de;De=1;var e=ge(),t=Ot(),n=$t(),s="Expected a function",a=Math.max,i=Math.min;function c(l,d,u){var m,p,y,j,h,z,w=0,P=!1,g=!1,E=!0;if(typeof l!="function")throw new TypeError(s);d=n(d)||0,e(u)&&(P=!!u.leading,g="maxWait"in u,y=g?a(n(u.maxWait)||0,d):y,E="trailing"in u?!!u.trailing:E);function T(_){var I=m,q=p;return m=p=void 0,w=_,j=l.apply(q,I),j}function v(_){return w=_,h=setTimeout(F,d),P?T(_):j}function H(_){var I=_-z,q=_-w,Ee=d-I;return g?i(Ee,y-q):Ee}function Se(_){var I=_-z,q=_-w;return z===void 0||I>=d||I<0||g&&q>=y}function F(){var _=t();if(Se(_))return we(_);h=setTimeout(F,H(_))}function we(_){return h=void 0,E&&m?T(_):(m=p=void 0,j)}function xt(){h!==void 0&&clearTimeout(h),w=0,m=z=p=h=void 0}function Rt(){return h===void 0?j:we(t())}function V(){var _=t(),I=Se(_);if(m=arguments,p=this,z=_,I){if(h===void 0)return v(z);if(g)return clearTimeout(h),h=setTimeout(F,d),T(z)}return h===void 0&&(h=setTimeout(F,d)),j}return V.cancel=xt,V.flush=Rt,V}return de=c,de}var Gt=rt();const Kt=et(Gt);var me,He;function Qt(){if(He)return me;He=1;var e=rt(),t=ge(),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 me=s,me}var Jt=Qt();const Wt=et(Jt),Yt=(e,t,n,s)=>{switch(t){case"debounce":return Kt(e,n,s);case"throttle":return Wt(e,n,s);default:return e}},Vt=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)},[])},Zt=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}},Xt=(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 en({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=Vt(d),[p,y]=b.useState({width:void 0,height:void 0}),{refProxy:j,refElement:h}=Zt(c),{box:z}=l||{},w=b.useCallback(g=>{if(!a&&!i)return;if(u.current){u.current=!1;return}const E=(T,v)=>a&&T.width!==v.width||i&&T.height!==v.height;g.forEach(T=>{const v=Xt(T,z);y(H=>E(H,v)?(m==null||m({width:v.width,height:v.height,entry:T}),v):H)})},[a,i,u,z]),P=b.useCallback(Yt(w,t,n,s),[w,t,n,s]);return b.useEffect(()=>{let g;return h?(g=new window.ResizeObserver(P),g.observe(h,l)):(p.width||p.height)&&(m==null||m({width:null,height:null,entry:null}),y({width:void 0,height:void 0})),()=>{var E,T,v;(E=g==null?void 0:g.disconnect)===null||E===void 0||E.call(g),(v=(T=P).cancel)===null||v===void 0||v.call(T)}},[P,h]),Object.assign({ref:j},p)}function st(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=st(e[t]))&&(s&&(s+=" "),s+=n)}else for(n in e)e[n]&&(s&&(s+=" "),s+=n);return s}function C(){for(var e,t,n=0,s="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=st(e))&&(s&&(s+=" "),s+=t);return s}const tn="_headerContainer_1cubo_1",nn="_navigationTabList_1cubo_8",rn="_navigationTab_1cubo_8",sn="_headerContent_1cubo_34",an="_staticEnabled_1cubo_50",L={headerContainer:tn,navigationTabList:nn,navigationTab:rn,headerContent:sn,staticEnabled:an},on=77,U=({sticky:e,children:t})=>{const{ref:n,height:s}=en({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||on}px`;return o.jsx("div",{style:{minHeight:l},children:o.jsx("div",{children:o.jsxs("div",{ref:n,className:C(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 cn="_sidebarContainer_bmdti_1",un={sidebarContainer:cn},ln="_logoLink_1baxb_1",dn={logoLink:ln},mn=({src:e,href:t="/",ariaLabel:n="Home",alt:s="Lokalise"})=>o.jsx("a",{className:dn.logoLink,href:t,"aria-label":n,children:o.jsx("img",{src:e,alt:s})}),fn="_link_1weq1_1",_n="_active_1weq1_18",Fe={link:fn,active:_n},bn=({label:e,to:t,icon:n})=>o.jsx(f.Tooltip,{placement:"right",tooltip:e,children:o.jsx(f.Link,{className:C(Fe.link,{[Fe.active]:window.location.pathname.startsWith(t)}),href:t,children:o.jsx(n,{size:"25px"})})}),gn="_dropdownButton_hwh0c_1",hn="_dropdownButtonActive_hwh0c_18",$e={dropdownButton:gn,dropdownButtonActive:hn},pn=({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:C($e.dropdownButton,{[$e.dropdownButtonActive]:n}),children:o.jsx(t,{size:"25px"})})}),children:o.jsx(f.MenuList,{placement:"right-start",children:e})}),vn="_iconContainer_nz34m_1",Tn={iconContainer:vn},at=({className:e=""})=>o.jsx("div",{"aria-label":"Upgrade Icon",className:C(Tn.iconContainer,"flex-row","items-center","justify-center",e),children:o.jsx(f.CaretUpIcon,{})}),yn="_menuContainer_wbu3u_5",jn="_profileButton_wbu3u_16",zn="_profileImage_wbu3u_29",Sn="_profileImageHighlight_wbu3u_37",wn="_profileImageUpgradeIcon_wbu3u_41",En="_userIconWrapper_wbu3u_47",R={menuContainer:yn,profileButton:jn,profileImage:zn,profileImageHighlight:Sn,profileImageUpgradeIcon:wn,userIconWrapper:En},ot=b.createContext({}),B=()=>b.useContext(ot),Pn=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:s,showBillingButton:a,allowTeamCreation:i,isLimitedView:c,isProviderAlpha:l,canAccessTeamSettings:d,isEndOfTrialActive:u,isTeamSuspended:m}=B();return o.jsx(f.Menu,{menuButton:()=>o.jsxs("button",{className:R.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?o.jsx("img",{src:t.logoUrl,className:C(R.profileImage,{[R.profileImageHighlight]:s}),alt:"Team Logo"}):o.jsx("div",{className:C(R.userIconWrapper,"flex-row","align-center","items-center",{[R.profileImageHighlight]:s}),children:o.jsx(f.UserIcon,{size:"25px"})}),s&&o.jsx(at,{className:R.profileImageUpgradeIcon})]}),children:o.jsx(f.MenuList,{placement:"right-end",className:R.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,isLimitedView:c,canAccessTeamSettings:d,isEndOfTrialActive:u,isTeamSuspended:m,showBillingButton:a,isProviderAlpha:l})})})},he=0,it=9999,ct=[150,151,250,251],ut=[152,153,252,253],lt=[154,155,157,158,254,255,258,354,355,358],dt=[156,159,160,256,259,260],pe=9998,W=e=>e===he,ve=e=>e===it,In=e=>ct.includes(e),xn=e=>ut.includes(e),Rn=e=>lt.includes(e),kn=e=>dt.includes(e),Cn=e=>e>he&&e<pe,Nn=e=>e===pe,An=/\n/,Ge=(e,t,n)=>e.split(t).flatMap((s,a)=>a!==0?[b.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),s]:s),Ln=(e,t,n)=>typeof e=="string"?Ge(e,t,n):e.flatMap(s=>typeof s=="string"?Ge(s,t,n):s),On=e=>Ln(e,An,o.jsx("br",{})),qn=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,Mn=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=Mn(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},Un=e=>typeof e=="string"?Qe(e):e.flatMap(t=>typeof t=="string"?Qe(t):t,e),Bn=(e,t="PP")=>Xe.format(e,t),Dn=(e,t,n="PP")=>Xe.format(Nt.toZonedTime(e,t),n),Hn=e=>{b.useEffect(e,[])},Fn=({children:e,config:t})=>{const{teams:n,currentTeamId:s,planId:a,isLimitedView:i,isTeamSuspended:c,canAccessTeamSettings:l,isEndOfTrialActive:d}=t,u=n.find(g=>g.id===s),m=n.filter(g=>g.id!==s),p=(u==null?void 0:u.role)??"",y=["biller","owner"].includes(p),j=W(a)||ve(a),P={...t,currentTeam:u,otherTeams:m,canChangeBilling:y,isOnFreeOrTrialPlan:j,showUpgradeCta:!i&&j&&y&&!c,showBillingButton:!i&&l&&y,allowTeamCreation:!i&&!d};return o.jsx(ot.Provider,{value:P,children:e})},$n=({config:e,children:t})=>o.jsx(Fn,{config:e,children:o.jsx(Pn,{children:t})}),Gn="_container_q5pot_1",Kn="_profileEmail_q5pot_5",Je={container:Gn,profileEmail:Kn},Qn=({href:e,onClick:t,userEmail:n,hideBottomDivider:s})=>{const{isEndOfTrialActive:a,isTeamSuspended:i}=B();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 ${Je.container}`,children:[o.jsx("span",{children:"Profile Settings"}),o.jsx("span",{className:Je.profileEmail,children:n})]})}),!s&&o.jsx(f.MenuDivider,{})]})},Jn="_wrapper_15d85_1",Wn="_profileImage_15d85_14",Yn="_teamName_15d85_22",Vn="_planLabel_15d85_29",Zn="_membership_15d85_38",Xn="_defaultProfileImage_15d85_44",A={wrapper:Jn,profileImage:Wn,teamName:Yn,planLabel:Vn,membership:Zn,defaultProfileImage:Xn},mt=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:s,planId:a}=B(),i=e||s;if(!i)return null;const c=W(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 ${A.wrapper}`,...t&&{onClick:()=>t(i)},children:[i.logoUrl?o.jsx("img",{className:A.profileImage,src:i.logoUrl,alt:"Team Logo"}):o.jsx("span",{className:`flex-row justify-center items-center ${A.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:A.teamName,children:i.name}),c&&!n&&o.jsx("span",{className:`flex-row justify-center items-center ${A.planLabel}`,children:c})]}),o.jsx("span",{className:A.membership,children:i.role})]})]})},er="_teamsContainer_1t68g_1",tr={teamsContainer:er},nr=({onSwitchTeam:e})=>{const{otherTeams:t}=B();return t.length===0?null:o.jsx("div",{className:`flex-col items-stretch ${tr.teamsContainer}`,children:t.map(n=>o.jsx(mt,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},rr="_container_1u995_1",sr="_planCta_1u995_15",ar="_upgradeIconWrapper_1u995_19",fe={container:rr,planCta:sr,upgradeIconWrapper:ar},or=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:s}=B();if(!s)return null;const c=W(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 ${fe.container}`,children:[o.jsx("span",{className:fe.planCta,children:c}),o.jsxs("div",{className:`flex-row items-center gap-1 ${fe.upgradeIconWrapper}`,children:[o.jsx(at,{}),o.jsx("span",{children:"See upgrade options"})]})]})},S=({children:e,...t})=>o.jsx("nav",{...t,className:un.sidebarContainer,children:e});S.Top=({children:e})=>o.jsx("div",{children:e});S.Bottom=({children:e})=>o.jsx("div",{children:e});S.Avatar=mn;S.IconLink=bn;S.Menu=pn;S.ProfileMenu=$n;S.TeamSwitch=nr;S.TeamMenuItem=mt;S.UpgradeMenuItem=or;S.ProfileSettingsMenuItem=Qn;const ir="_breadcrumbsItem_1hm6a_1",cr="_breadcrumbs_1hm6a_1",We={breadcrumbsItem:ir,breadcrumbs:cr},ur=({items:e})=>o.jsx("nav",{"aria-label":"breadcrumb",className:We.breadcrumbs,children:e.map((t,n)=>o.jsxs(b.Fragment,{children:[o.jsx(f.Link,{className:We.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&o.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),lr=({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))}),dr="_badge_1pc1v_1",mr="_tag_1pc1v_15",fr="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",_r="_disabled_1pc1v_57",br="_projectNavigationItem_1pc1v_61",gr="_projectNavigationItemDisabled_1pc1v_67",k={badge:dr,tag:mr,withNavLinkStyle:fr,disabled:_r,projectNavigationItem:br,projectNavigationItemDisabled:gr},Ye=({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:k.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&o.jsx(f.Tag,{className:k.tag,children:n})]}),_e=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?k.projectNavigationItemDisabled:k.projectNavigationItem,children:a||n||!t?o.jsx("button",{type:"button",ref:c,className:C(k.withNavLinkStyle,{[k.disabled]:n}),disabled:n,onClick:a,children:o.jsx(Ye,{label:e,badge:s,novel:i})}):o.jsx("a",{href:t,className:k.withNavLinkStyle,children:o.jsx(Ye,{label:e,badge:s,novel:i})})})}));_e.displayName="NavigationTabsItem";const hr=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,pr=e=>e.visible&&(!e.dropdown||hr(e.dropdown)),vr=({navigation:e,activeItem:t})=>o.jsx("nav",{"aria-label":"Project",children:o.jsx("ul",{className:L.navigationTabList,"aria-orientation":"horizontal",children:e.filter(pr).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(_e,{label:n.label,disabled:n.disabled,active:c}),children:o.jsx(f.MenuList,{children:o.jsx(lr,{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(_e,{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)})})}),Tr=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)])}),yr=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(Tr),is_admin:r.z.boolean(),is_reviewer:r.z.boolean()}),jr=r.z.object({project_id:r.z.string(),contributors:r.z.array(yr)}),ft=J.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:jr}),zr=r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional()}),Sr=r.z.object({language_id:r.z.number(),language_iso:r.z.string(),progress:r.z.number(),words_to_do:r.z.number()}),Te=r.z.union([r.z.literal("localization_files"),r.z.literal("paged_documents"),r.z.literal("marketing")]),wr=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()}),Er=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()}),Pr=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:Er,languages:r.z.array(Sr)}),K=r.z.object({project_id:r.z.string(),uuid:r.z.string().uuid(),project_type:Te,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:wr,statistics:Pr}),Ir=r.z.object({name:r.z.string(),team_id:r.z.string(),base_lang_iso:r.z.string(),languages:r.z.array(zr),project_type:Te,is_segmentation_enabled:r.z.boolean()}),ye=()=>"/projects",_t=Ze.buildPayloadRoute({description:"Create a new project",method:"post",pathResolver:ye,requestBodySchema:Ir,successResponseBodySchema:K}),xr=r.z.object({project_type:Te.optional(),filter_team_id:r.z.number().optional(),filter_names:r.z.string().optional(),include_statistics:r.z.boolean().optional(),include_settings:r.z.boolean().optional(),limit:r.z.number().optional(),page:r.z.number().optional()}),Rr=r.z.array(r.z.union([K.omit({statistics:!0,settings:!0}),K.pick({settings:!0,statistics:!0}).partial()])),bt=J.buildGetRoute({description:"List all projects",pathResolver:ye,requestQuerySchema:xr,successResponseBodySchema:Rr}),kr=r.z.object({project_id:r.z.string()}),gt=J.buildGetRoute({description:"Retrieve a project",pathResolver:ye,requestQuerySchema:kr,successResponseBodySchema:K}),ht=r.z.union([r.z.literal("owner"),r.z.literal("admin"),r.z.literal("biller"),r.z.literal("member")]),pt=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:ht}),Cr=r.z.object({team_id:r.z.number(),team_user:pt}),vt=J.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:Cr}),Tt=r.z.object({accessToken:r.z.string(),refreshToken:r.z.string()}),Y=Ze.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:r.z.union([r.z.object({Authorization:r.z.string().startsWith("Bearer ")}),r.z.object({"x-csrf-token":r.z.string()})]),requestBodySchema:r.z.undefined(),successResponseBodySchema:Tt});function Nr(e,t={}){return N.useMutation({...t,mutationFn:n=>x.sendByPayloadRoute(e,_t,{body:n})})}const yt={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},jt=(e,t)=>N.useQuery({...t,queryFn:({queryKey:[n,s,a]})=>x.sendByGetRoute(e,vt,{pathParams:{teamId:s,userId:a}})}),zt={teamKeyCsrf:(e,t)=>["getUserToken","x-csrf-token",t,e],teamKeyJwt:(e,t)=>["getUserToken","Authorization",`Bearer ${t}`,e]},St=(e,t)=>N.useQuery({...t,queryFn:({queryKey:[n,s,a,i]})=>x.sendByPayloadRoute(e,Y,{pathParams:{teamId:i},headers:s==="x-csrf-token"?{"x-csrf-token":a}:{Authorization:a}})}),Ar={paramsKey:e=>["listProjects",e]};function Lr(e,t){return N.useQuery({...t,queryFn:({queryKey:[n,s]})=>x.sendByGetRoute(e,bt,{queryParams:s})})}const wt={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},Et=(e,t)=>N.useQuery({...t,queryFn:({queryKey:[n,s,a]})=>x.sendByGetRoute(e,ft,{pathParams:{projectId:s,contributorId:a}})}),Or={projectIdKey:e=>["retrieveProject",e]};function qr(e,t){return N.useQuery({...t,queryFn:({queryKey:[n,s]})=>x.sendByGetRoute(e,gt,{queryParams:{project_id:s}})})}const Mr=r.z.object({userId:r.z.number(),userUuid:r.z.string(),teamId:r.z.number(),userTeamRole:ht,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 Mr.parse(JSON.parse(n))}catch{return}}const Q=class Q extends CustomEvent{constructor(t){super(Q.eventName,{detail:{token:t,payload:D(t.accessToken)}})}};Pe(Q,"eventName","new-jwt-issued");let O=Q;function je(){const e=be(document.cookie,"accessToken"),t=be(document.cookie,"refreshToken");return!e||!t?Promise.resolve(void 0):Promise.resolve({accessToken:e,refreshToken:t})}function Pt(){return Promise.resolve(be(document.cookie,"csrf_token"))}function be(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 Ur(e,t){const{data:n,isFetching:s}=N.useQuery({queryKey:["csrf-token"],queryFn:Pt}),a=St(e,{queryKey:zt.teamKeyCsrf(t,n??""),enabled:s||n!==void 0}),i=b.useRef();return b.useEffect(()=>{a.data&&a.data.accessToken!==i.current&&(window.dispatchEvent(new O(a.data)),i.current=a.data.accessToken)},[a.data]),{...a,isFetching:a.isFetching||s}}function ze(){const[e,t]=b.useState();return b.useEffect(()=>{let n=!1;const s=a=>{t(a.detail.payload),n=!0};return je().then(a=>a&&D(a.accessToken)).then(a=>{n||t(a)}),window.addEventListener(O.eventName,s),()=>{window.removeEventListener(O.eventName,s)}},[]),e}function Br(e){const t=ze();return jt(e,{queryKey:yt.teamUserKey((t==null?void 0:t.teamId)??0,(t==null?void 0:t.userId)??0)})}function Dr(e,t){const n=ze();return Et(e,{queryKey:wt.projectUserKey(t,(n==null?void 0:n.userId)??0),enabled:n!==void 0})}async function Hr(){const e=await je();if(!e)return Promise.resolve(void 0);const t=D(e.accessToken);return t?{...e,payload:t}:Promise.resolve(void 0)}function Fr(){return e=>(t,n)=>e(t,{...n,headers:{...n.headers,"x-lokalise-plugin":"true"},credentials:"omit"})}function G(e){return{Authorization:`Bearer ${e}`}}function $r(e,t){return n=>async(s,a)=>{var l;const i=await t.getCachedJwtToken();if(i===void 0)return n(s,a);const c=await n(s,{...a,headers:{...a.headers,...G(i.accessToken)}});if(i&&(c.status===401||c.status===403)){const d=D(i.accessToken);if(!d)return c;const u=await x.sendByPayloadRoute(e,Y,{pathParams:{teamId:d.teamId},headers:G(i.refreshToken)});return await((l=t.onNewJwtTokenIssued)==null?void 0:l.call(t,u)),n(s,{...a,headers:{...a.headers,...G(u.accessToken)}})}return c}}const It={wretch:{lokaliseAuth(e){return this.middlewares([$r(this,e)])}}};function Gr(e,t){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 x.sendByPayloadRoute(e,Y,{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,...G(l.accessToken)}})}}const Kr={wretch:{lokaliseAuth(e={}){return this.addon(It).lokaliseAuth(Ve(e))},promoteClassicSession(e){const t=Ve(e);return this.middlewares([Gr(this,t)])}}};function Ve(e){return{...e,getCachedJwtToken:e.getCachedJwtToken??je,getCsrfToken:"getCsrfToken"in e?e.getCsrfToken:Pt,onNewJwtTokenIssued:t=>{var n;return window.dispatchEvent(new O(t)),((n=e.onNewJwtTokenIssued)==null?void 0:n.call(e,t))??Promise.resolve()}}}exports.Breadcrumbs=ur;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=pe;exports.ENTERPRISE_PLAN_IDS=dt;exports.ESSENTIAL_PLAN_IDS=ut;exports.FREE_PLAN_ID=he;exports.JWT_TOKEN_SCHEMA=Tt;exports.LokaliseAuthAddon=It;exports.LokaliseAuthBrowserAddon=Kr;exports.NavigationPanel=U;exports.NavigationTabs=vr;exports.PRO_PLAN_IDS=lt;exports.START_PLAN_IDS=ct;exports.Sidebar=S;exports.TEAM_USER_SCHEMA=pt;exports.TRIAL_PLAN_ID=it;exports.convertNewLineToBreakTag=On;exports.createProject=_t;exports.formatDate=Bn;exports.formatDateTz=Dn;exports.getAuthenticatedSessionDetailFromRequest=Hr;exports.getTeamUser=vt;exports.getTeamUsersQueryKey=yt;exports.getUserToken=Y;exports.getUserTokenKey=zt;exports.isEnterpriseOpenSourcePlan=Nn;exports.isEnterprisePlan=kn;exports.isEssentialPlan=xn;exports.isFreePlan=W;exports.isPaidPlan=Cn;exports.isProPlan=Rn;exports.isStartPlan=In;exports.isTrialPlan=ve;exports.listProjects=bt;exports.listProjectsKey=Ar;exports.makeUrlClickable=Un;exports.parseJwtTokenPayload=D;exports.publicApiHeadersMiddleware=Fr;exports.retrieveContributor=ft;exports.retrieveContributorKeys=wt;exports.retrieveProject=gt;exports.retrieveProjectQueryKey=Or;exports.useAuthenticatedProjectContributor=Dr;exports.useAuthenticatedSessionPayload=ze;exports.useAuthenticatedUser=Br;exports.useCreateProjectMutation=Nr;exports.useEffectOnce=Hn;exports.useGetPromotedClassicSessionJwtQuery=Ur;exports.useGetTeamUsersQuery=jt;exports.useGetUserTokenQuery=St;exports.useListProjectsQuery=Lr;exports.useRetrieveContributorQuery=Et;exports.useRetrieveProjectQuery=qr;
1
+ "use strict";var kt=Object.defineProperty;var Nt=(e,t,n)=>t in e?kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ie=(e,t,n)=>Nt(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),_=require("react"),f=require("@lokalise/louis"),et=require("date-fns"),Ct=require("date-fns-tz"),r=require("zod"),x=require("@lokalise/frontend-http-client"),tt=require("@lokalise/universal-ts-utils/api-contracts/apiContracts"),O=require("@tanstack/react-query"),J=require("@lokalise/universal-ts-utils/node");function At(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=At(_);var G=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 Z,Pe;function ge(){if(Pe)return Z;Pe=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return Z=e,Z}var X,xe;function Lt(){if(xe)return X;xe=1;var e=typeof G=="object"&&G&&G.Object===Object&&G;return X=e,X}var ee,Re;function rt(){if(Re)return ee;Re=1;var e=Lt(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return ee=n,ee}var te,ke;function Ot(){if(ke)return te;ke=1;var e=rt(),t=function(){return e.Date.now()};return te=t,te}var ne,Ne;function qt(){if(Ne)return ne;Ne=1;var e=/\s/;function t(n){for(var s=n.length;s--&&e.test(n.charAt(s)););return s}return ne=t,ne}var re,Ce;function Mt(){if(Ce)return re;Ce=1;var e=qt(),t=/^\s+/;function n(s){return s&&s.slice(0,e(s)+1).replace(t,"")}return re=n,re}var se,Ae;function st(){if(Ae)return se;Ae=1;var e=rt(),t=e.Symbol;return se=t,se}var ae,Le;function Ut(){if(Le)return ae;Le=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 ae=i,ae}var oe,Oe;function Bt(){if(Oe)return oe;Oe=1;var e=Object.prototype,t=e.toString;function n(s){return t.call(s)}return oe=n,oe}var ie,qe;function Dt(){if(qe)return ie;qe=1;var e=st(),t=Ut(),n=Bt(),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 ie=c,ie}var ce,Me;function Ht(){if(Me)return ce;Me=1;function e(t){return t!=null&&typeof t=="object"}return ce=e,ce}var ue,Ue;function $t(){if(Ue)return ue;Ue=1;var e=Dt(),t=Ht(),n="[object Symbol]";function s(a){return typeof a=="symbol"||t(a)&&e(a)==n}return ue=s,ue}var le,Be;function Gt(){if(Be)return le;Be=1;var e=Mt(),t=ge(),n=$t(),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 le=d,le}var de,De;function at(){if(De)return de;De=1;var e=ge(),t=Ot(),n=Gt(),s="Expected a function",a=Math.max,i=Math.min;function c(l,d,u){var m,h,z,E,g,y,S=0,w=!1,p=!1,I=!0;if(typeof l!="function")throw new TypeError(s);d=n(d)||0,e(u)&&(w=!!u.leading,p="maxWait"in u,z=p?a(n(u.maxWait)||0,d):z,I="trailing"in u?!!u.trailing:I);function v(b){var P=m,q=h;return m=h=void 0,S=b,E=l.apply(q,P),E}function T(b){return S=b,g=setTimeout($,d),w?v(b):E}function H(b){var P=b-y,q=b-S,Ee=d-P;return p?i(Ee,z-q):Ee}function Se(b){var P=b-y,q=b-S;return y===void 0||P>=d||P<0||p&&q>=z}function $(){var b=t();if(Se(b))return we(b);g=setTimeout($,H(b))}function we(b){return g=void 0,I&&m?v(b):(m=h=void 0,E)}function xt(){g!==void 0&&clearTimeout(g),S=0,m=y=h=g=void 0}function Rt(){return g===void 0?E:we(t())}function V(){var b=t(),P=Se(b);if(m=arguments,h=this,y=b,P){if(g===void 0)return T(y);if(p)return clearTimeout(g),g=setTimeout($,d),v(y)}return g===void 0&&(g=setTimeout($,d)),E}return V.cancel=xt,V.flush=Rt,V}return de=c,de}var Ft=at();const Qt=nt(Ft);var me,He;function Kt(){if(He)return me;He=1;var e=at(),t=ge(),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 me=s,me}var Jt=Kt();const Wt=nt(Jt),Yt=(e,t,n,s)=>{switch(t){case"debounce":return Qt(e,n,s);case"throttle":return Wt(e,n,s);default:return e}},Vt=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)},[])},Zt=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}},Xt=(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 en({skipOnMount:e=!1,refreshMode:t,refreshRate:n=1e3,refreshOptions:s,handleWidth:a=!0,handleHeight:i=!0,targetRef:c,observerOptions:l,onResize:d}={}){const u=_.useRef(e),m=Vt(d),[h,z]=_.useState({width:void 0,height:void 0}),{refProxy:E,refElement:g}=Zt(c),{box:y}=l||{},S=_.useCallback(p=>{if(!a&&!i)return;if(u.current){u.current=!1;return}const I=(v,T)=>a&&v.width!==T.width||i&&v.height!==T.height;p.forEach(v=>{const T=Xt(v,y);z(H=>I(H,T)?(m==null||m({width:T.width,height:T.height,entry:v}),T):H)})},[a,i,u,y]),w=_.useCallback(Yt(S,t,n,s),[S,t,n,s]);return _.useEffect(()=>{let p;return g?(p=new window.ResizeObserver(w),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,v,T;(I=p==null?void 0:p.disconnect)===null||I===void 0||I.call(p),(T=(v=w).cancel)===null||T===void 0||T.call(v)}},[w,g]),Object.assign({ref:E},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 N(){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 tn="_headerContainer_1cubo_1",nn="_navigationTabList_1cubo_8",rn="_navigationTab_1cubo_8",sn="_headerContent_1cubo_34",an="_staticEnabled_1cubo_50",A={headerContainer:tn,navigationTabList:nn,navigationTab:rn,headerContent:sn,staticEnabled:an},on=77,U=({sticky:e,children:t})=>{const{ref:n,height:s}=en({refreshMode:"debounce",refreshRate:0}),[a,i]=_.useState(!1),c=()=>a?!e:!0;_.useEffect(()=>{const d=()=>{i(window.scrollY>0)};return window.addEventListener("scroll",d),()=>window.removeEventListener("scroll",d)},[]);const l=`${s||on}px`;return o.jsx("div",{style:{minHeight:l},children:o.jsx("div",{children:o.jsxs("div",{ref:n,className:N(A.headerContent,{[A.staticEnabled]:c()}),children:[o.jsx(U.Header,{}),o.jsx(U.Tabs,{}),t]})})})};U.Header=({children:e})=>o.jsx("div",{className:A.headerContainer,children:e});U.Tabs=({children:e})=>o.jsx("div",{className:"flex justify-between gap-2 nowrap",children:e});const cn="_sidebarContainer_bmdti_1",un={sidebarContainer:cn},ln="_logoLink_1baxb_1",dn={logoLink:ln},mn=({src:e,href:t="/",ariaLabel:n="Home",alt:s="Lokalise"})=>o.jsx("a",{className:dn.logoLink,href:t,"aria-label":n,children:o.jsx("img",{src:e,alt:s})}),fn="_link_1weq1_1",bn="_active_1weq1_18",$e={link:fn,active:bn},_n=({label:e,to:t,icon:n})=>o.jsx(f.Tooltip,{placement:"right",tooltip:e,children:o.jsx(f.Link,{className:N($e.link,{[$e.active]:window.location.pathname.startsWith(t)}),href:t,children:o.jsx(n,{size:"25px"})})}),gn="_dropdownButton_hwh0c_1",hn="_dropdownButtonActive_hwh0c_18",Ge={dropdownButton:gn,dropdownButtonActive:hn},pn=({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:N(Ge.dropdownButton,{[Ge.dropdownButtonActive]:n}),children:o.jsx(t,{size:"25px"})})}),children:o.jsx(f.MenuList,{placement:"right-start",children:e})}),Tn="_iconContainer_nz34m_1",vn={iconContainer:Tn},it=({className:e=""})=>o.jsx("div",{"aria-label":"Upgrade Icon",className:N(vn.iconContainer,"flex-row","items-center","justify-center",e),children:o.jsx(f.CaretUpIcon,{})}),yn="_menuContainer_wbu3u_5",jn="_profileButton_wbu3u_16",zn="_profileImage_wbu3u_29",Sn="_profileImageHighlight_wbu3u_37",wn="_profileImageUpgradeIcon_wbu3u_41",En="_userIconWrapper_wbu3u_47",R={menuContainer:yn,profileButton:jn,profileImage:zn,profileImageHighlight:Sn,profileImageUpgradeIcon:wn,userIconWrapper:En},ct=_.createContext({}),B=()=>_.useContext(ct),In=({children:e})=>{const{currentTeam:t,otherTeams:n,showUpgradeCta:s,showBillingButton:a,allowTeamCreation:i,isProviderAlpha:c,canAccessTeamSettings:l,isEndOfTrialActive:d,isTeamSuspended:u,isFullyAuthenticated:m}=B();return o.jsx(f.Menu,{menuButton:()=>o.jsxs("button",{className:R.profileButton,"aria-label":"Profile menu",type:"button",children:[t!=null&&t.logoUrl?o.jsx("img",{src:t.logoUrl,className:N(R.profileImage,{[R.profileImageHighlight]:s}),alt:"Team Logo"}):o.jsx("div",{className:N(R.userIconWrapper,"flex-row","align-center","items-center",{[R.profileImageHighlight]:s}),children:o.jsx(f.UserIcon,{size:"25px"})}),s&&o.jsx(it,{className:R.profileImageUpgradeIcon})]}),children:o.jsx(f.MenuList,{placement:"right-end",className:R.menuContainer,children:e({allowTeamCreation:i,otherTeams:n,canAccessTeamSettings:l,isEndOfTrialActive:d,isTeamSuspended:u,showBillingButton:a,isProviderAlpha:c,isFullyAuthenticated:m})})})},he=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],pe=9998,W=e=>e===he,Te=e=>e===ut,Pn=e=>lt.includes(e),xn=e=>dt.includes(e),Rn=e=>mt.includes(e),kn=e=>ft.includes(e),Nn=e=>e>he&&e<pe,Cn=e=>e===pe,An=/\n/,Fe=(e,t,n)=>e.split(t).flatMap((s,a)=>a!==0?[_.cloneElement(n,{key:Math.random().toString(32).slice(0,10)}),s]:s),Ln=(e,t,n)=>typeof e=="string"?Fe(e,t,n):e.flatMap(s=>typeof s=="string"?Fe(s,t,n):s),On=e=>Ln(e,An,o.jsx("br",{})),qn=/(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi,Mn=e=>e.match(qn)??[],Qe=(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!=="")},Ke=e=>{const t=Mn(e);return t!=null&&t.length?t.reduce((n,s,a)=>typeof n=="string"?Qe(n,s,a):n.flatMap(i=>typeof i=="string"?Qe(i,s,a):i),e):e},Un=e=>typeof e=="string"?Ke(e):e.flatMap(t=>typeof t=="string"?Ke(t):t,e),Bn=(e,t="PP")=>et.format(e,t),Dn=(e,t,n="PP")=>et.format(Ct.toZonedTime(e,t),n),Hn=e=>{_.useEffect(e,[])},Je={biller:"biller",owner:"owner"},We=[Je.biller,Je.owner],$n=({children:e,config:t})=>{const{teams:n,currentTeamId:s,planId:a,isEndOfTrialActive:i,isFullyAuthenticated:c,userTeamRole:l}=t,d=n.find(w=>w.id===s),u=n.filter(w=>w.id!==s),m=We.includes(l),h=We.includes(l),z=W(a)||Te(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})},Gn=({config:e,children:t})=>o.jsx($n,{config:e,children:o.jsx(In,{children:t})}),Fn="_container_q5pot_1",Qn="_profileEmail_q5pot_5",Ye={container:Fn,profileEmail:Qn},Kn=({href:e,onClick:t,userEmail:n,hideBottomDivider:s})=>{const{isEndOfTrialActive:a,isTeamSuspended:i}=B();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 ${Ye.container}`,children:[o.jsx("span",{children:"Profile Settings"}),o.jsx("span",{className:Ye.profileEmail,children:n})]})}),!s&&o.jsx(f.MenuDivider,{})]})},Jn="_wrapper_15d85_1",Wn="_profileImage_15d85_14",Yn="_teamName_15d85_22",Vn="_planLabel_15d85_29",Zn="_membership_15d85_38",Xn="_defaultProfileImage_15d85_44",C={wrapper:Jn,profileImage:Wn,teamName:Yn,planLabel:Vn,membership:Zn,defaultProfileImage:Xn},bt=({team:e,onClick:t,hidePlanLabel:n})=>{const{currentTeam:s,planId:a}=B(),i=e||s;if(!i)return null;const c=W(a)?"Free":Te(a)?"Trial":void 0,l=t?f.MenuItem:"div";return o.jsxs(l,{className:`flex-row gap-2 flex-nowrap items-center ${C.wrapper}`,...t&&{onClick:()=>t(i)},children:[i.logoUrl?o.jsx("img",{className:C.profileImage,src:i.logoUrl,alt:"Team Logo"}):o.jsx("span",{className:`flex-row justify-center items-center ${C.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:C.teamName,children:i.name}),c&&!n&&o.jsx("span",{className:`flex-row justify-center items-center ${C.planLabel}`,children:c})]}),o.jsx("span",{className:C.membership,children:i.role})]})]})},er="_teamsContainer_1t68g_1",tr={teamsContainer:er},nr=({onSwitchTeam:e})=>{const{otherTeams:t}=B();return t.length===0?null:o.jsx("div",{className:`flex-col items-stretch ${tr.teamsContainer}`,children:t.map(n=>o.jsx(bt,{team:n,onClick:e,hidePlanLabel:!0},n.id))})},rr="_container_1u995_1",sr="_planCta_1u995_15",ar="_upgradeIconWrapper_1u995_19",fe={container:rr,planCta:sr,upgradeIconWrapper:ar},or=({upgradeOptionHref:e})=>{const{planId:t,trialDaysLeft:n,showUpgradeCta:s}=B();if(!s)return null;const c=W(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 ${fe.container}`,children:[o.jsx("span",{className:fe.planCta,children:c}),o.jsxs("div",{className:`flex-row items-center gap-1 ${fe.upgradeIconWrapper}`,children:[o.jsx(it,{}),o.jsx("span",{children:"See upgrade options"})]})]})},j=({children:e,...t})=>o.jsx("nav",{...t,className:un.sidebarContainer,children:e}),ir=({children:e})=>o.jsx("div",{children:e});j.Top=ir;const cr=({children:e})=>o.jsx("div",{children:e});j.Bottom=cr;j.Avatar=mn;j.IconLink=_n;j.Menu=pn;j.ProfileMenu=Gn;j.TeamSwitch=nr;j.TeamMenuItem=bt;j.UpgradeMenuItem=or;j.ProfileSettingsMenuItem=Kn;const ur="_breadcrumbsItem_1hm6a_1",lr="_breadcrumbs_1hm6a_1",Ve={breadcrumbsItem:ur,breadcrumbs:lr},dr=({items:e})=>o.jsx("nav",{"aria-label":"breadcrumb",className:Ve.breadcrumbs,children:e.map((t,n)=>o.jsxs(_.Fragment,{children:[o.jsx(f.Link,{className:Ve.breadcrumbsItem,href:t.link,rel:"noreferrer",children:t.name}),n<e.length-1&&o.jsx("span",{children:" — "})]},`${t.link}-${t.name}`))}),mr=({items:e})=>o.jsx(o.Fragment,{children:e.map((t,n)=>o.jsxs(_.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))}),fr="_badge_1pc1v_1",br="_tag_1pc1v_15",_r="_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21",gr="_disabled_1pc1v_57",hr="_projectNavigationItem_1pc1v_61",pr="_projectNavigationItemDisabled_1pc1v_67",k={badge:fr,tag:br,withNavLinkStyle:_r,disabled:gr,projectNavigationItem:hr,projectNavigationItemDisabled:pr},Ze=({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:k.badge,"aria-label":`${t} items requiring attention`,children:t>9?"9+":t})]}),!!n&&o.jsx(f.Tag,{className:k.tag,children:n})]}),be=_.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?k.projectNavigationItemDisabled:k.projectNavigationItem,children:a||n||!t?o.jsx("button",{type:"button",ref:c,className:N(k.withNavLinkStyle,{[k.disabled]:n}),disabled:n,onClick:a,children:o.jsx(Ze,{label:e,badge:s,novel:i})}):o.jsx("a",{href:t,className:k.withNavLinkStyle,children:o.jsx(Ze,{label:e,badge:s,novel:i})})})}));be.displayName="NavigationTabsItem";const Tr=e=>(e==null?void 0:e.some(t=>t.some(n=>n.visible)))??!1,vr=e=>e.visible&&(!e.dropdown||Tr(e.dropdown)),yr=({navigation:e,activeItem:t})=>o.jsx("nav",{"aria-label":"Project",children:o.jsx("ul",{className:A.navigationTabList,"aria-orientation":"horizontal",children:e.filter(vr).map(n=>{var s,a,i;return n.dropdown?o.jsx("li",{className:A.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(be,{label:n.label,disabled:n.disabled,active:c}),children:o.jsx(f.MenuList,{children:o.jsx(mr,{items:n.dropdown})})})},n.key):o.jsx("li",{className:A.navigationTab,"data-testid":n.key,"aria-selected":(a=n.isActive)==null?void 0:a.call(n,t),children:o.jsx(be,{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)})})}),jr=r.z.object({accessToken:r.z.string(),refreshToken:r.z.string()}),zr=r.z.union([r.z.object({Authorization:r.z.string().startsWith("Bearer ")}),r.z.object({"x-csrf-token":r.z.string()})]),Y=tt.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:zr,requestBodySchema:r.z.undefined(),successResponseBodySchema:jr}),_t={teamKeyCsrf:(e,t)=>["getUserToken","x-csrf-token",t,e],teamKeyJwt:(e,t)=>["getUserToken","Authorization",`Bearer ${t}`,e]},gt=(e,t)=>O.useQuery({...t,queryFn:({queryKey:[n,s,a,i]})=>x.sendByPayloadRoute(e,Y,{pathParams:{teamId:i},headers:s==="x-csrf-token"?{"x-csrf-token":a}:{Authorization:a}})}),ht=r.z.union([r.z.literal("owner"),r.z.literal("admin"),r.z.literal("biller"),r.z.literal("member")]),Sr=r.z.object({userId:r.z.number(),userUuid:r.z.string(),teamId:r.z.number(),userTeamRole:ht,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 Sr.parse(JSON.parse(n))}catch{return}}const K=class K extends CustomEvent{constructor(t){super(K.eventName,{detail:{token:t,payload:D(t.accessToken)}})}};Ie(K,"eventName","new-jwt-issued");let L=K;function ve(){const e=_e(document.cookie,"accessToken"),t=_e(document.cookie,"refreshToken");if(!(!e||!t))return{accessToken:e,refreshToken:t}}function pt(){return _e(document.cookie,"csrf_token")}function _e(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 wr(e,t){const n=pt(),s=gt(e,{queryKey:_t.teamKeyCsrf(t,n??""),enabled:n!==void 0}),a=_.useRef();return _.useEffect(()=>{s.data&&s.data.accessToken!==a.current&&(window.dispatchEvent(new L(s.data)),a.current=s.data.accessToken)},[s.data]),s}function ye(){const[e,t]=_.useState();return _.useEffect(()=>{const n=a=>{t(a.detail.payload)},s=ve();return t(s&&D(s.accessToken)),window.addEventListener(L.eventName,n),()=>{window.removeEventListener(L.eventName,n)}},[]),e}const Er=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:ht}),Ir=r.z.object({team_id:r.z.number(),team_user:Er}),Tt=J.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:Ir}),vt={teamUserKey:(e,t)=>["GetTeamUsers",e,t]},yt=(e,t)=>O.useQuery({...t,queryFn:({queryKey:[n,s,a]})=>x.sendByGetRoute(e,Tt,{pathParams:{teamId:s,userId:a}})});function Pr(e){const t=ye();return yt(e,{queryKey:vt.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 xr=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)])}),Rr=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(xr),is_admin:r.z.boolean(),is_reviewer:r.z.boolean()}),kr=r.z.object({project_id:r.z.string(),contributors:r.z.array(Rr)}),jt=J.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:kr}),zt={projectUserKey:(e,t)=>["RetrieveContributor",e,t]},St=(e,t)=>O.useQuery({...t,queryFn:({queryKey:[n,s,a]})=>x.sendByGetRoute(e,jt,{pathParams:{projectId:s,contributorId:a}})});function Nr(e,t){const n=ye();return St(e,{queryKey:zt.projectUserKey(t,(n==null?void 0:n.userId)??0),enabled:n!==void 0})}function Cr(){const e=ve();if(!e)return;const t=D(e.accessToken);if(t)return{...e,payload:t}}function Ar(){return e=>(t,n)=>e(t,{...n,headers:{...n.headers,"x-lokalise-plugin":"true"},credentials:"omit"})}function F(e){return{Authorization:`Bearer ${e}`}}function Lr(e,t){return n=>async(s,a)=>{var l;const i=await t.getCachedJwtToken();if(i===void 0)return n(s,a);const c=await n(s,{...a,headers:{...a.headers,...F(i.accessToken)}});if(i&&(c.status===401||c.status===403)){const d=D(i.accessToken);if(!d)return c;const u=await x.sendByPayloadRoute(e,Y,{pathParams:{teamId:d.teamId},headers:F(i.refreshToken)});return await((l=t.onNewJwtTokenIssued)==null?void 0:l.call(t,u)),n(s,{...a,headers:{...a.headers,...F(u.accessToken)}})}return c}}const wt={wretch:{lokaliseAuth(e){return this.middlewares([Lr(this,e)])}}};function Or(e,t){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 x.sendByPayloadRoute(e,Y,{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,...F(l.accessToken)}})}}const qr={wretch:{lokaliseAuth(e={}){return this.addon(wt).lokaliseAuth(Xe(e))},promoteClassicSession(e){const t=Xe(e);return this.middlewares([Or(this,t)])}}};function Xe(e){return{...e,getCachedJwtToken:e.getCachedJwtToken??(async()=>ve()),getCsrfToken:"getCsrfToken"in e?e.getCsrfToken:async()=>pt(),onNewJwtTokenIssued:t=>{var n;return window.dispatchEvent(new L(t)),((n=e.onNewJwtTokenIssued)==null?void 0:n.call(e,t))??Promise.resolve()}}}const Mr=r.z.object({lang_iso:r.z.string(),custom_iso:r.z.string().optional()}),Ur=r.z.object({language_id:r.z.number(),language_iso:r.z.string(),progress:r.z.number(),words_to_do:r.z.number()}),je=r.z.union([r.z.literal("localization_files"),r.z.literal("paged_documents"),r.z.literal("marketing")]),Br=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()}),Dr=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()}),Hr=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:Dr,languages:r.z.array(Ur)}),Q=r.z.object({project_id:r.z.string(),uuid:r.z.string().uuid(),project_type:je,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:Br,statistics:Hr}),$r=r.z.object({name:r.z.string(),team_id:r.z.string(),base_lang_iso:r.z.string(),languages:r.z.array(Mr),project_type:je,is_segmentation_enabled:r.z.boolean()}),Gr=r.z.object({project_type:je.optional(),filter_team_id:r.z.number().optional(),filter_names:r.z.string().optional(),include_statistics:r.z.boolean().optional(),include_settings:r.z.boolean().optional(),limit:r.z.number().optional(),page:r.z.number().optional()}),Fr=r.z.array(r.z.union([Q.omit({statistics:!0,settings:!0}),Q.pick({settings:!0,statistics:!0}).partial()])),Qr=r.z.object({project_id:r.z.string()}),ze=()=>"/projects",Et=tt.buildPayloadRoute({description:"Create a new project",method:"post",pathResolver:ze,requestBodySchema:$r,successResponseBodySchema:Q}),It=J.buildGetRoute({description:"List all projects",pathResolver:ze,requestQuerySchema:Gr,successResponseBodySchema:Fr}),Pt=J.buildGetRoute({description:"Retrieve a project",pathResolver:ze,requestQuerySchema:Qr,successResponseBodySchema:Q});function Kr(e,t={}){return O.useMutation({...t,mutationFn:n=>x.sendByPayloadRoute(e,Et,{body:n})})}const Jr={paramsKey:e=>["listProjects",e]};function Wr(e,t){return O.useQuery({...t,queryFn:({queryKey:[n,s]})=>x.sendByGetRoute(e,It,{queryParams:s})})}const Yr={projectIdKey:e=>["retrieveProject",e]};function Vr(e,t){return O.useQuery({...t,queryFn:({queryKey:[n,s]})=>x.sendByGetRoute(e,Pt,{queryParams:{project_id:s}})})}exports.Breadcrumbs=dr;exports.ENTERPRISE_OPENSOURCE_PLAN_ID=pe;exports.ENTERPRISE_PLAN_IDS=ft;exports.ESSENTIAL_PLAN_IDS=dt;exports.FREE_PLAN_ID=he;exports.LokaliseAuthAddon=wt;exports.LokaliseAuthBrowserAddon=qr;exports.NavigationPanel=U;exports.NavigationTabs=yr;exports.PRO_PLAN_IDS=mt;exports.START_PLAN_IDS=lt;exports.Sidebar=j;exports.TRIAL_PLAN_ID=ut;exports.convertNewLineToBreakTag=On;exports.createProject=Et;exports.formatDate=Bn;exports.formatDateTz=Dn;exports.getAuthenticatedSessionDetailFromRequest=Cr;exports.getTeamUser=Tt;exports.getTeamUsersQueryKey=vt;exports.getUserToken=Y;exports.getUserTokenKey=_t;exports.isEnterpriseOpenSourcePlan=Cn;exports.isEnterprisePlan=kn;exports.isEssentialPlan=xn;exports.isFreePlan=W;exports.isPaidPlan=Nn;exports.isProPlan=Rn;exports.isStartPlan=Pn;exports.isTrialPlan=Te;exports.listProjects=It;exports.listProjectsKey=Jr;exports.makeUrlClickable=Un;exports.parseJwtTokenPayload=D;exports.publicApiHeadersMiddleware=Ar;exports.retrieveContributor=jt;exports.retrieveContributorKeys=zt;exports.retrieveProject=Pt;exports.retrieveProjectQueryKey=Yr;exports.useAuthenticatedProjectContributor=Nr;exports.useAuthenticatedSessionPayload=ye;exports.useAuthenticatedUser=Pr;exports.useCreateProjectMutation=Kr;exports.useEffectOnce=Hn;exports.useGetPromotedClassicSessionJwtQuery=wr;exports.useGetTeamUsersQuery=yt;exports.useGetUserTokenQuery=gt;exports.useListProjectsQuery=Wr;exports.useRetrieveContributorQuery=St;exports.useRetrieveProjectQuery=Vr;