@skylabs-digital/react-identity-access 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,6 +1,6 @@
1
- import { jsx as n, Fragment as j, jsxs as l } from "react/jsx-runtime";
2
- import { createContext as ue, useMemo as Q, useState as S, useCallback as ie, useEffect as re, useContext as se, useRef as Ge } from "react";
3
- import { useLocation as ve, Navigate as pe } from "react-router-dom";
1
+ import { jsx as n, Fragment as j, jsxs as d } from "react/jsx-runtime";
2
+ import { createContext as he, useMemo as te, useState as k, useCallback as ie, useEffect as re, useContext as se, useRef as Ne } from "react";
3
+ import { useLocation as Te, Navigate as fe } from "react-router-dom";
4
4
  class ne {
5
5
  // SessionManager instance
6
6
  constructor(e, t = 1e4) {
@@ -16,40 +16,40 @@ class ne {
16
16
  return this.executeRequest(e, t, r, s, !1);
17
17
  }
18
18
  async executeRequest(e, t, r, s, o = !1) {
19
- const a = `${this.baseUrl}${t.startsWith("/") ? t : `/${t}`}`, g = (s == null ? void 0 : s.timeout) || this.timeout;
20
- let w = {
19
+ const a = `${this.baseUrl}${t.startsWith("/") ? t : `/${t}`}`, m = (s == null ? void 0 : s.timeout) || this.timeout;
20
+ let y = {
21
21
  "Content-Type": "application/json",
22
22
  ...s == null ? void 0 : s.headers
23
23
  };
24
24
  if (!(s != null && s.skipAuth) && this.sessionManager)
25
25
  try {
26
- const b = await this.sessionManager.getAuthHeaders();
27
- w = { ...w, ...b };
28
- } catch (b) {
29
- console.warn("Failed to inject auth headers:", b);
26
+ const S = await this.sessionManager.getAuthHeaders();
27
+ y = { ...y, ...S };
28
+ } catch (S) {
29
+ console.warn("Failed to inject auth headers:", S);
30
30
  }
31
- const m = new AbortController(), k = setTimeout(() => m.abort(), g);
31
+ const b = new AbortController(), g = setTimeout(() => b.abort(), m);
32
32
  try {
33
- const b = await fetch(a, {
33
+ const S = await fetch(a, {
34
34
  method: e,
35
- headers: w,
35
+ headers: y,
36
36
  body: r ? JSON.stringify(r) : void 0,
37
- signal: m.signal
37
+ signal: b.signal
38
38
  });
39
- if (clearTimeout(k), b.status === 401 && !(s != null && s.skipRetry) && !o && this.sessionManager)
39
+ if (clearTimeout(g), S.status === 401 && !(s != null && s.skipRetry) && !o && this.sessionManager)
40
40
  try {
41
- const A = this.sessionManager.getTokens();
42
- if (A != null && A.refreshToken)
41
+ const T = this.sessionManager.getTokens();
42
+ if (T != null && T.refreshToken)
43
43
  return await this.sessionManager.getAuthHeaders(), this.executeRequest(e, t, r, s, !0);
44
44
  } catch {
45
- throw new Error(`HTTP ${b.status}: ${b.statusText}`);
45
+ throw new Error(`HTTP ${S.status}: ${S.statusText}`);
46
46
  }
47
- if (!b.ok)
48
- throw new Error(`HTTP ${b.status}: ${b.statusText}`);
49
- const f = b.headers.get("content-type");
50
- return !f || !f.includes("application/json") ? {} : await b.json();
51
- } catch (b) {
52
- throw clearTimeout(k), b instanceof Error && b.name === "AbortError" ? new Error(`Request timeout after ${g}ms`) : b;
47
+ if (!S.ok)
48
+ throw new Error(`HTTP ${S.status}: ${S.statusText}`);
49
+ const f = S.headers.get("content-type");
50
+ return !f || !f.includes("application/json") ? {} : await S.json();
51
+ } catch (S) {
52
+ throw clearTimeout(g), S instanceof Error && S.name === "AbortError" ? new Error(`Request timeout after ${m}ms`) : S;
53
53
  }
54
54
  }
55
55
  async get(e, t) {
@@ -65,7 +65,7 @@ class ne {
65
65
  return this.request("DELETE", e, void 0, t);
66
66
  }
67
67
  }
68
- class Me {
68
+ class Fe {
69
69
  constructor(e, t) {
70
70
  this.httpService = e, this.sessionManager = t;
71
71
  }
@@ -124,32 +124,32 @@ class Me {
124
124
  })).data;
125
125
  }
126
126
  }
127
- const ke = ue(null);
128
- function qt({ config: i, children: e }) {
129
- const t = Q(
127
+ const xe = he(null);
128
+ function Jt({ config: i, children: e }) {
129
+ const t = te(
130
130
  () => {
131
- var f, A, E;
131
+ var f, T, I;
132
132
  return {
133
133
  enabled: ((f = i.cache) == null ? void 0 : f.enabled) ?? !0,
134
- ttl: ((A = i.cache) == null ? void 0 : A.ttl) ?? 3e5,
134
+ ttl: ((T = i.cache) == null ? void 0 : T.ttl) ?? 3e5,
135
135
  // 5 minutes default
136
- storageKey: ((E = i.cache) == null ? void 0 : E.storageKey) ?? `app_cache_${i.appId}`
136
+ storageKey: ((I = i.cache) == null ? void 0 : I.storageKey) ?? `app_cache_${i.appId}`
137
137
  };
138
138
  },
139
139
  [i.cache, i.appId]
140
- ), [r, s] = S(() => {
140
+ ), [r, s] = k(() => {
141
141
  if (!t.enabled) return null;
142
142
  try {
143
143
  const f = localStorage.getItem(t.storageKey);
144
144
  if (!f) return null;
145
- const A = JSON.parse(f);
146
- return Date.now() - A.timestamp < t.ttl && A.appId === i.appId ? A.data : (localStorage.removeItem(t.storageKey), null);
145
+ const T = JSON.parse(f);
146
+ return Date.now() - T.timestamp < t.ttl && T.appId === i.appId ? T.data : (localStorage.removeItem(t.storageKey), null);
147
147
  } catch {
148
148
  return null;
149
149
  }
150
- }), [o, a] = S(!r), [g, w] = S(null), m = Q(() => {
150
+ }), [o, a] = k(!r), [m, y] = k(null), b = te(() => {
151
151
  const f = () => {
152
- k();
152
+ g();
153
153
  };
154
154
  return {
155
155
  appId: i.appId,
@@ -157,69 +157,69 @@ function qt({ config: i, children: e }) {
157
157
  // App info
158
158
  appInfo: r,
159
159
  isAppLoading: o,
160
- appError: g,
160
+ appError: m,
161
161
  retryApp: f
162
162
  };
163
- }, [i, r, o, g]), k = ie(
163
+ }, [i, r, o, m]), g = ie(
164
164
  async (f = !1) => {
165
165
  if (!(!f && t.enabled && r))
166
166
  try {
167
- a(!0), w(null);
168
- const A = new ne(i.baseUrl), $ = await new Me(A, {}).getPublicAppInfo(i.appId);
169
- if (s($), t.enabled)
167
+ a(!0), y(null);
168
+ const T = new ne(i.baseUrl), C = await new Fe(T, {}).getPublicAppInfo(i.appId);
169
+ if (s(C), t.enabled)
170
170
  try {
171
- const L = {
172
- data: $,
171
+ const R = {
172
+ data: C,
173
173
  timestamp: Date.now(),
174
174
  appId: i.appId
175
175
  };
176
- localStorage.setItem(t.storageKey, JSON.stringify(L));
177
- } catch (L) {
178
- console.warn("Failed to cache app info:", L);
176
+ localStorage.setItem(t.storageKey, JSON.stringify(R));
177
+ } catch (R) {
178
+ console.warn("Failed to cache app info:", R);
179
179
  }
180
- } catch (A) {
181
- const E = A instanceof Error ? A : new Error("Failed to load app information");
182
- w(E), s(null);
180
+ } catch (T) {
181
+ const I = T instanceof Error ? T : new Error("Failed to load app information");
182
+ y(I), s(null);
183
183
  } finally {
184
184
  a(!1);
185
185
  }
186
186
  },
187
187
  [i.baseUrl, i.appId, t, r]
188
- ), b = ie(async () => {
188
+ ), S = ie(async () => {
189
189
  if (!(!t.enabled || !r))
190
190
  try {
191
191
  const f = localStorage.getItem(t.storageKey);
192
192
  if (!f) return;
193
- const A = JSON.parse(f);
194
- if (Date.now() - A.timestamp > t.ttl * 0.5) {
195
- const $ = new ne(i.baseUrl), P = await new Me($, {}).getPublicAppInfo(i.appId);
196
- s(P);
197
- const u = {
198
- data: P,
193
+ const T = JSON.parse(f);
194
+ if (Date.now() - T.timestamp > t.ttl * 0.5) {
195
+ const C = new ne(i.baseUrl), x = await new Fe(C, {}).getPublicAppInfo(i.appId);
196
+ s(x);
197
+ const h = {
198
+ data: x,
199
199
  timestamp: Date.now(),
200
200
  appId: i.appId
201
201
  };
202
- localStorage.setItem(t.storageKey, JSON.stringify(u));
202
+ localStorage.setItem(t.storageKey, JSON.stringify(h));
203
203
  }
204
204
  } catch (f) {
205
205
  console.warn("Background app refresh failed:", f);
206
206
  }
207
207
  }, [i, t, r]);
208
208
  return re(() => {
209
- r ? b() : k();
210
- }, []), /* @__PURE__ */ n(ke.Provider, { value: m, children: e });
209
+ r ? S() : g();
210
+ }, []), /* @__PURE__ */ n(xe.Provider, { value: b, children: e });
211
211
  }
212
- function he() {
213
- const i = se(ke);
212
+ function ge() {
213
+ const i = se(xe);
214
214
  if (!i)
215
215
  throw new Error("useApp must be used within an AppProvider");
216
216
  return i;
217
217
  }
218
- function Fe() {
219
- return se(ke);
218
+ function Ue() {
219
+ return se(xe);
220
220
  }
221
- const zt = he;
222
- class Se {
221
+ const Kt = ge;
222
+ class ke {
223
223
  constructor(e = {}) {
224
224
  this.refreshPromise = null, this.refreshQueue = [], e.tenantSlug !== void 0 ? this.storageKey = e.tenantSlug ? `auth_tokens_${e.tenantSlug}` : "auth_tokens" : this.storageKey = e.storageKey || "auth_tokens", this.autoRefresh = e.autoRefresh ?? !0, this.refreshThreshold = e.refreshThreshold || 3e5, this.onRefreshFailed = e.onRefreshFailed, this.baseUrl = e.baseUrl || "", this.tokenStorage = e.tokenStorage || this.createTokenStorage(this.storageKey);
225
225
  }
@@ -372,7 +372,7 @@ class Se {
372
372
  return e !== null && !this.isTokenExpired(e);
373
373
  }
374
374
  }
375
- class Ke {
375
+ class tt {
376
376
  constructor(e) {
377
377
  this.httpService = e;
378
378
  }
@@ -392,6 +392,17 @@ class Ke {
392
392
  async refreshToken(e) {
393
393
  return await this.httpService.post("/auth/refresh", e);
394
394
  }
395
+ async switchTenant(e) {
396
+ return await this.httpService.post(
397
+ "/auth/switch-tenant",
398
+ e
399
+ );
400
+ }
401
+ async getUserTenants(e) {
402
+ return await this.httpService.get("/auth/tenants", {
403
+ headers: e
404
+ });
405
+ }
395
406
  async requestPasswordReset(e) {
396
407
  await this.httpService.post("/auth/password-reset/request", e);
397
408
  }
@@ -417,7 +428,7 @@ class Ke {
417
428
  });
418
429
  }
419
430
  }
420
- class Ie {
431
+ class Ce {
421
432
  constructor(e, t) {
422
433
  this.httpService = e, this.sessionManager = t;
423
434
  }
@@ -493,7 +504,7 @@ class Ie {
493
504
  };
494
505
  }
495
506
  }
496
- class Je {
507
+ class rt {
497
508
  constructor(e, t) {
498
509
  this.httpService = e, this.sessionManager = t;
499
510
  }
@@ -533,7 +544,7 @@ class Je {
533
544
  });
534
545
  }
535
546
  }
536
- class de {
547
+ class ue {
537
548
  constructor(e, t, r) {
538
549
  this.httpService = e, this.appId = t, this.sessionManager = r;
539
550
  }
@@ -611,7 +622,7 @@ class de {
611
622
  )).data;
612
623
  }
613
624
  }
614
- function Ye(i, e) {
625
+ function nt(i, e) {
615
626
  if (i === "localhost" || i.startsWith("127.") || i.startsWith("192.168."))
616
627
  return null;
617
628
  if (e) {
@@ -627,26 +638,26 @@ function Ye(i, e) {
627
638
  const r = i.split(".");
628
639
  return r.length >= 3 && r[0] !== "www" ? r[0] : null;
629
640
  }
630
- function Qe(i, e = "tenant", t) {
641
+ function st(i, e = "tenant", t) {
631
642
  const s = new URLSearchParams(i).get(e);
632
643
  return s ? (t && t.setItem("tenant", s), s) : t ? t.getItem("tenant") : null;
633
644
  }
634
- function Xe(i, e, t) {
645
+ function it(i, e, t) {
635
646
  const { tenantMode: r, baseDomain: s, selectorParam: o } = i;
636
- return r === "subdomain" ? Ye(e.hostname, s) : r === "selector" ? Qe(e.search, o, t) : null;
647
+ return r === "subdomain" ? nt(e.hostname, s) : r === "selector" ? st(e.search, o, t) : null;
637
648
  }
638
- function Ze(i, e, t) {
649
+ function ot(i, e, t) {
639
650
  if (t)
640
651
  return `${i}.${t}`;
641
652
  const r = e.split(".");
642
653
  return r.length === 2 ? `${i}.${e}` : r.length >= 3 ? (r[0] = i, r.join(".")) : null;
643
654
  }
644
- const fe = "_auth";
645
- function et(i) {
655
+ const me = "_auth";
656
+ function at(i) {
646
657
  const e = JSON.stringify(i);
647
658
  return btoa(e).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
648
659
  }
649
- function tt(i) {
660
+ function lt(i) {
650
661
  try {
651
662
  let e = i.replace(/-/g, "+").replace(/_/g, "/");
652
663
  for (; e.length % 4; )
@@ -657,16 +668,16 @@ function tt(i) {
657
668
  return null;
658
669
  }
659
670
  }
660
- function rt() {
671
+ function ct() {
661
672
  if (typeof window > "u")
662
673
  return console.log("[CrossDomainAuth] SSR environment, skipping URL token extraction"), null;
663
- const e = new URLSearchParams(window.location.search).get(fe);
674
+ const e = new URLSearchParams(window.location.search).get(me);
664
675
  if (console.log("[CrossDomainAuth] extractAuthTokensFromUrl called", {
665
676
  hasAuthParam: !!e,
666
677
  searchParams: window.location.search,
667
678
  encodedLength: e == null ? void 0 : e.length
668
679
  }), !e) return null;
669
- const t = tt(e);
680
+ const t = lt(e);
670
681
  return console.log("[CrossDomainAuth] Token decode result:", {
671
682
  success: !!t,
672
683
  hasAccessToken: !!(t != null && t.accessToken),
@@ -674,17 +685,17 @@ function rt() {
674
685
  expiresIn: t == null ? void 0 : t.expiresIn
675
686
  }), t;
676
687
  }
677
- function nt() {
688
+ function dt() {
678
689
  if (typeof window > "u") return;
679
690
  const i = new URL(window.location.href);
680
- i.searchParams.delete(fe), console.log("[CrossDomainAuth] Clearing auth tokens from URL", {
691
+ i.searchParams.delete(me), console.log("[CrossDomainAuth] Clearing auth tokens from URL", {
681
692
  oldUrl: window.location.href,
682
693
  newUrl: i.toString()
683
694
  }), window.history.replaceState({}, "", i.toString());
684
695
  }
685
- const xe = ue(null);
686
- function Ot({ config: i, children: e }) {
687
- const { baseUrl: t, appInfo: r, appId: s } = he(), o = ie(() => typeof window > "u" ? null : Xe(
696
+ const Ae = he(null);
697
+ function Yt({ config: i, children: e }) {
698
+ const { baseUrl: t, appInfo: r, appId: s } = ge(), o = ie(() => typeof window > "u" ? null : it(
688
699
  {
689
700
  tenantMode: i.tenantMode || "selector",
690
701
  baseDomain: i.baseDomain,
@@ -695,118 +706,118 @@ function Ot({ config: i, children: e }) {
695
706
  search: window.location.search
696
707
  },
697
708
  window.localStorage
698
- ), [i.tenantMode, i.baseDomain, i.selectorParam]), [a, g] = S(() => o()), w = Q(
709
+ ), [i.tenantMode, i.baseDomain, i.selectorParam]), [a, m] = k(() => o()), y = te(
699
710
  () => {
700
- var c, R, T;
711
+ var l, H, M;
701
712
  return {
702
- enabled: ((c = i.cache) == null ? void 0 : c.enabled) ?? !0,
703
- ttl: ((R = i.cache) == null ? void 0 : R.ttl) ?? 5 * 60 * 1e3,
713
+ enabled: ((l = i.cache) == null ? void 0 : l.enabled) ?? !0,
714
+ ttl: ((H = i.cache) == null ? void 0 : H.ttl) ?? 5 * 60 * 1e3,
704
715
  // 5 minutes default
705
- storageKey: ((T = i.cache) == null ? void 0 : T.storageKey) ?? `tenant_cache_${a || "default"}`
716
+ storageKey: ((M = i.cache) == null ? void 0 : M.storageKey) ?? `tenant_cache_${a || "default"}`
706
717
  };
707
718
  },
708
719
  [i.cache, a]
709
- ), [m, k] = S(() => {
720
+ ), [b, g] = k(() => {
710
721
  if (i.initialTenant) return i.initialTenant;
711
- if (!w.enabled || !a) return null;
722
+ if (!y.enabled || !a) return null;
712
723
  try {
713
- const c = localStorage.getItem(w.storageKey);
714
- if (!c) return null;
715
- const R = JSON.parse(c);
716
- return Date.now() - R.timestamp < w.ttl && R.tenantSlug === a ? R.data : (localStorage.removeItem(w.storageKey), null);
724
+ const l = localStorage.getItem(y.storageKey);
725
+ if (!l) return null;
726
+ const H = JSON.parse(l);
727
+ return Date.now() - H.timestamp < y.ttl && H.tenantSlug === a ? H.data : (localStorage.removeItem(y.storageKey), null);
717
728
  } catch {
718
729
  return null;
719
730
  }
720
- }), [b, f] = S(!m && !i.initialTenant), [A, E] = S(null), [$, L] = S(null), [P, u] = S(!1), [M, z] = S(null);
731
+ }), [S, f] = k(!b && !i.initialTenant), [T, I] = k(null), [C, R] = k(null), [x, h] = k(!1), [$, A] = k(null);
721
732
  re(() => {
722
- const c = o();
723
- g(c);
733
+ const l = o();
734
+ m(l);
724
735
  }, [o]);
725
- const N = (r == null ? void 0 : r.settingsSchema) || null, p = ie(
726
- async (c, R = !1) => {
727
- if (!(!R && w.enabled && m && m.domain === c))
736
+ const E = (r == null ? void 0 : r.settingsSchema) || null, N = ie(
737
+ async (l, H = !1) => {
738
+ if (!(!H && y.enabled && b && b.domain === l))
728
739
  try {
729
- f(!0), E(null);
730
- const T = new ne(t), d = await new de(T, s).getPublicTenantInfo(c);
731
- if (k(d), w.enabled)
740
+ f(!0), I(null);
741
+ const M = new ne(t), u = await new ue(M, s).getPublicTenantInfo(l);
742
+ if (g(u), y.enabled)
732
743
  try {
733
- const y = {
734
- data: d,
744
+ const w = {
745
+ data: u,
735
746
  timestamp: Date.now(),
736
- tenantSlug: c
747
+ tenantSlug: l
737
748
  };
738
- localStorage.setItem(w.storageKey, JSON.stringify(y));
739
- } catch (y) {
740
- console.warn("Failed to cache tenant info:", y);
749
+ localStorage.setItem(y.storageKey, JSON.stringify(w));
750
+ } catch (w) {
751
+ console.warn("Failed to cache tenant info:", w);
741
752
  }
742
- } catch (T) {
743
- const h = T instanceof Error ? T : new Error("Failed to load tenant information");
744
- E(h), k(null);
753
+ } catch (M) {
754
+ const p = M instanceof Error ? M : new Error("Failed to load tenant information");
755
+ I(p), g(null);
745
756
  } finally {
746
757
  f(!1);
747
758
  }
748
759
  },
749
- [t, s, w, m]
750
- ), O = ie(async () => {
751
- if (!(!w.enabled || !m || !a))
760
+ [t, s, y, b]
761
+ ), D = ie(async () => {
762
+ if (!(!y.enabled || !b || !a))
752
763
  try {
753
- const c = localStorage.getItem(w.storageKey);
754
- if (!c) return;
755
- const R = JSON.parse(c);
756
- if (Date.now() - R.timestamp > w.ttl * 0.5) {
757
- const h = new ne(t), y = await new de(h, s).getPublicTenantInfo(a);
758
- k(y);
764
+ const l = localStorage.getItem(y.storageKey);
765
+ if (!l) return;
766
+ const H = JSON.parse(l);
767
+ if (Date.now() - H.timestamp > y.ttl * 0.5) {
768
+ const p = new ne(t), w = await new ue(p, s).getPublicTenantInfo(a);
769
+ g(w);
759
770
  const G = {
760
- data: y,
771
+ data: w,
761
772
  timestamp: Date.now(),
762
773
  tenantSlug: a
763
774
  };
764
- localStorage.setItem(w.storageKey, JSON.stringify(G));
775
+ localStorage.setItem(y.storageKey, JSON.stringify(G));
765
776
  }
766
- } catch (c) {
767
- console.warn("Background tenant refresh failed:", c);
777
+ } catch (l) {
778
+ console.warn("Background tenant refresh failed:", l);
768
779
  }
769
- }, [t, s, w, m, a]), v = ie(async () => {
770
- if (m != null && m.id)
780
+ }, [t, s, y, b, a]), P = ie(async () => {
781
+ if (b != null && b.id)
771
782
  try {
772
- u(!0), z(null);
773
- const c = new ne(t), T = await new de(c, m.appId).getTenantSettings(m.id);
774
- L(T);
775
- } catch (c) {
776
- const R = c instanceof Error ? c : new Error("Failed to load tenant settings");
777
- z(R), L(null);
783
+ h(!0), A(null);
784
+ const l = new ne(t), M = await new ue(l, b.appId).getTenantSettings(b.id);
785
+ R(M);
786
+ } catch (l) {
787
+ const H = l instanceof Error ? l : new Error("Failed to load tenant settings");
788
+ A(H), R(null);
778
789
  } finally {
779
- u(!1);
790
+ h(!1);
780
791
  }
781
- }, [t, m]), C = ie(() => {
782
- v();
783
- }, [v]), x = ie(
784
- (c) => {
785
- if (!N)
792
+ }, [t, b]), O = ie(() => {
793
+ P();
794
+ }, [P]), c = ie(
795
+ (l) => {
796
+ if (!E)
786
797
  return { isValid: !0, errors: [] };
787
- const R = [];
798
+ const H = [];
788
799
  try {
789
- return N.properties && Object.entries(N.properties).forEach(([T, h]) => {
790
- var y;
791
- const d = c[T];
792
- if ((y = N.required) != null && y.includes(T) && d == null) {
793
- R.push(`Field '${T}' is required`);
800
+ return E.properties && Object.entries(E.properties).forEach(([M, p]) => {
801
+ var w;
802
+ const u = l[M];
803
+ if ((w = E.required) != null && w.includes(M) && u == null) {
804
+ H.push(`Field '${M}' is required`);
794
805
  return;
795
806
  }
796
- if (d != null) {
797
- if (h.type) {
798
- const G = h.type, D = typeof d;
799
- G === "string" && D !== "string" ? R.push(`Field '${T}' must be a string`) : (G === "number" || G === "integer") && D !== "number" ? R.push(`Field '${T}' must be a number`) : G === "boolean" && D !== "boolean" ? R.push(`Field '${T}' must be a boolean`) : G === "array" && !Array.isArray(d) && R.push(`Field '${T}' must be an array`);
807
+ if (u != null) {
808
+ if (p.type) {
809
+ const G = p.type, K = typeof u;
810
+ G === "string" && K !== "string" ? H.push(`Field '${M}' must be a string`) : (G === "number" || G === "integer") && K !== "number" ? H.push(`Field '${M}' must be a number`) : G === "boolean" && K !== "boolean" ? H.push(`Field '${M}' must be a boolean`) : G === "array" && !Array.isArray(u) && H.push(`Field '${M}' must be an array`);
800
811
  }
801
- h.minLength !== void 0 && typeof d == "string" && d.length < h.minLength && R.push(
802
- `Field '${T}' must be at least ${h.minLength} characters long`
803
- ), h.maxLength !== void 0 && typeof d == "string" && d.length > h.maxLength && R.push(
804
- `Field '${T}' must be no more than ${h.maxLength} characters long`
805
- ), h.minimum !== void 0 && typeof d == "number" && d < h.minimum && R.push(`Field '${T}' must be at least ${h.minimum}`), h.maximum !== void 0 && typeof d == "number" && d > h.maximum && R.push(`Field '${T}' must be no more than ${h.maximum}`), h.pattern && typeof d == "string" && (new RegExp(h.pattern).test(d) || R.push(`Field '${T}' does not match the required pattern`)), h.enum && !h.enum.includes(d) && R.push(`Field '${T}' must be one of: ${h.enum.join(", ")}`);
812
+ p.minLength !== void 0 && typeof u == "string" && u.length < p.minLength && H.push(
813
+ `Field '${M}' must be at least ${p.minLength} characters long`
814
+ ), p.maxLength !== void 0 && typeof u == "string" && u.length > p.maxLength && H.push(
815
+ `Field '${M}' must be no more than ${p.maxLength} characters long`
816
+ ), p.minimum !== void 0 && typeof u == "number" && u < p.minimum && H.push(`Field '${M}' must be at least ${p.minimum}`), p.maximum !== void 0 && typeof u == "number" && u > p.maximum && H.push(`Field '${M}' must be no more than ${p.maximum}`), p.pattern && typeof u == "string" && (new RegExp(p.pattern).test(u) || H.push(`Field '${M}' does not match the required pattern`)), p.enum && !p.enum.includes(u) && H.push(`Field '${M}' must be one of: ${p.enum.join(", ")}`);
806
817
  }
807
818
  }), {
808
- isValid: R.length === 0,
809
- errors: R
819
+ isValid: H.length === 0,
820
+ errors: H
810
821
  };
811
822
  } catch {
812
823
  return {
@@ -815,91 +826,91 @@ function Ot({ config: i, children: e }) {
815
826
  };
816
827
  }
817
828
  },
818
- [N]
829
+ [E]
819
830
  );
820
831
  re(() => {
821
- !i.initialTenant && a ? m ? O() : p(a) : !i.initialTenant && !a && (k(null), E(null), f(!1));
822
- }, [i.initialTenant, a, m, p, O]), re(() => {
823
- m != null && m.id ? v() : (L(null), z(null), u(!1));
824
- }, [m == null ? void 0 : m.id, v]);
825
- const I = ie(
826
- (c, R) => {
827
- const { mode: T = "reload", tokens: h, redirectPath: d } = R || {}, y = i.tenantMode || "selector";
828
- if (localStorage.setItem("tenant", c), y === "subdomain") {
829
- const G = window.location.hostname, D = Ze(
830
- c,
832
+ !i.initialTenant && a ? b ? D() : N(a) : !i.initialTenant && !a && (g(null), I(null), f(!1));
833
+ }, [i.initialTenant, a, b, N, D]), re(() => {
834
+ b != null && b.id ? P() : (R(null), A(null), h(!1));
835
+ }, [b == null ? void 0 : b.id, P]);
836
+ const L = ie(
837
+ (l, H) => {
838
+ const { mode: M = "reload", tokens: p, redirectPath: u } = H || {}, w = i.tenantMode || "selector";
839
+ if (localStorage.setItem("tenant", l), w === "subdomain") {
840
+ const G = window.location.hostname, K = ot(
841
+ l,
831
842
  G,
832
843
  i.baseDomain
833
844
  );
834
- if (!D) {
845
+ if (!K) {
835
846
  console.warn(
836
847
  "[TenantProvider] Cannot switch subdomain, invalid hostname:",
837
848
  G
838
849
  );
839
850
  return;
840
851
  }
841
- const H = d || window.location.pathname, U = new URL(`${window.location.protocol}//${D}${H}`);
842
- new URLSearchParams(window.location.search).forEach((B, K) => {
843
- K !== fe && U.searchParams.set(K, B);
844
- }), h && U.searchParams.set(fe, et(h)), window.location.href = U.toString();
845
- } else if (y === "selector") {
846
- const G = d || window.location.pathname, D = new URLSearchParams(window.location.search);
847
- if (D.set(i.selectorParam || "tenant", c), T === "reload") {
848
- const H = `${G}?${D.toString()}${window.location.hash}`;
849
- window.location.href = H;
852
+ const U = u || window.location.pathname, q = new URL(`${window.location.protocol}//${K}${U}`);
853
+ new URLSearchParams(window.location.search).forEach((v, J) => {
854
+ J !== me && q.searchParams.set(J, v);
855
+ }), p && q.searchParams.set(me, at(p)), window.location.href = q.toString();
856
+ } else if (w === "selector") {
857
+ const G = u || window.location.pathname, K = new URLSearchParams(window.location.search);
858
+ if (K.set(i.selectorParam || "tenant", l), M === "reload") {
859
+ const U = `${G}?${K.toString()}${window.location.hash}`;
860
+ window.location.href = U;
850
861
  } else {
851
- const H = `${G}?${D.toString()}${window.location.hash}`;
852
- window.history.pushState({}, "", H), g(c), p(c);
862
+ const U = `${G}?${K.toString()}${window.location.hash}`;
863
+ window.history.pushState({}, "", U), m(l), N(l);
853
864
  }
854
865
  }
855
866
  },
856
- [i.tenantMode, i.selectorParam, i.baseDomain, p]
857
- ), F = Q(() => ({
867
+ [i.tenantMode, i.selectorParam, i.baseDomain, N]
868
+ ), F = te(() => ({
858
869
  // Tenant info
859
- tenant: m,
870
+ tenant: b,
860
871
  tenantSlug: a,
861
- isTenantLoading: b,
862
- tenantError: A,
872
+ isTenantLoading: S,
873
+ tenantError: T,
863
874
  retryTenant: () => {
864
- a && p(a);
875
+ a && N(a);
865
876
  },
866
877
  // Settings
867
- settings: $,
868
- settingsSchema: N,
869
- isSettingsLoading: P,
870
- settingsError: M,
878
+ settings: C,
879
+ settingsSchema: E,
880
+ isSettingsLoading: x,
881
+ settingsError: $,
871
882
  // Actions
872
- refreshSettings: C,
873
- switchTenant: I,
883
+ refreshSettings: O,
884
+ switchTenant: L,
874
885
  // Validation
875
- validateSettings: x
886
+ validateSettings: c
876
887
  }), [
877
- m,
878
- a,
879
888
  b,
880
- A,
881
- $,
882
- N,
883
- P,
884
- M,
889
+ a,
890
+ S,
891
+ T,
885
892
  C,
886
- I,
887
- x
893
+ E,
894
+ x,
895
+ $,
896
+ O,
897
+ L,
898
+ c
888
899
  ]);
889
- return /* @__PURE__ */ n(xe.Provider, { value: F, children: e });
900
+ return /* @__PURE__ */ n(Ae.Provider, { value: F, children: e });
890
901
  }
891
- function me() {
892
- const i = se(xe);
902
+ function ye() {
903
+ const i = se(Ae);
893
904
  if (!i)
894
905
  throw new Error("useTenant must be used within a TenantProvider");
895
906
  return i;
896
907
  }
897
- function ye() {
898
- return se(xe);
908
+ function we() {
909
+ return se(Ae);
899
910
  }
900
- const Wt = me;
901
- function jt() {
902
- const { settings: i, settingsSchema: e, isSettingsLoading: t, settingsError: r, validateSettings: s } = me();
911
+ const Qt = ye;
912
+ function Xt() {
913
+ const { settings: i, settingsSchema: e, isSettingsLoading: t, settingsError: r, validateSettings: s } = ye();
903
914
  return {
904
915
  settings: i,
905
916
  settingsSchema: e,
@@ -908,8 +919,8 @@ function jt() {
908
919
  validateSettings: s
909
920
  };
910
921
  }
911
- function le() {
912
- const { tenant: i, tenantSlug: e, isTenantLoading: t, tenantError: r, retryTenant: s } = me();
922
+ function ce() {
923
+ const { tenant: i, tenantSlug: e, isTenantLoading: t, tenantError: r, retryTenant: s } = ye();
913
924
  return {
914
925
  tenant: i,
915
926
  tenantSlug: e,
@@ -918,313 +929,385 @@ function le() {
918
929
  retry: s
919
930
  };
920
931
  }
921
- const Ae = ue(null);
922
- function Vt({ config: i = {}, children: e }) {
923
- const { appId: t, baseUrl: r } = he(), { tenant: s, tenantSlug: o, switchTenant: a } = me(), [g, w] = S(i.initialRoles || []), [m, k] = S(!i.initialRoles), [b, f] = S(null), [A, E] = S(!1), [$, L] = S(null), [P, u] = S(0), M = Ge({ done: !1, urlTokens: null });
924
- M.current.done || (M.current.done = !0, M.current.urlTokens = rt(), M.current.urlTokens && console.log(
932
+ const Pe = he(null);
933
+ function Zt({ config: i = {}, children: e }) {
934
+ const { appId: t, baseUrl: r } = ge(), { tenant: s, tenantSlug: o, switchTenant: a } = ye(), [m, y] = k(i.initialRoles || []), [b, g] = k(!i.initialRoles), [S, f] = k(null), [T, I] = k(!1), [C, R] = k(null), [x, h] = k(0), [$, A] = k(() => {
935
+ try {
936
+ const v = localStorage.getItem("userTenants");
937
+ return v ? JSON.parse(v) : [];
938
+ } catch {
939
+ return [];
940
+ }
941
+ }), [E, N] = k(!1), D = Ne({ done: !1, urlTokens: null });
942
+ D.current.done || (D.current.done = !0, D.current.urlTokens = ct(), D.current.urlTokens && console.log(
925
943
  "[AuthProvider] SYNC: URL tokens found, will block isAuthReady until user loaded"
926
944
  ));
927
- const [z, N] = S(() => {
928
- const D = M.current.urlTokens !== null;
929
- return console.log("[AuthProvider] SYNC: isLoadingAfterUrlTokens initial:", D), D;
930
- }), p = Q(() => {
931
- const D = new Se({
945
+ const [P, O] = k(() => {
946
+ const v = D.current.urlTokens !== null;
947
+ return console.log("[AuthProvider] SYNC: isLoadingAfterUrlTokens initial:", v), v;
948
+ }), c = te(() => {
949
+ const v = new ke({
932
950
  tenantSlug: o,
933
951
  onRefreshFailed: i.onRefreshFailed,
934
952
  baseUrl: r
935
953
  });
936
- return M.current.urlTokens && (console.log("[AuthProvider] SYNC: Saving URL tokens to session manager"), D.setTokens({
937
- accessToken: M.current.urlTokens.accessToken,
938
- refreshToken: M.current.urlTokens.refreshToken,
939
- expiresIn: M.current.urlTokens.expiresIn
940
- }), console.log("[AuthProvider] SYNC: Session valid:", D.hasValidSession())), D;
941
- }, [o, r, i.onRefreshFailed]), O = M.current.done && !z, v = Q(() => {
942
- const D = new ne(r);
943
- return D.setSessionManager(p), D;
944
- }, [r, p]), C = Q(() => new Ke(new ne(r)), [r]), x = Q(() => new Je(v, p), [v, p]), I = Q(() => new Ie(new ne(r)), [r]), F = Q(() => b || p.getUser(), [b, p]), c = Q(() => F != null && F.roleId && g.find((D) => D.id === F.roleId) || null, [F, g]), R = Q(() => (c == null ? void 0 : c.permissions) || [], [c]), T = Q(() => p.hasValidSession() && b !== null, [p, b]), h = 5 * 60 * 1e3, d = Q(() => {
945
- const D = async (q = !1) => {
954
+ return D.current.urlTokens && (console.log("[AuthProvider] SYNC: Saving URL tokens to session manager"), v.setTokens({
955
+ accessToken: D.current.urlTokens.accessToken,
956
+ refreshToken: D.current.urlTokens.refreshToken,
957
+ expiresIn: D.current.urlTokens.expiresIn
958
+ }), console.log("[AuthProvider] SYNC: Session valid:", v.hasValidSession())), v;
959
+ }, [o, r, i.onRefreshFailed]), L = D.current.done && !P, F = te(() => {
960
+ const v = new ne(r);
961
+ return v.setSessionManager(c), v;
962
+ }, [r, c]), l = te(() => new tt(new ne(r)), [r]), H = te(() => new rt(F, c), [F, c]), M = te(() => new Ce(new ne(r)), [r]), p = te(() => S || c.getUser(), [S, c]), u = te(() => p != null && p.roleId && m.find((v) => v.id === p.roleId) || null, [p, m]), w = te(() => (u == null ? void 0 : u.permissions) || [], [u]), G = te(() => c.hasValidSession() && S !== null, [c, S]), K = 5 * 60 * 1e3, U = te(() => {
963
+ const v = async (B = !1) => {
946
964
  try {
947
- if (!p.hasValidSession())
965
+ if (!c.hasValidSession())
948
966
  return;
949
- const W = Date.now();
950
- if (!q && W - P < h && b)
967
+ const z = Date.now();
968
+ if (!B && z - x < K && S)
951
969
  return;
952
- const _ = p.getUserId();
953
- if (!_) {
970
+ const W = c.getUserId();
971
+ if (!W) {
954
972
  console.warn("[AuthProvider] No userId available in token or storage");
955
973
  return;
956
974
  }
957
- E(!0), L(null);
958
- const Z = await x.getUserById(_);
959
- f(Z), p.setUser(Z), u(Date.now());
960
- } catch (W) {
961
- const J = W instanceof Error ? W : new Error("Failed to load user data");
962
- L(J), console.error("[AuthProvider] Failed to load user data:", J);
975
+ I(!0), R(null);
976
+ const Q = await H.getUserById(W);
977
+ f(Q), c.setUser(Q), h(Date.now());
978
+ } catch (z) {
979
+ const Y = z instanceof Error ? z : new Error("Failed to load user data");
980
+ R(Y), console.error("[AuthProvider] Failed to load user data:", Y);
963
981
  } finally {
964
- E(!1);
982
+ I(!1);
965
983
  }
966
- }, H = async () => {
967
- await D();
968
- }, U = async (q) => {
969
- const { username: W, password: J, tenantSlug: _, redirectPath: Z } = q;
970
- let ee = s == null ? void 0 : s.id, X = o, Y = p;
971
- _ && (ee = (await new de(v, t).getPublicTenantInfo(_)).id, X = _);
972
- const te = await C.login({
973
- username: W,
974
- password: J,
984
+ }, J = async () => {
985
+ await v();
986
+ }, le = async (B) => {
987
+ var Le;
988
+ const { username: z, password: Y, tenantSlug: W, redirectPath: Q } = B;
989
+ let X = s == null ? void 0 : s.id, Z = o, ee = c;
990
+ W && (X = (await new ue(F, t).getPublicTenantInfo(W)).id, Z = W);
991
+ const _ = await l.login({
992
+ username: z,
993
+ password: Y,
975
994
  appId: t,
976
- tenantId: ee
977
- }), ce = _ && _ !== o;
978
- if (ce && (Y = new Se({
979
- tenantSlug: X,
995
+ tenantId: X
996
+ }), de = W && W !== o;
997
+ if (de && (ee = new ke({
998
+ tenantSlug: Z,
980
999
  baseUrl: r
981
- })), Y.setTokens({
982
- accessToken: te.accessToken,
983
- refreshToken: te.refreshToken,
984
- expiresIn: te.expiresIn
985
- }), te.user) {
986
- Y.setUser(te.user), f(te.user);
1000
+ })), ee.setTokens({
1001
+ accessToken: _.accessToken,
1002
+ refreshToken: _.refreshToken,
1003
+ expiresIn: _.expiresIn
1004
+ }), _.user) {
1005
+ ee.setUser(_.user), f(_.user);
987
1006
  try {
988
- await D();
989
- } catch (be) {
990
- console.warn("Failed to load complete user data after login:", be);
1007
+ await v();
1008
+ } catch (pe) {
1009
+ console.warn("Failed to load complete user data after login:", pe);
991
1010
  }
992
1011
  }
993
- return ce && X && X !== o && a(X, {
1012
+ if (_.tenants && _.tenants.length > 0) {
1013
+ A(_.tenants);
1014
+ try {
1015
+ localStorage.setItem("userTenants", JSON.stringify(_.tenants));
1016
+ } catch {
1017
+ }
1018
+ }
1019
+ const ve = ((Le = _.user) == null ? void 0 : Le.tenantId) !== null;
1020
+ if (N(ve), de && Z && Z !== o && a(Z, {
994
1021
  tokens: {
995
- accessToken: te.accessToken,
996
- refreshToken: te.refreshToken,
997
- expiresIn: te.expiresIn
1022
+ accessToken: _.accessToken,
1023
+ refreshToken: _.refreshToken,
1024
+ expiresIn: _.expiresIn
998
1025
  },
999
- redirectPath: Z
1000
- }), te;
1001
- }, V = async (q) => {
1002
- const { email: W, phoneNumber: J, name: _, password: Z, lastName: ee, tenantId: X } = q;
1003
- if (!W && !J)
1026
+ redirectPath: Q
1027
+ }), !ve && _.tenants && _.tenants.length > 0) {
1028
+ const pe = i.autoSwitchSingleTenant !== !1;
1029
+ if (_.tenants.length === 1 && pe) {
1030
+ const Ee = _.tenants[0];
1031
+ a(Ee.subdomain, {
1032
+ tokens: {
1033
+ accessToken: _.accessToken,
1034
+ refreshToken: _.refreshToken,
1035
+ expiresIn: _.expiresIn
1036
+ },
1037
+ redirectPath: Q
1038
+ });
1039
+ } else _.tenants.length > 1 && i.onTenantSelectionRequired && i.onTenantSelectionRequired(_.tenants);
1040
+ }
1041
+ return _;
1042
+ }, be = async (B) => {
1043
+ const { email: z, phoneNumber: Y, name: W, password: Q, lastName: X, tenantId: Z } = B;
1044
+ if (!z && !Y)
1004
1045
  throw new Error("Either email or phoneNumber is required");
1005
- if (!_ || !Z)
1046
+ if (!W || !Q)
1006
1047
  throw new Error("Name and password are required");
1007
- const Y = X ?? (s == null ? void 0 : s.id);
1008
- return await C.signup({
1009
- email: W,
1010
- phoneNumber: J,
1011
- name: _,
1012
- password: Z,
1013
- tenantId: Y,
1014
- lastName: ee,
1048
+ const ee = Z ?? (s == null ? void 0 : s.id);
1049
+ return await l.signup({
1050
+ email: z,
1051
+ phoneNumber: Y,
1052
+ name: W,
1053
+ password: Q,
1054
+ tenantId: ee,
1055
+ lastName: X,
1015
1056
  appId: t
1016
1057
  });
1017
- }, B = async (q) => {
1018
- const { email: W, phoneNumber: J, name: _, password: Z, tenantName: ee, lastName: X } = q;
1019
- if (!W && !J)
1058
+ }, Oe = async (B) => {
1059
+ const { email: z, phoneNumber: Y, name: W, password: Q, tenantName: X, lastName: Z } = B;
1060
+ if (!z && !Y)
1020
1061
  throw new Error("Either email or phoneNumber is required");
1021
- if (!_ || !Z || !ee)
1062
+ if (!W || !Q || !X)
1022
1063
  throw new Error("Name, password, and tenantName are required");
1023
- return await C.signupTenantAdmin({
1024
- email: W,
1025
- phoneNumber: J,
1026
- name: _,
1027
- password: Z,
1028
- tenantName: ee,
1064
+ return await l.signupTenantAdmin({
1065
+ email: z,
1066
+ phoneNumber: Y,
1067
+ name: W,
1068
+ password: Q,
1069
+ tenantName: X,
1029
1070
  appId: t,
1030
- lastName: X
1071
+ lastName: Z
1031
1072
  });
1032
- }, K = async (q) => {
1033
- const { currentPassword: W, newPassword: J } = q, _ = await p.getAuthHeaders();
1034
- await C.changePassword({ currentPassword: W, newPassword: J }, _);
1035
- }, ge = async (q) => {
1036
- const { email: W, tenantId: J } = q, _ = J ?? (s == null ? void 0 : s.id);
1037
- if (!_)
1073
+ }, We = async (B) => {
1074
+ const { currentPassword: z, newPassword: Y } = B, W = await c.getAuthHeaders();
1075
+ await l.changePassword({ currentPassword: z, newPassword: Y }, W);
1076
+ }, je = async (B) => {
1077
+ const { email: z, tenantId: Y } = B, W = Y ?? (s == null ? void 0 : s.id);
1078
+ if (!W)
1038
1079
  throw new Error("tenantId is required for password reset");
1039
- await C.requestPasswordReset({ email: W, tenantId: _ });
1040
- }, Ne = async (q) => {
1041
- const { token: W, newPassword: J } = q;
1042
- await C.confirmPasswordReset({ token: W, newPassword: J });
1043
- }, Ue = async (q) => {
1044
- const { email: W, frontendUrl: J, name: _, lastName: Z, tenantId: ee } = q, X = ee ?? (s == null ? void 0 : s.id);
1045
- if (!X)
1080
+ await l.requestPasswordReset({ email: z, tenantId: W });
1081
+ }, Ve = async (B) => {
1082
+ const { token: z, newPassword: Y } = B;
1083
+ await l.confirmPasswordReset({ token: z, newPassword: Y });
1084
+ }, _e = async (B) => {
1085
+ const { email: z, frontendUrl: Y, name: W, lastName: Q, tenantId: X } = B, Z = X ?? (s == null ? void 0 : s.id);
1086
+ if (!Z)
1046
1087
  throw new Error("tenantId is required for magic link authentication");
1047
- return await C.sendMagicLink({
1048
- email: W,
1049
- tenantId: X,
1050
- frontendUrl: J,
1051
- name: _,
1052
- lastName: Z,
1088
+ return await l.sendMagicLink({
1089
+ email: z,
1090
+ tenantId: Z,
1091
+ frontendUrl: Y,
1092
+ name: W,
1093
+ lastName: Q,
1053
1094
  appId: t
1054
1095
  });
1055
- }, Be = async (q) => {
1056
- const { token: W, email: J, tenantSlug: _ } = q;
1057
- let Z = s == null ? void 0 : s.id, ee = o, X = p;
1058
- _ && (Z = (await new de(v, t).getPublicTenantInfo(_)).id, ee = _);
1059
- const Y = await C.verifyMagicLink({
1060
- token: W,
1061
- email: J,
1096
+ }, Ge = async (B) => {
1097
+ const { token: z, email: Y, tenantSlug: W } = B;
1098
+ let Q = s == null ? void 0 : s.id, X = o, Z = c;
1099
+ W && (Q = (await new ue(F, t).getPublicTenantInfo(W)).id, X = W);
1100
+ const ee = await l.verifyMagicLink({
1101
+ token: z,
1102
+ email: Y,
1062
1103
  appId: t,
1063
- tenantId: Z
1064
- }), te = _ && _ !== o;
1065
- if (te && (X = new Se({
1066
- tenantSlug: ee,
1104
+ tenantId: Q
1105
+ }), _ = W && W !== o;
1106
+ if (_ && (Z = new ke({
1107
+ tenantSlug: X,
1067
1108
  baseUrl: r
1068
- })), X.setTokens({
1069
- accessToken: Y.accessToken,
1070
- refreshToken: Y.refreshToken,
1071
- expiresIn: Y.expiresIn
1072
- }), Y.user) {
1073
- X.setUser(Y.user), f(Y.user);
1109
+ })), Z.setTokens({
1110
+ accessToken: ee.accessToken,
1111
+ refreshToken: ee.refreshToken,
1112
+ expiresIn: ee.expiresIn
1113
+ }), ee.user) {
1114
+ Z.setUser(ee.user), f(ee.user);
1074
1115
  try {
1075
- await D();
1076
- } catch (ce) {
1077
- console.warn("Failed to load complete user data after magic link login:", ce);
1116
+ await v();
1117
+ } catch (de) {
1118
+ console.warn("Failed to load complete user data after magic link login:", de);
1078
1119
  }
1079
1120
  }
1080
- return te && ee && ee !== o && a(ee, {
1121
+ return _ && X && X !== o && a(X, {
1081
1122
  tokens: {
1082
- accessToken: Y.accessToken,
1083
- refreshToken: Y.refreshToken,
1084
- expiresIn: Y.expiresIn
1123
+ accessToken: ee.accessToken,
1124
+ refreshToken: ee.refreshToken,
1125
+ expiresIn: ee.expiresIn
1085
1126
  }
1086
- }), Y;
1087
- }, qe = async () => {
1088
- const q = p.getTokens();
1089
- if (!(q != null && q.refreshToken))
1127
+ }), ee;
1128
+ }, Je = async () => {
1129
+ const B = c.getTokens();
1130
+ if (!(B != null && B.refreshToken))
1090
1131
  throw new Error("No refresh token available");
1091
- const W = await C.refreshToken({
1092
- refreshToken: q.refreshToken
1132
+ const z = await l.refreshToken({
1133
+ refreshToken: B.refreshToken
1093
1134
  });
1094
- p.setTokens({
1095
- accessToken: W.accessToken,
1096
- refreshToken: W.refreshToken || q.refreshToken,
1097
- expiresIn: W.expiresIn
1135
+ c.setTokens({
1136
+ accessToken: z.accessToken,
1137
+ refreshToken: z.refreshToken || B.refreshToken,
1138
+ expiresIn: z.expiresIn
1098
1139
  });
1099
- }, ze = () => {
1100
- p.clearSession(), f(null), L(null);
1101
- }, Oe = (q) => {
1102
- p.setTokens(q);
1103
- }, We = () => p.hasValidSession(), je = () => {
1104
- p.clearSession(), f(null), L(null);
1105
- }, Ve = async () => {
1140
+ }, Ke = () => {
1141
+ c.clearSession(), f(null), R(null), A([]), N(!1);
1142
+ try {
1143
+ localStorage.removeItem("userTenants");
1144
+ } catch {
1145
+ }
1146
+ }, Ye = (B) => {
1147
+ c.setTokens(B);
1148
+ }, Qe = () => c.hasValidSession(), Xe = () => {
1149
+ c.clearSession(), f(null), R(null);
1150
+ }, Ze = async () => {
1106
1151
  if (t)
1107
1152
  try {
1108
- k(!0);
1109
- const { roles: q } = await I.getRolesByApp(t);
1110
- w(q);
1111
- } catch (q) {
1112
- console.error("Failed to fetch roles:", q);
1153
+ g(!0);
1154
+ const { roles: B } = await M.getRolesByApp(t);
1155
+ y(B);
1156
+ } catch (B) {
1157
+ console.error("Failed to fetch roles:", B);
1113
1158
  } finally {
1114
- k(!1);
1159
+ g(!1);
1115
1160
  }
1116
- }, _e = async () => {
1117
- await Ve();
1118
- }, we = (q) => {
1119
- if (!R || R.length === 0)
1161
+ }, et = async () => {
1162
+ await Ze();
1163
+ }, Se = (B) => {
1164
+ if (!w || w.length === 0)
1120
1165
  return !1;
1121
- if (typeof q == "string")
1122
- return R.includes(q);
1123
- const W = `${q.resource}.${q.action}`;
1124
- return R.includes(W);
1166
+ if (typeof B == "string")
1167
+ return w.includes(B);
1168
+ const z = `${B.resource}.${B.action}`;
1169
+ return w.includes(z);
1125
1170
  };
1126
1171
  return {
1127
1172
  // RFC-003: Authentication state
1128
- isAuthenticated: T,
1129
- sessionManager: p,
1130
- authenticatedHttpService: v,
1131
- login: U,
1132
- signup: V,
1133
- signupTenantAdmin: B,
1134
- sendMagicLink: Ue,
1135
- verifyMagicLink: Be,
1136
- changePassword: K,
1137
- requestPasswordReset: ge,
1138
- confirmPasswordReset: Ne,
1139
- refreshToken: qe,
1140
- logout: ze,
1141
- setTokens: Oe,
1142
- hasValidSession: We,
1143
- clearSession: je,
1144
- currentUser: b,
1145
- isUserLoading: A,
1146
- userError: $,
1147
- loadUserData: D,
1148
- refreshUser: H,
1149
- isAuthInitializing: !O,
1150
- isAuthReady: O,
1151
- userRole: c,
1152
- userPermissions: R,
1153
- availableRoles: g,
1154
- rolesLoading: m,
1155
- hasPermission: we,
1156
- hasAnyPermission: (q) => q.some((W) => we(W)),
1157
- hasAllPermissions: (q) => q.every((W) => we(W)),
1158
- getUserPermissionStrings: () => R || [],
1159
- refreshRoles: _e
1173
+ isAuthenticated: G,
1174
+ sessionManager: c,
1175
+ authenticatedHttpService: F,
1176
+ login: le,
1177
+ signup: be,
1178
+ signupTenantAdmin: Oe,
1179
+ sendMagicLink: _e,
1180
+ verifyMagicLink: Ge,
1181
+ changePassword: We,
1182
+ requestPasswordReset: je,
1183
+ confirmPasswordReset: Ve,
1184
+ refreshToken: Je,
1185
+ logout: Ke,
1186
+ setTokens: Ye,
1187
+ hasValidSession: Qe,
1188
+ clearSession: Xe,
1189
+ currentUser: S,
1190
+ isUserLoading: T,
1191
+ userError: C,
1192
+ loadUserData: v,
1193
+ refreshUser: J,
1194
+ isAuthInitializing: !L,
1195
+ isAuthReady: L,
1196
+ userRole: u,
1197
+ userPermissions: w,
1198
+ availableRoles: m,
1199
+ rolesLoading: b,
1200
+ hasPermission: Se,
1201
+ hasAnyPermission: (B) => B.some((z) => Se(z)),
1202
+ hasAllPermissions: (B) => B.every((z) => Se(z)),
1203
+ getUserPermissionStrings: () => w || [],
1204
+ refreshRoles: et,
1205
+ // RFC-004: Multi-tenant user membership
1206
+ userTenants: $,
1207
+ hasTenantContext: E,
1208
+ switchToTenant: async (B, z) => {
1209
+ const { redirectPath: Y } = z || {}, W = c.getTokens();
1210
+ if (!(W != null && W.refreshToken))
1211
+ throw new Error("No refresh token available for tenant switch");
1212
+ const Q = await l.switchTenant({
1213
+ refreshToken: W.refreshToken,
1214
+ tenantId: B
1215
+ });
1216
+ c.setTokens({
1217
+ accessToken: Q.accessToken,
1218
+ refreshToken: W.refreshToken,
1219
+ // Keep the same refresh token
1220
+ expiresIn: Q.expiresIn
1221
+ }), f(Q.user), c.setUser(Q.user), N(!0);
1222
+ const X = $.find((Z) => Z.id === B);
1223
+ X && a(X.subdomain, {
1224
+ tokens: {
1225
+ accessToken: Q.accessToken,
1226
+ refreshToken: W.refreshToken,
1227
+ expiresIn: Q.expiresIn
1228
+ },
1229
+ redirectPath: Y
1230
+ });
1231
+ },
1232
+ refreshUserTenants: async () => {
1233
+ const B = await c.getAuthHeaders(), z = await l.getUserTenants(B);
1234
+ A(z);
1235
+ try {
1236
+ localStorage.setItem("userTenants", JSON.stringify(z));
1237
+ } catch {
1238
+ }
1239
+ return z;
1240
+ }
1160
1241
  };
1161
1242
  }, [
1162
- T,
1163
- p,
1164
- v,
1165
- C,
1166
- x,
1167
- I,
1243
+ G,
1244
+ c,
1245
+ F,
1246
+ l,
1247
+ H,
1248
+ M,
1168
1249
  t,
1169
1250
  s,
1170
1251
  o,
1171
1252
  a,
1172
- g,
1173
- b,
1174
- A,
1253
+ m,
1254
+ S,
1255
+ T,
1256
+ C,
1175
1257
  $,
1176
- O,
1177
- c,
1178
- R,
1179
- P,
1180
- h
1258
+ E,
1259
+ L,
1260
+ u,
1261
+ w,
1262
+ x,
1263
+ K
1181
1264
  ]);
1182
1265
  re(() => {
1183
1266
  !i.initialRoles && t && (async () => {
1184
1267
  try {
1185
- k(!0);
1186
- const H = new ne(r), U = new Ie(H), { roles: V } = await U.getRolesByApp(t);
1187
- w(V);
1188
- } catch (H) {
1189
- console.error("Failed to fetch roles:", H);
1268
+ g(!0);
1269
+ const J = new ne(r), le = new Ce(J), { roles: be } = await le.getRolesByApp(t);
1270
+ y(be);
1271
+ } catch (J) {
1272
+ console.error("Failed to fetch roles:", J);
1190
1273
  } finally {
1191
- k(!1);
1274
+ g(!1);
1192
1275
  }
1193
1276
  })();
1194
1277
  }, [t, r, i.initialRoles]);
1195
- const [y, G] = S(!1);
1278
+ const [q, V] = k(!1);
1196
1279
  return re(() => {
1197
- y || (G(!0), M.current.urlTokens && (console.log("[AuthProvider] EFFECT: Cleaning up URL after sync token processing"), nt(), N(!0), console.log("[AuthProvider] EFFECT: Loading user data (blocking isAuthReady)..."), d.loadUserData().catch((D) => {
1198
- console.error("[AuthProvider] Failed to load user data:", D);
1280
+ q || (V(!0), D.current.urlTokens && (console.log("[AuthProvider] EFFECT: Cleaning up URL after sync token processing"), dt(), O(!0), console.log("[AuthProvider] EFFECT: Loading user data (blocking isAuthReady)..."), U.loadUserData().catch((v) => {
1281
+ console.error("[AuthProvider] Failed to load user data:", v);
1199
1282
  }).finally(() => {
1200
- console.log("[AuthProvider] EFFECT: User data loaded, releasing isAuthReady"), N(!1);
1283
+ console.log("[AuthProvider] EFFECT: User data loaded, releasing isAuthReady"), O(!1);
1201
1284
  })));
1202
- }, [d, y]), re(() => {
1203
- const D = p.getUser();
1204
- D && p.hasValidSession() && f(D);
1205
- }, [p]), re(() => {
1206
- y && (M.current.urlTokens || !b && !A && p.hasValidSession() && (console.log("[AuthProvider] Auto-loading user data..."), d.loadUserData().catch(() => {
1285
+ }, [U, q]), re(() => {
1286
+ const v = c.getUser();
1287
+ v && c.hasValidSession() && f(v);
1288
+ }, [c]), re(() => {
1289
+ q && (D.current.urlTokens || !S && !T && c.hasValidSession() && (console.log("[AuthProvider] Auto-loading user data..."), U.loadUserData().catch(() => {
1207
1290
  })));
1208
- }, [b, A, d, p, y]), re(() => {
1209
- if (!p.hasValidSession() || !b)
1291
+ }, [S, T, U, c, q]), re(() => {
1292
+ if (!c.hasValidSession() || !S)
1210
1293
  return;
1211
- const D = setInterval(() => {
1212
- d.loadUserData().catch(() => {
1294
+ const v = setInterval(() => {
1295
+ U.loadUserData().catch(() => {
1213
1296
  });
1214
- }, h);
1215
- return () => clearInterval(D);
1216
- }, [p, b, d, h]), /* @__PURE__ */ n(Ae.Provider, { value: d, children: e });
1297
+ }, K);
1298
+ return () => clearInterval(v);
1299
+ }, [c, S, U, K]), /* @__PURE__ */ n(Pe.Provider, { value: U, children: e });
1217
1300
  }
1218
1301
  function ae() {
1219
- const i = se(Ae);
1302
+ const i = se(Pe);
1220
1303
  if (!i)
1221
1304
  throw new Error("useAuth must be used within an AuthProvider");
1222
1305
  return i;
1223
1306
  }
1224
- function Ce() {
1225
- return se(Ae);
1307
+ function Me() {
1308
+ return se(Pe);
1226
1309
  }
1227
- class st {
1310
+ class ut {
1228
1311
  constructor(e, t) {
1229
1312
  this.httpService = e, this.sessionManager = t;
1230
1313
  }
@@ -1304,66 +1387,66 @@ class st {
1304
1387
  })).data;
1305
1388
  }
1306
1389
  }
1307
- const Te = ue(null);
1308
- function _t({ config: i = {}, children: e }) {
1309
- const t = Fe(), r = ye(), s = (t == null ? void 0 : t.baseUrl) ?? "", o = (t == null ? void 0 : t.appId) ?? "", a = (r == null ? void 0 : r.tenant) ?? null, [g, w] = S([]), [m, k] = S(!1), [b, f] = S(null), [A, E] = S(!1), $ = Q(() => {
1310
- const u = new ne(s);
1311
- return new st(u);
1312
- }, [s]), L = async () => {
1390
+ const Ie = he(null);
1391
+ function er({ config: i = {}, children: e }) {
1392
+ const t = Ue(), r = we(), s = (t == null ? void 0 : t.baseUrl) ?? "", o = (t == null ? void 0 : t.appId) ?? "", a = (r == null ? void 0 : r.tenant) ?? null, [m, y] = k([]), [b, g] = k(!1), [S, f] = k(null), [T, I] = k(!1), C = te(() => {
1393
+ const h = new ne(s);
1394
+ return new ut(h);
1395
+ }, [s]), R = async () => {
1313
1396
  if (!(a != null && a.id)) {
1314
- w([]);
1397
+ y([]);
1315
1398
  return;
1316
1399
  }
1317
- k(!0), f(null);
1400
+ g(!0), f(null);
1318
1401
  try {
1319
- const u = await $.getTenantFeatureFlags(a.id, o);
1320
- w(u);
1321
- } catch (u) {
1322
- const M = u instanceof Error ? u.message : "Failed to fetch feature flags";
1323
- f(M), i.onError && i.onError(u instanceof Error ? u : new Error(M));
1402
+ const h = await C.getTenantFeatureFlags(a.id, o);
1403
+ y(h);
1404
+ } catch (h) {
1405
+ const $ = h instanceof Error ? h.message : "Failed to fetch feature flags";
1406
+ f($), i.onError && i.onError(h instanceof Error ? h : new Error($));
1324
1407
  } finally {
1325
- k(!1);
1408
+ g(!1);
1326
1409
  }
1327
1410
  };
1328
1411
  re(() => {
1329
1412
  if (!s || !o) return;
1330
- L().finally(() => E(!0));
1331
- const u = i.refreshInterval || 5 * 60 * 1e3, M = setInterval(L, u);
1332
- return () => clearInterval(M);
1413
+ R().finally(() => I(!0));
1414
+ const h = i.refreshInterval || 5 * 60 * 1e3, $ = setInterval(R, h);
1415
+ return () => clearInterval($);
1333
1416
  }, [a == null ? void 0 : a.id, s, o, i.refreshInterval]);
1334
- const P = Q(() => {
1335
- const u = (O) => {
1336
- const v = g.find((C) => C.key === O);
1337
- return (v == null ? void 0 : v.value) === !0;
1338
- }, M = (O) => g.find((v) => v.key === O), z = (O) => {
1339
- const v = g.find((C) => C.key === O);
1340
- return v ? v.value ? "enabled" : "disabled" : "not_found";
1341
- }, N = async () => {
1342
- await L();
1343
- }, p = !!(s && o) && (A || !(a != null && a.id));
1417
+ const x = te(() => {
1418
+ const h = (D) => {
1419
+ const P = m.find((O) => O.key === D);
1420
+ return (P == null ? void 0 : P.value) === !0;
1421
+ }, $ = (D) => m.find((P) => P.key === D), A = (D) => {
1422
+ const P = m.find((O) => O.key === D);
1423
+ return P ? P.value ? "enabled" : "disabled" : "not_found";
1424
+ }, E = async () => {
1425
+ await R();
1426
+ }, N = !!(s && o) && (T || !(a != null && a.id));
1344
1427
  return {
1345
- featureFlags: g,
1346
- loading: m,
1347
- error: b,
1348
- isReady: p,
1349
- isEnabled: u,
1350
- getFlag: M,
1351
- getFlagState: z,
1352
- refresh: N
1428
+ featureFlags: m,
1429
+ loading: b,
1430
+ error: S,
1431
+ isReady: N,
1432
+ isEnabled: h,
1433
+ getFlag: $,
1434
+ getFlagState: A,
1435
+ refresh: E
1353
1436
  };
1354
- }, [g, m, b, s, o, a == null ? void 0 : a.id, A]);
1355
- return /* @__PURE__ */ n(Te.Provider, { value: P, children: e });
1437
+ }, [m, b, S, s, o, a == null ? void 0 : a.id, T]);
1438
+ return /* @__PURE__ */ n(Ie.Provider, { value: x, children: e });
1356
1439
  }
1357
- function it() {
1358
- const i = se(Te);
1440
+ function ht() {
1441
+ const i = se(Ie);
1359
1442
  if (!i)
1360
1443
  throw new Error("useFeatureFlags must be used within a FeatureFlagProvider");
1361
1444
  return i;
1362
1445
  }
1363
- function De() {
1364
- return se(Te);
1446
+ function Be() {
1447
+ return se(Ie);
1365
1448
  }
1366
- class ot {
1449
+ class gt {
1367
1450
  constructor(e, t) {
1368
1451
  this.httpService = e, this.sessionManager = t;
1369
1452
  }
@@ -1429,68 +1512,68 @@ class ot {
1429
1512
  )).data;
1430
1513
  }
1431
1514
  }
1432
- const Pe = ue(void 0);
1433
- function Gt({ config: i = {}, children: e }) {
1434
- const t = Fe(), r = ye(), s = (t == null ? void 0 : t.baseUrl) ?? "", o = (r == null ? void 0 : r.tenant) ?? null, [a, g] = S(null), [w, m] = S(!1), [k, b] = S(null), [f, A] = S(!1), E = Q(() => {
1435
- const P = new ne(s);
1436
- return new ot(P);
1437
- }, [s]), $ = async () => {
1515
+ const Re = he(void 0);
1516
+ function tr({ config: i = {}, children: e }) {
1517
+ const t = Ue(), r = we(), s = (t == null ? void 0 : t.baseUrl) ?? "", o = (r == null ? void 0 : r.tenant) ?? null, [a, m] = k(null), [y, b] = k(!1), [g, S] = k(null), [f, T] = k(!1), I = te(() => {
1518
+ const x = new ne(s);
1519
+ return new gt(x);
1520
+ }, [s]), C = async () => {
1438
1521
  if (!(o != null && o.id)) {
1439
- g(null);
1522
+ m(null);
1440
1523
  return;
1441
1524
  }
1442
- m(!0), b(null);
1525
+ b(!0), S(null);
1443
1526
  try {
1444
- const P = await E.getTenantSubscriptionFeatures(o.id);
1445
- g(P);
1446
- } catch (P) {
1447
- const u = P instanceof Error ? P.message : "Failed to fetch subscription";
1448
- b(u), i.onError && i.onError(P instanceof Error ? P : new Error(u));
1527
+ const x = await I.getTenantSubscriptionFeatures(o.id);
1528
+ m(x);
1529
+ } catch (x) {
1530
+ const h = x instanceof Error ? x.message : "Failed to fetch subscription";
1531
+ S(h), i.onError && i.onError(x instanceof Error ? x : new Error(h));
1449
1532
  } finally {
1450
- m(!1);
1533
+ b(!1);
1451
1534
  }
1452
1535
  };
1453
1536
  re(() => {
1454
- if (!s || ($().finally(() => A(!0)), !i.refreshInterval)) return;
1455
- const P = i.refreshInterval || 10 * 60 * 1e3, u = setInterval($, P);
1456
- return () => clearInterval(u);
1537
+ if (!s || (C().finally(() => T(!0)), !i.refreshInterval)) return;
1538
+ const x = i.refreshInterval || 10 * 60 * 1e3, h = setInterval(C, x);
1539
+ return () => clearInterval(h);
1457
1540
  }, [o == null ? void 0 : o.id, s, i.refreshInterval]);
1458
- const L = Q(() => {
1459
- const P = (a == null ? void 0 : a.features) || [], u = (v) => {
1460
- const C = P.find((x) => x.key === v);
1461
- return C ? C.type === "BOOLEAN" || C.type === "boolean" ? C.value === !0 : !!C.value : !1;
1462
- }, M = (v) => P.find((C) => C.key === v), z = (v, C) => {
1463
- const x = P.find((I) => I.key === v);
1464
- return x ? x.value : C;
1465
- }, N = (v) => !a || !a.isActive ? !1 : v.includes(a.planId), p = async () => {
1466
- await $();
1467
- }, O = !!s && (f || !(o != null && o.id));
1541
+ const R = te(() => {
1542
+ const x = (a == null ? void 0 : a.features) || [], h = (P) => {
1543
+ const O = x.find((c) => c.key === P);
1544
+ return O ? O.type === "BOOLEAN" || O.type === "boolean" ? O.value === !0 : !!O.value : !1;
1545
+ }, $ = (P) => x.find((O) => O.key === P), A = (P, O) => {
1546
+ const c = x.find((L) => L.key === P);
1547
+ return c ? c.value : O;
1548
+ }, E = (P) => !a || !a.isActive ? !1 : P.includes(a.planId), N = async () => {
1549
+ await C();
1550
+ }, D = !!s && (f || !(o != null && o.id));
1468
1551
  return {
1469
1552
  subscription: a,
1470
- features: P,
1471
- loading: w,
1472
- error: k,
1473
- isReady: O,
1474
- isFeatureEnabled: u,
1475
- getFeature: M,
1476
- getFeatureValue: z,
1477
- hasAllowedPlan: N,
1478
- refresh: p
1553
+ features: x,
1554
+ loading: y,
1555
+ error: g,
1556
+ isReady: D,
1557
+ isFeatureEnabled: h,
1558
+ getFeature: $,
1559
+ getFeatureValue: A,
1560
+ hasAllowedPlan: E,
1561
+ refresh: N
1479
1562
  };
1480
- }, [a, w, k, s, o == null ? void 0 : o.id, f]);
1481
- return /* @__PURE__ */ n(Pe.Provider, { value: L, children: e });
1563
+ }, [a, y, g, s, o == null ? void 0 : o.id, f]);
1564
+ return /* @__PURE__ */ n(Re.Provider, { value: R, children: e });
1482
1565
  }
1483
- function at() {
1484
- const i = se(Pe);
1566
+ function pt() {
1567
+ const i = se(Re);
1485
1568
  if (i === void 0)
1486
1569
  throw new Error("useSubscription must be used within a SubscriptionProvider");
1487
1570
  return i;
1488
1571
  }
1489
- function $e() {
1490
- return se(Pe) ?? null;
1572
+ function qe() {
1573
+ return se(Re) ?? null;
1491
1574
  }
1492
1575
  var oe = /* @__PURE__ */ ((i) => (i.SUPERUSER = "SUPERUSER", i.TENANT_ADMIN = "TENANT_ADMIN", i.USER = "USER", i))(oe || {});
1493
- const Re = () => /* @__PURE__ */ l(
1576
+ const De = () => /* @__PURE__ */ d(
1494
1577
  "div",
1495
1578
  {
1496
1579
  style: {
@@ -1527,11 +1610,11 @@ const Re = () => /* @__PURE__ */ l(
1527
1610
  )
1528
1611
  ]
1529
1612
  }
1530
- ), Le = ({
1613
+ ), $e = ({
1531
1614
  userType: i,
1532
1615
  minUserType: e,
1533
1616
  missingPermissions: t
1534
- }) => /* @__PURE__ */ l(
1617
+ }) => /* @__PURE__ */ d(
1535
1618
  "div",
1536
1619
  {
1537
1620
  style: {
@@ -1549,26 +1632,26 @@ const Re = () => /* @__PURE__ */ l(
1549
1632
  children: [
1550
1633
  /* @__PURE__ */ n("div", { style: { fontSize: "2rem", marginBottom: "10px" }, children: "⚠️" }),
1551
1634
  /* @__PURE__ */ n("h3", { style: { color: "#856404", marginBottom: "10px" }, children: "Insufficient Permissions" }),
1552
- e && i ? /* @__PURE__ */ l(j, { children: [
1553
- /* @__PURE__ */ l("p", { style: { color: "#856404", fontSize: "14px", marginBottom: "10px" }, children: [
1635
+ e && i ? /* @__PURE__ */ d(j, { children: [
1636
+ /* @__PURE__ */ d("p", { style: { color: "#856404", fontSize: "14px", marginBottom: "10px" }, children: [
1554
1637
  "This content requires ",
1555
1638
  /* @__PURE__ */ n("strong", { children: e }),
1556
1639
  " access level or higher."
1557
1640
  ] }),
1558
- /* @__PURE__ */ l("p", { style: { color: "#6c757d", fontSize: "12px" }, children: [
1641
+ /* @__PURE__ */ d("p", { style: { color: "#6c757d", fontSize: "12px" }, children: [
1559
1642
  "Your current access level: ",
1560
1643
  /* @__PURE__ */ n("strong", { children: i })
1561
1644
  ] })
1562
- ] }) : /* @__PURE__ */ l(j, { children: [
1645
+ ] }) : /* @__PURE__ */ d(j, { children: [
1563
1646
  /* @__PURE__ */ n("p", { style: { color: "#856404", fontSize: "14px", marginBottom: "10px" }, children: "You don't have the required permissions to view this content." }),
1564
- t && t.length > 0 && /* @__PURE__ */ l("p", { style: { color: "#6c757d", fontSize: "12px" }, children: [
1647
+ t && t.length > 0 && /* @__PURE__ */ d("p", { style: { color: "#6c757d", fontSize: "12px" }, children: [
1565
1648
  "Required permissions: ",
1566
1649
  /* @__PURE__ */ n("strong", { children: t.join(", ") })
1567
1650
  ] })
1568
1651
  ] })
1569
1652
  ]
1570
1653
  }
1571
- ), lt = (i, e) => {
1654
+ ), ft = (i, e) => {
1572
1655
  const t = {
1573
1656
  [oe.USER]: 1,
1574
1657
  [oe.TENANT_ADMIN]: 2,
@@ -1576,28 +1659,28 @@ const Re = () => /* @__PURE__ */ l(
1576
1659
  };
1577
1660
  return t[i] >= t[e];
1578
1661
  };
1579
- function Kt({
1662
+ function rr({
1580
1663
  children: i,
1581
1664
  fallback: e,
1582
1665
  minUserType: t,
1583
1666
  requiredPermissions: r,
1584
1667
  requireAllPermissions: s = !1
1585
1668
  }) {
1586
- const { hasValidSession: o, sessionManager: a, hasPermission: g, hasAnyPermission: w, hasAllPermissions: m } = ae();
1669
+ const { hasValidSession: o, sessionManager: a, hasPermission: m, hasAnyPermission: y, hasAllPermissions: b } = ae();
1587
1670
  if (!o())
1588
- return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(Re, {}) });
1589
- const k = a.getUser();
1590
- if (!k)
1591
- return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(Re, {}) });
1592
- if (t && !lt(k.userType, t))
1593
- return /* @__PURE__ */ n(Le, { userType: k.userType, minUserType: t });
1594
- if (r && r.length > 0 && !(s ? m(r) : w(r))) {
1595
- const f = r.filter((A) => !g(A)).map((A) => typeof A == "string" ? A : A.name);
1596
- return /* @__PURE__ */ n(Le, { missingPermissions: f });
1671
+ return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(De, {}) });
1672
+ const g = a.getUser();
1673
+ if (!g)
1674
+ return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(De, {}) });
1675
+ if (t && !ft(g.userType, t))
1676
+ return /* @__PURE__ */ n($e, { userType: g.userType, minUserType: t });
1677
+ if (r && r.length > 0 && !(s ? b(r) : y(r))) {
1678
+ const f = r.filter((T) => !m(T)).map((T) => typeof T == "string" ? T : T.name);
1679
+ return /* @__PURE__ */ n($e, { missingPermissions: f });
1597
1680
  }
1598
1681
  return /* @__PURE__ */ n(j, { children: i });
1599
1682
  }
1600
- const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1683
+ const mt = ({ redirectPath: i }) => /* @__PURE__ */ n(
1601
1684
  "div",
1602
1685
  {
1603
1686
  style: {
@@ -1610,7 +1693,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1610
1693
  backgroundColor: "#f9fafb",
1611
1694
  textAlign: "center"
1612
1695
  },
1613
- children: /* @__PURE__ */ l(
1696
+ children: /* @__PURE__ */ d(
1614
1697
  "div",
1615
1698
  {
1616
1699
  style: {
@@ -1624,7 +1707,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1624
1707
  /* @__PURE__ */ n("div", { style: { fontSize: "3rem", marginBottom: "1rem" }, children: "🔒" }),
1625
1708
  /* @__PURE__ */ n("h2", { style: { color: "#374151", marginBottom: "1rem" }, children: "Access Required" }),
1626
1709
  /* @__PURE__ */ n("p", { style: { color: "#6b7280", marginBottom: "1.5rem" }, children: "You need to be signed in to access this page." }),
1627
- /* @__PURE__ */ l("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1710
+ /* @__PURE__ */ d("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1628
1711
  "Redirecting to ",
1629
1712
  i,
1630
1713
  "..."
@@ -1633,7 +1716,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1633
1716
  }
1634
1717
  )
1635
1718
  }
1636
- ), Ee = ({
1719
+ ), He = ({
1637
1720
  userType: i,
1638
1721
  minUserType: e,
1639
1722
  missingPermissions: t
@@ -1650,7 +1733,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1650
1733
  backgroundColor: "#f9fafb",
1651
1734
  textAlign: "center"
1652
1735
  },
1653
- children: /* @__PURE__ */ l(
1736
+ children: /* @__PURE__ */ d(
1654
1737
  "div",
1655
1738
  {
1656
1739
  style: {
@@ -1663,19 +1746,19 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1663
1746
  children: [
1664
1747
  /* @__PURE__ */ n("div", { style: { fontSize: "3rem", marginBottom: "1rem" }, children: "⚠️" }),
1665
1748
  /* @__PURE__ */ n("h2", { style: { color: "#374151", marginBottom: "1rem" }, children: "Insufficient Permissions" }),
1666
- e && i ? /* @__PURE__ */ l(j, { children: [
1667
- /* @__PURE__ */ l("p", { style: { color: "#6b7280", marginBottom: "1rem" }, children: [
1749
+ e && i ? /* @__PURE__ */ d(j, { children: [
1750
+ /* @__PURE__ */ d("p", { style: { color: "#6b7280", marginBottom: "1rem" }, children: [
1668
1751
  "This page requires ",
1669
1752
  /* @__PURE__ */ n("strong", { children: e }),
1670
1753
  " access level or higher."
1671
1754
  ] }),
1672
- /* @__PURE__ */ l("p", { style: { color: "#9ca3af", fontSize: "0.875rem" }, children: [
1755
+ /* @__PURE__ */ d("p", { style: { color: "#9ca3af", fontSize: "0.875rem" }, children: [
1673
1756
  "Your current access level: ",
1674
1757
  /* @__PURE__ */ n("strong", { children: i })
1675
1758
  ] })
1676
- ] }) : /* @__PURE__ */ l(j, { children: [
1759
+ ] }) : /* @__PURE__ */ d(j, { children: [
1677
1760
  /* @__PURE__ */ n("p", { style: { color: "#6b7280", marginBottom: "1rem" }, children: "You don't have the required permissions to access this page." }),
1678
- t && t.length > 0 && /* @__PURE__ */ l("p", { style: { color: "#9ca3af", fontSize: "0.875rem" }, children: [
1761
+ t && t.length > 0 && /* @__PURE__ */ d("p", { style: { color: "#9ca3af", fontSize: "0.875rem" }, children: [
1679
1762
  "Required permissions: ",
1680
1763
  /* @__PURE__ */ n("strong", { children: t.join(", ") })
1681
1764
  ] })
@@ -1684,7 +1767,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1684
1767
  }
1685
1768
  )
1686
1769
  }
1687
- ), dt = (i, e) => {
1770
+ ), yt = (i, e) => {
1688
1771
  const t = {
1689
1772
  [oe.USER]: 1,
1690
1773
  [oe.TENANT_ADMIN]: 2,
@@ -1692,7 +1775,7 @@ const ct = ({ redirectPath: i }) => /* @__PURE__ */ n(
1692
1775
  };
1693
1776
  return t[i] >= t[e];
1694
1777
  };
1695
- function Jt({
1778
+ function nr({
1696
1779
  children: i,
1697
1780
  redirectTo: e = "/login",
1698
1781
  minUserType: t,
@@ -1700,24 +1783,24 @@ function Jt({
1700
1783
  requireAllPermissions: s = !1,
1701
1784
  fallback: o
1702
1785
  }) {
1703
- const { hasValidSession: a, sessionManager: g, hasPermission: w, hasAnyPermission: m, hasAllPermissions: k } = ae(), b = ve();
1786
+ const { hasValidSession: a, sessionManager: m, hasPermission: y, hasAnyPermission: b, hasAllPermissions: g } = ae(), S = Te();
1704
1787
  if (!a())
1705
- return o ? /* @__PURE__ */ n(j, { children: o }) : /* @__PURE__ */ l(j, { children: [
1706
- /* @__PURE__ */ n(ct, { redirectPath: e }),
1707
- /* @__PURE__ */ n(pe, { to: e, state: { from: b.pathname }, replace: !0 })
1788
+ return o ? /* @__PURE__ */ n(j, { children: o }) : /* @__PURE__ */ d(j, { children: [
1789
+ /* @__PURE__ */ n(mt, { redirectPath: e }),
1790
+ /* @__PURE__ */ n(fe, { to: e, state: { from: S.pathname }, replace: !0 })
1708
1791
  ] });
1709
- const f = g.getUser();
1792
+ const f = m.getUser();
1710
1793
  if (!f)
1711
- return /* @__PURE__ */ n(pe, { to: e, state: { from: b.pathname }, replace: !0 });
1712
- if (t && !dt(f.userType, t))
1713
- return /* @__PURE__ */ n(Ee, { userType: f.userType, minUserType: t });
1714
- if (r && r.length > 0 && !(s ? k(r) : m(r))) {
1715
- const E = r.filter(($) => !w($)).map(($) => typeof $ == "string" ? $ : $.name);
1716
- return /* @__PURE__ */ n(Ee, { missingPermissions: E });
1794
+ return /* @__PURE__ */ n(fe, { to: e, state: { from: S.pathname }, replace: !0 });
1795
+ if (t && !yt(f.userType, t))
1796
+ return /* @__PURE__ */ n(He, { userType: f.userType, minUserType: t });
1797
+ if (r && r.length > 0 && !(s ? g(r) : b(r))) {
1798
+ const I = r.filter((C) => !y(C)).map((C) => typeof C == "string" ? C : C.name);
1799
+ return /* @__PURE__ */ n(He, { missingPermissions: I });
1717
1800
  }
1718
1801
  return /* @__PURE__ */ n(j, { children: i });
1719
1802
  }
1720
- const ut = ({ redirectPath: i }) => /* @__PURE__ */ n(
1803
+ const wt = ({ redirectPath: i }) => /* @__PURE__ */ n(
1721
1804
  "div",
1722
1805
  {
1723
1806
  style: {
@@ -1730,7 +1813,7 @@ const ut = ({ redirectPath: i }) => /* @__PURE__ */ n(
1730
1813
  backgroundColor: "#f9fafb",
1731
1814
  textAlign: "center"
1732
1815
  },
1733
- children: /* @__PURE__ */ l(
1816
+ children: /* @__PURE__ */ d(
1734
1817
  "div",
1735
1818
  {
1736
1819
  style: {
@@ -1744,7 +1827,7 @@ const ut = ({ redirectPath: i }) => /* @__PURE__ */ n(
1744
1827
  /* @__PURE__ */ n("div", { style: { fontSize: "3rem", marginBottom: "1rem" }, children: "🏢" }),
1745
1828
  /* @__PURE__ */ n("h2", { style: { color: "#374151", marginBottom: "1rem" }, children: "Tenant Required" }),
1746
1829
  /* @__PURE__ */ n("p", { style: { color: "#6b7280", marginBottom: "1.5rem" }, children: "This page requires a tenant context to access." }),
1747
- /* @__PURE__ */ l("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1830
+ /* @__PURE__ */ d("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1748
1831
  "Redirecting to ",
1749
1832
  i,
1750
1833
  "..."
@@ -1754,14 +1837,14 @@ const ut = ({ redirectPath: i }) => /* @__PURE__ */ n(
1754
1837
  )
1755
1838
  }
1756
1839
  );
1757
- function Yt({ children: i, redirectTo: e = "/", fallback: t }) {
1758
- const { tenant: r, isLoading: s, error: o } = le(), a = ve();
1759
- return s || o ? null : r ? /* @__PURE__ */ n(j, { children: i }) : t ? /* @__PURE__ */ n(j, { children: t }) : /* @__PURE__ */ l(j, { children: [
1760
- /* @__PURE__ */ n(ut, { redirectPath: e }),
1761
- /* @__PURE__ */ n(pe, { to: e, state: { from: a.pathname }, replace: !0 })
1840
+ function sr({ children: i, redirectTo: e = "/", fallback: t }) {
1841
+ const { tenant: r, isLoading: s, error: o } = ce(), a = Te();
1842
+ return s || o ? null : r ? /* @__PURE__ */ n(j, { children: i }) : t ? /* @__PURE__ */ n(j, { children: t }) : /* @__PURE__ */ d(j, { children: [
1843
+ /* @__PURE__ */ n(wt, { redirectPath: e }),
1844
+ /* @__PURE__ */ n(fe, { to: e, state: { from: a.pathname }, replace: !0 })
1762
1845
  ] });
1763
1846
  }
1764
- const ht = ({ redirectPath: i }) => /* @__PURE__ */ n(
1847
+ const bt = ({ redirectPath: i }) => /* @__PURE__ */ n(
1765
1848
  "div",
1766
1849
  {
1767
1850
  style: {
@@ -1774,7 +1857,7 @@ const ht = ({ redirectPath: i }) => /* @__PURE__ */ n(
1774
1857
  backgroundColor: "#f9fafb",
1775
1858
  textAlign: "center"
1776
1859
  },
1777
- children: /* @__PURE__ */ l(
1860
+ children: /* @__PURE__ */ d(
1778
1861
  "div",
1779
1862
  {
1780
1863
  style: {
@@ -1788,7 +1871,7 @@ const ht = ({ redirectPath: i }) => /* @__PURE__ */ n(
1788
1871
  /* @__PURE__ */ n("div", { style: { fontSize: "3rem", marginBottom: "1rem" }, children: "🚀" }),
1789
1872
  /* @__PURE__ */ n("h2", { style: { color: "#374151", marginBottom: "1rem" }, children: "Tenant Detected" }),
1790
1873
  /* @__PURE__ */ n("p", { style: { color: "#6b7280", marginBottom: "1.5rem" }, children: "You are accessing a tenant-specific context. Redirecting to the appropriate page." }),
1791
- /* @__PURE__ */ l("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1874
+ /* @__PURE__ */ d("p", { style: { fontSize: "0.875rem", color: "#9ca3af" }, children: [
1792
1875
  "Redirecting to ",
1793
1876
  i,
1794
1877
  "..."
@@ -1798,14 +1881,14 @@ const ht = ({ redirectPath: i }) => /* @__PURE__ */ n(
1798
1881
  )
1799
1882
  }
1800
1883
  );
1801
- function Qt({ children: i, redirectTo: e = "/dashboard", fallback: t }) {
1802
- const { tenant: r, isLoading: s, error: o } = le(), a = ve();
1803
- return s || o ? null : r ? t ? /* @__PURE__ */ n(j, { children: t }) : /* @__PURE__ */ l(j, { children: [
1804
- /* @__PURE__ */ n(ht, { redirectPath: e }),
1805
- /* @__PURE__ */ n(pe, { to: e, state: { from: a.pathname }, replace: !0 })
1884
+ function ir({ children: i, redirectTo: e = "/dashboard", fallback: t }) {
1885
+ const { tenant: r, isLoading: s, error: o } = ce(), a = Te();
1886
+ return s || o ? null : r ? t ? /* @__PURE__ */ n(j, { children: t }) : /* @__PURE__ */ d(j, { children: [
1887
+ /* @__PURE__ */ n(bt, { redirectPath: e }),
1888
+ /* @__PURE__ */ n(fe, { to: e, state: { from: a.pathname }, replace: !0 })
1806
1889
  ] }) : /* @__PURE__ */ n(j, { children: i });
1807
1890
  }
1808
- const gt = () => /* @__PURE__ */ l(
1891
+ const St = () => /* @__PURE__ */ d(
1809
1892
  "div",
1810
1893
  {
1811
1894
  style: {
@@ -1822,14 +1905,14 @@ const gt = () => /* @__PURE__ */ l(
1822
1905
  ]
1823
1906
  }
1824
1907
  );
1825
- function Xt({
1908
+ function or({
1826
1909
  children: i,
1827
- fallback: e = /* @__PURE__ */ n(gt, {}),
1910
+ fallback: e = /* @__PURE__ */ n(St, {}),
1828
1911
  allowedPlans: t,
1829
1912
  requiredFeature: r
1830
1913
  }) {
1831
- const { subscription: s, hasAllowedPlan: o, isFeatureEnabled: a, loading: g } = at();
1832
- return g ? /* @__PURE__ */ n(
1914
+ const { subscription: s, hasAllowedPlan: o, isFeatureEnabled: a, loading: m } = pt();
1915
+ return m ? /* @__PURE__ */ n(
1833
1916
  "div",
1834
1917
  {
1835
1918
  style: {
@@ -1841,7 +1924,7 @@ function Xt({
1841
1924
  }
1842
1925
  ) : s ? s.isActive ? t && t.length > 0 && !o(t) ? /* @__PURE__ */ n(j, { children: e }) : r && !a(r) ? /* @__PURE__ */ n(j, { children: e }) : /* @__PURE__ */ n(j, { children: i }) : /* @__PURE__ */ n(j, { children: e }) : /* @__PURE__ */ n(j, { children: e });
1843
1926
  }
1844
- const pt = ({ flagName: i }) => /* @__PURE__ */ l(
1927
+ const vt = ({ flagName: i }) => /* @__PURE__ */ d(
1845
1928
  "div",
1846
1929
  {
1847
1930
  style: {
@@ -1860,7 +1943,7 @@ const pt = ({ flagName: i }) => /* @__PURE__ */ l(
1860
1943
  children: [
1861
1944
  /* @__PURE__ */ n("div", { style: { fontSize: "24px", marginBottom: "8px" }, children: "🚧" }),
1862
1945
  /* @__PURE__ */ n("div", { style: { fontSize: "14px", fontWeight: "500", marginBottom: "4px" }, children: "Feature Not Available" }),
1863
- /* @__PURE__ */ l("div", { style: { fontSize: "12px", opacity: 0.7 }, children: [
1946
+ /* @__PURE__ */ d("div", { style: { fontSize: "12px", opacity: 0.7 }, children: [
1864
1947
  'Feature flag "',
1865
1948
  i,
1866
1949
  '" is disabled'
@@ -1868,8 +1951,8 @@ const pt = ({ flagName: i }) => /* @__PURE__ */ l(
1868
1951
  ]
1869
1952
  }
1870
1953
  );
1871
- function Zt({ name: i, children: e, fallback: t }) {
1872
- const { isEnabled: r, loading: s } = it();
1954
+ function ar({ name: i, children: e, fallback: t }) {
1955
+ const { isEnabled: r, loading: s } = ht();
1873
1956
  return s ? /* @__PURE__ */ n(
1874
1957
  "div",
1875
1958
  {
@@ -1883,9 +1966,9 @@ function Zt({ name: i, children: e, fallback: t }) {
1883
1966
  },
1884
1967
  children: "Loading feature flags..."
1885
1968
  }
1886
- ) : r(i) ? /* @__PURE__ */ n(j, { children: e }) : /* @__PURE__ */ n(j, { children: t || /* @__PURE__ */ n(pt, { flagName: i }) });
1969
+ ) : r(i) ? /* @__PURE__ */ n(j, { children: e }) : /* @__PURE__ */ n(j, { children: t || /* @__PURE__ */ n(vt, { flagName: i }) });
1887
1970
  }
1888
- const ft = () => /* @__PURE__ */ l(
1971
+ const kt = () => /* @__PURE__ */ d(
1889
1972
  "svg",
1890
1973
  {
1891
1974
  width: "16",
@@ -1902,7 +1985,7 @@ const ft = () => /* @__PURE__ */ l(
1902
1985
  /* @__PURE__ */ n("circle", { cx: "12", cy: "12", r: "3" })
1903
1986
  ]
1904
1987
  }
1905
- ), mt = () => /* @__PURE__ */ l(
1988
+ ), Tt = () => /* @__PURE__ */ d(
1906
1989
  "svg",
1907
1990
  {
1908
1991
  width: "16",
@@ -1919,10 +2002,10 @@ const ft = () => /* @__PURE__ */ l(
1919
2002
  /* @__PURE__ */ n("line", { x1: "1", y1: "1", x2: "23", y2: "23" })
1920
2003
  ]
1921
2004
  }
1922
- ), yt = {
1923
- showPassword: /* @__PURE__ */ n(ft, {}),
1924
- hidePassword: /* @__PURE__ */ n(mt, {})
1925
- }, wt = {
2005
+ ), xt = {
2006
+ showPassword: /* @__PURE__ */ n(kt, {}),
2007
+ hidePassword: /* @__PURE__ */ n(Tt, {})
2008
+ }, At = {
1926
2009
  title: "Sign In",
1927
2010
  usernameLabel: "Email or Phone",
1928
2011
  usernamePlaceholder: "Enter your email or phone number",
@@ -1936,7 +2019,7 @@ const ft = () => /* @__PURE__ */ l(
1936
2019
  magicLinkLink: "Use Magic Link",
1937
2020
  errorMessage: "Invalid credentials",
1938
2021
  loadingText: "Signing in..."
1939
- }, bt = {
2022
+ }, Pt = {
1940
2023
  container: {
1941
2024
  maxWidth: "400px",
1942
2025
  width: "100%",
@@ -2043,7 +2126,7 @@ const ft = () => /* @__PURE__ */ l(
2043
2126
  fontSize: "0.875rem"
2044
2127
  }
2045
2128
  };
2046
- function er({
2129
+ function lr({
2047
2130
  copy: i = {},
2048
2131
  styles: e = {},
2049
2132
  icons: t = {},
@@ -2051,49 +2134,49 @@ function er({
2051
2134
  onError: s,
2052
2135
  onForgotPassword: o,
2053
2136
  onSignupClick: a,
2054
- onMagicLinkClick: g,
2055
- showForgotPassword: w = !0,
2056
- showSignupLink: m = !0,
2057
- showMagicLinkOption: k = !0,
2058
- className: b
2137
+ onMagicLinkClick: m,
2138
+ showForgotPassword: y = !0,
2139
+ showSignupLink: b = !0,
2140
+ showMagicLinkOption: g = !0,
2141
+ className: S
2059
2142
  }) {
2060
- const [f, A] = S(""), [E, $] = S(""), [L, P] = S(!1), [u, M] = S(!1), [z, N] = S(""), [p, O] = S({}), { login: v } = ae(), { tenant: C } = le(), x = { ...wt, ...i }, I = { ...bt, ...e }, F = { ...yt, ...t }, c = () => {
2061
- const d = {};
2062
- return f.trim() || (d.username = !0), E.trim() || (d.password = !0), O(d), Object.keys(d).length === 0;
2063
- }, R = async (d) => {
2064
- if (d.preventDefault(), !!c()) {
2065
- if (!(C != null && C.id)) {
2066
- N("Tenant not found");
2143
+ const [f, T] = k(""), [I, C] = k(""), [R, x] = k(!1), [h, $] = k(!1), [A, E] = k(""), [N, D] = k({}), { login: P } = ae(), { tenant: O } = ce(), c = { ...At, ...i }, L = { ...Pt, ...e }, F = { ...xt, ...t }, l = () => {
2144
+ const u = {};
2145
+ return f.trim() || (u.username = !0), I.trim() || (u.password = !0), D(u), Object.keys(u).length === 0;
2146
+ }, H = async (u) => {
2147
+ if (u.preventDefault(), !!l()) {
2148
+ if (!(O != null && O.id)) {
2149
+ E("Tenant not found");
2067
2150
  return;
2068
2151
  }
2069
- M(!0), N("");
2152
+ $(!0), E("");
2070
2153
  try {
2071
- const y = await v({
2154
+ const w = await P({
2072
2155
  username: f,
2073
- password: E
2156
+ password: I
2074
2157
  // tenantId inferred from context automatically
2075
2158
  });
2076
- r == null || r(y);
2077
- } catch (y) {
2078
- const G = y.message || x.errorMessage;
2079
- N(G), s == null || s(G);
2159
+ r == null || r(w);
2160
+ } catch (w) {
2161
+ const G = w.message || c.errorMessage;
2162
+ E(G), s == null || s(G);
2080
2163
  } finally {
2081
- M(!1);
2164
+ $(!1);
2082
2165
  }
2083
2166
  }
2084
- }, T = (d) => ({
2085
- ...I.input,
2086
- ...p[d] ? I.inputError : {}
2087
- }), h = () => ({
2088
- ...I.button,
2089
- ...u ? I.buttonLoading : {},
2090
- ...!f || !E || u ? I.buttonDisabled : {}
2167
+ }, M = (u) => ({
2168
+ ...L.input,
2169
+ ...N[u] ? L.inputError : {}
2170
+ }), p = () => ({
2171
+ ...L.button,
2172
+ ...h ? L.buttonLoading : {},
2173
+ ...!f || !I || h ? L.buttonDisabled : {}
2091
2174
  });
2092
- return /* @__PURE__ */ l("div", { className: b, style: I.container, children: [
2093
- /* @__PURE__ */ n("h2", { style: I.title, children: x.title }),
2094
- /* @__PURE__ */ l("form", { onSubmit: R, style: I.form, children: [
2095
- /* @__PURE__ */ l("div", { style: I.fieldGroup, children: [
2096
- /* @__PURE__ */ n("label", { style: I.label, children: x.usernameLabel }),
2175
+ return /* @__PURE__ */ d("div", { className: S, style: L.container, children: [
2176
+ /* @__PURE__ */ n("h2", { style: L.title, children: c.title }),
2177
+ /* @__PURE__ */ d("form", { onSubmit: H, style: L.form, children: [
2178
+ /* @__PURE__ */ d("div", { style: L.fieldGroup, children: [
2179
+ /* @__PURE__ */ n("label", { style: L.label, children: c.usernameLabel }),
2097
2180
  /* @__PURE__ */ n(
2098
2181
  "input",
2099
2182
  {
@@ -2101,75 +2184,75 @@ function er({
2101
2184
  name: "username",
2102
2185
  type: "text",
2103
2186
  value: f,
2104
- onChange: (d) => {
2105
- A(d.target.value), p.username && O((y) => ({ ...y, username: !1 }));
2187
+ onChange: (u) => {
2188
+ T(u.target.value), N.username && D((w) => ({ ...w, username: !1 }));
2106
2189
  },
2107
- placeholder: x.usernamePlaceholder,
2108
- style: T("username"),
2109
- disabled: u
2190
+ placeholder: c.usernamePlaceholder,
2191
+ style: M("username"),
2192
+ disabled: h
2110
2193
  }
2111
2194
  )
2112
2195
  ] }),
2113
- /* @__PURE__ */ l("div", { style: I.fieldGroup, children: [
2114
- /* @__PURE__ */ n("label", { style: I.label, children: x.passwordLabel }),
2115
- /* @__PURE__ */ l("div", { style: I.inputContainer, children: [
2196
+ /* @__PURE__ */ d("div", { style: L.fieldGroup, children: [
2197
+ /* @__PURE__ */ n("label", { style: L.label, children: c.passwordLabel }),
2198
+ /* @__PURE__ */ d("div", { style: L.inputContainer, children: [
2116
2199
  /* @__PURE__ */ n(
2117
2200
  "input",
2118
2201
  {
2119
2202
  id: "password",
2120
2203
  name: "password",
2121
- type: L ? "text" : "password",
2122
- value: E,
2123
- onChange: (d) => {
2124
- $(d.target.value), p.password && O((y) => ({ ...y, password: !1 }));
2204
+ type: R ? "text" : "password",
2205
+ value: I,
2206
+ onChange: (u) => {
2207
+ C(u.target.value), N.password && D((w) => ({ ...w, password: !1 }));
2125
2208
  },
2126
- placeholder: x.passwordPlaceholder,
2209
+ placeholder: c.passwordPlaceholder,
2127
2210
  style: {
2128
- ...T("password"),
2211
+ ...M("password"),
2129
2212
  paddingRight: "2.5rem"
2130
2213
  // Make room for the icon
2131
2214
  },
2132
- disabled: u
2215
+ disabled: h
2133
2216
  }
2134
2217
  ),
2135
2218
  /* @__PURE__ */ n(
2136
2219
  "button",
2137
2220
  {
2138
2221
  type: "button",
2139
- onClick: () => P(!L),
2140
- style: I.passwordToggle,
2141
- disabled: u,
2142
- "aria-label": L ? "Hide password" : "Show password",
2143
- children: L ? F.hidePassword : F.showPassword
2222
+ onClick: () => x(!R),
2223
+ style: L.passwordToggle,
2224
+ disabled: h,
2225
+ "aria-label": R ? "Hide password" : "Show password",
2226
+ children: R ? F.hidePassword : F.showPassword
2144
2227
  }
2145
2228
  )
2146
2229
  ] })
2147
2230
  ] }),
2148
- /* @__PURE__ */ n("button", { type: "submit", disabled: !f || !E || u, style: h(), children: u ? x.loadingText : x.submitButton }),
2149
- z && /* @__PURE__ */ n("div", { style: I.errorText, children: z })
2231
+ /* @__PURE__ */ n("button", { type: "submit", disabled: !f || !I || h, style: p(), children: h ? c.loadingText : c.submitButton }),
2232
+ A && /* @__PURE__ */ n("div", { style: L.errorText, children: A })
2150
2233
  ] }),
2151
- (w || m || k) && /* @__PURE__ */ l("div", { style: I.linkContainer, children: [
2152
- k && /* @__PURE__ */ l("div", { children: [
2153
- /* @__PURE__ */ l("span", { style: I.divider, children: [
2154
- x.magicLinkText,
2234
+ (y || b || g) && /* @__PURE__ */ d("div", { style: L.linkContainer, children: [
2235
+ g && /* @__PURE__ */ d("div", { children: [
2236
+ /* @__PURE__ */ d("span", { style: L.divider, children: [
2237
+ c.magicLinkText,
2155
2238
  " "
2156
2239
  ] }),
2157
- /* @__PURE__ */ n("a", { onClick: g, style: I.link, children: x.magicLinkLink })
2240
+ /* @__PURE__ */ n("a", { onClick: m, style: L.link, children: c.magicLinkLink })
2158
2241
  ] }),
2159
- k && (w || m) && /* @__PURE__ */ n("div", { style: I.divider, children: "•" }),
2160
- w && /* @__PURE__ */ n("a", { onClick: o, style: I.link, children: x.forgotPasswordLink }),
2161
- w && m && /* @__PURE__ */ n("div", { style: I.divider, children: "•" }),
2162
- m && /* @__PURE__ */ l("div", { children: [
2163
- /* @__PURE__ */ l("span", { style: I.divider, children: [
2164
- x.signupText,
2242
+ g && (y || b) && /* @__PURE__ */ n("div", { style: L.divider, children: "•" }),
2243
+ y && /* @__PURE__ */ n("a", { onClick: o, style: L.link, children: c.forgotPasswordLink }),
2244
+ y && b && /* @__PURE__ */ n("div", { style: L.divider, children: "•" }),
2245
+ b && /* @__PURE__ */ d("div", { children: [
2246
+ /* @__PURE__ */ d("span", { style: L.divider, children: [
2247
+ c.signupText,
2165
2248
  " "
2166
2249
  ] }),
2167
- /* @__PURE__ */ n("a", { onClick: a, style: I.link, children: x.signupLink })
2250
+ /* @__PURE__ */ n("a", { onClick: a, style: L.link, children: c.signupLink })
2168
2251
  ] })
2169
2252
  ] })
2170
2253
  ] });
2171
2254
  }
2172
- const St = {
2255
+ const Mt = {
2173
2256
  title: "Create Account",
2174
2257
  nameLabel: "First Name",
2175
2258
  namePlaceholder: "Enter your first name",
@@ -2195,7 +2278,7 @@ const St = {
2195
2278
  passwordMismatchError: "Passwords do not match",
2196
2279
  isAdminLabel: "Create new organization",
2197
2280
  isAdminDescription: "Check this if you want to create a new organization"
2198
- }, vt = {
2281
+ }, It = {
2199
2282
  container: {
2200
2283
  maxWidth: "400px",
2201
2284
  width: "100%",
@@ -2294,7 +2377,7 @@ const St = {
2294
2377
  fontSize: "0.875rem"
2295
2378
  }
2296
2379
  };
2297
- function tr({
2380
+ function cr({
2298
2381
  copy: i = {},
2299
2382
  styles: e = {},
2300
2383
  signupType: t = "user",
@@ -2302,79 +2385,79 @@ function tr({
2302
2385
  onError: s,
2303
2386
  onLoginClick: o,
2304
2387
  onMagicLinkClick: a,
2305
- showLoginLink: g = !0,
2306
- showMagicLinkOption: w = !0,
2307
- className: m
2388
+ showLoginLink: m = !0,
2389
+ showMagicLinkOption: y = !0,
2390
+ className: b
2308
2391
  }) {
2309
- const [k, b] = S(""), [f, A] = S(""), [E, $] = S(""), [L, P] = S(""), [u, M] = S(""), [z, N] = S(""), [p, O] = S(""), [v, C] = S(!1), [x, I] = S(""), [F, c] = S({}), { signup: R, signupTenantAdmin: T } = ae(), { tenant: h } = le(), d = { ...St, ...i }, y = { ...vt, ...e }, G = () => {
2310
- const B = {};
2311
- return k.trim() || (B.name = !0), !E.trim() && !L.trim() && (B.email = !0, B.phoneNumber = !0), u.trim() || (B.password = !0), z.trim() || (B.confirmPassword = !0), t === "tenant" && !p.trim() && (B.tenantName = !0), c(B), Object.keys(B).length === 0;
2312
- }, D = async (B) => {
2313
- if (B.preventDefault(), !!G()) {
2314
- if (u !== z) {
2315
- I(d.passwordMismatchError), c({ confirmPassword: !0 });
2392
+ const [g, S] = k(""), [f, T] = k(""), [I, C] = k(""), [R, x] = k(""), [h, $] = k(""), [A, E] = k(""), [N, D] = k(""), [P, O] = k(!1), [c, L] = k(""), [F, l] = k({}), { signup: H, signupTenantAdmin: M } = ae(), { tenant: p } = ce(), u = { ...Mt, ...i }, w = { ...It, ...e }, G = () => {
2393
+ const v = {};
2394
+ return g.trim() || (v.name = !0), !I.trim() && !R.trim() && (v.email = !0, v.phoneNumber = !0), h.trim() || (v.password = !0), A.trim() || (v.confirmPassword = !0), t === "tenant" && !N.trim() && (v.tenantName = !0), l(v), Object.keys(v).length === 0;
2395
+ }, K = async (v) => {
2396
+ if (v.preventDefault(), !!G()) {
2397
+ if (h !== A) {
2398
+ L(u.passwordMismatchError), l({ confirmPassword: !0 });
2316
2399
  return;
2317
2400
  }
2318
- if (t === "user" && !(h != null && h.id)) {
2319
- I("Tenant not found");
2401
+ if (t === "user" && !(p != null && p.id)) {
2402
+ L("Tenant not found");
2320
2403
  return;
2321
2404
  }
2322
- C(!0), I("");
2405
+ O(!0), L("");
2323
2406
  try {
2324
- let K;
2325
- t === "tenant" ? K = await T({
2326
- email: E || void 0,
2327
- phoneNumber: L || void 0,
2328
- name: k,
2329
- password: u,
2330
- tenantName: p,
2407
+ let J;
2408
+ t === "tenant" ? J = await M({
2409
+ email: I || void 0,
2410
+ phoneNumber: R || void 0,
2411
+ name: g,
2412
+ password: h,
2413
+ tenantName: N,
2331
2414
  lastName: f || void 0
2332
- }) : K = await R({
2333
- email: E || void 0,
2334
- phoneNumber: L || void 0,
2335
- name: k,
2336
- password: u,
2337
- tenantId: h.id,
2415
+ }) : J = await H({
2416
+ email: I || void 0,
2417
+ phoneNumber: R || void 0,
2418
+ name: g,
2419
+ password: h,
2420
+ tenantId: p.id,
2338
2421
  lastName: f || void 0
2339
- }), r == null || r(K);
2340
- } catch (K) {
2341
- const ge = K.message || d.errorMessage;
2342
- I(ge), s == null || s(ge);
2422
+ }), r == null || r(J);
2423
+ } catch (J) {
2424
+ const le = J.message || u.errorMessage;
2425
+ L(le), s == null || s(le);
2343
2426
  } finally {
2344
- C(!1);
2427
+ O(!1);
2345
2428
  }
2346
2429
  }
2347
- }, H = (B) => ({
2348
- ...y.input,
2349
- ...F[B] ? y.inputError : {}
2350
- }), U = () => ({
2351
- ...y.button,
2352
- ...v ? y.buttonLoading : {},
2353
- ...!k || !E && !L || !u || !z || v || t === "tenant" && !p ? y.buttonDisabled : {}
2354
- }), V = k && (E || L) && u && z && (t === "user" || p);
2355
- return /* @__PURE__ */ l("div", { className: m, style: y.container, children: [
2356
- /* @__PURE__ */ n("h2", { style: y.title, children: d.title }),
2357
- /* @__PURE__ */ l("form", { onSubmit: D, style: y.form, children: [
2358
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2359
- /* @__PURE__ */ n("label", { style: y.label, children: d.nameLabel }),
2430
+ }, U = (v) => ({
2431
+ ...w.input,
2432
+ ...F[v] ? w.inputError : {}
2433
+ }), q = () => ({
2434
+ ...w.button,
2435
+ ...P ? w.buttonLoading : {},
2436
+ ...!g || !I && !R || !h || !A || P || t === "tenant" && !N ? w.buttonDisabled : {}
2437
+ }), V = g && (I || R) && h && A && (t === "user" || N);
2438
+ return /* @__PURE__ */ d("div", { className: b, style: w.container, children: [
2439
+ /* @__PURE__ */ n("h2", { style: w.title, children: u.title }),
2440
+ /* @__PURE__ */ d("form", { onSubmit: K, style: w.form, children: [
2441
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2442
+ /* @__PURE__ */ n("label", { style: w.label, children: u.nameLabel }),
2360
2443
  /* @__PURE__ */ n(
2361
2444
  "input",
2362
2445
  {
2363
2446
  id: "name",
2364
2447
  name: "name",
2365
2448
  type: "text",
2366
- value: k,
2367
- onChange: (B) => {
2368
- b(B.target.value), F.name && c((K) => ({ ...K, name: !1 }));
2449
+ value: g,
2450
+ onChange: (v) => {
2451
+ S(v.target.value), F.name && l((J) => ({ ...J, name: !1 }));
2369
2452
  },
2370
- placeholder: d.namePlaceholder,
2371
- style: H("name"),
2372
- disabled: v
2453
+ placeholder: u.namePlaceholder,
2454
+ style: U("name"),
2455
+ disabled: P
2373
2456
  }
2374
2457
  )
2375
2458
  ] }),
2376
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2377
- /* @__PURE__ */ n("label", { style: y.label, children: d.lastNameLabel }),
2459
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2460
+ /* @__PURE__ */ n("label", { style: w.label, children: u.lastNameLabel }),
2378
2461
  /* @__PURE__ */ n(
2379
2462
  "input",
2380
2463
  {
@@ -2382,46 +2465,46 @@ function tr({
2382
2465
  name: "lastName",
2383
2466
  type: "text",
2384
2467
  value: f,
2385
- onChange: (B) => A(B.target.value),
2386
- placeholder: d.lastNamePlaceholder,
2387
- style: y.input,
2388
- disabled: v
2468
+ onChange: (v) => T(v.target.value),
2469
+ placeholder: u.lastNamePlaceholder,
2470
+ style: w.input,
2471
+ disabled: P
2389
2472
  }
2390
2473
  )
2391
2474
  ] }),
2392
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2393
- /* @__PURE__ */ n("label", { style: y.label, children: d.emailLabel }),
2475
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2476
+ /* @__PURE__ */ n("label", { style: w.label, children: u.emailLabel }),
2394
2477
  /* @__PURE__ */ n(
2395
2478
  "input",
2396
2479
  {
2397
2480
  id: "email",
2398
2481
  name: "email",
2399
2482
  type: "email",
2400
- value: E,
2401
- onChange: (B) => {
2402
- $(B.target.value), F.email && c((K) => ({ ...K, email: !1, phoneNumber: !1 }));
2483
+ value: I,
2484
+ onChange: (v) => {
2485
+ C(v.target.value), F.email && l((J) => ({ ...J, email: !1, phoneNumber: !1 }));
2403
2486
  },
2404
- placeholder: d.emailPlaceholder,
2405
- style: H("email"),
2406
- disabled: v
2487
+ placeholder: u.emailPlaceholder,
2488
+ style: U("email"),
2489
+ disabled: P
2407
2490
  }
2408
2491
  )
2409
2492
  ] }),
2410
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2411
- /* @__PURE__ */ n("label", { style: y.label, children: d.phoneNumberLabel }),
2493
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2494
+ /* @__PURE__ */ n("label", { style: w.label, children: u.phoneNumberLabel }),
2412
2495
  /* @__PURE__ */ n(
2413
2496
  "input",
2414
2497
  {
2415
2498
  id: "phoneNumber",
2416
2499
  name: "phoneNumber",
2417
2500
  type: "tel",
2418
- value: L,
2419
- onChange: (B) => {
2420
- P(B.target.value), F.phoneNumber && c((K) => ({ ...K, email: !1, phoneNumber: !1 }));
2501
+ value: R,
2502
+ onChange: (v) => {
2503
+ x(v.target.value), F.phoneNumber && l((J) => ({ ...J, email: !1, phoneNumber: !1 }));
2421
2504
  },
2422
- placeholder: d.phoneNumberPlaceholder,
2423
- style: H("phoneNumber"),
2424
- disabled: v
2505
+ placeholder: u.phoneNumberPlaceholder,
2506
+ style: U("phoneNumber"),
2507
+ disabled: P
2425
2508
  }
2426
2509
  )
2427
2510
  ] }),
@@ -2437,83 +2520,83 @@ function tr({
2437
2520
  children: "At least one contact method (email or phone) is required"
2438
2521
  }
2439
2522
  ),
2440
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2441
- /* @__PURE__ */ n("label", { style: y.label, children: d.passwordLabel }),
2523
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2524
+ /* @__PURE__ */ n("label", { style: w.label, children: u.passwordLabel }),
2442
2525
  /* @__PURE__ */ n(
2443
2526
  "input",
2444
2527
  {
2445
2528
  id: "password",
2446
2529
  name: "password",
2447
2530
  type: "password",
2448
- value: u,
2449
- onChange: (B) => {
2450
- M(B.target.value), F.password && c((K) => ({ ...K, password: !1 }));
2531
+ value: h,
2532
+ onChange: (v) => {
2533
+ $(v.target.value), F.password && l((J) => ({ ...J, password: !1 }));
2451
2534
  },
2452
- placeholder: d.passwordPlaceholder,
2453
- style: H("password"),
2454
- disabled: v
2535
+ placeholder: u.passwordPlaceholder,
2536
+ style: U("password"),
2537
+ disabled: P
2455
2538
  }
2456
2539
  )
2457
2540
  ] }),
2458
- /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2459
- /* @__PURE__ */ n("label", { style: y.label, children: d.confirmPasswordLabel }),
2541
+ /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2542
+ /* @__PURE__ */ n("label", { style: w.label, children: u.confirmPasswordLabel }),
2460
2543
  /* @__PURE__ */ n(
2461
2544
  "input",
2462
2545
  {
2463
2546
  id: "confirmPassword",
2464
2547
  name: "confirmPassword",
2465
2548
  type: "password",
2466
- value: z,
2467
- onChange: (B) => {
2468
- N(B.target.value), F.confirmPassword && c((K) => ({ ...K, confirmPassword: !1 })), x === d.passwordMismatchError && I("");
2549
+ value: A,
2550
+ onChange: (v) => {
2551
+ E(v.target.value), F.confirmPassword && l((J) => ({ ...J, confirmPassword: !1 })), c === u.passwordMismatchError && L("");
2469
2552
  },
2470
- placeholder: d.confirmPasswordPlaceholder,
2471
- style: H("confirmPassword"),
2472
- disabled: v
2553
+ placeholder: u.confirmPasswordPlaceholder,
2554
+ style: U("confirmPassword"),
2555
+ disabled: P
2473
2556
  }
2474
2557
  )
2475
2558
  ] }),
2476
- t === "tenant" && /* @__PURE__ */ l("div", { style: y.fieldGroup, children: [
2477
- /* @__PURE__ */ n("label", { style: y.label, children: d.tenantNameLabel }),
2559
+ t === "tenant" && /* @__PURE__ */ d("div", { style: w.fieldGroup, children: [
2560
+ /* @__PURE__ */ n("label", { style: w.label, children: u.tenantNameLabel }),
2478
2561
  /* @__PURE__ */ n(
2479
2562
  "input",
2480
2563
  {
2481
2564
  id: "tenantName",
2482
2565
  name: "tenantName",
2483
2566
  type: "text",
2484
- value: p,
2485
- onChange: (B) => {
2486
- O(B.target.value), F.tenantName && c((K) => ({ ...K, tenantName: !1 }));
2567
+ value: N,
2568
+ onChange: (v) => {
2569
+ D(v.target.value), F.tenantName && l((J) => ({ ...J, tenantName: !1 }));
2487
2570
  },
2488
- placeholder: d.tenantNamePlaceholder,
2489
- style: H("tenantName"),
2490
- disabled: v
2571
+ placeholder: u.tenantNamePlaceholder,
2572
+ style: U("tenantName"),
2573
+ disabled: P
2491
2574
  }
2492
2575
  )
2493
2576
  ] }),
2494
- /* @__PURE__ */ n("button", { type: "submit", disabled: !V || v, style: U(), children: v ? d.loadingText : d.submitButton }),
2495
- x && /* @__PURE__ */ n("div", { style: y.errorText, children: x })
2577
+ /* @__PURE__ */ n("button", { type: "submit", disabled: !V || P, style: q(), children: P ? u.loadingText : u.submitButton }),
2578
+ c && /* @__PURE__ */ n("div", { style: w.errorText, children: c })
2496
2579
  ] }),
2497
- (g || w) && /* @__PURE__ */ l("div", { style: y.linkContainer, children: [
2498
- w && /* @__PURE__ */ l("div", { children: [
2499
- /* @__PURE__ */ l("span", { style: y.divider, children: [
2500
- d.magicLinkText,
2580
+ (m || y) && /* @__PURE__ */ d("div", { style: w.linkContainer, children: [
2581
+ y && /* @__PURE__ */ d("div", { children: [
2582
+ /* @__PURE__ */ d("span", { style: w.divider, children: [
2583
+ u.magicLinkText,
2501
2584
  " "
2502
2585
  ] }),
2503
- /* @__PURE__ */ n("a", { onClick: a, style: y.link, children: d.magicLinkLink })
2586
+ /* @__PURE__ */ n("a", { onClick: a, style: w.link, children: u.magicLinkLink })
2504
2587
  ] }),
2505
- w && g && /* @__PURE__ */ n("div", { style: y.divider, children: "•" }),
2506
- g && /* @__PURE__ */ l("div", { children: [
2507
- /* @__PURE__ */ l("span", { style: y.divider, children: [
2508
- d.loginText,
2588
+ y && m && /* @__PURE__ */ n("div", { style: w.divider, children: "•" }),
2589
+ m && /* @__PURE__ */ d("div", { children: [
2590
+ /* @__PURE__ */ d("span", { style: w.divider, children: [
2591
+ u.loginText,
2509
2592
  " "
2510
2593
  ] }),
2511
- /* @__PURE__ */ n("a", { onClick: o, style: y.link, children: d.loginLink })
2594
+ /* @__PURE__ */ n("a", { onClick: o, style: w.link, children: u.loginLink })
2512
2595
  ] })
2513
2596
  ] })
2514
2597
  ] });
2515
2598
  }
2516
- const kt = {
2599
+ const Rt = {
2517
2600
  title: "Sign In with Magic Link",
2518
2601
  emailLabel: "Email",
2519
2602
  emailPlaceholder: "Enter your email",
@@ -2531,7 +2614,7 @@ const kt = {
2531
2614
  loadingText: "Sending magic link...",
2532
2615
  verifyingText: "Verifying magic link...",
2533
2616
  description: "Enter your email to receive a magic link. If you don't have an account, we'll create one for you."
2534
- }, xt = {
2617
+ }, Lt = {
2535
2618
  container: {
2536
2619
  maxWidth: "400px",
2537
2620
  width: "100%",
@@ -2634,7 +2717,7 @@ const kt = {
2634
2717
  fontSize: "0.875rem"
2635
2718
  }
2636
2719
  };
2637
- function rr({
2720
+ function dr({
2638
2721
  copy: i = {},
2639
2722
  styles: e = {},
2640
2723
  onSuccess: t,
@@ -2642,97 +2725,97 @@ function rr({
2642
2725
  onLoginClick: s,
2643
2726
  onSignupClick: o,
2644
2727
  showTraditionalLinks: a = !0,
2645
- className: g,
2646
- verifyToken: w,
2647
- frontendUrl: m
2728
+ className: m,
2729
+ verifyToken: y,
2730
+ frontendUrl: b
2648
2731
  }) {
2649
- const [k, b] = S(""), [f, A] = S(""), [E, $] = S(""), [L, P] = S(!1), [u, M] = S(!1), [z, N] = S(""), [p, O] = S(""), [v, C] = S({}), [x, I] = S(!1), { sendMagicLink: F, verifyMagicLink: c } = ae(), { tenant: R } = le(), T = { ...kt, ...i }, h = { ...xt, ...e };
2732
+ const [g, S] = k(""), [f, T] = k(""), [I, C] = k(""), [R, x] = k(!1), [h, $] = k(!1), [A, E] = k(""), [N, D] = k(""), [P, O] = k({}), [c, L] = k(!1), { sendMagicLink: F, verifyMagicLink: l } = ae(), { tenant: H } = ce(), M = { ...Rt, ...i }, p = { ...Lt, ...e };
2650
2733
  re(() => {
2651
- w && d(w);
2652
- }, [w]);
2653
- const d = async (U) => {
2654
- if (!R || !k) {
2655
- N("Missing tenant or email");
2734
+ y && u(y);
2735
+ }, [y]);
2736
+ const u = async (q) => {
2737
+ if (!H || !g) {
2738
+ E("Missing tenant or email");
2656
2739
  return;
2657
2740
  }
2658
- M(!0), N("");
2741
+ $(!0), E("");
2659
2742
  try {
2660
- const V = await c({
2661
- token: U,
2662
- email: k
2743
+ const V = await l({
2744
+ token: q,
2745
+ email: g
2663
2746
  // tenantId inferred from context automatically
2664
2747
  });
2665
2748
  t == null || t(V);
2666
2749
  } catch (V) {
2667
- const B = V.message || "Failed to verify magic link";
2668
- N(B), r == null || r(B);
2750
+ const v = V.message || "Failed to verify magic link";
2751
+ E(v), r == null || r(v);
2669
2752
  } finally {
2670
- M(!1);
2753
+ $(!1);
2671
2754
  }
2672
- }, y = () => {
2673
- const U = {};
2674
- return k.trim() || (U.email = !0), x && !f.trim() && (U.name = !0), C(U), Object.keys(U).length === 0;
2675
- }, G = async (U) => {
2676
- if (U.preventDefault(), !!y()) {
2677
- if (!(R != null && R.id)) {
2678
- N("Tenant not found");
2755
+ }, w = () => {
2756
+ const q = {};
2757
+ return g.trim() || (q.email = !0), c && !f.trim() && (q.name = !0), O(q), Object.keys(q).length === 0;
2758
+ }, G = async (q) => {
2759
+ if (q.preventDefault(), !!w()) {
2760
+ if (!(H != null && H.id)) {
2761
+ E("Tenant not found");
2679
2762
  return;
2680
2763
  }
2681
- P(!0), N(""), O("");
2764
+ x(!0), E(""), D("");
2682
2765
  try {
2683
- const V = m || (typeof window < "u" ? window.location.origin : ""), B = await F({
2684
- email: k,
2685
- tenantId: R.id,
2766
+ const V = b || (typeof window < "u" ? window.location.origin : ""), v = await F({
2767
+ email: g,
2768
+ tenantId: H.id,
2686
2769
  frontendUrl: V,
2687
- name: x ? f : void 0,
2688
- lastName: x ? E : void 0
2770
+ name: c ? f : void 0,
2771
+ lastName: c ? I : void 0
2689
2772
  });
2690
- O(T.successMessage), t == null || t(B);
2773
+ D(M.successMessage), t == null || t(v);
2691
2774
  } catch (V) {
2692
- const B = V.message || T.errorMessage;
2693
- N(B), r == null || r(B);
2775
+ const v = V.message || M.errorMessage;
2776
+ E(v), r == null || r(v);
2694
2777
  } finally {
2695
- P(!1);
2778
+ x(!1);
2696
2779
  }
2697
2780
  }
2698
- }, D = (U) => ({
2699
- ...h.input,
2700
- ...v[U] ? h.inputError : {}
2701
- }), H = () => ({
2702
- ...h.button,
2703
- ...L || u ? h.buttonLoading : {},
2704
- ...!k || L || u ? h.buttonDisabled : {}
2781
+ }, K = (q) => ({
2782
+ ...p.input,
2783
+ ...P[q] ? p.inputError : {}
2784
+ }), U = () => ({
2785
+ ...p.button,
2786
+ ...R || h ? p.buttonLoading : {},
2787
+ ...!g || R || h ? p.buttonDisabled : {}
2705
2788
  });
2706
- return u ? /* @__PURE__ */ l("div", { className: g, style: h.container, children: [
2707
- /* @__PURE__ */ n("h2", { style: h.title, children: T.verifyingText }),
2789
+ return h ? /* @__PURE__ */ d("div", { className: m, style: p.container, children: [
2790
+ /* @__PURE__ */ n("h2", { style: p.title, children: M.verifyingText }),
2708
2791
  /* @__PURE__ */ n("div", { style: { textAlign: "center", padding: "2rem" }, children: /* @__PURE__ */ n("div", { style: { fontSize: "1rem", color: "#6b7280" }, children: "Please wait while we verify your magic link..." }) })
2709
- ] }) : /* @__PURE__ */ l("div", { className: g, style: h.container, children: [
2710
- /* @__PURE__ */ n("h2", { style: h.title, children: T.title }),
2711
- /* @__PURE__ */ n("p", { style: h.description, children: T.description }),
2712
- /* @__PURE__ */ l("form", { onSubmit: G, style: h.form, children: [
2713
- /* @__PURE__ */ l("div", { style: h.fieldGroup, children: [
2714
- /* @__PURE__ */ n("label", { style: h.label, children: T.emailLabel }),
2792
+ ] }) : /* @__PURE__ */ d("div", { className: m, style: p.container, children: [
2793
+ /* @__PURE__ */ n("h2", { style: p.title, children: M.title }),
2794
+ /* @__PURE__ */ n("p", { style: p.description, children: M.description }),
2795
+ /* @__PURE__ */ d("form", { onSubmit: G, style: p.form, children: [
2796
+ /* @__PURE__ */ d("div", { style: p.fieldGroup, children: [
2797
+ /* @__PURE__ */ n("label", { style: p.label, children: M.emailLabel }),
2715
2798
  /* @__PURE__ */ n(
2716
2799
  "input",
2717
2800
  {
2718
2801
  id: "email",
2719
2802
  name: "email",
2720
2803
  type: "email",
2721
- value: k,
2722
- onChange: (U) => {
2723
- b(U.target.value), v.email && C((V) => ({ ...V, email: !1 }));
2804
+ value: g,
2805
+ onChange: (q) => {
2806
+ S(q.target.value), P.email && O((V) => ({ ...V, email: !1 }));
2724
2807
  },
2725
- placeholder: T.emailPlaceholder,
2726
- style: D("email"),
2727
- disabled: L || u
2808
+ placeholder: M.emailPlaceholder,
2809
+ style: K("email"),
2810
+ disabled: R || h
2728
2811
  }
2729
2812
  )
2730
2813
  ] }),
2731
- !x && /* @__PURE__ */ n("div", { style: { textAlign: "center", marginTop: "0.5rem" }, children: /* @__PURE__ */ n(
2814
+ !c && /* @__PURE__ */ n("div", { style: { textAlign: "center", marginTop: "0.5rem" }, children: /* @__PURE__ */ n(
2732
2815
  "button",
2733
2816
  {
2734
2817
  type: "button",
2735
- onClick: () => I(!0),
2818
+ onClick: () => L(!0),
2736
2819
  style: {
2737
2820
  background: "none",
2738
2821
  border: "none",
@@ -2744,9 +2827,9 @@ function rr({
2744
2827
  children: "New user? Add your name"
2745
2828
  }
2746
2829
  ) }),
2747
- x && /* @__PURE__ */ l(j, { children: [
2748
- /* @__PURE__ */ l("div", { style: h.fieldGroup, children: [
2749
- /* @__PURE__ */ n("label", { style: h.label, children: T.nameLabel }),
2830
+ c && /* @__PURE__ */ d(j, { children: [
2831
+ /* @__PURE__ */ d("div", { style: p.fieldGroup, children: [
2832
+ /* @__PURE__ */ n("label", { style: p.label, children: M.nameLabel }),
2750
2833
  /* @__PURE__ */ n(
2751
2834
  "input",
2752
2835
  {
@@ -2754,28 +2837,28 @@ function rr({
2754
2837
  name: "name",
2755
2838
  type: "text",
2756
2839
  value: f,
2757
- onChange: (U) => {
2758
- A(U.target.value), v.name && C((V) => ({ ...V, name: !1 }));
2840
+ onChange: (q) => {
2841
+ T(q.target.value), P.name && O((V) => ({ ...V, name: !1 }));
2759
2842
  },
2760
- placeholder: T.namePlaceholder,
2761
- style: D("name"),
2762
- disabled: L || u
2843
+ placeholder: M.namePlaceholder,
2844
+ style: K("name"),
2845
+ disabled: R || h
2763
2846
  }
2764
2847
  )
2765
2848
  ] }),
2766
- /* @__PURE__ */ l("div", { style: h.fieldGroup, children: [
2767
- /* @__PURE__ */ n("label", { style: h.label, children: T.lastNameLabel }),
2849
+ /* @__PURE__ */ d("div", { style: p.fieldGroup, children: [
2850
+ /* @__PURE__ */ n("label", { style: p.label, children: M.lastNameLabel }),
2768
2851
  /* @__PURE__ */ n(
2769
2852
  "input",
2770
2853
  {
2771
2854
  id: "lastName",
2772
2855
  name: "lastName",
2773
2856
  type: "text",
2774
- value: E,
2775
- onChange: (U) => $(U.target.value),
2776
- placeholder: T.lastNamePlaceholder,
2777
- style: h.input,
2778
- disabled: L || u
2857
+ value: I,
2858
+ onChange: (q) => C(q.target.value),
2859
+ placeholder: M.lastNamePlaceholder,
2860
+ style: p.input,
2861
+ disabled: R || h
2779
2862
  }
2780
2863
  )
2781
2864
  ] }),
@@ -2784,7 +2867,7 @@ function rr({
2784
2867
  {
2785
2868
  type: "button",
2786
2869
  onClick: () => {
2787
- I(!1), A(""), $("");
2870
+ L(!1), T(""), C("");
2788
2871
  },
2789
2872
  style: {
2790
2873
  background: "none",
@@ -2798,30 +2881,30 @@ function rr({
2798
2881
  }
2799
2882
  ) })
2800
2883
  ] }),
2801
- /* @__PURE__ */ n("button", { type: "submit", disabled: !k || L || u, style: H(), children: L ? T.loadingText : T.submitButton }),
2802
- z && /* @__PURE__ */ n("div", { style: h.errorText, children: z }),
2803
- p && /* @__PURE__ */ n("div", { style: h.successText, children: p })
2884
+ /* @__PURE__ */ n("button", { type: "submit", disabled: !g || R || h, style: U(), children: R ? M.loadingText : M.submitButton }),
2885
+ A && /* @__PURE__ */ n("div", { style: p.errorText, children: A }),
2886
+ N && /* @__PURE__ */ n("div", { style: p.successText, children: N })
2804
2887
  ] }),
2805
- a && /* @__PURE__ */ l("div", { style: h.linkContainer, children: [
2806
- /* @__PURE__ */ l("div", { children: [
2807
- /* @__PURE__ */ l("span", { style: h.divider, children: [
2808
- T.loginText,
2888
+ a && /* @__PURE__ */ d("div", { style: p.linkContainer, children: [
2889
+ /* @__PURE__ */ d("div", { children: [
2890
+ /* @__PURE__ */ d("span", { style: p.divider, children: [
2891
+ M.loginText,
2809
2892
  " "
2810
2893
  ] }),
2811
- /* @__PURE__ */ n("a", { onClick: s, style: h.link, children: T.loginLink })
2894
+ /* @__PURE__ */ n("a", { onClick: s, style: p.link, children: M.loginLink })
2812
2895
  ] }),
2813
- /* @__PURE__ */ n("div", { style: h.divider, children: "•" }),
2814
- /* @__PURE__ */ l("div", { children: [
2815
- /* @__PURE__ */ l("span", { style: h.divider, children: [
2816
- T.signupText,
2896
+ /* @__PURE__ */ n("div", { style: p.divider, children: "•" }),
2897
+ /* @__PURE__ */ d("div", { children: [
2898
+ /* @__PURE__ */ d("span", { style: p.divider, children: [
2899
+ M.signupText,
2817
2900
  " "
2818
2901
  ] }),
2819
- /* @__PURE__ */ n("a", { onClick: o, style: h.link, children: T.signupLink })
2902
+ /* @__PURE__ */ n("a", { onClick: o, style: p.link, children: M.signupLink })
2820
2903
  ] })
2821
2904
  ] })
2822
2905
  ] });
2823
2906
  }
2824
- const At = {
2907
+ const Et = {
2825
2908
  title: "Verifying Magic Link",
2826
2909
  verifyingMessage: "Please wait while we verify your magic link...",
2827
2910
  successMessage: "Magic link verified successfully! You are now logged in.",
@@ -2829,7 +2912,7 @@ const At = {
2829
2912
  redirectingMessage: "Redirecting you to the dashboard...",
2830
2913
  retryButton: "Try Again",
2831
2914
  backToLoginButton: "Back to Login"
2832
- }, He = {
2915
+ }, ze = {
2833
2916
  container: {
2834
2917
  maxWidth: "400px",
2835
2918
  width: "100%",
@@ -2916,7 +2999,7 @@ const At = {
2916
2999
  cursor: "pointer",
2917
3000
  transition: "all 0.15s ease-in-out"
2918
3001
  }
2919
- }, Tt = () => /* @__PURE__ */ n("div", { style: He.spinner }), Pt = () => /* @__PURE__ */ l(
3002
+ }, Ft = () => /* @__PURE__ */ n("div", { style: ze.spinner }), Ct = () => /* @__PURE__ */ d(
2920
3003
  "svg",
2921
3004
  {
2922
3005
  width: "48",
@@ -2933,7 +3016,7 @@ const At = {
2933
3016
  /* @__PURE__ */ n("polyline", { points: "22,4 12,14.01 9,11.01" })
2934
3017
  ]
2935
3018
  }
2936
- ), Mt = () => /* @__PURE__ */ l(
3019
+ ), Dt = () => /* @__PURE__ */ d(
2937
3020
  "svg",
2938
3021
  {
2939
3022
  width: "48",
@@ -2951,12 +3034,12 @@ const At = {
2951
3034
  /* @__PURE__ */ n("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
2952
3035
  ]
2953
3036
  }
2954
- ), It = {
2955
- loading: /* @__PURE__ */ n(Tt, {}),
2956
- success: /* @__PURE__ */ n(Pt, {}),
2957
- error: /* @__PURE__ */ n(Mt, {})
3037
+ ), $t = {
3038
+ loading: /* @__PURE__ */ n(Ft, {}),
3039
+ success: /* @__PURE__ */ n(Ct, {}),
3040
+ error: /* @__PURE__ */ n(Dt, {})
2958
3041
  };
2959
- function nr({
3042
+ function ur({
2960
3043
  copy: i = {},
2961
3044
  styles: e = {},
2962
3045
  icons: t = {},
@@ -2964,96 +3047,96 @@ function nr({
2964
3047
  onError: s,
2965
3048
  onRetry: o,
2966
3049
  onBackToLogin: a,
2967
- className: g,
2968
- token: w,
2969
- email: m,
2970
- appId: k,
2971
- tenantSlug: b,
3050
+ className: m,
3051
+ token: y,
3052
+ email: b,
3053
+ appId: g,
3054
+ tenantSlug: S,
2972
3055
  autoRedirectDelay: f = 3e3
2973
3056
  }) {
2974
- const [A, E] = S("verifying"), [$, L] = S(""), { verifyMagicLink: P } = ae(), u = { ...At, ...i }, M = { ...He, ...e }, z = { ...It, ...t }, N = () => {
3057
+ const [T, I] = k("verifying"), [C, R] = k(""), { verifyMagicLink: x } = ae(), h = { ...Et, ...i }, $ = { ...ze, ...e }, A = { ...$t, ...t }, E = () => {
2975
3058
  if (typeof window > "u") return {};
2976
- const x = new URLSearchParams(window.location.search);
3059
+ const c = new URLSearchParams(window.location.search);
2977
3060
  return {
2978
- token: w || x.get("token") || "",
2979
- email: m || x.get("email") || "",
2980
- appId: k || x.get("appId") || "",
2981
- tenantSlug: b || x.get("tenantSlug") || void 0
3061
+ token: y || c.get("token") || "",
3062
+ email: b || c.get("email") || "",
3063
+ appId: g || c.get("appId") || "",
3064
+ tenantSlug: S || c.get("tenantSlug") || void 0
2982
3065
  };
2983
- }, p = async () => {
2984
- E("verifying"), L("");
3066
+ }, N = async () => {
3067
+ I("verifying"), R("");
2985
3068
  try {
2986
- const x = N();
2987
- if (!x.token || !x.email)
3069
+ const c = E();
3070
+ if (!c.token || !c.email)
2988
3071
  throw new Error("Missing required parameters: token or email");
2989
- const I = await P({
2990
- token: x.token,
2991
- email: x.email,
2992
- tenantSlug: x.tenantSlug
3072
+ const L = await x({
3073
+ token: c.token,
3074
+ email: c.email,
3075
+ tenantSlug: c.tenantSlug
2993
3076
  });
2994
- E("success"), r == null || r(I), f > 0 && setTimeout(() => {
2995
- E("redirecting");
3077
+ I("success"), r == null || r(L), f > 0 && setTimeout(() => {
3078
+ I("redirecting");
2996
3079
  }, f);
2997
- } catch (x) {
2998
- const I = x.message || u.errorMessage;
2999
- L(I), E("error"), s == null || s(I);
3080
+ } catch (c) {
3081
+ const L = c.message || h.errorMessage;
3082
+ R(L), I("error"), s == null || s(L);
3000
3083
  }
3001
- }, O = () => {
3002
- o == null || o(), p();
3003
- }, v = () => {
3084
+ }, D = () => {
3085
+ o == null || o(), N();
3086
+ }, P = () => {
3004
3087
  a == null || a();
3005
3088
  };
3006
3089
  re(() => {
3007
- p();
3090
+ N();
3008
3091
  }, []);
3009
- const C = () => {
3010
- switch (A) {
3092
+ const O = () => {
3093
+ switch (T) {
3011
3094
  case "verifying":
3012
- return /* @__PURE__ */ l("div", { style: M.message, children: [
3013
- z.loading,
3014
- u.verifyingMessage
3095
+ return /* @__PURE__ */ d("div", { style: $.message, children: [
3096
+ A.loading,
3097
+ h.verifyingMessage
3015
3098
  ] });
3016
3099
  case "success":
3017
- return /* @__PURE__ */ l(j, { children: [
3018
- z.success,
3019
- /* @__PURE__ */ n("div", { style: M.successMessage, children: u.successMessage })
3100
+ return /* @__PURE__ */ d(j, { children: [
3101
+ A.success,
3102
+ /* @__PURE__ */ n("div", { style: $.successMessage, children: h.successMessage })
3020
3103
  ] });
3021
3104
  case "redirecting":
3022
- return /* @__PURE__ */ l(j, { children: [
3023
- z.loading,
3024
- /* @__PURE__ */ n("div", { style: M.message, children: u.redirectingMessage })
3105
+ return /* @__PURE__ */ d(j, { children: [
3106
+ A.loading,
3107
+ /* @__PURE__ */ n("div", { style: $.message, children: h.redirectingMessage })
3025
3108
  ] });
3026
3109
  case "error":
3027
- return /* @__PURE__ */ l(j, { children: [
3028
- z.error,
3029
- /* @__PURE__ */ n("div", { style: M.errorMessage, children: $ || u.errorMessage }),
3030
- /* @__PURE__ */ l("div", { style: M.buttonContainer, children: [
3110
+ return /* @__PURE__ */ d(j, { children: [
3111
+ A.error,
3112
+ /* @__PURE__ */ n("div", { style: $.errorMessage, children: C || h.errorMessage }),
3113
+ /* @__PURE__ */ d("div", { style: $.buttonContainer, children: [
3031
3114
  /* @__PURE__ */ n(
3032
3115
  "button",
3033
3116
  {
3034
- onClick: O,
3035
- style: M.retryButton,
3036
- onMouseOver: (x) => {
3037
- x.currentTarget.style.backgroundColor = "#2563eb";
3117
+ onClick: D,
3118
+ style: $.retryButton,
3119
+ onMouseOver: (c) => {
3120
+ c.currentTarget.style.backgroundColor = "#2563eb";
3038
3121
  },
3039
- onMouseOut: (x) => {
3040
- x.currentTarget.style.backgroundColor = "#3b82f6";
3122
+ onMouseOut: (c) => {
3123
+ c.currentTarget.style.backgroundColor = "#3b82f6";
3041
3124
  },
3042
- children: u.retryButton
3125
+ children: h.retryButton
3043
3126
  }
3044
3127
  ),
3045
3128
  /* @__PURE__ */ n(
3046
3129
  "button",
3047
3130
  {
3048
- onClick: v,
3049
- style: M.backButton,
3050
- onMouseOver: (x) => {
3051
- x.currentTarget.style.backgroundColor = "#e5e7eb";
3131
+ onClick: P,
3132
+ style: $.backButton,
3133
+ onMouseOver: (c) => {
3134
+ c.currentTarget.style.backgroundColor = "#e5e7eb";
3052
3135
  },
3053
- onMouseOut: (x) => {
3054
- x.currentTarget.style.backgroundColor = "#f3f4f6";
3136
+ onMouseOut: (c) => {
3137
+ c.currentTarget.style.backgroundColor = "#f3f4f6";
3055
3138
  },
3056
- children: u.backToLoginButton
3139
+ children: h.backToLoginButton
3057
3140
  }
3058
3141
  )
3059
3142
  ] })
@@ -3062,18 +3145,18 @@ function nr({
3062
3145
  return null;
3063
3146
  }
3064
3147
  };
3065
- return /* @__PURE__ */ l("div", { style: M.container, className: g, children: [
3148
+ return /* @__PURE__ */ d("div", { style: $.container, className: m, children: [
3066
3149
  /* @__PURE__ */ n("style", { children: `
3067
3150
  @keyframes spin {
3068
3151
  0% { transform: rotate(0deg); }
3069
3152
  100% { transform: rotate(360deg); }
3070
3153
  }
3071
3154
  ` }),
3072
- /* @__PURE__ */ n("h1", { style: M.title, children: u.title }),
3073
- C()
3155
+ /* @__PURE__ */ n("h1", { style: $.title, children: h.title }),
3156
+ O()
3074
3157
  ] });
3075
3158
  }
3076
- const Rt = {
3159
+ const Ht = {
3077
3160
  title: "Reset Password",
3078
3161
  subtitle: "Enter your email address and we'll send you a link to reset your password.",
3079
3162
  emailLabel: "Email",
@@ -3095,7 +3178,7 @@ const Rt = {
3095
3178
  resetLoadingText: "Resetting...",
3096
3179
  resetSuccessMessage: "Password reset successfully!",
3097
3180
  passwordMismatchError: "Passwords do not match"
3098
- }, Lt = {
3181
+ }, Nt = {
3099
3182
  container: {
3100
3183
  maxWidth: "400px",
3101
3184
  margin: "0 auto",
@@ -3187,7 +3270,7 @@ const Rt = {
3187
3270
  cursor: "pointer"
3188
3271
  }
3189
3272
  };
3190
- function sr({
3273
+ function hr({
3191
3274
  copy: i = {},
3192
3275
  styles: e = {},
3193
3276
  mode: t = "request",
@@ -3195,105 +3278,105 @@ function sr({
3195
3278
  onSuccess: s,
3196
3279
  onError: o,
3197
3280
  onBackToLogin: a,
3198
- onModeChange: g,
3199
- className: w
3281
+ onModeChange: m,
3282
+ className: y
3200
3283
  }) {
3201
- const [m, k] = S(""), [b, f] = S(r), [A, E] = S(""), [$, L] = S(""), [P, u] = S(!1), [M, z] = S(""), [N, p] = S(""), [O, v] = S({}), { requestPasswordReset: C, confirmPasswordReset: x } = ae(), { tenant: I } = le(), F = { ...Rt, ...i }, c = { ...Lt, ...e }, R = () => {
3202
- const H = {};
3203
- return m.trim() || (H.email = !0), v(H), Object.keys(H).length === 0;
3204
- }, T = () => {
3205
- const H = {};
3206
- return b.trim() || (H.token = !0), A.trim() || (H.newPassword = !0), $.trim() || (H.confirmPassword = !0), v(H), Object.keys(H).length === 0;
3207
- }, h = async (H) => {
3208
- if (H.preventDefault(), !!R()) {
3209
- if (!(I != null && I.id)) {
3210
- z("Tenant not found");
3284
+ const [b, g] = k(""), [S, f] = k(r), [T, I] = k(""), [C, R] = k(""), [x, h] = k(!1), [$, A] = k(""), [E, N] = k(""), [D, P] = k({}), { requestPasswordReset: O, confirmPasswordReset: c } = ae(), { tenant: L } = ce(), F = { ...Ht, ...i }, l = { ...Nt, ...e }, H = () => {
3285
+ const U = {};
3286
+ return b.trim() || (U.email = !0), P(U), Object.keys(U).length === 0;
3287
+ }, M = () => {
3288
+ const U = {};
3289
+ return S.trim() || (U.token = !0), T.trim() || (U.newPassword = !0), C.trim() || (U.confirmPassword = !0), P(U), Object.keys(U).length === 0;
3290
+ }, p = async (U) => {
3291
+ if (U.preventDefault(), !!H()) {
3292
+ if (!(L != null && L.id)) {
3293
+ A("Tenant not found");
3211
3294
  return;
3212
3295
  }
3213
- u(!0), z(""), p("");
3296
+ h(!0), A(""), N("");
3214
3297
  try {
3215
- await C({ email: m, tenantId: I.id }), p(F.successMessage), s == null || s();
3216
- } catch (U) {
3217
- const V = U.message || F.errorMessage;
3218
- z(V), o == null || o(V);
3298
+ await O({ email: b, tenantId: L.id }), N(F.successMessage), s == null || s();
3299
+ } catch (q) {
3300
+ const V = q.message || F.errorMessage;
3301
+ A(V), o == null || o(V);
3219
3302
  } finally {
3220
- u(!1);
3303
+ h(!1);
3221
3304
  }
3222
3305
  }
3223
- }, d = async (H) => {
3224
- if (H.preventDefault(), !!T()) {
3225
- if (A !== $) {
3226
- z(F.passwordMismatchError), v({ confirmPassword: !0 });
3306
+ }, u = async (U) => {
3307
+ if (U.preventDefault(), !!M()) {
3308
+ if (T !== C) {
3309
+ A(F.passwordMismatchError), P({ confirmPassword: !0 });
3227
3310
  return;
3228
3311
  }
3229
- u(!0), z(""), p("");
3312
+ h(!0), A(""), N("");
3230
3313
  try {
3231
- await x({ token: b, newPassword: A }), p(F.resetSuccessMessage), s == null || s();
3232
- } catch (U) {
3233
- const V = U.message || F.errorMessage;
3234
- z(V), o == null || o(V);
3314
+ await c({ token: S, newPassword: T }), N(F.resetSuccessMessage), s == null || s();
3315
+ } catch (q) {
3316
+ const V = q.message || F.errorMessage;
3317
+ A(V), o == null || o(V);
3235
3318
  } finally {
3236
- u(!1);
3319
+ h(!1);
3237
3320
  }
3238
3321
  }
3239
- }, y = (H) => ({
3240
- ...c.input,
3241
- ...O[H] ? c.inputError : {}
3322
+ }, w = (U) => ({
3323
+ ...l.input,
3324
+ ...D[U] ? l.inputError : {}
3242
3325
  }), G = () => ({
3243
- ...c.button,
3244
- ...P ? c.buttonLoading : {}
3326
+ ...l.button,
3327
+ ...x ? l.buttonLoading : {}
3245
3328
  });
3246
3329
  if (t === "reset") {
3247
- const H = b && A && $;
3248
- return /* @__PURE__ */ l("div", { className: w, style: c.container, children: [
3249
- /* @__PURE__ */ n("h2", { style: c.title, children: F.resetTitle }),
3250
- /* @__PURE__ */ n("p", { style: c.subtitle, children: F.resetSubtitle }),
3251
- /* @__PURE__ */ l("form", { onSubmit: d, style: c.form, children: [
3252
- /* @__PURE__ */ l("div", { style: c.fieldGroup, children: [
3253
- /* @__PURE__ */ n("label", { style: c.label, children: F.tokenLabel }),
3330
+ const U = S && T && C;
3331
+ return /* @__PURE__ */ d("div", { className: y, style: l.container, children: [
3332
+ /* @__PURE__ */ n("h2", { style: l.title, children: F.resetTitle }),
3333
+ /* @__PURE__ */ n("p", { style: l.subtitle, children: F.resetSubtitle }),
3334
+ /* @__PURE__ */ d("form", { onSubmit: u, style: l.form, children: [
3335
+ /* @__PURE__ */ d("div", { style: l.fieldGroup, children: [
3336
+ /* @__PURE__ */ n("label", { style: l.label, children: F.tokenLabel }),
3254
3337
  /* @__PURE__ */ n(
3255
3338
  "input",
3256
3339
  {
3257
3340
  type: "text",
3258
- value: b,
3259
- onChange: (U) => {
3260
- f(U.target.value), O.token && v((V) => ({ ...V, token: !1 }));
3341
+ value: S,
3342
+ onChange: (q) => {
3343
+ f(q.target.value), D.token && P((V) => ({ ...V, token: !1 }));
3261
3344
  },
3262
3345
  placeholder: F.tokenPlaceholder,
3263
- style: y("token"),
3264
- disabled: P
3346
+ style: w("token"),
3347
+ disabled: x
3265
3348
  }
3266
3349
  )
3267
3350
  ] }),
3268
- /* @__PURE__ */ l("div", { style: c.fieldGroup, children: [
3269
- /* @__PURE__ */ n("label", { style: c.label, children: F.newPasswordLabel }),
3351
+ /* @__PURE__ */ d("div", { style: l.fieldGroup, children: [
3352
+ /* @__PURE__ */ n("label", { style: l.label, children: F.newPasswordLabel }),
3270
3353
  /* @__PURE__ */ n(
3271
3354
  "input",
3272
3355
  {
3273
3356
  type: "password",
3274
- value: A,
3275
- onChange: (U) => {
3276
- E(U.target.value), O.newPassword && v((V) => ({ ...V, newPassword: !1 }));
3357
+ value: T,
3358
+ onChange: (q) => {
3359
+ I(q.target.value), D.newPassword && P((V) => ({ ...V, newPassword: !1 }));
3277
3360
  },
3278
3361
  placeholder: F.newPasswordPlaceholder,
3279
- style: y("newPassword"),
3280
- disabled: P
3362
+ style: w("newPassword"),
3363
+ disabled: x
3281
3364
  }
3282
3365
  )
3283
3366
  ] }),
3284
- /* @__PURE__ */ l("div", { style: c.fieldGroup, children: [
3285
- /* @__PURE__ */ n("label", { style: c.label, children: F.confirmPasswordLabel }),
3367
+ /* @__PURE__ */ d("div", { style: l.fieldGroup, children: [
3368
+ /* @__PURE__ */ n("label", { style: l.label, children: F.confirmPasswordLabel }),
3286
3369
  /* @__PURE__ */ n(
3287
3370
  "input",
3288
3371
  {
3289
3372
  type: "password",
3290
- value: $,
3291
- onChange: (U) => {
3292
- L(U.target.value), O.confirmPassword && v((V) => ({ ...V, confirmPassword: !1 })), M === F.passwordMismatchError && z("");
3373
+ value: C,
3374
+ onChange: (q) => {
3375
+ R(q.target.value), D.confirmPassword && P((V) => ({ ...V, confirmPassword: !1 })), $ === F.passwordMismatchError && A("");
3293
3376
  },
3294
3377
  placeholder: F.confirmPasswordPlaceholder,
3295
- style: y("confirmPassword"),
3296
- disabled: P
3378
+ style: w("confirmPassword"),
3379
+ disabled: x
3297
3380
  }
3298
3381
  )
3299
3382
  ] }),
@@ -3301,44 +3384,44 @@ function sr({
3301
3384
  "button",
3302
3385
  {
3303
3386
  type: "submit",
3304
- disabled: !H || P,
3387
+ disabled: !U || x,
3305
3388
  style: {
3306
3389
  ...G(),
3307
- ...!H || P ? c.buttonDisabled : {}
3390
+ ...!U || x ? l.buttonDisabled : {}
3308
3391
  },
3309
- children: P ? F.resetLoadingText : F.resetSubmitButton
3392
+ children: x ? F.resetLoadingText : F.resetSubmitButton
3310
3393
  }
3311
3394
  ),
3312
- M && /* @__PURE__ */ n("div", { style: c.errorText, children: M }),
3313
- N && /* @__PURE__ */ n("div", { style: c.successText, children: N })
3395
+ $ && /* @__PURE__ */ n("div", { style: l.errorText, children: $ }),
3396
+ E && /* @__PURE__ */ n("div", { style: l.successText, children: E })
3314
3397
  ] }),
3315
- /* @__PURE__ */ l("div", { style: c.linkContainer, children: [
3316
- /* @__PURE__ */ n("a", { onClick: a, style: c.link, children: F.backToLoginLink }),
3317
- g && /* @__PURE__ */ l(j, { children: [
3398
+ /* @__PURE__ */ d("div", { style: l.linkContainer, children: [
3399
+ /* @__PURE__ */ n("a", { onClick: a, style: l.link, children: F.backToLoginLink }),
3400
+ m && /* @__PURE__ */ d(j, { children: [
3318
3401
  /* @__PURE__ */ n("span", { style: { margin: "0 0.5rem", color: "#6b7280" }, children: "•" }),
3319
- /* @__PURE__ */ n("a", { onClick: () => g("request"), style: c.link, children: "Request New Link" })
3402
+ /* @__PURE__ */ n("a", { onClick: () => m("request"), style: l.link, children: "Request New Link" })
3320
3403
  ] })
3321
3404
  ] })
3322
3405
  ] });
3323
3406
  }
3324
- const D = m;
3325
- return /* @__PURE__ */ l("div", { className: w, style: c.container, children: [
3326
- /* @__PURE__ */ n("h2", { style: c.title, children: F.title }),
3327
- /* @__PURE__ */ n("p", { style: c.subtitle, children: F.subtitle }),
3328
- /* @__PURE__ */ l("form", { onSubmit: h, style: c.form, children: [
3329
- /* @__PURE__ */ l("div", { style: c.fieldGroup, children: [
3330
- /* @__PURE__ */ n("label", { style: c.label, children: F.emailLabel }),
3407
+ const K = b;
3408
+ return /* @__PURE__ */ d("div", { className: y, style: l.container, children: [
3409
+ /* @__PURE__ */ n("h2", { style: l.title, children: F.title }),
3410
+ /* @__PURE__ */ n("p", { style: l.subtitle, children: F.subtitle }),
3411
+ /* @__PURE__ */ d("form", { onSubmit: p, style: l.form, children: [
3412
+ /* @__PURE__ */ d("div", { style: l.fieldGroup, children: [
3413
+ /* @__PURE__ */ n("label", { style: l.label, children: F.emailLabel }),
3331
3414
  /* @__PURE__ */ n(
3332
3415
  "input",
3333
3416
  {
3334
3417
  type: "email",
3335
- value: m,
3336
- onChange: (H) => {
3337
- k(H.target.value), O.email && v((U) => ({ ...U, email: !1 }));
3418
+ value: b,
3419
+ onChange: (U) => {
3420
+ g(U.target.value), D.email && P((q) => ({ ...q, email: !1 }));
3338
3421
  },
3339
3422
  placeholder: F.emailPlaceholder,
3340
- style: y("email"),
3341
- disabled: P
3423
+ style: w("email"),
3424
+ disabled: x
3342
3425
  }
3343
3426
  )
3344
3427
  ] }),
@@ -3346,27 +3429,27 @@ function sr({
3346
3429
  "button",
3347
3430
  {
3348
3431
  type: "submit",
3349
- disabled: !D || P,
3432
+ disabled: !K || x,
3350
3433
  style: {
3351
3434
  ...G(),
3352
- ...!D || P ? c.buttonDisabled : {}
3435
+ ...!K || x ? l.buttonDisabled : {}
3353
3436
  },
3354
- children: P ? F.loadingText : F.submitButton
3437
+ children: x ? F.loadingText : F.submitButton
3355
3438
  }
3356
3439
  ),
3357
- M && /* @__PURE__ */ n("div", { style: c.errorText, children: M }),
3358
- N && /* @__PURE__ */ n("div", { style: c.successText, children: N })
3440
+ $ && /* @__PURE__ */ n("div", { style: l.errorText, children: $ }),
3441
+ E && /* @__PURE__ */ n("div", { style: l.successText, children: E })
3359
3442
  ] }),
3360
- /* @__PURE__ */ l("div", { style: c.linkContainer, children: [
3361
- /* @__PURE__ */ n("a", { onClick: a, style: c.link, children: F.backToLoginLink }),
3362
- g && /* @__PURE__ */ l(j, { children: [
3443
+ /* @__PURE__ */ d("div", { style: l.linkContainer, children: [
3444
+ /* @__PURE__ */ n("a", { onClick: a, style: l.link, children: F.backToLoginLink }),
3445
+ m && /* @__PURE__ */ d(j, { children: [
3363
3446
  /* @__PURE__ */ n("span", { style: { margin: "0 0.5rem", color: "#6b7280" }, children: "•" }),
3364
- /* @__PURE__ */ n("a", { onClick: () => g("reset"), style: c.link, children: "I have a token" })
3447
+ /* @__PURE__ */ n("a", { onClick: () => m("reset"), style: l.link, children: "I have a token" })
3365
3448
  ] })
3366
3449
  ] })
3367
3450
  ] });
3368
3451
  }
3369
- const Et = () => /* @__PURE__ */ n(
3452
+ const Ut = () => /* @__PURE__ */ n(
3370
3453
  "div",
3371
3454
  {
3372
3455
  style: {
@@ -3378,7 +3461,7 @@ const Et = () => /* @__PURE__ */ n(
3378
3461
  },
3379
3462
  children: /* @__PURE__ */ n("div", { children: "Loading..." })
3380
3463
  }
3381
- ), Ft = ({ error: i, retry: e }) => /* @__PURE__ */ l(
3464
+ ), Bt = ({ error: i, retry: e }) => /* @__PURE__ */ d(
3382
3465
  "div",
3383
3466
  {
3384
3467
  style: {
@@ -3412,43 +3495,139 @@ const Et = () => /* @__PURE__ */ n(
3412
3495
  ]
3413
3496
  }
3414
3497
  );
3415
- function ir({
3498
+ function gr({
3416
3499
  children: i,
3417
3500
  loadingFallback: e,
3418
3501
  errorFallback: t,
3419
3502
  requireTenant: r = !0
3420
3503
  }) {
3421
- const { isAppLoading: s, appError: o, retryApp: a } = he(), g = ye(), w = Ce(), m = De(), k = $e(), b = (g == null ? void 0 : g.isTenantLoading) ?? !1, f = (g == null ? void 0 : g.tenantError) ?? null, A = (g == null ? void 0 : g.tenantSlug) ?? null, E = (g == null ? void 0 : g.retryTenant) ?? (() => {
3422
- }), $ = (w == null ? void 0 : w.isAuthReady) ?? !0, L = (m == null ? void 0 : m.isReady) ?? !0, P = (k == null ? void 0 : k.isReady) ?? !0, u = r && g && A, p = s || u && b || w && !$ || m && !L || k && !P, O = o || (u ? f : null), v = () => {
3423
- o && a(), f && g && E();
3504
+ const { isAppLoading: s, appError: o, retryApp: a } = ge(), m = we(), y = Me(), b = Be(), g = qe(), S = (m == null ? void 0 : m.isTenantLoading) ?? !1, f = (m == null ? void 0 : m.tenantError) ?? null, T = (m == null ? void 0 : m.tenantSlug) ?? null, I = (m == null ? void 0 : m.retryTenant) ?? (() => {
3505
+ }), C = (y == null ? void 0 : y.isAuthReady) ?? !0, R = (b == null ? void 0 : b.isReady) ?? !0, x = (g == null ? void 0 : g.isReady) ?? !0, h = r && m && T, N = s || h && S || y && !C || b && !R || g && !x, D = o || (h ? f : null), P = () => {
3506
+ o && a(), f && m && I();
3424
3507
  };
3425
- if (p)
3426
- return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(Et, {}) });
3427
- if (O) {
3428
- const C = typeof t == "function" ? t(O, v) : t || /* @__PURE__ */ n(Ft, { error: O, retry: v });
3429
- return /* @__PURE__ */ n(j, { children: C });
3508
+ if (N)
3509
+ return /* @__PURE__ */ n(j, { children: e || /* @__PURE__ */ n(Ut, {}) });
3510
+ if (D) {
3511
+ const O = typeof t == "function" ? t(D, P) : t || /* @__PURE__ */ n(Bt, { error: D, retry: P });
3512
+ return /* @__PURE__ */ n(j, { children: O });
3430
3513
  }
3431
3514
  return /* @__PURE__ */ n(j, { children: i });
3432
3515
  }
3433
- function or(i = !0) {
3434
- const { isAppLoading: e, appError: t, retryApp: r, appInfo: s } = he(), o = ye(), a = Ce(), g = De(), w = $e(), m = (o == null ? void 0 : o.isTenantLoading) ?? !1, k = (o == null ? void 0 : o.tenantError) ?? null, b = (o == null ? void 0 : o.tenant) ?? null, f = (o == null ? void 0 : o.tenantSlug) ?? null, A = (o == null ? void 0 : o.retryTenant) ?? (() => {
3435
- }), E = (a == null ? void 0 : a.isAuthReady) ?? !0, $ = (g == null ? void 0 : g.isReady) ?? !0, L = (w == null ? void 0 : w.isReady) ?? !0, P = i && o && f, N = e || P && m || a && !E || g && !$ || w && !L, p = t || (P ? k : null);
3516
+ function pr(i = !0) {
3517
+ const { isAppLoading: e, appError: t, retryApp: r, appInfo: s } = ge(), o = we(), a = Me(), m = Be(), y = qe(), b = (o == null ? void 0 : o.isTenantLoading) ?? !1, g = (o == null ? void 0 : o.tenantError) ?? null, S = (o == null ? void 0 : o.tenant) ?? null, f = (o == null ? void 0 : o.tenantSlug) ?? null, T = (o == null ? void 0 : o.retryTenant) ?? (() => {
3518
+ }), I = (a == null ? void 0 : a.isAuthReady) ?? !0, C = (m == null ? void 0 : m.isReady) ?? !0, R = (y == null ? void 0 : y.isReady) ?? !0, x = i && o && f, E = e || x && b || a && !I || m && !C || y && !R, N = t || (x ? g : null);
3436
3519
  return {
3437
- isLoading: N,
3438
- error: p,
3439
- isReady: !N && !p && s !== null && (!P || b !== null),
3520
+ isLoading: E,
3521
+ error: N,
3522
+ isReady: !E && !N && s !== null && (!x || S !== null),
3440
3523
  retry: () => {
3441
- t && r(), k && o && A();
3524
+ t && r(), g && o && T();
3442
3525
  },
3443
3526
  // Individual states
3444
3527
  app: { isLoading: e, error: t, data: s },
3445
- tenant: o ? { isLoading: m, error: k, data: b } : null,
3446
- auth: a ? { isReady: E } : null,
3447
- featureFlags: g ? { isReady: $ } : null,
3448
- subscription: w ? { isReady: L } : null
3528
+ tenant: o ? { isLoading: b, error: g, data: S } : null,
3529
+ auth: a ? { isReady: I } : null,
3530
+ featureFlags: m ? { isReady: C } : null,
3531
+ subscription: y ? { isReady: R } : null
3532
+ };
3533
+ }
3534
+ function fr({
3535
+ tenants: i,
3536
+ currentTenantId: e,
3537
+ onSelect: t,
3538
+ className: r = "",
3539
+ dropdownClassName: s = "",
3540
+ itemClassName: o = "",
3541
+ renderItem: a,
3542
+ placeholder: m = "Select tenant",
3543
+ disabled: y = !1,
3544
+ showCurrentTenant: b = !0
3545
+ }) {
3546
+ var $;
3547
+ const g = Me(), [S, f] = k(!1), T = Ne(null), I = i ?? (g == null ? void 0 : g.userTenants) ?? [], C = e ?? (($ = g == null ? void 0 : g.currentUser) == null ? void 0 : $.tenantId) ?? null, R = async (A) => {
3548
+ f(!1), t ? t(A) : g != null && g.switchToTenant && await g.switchToTenant(A);
3449
3549
  };
3550
+ re(() => {
3551
+ const A = (E) => {
3552
+ T.current && !T.current.contains(E.target) && f(!1);
3553
+ };
3554
+ return document.addEventListener("mousedown", A), () => document.removeEventListener("mousedown", A);
3555
+ }, []);
3556
+ const x = I.find((A) => A.id === C);
3557
+ if (I.length === 0)
3558
+ return null;
3559
+ if (I.length === 1 && b)
3560
+ return /* @__PURE__ */ n("div", { className: r, children: /* @__PURE__ */ n("span", { children: I[0].name }) });
3561
+ const h = (A, E) => /* @__PURE__ */ d("span", { style: { fontWeight: E ? "bold" : "normal" }, children: [
3562
+ A.name,
3563
+ A.role && /* @__PURE__ */ d("span", { style: { opacity: 0.7, marginLeft: 8 }, children: [
3564
+ "(",
3565
+ A.role,
3566
+ ")"
3567
+ ] })
3568
+ ] });
3569
+ return /* @__PURE__ */ d("div", { ref: T, className: r, style: { position: "relative" }, children: [
3570
+ /* @__PURE__ */ d(
3571
+ "button",
3572
+ {
3573
+ type: "button",
3574
+ onClick: () => !y && f(!S),
3575
+ disabled: y,
3576
+ style: {
3577
+ cursor: y ? "not-allowed" : "pointer",
3578
+ opacity: y ? 0.6 : 1
3579
+ },
3580
+ children: [
3581
+ x ? x.name : m,
3582
+ /* @__PURE__ */ n("span", { style: { marginLeft: 8 }, children: S ? "▲" : "▼" })
3583
+ ]
3584
+ }
3585
+ ),
3586
+ S && /* @__PURE__ */ n(
3587
+ "div",
3588
+ {
3589
+ className: s,
3590
+ style: {
3591
+ position: "absolute",
3592
+ top: "100%",
3593
+ left: 0,
3594
+ right: 0,
3595
+ zIndex: 1e3,
3596
+ backgroundColor: "white",
3597
+ border: "1px solid #ccc",
3598
+ borderRadius: 4,
3599
+ boxShadow: "0 2px 8px rgba(0,0,0,0.15)",
3600
+ maxHeight: 300,
3601
+ overflowY: "auto"
3602
+ },
3603
+ children: I.map((A) => {
3604
+ const E = A.id === C;
3605
+ return /* @__PURE__ */ n(
3606
+ "div",
3607
+ {
3608
+ className: o,
3609
+ onClick: () => R(A.id),
3610
+ style: {
3611
+ padding: "8px 12px",
3612
+ cursor: "pointer",
3613
+ backgroundColor: E ? "#f0f0f0" : "transparent"
3614
+ },
3615
+ onMouseEnter: (N) => {
3616
+ E || (N.target.style.backgroundColor = "#f5f5f5");
3617
+ },
3618
+ onMouseLeave: (N) => {
3619
+ E || (N.target.style.backgroundColor = "transparent");
3620
+ },
3621
+ children: a ? a(A, E) : h(A, E)
3622
+ },
3623
+ A.id
3624
+ );
3625
+ })
3626
+ }
3627
+ )
3628
+ ] });
3450
3629
  }
3451
- class ar {
3630
+ class mr {
3452
3631
  constructor(e, t) {
3453
3632
  this.httpService = e, this.sessionManager = t;
3454
3633
  }
@@ -3516,7 +3695,7 @@ class ar {
3516
3695
  };
3517
3696
  }
3518
3697
  }
3519
- class lr {
3698
+ class yr {
3520
3699
  constructor(e, t) {
3521
3700
  this.httpService = e, this.sessionManager = t;
3522
3701
  }
@@ -3567,7 +3746,7 @@ class lr {
3567
3746
  });
3568
3747
  }
3569
3748
  }
3570
- class cr {
3749
+ class wr {
3571
3750
  constructor(e) {
3572
3751
  this.httpService = e;
3573
3752
  }
@@ -3576,7 +3755,7 @@ class cr {
3576
3755
  return await this.httpService.get("/health");
3577
3756
  }
3578
3757
  }
3579
- class dr {
3758
+ class br {
3580
3759
  // Date string to Date object
3581
3760
  static toDate(e) {
3582
3761
  return new Date(e);
@@ -3699,47 +3878,48 @@ class dr {
3699
3878
  }
3700
3879
  }
3701
3880
  export {
3702
- dr as ApiMappers,
3703
- Me as AppApiService,
3704
- ir as AppLoader,
3705
- qt as AppProvider,
3706
- Ke as AuthApiService,
3707
- Vt as AuthProvider,
3708
- Zt as FeatureFlag,
3709
- st as FeatureFlagApiService,
3710
- _t as FeatureFlagProvider,
3711
- cr as HealthApiService,
3881
+ br as ApiMappers,
3882
+ Fe as AppApiService,
3883
+ gr as AppLoader,
3884
+ Jt as AppProvider,
3885
+ tt as AuthApiService,
3886
+ Zt as AuthProvider,
3887
+ ar as FeatureFlag,
3888
+ ut as FeatureFlagApiService,
3889
+ er as FeatureFlagProvider,
3890
+ wr as HealthApiService,
3712
3891
  ne as HttpService,
3713
- Qt as LandingRoute,
3714
- er as LoginForm,
3715
- rr as MagicLinkForm,
3716
- nr as MagicLinkVerify,
3717
- sr as PasswordRecoveryForm,
3718
- ar as PermissionApiService,
3719
- Kt as Protected,
3720
- Jt as ProtectedRoute,
3721
- Ie as RoleApiService,
3722
- Se as SessionManager,
3723
- tr as SignupForm,
3724
- ot as SubscriptionApiService,
3725
- Xt as SubscriptionGuard,
3726
- lr as SubscriptionPlanApiService,
3727
- Gt as SubscriptionProvider,
3728
- de as TenantApiService,
3729
- Ot as TenantProvider,
3730
- Yt as TenantRoute,
3731
- Je as UserApiService,
3892
+ ir as LandingRoute,
3893
+ lr as LoginForm,
3894
+ dr as MagicLinkForm,
3895
+ ur as MagicLinkVerify,
3896
+ hr as PasswordRecoveryForm,
3897
+ mr as PermissionApiService,
3898
+ rr as Protected,
3899
+ nr as ProtectedRoute,
3900
+ Ce as RoleApiService,
3901
+ ke as SessionManager,
3902
+ cr as SignupForm,
3903
+ gt as SubscriptionApiService,
3904
+ or as SubscriptionGuard,
3905
+ yr as SubscriptionPlanApiService,
3906
+ tr as SubscriptionProvider,
3907
+ ue as TenantApiService,
3908
+ Yt as TenantProvider,
3909
+ sr as TenantRoute,
3910
+ fr as TenantSelector,
3911
+ rt as UserApiService,
3732
3912
  oe as UserType,
3733
- zt as useApi,
3734
- he as useApp,
3735
- or as useAppLoaderState,
3913
+ Kt as useApi,
3914
+ ge as useApp,
3915
+ pr as useAppLoaderState,
3736
3916
  ae as useAuth,
3737
- it as useFeatureFlags,
3738
- jt as useSettings,
3739
- at as useSubscription,
3740
- me as useTenant,
3741
- le as useTenantInfo,
3742
- ye as useTenantOptional,
3743
- Wt as useTenantSettings
3917
+ ht as useFeatureFlags,
3918
+ Xt as useSettings,
3919
+ pt as useSubscription,
3920
+ ye as useTenant,
3921
+ ce as useTenantInfo,
3922
+ we as useTenantOptional,
3923
+ Qt as useTenantSettings
3744
3924
  };
3745
3925
  //# sourceMappingURL=index.es.js.map