@lokalise/harmony 1.4.0-exp-sidebarComponent.6 → 1.4.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 (40) hide show
  1. package/dist/harmony.cjs +1 -1
  2. package/dist/harmony.css +1 -1
  3. package/dist/harmony.mjs +362 -919
  4. package/dist/types/src/node.d.ts +9 -2
  5. package/package.json +4 -6
  6. package/dist/types/fixtures/sidebar/profileMenu.d.ts +0 -2
  7. package/dist/types/fixtures/sidebar/tasks.d.ts +0 -2
  8. package/dist/types/src/components/Sidebar/Sidebar.d.ts +0 -45
  9. package/dist/types/src/components/Sidebar/Sidebar.stories.d.ts +0 -7
  10. package/dist/types/src/components/Sidebar/UpgradeIcon/UpgradeIcon.d.ts +0 -5
  11. package/dist/types/src/components/Sidebar/Widgets/Avatar/Avatar.d.ts +0 -8
  12. package/dist/types/src/components/Sidebar/Widgets/IconLink/IconLink.d.ts +0 -8
  13. package/dist/types/src/components/Sidebar/Widgets/Menu/Menu.d.ts +0 -2
  14. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.d.ts +0 -8
  15. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContent.d.ts +0 -6
  16. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContext.d.ts +0 -3
  17. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuProvider.d.ts +0 -7
  18. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.d.ts +0 -7
  19. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.d.ts +0 -8
  20. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.d.ts +0 -6
  21. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.d.ts +0 -5
  22. package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/types.d.ts +0 -22
  23. package/dist/types/src/components/Sidebar/Widgets/Tasks/TaskLanguage/TaskLanguage.d.ts +0 -6
  24. package/dist/types/src/components/Sidebar/Widgets/Tasks/TaskLanguageCompleted/TaskLanguageCompleted.d.ts +0 -7
  25. package/dist/types/src/components/Sidebar/Widgets/Tasks/TaskOverview/TaskOverview.d.ts +0 -5
  26. package/dist/types/src/components/Sidebar/Widgets/Tasks/Tasks.d.ts +0 -3
  27. package/dist/types/src/components/Sidebar/Widgets/Tasks/TasksContext.d.ts +0 -2
  28. package/dist/types/src/components/Sidebar/Widgets/Tasks/TasksPopover/TasksPopover.d.ts +0 -1
  29. package/dist/types/src/components/Sidebar/Widgets/Tasks/TasksProvider.d.ts +0 -10
  30. package/dist/types/src/components/Sidebar/Widgets/Tasks/index.d.ts +0 -2
  31. package/dist/types/src/components/Sidebar/Widgets/Tasks/types.d.ts +0 -85
  32. package/dist/types/src/components/Sidebar/Widgets/Tasks/utils/content.d.ts +0 -16
  33. package/dist/types/src/components/Sidebar/Widgets/Tasks/utils/taskEvents.d.ts +0 -23
  34. package/dist/types/src/components/Sidebar/Widgets/index.d.ts +0 -5
  35. package/dist/types/src/components/Sidebar/types.d.ts +0 -14
  36. package/dist/types/src/components/Sidebar/utils/index.d.ts +0 -4
  37. package/dist/types/src/utils/hooks/useEffectOnce.d.ts +0 -5
  38. package/dist/types/src/utils/node.d.ts +0 -6
  39. package/dist/types/src/utils/typeUtils.d.ts +0 -3
  40. package/dist/types/vite.config.d.ts +0 -2
package/dist/harmony.mjs CHANGED
@@ -1,1032 +1,475 @@
1
- import { jsx as o, jsxs as g, Fragment as ht } from "react/jsx-runtime";
2
- import * as M from "react";
3
- import { useRef as pt, useState as E, useCallback as ue, useEffect as me, cloneElement as gt, createContext as Ye, useContext as Ze } from "react";
4
- import { Tooltip as q, Link as j, Menu as he, MenuList as pe, HelpCenterIcon as _t, ConfirmModal as vt, Alert as bt, Tag as we, Button as Ce, MenuItem as W, Spacer as Tt, Loading as yt, Popover as wt, DeprecatedTaskIcon as Ct, CaretUpIcon as kt, UserIcon as Xe } from "@lokalise/louis";
5
- import { format as Qe, parseISO as xt } from "date-fns";
6
- import { toZonedTime as St } from "date-fns-tz";
7
- var z = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
8
- function Je(e) {
1
+ import { jsx as s, jsxs as P, Fragment as De } from "react/jsx-runtime";
2
+ import * as I from "react";
3
+ import { useRef as Ce, useState as Se, useCallback as re, useEffect as Ne, Fragment as Ee, forwardRef as ze, cloneElement as Me } from "react";
4
+ import { Link as Ge, MenuDivider as Fe, MenuItem as Be, Tag as $e, Tooltip as He, Menu as Ue, MenuList as We } from "@lokalise/louis";
5
+ import { format as je } from "date-fns";
6
+ import { toZonedTime as Ze } from "date-fns-tz";
7
+ var O = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
8
+ function we(e) {
9
9
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
10
10
  }
11
- var V, ke;
12
- function ge() {
13
- if (ke) return V;
14
- ke = 1;
15
- function e(t) {
16
- var r = typeof t;
17
- return t != null && (r == "object" || r == "function");
11
+ var A, ne;
12
+ function J() {
13
+ if (ne) return A;
14
+ ne = 1;
15
+ function e(r) {
16
+ var n = typeof r;
17
+ return r != null && (n == "object" || n == "function");
18
18
  }
19
- return V = e, V;
19
+ return A = e, A;
20
20
  }
21
- var Y, xe;
22
- function It() {
23
- if (xe) return Y;
24
- xe = 1;
25
- var e = typeof z == "object" && z && z.Object === Object && z;
26
- return Y = e, Y;
21
+ var D, te;
22
+ function Ve() {
23
+ if (te) return D;
24
+ te = 1;
25
+ var e = typeof O == "object" && O && O.Object === Object && O;
26
+ return D = e, D;
27
27
  }
28
- var Z, Se;
29
- function Ke() {
30
- if (Se) return Z;
31
- Se = 1;
32
- var e = It(), t = typeof self == "object" && self && self.Object === Object && self, r = e || t || Function("return this")();
33
- return Z = r, Z;
28
+ var C, ie;
29
+ function Re() {
30
+ if (ie) return C;
31
+ ie = 1;
32
+ var e = Ve(), r = typeof self == "object" && self && self.Object === Object && self, n = e || r || Function("return this")();
33
+ return C = n, C;
34
34
  }
35
- var X, Ie;
36
- function Et() {
37
- if (Ie) return X;
38
- Ie = 1;
39
- var e = Ke(), t = function() {
35
+ var z, ae;
36
+ function Xe() {
37
+ if (ae) return z;
38
+ ae = 1;
39
+ var e = Re(), r = function() {
40
40
  return e.Date.now();
41
41
  };
42
- return X = t, X;
42
+ return z = r, z;
43
43
  }
44
- var Q, Ee;
45
- function Nt() {
46
- if (Ee) return Q;
47
- Ee = 1;
44
+ var M, oe;
45
+ function Ye() {
46
+ if (oe) return M;
47
+ oe = 1;
48
48
  var e = /\s/;
49
- function t(r) {
50
- for (var n = r.length; n-- && e.test(r.charAt(n)); )
49
+ function r(n) {
50
+ for (var t = n.length; t-- && e.test(n.charAt(t)); )
51
51
  ;
52
- return n;
52
+ return t;
53
53
  }
54
- return Q = t, Q;
54
+ return M = r, M;
55
55
  }
56
- var J, Ne;
57
- function Pt() {
58
- if (Ne) return J;
59
- Ne = 1;
60
- var e = Nt(), t = /^\s+/;
61
- function r(n) {
62
- return n && n.slice(0, e(n) + 1).replace(t, "");
56
+ var G, se;
57
+ function Je() {
58
+ if (se) return G;
59
+ se = 1;
60
+ var e = Ye(), r = /^\s+/;
61
+ function n(t) {
62
+ return t && t.slice(0, e(t) + 1).replace(r, "");
63
63
  }
64
- return J = r, J;
64
+ return G = n, G;
65
65
  }
66
- var K, Pe;
67
- function et() {
68
- if (Pe) return K;
69
- Pe = 1;
70
- var e = Ke(), t = e.Symbol;
71
- return K = t, K;
66
+ var F, ce;
67
+ function Ie() {
68
+ if (ce) return F;
69
+ ce = 1;
70
+ var e = Re(), r = e.Symbol;
71
+ return F = r, F;
72
72
  }
73
- var ee, Le;
74
- function Lt() {
75
- if (Le) return ee;
76
- Le = 1;
77
- var e = et(), t = Object.prototype, r = t.hasOwnProperty, n = t.toString, i = e ? e.toStringTag : void 0;
78
- function s(a) {
79
- var l = r.call(a, i), d = a[i];
73
+ var B, ue;
74
+ function Ke() {
75
+ if (ue) return B;
76
+ ue = 1;
77
+ var e = Ie(), r = Object.prototype, n = r.hasOwnProperty, t = r.toString, i = e ? e.toStringTag : void 0;
78
+ function a(c) {
79
+ var u = n.call(c, i), l = c[i];
80
80
  try {
81
- a[i] = void 0;
82
- var c = !0;
81
+ c[i] = void 0;
82
+ var o = !0;
83
83
  } catch {
84
84
  }
85
- var u = n.call(a);
86
- return c && (l ? a[i] = d : delete a[i]), u;
85
+ var d = t.call(c);
86
+ return o && (u ? c[i] = l : delete c[i]), d;
87
87
  }
88
- return ee = s, ee;
88
+ return B = a, B;
89
89
  }
90
- var te, Re;
91
- function Rt() {
92
- if (Re) return te;
93
- Re = 1;
94
- var e = Object.prototype, t = e.toString;
95
- function r(n) {
96
- return t.call(n);
90
+ var $, le;
91
+ function Qe() {
92
+ if (le) return $;
93
+ le = 1;
94
+ var e = Object.prototype, r = e.toString;
95
+ function n(t) {
96
+ return r.call(t);
97
97
  }
98
- return te = r, te;
98
+ return $ = n, $;
99
99
  }
100
- var ne, je;
101
- function jt() {
102
- if (je) return ne;
103
- je = 1;
104
- var e = et(), t = Lt(), r = Rt(), n = "[object Null]", i = "[object Undefined]", s = e ? e.toStringTag : void 0;
105
- function a(l) {
106
- return l == null ? l === void 0 ? i : n : s && s in Object(l) ? t(l) : r(l);
100
+ var H, de;
101
+ function er() {
102
+ if (de) return H;
103
+ de = 1;
104
+ var e = Ie(), r = Ke(), n = Qe(), t = "[object Null]", i = "[object Undefined]", a = e ? e.toStringTag : void 0;
105
+ function c(u) {
106
+ return u == null ? u === void 0 ? i : t : a && a in Object(u) ? r(u) : n(u);
107
107
  }
108
- return ne = a, ne;
108
+ return H = c, H;
109
109
  }
110
- var re, Oe;
111
- function Ot() {
112
- if (Oe) return re;
113
- Oe = 1;
114
- function e(t) {
115
- return t != null && typeof t == "object";
110
+ var U, fe;
111
+ function rr() {
112
+ if (fe) return U;
113
+ fe = 1;
114
+ function e(r) {
115
+ return r != null && typeof r == "object";
116
116
  }
117
- return re = e, re;
117
+ return U = e, U;
118
118
  }
119
- var oe, Ae;
120
- function At() {
121
- if (Ae) return oe;
122
- Ae = 1;
123
- var e = jt(), t = Ot(), r = "[object Symbol]";
124
- function n(i) {
125
- return typeof i == "symbol" || t(i) && e(i) == r;
119
+ var W, be;
120
+ function nr() {
121
+ if (be) return W;
122
+ be = 1;
123
+ var e = er(), r = rr(), n = "[object Symbol]";
124
+ function t(i) {
125
+ return typeof i == "symbol" || r(i) && e(i) == n;
126
126
  }
127
- return oe = n, oe;
127
+ return W = t, W;
128
128
  }
129
- var ie, Me;
130
- function Mt() {
131
- if (Me) return ie;
132
- Me = 1;
133
- var e = Pt(), t = ge(), r = At(), n = NaN, i = /^[-+]0x[0-9a-f]+$/i, s = /^0b[01]+$/i, a = /^0o[0-7]+$/i, l = parseInt;
134
- function d(c) {
135
- if (typeof c == "number")
136
- return c;
137
- if (r(c))
138
- return n;
139
- if (t(c)) {
140
- var u = typeof c.valueOf == "function" ? c.valueOf() : c;
141
- c = t(u) ? u + "" : u;
129
+ var Z, he;
130
+ function tr() {
131
+ if (he) return Z;
132
+ he = 1;
133
+ var e = Je(), r = J(), n = nr(), t = NaN, i = /^[-+]0x[0-9a-f]+$/i, a = /^0b[01]+$/i, c = /^0o[0-7]+$/i, u = parseInt;
134
+ function l(o) {
135
+ if (typeof o == "number")
136
+ return o;
137
+ if (n(o))
138
+ return t;
139
+ if (r(o)) {
140
+ var d = typeof o.valueOf == "function" ? o.valueOf() : o;
141
+ o = r(d) ? d + "" : d;
142
142
  }
143
- if (typeof c != "string")
144
- return c === 0 ? c : +c;
145
- c = e(c);
146
- var h = s.test(c);
147
- return h || a.test(c) ? l(c.slice(2), h ? 2 : 8) : i.test(c) ? n : +c;
143
+ if (typeof o != "string")
144
+ return o === 0 ? o : +o;
145
+ o = e(o);
146
+ var v = a.test(o);
147
+ return v || c.test(o) ? u(o.slice(2), v ? 2 : 8) : i.test(o) ? t : +o;
148
148
  }
149
- return ie = d, ie;
149
+ return Z = l, Z;
150
150
  }
151
- var se, qe;
152
- function tt() {
153
- if (qe) return se;
154
- qe = 1;
155
- var e = ge(), t = Et(), r = Mt(), n = "Expected a function", i = Math.max, s = Math.min;
156
- function a(l, d, c) {
157
- var u, h, _, v, f, w, b = 0, p = !1, m = !1, T = !0;
158
- if (typeof l != "function")
159
- throw new TypeError(n);
160
- d = r(d) || 0, e(c) && (p = !!c.leading, m = "maxWait" in c, _ = m ? i(r(c.maxWait) || 0, d) : _, T = "trailing" in c ? !!c.trailing : T);
161
- function k(y) {
162
- var I = u, O = h;
163
- return u = h = void 0, b = y, v = l.apply(O, I), v;
151
+ var V, ve;
152
+ function Pe() {
153
+ if (ve) return V;
154
+ ve = 1;
155
+ var e = J(), r = Xe(), n = tr(), t = "Expected a function", i = Math.max, a = Math.min;
156
+ function c(u, l, o) {
157
+ var d, v, N, p, b, _, y = 0, j = !1, h = !1, T = !0;
158
+ if (typeof u != "function")
159
+ throw new TypeError(t);
160
+ l = n(l) || 0, e(o) && (j = !!o.leading, h = "maxWait" in o, N = h ? i(n(o.maxWait) || 0, l) : N, T = "trailing" in o ? !!o.trailing : T);
161
+ function m(f) {
162
+ var S = d, R = v;
163
+ return d = v = void 0, y = f, p = u.apply(R, S), p;
164
164
  }
165
- function C(y) {
166
- return b = y, f = setTimeout(U, d), p ? k(y) : v;
165
+ function g(f) {
166
+ return y = f, b = setTimeout(L, l), j ? m(f) : p;
167
167
  }
168
- function $(y) {
169
- var I = y - w, O = y - b, ye = d - I;
170
- return m ? s(ye, _ - O) : ye;
168
+ function k(f) {
169
+ var S = f - _, R = f - y, ee = l - S;
170
+ return h ? a(ee, N - R) : ee;
171
171
  }
172
- function be(y) {
173
- var I = y - w, O = y - b;
174
- return w === void 0 || I >= d || I < 0 || m && O >= _;
172
+ function K(f) {
173
+ var S = f - _, R = f - y;
174
+ return _ === void 0 || S >= l || S < 0 || h && R >= N;
175
175
  }
176
- function U() {
177
- var y = t();
178
- if (be(y))
179
- return Te(y);
180
- f = setTimeout(U, $(y));
176
+ function L() {
177
+ var f = r();
178
+ if (K(f))
179
+ return Q(f);
180
+ b = setTimeout(L, k(f));
181
181
  }
182
- function Te(y) {
183
- return f = void 0, T && u ? k(y) : (u = h = void 0, v);
182
+ function Q(f) {
183
+ return b = void 0, T && d ? m(f) : (d = v = void 0, p);
184
184
  }
185
- function ft() {
186
- f !== void 0 && clearTimeout(f), b = 0, u = w = h = f = void 0;
185
+ function xe() {
186
+ b !== void 0 && clearTimeout(b), y = 0, d = _ = v = b = void 0;
187
187
  }
188
- function mt() {
189
- return f === void 0 ? v : Te(t());
188
+ function Ae() {
189
+ return b === void 0 ? p : Q(r());
190
190
  }
191
- function G() {
192
- var y = t(), I = be(y);
193
- if (u = arguments, h = this, w = y, I) {
194
- if (f === void 0)
195
- return C(w);
196
- if (m)
197
- return clearTimeout(f), f = setTimeout(U, d), k(w);
191
+ function x() {
192
+ var f = r(), S = K(f);
193
+ if (d = arguments, v = this, _ = f, S) {
194
+ if (b === void 0)
195
+ return g(_);
196
+ if (h)
197
+ return clearTimeout(b), b = setTimeout(L, l), m(_);
198
198
  }
199
- return f === void 0 && (f = setTimeout(U, d)), v;
199
+ return b === void 0 && (b = setTimeout(L, l)), p;
200
200
  }
201
- return G.cancel = ft, G.flush = mt, G;
201
+ return x.cancel = xe, x.flush = Ae, x;
202
202
  }
203
- return se = a, se;
203
+ return V = c, V;
204
204
  }
205
- var qt = tt();
206
- const Dt = /* @__PURE__ */ Je(qt);
207
- var ae, De;
208
- function Bt() {
209
- if (De) return ae;
210
- De = 1;
211
- var e = tt(), t = ge(), r = "Expected a function";
212
- function n(i, s, a) {
213
- var l = !0, d = !0;
205
+ var ir = Pe();
206
+ const ar = /* @__PURE__ */ we(ir);
207
+ var X, ge;
208
+ function or() {
209
+ if (ge) return X;
210
+ ge = 1;
211
+ var e = Pe(), r = J(), n = "Expected a function";
212
+ function t(i, a, c) {
213
+ var u = !0, l = !0;
214
214
  if (typeof i != "function")
215
- throw new TypeError(r);
216
- return t(a) && (l = "leading" in a ? !!a.leading : l, d = "trailing" in a ? !!a.trailing : d), e(i, s, {
217
- leading: l,
218
- maxWait: s,
219
- trailing: d
215
+ throw new TypeError(n);
216
+ return r(c) && (u = "leading" in c ? !!c.leading : u, l = "trailing" in c ? !!c.trailing : l), e(i, a, {
217
+ leading: u,
218
+ maxWait: a,
219
+ trailing: l
220
220
  });
221
221
  }
222
- return ae = n, ae;
222
+ return X = t, X;
223
223
  }
224
- var $t = Bt();
225
- const Ut = /* @__PURE__ */ Je($t), zt = (e, t, r, n) => {
226
- switch (t) {
224
+ var sr = or();
225
+ const cr = /* @__PURE__ */ we(sr), ur = (e, r, n, t) => {
226
+ switch (r) {
227
227
  case "debounce":
228
- return Dt(e, r, n);
228
+ return ar(e, n, t);
229
229
  case "throttle":
230
- return Ut(e, r, n);
230
+ return cr(e, n, t);
231
231
  default:
232
232
  return e;
233
233
  }
234
- }, Ft = (
234
+ }, lr = (
235
235
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
236
236
  (e) => {
237
- const t = M.useRef(e);
238
- return M.useEffect(() => {
239
- t.current = e;
240
- }), M.useMemo(() => (...r) => {
241
- var n;
242
- return (n = t.current) === null || n === void 0 ? void 0 : n.call(t, ...r);
237
+ const r = I.useRef(e);
238
+ return I.useEffect(() => {
239
+ r.current = e;
240
+ }), I.useMemo(() => (...n) => {
241
+ var t;
242
+ return (t = r.current) === null || t === void 0 ? void 0 : t.call(r, ...n);
243
243
  }, []);
244
244
  }
245
- ), Ht = (
245
+ ), dr = (
246
246
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
247
247
  (e) => {
248
- const [t, r] = M.useState((e == null ? void 0 : e.current) || null);
248
+ const [r, n] = I.useState((e == null ? void 0 : e.current) || null);
249
249
  return e && setTimeout(() => {
250
- e.current !== t && r(e.current);
251
- }, 0), { refProxy: M.useMemo(() => new Proxy((i) => {
252
- i !== t && r(i);
250
+ e.current !== r && n(e.current);
251
+ }, 0), { refProxy: I.useMemo(() => new Proxy((i) => {
252
+ i !== r && n(i);
253
253
  }, {
254
- get(i, s) {
255
- return s === "current" ? t : i[s];
254
+ get(i, a) {
255
+ return a === "current" ? r : i[a];
256
256
  },
257
- set(i, s, a) {
258
- return s === "current" ? r(a) : i[s] = a, !0;
257
+ set(i, a, c) {
258
+ return a === "current" ? n(c) : i[a] = c, !0;
259
259
  }
260
- }), [t]), refElement: t, setRefElement: r };
260
+ }), [r]), refElement: r, setRefElement: n };
261
261
  }
262
- ), Wt = (e, t) => t === "border-box" ? {
262
+ ), fr = (e, r) => r === "border-box" ? {
263
263
  width: e.borderBoxSize[0].inlineSize,
264
264
  height: e.borderBoxSize[0].blockSize
265
- } : t === "content-box" ? {
265
+ } : r === "content-box" ? {
266
266
  width: e.contentBoxSize[0].inlineSize,
267
267
  height: e.contentBoxSize[0].blockSize
268
268
  } : {
269
269
  width: e.contentRect.width,
270
270
  height: e.contentRect.height
271
271
  };
272
- function Gt({ skipOnMount: e = !1, refreshMode: t, refreshRate: r = 1e3, refreshOptions: n, handleWidth: i = !0, handleHeight: s = !0, targetRef: a, observerOptions: l, onResize: d } = {}) {
273
- const c = pt(e), u = Ft(d), [h, _] = E({
272
+ function br({ skipOnMount: e = !1, refreshMode: r, refreshRate: n = 1e3, refreshOptions: t, handleWidth: i = !0, handleHeight: a = !0, targetRef: c, observerOptions: u, onResize: l } = {}) {
273
+ const o = Ce(e), d = lr(l), [v, N] = Se({
274
274
  width: void 0,
275
275
  height: void 0
276
- }), { refProxy: v, refElement: f } = Ht(a), { box: w } = l || {}, b = ue((m) => {
277
- if (!i && !s)
276
+ }), { refProxy: p, refElement: b } = dr(c), { box: _ } = u || {}, y = re((h) => {
277
+ if (!i && !a)
278
278
  return;
279
- if (c.current) {
280
- c.current = !1;
279
+ if (o.current) {
280
+ o.current = !1;
281
281
  return;
282
282
  }
283
- const T = (k, C) => i && k.width !== C.width || s && k.height !== C.height;
284
- m.forEach((k) => {
285
- const C = Wt(k, w);
286
- _(($) => T($, C) ? (u == null || u({
287
- width: C.width,
288
- height: C.height,
289
- entry: k
290
- }), C) : $);
283
+ const T = (m, g) => i && m.width !== g.width || a && m.height !== g.height;
284
+ h.forEach((m) => {
285
+ const g = fr(m, _);
286
+ N((k) => T(k, g) ? (d == null || d({
287
+ width: g.width,
288
+ height: g.height,
289
+ entry: m
290
+ }), g) : k);
291
291
  });
292
- }, [i, s, c, w]), p = ue(zt(b, t, r, n), [
293
- b,
294
- t,
292
+ }, [i, a, o, _]), j = re(ur(y, r, n, t), [
293
+ y,
295
294
  r,
296
- n
295
+ n,
296
+ t
297
297
  ]);
298
- return me(() => {
299
- let m;
300
- return f ? (m = new window.ResizeObserver(p), m.observe(f, l)) : (h.width || h.height) && (u == null || u({
298
+ return Ne(() => {
299
+ let h;
300
+ return b ? (h = new window.ResizeObserver(j), h.observe(b, u)) : (v.width || v.height) && (d == null || d({
301
301
  width: null,
302
302
  height: null,
303
303
  entry: null
304
- }), _({ width: void 0, height: void 0 })), () => {
305
- var T, k, C;
306
- (T = m == null ? void 0 : m.disconnect) === null || T === void 0 || T.call(m), (C = (k = p).cancel) === null || C === void 0 || C.call(k);
304
+ }), N({ width: void 0, height: void 0 })), () => {
305
+ var T, m, g;
306
+ (T = h == null ? void 0 : h.disconnect) === null || T === void 0 || T.call(h), (g = (m = j).cancel) === null || g === void 0 || g.call(m);
307
307
  };
308
- }, [p, f]), Object.assign({ ref: v }, h);
308
+ }, [j, b]), Object.assign({ ref: p }, v);
309
309
  }
310
- function nt(e) {
311
- var t, r, n = "";
312
- if (typeof e == "string" || typeof e == "number") n += e;
310
+ function ke(e) {
311
+ var r, n, t = "";
312
+ if (typeof e == "string" || typeof e == "number") t += e;
313
313
  else if (typeof e == "object") if (Array.isArray(e)) {
314
314
  var i = e.length;
315
- for (t = 0; t < i; t++) e[t] && (r = nt(e[t])) && (n && (n += " "), n += r);
316
- } else for (r in e) e[r] && (n && (n += " "), n += r);
317
- return n;
315
+ for (r = 0; r < i; r++) e[r] && (n = ke(e[r])) && (t && (t += " "), t += n);
316
+ } else for (n in e) e[n] && (t && (t += " "), t += n);
317
+ return t;
318
318
  }
319
- function N() {
320
- for (var e, t, r = 0, n = "", i = arguments.length; r < i; r++) (e = arguments[r]) && (t = nt(e)) && (n && (n += " "), n += t);
321
- return n;
319
+ function Le() {
320
+ for (var e, r, n = 0, t = "", i = arguments.length; n < i; n++) (e = arguments[n]) && (r = ke(e)) && (t && (t += " "), t += r);
321
+ return t;
322
322
  }
323
- const Vt = "_headerContainer_1cubo_1", Yt = "_headerContent_1cubo_34", Zt = "_staticEnabled_1cubo_50", fe = {
324
- headerContainer: Vt,
325
- headerContent: Yt,
326
- staticEnabled: Zt
327
- }, Xt = 77, H = ({ sticky: e, children: t }) => {
328
- const { ref: r, height: n } = Gt({
323
+ const hr = "_headerContainer_1cubo_1", vr = "_navigationTabList_1cubo_8", gr = "_navigationTab_1cubo_8", mr = "_headerContent_1cubo_34", _r = "_staticEnabled_1cubo_50", w = {
324
+ headerContainer: hr,
325
+ navigationTabList: vr,
326
+ navigationTab: gr,
327
+ headerContent: mr,
328
+ staticEnabled: _r
329
+ }, Tr = 77, q = ({ sticky: e, children: r }) => {
330
+ const { ref: n, height: t } = br({
329
331
  refreshMode: "debounce",
330
332
  refreshRate: 0
331
- }), [i, s] = E(!1), a = () => i ? !e : !0;
332
- me(() => {
333
- const d = () => {
334
- s(window.scrollY > 0);
333
+ }), [i, a] = Se(!1), c = () => i ? !e : !0;
334
+ Ne(() => {
335
+ const l = () => {
336
+ a(window.scrollY > 0);
335
337
  };
336
- return window.addEventListener("scroll", d), () => window.removeEventListener("scroll", d);
338
+ return window.addEventListener("scroll", l), () => window.removeEventListener("scroll", l);
337
339
  }, []);
338
- const l = `${n || Xt}px`;
339
- return /* @__PURE__ */ o("div", { style: { minHeight: l }, children: /* @__PURE__ */ o("div", { children: /* @__PURE__ */ g(
340
+ const u = `${t || Tr}px`;
341
+ return /* @__PURE__ */ s("div", { style: { minHeight: u }, children: /* @__PURE__ */ s("div", { children: /* @__PURE__ */ P(
340
342
  "div",
341
343
  {
342
- ref: r,
343
- className: N(fe.headerContent, {
344
- [fe.staticEnabled]: a()
344
+ ref: n,
345
+ className: Le(w.headerContent, {
346
+ [w.staticEnabled]: c()
345
347
  }),
346
348
  children: [
347
- /* @__PURE__ */ o(H.Header, {}),
348
- /* @__PURE__ */ o(H.Tabs, {}),
349
- t
349
+ /* @__PURE__ */ s(q.Header, {}),
350
+ /* @__PURE__ */ s(q.Tabs, {}),
351
+ r
350
352
  ]
351
353
  }
352
354
  ) }) });
353
355
  };
354
- H.Header = ({ children: e }) => /* @__PURE__ */ o("div", { className: fe.headerContainer, children: e });
355
- H.Tabs = ({ children: e }) => /* @__PURE__ */ o("div", { className: "flex justify-between gap-2 nowrap", children: e });
356
- const Qt = "_sidebarContainer_1qc9v_1", Jt = {
357
- sidebarContainer: Qt
358
- }, Kt = "_logoLink_1tgpl_1", en = {
359
- logoLink: Kt
360
- }, tn = ({ src: e, href: t = "/", ariaLabel: r = "Home", alt: n = "Lokalise" }) => /* @__PURE__ */ o("a", { className: en.logoLink, href: t, "aria-label": r, children: /* @__PURE__ */ o("img", { src: e, alt: n }) }), nn = "_link_2ptl6_1", rn = "_active_2ptl6_18", Be = {
361
- link: nn,
362
- active: rn
363
- }, on = ({ label: e, to: t, icon: r }) => /* @__PURE__ */ o(q, { placement: "right", tooltip: e, children: /* @__PURE__ */ o(
364
- j,
365
- {
366
- className: N(Be.link, {
367
- [Be.active]: window.location.pathname.startsWith(t)
368
- }),
369
- href: t,
370
- children: r
371
- }
372
- ) }), sn = "_dropdownButton_t7otz_1", an = "_dropdownButtonActive_t7otz_18", $e = {
373
- dropdownButton: sn,
374
- dropdownButtonActive: an
375
- }, cn = ({ children: e }) => /* @__PURE__ */ o(
376
- he,
377
- {
378
- menuButton: ({ opened: t }) => /* @__PURE__ */ o(q, { placement: "right", tooltip: "Help", children: /* @__PURE__ */ o(
379
- "button",
380
- {
381
- className: N($e.dropdownButton, {
382
- [$e.dropdownButtonActive]: t
383
- }),
384
- children: /* @__PURE__ */ o(_t, { size: "24px" })
385
- }
386
- ) }),
387
- children: /* @__PURE__ */ o(pe, { placement: "right-start", children: e })
388
- }
389
- ), x = {
390
- TaskCompleted: "task_completed",
391
- TaskClosed: "task_closed",
392
- Refresh: "refresh",
393
- ShowDialog: "show_dialog"
394
- }, rt = 0, ln = 9999, dn = [150, 151, 250, 251], un = [152, 153, 252, 253], fn = [154, 155, 157, 158, 254, 255, 258, 354, 355, 358], mn = [156, 159, 160, 256, 259, 260], ot = 9998, _e = (e) => e === rt, it = (e) => e === ln, Ar = (e) => dn.includes(e), Mr = (e) => un.includes(e), qr = (e) => fn.includes(e), Dr = (e) => mn.includes(e), Br = (e) => e > rt && e < ot, $r = (e) => e === ot, hn = /\n/, Ue = (e, t, r) => e.split(t).flatMap((n, i) => i !== 0 ? [gt(r, { key: Math.random().toString(32).slice(0, 10) }), n] : n), pn = (e, t, r) => typeof e == "string" ? Ue(e, t, r) : e.flatMap((n) => typeof n == "string" ? Ue(n, t, r) : n), gn = (e) => pn(e, hn, /* @__PURE__ */ o("br", {})), _n = /(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi, vn = (e) => e.match(_n) ?? [], ze = (e, t, r) => {
395
- const n = e.split(t);
396
- if (n.length === 1)
397
- return e;
398
- const i = [];
399
- return n[0] !== "" && i.push(n[0]), n.shift(), n[n.length - 1] === "" && n.pop(), i.push(
400
- /* @__PURE__ */ o("a", { href: t, target: "_blank", rel: "noreferrer noopener", children: t }, t + r)
401
- ), i.push(n.join(t)), i.filter((s) => s !== "");
402
- }, Fe = (e) => {
403
- const t = vn(e);
404
- return t != null && t.length ? t.reduce((r, n, i) => typeof r == "string" ? ze(r, n, i) : r.flatMap((s) => typeof s == "string" ? ze(s, n, i) : s), e) : e;
405
- }, bn = (e) => typeof e == "string" ? Fe(e) : e.flatMap((t) => typeof t == "string" ? Fe(t) : t, e), Tn = (e, t = "PP") => Qe(e, t), Ur = (e, t, r = "PP") => Qe(St(e, t), r), ve = (e) => {
406
- me(e, []);
407
- }, yn = Math.min, wn = Math.max;
408
- function He(e, t, r) {
409
- return wn(e, yn(t, r));
410
- }
411
- function st(e, t) {
412
- return typeof e == "function" ? e(t) : e;
413
- }
414
- function at(e) {
415
- return e.split("-")[0];
416
- }
417
- function Cn(e) {
418
- return e === "x" ? "y" : "x";
419
- }
420
- function kn(e) {
421
- return ["top", "bottom"].includes(at(e)) ? "y" : "x";
422
- }
423
- function xn(e) {
424
- return {
425
- top: 0,
426
- right: 0,
427
- bottom: 0,
428
- left: 0,
429
- ...e
430
- };
431
- }
432
- function Sn(e) {
433
- return typeof e != "number" ? xn(e) : {
434
- top: e,
435
- right: e,
436
- bottom: e,
437
- left: e
438
- };
439
- }
440
- function We(e) {
441
- const {
442
- x: t,
443
- y: r,
444
- width: n,
445
- height: i
446
- } = e;
447
- return {
448
- width: n,
449
- height: i,
450
- top: r,
451
- left: t,
452
- right: t + n,
453
- bottom: r + i,
454
- x: t,
455
- y: r
456
- };
457
- }
458
- async function In(e, t) {
459
- var r;
460
- t === void 0 && (t = {});
461
- const {
462
- x: n,
463
- y: i,
464
- platform: s,
465
- rects: a,
466
- elements: l,
467
- strategy: d
468
- } = e, {
469
- boundary: c = "clippingAncestors",
470
- rootBoundary: u = "viewport",
471
- elementContext: h = "floating",
472
- altBoundary: _ = !1,
473
- padding: v = 0
474
- } = st(t, e), f = Sn(v), b = l[_ ? h === "floating" ? "reference" : "floating" : h], p = We(await s.getClippingRect({
475
- element: (r = await (s.isElement == null ? void 0 : s.isElement(b))) == null || r ? b : b.contextElement || await (s.getDocumentElement == null ? void 0 : s.getDocumentElement(l.floating)),
476
- boundary: c,
477
- rootBoundary: u,
478
- strategy: d
479
- })), m = h === "floating" ? {
480
- x: n,
481
- y: i,
482
- width: a.floating.width,
483
- height: a.floating.height
484
- } : a.reference, T = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(l.floating)), k = await (s.isElement == null ? void 0 : s.isElement(T)) ? await (s.getScale == null ? void 0 : s.getScale(T)) || {
485
- x: 1,
486
- y: 1
487
- } : {
488
- x: 1,
489
- y: 1
490
- }, C = We(s.convertOffsetParentRelativeRectToViewportRelativeRect ? await s.convertOffsetParentRelativeRectToViewportRelativeRect({
491
- elements: l,
492
- rect: m,
493
- offsetParent: T,
494
- strategy: d
495
- }) : m);
496
- return {
497
- top: (p.top - C.top + f.top) / k.y,
498
- bottom: (C.bottom - p.bottom + f.bottom) / k.y,
499
- left: (p.left - C.left + f.left) / k.x,
500
- right: (C.right - p.right + f.right) / k.x
501
- };
502
- }
503
- const En = function(e) {
504
- return e === void 0 && (e = {}), {
505
- name: "shift",
506
- options: e,
507
- async fn(t) {
508
- const {
509
- x: r,
510
- y: n,
511
- placement: i
512
- } = t, {
513
- mainAxis: s = !0,
514
- crossAxis: a = !1,
515
- limiter: l = {
516
- fn: (b) => {
517
- let {
518
- x: p,
519
- y: m
520
- } = b;
521
- return {
522
- x: p,
523
- y: m
524
- };
525
- }
526
- },
527
- ...d
528
- } = st(e, t), c = {
529
- x: r,
530
- y: n
531
- }, u = await In(t, d), h = kn(at(i)), _ = Cn(h);
532
- let v = c[_], f = c[h];
533
- if (s) {
534
- const b = _ === "y" ? "top" : "left", p = _ === "y" ? "bottom" : "right", m = v + u[b], T = v - u[p];
535
- v = He(m, v, T);
536
- }
537
- if (a) {
538
- const b = h === "y" ? "top" : "left", p = h === "y" ? "bottom" : "right", m = f + u[b], T = f - u[p];
539
- f = He(m, f, T);
540
- }
541
- const w = l.fn({
542
- ...t,
543
- [_]: v,
544
- [h]: f
545
- });
546
- return {
547
- ...w,
548
- data: {
549
- x: w.x - r,
550
- y: w.y - n,
551
- enabled: {
552
- [_]: s,
553
- [h]: a
554
- }
555
- }
556
- };
557
- }
558
- };
559
- }, Nn = "_navItem_1jmyj_1", Pn = "_activeNavItem_1jmyj_19", Ln = "_badge_1jmyj_24", ce = {
560
- navItem: Nn,
561
- activeNavItem: Pn,
562
- badge: Ln
563
- }, ct = Ye({}), D = () => Ze(ct), Rn = (e) => {
564
- const t = e.lastIndexOf("."), r = e.slice(0, t), n = e.slice(t + 1);
565
- return { name: r, extension: n };
566
- }, F = {
567
- translation: "translation",
568
- review: "review",
569
- lqa_by_ai: "lqa_by_ai",
570
- automatic_translation: "automatic_translation"
571
- }, jn = (e, t) => {
572
- switch (e) {
573
- case "completed":
574
- return t < 100 ? "Closed" : "Completed";
575
- case "created":
576
- return t > 0 ? "In progress" : "Not started";
577
- case "in_progress":
578
- return "In progress";
579
- case "queued":
580
- return "Queued";
581
- default:
582
- return "-";
583
- }
584
- }, On = (e) => {
585
- const t = e.progress || 0;
586
- return e.status === "created" && t > 0 ? "in_progress" : e.status;
587
- }, Ge = ["in_progress", "created", "completed"], An = {
588
- [F.translation]: "#76BEDB",
589
- [F.review]: "#74B766",
590
- [F.lqa_by_ai]: "#F6F2FF",
591
- [F.automatic_translation]: "#F6F2FF"
592
- }, Mn = (e) => e.filter((t) => t.status !== "queued").map((t) => ({ ...t, status: On(t) })).sort((t, r) => t.status === "in_progress" && t.progress === 100 ? -1 : r.status === "in_progress" && r.progress === 100 ? 1 : t.status === r.status ? t.name < r.name ? 1 : -1 : Ge.indexOf(t.status) - Ge.indexOf(r.status)), qn = ({ task: e, language: t }) => {
593
- const [r, n] = E(!1), [i, s] = E(!1), { onLanguageCompleteConfirm: a, fetchTasks: l } = D(), d = () => {
594
- s(!1);
595
- };
596
- return /* @__PURE__ */ g(ht, { children: [
597
- i && /* @__PURE__ */ o(
598
- vt,
599
- {
600
- opened: i,
601
- loading: r,
602
- title: `Are you finished with ${t.name}?`,
603
- confirmText: "Mark as done",
604
- closeText: "Cancel",
605
- onClose: () => {
606
- s(!1);
607
- },
608
- onConfirm: async () => {
609
- n(!0), await a({ task: e, language: t, closePrompt: d }), l();
610
- },
611
- children: /* @__PURE__ */ g(bt, { status: "info", children: [
612
- "Make sure you are finished and ",
613
- /* @__PURE__ */ o("strong", { style: { display: "inline" }, children: "mark it as done" }),
614
- " to notify your team admin. This action cannot be undone, and the language might no longer be available for you to edit."
615
- ] })
616
- }
617
- ),
618
- /* @__PURE__ */ o(
619
- j,
620
- {
621
- disabled: r,
622
- onClick: () => {
623
- s(!0);
624
- },
625
- children: "Mark as done"
626
- }
627
- )
628
- ] });
629
- }, Dn = "_langRowCompleted_1aukv_1", Bn = "_langCellSecondary_1aukv_14", $n = "_langStatus_1aukv_19", le = {
630
- langRowCompleted: Dn,
631
- langCellSecondary: Bn,
632
- langStatus: $n
633
- }, Un = ({ language: e, task: t }) => {
634
- const { getProjectUrl: r, langNameOnClick: n, langProgressOnClick: i } = D(), s = e.progress || 0, a = e.status === "completed", l = [t.status, e.status].every((d) => ["in_progress", "created"].includes(d)) && s >= 100;
635
- return /* @__PURE__ */ g(
636
- "tr",
637
- {
638
- className: N({
639
- [le.langRowCompleted]: l
640
- }),
641
- children: [
642
- /* @__PURE__ */ o("td", { children: /* @__PURE__ */ o(q, { tooltip: "Open in bilingual view", children: /* @__PURE__ */ o(
643
- j,
644
- {
645
- href: r({ task: t, language: e }),
646
- onClick: () => {
647
- n == null || n({ task: t, language: e });
648
- },
649
- children: e.name
650
- }
651
- ) }) }),
652
- /* @__PURE__ */ o("td", { className: le.langCellSecondary, children: l || a ? "0" : /* @__PURE__ */ o(q, { tooltip: "Open uncompleted items", children: /* @__PURE__ */ o(
653
- j,
654
- {
655
- href: r({ task: t, language: e, taskUncompleted: !0 }),
656
- onClick: () => {
657
- i == null || i({ task: t, language: e });
658
- },
659
- children: Number.parseInt(e.base_words_total, 10) - Number.parseInt(e.base_words_done, 10)
660
- }
661
- ) }) }),
662
- /* @__PURE__ */ g("td", { children: [
663
- s,
664
- "%"
665
- ] }),
666
- /* @__PURE__ */ o("td", { children: l ? /* @__PURE__ */ o(qn, { task: t, language: e }) : /* @__PURE__ */ o(
667
- "span",
668
- {
669
- className: `${le.langStatus} flex-row items-center justify-start`,
670
- "data-status": e.status,
671
- children: jn(e.status, s)
672
- }
673
- ) })
674
- ]
675
- }
676
- );
677
- }, zn = "_taskContainer_1e51j_1", Fn = "_taskTitle_1e51j_21", Hn = "_taskDescription_1e51j_27", Wn = "_languagesTable_1e51j_33", Gn = "_metadata_1e51j_85", L = {
678
- taskContainer: zn,
679
- taskTitle: Fn,
680
- taskDescription: Hn,
681
- languagesTable: Wn,
682
- metadata: Gn
683
- }, Vn = ({ task: e }) => {
684
- const { tasks: t, getProjectUrl: r, taskTitleOnClick: n } = D(), i = Mn(e.langs), s = ue(
685
- (a) => {
686
- a !== void 0 && window.open(`/style-guide/${e.team_id}/download/${a.id}/link`, "_blank", "noopener,noreferrer");
687
- },
688
- [e.team_id]
689
- );
690
- return t ? /* @__PURE__ */ g("article", { className: L.taskContainer, children: [
691
- /* @__PURE__ */ g("div", { className: "flex-row gap-1 items-center", children: [
692
- /* @__PURE__ */ g("div", { className: "flex-row gap-1 items-start flex-wrap", children: [
693
- /* @__PURE__ */ o(we, { color: An[e.task_type], variant: "solid", children: e.task_type.toLocaleUpperCase() }),
694
- e.due_date && /* @__PURE__ */ g(we, { color: "#DEA829", children: [
695
- "DUE ",
696
- Tn(xt(e.due_date), "yyyy-MM-dd")
697
- ] })
698
- ] }),
699
- e.style_guides.length > 0 && /* @__PURE__ */ o("div", { className: "flex-row", children: e.style_guides.length === 1 ? /* @__PURE__ */ o(
700
- Ce,
701
- {
702
- size: "sm",
703
- variant: "secondary",
704
- onClick: () => s(e.style_guides[0]),
705
- children: "Download style guide"
706
- }
707
- ) : /* @__PURE__ */ o(
708
- he,
709
- {
710
- menuButton: /* @__PURE__ */ o(Ce, { variant: "secondary", size: "sm", children: "Download style guide" }),
711
- children: /* @__PURE__ */ o(pe, { children: e.style_guides.map((a) => /* @__PURE__ */ o(W, { onClick: () => s(a), children: Rn(a.name).name }, a.id)) })
712
- }
713
- ) })
714
- ] }),
715
- /* @__PURE__ */ g(Tt, { top: 1, children: [
716
- /* @__PURE__ */ o("h4", { className: L.taskTitle, children: /* @__PURE__ */ o(
717
- j,
718
- {
719
- href: r({ task: e, view: "multi" }),
720
- onClick: () => {
721
- n == null || n({ task: e });
722
- },
723
- children: e.title
724
- }
725
- ) }),
726
- e.description && /* @__PURE__ */ o("div", { className: L.taskDescription, children: gn(bn(e.description)) })
727
- ] }),
728
- /* @__PURE__ */ g("table", { className: L.languagesTable, children: [
729
- /* @__PURE__ */ o("thead", { children: /* @__PURE__ */ g("tr", { children: [
730
- /* @__PURE__ */ o("th", { children: "Languages" }),
731
- /* @__PURE__ */ o("th", { children: "Words to do" }),
732
- /* @__PURE__ */ o("th", { children: "Progress" }),
733
- /* @__PURE__ */ o("th", { children: "Status" })
734
- ] }) }),
735
- /* @__PURE__ */ o("tbody", { children: i.map((a) => /* @__PURE__ */ o(Un, { language: a, task: e }, a.lang_id)) })
736
- ] }),
737
- /* @__PURE__ */ g("p", { className: L.metadata, children: [
738
- /* @__PURE__ */ g("span", { "data-test-id": "source-lang", children: [
739
- "Source: ",
740
- e.source_lang_name
741
- ] }),
742
- /* @__PURE__ */ o("span", { "data-test-id": "author-name", children: e.created_by_fullname }),
743
- /* @__PURE__ */ g("span", { "data-test-id": "project-name", children: [
744
- "In ",
745
- e.project_name,
746
- e.master_branching_enabled === "1" && /* @__PURE__ */ o("div", { className: L.tag, children: e.branch_name ? e.branch_name : "master" })
747
- ] })
748
- ] })
749
- ] }) : null;
750
- }, Yn = "_loadingContainer_1l6uh_1", Zn = "_noTasksContainer_1l6uh_6", Xn = "_noTasksHeading_1l6uh_12", Qn = "_noTasksText_1l6uh_16", Jn = "_tasksContainer_1l6uh_21", A = {
751
- loadingContainer: Yn,
752
- noTasksContainer: Zn,
753
- noTasksHeading: Xn,
754
- noTasksText: Qn,
755
- tasksContainer: Jn
756
- }, Kn = () => {
757
- const { tasks: e, onTasksWidgetOpen: t, loadingTasks: r, fetchTasks: n } = D();
758
- return ve(() => (n(), t == null || t({ tasks: e }), document.addEventListener(x.TaskCompleted, n), document.addEventListener(x.TaskClosed, n), document.addEventListener(x.Refresh, n), () => {
759
- document.removeEventListener(x.TaskCompleted, n), document.removeEventListener(x.TaskClosed, n), document.removeEventListener(x.Refresh, n);
760
- })), r ? /* @__PURE__ */ o("div", { className: A.loadingContainer, children: /* @__PURE__ */ o(yt, {}) }) : e.length === 0 ? /* @__PURE__ */ g("div", { className: A.noTasksContainer, children: [
761
- /* @__PURE__ */ o("h3", { className: A.noTasksHeading, children: "No tasks" }),
762
- /* @__PURE__ */ g("div", { className: A.noTasksText, children: [
763
- "Your incoming tasks will appear here.",
764
- /* @__PURE__ */ o("br", {}),
765
- /* @__PURE__ */ o(j, { href: "https://docs.lokalise.com/translation-workflow/tasks", target: "_new", children: "Learn more" })
766
- ] })
767
- ] }) : /* @__PURE__ */ o("section", { className: A.tasksContainer, children: e.map((i) => /* @__PURE__ */ o(Vn, { task: i }, i.id)) });
768
- }, er = ({ children: e, config: t }) => {
769
- const [r, n] = E([]), [i, s] = E(!0), [a, l] = E(0), {
770
- getProjectUrl: d,
771
- onLanguageCompleteConfirm: c,
772
- onTasksWidgetOpen: u,
773
- langNameOnClick: h,
774
- langProgressOnClick: _,
775
- taskTitleOnClick: v
776
- } = t, { getTasks: f, getTasksCount: w } = t, b = async () => {
777
- s(!0);
778
- const T = await f();
779
- n(T), s(!1);
780
- }, p = async () => {
781
- const T = await w();
782
- l(T);
783
- };
784
- ve(() => (p(), document.addEventListener(x.TaskCompleted, p), document.addEventListener(x.TaskClosed, p), document.addEventListener(x.Refresh, p), () => {
785
- document.removeEventListener(x.TaskCompleted, p), document.removeEventListener(x.TaskClosed, p), document.removeEventListener(x.Refresh, p);
786
- }));
787
- const m = {
788
- fetchTasks: b,
789
- tasks: r,
790
- tasksCount: a,
791
- loadingTasks: i,
792
- getProjectUrl: d,
793
- onLanguageCompleteConfirm: c,
794
- onTasksWidgetOpen: u,
795
- langNameOnClick: h,
796
- langProgressOnClick: _,
797
- taskTitleOnClick: v
798
- };
799
- return /* @__PURE__ */ o(ct.Provider, { value: m, children: e });
800
- }, tr = (e) => function(r) {
801
- const { config: n, ...i } = r;
802
- return /* @__PURE__ */ o(er, { config: n, children: /* @__PURE__ */ o(e, { ...i }) });
803
- }, nr = tr(() => {
804
- const [e, t] = E(!1), { tasksCount: r } = D();
805
- return ve(() => {
806
- const n = () => {
807
- t(!0);
808
- };
809
- return document.addEventListener(x.ShowDialog, n), () => {
810
- document.removeEventListener(x.ShowDialog, n);
811
- };
812
- }), /* @__PURE__ */ o(q, { tooltip: "Tasks", placement: "right", children: /* @__PURE__ */ o(
813
- wt,
356
+ q.Header = ({ children: e }) => /* @__PURE__ */ s("div", { className: w.headerContainer, children: e });
357
+ q.Tabs = ({ children: e }) => /* @__PURE__ */ s("div", { className: "flex justify-between gap-2 nowrap", children: e });
358
+ const pr = "_breadcrumbsItem_1hm6a_1", yr = "_breadcrumbs_1hm6a_1", me = {
359
+ breadcrumbsItem: pr,
360
+ breadcrumbs: yr
361
+ }, Ur = ({ items: e }) => /* @__PURE__ */ s("nav", { "aria-label": "breadcrumb", className: me.breadcrumbs, children: e.map((r, n) => /* @__PURE__ */ P(Ee, { children: [
362
+ /* @__PURE__ */ s(Ge, { className: me.breadcrumbsItem, href: r.link, rel: "noreferrer", children: r.name }),
363
+ n < e.length - 1 && /* @__PURE__ */ s("span", { children: " — " })
364
+ ] }, `${r.link}-${r.name}`)) }), Sr = ({ items: e }) => /* @__PURE__ */ s(De, { children: e.map((r, n) => /* @__PURE__ */ P(Ee, { children: [
365
+ !!n && r.some((t) => t.visible) && /* @__PURE__ */ s(Fe, {}),
366
+ r.filter(({ visible: t }) => t).map(({ link: t, label: i, onClick: a }) => /* @__PURE__ */ s(Be, { href: t || "#", "aria-label": i, onClick: a, children: i }, i))
367
+ ] }, r[0].label)) }), Nr = "_badge_1pc1v_1", Er = "_tag_1pc1v_15", jr = "_withNavLinkStyle_1pc1v_42 _withLinkStyle_1pc1v_21", wr = "_disabled_1pc1v_57", Rr = "_projectNavigationItem_1pc1v_61", Ir = "_projectNavigationItemDisabled_1pc1v_67", E = {
368
+ badge: Nr,
369
+ tag: Er,
370
+ withNavLinkStyle: jr,
371
+ disabled: wr,
372
+ projectNavigationItem: Rr,
373
+ projectNavigationItemDisabled: Ir
374
+ }, _e = ({ label: e, badge: r, novel: n }) => /* @__PURE__ */ P("div", { className: "flex gap-1", children: [
375
+ /* @__PURE__ */ P("div", { children: [
376
+ /* @__PURE__ */ s("span", { children: e }),
377
+ !!r && /* @__PURE__ */ s("div", { className: E.badge, "aria-label": `${r} items requiring attention`, children: r > 9 ? "9+" : r })
378
+ ] }),
379
+ !!n && /* @__PURE__ */ s($e, { className: E.tag, children: n })
380
+ ] }), Y = ze(
381
+ ({ label: e, href: r = "", disabled: n = !1, badge: t, onClick: i, novel: a }, c) => /* @__PURE__ */ s(He, { tooltip: "You do not have access to this function", show: n, children: /* @__PURE__ */ s(
382
+ "div",
814
383
  {
815
- content: /* @__PURE__ */ o(Kn, {}),
816
- placement: "right",
817
- open: e,
818
- onOpenChange: t,
819
- middlewares: [
820
- En({
821
- // Adding some spacing to the top and bottom so the popover
822
- // doesn't extend to the edges of the screen.
823
- padding: {
824
- top: 32,
825
- bottom: 32
826
- }
827
- })
828
- ],
829
- children: (n) => /* @__PURE__ */ g(
384
+ className: n ? E.projectNavigationItemDisabled : E.projectNavigationItem,
385
+ children: i || n || !r ? /* @__PURE__ */ s(
830
386
  "button",
831
387
  {
832
388
  type: "button",
833
- "aria-label": "Tasks",
834
- className: N(ce.navItem, {
835
- [ce.activeNavItem]: n
389
+ ref: c,
390
+ className: Le(E.withNavLinkStyle, {
391
+ [E.disabled]: n
836
392
  }),
837
- children: [
838
- /* @__PURE__ */ o(Ct, { size: "24px" }),
839
- r > 0 && /* @__PURE__ */ o(
840
- "div",
841
- {
842
- className: ce.badge,
843
- "aria-label": `${r} items requiring attention`,
844
- children: r > 9 ? "9+" : r
845
- }
846
- )
847
- ]
393
+ disabled: n,
394
+ onClick: i,
395
+ children: /* @__PURE__ */ s(_e, { label: e, badge: t, novel: a })
848
396
  }
849
- )
397
+ ) : /* @__PURE__ */ s("a", { href: r, className: E.withNavLinkStyle, children: /* @__PURE__ */ s(_e, { label: e, badge: t, novel: a }) })
850
398
  }
851
- ) });
852
- }), rr = "_iconContainer_18sqh_1", or = {
853
- iconContainer: rr
854
- }, lt = ({ className: e = "" }) => /* @__PURE__ */ o(
855
- "div",
856
- {
857
- "aria-label": "Upgrade Icon",
858
- className: N(or.iconContainer, "flex-row", "items-center", "justify-center", e),
859
- children: /* @__PURE__ */ o(kt, {})
860
- }
861
- ), ir = "_menuContainer_1dcf5_5", sr = "_profileButton_1dcf5_16", ar = "_profileImage_1dcf5_29", cr = "_profileImageHighlight_1dcf5_37", lr = "_profileImageUpgradeIcon_1dcf5_41", dr = "_userIconWrapper_1dcf5_47", P = {
862
- menuContainer: ir,
863
- profileButton: sr,
864
- profileImage: ar,
865
- profileImageHighlight: cr,
866
- profileImageUpgradeIcon: lr,
867
- userIconWrapper: dr
868
- }, dt = Ye({}), B = () => Ze(dt), ur = ({ children: e }) => {
869
- const {
870
- currentTeam: t,
871
- otherTeams: r,
872
- showUpgradeCta: n,
873
- showBillingButton: i,
874
- allowTeamCreation: s,
875
- isLimitedView: a,
876
- isProviderAlpha: l,
877
- canAccessTeamSettings: d,
878
- isEndOfTrialActive: c,
879
- isTeamSuspended: u
880
- } = B();
881
- return /* @__PURE__ */ o(
882
- he,
399
+ ) })
400
+ );
401
+ Y.displayName = "NavigationTabsItem";
402
+ const Pr = (e) => (e == null ? void 0 : e.some((r) => r.some((n) => n.visible))) ?? !1, kr = (e) => e.visible && (!e.dropdown || Pr(e.dropdown)), Wr = ({ navigation: e, activeItem: r }) => /* @__PURE__ */ s("nav", { "aria-label": "Project", children: /* @__PURE__ */ s("ul", { className: w.navigationTabList, "aria-orientation": "horizontal", children: e.filter(kr).map((n) => {
403
+ var t, i, a;
404
+ return n.dropdown ? /* @__PURE__ */ s(
405
+ "li",
883
406
  {
884
- menuButton: () => /* @__PURE__ */ g("button", { className: P.profileButton, "aria-label": "Profile menu", type: "button", children: [
885
- t != null && t.logoUrl ? /* @__PURE__ */ o(
886
- "img",
887
- {
888
- src: t.logoUrl,
889
- className: N(P.profileImage, {
890
- [P.profileImageHighlight]: n
891
- }),
892
- alt: "Team Logo"
893
- }
894
- ) : /* @__PURE__ */ o(
895
- "div",
896
- {
897
- className: N(P.userIconWrapper, "flex-row", "align-center", "items-center", {
898
- [P.profileImageHighlight]: n
899
- }),
900
- children: /* @__PURE__ */ o(Xe, { size: "24px" })
901
- }
902
- ),
903
- n && /* @__PURE__ */ o(lt, { className: P.profileImageUpgradeIcon })
904
- ] }),
905
- children: /* @__PURE__ */ o(pe, { placement: "right-end", className: P.menuContainer, children: e({
906
- allowTeamCreation: s,
907
- otherTeams: r,
908
- isLimitedView: a,
909
- canAccessTeamSettings: d,
910
- isEndOfTrialActive: c,
911
- isTeamSuspended: u,
912
- showBillingButton: i,
913
- isProviderAlpha: l
914
- }) })
915
- }
916
- );
917
- }, fr = ({ children: e, config: t }) => {
918
- const { teams: r, currentTeamId: n, planId: i, isLimitedView: s, isTeamSuspended: a, canAccessTeamSettings: l, isEndOfTrialActive: d } = t, c = r.find((m) => m.id === n), u = r.filter((m) => m.id !== n), h = (c == null ? void 0 : c.role) ?? "", _ = ["biller", "owner"].includes(h), v = _e(i) || it(i), p = {
919
- ...t,
920
- currentTeam: c,
921
- otherTeams: u,
922
- canChangeBilling: _,
923
- isOnFreeOrTrialPlan: v,
924
- showUpgradeCta: !s && v && _ && !a,
925
- showBillingButton: !s && l && _,
926
- allowTeamCreation: !s && !d
927
- };
928
- return /* @__PURE__ */ o(dt.Provider, { value: p, children: e });
929
- }, mr = ({ config: e, children: t }) => /* @__PURE__ */ o(fr, { config: e, children: /* @__PURE__ */ o(ur, { children: t }) }), hr = "_container_k7g5r_1", pr = "_profileEmail_k7g5r_5", Ve = {
930
- container: hr,
931
- profileEmail: pr
932
- }, gr = ({ href: e, onClick: t, userEmail: r }) => {
933
- const { isEndOfTrialActive: n, isTeamSuspended: i } = B();
934
- return n || i ? null : /* @__PURE__ */ o(
935
- W,
936
- {
937
- href: e,
938
- onClick: () => {
939
- t == null || t();
940
- },
941
- children: /* @__PURE__ */ g("div", { className: `flex-col ${Ve.container}`, children: [
942
- /* @__PURE__ */ o("span", { children: "Profile Settings" }),
943
- /* @__PURE__ */ o("span", { className: Ve.profileEmail, children: r })
944
- ] })
945
- }
946
- );
947
- }, _r = "_wrapper_1d834_1", vr = "_profileImage_1d834_14", br = "_teamName_1d834_22", Tr = "_planLabel_1d834_29", yr = "_membership_1d834_38", wr = "_defaultProfileImage_1d834_44", R = {
948
- wrapper: _r,
949
- profileImage: vr,
950
- teamName: br,
951
- planLabel: Tr,
952
- membership: yr,
953
- defaultProfileImage: wr
954
- }, ut = ({ team: e, onClick: t, hidePlanLabel: r }) => {
955
- const { currentTeam: n, planId: i } = B(), s = e || n;
956
- if (!s)
957
- return null;
958
- const a = _e(i) ? "Free" : it(i) ? "Trial" : void 0;
959
- return /* @__PURE__ */ g(
960
- t ? W : "div",
407
+ className: w.navigationTab,
408
+ "data-testid": n.key,
409
+ "aria-selected": (t = n.isActive) == null ? void 0 : t.call(n, r),
410
+ children: /* @__PURE__ */ s(
411
+ Ue,
412
+ {
413
+ menuButton: ({ opened: c }) => /* @__PURE__ */ s(Y, { label: n.label, disabled: n.disabled, active: c }),
414
+ children: /* @__PURE__ */ s(We, { children: /* @__PURE__ */ s(Sr, { items: n.dropdown }) })
415
+ }
416
+ )
417
+ },
418
+ n.key
419
+ ) : /* @__PURE__ */ s(
420
+ "li",
961
421
  {
962
- className: `flex-row gap-2 flex-nowrap items-center ${R.wrapper}`,
963
- ...t && { onClick: () => t(s) },
964
- children: [
965
- s.logoUrl ? /* @__PURE__ */ o("img", { className: R.profileImage, src: s.logoUrl, alt: "Team Logo" }) : /* @__PURE__ */ o("div", { className: `flex-row justify-center items-center ${R.defaultProfileImage}`, children: /* @__PURE__ */ o(Xe, { size: "24px" }) }),
966
- /* @__PURE__ */ g("div", { className: "flex-col items-start", children: [
967
- /* @__PURE__ */ g("div", { className: "flex-row items-center flex-nowrap gap-2", children: [
968
- /* @__PURE__ */ o("span", { title: s.name, className: R.teamName, children: s.name }),
969
- a && !r && /* @__PURE__ */ o("span", { className: `flex-row justify-center items-center ${R.planLabel}`, children: a })
970
- ] }),
971
- /* @__PURE__ */ o("span", { className: R.membership, children: s.role })
972
- ] })
973
- ]
974
- }
422
+ className: w.navigationTab,
423
+ "data-testid": n.key,
424
+ "aria-selected": (i = n.isActive) == null ? void 0 : i.call(n, r),
425
+ children: /* @__PURE__ */ s(
426
+ Y,
427
+ {
428
+ label: n.label,
429
+ href: n.link,
430
+ onClick: n.onClick,
431
+ disabled: n.disabled,
432
+ badge: n.badge,
433
+ novel: n.novel,
434
+ active: (a = n.isActive) == null ? void 0 : a.call(n, r)
435
+ }
436
+ )
437
+ },
438
+ n.key
975
439
  );
976
- }, Cr = "_teamsContainer_l4r3v_1", kr = {
977
- teamsContainer: Cr
978
- }, xr = ({ onSwitchTeam: e }) => {
979
- const { otherTeams: t } = B();
980
- return t.length === 0 ? null : /* @__PURE__ */ o("div", { className: `flex-col items-stretch ${kr.teamsContainer}`, children: t.map((r) => /* @__PURE__ */ o(ut, { team: r, onClick: e, hidePlanLabel: !0 }, r.id)) });
981
- }, Sr = "_container_jmnsf_1", Ir = "_planCta_jmnsf_15", Er = "_upgradeIconWrapper_jmnsf_19", de = {
982
- container: Sr,
983
- planCta: Ir,
984
- upgradeIconWrapper: Er
985
- }, Nr = ({ upgradeOptionHref: e }) => {
986
- const { planId: t, trialDaysLeft: r, showUpgradeCta: n } = B();
987
- if (!n)
988
- return null;
989
- const a = _e(t) ? "Your team is currently on the Free plan" : `Free trial ends in ${r} ${r === 1 ? "day" : "days"}`;
990
- return /* @__PURE__ */ g(W, { href: e, className: `flex-col gap-1 items-start ${de.container}`, children: [
991
- /* @__PURE__ */ o("span", { className: de.planCta, children: a }),
992
- /* @__PURE__ */ g("div", { className: `flex-row items-center gap-1 ${de.upgradeIconWrapper}`, children: [
993
- /* @__PURE__ */ o(lt, {}),
994
- /* @__PURE__ */ o("span", { children: "See upgrade options" })
995
- ] })
996
- ] });
997
- }, S = ({ children: e, ...t }) => /* @__PURE__ */ o("nav", { ...t, className: Jt.sidebarContainer, children: e });
998
- S.Top = ({ children: e }) => /* @__PURE__ */ o("div", { children: e });
999
- S.Bottom = ({ children: e }) => /* @__PURE__ */ o("div", { children: e });
1000
- S.Avatar = tn;
1001
- S.IconLink = on;
1002
- S.Menu = cn;
1003
- S.Tasks = nr;
1004
- S.ProfileMenu = mr;
1005
- S.TeamSwitch = xr;
1006
- S.TeamMenuItem = ut;
1007
- S.UpgradeMenuItem = Nr;
1008
- S.ProfileSettingsMenuItem = gr;
440
+ }) }) }), Oe = 0, Lr = 9999, Or = [150, 151, 250, 251], qr = [152, 153, 252, 253], xr = [154, 155, 157, 158, 254, 255, 258, 354, 355, 358], Ar = [156, 159, 160, 256, 259, 260], qe = 9998, Zr = (e) => e === Oe, Vr = (e) => e === Lr, Xr = (e) => Or.includes(e), Yr = (e) => qr.includes(e), Jr = (e) => xr.includes(e), Kr = (e) => Ar.includes(e), Qr = (e) => e > Oe && e < qe, en = (e) => e === qe, Dr = /\n/, Te = (e, r, n) => e.split(r).flatMap((t, i) => i !== 0 ? [Me(n, { key: Math.random().toString(32).slice(0, 10) }), t] : t), Cr = (e, r, n) => typeof e == "string" ? Te(e, r, n) : e.flatMap((t) => typeof t == "string" ? Te(t, r, n) : t), rn = (e) => Cr(e, Dr, /* @__PURE__ */ s("br", {})), zr = /(\b(https?|):\/\/[-a-zA-Zа-яА-Я0-9+&@#/%?=~_|!:,.;]*[-a-zA-Zа-яА-Я0-9+&@#/%=~_|])/gi, Mr = (e) => e.match(zr) ?? [], pe = (e, r, n) => {
441
+ const t = e.split(r);
442
+ if (t.length === 1)
443
+ return e;
444
+ const i = [];
445
+ return t[0] !== "" && i.push(t[0]), t.shift(), t[t.length - 1] === "" && t.pop(), i.push(
446
+ /* @__PURE__ */ s("a", { href: r, target: "_blank", rel: "noreferrer noopener", children: r }, r + n)
447
+ ), i.push(t.join(r)), i.filter((a) => a !== "");
448
+ }, ye = (e) => {
449
+ const r = Mr(e);
450
+ return r != null && r.length ? r.reduce((n, t, i) => typeof n == "string" ? pe(n, t, i) : n.flatMap((a) => typeof a == "string" ? pe(a, t, i) : a), e) : e;
451
+ }, nn = (e) => typeof e == "string" ? ye(e) : e.flatMap((r) => typeof r == "string" ? ye(r) : r, e), tn = (e, r = "PP") => je(e, r), an = (e, r, n = "PP") => je(Ze(e, r), n);
1009
452
  export {
1010
- ot as ENTERPRISE_OPENSOURCE_PLAN_ID,
1011
- mn as ENTERPRISE_PLAN_IDS,
1012
- un as ESSENTIAL_PLAN_IDS,
1013
- rt as FREE_PLAN_ID,
1014
- H as NavigationPanel,
1015
- fn as PRO_PLAN_IDS,
1016
- dn as START_PLAN_IDS,
1017
- S as Sidebar,
1018
- ln as TRIAL_PLAN_ID,
1019
- gn as convertNewLineToBreakTag,
1020
- Tn as formatDate,
1021
- Ur as formatDateTz,
1022
- $r as isEnterpriseOpenSourcePlan,
1023
- Dr as isEnterprisePlan,
1024
- Mr as isEssentialPlan,
1025
- _e as isFreePlan,
1026
- Br as isPaidPlan,
1027
- qr as isProPlan,
1028
- Ar as isStartPlan,
1029
- it as isTrialPlan,
1030
- bn as makeUrlClickable,
1031
- ve as useEffectOnce
453
+ Ur as Breadcrumbs,
454
+ qe as ENTERPRISE_OPENSOURCE_PLAN_ID,
455
+ Ar as ENTERPRISE_PLAN_IDS,
456
+ qr as ESSENTIAL_PLAN_IDS,
457
+ Oe as FREE_PLAN_ID,
458
+ q as NavigationPanel,
459
+ Wr as NavigationTabs,
460
+ xr as PRO_PLAN_IDS,
461
+ Or as START_PLAN_IDS,
462
+ Lr as TRIAL_PLAN_ID,
463
+ rn as convertNewLineToBreakTag,
464
+ tn as formatDate,
465
+ an as formatDateTz,
466
+ en as isEnterpriseOpenSourcePlan,
467
+ Kr as isEnterprisePlan,
468
+ Yr as isEssentialPlan,
469
+ Zr as isFreePlan,
470
+ Qr as isPaidPlan,
471
+ Jr as isProPlan,
472
+ Xr as isStartPlan,
473
+ Vr as isTrialPlan,
474
+ nn as makeUrlClickable
1032
475
  };