@yieldfabric/wallet 0.2.6 → 0.2.7

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.cjs CHANGED
@@ -7,7 +7,7 @@
7
7
  */
8
8
  'use strict';
9
9
 
10
- var React55 = require('react');
10
+ var React39 = require('react');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
  var avererWebsdk = require('@averer/averer-websdk');
13
13
  var sha3 = require('js-sha3');
@@ -20,7 +20,7 @@ var zod = require('zod');
20
20
 
21
21
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
22
22
 
23
- var React55__default = /*#__PURE__*/_interopDefault(React55);
23
+ var React39__default = /*#__PURE__*/_interopDefault(React39);
24
24
  var sha3__default = /*#__PURE__*/_interopDefault(sha3);
25
25
  var theme__default = /*#__PURE__*/_interopDefault(theme);
26
26
 
@@ -4966,7 +4966,7 @@ function WalletConfigProvider({ config, children }) {
4966
4966
  return /* @__PURE__ */ jsxRuntime.jsx(WalletConfigContext.Provider, { value: config, children });
4967
4967
  }
4968
4968
  function useWalletConfig() {
4969
- return React55.useContext(WalletConfigContext);
4969
+ return React39.useContext(WalletConfigContext);
4970
4970
  }
4971
4971
  function useTokenStore() {
4972
4972
  const { tokenStore } = useWalletConfig();
@@ -4993,19 +4993,19 @@ var WalletConfigContext;
4993
4993
  var init_WalletConfigContext = __esm({
4994
4994
  "src/providers/WalletConfigContext.tsx"() {
4995
4995
  init_jwtClaims();
4996
- WalletConfigContext = React55.createContext({});
4996
+ WalletConfigContext = React39.createContext({});
4997
4997
  }
4998
4998
  });
4999
4999
  function ProviderConfigProvider({
5000
5000
  children,
5001
5001
  platform
5002
5002
  }) {
5003
- const [state, setState] = React55.useState({
5003
+ const [state, setState] = React39.useState({
5004
5004
  config: null,
5005
5005
  isLoading: true,
5006
5006
  error: null
5007
5007
  });
5008
- React55.useEffect(() => {
5008
+ React39.useEffect(() => {
5009
5009
  let cancelled = false;
5010
5010
  (async () => {
5011
5011
  try {
@@ -5046,12 +5046,12 @@ function ProviderConfigProvider({
5046
5046
  return /* @__PURE__ */ jsxRuntime.jsx(ProviderConfigContext.Provider, { value: state, children });
5047
5047
  }
5048
5048
  function useProviderConfig() {
5049
- return React55.useContext(ProviderConfigContext);
5049
+ return React39.useContext(ProviderConfigContext);
5050
5050
  }
5051
5051
  var ProviderConfigContext, AUTH_BASE5;
5052
5052
  var init_ProviderConfigContext = __esm({
5053
5053
  "src/providers/ProviderConfigContext.tsx"() {
5054
- ProviderConfigContext = React55.createContext({
5054
+ ProviderConfigContext = React39.createContext({
5055
5055
  config: null,
5056
5056
  isLoading: true,
5057
5057
  error: null
@@ -5261,7 +5261,7 @@ __export(SignupFlow_exports, {
5261
5261
  default: () => SignupFlow_default
5262
5262
  });
5263
5263
  function useRegisterConflictPatch() {
5264
- React55.useEffect(() => {
5264
+ React39.useEffect(() => {
5265
5265
  const original = window.fetch;
5266
5266
  window.fetch = async function patchedFetch(input, init) {
5267
5267
  const response = await original.call(window, input, init);
@@ -5284,7 +5284,7 @@ function useRegisterConflictPatch() {
5284
5284
  }, []);
5285
5285
  }
5286
5286
  function useAvererCssVars() {
5287
- React55.useEffect(() => {
5287
+ React39.useEffect(() => {
5288
5288
  const root = document.documentElement;
5289
5289
  const prior = [];
5290
5290
  for (const [name, value] of Object.entries(AVERER_CSS_VARS)) {
@@ -5416,12 +5416,12 @@ var init_SignupFlow = __esm({
5416
5416
  };
5417
5417
  AvererSigninConsumer = ({ appName, onComplete, onError, platform }) => {
5418
5418
  const wallet = avererWebsdk.useAvererWallet();
5419
- const walletRef = React55.useRef(wallet);
5420
- React55.useEffect(() => {
5419
+ const walletRef = React39.useRef(wallet);
5420
+ React39.useEffect(() => {
5421
5421
  walletRef.current = wallet;
5422
5422
  }, [wallet]);
5423
- const widgetWrapRef = React55.useRef(null);
5424
- React55.useEffect(() => {
5423
+ const widgetWrapRef = React39.useRef(null);
5424
+ React39.useEffect(() => {
5425
5425
  const root = widgetWrapRef.current;
5426
5426
  if (!root) return;
5427
5427
  const OVERRIDE_CSS = `
@@ -5916,8 +5916,8 @@ function decide(snapshot, ctx) {
5916
5916
  }
5917
5917
  function useOnboardingState(identityRequired = false, planApplicable = false, identityProviders = [], kycVerifiesEmail = false) {
5918
5918
  const identityProvidersKey = JSON.stringify(identityProviders);
5919
- const previousIdentityProvidersKey = React55.useRef(identityProvidersKey);
5920
- const [state, setState] = React55.useState(() => {
5919
+ const previousIdentityProvidersKey = React39.useRef(identityProvidersKey);
5920
+ const [state, setState] = React39.useState(() => {
5921
5921
  const cached = cachedSnapshotFor(identityProvidersKey, identityProviders);
5922
5922
  if (cached) {
5923
5923
  return {
@@ -5932,7 +5932,7 @@ function useOnboardingState(identityRequired = false, planApplicable = false, id
5932
5932
  }
5933
5933
  return { status: "checking", snapshot: null };
5934
5934
  });
5935
- React55.useEffect(() => {
5935
+ React39.useEffect(() => {
5936
5936
  if (state.status !== "checking") return;
5937
5937
  let cancelled = false;
5938
5938
  (async () => {
@@ -5967,14 +5967,14 @@ function useOnboardingState(identityRequired = false, planApplicable = false, id
5967
5967
  cancelled = true;
5968
5968
  };
5969
5969
  }, [state.status, identityRequired, identityProvidersKey, planApplicable]);
5970
- React55.useEffect(() => {
5970
+ React39.useEffect(() => {
5971
5971
  const notify = () => setState({ status: "checking", snapshot: null });
5972
5972
  subscribers.add(notify);
5973
5973
  return () => {
5974
5974
  subscribers.delete(notify);
5975
5975
  };
5976
5976
  }, []);
5977
- React55.useEffect(() => {
5977
+ React39.useEffect(() => {
5978
5978
  if (previousIdentityProvidersKey.current !== identityProvidersKey) {
5979
5979
  previousIdentityProvidersKey.current = identityProvidersKey;
5980
5980
  setState({ status: "checking", snapshot: null });
@@ -6018,14 +6018,14 @@ function clearDynamicSession() {
6018
6018
 
6019
6019
  // src/react/AuthContext.tsx
6020
6020
  init_WalletConfigContext();
6021
- var WalletAuthContext = React55.createContext(void 0);
6021
+ var WalletAuthContext = React39.createContext(void 0);
6022
6022
  function WalletAuthProvider({ children }) {
6023
6023
  const { onSessionBootstrapped, onBeforeLogout } = useWalletConfig();
6024
- const [user, setUser] = React55.useState(null);
6025
- const [isLoading, setIsLoading] = React55.useState(true);
6026
- const [error, setError] = React55.useState(null);
6027
- const [retryTick, setRetryTick] = React55.useState(0);
6028
- const retryWhenOnline = React55.useCallback(() => {
6024
+ const [user, setUser] = React39.useState(null);
6025
+ const [isLoading, setIsLoading] = React39.useState(true);
6026
+ const [error, setError] = React39.useState(null);
6027
+ const [retryTick, setRetryTick] = React39.useState(0);
6028
+ const retryWhenOnline = React39.useCallback(() => {
6029
6029
  if (typeof window === "undefined") return;
6030
6030
  const once = () => {
6031
6031
  window.removeEventListener("online", once);
@@ -6034,7 +6034,7 @@ function WalletAuthProvider({ children }) {
6034
6034
  window.addEventListener("online", once);
6035
6035
  }, []);
6036
6036
  const isAuthenticated = exports.authService.isAuthenticated();
6037
- React55.useEffect(() => {
6037
+ React39.useEffect(() => {
6038
6038
  const loadUserData = async () => {
6039
6039
  if (isAuthenticated) {
6040
6040
  try {
@@ -6064,12 +6064,12 @@ function WalletAuthProvider({ children }) {
6064
6064
  };
6065
6065
  loadUserData();
6066
6066
  }, [isAuthenticated, retryTick]);
6067
- React55.useEffect(() => {
6067
+ React39.useEffect(() => {
6068
6068
  if (user?.id) {
6069
6069
  invalidateWalletCount();
6070
6070
  }
6071
6071
  }, [user?.id]);
6072
- React55.useEffect(() => {
6072
+ React39.useEffect(() => {
6073
6073
  return () => {
6074
6074
  tokenRenewalService.stopRenewal();
6075
6075
  };
@@ -6166,7 +6166,7 @@ function WalletAuthProvider({ children }) {
6166
6166
  return /* @__PURE__ */ jsxRuntime.jsx(WalletAuthContext.Provider, { value, children });
6167
6167
  }
6168
6168
  function useAuth() {
6169
- const context = React55.useContext(WalletAuthContext);
6169
+ const context = React39.useContext(WalletAuthContext);
6170
6170
  if (context === void 0) {
6171
6171
  throw new Error("useAuth must be used within a <WalletAuthProvider>");
6172
6172
  }
@@ -6469,8 +6469,8 @@ function loadModule() {
6469
6469
  return inflight;
6470
6470
  }
6471
6471
  function useAvererModule() {
6472
- const [mod, setMod] = React55.useState(cachedModule);
6473
- React55.useEffect(() => {
6472
+ const [mod, setMod] = React39.useState(cachedModule);
6473
+ React39.useEffect(() => {
6474
6474
  if (mod) return;
6475
6475
  let cancelled = false;
6476
6476
  loadModule().then((resolved) => {
@@ -6489,7 +6489,7 @@ function AvererWalletBridgeInner({
6489
6489
  children
6490
6490
  }) {
6491
6491
  const wallet = mod.useAvererWallet();
6492
- React55.useEffect(() => {
6492
+ React39.useEffect(() => {
6493
6493
  walletRef.current = wallet ?? null;
6494
6494
  }, [wallet, walletRef]);
6495
6495
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
@@ -6504,8 +6504,8 @@ function LazyAvererSdkGate({
6504
6504
  const { AvererSdkProvider: AvererSdkProvider3 } = mod;
6505
6505
  return /* @__PURE__ */ jsxRuntime.jsx(AvererSdkProvider3, { configId, children: /* @__PURE__ */ jsxRuntime.jsx(AvererWalletBridgeInner, { mod, walletRef, children }) });
6506
6506
  }
6507
- var WalletSignerContext = React55.createContext(null);
6508
- var SilentSdkBoundary = class extends React55.Component {
6507
+ var WalletSignerContext = React39.createContext(null);
6508
+ var SilentSdkBoundary = class extends React39.Component {
6509
6509
  constructor() {
6510
6510
  super(...arguments);
6511
6511
  this.state = { hasError: false };
@@ -6525,10 +6525,10 @@ var SilentSdkBoundary = class extends React55.Component {
6525
6525
  }
6526
6526
  };
6527
6527
  function usePathname() {
6528
- const [path, setPath] = React55.useState(
6528
+ const [path, setPath] = React39.useState(
6529
6529
  () => typeof window !== "undefined" ? window.location.pathname : "/"
6530
6530
  );
6531
- React55.useEffect(() => {
6531
+ React39.useEffect(() => {
6532
6532
  if (typeof window === "undefined") return;
6533
6533
  const onChange = () => setPath(window.location.pathname);
6534
6534
  window.addEventListener("popstate", onChange);
@@ -6574,10 +6574,10 @@ function WalletSignerProvider({ children }) {
6574
6574
  const { isAuthenticated } = useAuth();
6575
6575
  const { disableGlobalSigner } = useWalletConfig();
6576
6576
  const configId = config?.auth?.settings?.averer?.config_id ?? "";
6577
- const walletRef = React55.useRef(null);
6577
+ const walletRef = React39.useRef(null);
6578
6578
  const pathname = usePathname();
6579
6579
  const skipSdkRoute = pathname === "/login" || pathname === "/mcp/login" || pathname.startsWith("/onboarding");
6580
- const signMessage = React55.useCallback(
6580
+ const signMessage = React39.useCallback(
6581
6581
  async (messageHex, providerHint, ctxOrAddress) => {
6582
6582
  const ctx = typeof ctxOrAddress === "string" ? { address: ctxOrAddress } : ctxOrAddress ?? {};
6583
6583
  const hint = (providerHint || "").toLowerCase();
@@ -6625,7 +6625,7 @@ function WalletSignerProvider({ children }) {
6625
6625
  },
6626
6626
  []
6627
6627
  );
6628
- const getEoaTransport = React55.useCallback(
6628
+ const getEoaTransport = React39.useCallback(
6629
6629
  async (providerHint) => {
6630
6630
  if (providerHint === "passkey") {
6631
6631
  throw new Error("EOA operations are not supported for passkey keys.");
@@ -6653,7 +6653,7 @@ function WalletSignerProvider({ children }) {
6653
6653
  },
6654
6654
  []
6655
6655
  );
6656
- const sendTransaction = React55.useCallback(
6656
+ const sendTransaction = React39.useCallback(
6657
6657
  async (tx, providerHint) => {
6658
6658
  const transport = await getEoaTransport(providerHint);
6659
6659
  const txHash = await transport.request("eth_sendTransaction", [tx]);
@@ -6664,14 +6664,14 @@ function WalletSignerProvider({ children }) {
6664
6664
  },
6665
6665
  [getEoaTransport]
6666
6666
  );
6667
- const request = React55.useCallback(
6667
+ const request = React39.useCallback(
6668
6668
  async (method, params, providerHint) => {
6669
6669
  const transport = await getEoaTransport(providerHint);
6670
6670
  return transport.request(method, params);
6671
6671
  },
6672
6672
  [getEoaTransport]
6673
6673
  );
6674
- const value = React55.useMemo(
6674
+ const value = React39.useMemo(
6675
6675
  () => ({ signMessage, sendTransaction, request }),
6676
6676
  [signMessage, sendTransaction, request]
6677
6677
  );
@@ -6681,7 +6681,7 @@ function WalletSignerProvider({ children }) {
6681
6681
  return /* @__PURE__ */ jsxRuntime.jsx(WalletSignerContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SilentSdkBoundary, { fallback: children, children: /* @__PURE__ */ jsxRuntime.jsx(LazyAvererSdkGate, { configId, walletRef, children }) }) });
6682
6682
  }
6683
6683
  function useWalletSigner() {
6684
- const ctx = React55.useContext(WalletSignerContext);
6684
+ const ctx = React39.useContext(WalletSignerContext);
6685
6685
  if (!ctx) {
6686
6686
  throw new Error("useWalletSigner must be used inside <WalletSignerProvider>");
6687
6687
  }
@@ -7824,13 +7824,13 @@ function getWebSocketChannelManager(url, getAccessToken) {
7824
7824
  init_config();
7825
7825
  init_jwtClaims();
7826
7826
  init_WalletConfigContext();
7827
- var SignatureQueueContext = React55.createContext(null);
7827
+ var SignatureQueueContext = React39.createContext(null);
7828
7828
  function SignatureQueueProvider({ children }) {
7829
7829
  const value = useSignatureQueueInternal();
7830
7830
  return /* @__PURE__ */ jsxRuntime.jsx(SignatureQueueContext.Provider, { value, children });
7831
7831
  }
7832
7832
  function useSignatureQueue() {
7833
- const ctx = React55.useContext(SignatureQueueContext);
7833
+ const ctx = React39.useContext(SignatureQueueContext);
7834
7834
  const fallback = useSignatureQueueInternal(ctx !== null);
7835
7835
  return ctx ?? fallback;
7836
7836
  }
@@ -7838,12 +7838,12 @@ function useSignatureQueueInternal(inert = false) {
7838
7838
  const { user, isAuthenticated } = useAuth();
7839
7839
  const { webSocketUrl } = useWalletConfig();
7840
7840
  const tokenStore = useTokenStore();
7841
- const [pending, setPending] = React55.useState(null);
7842
- const [pendingList, setPendingList] = React55.useState([]);
7843
- const [currentMessage, setCurrentMessage] = React55.useState(null);
7844
- const [drawerOpen, setDrawerOpen] = React55.useState(false);
7845
- const surfacedRef = React55.useRef(/* @__PURE__ */ new Set());
7846
- const fetchAndSetPending = React55.useCallback(async () => {
7841
+ const [pending, setPending] = React39.useState(null);
7842
+ const [pendingList, setPendingList] = React39.useState([]);
7843
+ const [currentMessage, setCurrentMessage] = React39.useState(null);
7844
+ const [drawerOpen, setDrawerOpen] = React39.useState(false);
7845
+ const surfacedRef = React39.useRef(/* @__PURE__ */ new Set());
7846
+ const fetchAndSetPending = React39.useCallback(async () => {
7847
7847
  if (inert || !user?.id) return;
7848
7848
  try {
7849
7849
  const awaiting = await messagesService.getMessagesAwaitingSignature(user.id);
@@ -7865,7 +7865,7 @@ function useSignatureQueueInternal(inert = false) {
7865
7865
  console.warn("[useSignatureQueue] refresh failed");
7866
7866
  }
7867
7867
  }, [inert, user?.id]);
7868
- React55.useEffect(() => {
7868
+ React39.useEffect(() => {
7869
7869
  if (inert) return;
7870
7870
  if (!isAuthenticated || !user?.id) return;
7871
7871
  if (!getActiveChainId()) return;
@@ -7921,7 +7921,7 @@ function useSignatureQueueInternal(inert = false) {
7921
7921
  }
7922
7922
  };
7923
7923
  }, [inert, isAuthenticated, user?.id, webSocketUrl, fetchAndSetPending, tokenStore]);
7924
- const openSigner = React55.useCallback(
7924
+ const openSigner = React39.useCallback(
7925
7925
  (message) => {
7926
7926
  const target = message ?? pending;
7927
7927
  if (!target) return;
@@ -7930,14 +7930,14 @@ function useSignatureQueueInternal(inert = false) {
7930
7930
  },
7931
7931
  [pending]
7932
7932
  );
7933
- const closeSigner = React55.useCallback(() => {
7933
+ const closeSigner = React39.useCallback(() => {
7934
7934
  setDrawerOpen(false);
7935
7935
  setCurrentMessage(null);
7936
7936
  }, []);
7937
- const dismissPending = React55.useCallback(() => {
7937
+ const dismissPending = React39.useCallback(() => {
7938
7938
  setPending(null);
7939
7939
  }, []);
7940
- React55.useEffect(() => {
7940
+ React39.useEffect(() => {
7941
7941
  if (inert) return;
7942
7942
  if (!isAuthenticated) {
7943
7943
  setDrawerOpen(false);
@@ -8681,15 +8681,15 @@ init_delegationScopes();
8681
8681
  init_tokenManager();
8682
8682
  init_jwtClaims();
8683
8683
  init_jwtPayload();
8684
- var AppAuthContext = React55.createContext(void 0);
8684
+ var AppAuthContext = React39.createContext(void 0);
8685
8685
  function AppAuthProvider({ children }) {
8686
8686
  const walletAuth = useAuth();
8687
8687
  const { isAuthenticated, user, isLoading: walletLoading } = walletAuth;
8688
- const [groups, setGroups] = React55.useState([]);
8689
- const [groupsLoaded, setGroupsLoaded] = React55.useState(false);
8690
- const [delegationToken, setDelegationToken] = React55.useState(null);
8691
- const [delegationSession, setDelegationSession] = React55.useState(null);
8692
- React55.useEffect(() => {
8688
+ const [groups, setGroups] = React39.useState([]);
8689
+ const [groupsLoaded, setGroupsLoaded] = React39.useState(false);
8690
+ const [delegationToken, setDelegationToken] = React39.useState(null);
8691
+ const [delegationSession, setDelegationSession] = React39.useState(null);
8692
+ React39.useEffect(() => {
8693
8693
  if (!isAuthenticated) {
8694
8694
  setGroups([]);
8695
8695
  setGroupsLoaded(false);
@@ -8720,7 +8720,7 @@ function AppAuthProvider({ children }) {
8720
8720
  cancelled = true;
8721
8721
  };
8722
8722
  }, [isAuthenticated, walletLoading, user]);
8723
- React55.useEffect(() => {
8723
+ React39.useEffect(() => {
8724
8724
  if (!isAuthenticated) {
8725
8725
  setDelegationToken(null);
8726
8726
  setDelegationSession(null);
@@ -8733,7 +8733,7 @@ function AppAuthProvider({ children }) {
8733
8733
  sync();
8734
8734
  return exports.tokenManager.subscribe(sync);
8735
8735
  }, [isAuthenticated]);
8736
- const refreshGroups = React55.useCallback(async () => {
8736
+ const refreshGroups = React39.useCallback(async () => {
8737
8737
  if (!isAuthenticated) return;
8738
8738
  try {
8739
8739
  const userGroups = await groupsService.getUserGroups();
@@ -8743,7 +8743,7 @@ function AppAuthProvider({ children }) {
8743
8743
  console.warn("AppAuthContext.refreshGroups failed:", err);
8744
8744
  }
8745
8745
  }, [isAuthenticated]);
8746
- const createDelegationToken = React55.useCallback(async (group) => {
8746
+ const createDelegationToken = React39.useCallback(async (group) => {
8747
8747
  const response = await exports.delegationService.createDelegationToken({
8748
8748
  group_id: group.id,
8749
8749
  delegation_scope: [...exports.DEFAULT_APP_DELEGATION_SCOPE],
@@ -8760,7 +8760,7 @@ function AppAuthProvider({ children }) {
8760
8760
  expiresAt: expirationTime
8761
8761
  });
8762
8762
  }, []);
8763
- const assumeOwnedGroup = React55.useCallback(async (group, signerKeyId, delegationScope = exports.DEFAULT_OWNED_GROUP_DELEGATION_SCOPE) => {
8763
+ const assumeOwnedGroup = React39.useCallback(async (group, signerKeyId, delegationScope = exports.DEFAULT_OWNED_GROUP_DELEGATION_SCOPE) => {
8764
8764
  const parent = exports.tokenManager.getDelegationSessionMetadata();
8765
8765
  const parentToken = exports.tokenManager.getDelegationToken();
8766
8766
  if (parent?.kind !== "direct" || !parentToken) {
@@ -8811,11 +8811,11 @@ function AppAuthProvider({ children }) {
8811
8811
  });
8812
8812
  return response;
8813
8813
  }, []);
8814
- const returnToParent = React55.useCallback(() => exports.tokenManager.restoreParentDelegationSession(), []);
8815
- const clearDelegationToken = React55.useCallback(() => {
8814
+ const returnToParent = React39.useCallback(() => exports.tokenManager.restoreParentDelegationSession(), []);
8815
+ const clearDelegationToken = React39.useCallback(() => {
8816
8816
  exports.tokenManager.clearDelegationToken();
8817
8817
  }, []);
8818
- const value = React55.useMemo(
8818
+ const value = React39.useMemo(
8819
8819
  () => ({
8820
8820
  ...walletAuth,
8821
8821
  groups,
@@ -8844,42 +8844,42 @@ function AppAuthProvider({ children }) {
8844
8844
  return /* @__PURE__ */ jsxRuntime.jsx(AppAuthContext.Provider, { value, children });
8845
8845
  }
8846
8846
  function useAuthContext() {
8847
- const ctx = React55.useContext(AppAuthContext);
8847
+ const ctx = React39.useContext(AppAuthContext);
8848
8848
  if (!ctx) {
8849
8849
  throw new Error("useAuthContext must be used within an <AppAuthProvider>");
8850
8850
  }
8851
8851
  return ctx;
8852
8852
  }
8853
- var WalletCenterContext = React55.createContext(null);
8853
+ var WalletCenterContext = React39.createContext(null);
8854
8854
  function WalletCenterProvider({ children }) {
8855
- const [isOpen, setIsOpen] = React55.useState(false);
8856
- const [requestedView, setRequestedView] = React55.useState("menu");
8857
- const [host, setHostElement] = React55.useState(null);
8858
- const [hostOptions, setHostOptions] = React55.useState({});
8859
- const [hostTitle, setHostTitle] = React55.useState(null);
8860
- const setHost = React55.useCallback((next) => {
8855
+ const [isOpen, setIsOpen] = React39.useState(false);
8856
+ const [requestedView, setRequestedView] = React39.useState("menu");
8857
+ const [host, setHostElement] = React39.useState(null);
8858
+ const [hostOptions, setHostOptions] = React39.useState({});
8859
+ const [hostTitle, setHostTitle] = React39.useState(null);
8860
+ const setHost = React39.useCallback((next) => {
8861
8861
  setHostElement((current) => {
8862
8862
  if (current === next) return current;
8863
8863
  if (!next) setHostTitle(null);
8864
8864
  return next;
8865
8865
  });
8866
8866
  }, []);
8867
- const openWalletCenter = React55.useCallback((view = "menu") => {
8867
+ const openWalletCenter = React39.useCallback((view = "menu") => {
8868
8868
  setRequestedView(view);
8869
8869
  setIsOpen(true);
8870
8870
  }, []);
8871
- const closeWalletCenter = React55.useCallback(() => {
8871
+ const closeWalletCenter = React39.useCallback(() => {
8872
8872
  setIsOpen(false);
8873
8873
  setRequestedView("menu");
8874
8874
  }, []);
8875
- const value = React55.useMemo(
8875
+ const value = React39.useMemo(
8876
8876
  () => ({ isOpen, requestedView, openWalletCenter, closeWalletCenter, host, setHost, hostOptions, setHostOptions, hostTitle, setHostTitle }),
8877
8877
  [isOpen, requestedView, openWalletCenter, closeWalletCenter, host, setHost, hostOptions, hostTitle]
8878
8878
  );
8879
8879
  return /* @__PURE__ */ jsxRuntime.jsx(WalletCenterContext.Provider, { value, children });
8880
8880
  }
8881
8881
  function useWalletCenter() {
8882
- const value = React55.useContext(WalletCenterContext);
8882
+ const value = React39.useContext(WalletCenterContext);
8883
8883
  if (!value) {
8884
8884
  throw new Error("useWalletCenter must be used within <WalletProvider>.");
8885
8885
  }
@@ -8896,7 +8896,7 @@ init_WalletConfigContext();
8896
8896
  init_WalletConfigContext();
8897
8897
  function RedirectTo({ href, replace = true }) {
8898
8898
  const navigate = useWalletNavigate();
8899
- React55.useEffect(() => {
8899
+ React39.useEffect(() => {
8900
8900
  navigate(href, { replace });
8901
8901
  }, []);
8902
8902
  return null;
@@ -9172,14 +9172,14 @@ var _GlobalNotificationService = class _GlobalNotificationService {
9172
9172
  _GlobalNotificationService.instance = null;
9173
9173
  var GlobalNotificationService = _GlobalNotificationService;
9174
9174
  var globalNotificationService_default = GlobalNotificationService;
9175
- var EntitySSEContext = React55.createContext(void 0);
9175
+ var EntitySSEContext = React39.createContext(void 0);
9176
9176
  var EntitySSEProvider = ({ children }) => {
9177
9177
  const { user } = useAuthContext();
9178
- const [connected, setConnected] = React55.useState(false);
9179
- const [currentEntityId, setCurrentEntityId] = React55.useState(user?.id || null);
9180
- const unsubRef = React55.useRef(null);
9181
- const handlersRef = React55.useRef(/* @__PURE__ */ new Map());
9182
- const [activityLog, setActivityLog] = React55.useState(() => {
9178
+ const [connected, setConnected] = React39.useState(false);
9179
+ const [currentEntityId, setCurrentEntityId] = React39.useState(user?.id || null);
9180
+ const unsubRef = React39.useRef(null);
9181
+ const handlersRef = React39.useRef(/* @__PURE__ */ new Map());
9182
+ const [activityLog, setActivityLog] = React39.useState(() => {
9183
9183
  try {
9184
9184
  const stored = localStorage.getItem("sse_activity_log");
9185
9185
  return stored ? JSON.parse(stored) : [];
@@ -9187,7 +9187,7 @@ var EntitySSEProvider = ({ children }) => {
9187
9187
  return [];
9188
9188
  }
9189
9189
  });
9190
- React55.useEffect(() => {
9190
+ React39.useEffect(() => {
9191
9191
  if (user?.id) {
9192
9192
  if (!currentEntityId) {
9193
9193
  setCurrentEntityId(user.id);
@@ -9196,7 +9196,7 @@ var EntitySSEProvider = ({ children }) => {
9196
9196
  setCurrentEntityId(null);
9197
9197
  }
9198
9198
  }, [user?.id, currentEntityId]);
9199
- React55.useEffect(() => {
9199
+ React39.useEffect(() => {
9200
9200
  const handleEntitySwitch = (event) => {
9201
9201
  const { actingAs } = event.detail;
9202
9202
  if (!actingAs) return;
@@ -9221,7 +9221,7 @@ var EntitySSEProvider = ({ children }) => {
9221
9221
  window.removeEventListener("entitySwitched", handleEntitySwitch);
9222
9222
  };
9223
9223
  }, [currentEntityId]);
9224
- React55.useEffect(() => {
9224
+ React39.useEffect(() => {
9225
9225
  if (!currentEntityId) return;
9226
9226
  unsubRef.current?.();
9227
9227
  const unsub = subscribeEntityEvents(
@@ -9321,7 +9321,7 @@ var EntitySSEProvider = ({ children }) => {
9321
9321
  setConnected(false);
9322
9322
  };
9323
9323
  }, [currentEntityId]);
9324
- const subscribeToEvent = React55.useCallback(
9324
+ const subscribeToEvent = React39.useCallback(
9325
9325
  (eventType, handler) => {
9326
9326
  if (!handlersRef.current.has(eventType)) {
9327
9327
  handlersRef.current.set(eventType, /* @__PURE__ */ new Set());
@@ -9347,7 +9347,7 @@ var EntitySSEProvider = ({ children }) => {
9347
9347
  return /* @__PURE__ */ jsxRuntime.jsx(EntitySSEContext.Provider, { value: contextValue, children });
9348
9348
  };
9349
9349
  var useEntitySSE = () => {
9350
- const context = React55.useContext(EntitySSEContext);
9350
+ const context = React39.useContext(EntitySSEContext);
9351
9351
  if (context === void 0) {
9352
9352
  throw new Error("useEntitySSE must be used within an EntitySSEProvider");
9353
9353
  }
@@ -9576,19 +9576,19 @@ var GroupOwnershipPanel = ({
9576
9576
  onChanged,
9577
9577
  className = ""
9578
9578
  }) => {
9579
- const [relationships, setRelationships] = React55.useState([]);
9580
- const [parentGroupId, setParentGroupId] = React55.useState("");
9581
- const [loading, setLoading] = React55.useState(false);
9582
- const [submittingId, setSubmittingId] = React55.useState(null);
9583
- const [error, setError] = React55.useState(null);
9579
+ const [relationships, setRelationships] = React39.useState([]);
9580
+ const [parentGroupId, setParentGroupId] = React39.useState("");
9581
+ const [loading, setLoading] = React39.useState(false);
9582
+ const [submittingId, setSubmittingId] = React39.useState(null);
9583
+ const [error, setError] = React39.useState(null);
9584
9584
  const isOwner = currentRole === "owner";
9585
9585
  const isDirectChildContext = activeDirectGroupId === childGroup.id;
9586
9586
  const canMutate = isOwner && isDirectChildContext && accountReady && Boolean(chainId);
9587
- const labelById = React55.useMemo(
9587
+ const labelById = React39.useMemo(
9588
9588
  () => new Map(availableParentGroups.map((group) => [group.id, group.name])),
9589
9589
  [availableParentGroups]
9590
9590
  );
9591
- const loadRelationships = React55.useCallback(async () => {
9591
+ const loadRelationships = React39.useCallback(async () => {
9592
9592
  if (!chainId) {
9593
9593
  setRelationships([]);
9594
9594
  return;
@@ -9608,7 +9608,7 @@ var GroupOwnershipPanel = ({
9608
9608
  setLoading(false);
9609
9609
  }
9610
9610
  }, [chainId, childGroup.id]);
9611
- React55.useEffect(() => {
9611
+ React39.useEffect(() => {
9612
9612
  void loadRelationships();
9613
9613
  }, [loadRelationships]);
9614
9614
  const commit = async (relationship) => {
@@ -9975,7 +9975,7 @@ function writeStoredPendingSponsorship(pending) {
9975
9975
  } catch {
9976
9976
  }
9977
9977
  }
9978
- var WizardContext = React55.createContext(null);
9978
+ var WizardContext = React39.createContext(null);
9979
9979
  function WizardProvider({
9980
9980
  initialPathname = "/onboarding",
9981
9981
  onComplete,
@@ -9985,18 +9985,18 @@ function WizardProvider({
9985
9985
  }) {
9986
9986
  const { onNavigate: hostNavigate, ...restConfig } = useWalletConfig();
9987
9987
  const { bootstrapSession } = useAuth();
9988
- const [pendingSponsorship, setPendingSponsorship] = React55.useState(readStoredPendingSponsorship);
9989
- const [pathname, setPathname] = React55.useState(
9988
+ const [pendingSponsorship, setPendingSponsorship] = React39.useState(readStoredPendingSponsorship);
9989
+ const [pathname, setPathname] = React39.useState(
9990
9990
  () => pendingSponsorship ? "/onboarding/sponsorship" : initialPathname
9991
9991
  );
9992
- const [state, setStateValue] = React55.useState(void 0);
9993
- const [planSelection, setPlanSelection] = React55.useState(
9992
+ const [state, setStateValue] = React39.useState(void 0);
9993
+ const [planSelection, setPlanSelection] = React39.useState(
9994
9994
  readOnboardingPlanSelectionHint
9995
9995
  );
9996
- const pendingSponsorshipRef = React55__default.default.useRef(
9996
+ const pendingSponsorshipRef = React39__default.default.useRef(
9997
9997
  pendingSponsorship
9998
9998
  );
9999
- const stageSponsorship = React55.useCallback((groupId, destination) => {
9999
+ const stageSponsorship = React39.useCallback((groupId, destination) => {
10000
10000
  const normalizedGroupId = canonicalSponsorGroupId(groupId);
10001
10001
  const userId = currentRegularUserId();
10002
10002
  if (!userId) {
@@ -10014,7 +10014,7 @@ function WizardProvider({
10014
10014
  writeStoredPendingSponsorship(next);
10015
10015
  return next;
10016
10016
  }, []);
10017
- const selectPlan = React55.useCallback((plan, catalogVersion) => {
10017
+ const selectPlan = React39.useCallback((plan, catalogVersion) => {
10018
10018
  const next = {
10019
10019
  planId: plan.id,
10020
10020
  ownerType: plan.owner_type,
@@ -10024,7 +10024,7 @@ function WizardProvider({
10024
10024
  setPlanSelection(next);
10025
10025
  writeOnboardingPlanSelectionHint(next);
10026
10026
  }, []);
10027
- const hydratePlanSelection = React55.useCallback(
10027
+ const hydratePlanSelection = React39.useCallback(
10028
10028
  (plan, catalogVersion, selectedAt = Date.now()) => {
10029
10029
  setPlanSelection({
10030
10030
  planId: plan.id,
@@ -10036,11 +10036,11 @@ function WizardProvider({
10036
10036
  },
10037
10037
  []
10038
10038
  );
10039
- const clearPlanSelection = React55.useCallback(() => {
10039
+ const clearPlanSelection = React39.useCallback(() => {
10040
10040
  setPlanSelection(null);
10041
10041
  clearOnboardingPlanSelectionHint();
10042
10042
  }, []);
10043
- const syncPlanIntent = React55.useCallback(async () => {
10043
+ const syncPlanIntent = React39.useCallback(async () => {
10044
10044
  if (!planSelection || !exports.authService.isAuthenticated()) return null;
10045
10045
  const response = await onboardingPlanService.selectIntent(planSelection.planId);
10046
10046
  const current = response.intent?.current_plan;
@@ -10056,7 +10056,7 @@ function WizardProvider({
10056
10056
  }
10057
10057
  return response;
10058
10058
  }, [planSelection]);
10059
- const navigate = React55.useCallback(
10059
+ const navigate = React39.useCallback(
10060
10060
  (to, opts) => {
10061
10061
  if (to.startsWith("/onboarding")) {
10062
10062
  setPathname(to);
@@ -10086,7 +10086,7 @@ function WizardProvider({
10086
10086
  },
10087
10087
  [clearPlanSelection, hostNavigate, onComplete]
10088
10088
  );
10089
- const continueAuthenticated = React55.useCallback(async (destination, expectedSponsor) => {
10089
+ const continueAuthenticated = React39.useCallback(async (destination, expectedSponsor) => {
10090
10090
  await bootstrapSession();
10091
10091
  if (expectedSponsor && !exports.authService.hasExactSponsoredSession(expectedSponsor)) {
10092
10092
  throw new Error(
@@ -10101,12 +10101,12 @@ function WizardProvider({
10101
10101
  }
10102
10102
  navigate(destination);
10103
10103
  }, [bootstrapSession, navigate, syncPlanIntent]);
10104
- const discardSponsorship = React55.useCallback(() => {
10104
+ const discardSponsorship = React39.useCallback(() => {
10105
10105
  pendingSponsorshipRef.current = null;
10106
10106
  setPendingSponsorship(null);
10107
10107
  clearStoredPendingSponsorship();
10108
10108
  }, []);
10109
- const finishSponsorship = React55.useCallback(async () => {
10109
+ const finishSponsorship = React39.useCallback(async () => {
10110
10110
  const pending = pendingSponsorshipRef.current;
10111
10111
  if (!pending) {
10112
10112
  throw new Error("No platform sponsorship continuation is awaiting completion.");
@@ -10132,7 +10132,7 @@ function WizardProvider({
10132
10132
  clearStoredPendingSponsorship();
10133
10133
  navigate(pending.destination);
10134
10134
  }, [bootstrapSession, navigate, syncPlanIntent]);
10135
- const completeAuthentication = React55.useCallback(async (result, destination, effectivePlatform) => {
10135
+ const completeAuthentication = React39.useCallback(async (result, destination, effectivePlatform) => {
10136
10136
  const currentUserId = currentRegularUserId();
10137
10137
  if (!currentUserId || currentUserId !== result.user_id) {
10138
10138
  throw new Error("The returned authentication session did not match the signed-in user.");
@@ -10170,11 +10170,11 @@ function WizardProvider({
10170
10170
  }
10171
10171
  await continueAuthenticated(destination);
10172
10172
  }, [bootstrapSession, continueAuthenticated, finishSponsorship, stageSponsorship]);
10173
- const params = React55.useMemo(() => {
10173
+ const params = React39.useMemo(() => {
10174
10174
  const provider = matchProviderParam(pathname);
10175
10175
  return provider ? { provider } : {};
10176
10176
  }, [pathname]);
10177
- const wizardValue = React55.useMemo(
10177
+ const wizardValue = React39.useMemo(
10178
10178
  () => ({
10179
10179
  pathname,
10180
10180
  state,
@@ -10212,7 +10212,7 @@ function WizardProvider({
10212
10212
  discardSponsorship
10213
10213
  ]
10214
10214
  );
10215
- const overriddenConfig = React55.useMemo(
10215
+ const overriddenConfig = React39.useMemo(
10216
10216
  () => ({
10217
10217
  ...restConfig,
10218
10218
  onNavigate: (href, opts) => navigate(href, { replace: opts?.replace })
@@ -10240,7 +10240,7 @@ function matchProviderParam(pathname) {
10240
10240
  return match ? match[1] : void 0;
10241
10241
  }
10242
10242
  function useWizard() {
10243
- const ctx = React55.useContext(WizardContext);
10243
+ const ctx = React39.useContext(WizardContext);
10244
10244
  if (!ctx) {
10245
10245
  throw new Error(
10246
10246
  "Wizard hooks must be used inside <WizardProvider> (mounted by <OnboardingWizard>)."
@@ -10258,7 +10258,7 @@ function useWizardParams() {
10258
10258
  }
10259
10259
  function WizardRedirect({ to, replace }) {
10260
10260
  const navigate = useWizardNavigate();
10261
- React55.useEffect(() => {
10261
+ React39.useEffect(() => {
10262
10262
  navigate(to, { replace });
10263
10263
  }, []);
10264
10264
  return null;
@@ -10375,20 +10375,20 @@ var DEFAULT_MESSAGES = {
10375
10375
  retryButtonText: "Try again"
10376
10376
  }
10377
10377
  };
10378
- var BrandingContext = React55.createContext(null);
10378
+ var BrandingContext = React39.createContext(null);
10379
10379
  var ROOT_BRANDING = {
10380
10380
  logo: DEFAULT_LOGO(),
10381
10381
  messages: DEFAULT_MESSAGES
10382
10382
  };
10383
10383
  function useBranding() {
10384
- return React55.useContext(BrandingContext) ?? ROOT_BRANDING;
10384
+ return React39.useContext(BrandingContext) ?? ROOT_BRANDING;
10385
10385
  }
10386
10386
  function BrandingProvider({
10387
10387
  branding,
10388
10388
  children
10389
10389
  }) {
10390
- const parent = React55.useContext(BrandingContext) ?? ROOT_BRANDING;
10391
- const value = React55.useMemo(() => {
10390
+ const parent = React39.useContext(BrandingContext) ?? ROOT_BRANDING;
10391
+ const value = React39.useMemo(() => {
10392
10392
  if (!branding) return parent;
10393
10393
  const { logo, logoSize, messages } = branding;
10394
10394
  return {
@@ -10536,11 +10536,11 @@ init_ProviderConfigContext();
10536
10536
  // src/react/useOnboardingRouting.ts
10537
10537
  init_authService();
10538
10538
  function useOnboardingState2() {
10539
- const [state, setState] = React55.useState({
10539
+ const [state, setState] = React39.useState({
10540
10540
  step: "unknown",
10541
10541
  isLoading: true
10542
10542
  });
10543
- React55.useEffect(() => {
10543
+ React39.useEffect(() => {
10544
10544
  let cancelled = false;
10545
10545
  (async () => {
10546
10546
  if (!exports.authService.isAuthenticated()) {
@@ -10716,11 +10716,11 @@ function SelectPlan({
10716
10716
  const wizardPlatform = useWizardPlatform();
10717
10717
  const { config, isLoading: configLoading } = useProviderConfig();
10718
10718
  const { isAuthenticated, isLoading: authLoading } = useAuth();
10719
- const [catalog, setCatalog] = React55.useState(null);
10720
- const [error, setError] = React55.useState(null);
10721
- const [attempt, setAttempt] = React55.useState(0);
10719
+ const [catalog, setCatalog] = React39.useState(null);
10720
+ const [error, setError] = React39.useState(null);
10721
+ const [attempt, setAttempt] = React39.useState(0);
10722
10722
  const platformTagged = !!(wizardPlatform ?? config?.platform?.group_id);
10723
- React55.useEffect(() => {
10723
+ React39.useEffect(() => {
10724
10724
  if (configLoading || authLoading || platformTagged || isAuthenticated) return;
10725
10725
  let disposed = false;
10726
10726
  setCatalog(null);
@@ -10736,7 +10736,7 @@ function SelectPlan({
10736
10736
  disposed = true;
10737
10737
  };
10738
10738
  }, [attempt, authLoading, configLoading, isAuthenticated, platformTagged]);
10739
- React55.useEffect(() => {
10739
+ React39.useEffect(() => {
10740
10740
  if (platformTagged || catalog && !catalog.prepaid_credits_enabled) {
10741
10741
  clearPlanSelection();
10742
10742
  }
@@ -10933,9 +10933,9 @@ async function signInWithPasskey(opts = {}) {
10933
10933
  return await res.json();
10934
10934
  }
10935
10935
  function PasskeyMethodButton({ mode, chainId, onSuccess, onError, platform }) {
10936
- const [supported, setSupported] = React55.useState(true);
10937
- const [busy, setBusy] = React55.useState(false);
10938
- React55.useEffect(() => {
10936
+ const [supported, setSupported] = React39.useState(true);
10937
+ const [busy, setBusy] = React39.useState(false);
10938
+ React39.useEffect(() => {
10939
10939
  const ok = typeof window !== "undefined" && !!window.PublicKeyCredential;
10940
10940
  setSupported(ok);
10941
10941
  }, []);
@@ -11026,9 +11026,9 @@ var ChooserCard = ({ onSelect, isPrimary }) => /* @__PURE__ */ jsxRuntime.jsx(
11026
11026
  onSelect
11027
11027
  }
11028
11028
  );
11029
- var LazyAvererSignupFlow = React55.lazy(() => Promise.resolve().then(() => (init_SignupFlow(), SignupFlow_exports)));
11029
+ var LazyAvererSignupFlow = React39.lazy(() => Promise.resolve().then(() => (init_SignupFlow(), SignupFlow_exports)));
11030
11030
  var SignupFlow2 = (props) => /* @__PURE__ */ jsxRuntime.jsx(
11031
- React55.Suspense,
11031
+ React39.Suspense,
11032
11032
  {
11033
11033
  fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-screen flex items-center justify-center bg-background text-text-secondary text-[13px]", children: "Loading Averer\u2026" }),
11034
11034
  children: /* @__PURE__ */ jsxRuntime.jsx(LazyAvererSignupFlow, { ...props })
@@ -11045,9 +11045,9 @@ var AvererAuth = {
11045
11045
  // squeezed into LoginLayout's narrow column.
11046
11046
  customLayout: true
11047
11047
  };
11048
- var LazyAvererKycFlow = React55.lazy(() => Promise.resolve().then(() => (init_KycFlow(), KycFlow_exports)));
11048
+ var LazyAvererKycFlow = React39.lazy(() => Promise.resolve().then(() => (init_KycFlow(), KycFlow_exports)));
11049
11049
  var KycFlow2 = (props) => /* @__PURE__ */ jsxRuntime.jsx(
11050
- React55.Suspense,
11050
+ React39.Suspense,
11051
11051
  {
11052
11052
  fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-[12px] text-text-secondary", children: "Loading Averer\u2026" }),
11053
11053
  children: /* @__PURE__ */ jsxRuntime.jsx(LazyAvererKycFlow, { ...props })
@@ -11066,8 +11066,8 @@ function SdkGate({
11066
11066
  hasConfig = true,
11067
11067
  configHint
11068
11068
  }) {
11069
- const [state, setState] = React55.useState({ status: "loading" });
11070
- React55.useEffect(() => {
11069
+ const [state, setState] = React39.useState({ status: "loading" });
11070
+ React39.useEffect(() => {
11071
11071
  let cancelled = false;
11072
11072
  (async () => {
11073
11073
  try {
@@ -11207,8 +11207,8 @@ var DynamicCompleter = ({ sdk, action, onError }) => {
11207
11207
  const ctx = sdk.useDynamicContext();
11208
11208
  const wallet = ctx.primaryWallet;
11209
11209
  const dynamicUser = ctx.user;
11210
- const [done, setDone] = React55__default.default.useState(false);
11211
- React55__default.default.useEffect(() => {
11210
+ const [done, setDone] = React39__default.default.useState(false);
11211
+ React39__default.default.useEffect(() => {
11212
11212
  if (done || !wallet?.address) return;
11213
11213
  setDone(true);
11214
11214
  (async () => {
@@ -11303,9 +11303,9 @@ var ChooserCard3 = ({ onSelect, isPrimary }) => /* @__PURE__ */ jsxRuntime.jsx(
11303
11303
  }
11304
11304
  );
11305
11305
  var SignupFlow4 = ({ onComplete, onError, platform }) => {
11306
- const [email, setEmail] = React55.useState("");
11307
- const [password, setPassword] = React55.useState("");
11308
- const [submitting, setSubmitting] = React55.useState(false);
11306
+ const [email, setEmail] = React39.useState("");
11307
+ const [password, setPassword] = React39.useState("");
11308
+ const [submitting, setSubmitting] = React39.useState(false);
11309
11309
  async function submit(e) {
11310
11310
  e.preventDefault();
11311
11311
  setSubmitting(true);
@@ -11461,7 +11461,7 @@ var ChooserCard4 = ({ onSelect, isPrimary }) => /* @__PURE__ */ jsxRuntime.jsx(
11461
11461
  }
11462
11462
  );
11463
11463
  var SignupFlow5 = ({ onComplete, onError, platform }) => {
11464
- const [busy, setBusy] = React55.useState(false);
11464
+ const [busy, setBusy] = React39.useState(false);
11465
11465
  async function trigger() {
11466
11466
  setBusy(true);
11467
11467
  try {
@@ -11633,8 +11633,8 @@ var KycFlow3 = ({ onComplete, onError, instanceId }) => {
11633
11633
  const settings = config?.kyc.settings[providerId];
11634
11634
  const publishableKey = settings?.publishable_key;
11635
11635
  const requiredForCompletion = settings?.required_for_completion ?? false;
11636
- const [stage, setStage] = React55__default.default.useState({ kind: "idle" });
11637
- React55__default.default.useEffect(() => {
11636
+ const [stage, setStage] = React39__default.default.useState({ kind: "idle" });
11637
+ React39__default.default.useEffect(() => {
11638
11638
  let cancelled = false;
11639
11639
  (async () => {
11640
11640
  try {
@@ -11658,7 +11658,7 @@ var KycFlow3 = ({ onComplete, onError, instanceId }) => {
11658
11658
  cancelled = true;
11659
11659
  };
11660
11660
  }, []);
11661
- React55__default.default.useEffect(() => {
11661
+ React39__default.default.useEffect(() => {
11662
11662
  if (stage.kind !== "pending-poll") return;
11663
11663
  let cancelled = false;
11664
11664
  const pollOnce = async () => {
@@ -11910,14 +11910,14 @@ function useIdentityStatusPoll(opts) {
11910
11910
  provider,
11911
11911
  credentialType
11912
11912
  } = opts;
11913
- const [stuckHint, setStuckHint] = React55__default.default.useState(false);
11914
- const onVerifiedRef = React55__default.default.useRef(onVerified);
11915
- const onRejectedRef = React55__default.default.useRef(onRejected);
11916
- React55__default.default.useEffect(() => {
11913
+ const [stuckHint, setStuckHint] = React39__default.default.useState(false);
11914
+ const onVerifiedRef = React39__default.default.useRef(onVerified);
11915
+ const onRejectedRef = React39__default.default.useRef(onRejected);
11916
+ React39__default.default.useEffect(() => {
11917
11917
  onVerifiedRef.current = onVerified;
11918
11918
  onRejectedRef.current = onRejected;
11919
11919
  }, [onVerified, onRejected]);
11920
- React55__default.default.useEffect(() => {
11920
+ React39__default.default.useEffect(() => {
11921
11921
  if (!active) {
11922
11922
  setStuckHint(false);
11923
11923
  return;
@@ -12055,12 +12055,12 @@ var KycFlow4 = ({ onComplete, onError, instanceId, subject }) => {
12055
12055
  const groupId = subject?.kind === "group" ? subject.id : void 0;
12056
12056
  const configuredLevel = config?.kyc.settings[providerId]?.level_name?.trim();
12057
12057
  const levelName = configuredLevel || "id-and-liveness";
12058
- const [token, setToken] = React55__default.default.useState(null);
12059
- const [stage, setStage] = React55__default.default.useState({ kind: "init" });
12060
- const [attempt, setAttempt] = React55__default.default.useState(0);
12061
- const submittedRef = React55__default.default.useRef(false);
12062
- const applicantIdRef = React55__default.default.useRef(void 0);
12063
- React55__default.default.useEffect(() => {
12058
+ const [token, setToken] = React39__default.default.useState(null);
12059
+ const [stage, setStage] = React39__default.default.useState({ kind: "init" });
12060
+ const [attempt, setAttempt] = React39__default.default.useState(0);
12061
+ const submittedRef = React39__default.default.useRef(false);
12062
+ const applicantIdRef = React39__default.default.useRef(void 0);
12063
+ React39__default.default.useEffect(() => {
12064
12064
  let cancelled = false;
12065
12065
  submittedRef.current = false;
12066
12066
  (async () => {
@@ -12290,8 +12290,8 @@ function OnboardingChooseMethod({ chrome } = {}) {
12290
12290
  const { config, isLoading, error: configError } = useProviderConfig();
12291
12291
  const wizardPlatform = useWizardPlatform();
12292
12292
  const { completeAuthentication } = useWizardAuthentication();
12293
- const [busyId, setBusyId] = React55.useState(null);
12294
- const [error, setError] = React55.useState(null);
12293
+ const [busyId, setBusyId] = React39.useState(null);
12294
+ const [error, setError] = React39.useState(null);
12295
12295
  if (isLoading) {
12296
12296
  return /* @__PURE__ */ jsxRuntime.jsx(StepShell, { chrome, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-[12px] text-text-secondary", children: "Loading sign-up options\u2026" }) });
12297
12297
  }
@@ -12387,7 +12387,7 @@ function FloatField({
12387
12387
  adornment,
12388
12388
  disabled
12389
12389
  }) {
12390
- const id = React55.useId();
12390
+ const id = React39.useId();
12391
12391
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
12392
12392
  /* @__PURE__ */ jsxRuntime.jsx(
12393
12393
  "input",
@@ -12440,16 +12440,16 @@ function OnboardingEmailSignup({ chrome } = {}) {
12440
12440
  const { config } = useProviderConfig();
12441
12441
  const { completeAuthentication } = useWizardAuthentication();
12442
12442
  const platform = wizardPlatform ?? config?.platform?.group_id;
12443
- const [email, setEmail] = React55.useState("");
12444
- const [password, setPassword] = React55.useState("");
12445
- const [confirmPassword, setConfirmPassword] = React55.useState("");
12446
- const [phase, setPhase] = React55.useState(null);
12443
+ const [email, setEmail] = React39.useState("");
12444
+ const [password, setPassword] = React39.useState("");
12445
+ const [confirmPassword, setConfirmPassword] = React39.useState("");
12446
+ const [phase, setPhase] = React39.useState(null);
12447
12447
  const submitting = phase !== null;
12448
- const [error, setError] = React55.useState(null);
12449
- const [emailExists, setEmailExists] = React55.useState(false);
12448
+ const [error, setError] = React39.useState(null);
12449
+ const [emailExists, setEmailExists] = React39.useState(false);
12450
12450
  const invite = useWizardInvite();
12451
12451
  const emailLocked = !!invite?.email;
12452
- React55.useEffect(() => {
12452
+ React39.useEffect(() => {
12453
12453
  if (invite?.email) setEmail(invite.email);
12454
12454
  }, [invite?.email]);
12455
12455
  function validate() {
@@ -12658,18 +12658,18 @@ init_onboardingClient();
12658
12658
  function EmailVerify({ chrome } = {}) {
12659
12659
  const navigate = useWizardNavigate();
12660
12660
  const { refreshUser, logout } = useAuth();
12661
- const [status, setStatus] = React55.useState(null);
12662
- const [phase, setPhase] = React55.useState("loading");
12663
- const [code, setCode] = React55.useState("");
12664
- const [newEmail, setNewEmail] = React55.useState("");
12665
- const [notice, setNotice] = React55.useState(null);
12666
- const [error, setError] = React55.useState(null);
12667
- const autoStartRef = React55.useRef(false);
12668
- const completionTimerRef = React55.useRef(null);
12661
+ const [status, setStatus] = React39.useState(null);
12662
+ const [phase, setPhase] = React39.useState("loading");
12663
+ const [code, setCode] = React39.useState("");
12664
+ const [newEmail, setNewEmail] = React39.useState("");
12665
+ const [notice, setNotice] = React39.useState(null);
12666
+ const [error, setError] = React39.useState(null);
12667
+ const autoStartRef = React39.useRef(false);
12668
+ const completionTimerRef = React39.useRef(null);
12669
12669
  const email = status?.email ?? "";
12670
- const maskedEmail = React55.useMemo(() => maskEmail(email), [email]);
12670
+ const maskedEmail = React39.useMemo(() => maskEmail(email), [email]);
12671
12671
  const busy = phase === "sending" || phase === "checking" || phase === "updating-email";
12672
- const completeSoon = React55.useCallback((message) => {
12672
+ const completeSoon = React39.useCallback((message) => {
12673
12673
  setNotice(message ?? "Email confirmed. Taking you to the next setup step.");
12674
12674
  setError(null);
12675
12675
  setPhase("success");
@@ -12679,7 +12679,7 @@ function EmailVerify({ chrome } = {}) {
12679
12679
  navigate("/onboarding/wallets");
12680
12680
  }, 850);
12681
12681
  }, [navigate]);
12682
- const loadStatus = React55.useCallback(async () => {
12682
+ const loadStatus = React39.useCallback(async () => {
12683
12683
  const next = await getMyEmailVerificationStatus();
12684
12684
  setStatus(next);
12685
12685
  if (next.verified) {
@@ -12689,7 +12689,7 @@ function EmailVerify({ chrome } = {}) {
12689
12689
  setPhase("ready");
12690
12690
  return next;
12691
12691
  }, [completeSoon]);
12692
- const sendCode = React55.useCallback(async () => {
12692
+ const sendCode = React39.useCallback(async () => {
12693
12693
  setPhase("sending");
12694
12694
  setError(null);
12695
12695
  try {
@@ -12715,7 +12715,7 @@ function EmailVerify({ chrome } = {}) {
12715
12715
  setPhase("ready");
12716
12716
  }
12717
12717
  }, []);
12718
- React55.useEffect(() => {
12718
+ React39.useEffect(() => {
12719
12719
  let cancelled = false;
12720
12720
  (async () => {
12721
12721
  setPhase("loading");
@@ -12740,7 +12740,7 @@ function EmailVerify({ chrome } = {}) {
12740
12740
  if (completionTimerRef.current) window.clearTimeout(completionTimerRef.current);
12741
12741
  };
12742
12742
  }, [completeSoon]);
12743
- React55.useEffect(() => {
12743
+ React39.useEffect(() => {
12744
12744
  if (!status || status.verified || status.is_synthetic || status.pending || autoStartRef.current) return;
12745
12745
  autoStartRef.current = true;
12746
12746
  void sendCode();
@@ -12985,7 +12985,7 @@ function ProviderSignup({ chrome } = {}) {
12985
12985
  const { config, isLoading } = useProviderConfig();
12986
12986
  const wizardPlatform = useWizardPlatform();
12987
12987
  const { completeAuthentication } = useWizardAuthentication();
12988
- const [error, setError] = React55.useState(null);
12988
+ const [error, setError] = React39.useState(null);
12989
12989
  if (isLoading) {
12990
12990
  return /* @__PURE__ */ jsxRuntime.jsx(StepShell, { chrome, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-center text-[12px] text-text-secondary", children: "Loading\u2026" }) });
12991
12991
  }
@@ -13180,8 +13180,8 @@ function AvatarImageUpload({
13180
13180
  hintClassName = "text-[10px] text-text-secondary",
13181
13181
  errorClassName = "text-[11px] text-status-error-text"
13182
13182
  }) {
13183
- const inputRef = React55.useRef(null);
13184
- const [error, setError] = React55.useState(null);
13183
+ const inputRef = React39.useRef(null);
13184
+ const [error, setError] = React39.useState(null);
13185
13185
  const hasPhoto = !!value;
13186
13186
  async function handleRemove() {
13187
13187
  setError(null);
@@ -13256,28 +13256,28 @@ function useTapToCancel({
13256
13256
  cancellingLabel = "Cancelling\u2026",
13257
13257
  onCancel
13258
13258
  }) {
13259
- const [isCancelling, setIsCancelling] = React55.useState(false);
13260
- const timeoutRef = React55.useRef(null);
13261
- const clear = React55.useCallback(() => {
13259
+ const [isCancelling, setIsCancelling] = React39.useState(false);
13260
+ const timeoutRef = React39.useRef(null);
13261
+ const clear = React39.useCallback(() => {
13262
13262
  if (timeoutRef.current !== null) {
13263
13263
  window.clearTimeout(timeoutRef.current);
13264
13264
  timeoutRef.current = null;
13265
13265
  }
13266
13266
  }, []);
13267
- const handlePointerDown = React55.useCallback(() => {
13267
+ const handlePointerDown = React39.useCallback(() => {
13268
13268
  if (!submitting) return;
13269
13269
  timeoutRef.current = window.setTimeout(() => {
13270
13270
  setIsCancelling(true);
13271
13271
  }, LONG_PRESS_MS);
13272
13272
  }, [submitting]);
13273
- const handlePointerUp = React55.useCallback(() => {
13273
+ const handlePointerUp = React39.useCallback(() => {
13274
13274
  clear();
13275
13275
  if (isCancelling && onCancel) {
13276
13276
  onCancel();
13277
13277
  }
13278
13278
  setIsCancelling(false);
13279
13279
  }, [clear, isCancelling, onCancel]);
13280
- const handlePointerLeave = React55.useCallback(() => {
13280
+ const handlePointerLeave = React39.useCallback(() => {
13281
13281
  clear();
13282
13282
  setIsCancelling(false);
13283
13283
  }, [clear]);
@@ -13308,27 +13308,27 @@ function emailLocalPart(email) {
13308
13308
  function OnboardingProfile({ chrome } = {}) {
13309
13309
  const navigate = useWizardNavigate();
13310
13310
  const { refreshUser } = useAuth();
13311
- const [firstName, setFirstName] = React55.useState(null);
13312
- const [lastName, setLastName] = React55.useState(null);
13313
- const [dob, setDob] = React55.useState(null);
13314
- const [addressLine1, setAddressLine1] = React55.useState(null);
13315
- const [addressLine2, setAddressLine2] = React55.useState(null);
13316
- const [addressCity, setAddressCity] = React55.useState(null);
13317
- const [addressRegion, setAddressRegion] = React55.useState(null);
13318
- const [addressPostalCode, setAddressPostalCode] = React55.useState(null);
13319
- const [addressCountry, setAddressCountry] = React55.useState(null);
13320
- const [displayName, setDisplayName] = React55.useState("");
13321
- const [displayNameEdited, setDisplayNameEdited] = React55.useState(false);
13322
- const [submitting, setSubmitting] = React55.useState(false);
13323
- const [error, setError] = React55.useState(null);
13324
- const [loaded, setLoaded] = React55.useState(false);
13325
- const [fallbackName, setFallbackName] = React55.useState("You");
13326
- const [avatarChoice, setAvatarChoice] = React55.useState(null);
13327
- const [avatarUrl, setAvatarUrl] = React55.useState(null);
13328
- const [avatarTouched, setAvatarTouched] = React55.useState(false);
13329
- const [avatarUrlTouched, setAvatarUrlTouched] = React55.useState(false);
13330
- const [accountEmail, setAccountEmail] = React55.useState(null);
13331
- React55.useEffect(() => {
13311
+ const [firstName, setFirstName] = React39.useState(null);
13312
+ const [lastName, setLastName] = React39.useState(null);
13313
+ const [dob, setDob] = React39.useState(null);
13314
+ const [addressLine1, setAddressLine1] = React39.useState(null);
13315
+ const [addressLine2, setAddressLine2] = React39.useState(null);
13316
+ const [addressCity, setAddressCity] = React39.useState(null);
13317
+ const [addressRegion, setAddressRegion] = React39.useState(null);
13318
+ const [addressPostalCode, setAddressPostalCode] = React39.useState(null);
13319
+ const [addressCountry, setAddressCountry] = React39.useState(null);
13320
+ const [displayName, setDisplayName] = React39.useState("");
13321
+ const [displayNameEdited, setDisplayNameEdited] = React39.useState(false);
13322
+ const [submitting, setSubmitting] = React39.useState(false);
13323
+ const [error, setError] = React39.useState(null);
13324
+ const [loaded, setLoaded] = React39.useState(false);
13325
+ const [fallbackName, setFallbackName] = React39.useState("You");
13326
+ const [avatarChoice, setAvatarChoice] = React39.useState(null);
13327
+ const [avatarUrl, setAvatarUrl] = React39.useState(null);
13328
+ const [avatarTouched, setAvatarTouched] = React39.useState(false);
13329
+ const [avatarUrlTouched, setAvatarUrlTouched] = React39.useState(false);
13330
+ const [accountEmail, setAccountEmail] = React39.useState(null);
13331
+ React39.useEffect(() => {
13332
13332
  if (!exports.authService.isAuthenticated()) {
13333
13333
  setLoaded(true);
13334
13334
  return;
@@ -13386,7 +13386,7 @@ function OnboardingProfile({ chrome } = {}) {
13386
13386
  };
13387
13387
  }, []);
13388
13388
  const autoDerivedDisplayName = [firstName, lastName].map((s) => (s || "").trim()).filter(Boolean).join(" ");
13389
- React55.useEffect(() => {
13389
+ React39.useEffect(() => {
13390
13390
  if (!displayNameEdited) {
13391
13391
  setDisplayName(autoDerivedDisplayName);
13392
13392
  }
@@ -13582,7 +13582,7 @@ function IdentityVerify({
13582
13582
  } = {}) {
13583
13583
  const navigate = useWizardNavigate();
13584
13584
  const { config, isLoading } = useProviderConfig();
13585
- const [error, setError] = React55.useState(null);
13585
+ const [error, setError] = React39.useState(null);
13586
13586
  const primaryId = config?.kyc.primary;
13587
13587
  const allowedIdentityProviders = userIdentityStatusScopes(config);
13588
13588
  const gate = useOnboardingState(
@@ -15036,20 +15036,20 @@ function AddWalletsStep({ chrome } = {}) {
15036
15036
  const navigate = useWizardNavigate();
15037
15037
  const { bootstrapSession, user } = useAuth();
15038
15038
  const { config } = useProviderConfig();
15039
- const [keys, setKeys] = React55.useState([]);
15040
- const [loading, setLoading] = React55.useState(true);
15041
- const [busy, setBusy] = React55.useState(null);
15042
- const [error, setError] = React55.useState(null);
15043
- const [lastFailedAction, setLastFailedAction] = React55.useState(null);
15044
- const [status, setStatus] = React55.useState(null);
15045
- const [autoAdvanceArmed, setAutoAdvanceArmed] = React55.useState(false);
15046
- const [emailDraft, setEmailDraft] = React55.useState("");
15047
- const [showDynamic, setShowDynamic] = React55.useState(false);
15048
- const [walletsOpen, setWalletsOpen] = React55.useState(false);
15039
+ const [keys, setKeys] = React39.useState([]);
15040
+ const [loading, setLoading] = React39.useState(true);
15041
+ const [busy, setBusy] = React39.useState(null);
15042
+ const [error, setError] = React39.useState(null);
15043
+ const [lastFailedAction, setLastFailedAction] = React39.useState(null);
15044
+ const [status, setStatus] = React39.useState(null);
15045
+ const [autoAdvanceArmed, setAutoAdvanceArmed] = React39.useState(false);
15046
+ const [emailDraft, setEmailDraft] = React39.useState("");
15047
+ const [showDynamic, setShowDynamic] = React39.useState(false);
15048
+ const [walletsOpen, setWalletsOpen] = React39.useState(false);
15049
15049
  const hasSyntheticEmail = !!user?.email && user.email.toLowerCase().endsWith("@external.yieldfabric.local");
15050
15050
  const { snapshot: gateSnapshot } = useOnboardingState();
15051
15051
  const emailOk = !!gateSnapshot && snapshotEmailOk(gateSnapshot);
15052
- const refresh = React55.useCallback(async (opts = {}) => {
15052
+ const refresh = React39.useCallback(async (opts = {}) => {
15053
15053
  try {
15054
15054
  if (opts.invalidate ?? !opts.silent) {
15055
15055
  invalidateWalletCount();
@@ -15067,7 +15067,7 @@ function AddWalletsStep({ chrome } = {}) {
15067
15067
  setLoading(false);
15068
15068
  }
15069
15069
  }, []);
15070
- React55.useEffect(() => {
15070
+ React39.useEffect(() => {
15071
15071
  refresh({ invalidate: true });
15072
15072
  }, [refresh]);
15073
15073
  const keyCount = keys.length;
@@ -15202,7 +15202,7 @@ function AddWalletsStep({ chrome } = {}) {
15202
15202
  setBusy(null);
15203
15203
  }
15204
15204
  }
15205
- const goOn = React55.useCallback(async () => {
15205
+ const goOn = React39.useCallback(async () => {
15206
15206
  setBusy("continue");
15207
15207
  setLastFailedAction(null);
15208
15208
  try {
@@ -15230,16 +15230,16 @@ function AddWalletsStep({ chrome } = {}) {
15230
15230
  setBusy(null);
15231
15231
  }
15232
15232
  }, [bootstrapSession, config, navigate, user?.role]);
15233
- const onContinue = React55.useCallback(async () => {
15233
+ const onContinue = React39.useCallback(async () => {
15234
15234
  if (!canContinue) return;
15235
15235
  await goOn();
15236
15236
  }, [canContinue, goOn]);
15237
- const onSkip = React55.useCallback(async () => {
15237
+ const onSkip = React39.useCallback(async () => {
15238
15238
  if (!user?.id) return;
15239
15239
  deferKeyStep(user.id);
15240
15240
  await goOn();
15241
15241
  }, [goOn, user?.id]);
15242
- React55.useEffect(() => {
15242
+ React39.useEffect(() => {
15243
15243
  if (!autoAdvanceArmed || !canContinue || busy) return;
15244
15244
  const timeout = window.setTimeout(() => {
15245
15245
  setAutoAdvanceArmed(false);
@@ -15473,10 +15473,10 @@ var Drawer = ({
15473
15473
  panelStyle,
15474
15474
  contentStyle
15475
15475
  }) => {
15476
- const titleId = React55.useId();
15477
- const panelRef = React55.useRef(null);
15478
- const closeButtonRef = React55.useRef(null);
15479
- React55.useEffect(() => {
15476
+ const titleId = React39.useId();
15477
+ const panelRef = React39.useRef(null);
15478
+ const closeButtonRef = React39.useRef(null);
15479
+ React39.useEffect(() => {
15480
15480
  if (!isOpen || typeof document === "undefined") return;
15481
15481
  const previouslyFocused = document.activeElement;
15482
15482
  const bodyOverflow = document.body.style.overflow;
@@ -15747,12 +15747,12 @@ var EXPLANATIONS = {
15747
15747
  manual: "Save a card for this billing profile. It is only charged for metered usage \u2014 nothing is charged now."
15748
15748
  };
15749
15749
  var CardCollectForm = ({ stripeLoader, session, onSaved, onError, groupId }) => {
15750
- const mountRef = React55.useRef(null);
15751
- const stripeRef = React55.useRef(null);
15752
- const elementsRef = React55.useRef(null);
15753
- const [ready, setReady] = React55.useState(false);
15754
- const [submitting, setSubmitting] = React55.useState(false);
15755
- React55.useEffect(() => {
15750
+ const mountRef = React39.useRef(null);
15751
+ const stripeRef = React39.useRef(null);
15752
+ const elementsRef = React39.useRef(null);
15753
+ const [ready, setReady] = React39.useState(false);
15754
+ const [submitting, setSubmitting] = React39.useState(false);
15755
+ React39.useEffect(() => {
15756
15756
  let cancelled = false;
15757
15757
  let element = null;
15758
15758
  (async () => {
@@ -15782,7 +15782,7 @@ var CardCollectForm = ({ stripeLoader, session, onSaved, onError, groupId }) =>
15782
15782
  }
15783
15783
  };
15784
15784
  }, [session.client_secret]);
15785
- const submit = React55.useCallback(async () => {
15785
+ const submit = React39.useCallback(async () => {
15786
15786
  const stripe = stripeRef.current;
15787
15787
  const elements = elementsRef.current;
15788
15788
  if (!stripe || !elements || submitting) return;
@@ -15837,9 +15837,9 @@ var AddCardDialog = ({
15837
15837
  groupId,
15838
15838
  source = "manual"
15839
15839
  }) => {
15840
- const [stage, setStage] = React55.useState({ kind: "creating" });
15841
- const [attempt, setAttempt] = React55.useState(0);
15842
- React55.useEffect(() => {
15840
+ const [stage, setStage] = React39.useState({ kind: "creating" });
15841
+ const [attempt, setAttempt] = React39.useState(0);
15842
+ React39.useEffect(() => {
15843
15843
  if (!isOpen) return;
15844
15844
  let cancelled = false;
15845
15845
  setStage({ kind: "creating" });
@@ -15868,7 +15868,7 @@ var AddCardDialog = ({
15868
15868
  cancelled = true;
15869
15869
  };
15870
15870
  }, [isOpen, groupId, attempt]);
15871
- const openPortal = React55.useCallback(async () => {
15871
+ const openPortal = React39.useCallback(async () => {
15872
15872
  try {
15873
15873
  const url = await exports.billingService.createPortalSession(void 0, groupId);
15874
15874
  window.location.assign(url);
@@ -15947,8 +15947,8 @@ var AddCardDialog = ({
15947
15947
  };
15948
15948
  function AddCardStep({ chrome } = {}) {
15949
15949
  const navigate = useWizardNavigate();
15950
- const [dialogOpen, setDialogOpen] = React55.useState(true);
15951
- const [saved, setSaved] = React55.useState(false);
15950
+ const [dialogOpen, setDialogOpen] = React39.useState(true);
15951
+ const [saved, setSaved] = React39.useState(false);
15952
15952
  const handleSuccess = () => {
15953
15953
  setSaved(true);
15954
15954
  setDialogOpen(false);
@@ -16026,7 +16026,7 @@ function Field({
16026
16026
  value,
16027
16027
  copyable
16028
16028
  }) {
16029
- const [copied, setCopied] = React55__default.default.useState(false);
16029
+ const [copied, setCopied] = React39__default.default.useState(false);
16030
16030
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
16031
16031
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[10px] uppercase tracking-wider text-text-secondary", children: label }),
16032
16032
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 flex items-center gap-2", children: [
@@ -16090,14 +16090,16 @@ var STAGE_COPY = {
16090
16090
  not_applicable: { title: "Finishing up", body: "" }
16091
16091
  };
16092
16092
  var AccountOpeningPanel = ({ onContinue, continueLabel = "Continue" }) => {
16093
- const [status, setStatus] = React55__default.default.useState(null);
16094
- const [impatient, setImpatient] = React55__default.default.useState(false);
16095
- const activationStarted = React55__default.default.useRef(false);
16096
- const onContinueRef = React55__default.default.useRef(onContinue);
16097
- React55__default.default.useEffect(() => {
16093
+ const [status, setStatus] = React39__default.default.useState(null);
16094
+ const [impatient, setImpatient] = React39__default.default.useState(false);
16095
+ const [unavailable, setUnavailable] = React39__default.default.useState(false);
16096
+ const [attempt, setAttempt] = React39__default.default.useState(0);
16097
+ const activationStarted = React39__default.default.useRef(false);
16098
+ const onContinueRef = React39__default.default.useRef(onContinue);
16099
+ React39__default.default.useEffect(() => {
16098
16100
  onContinueRef.current = onContinue;
16099
16101
  }, [onContinue]);
16100
- React55__default.default.useEffect(() => {
16102
+ React39__default.default.useEffect(() => {
16101
16103
  let cancelled = false;
16102
16104
  let timer;
16103
16105
  const startedAt = Date.now();
@@ -16105,8 +16107,9 @@ var AccountOpeningPanel = ({ onContinue, continueLabel = "Continue" }) => {
16105
16107
  if (cancelled) return;
16106
16108
  let terminal = false;
16107
16109
  try {
16108
- const next = await fetchAccountOpeningStatus();
16110
+ const next = await withDeadline(fetchAccountOpeningStatus(), "Account opening status");
16109
16111
  if (cancelled) return;
16112
+ setUnavailable(false);
16110
16113
  setStatus(next);
16111
16114
  if (next.status === "not_started") {
16112
16115
  onContinueRef.current();
@@ -16123,6 +16126,8 @@ var AccountOpeningPanel = ({ onContinue, continueLabel = "Continue" }) => {
16123
16126
  );
16124
16127
  }
16125
16128
  } catch {
16129
+ if (cancelled) return;
16130
+ setUnavailable(true);
16126
16131
  }
16127
16132
  if (cancelled || terminal) return;
16128
16133
  const waited = Date.now() - startedAt;
@@ -16134,8 +16139,20 @@ var AccountOpeningPanel = ({ onContinue, continueLabel = "Continue" }) => {
16134
16139
  cancelled = true;
16135
16140
  if (timer !== void 0) window.clearTimeout(timer);
16136
16141
  };
16137
- }, []);
16138
- if (!status) return null;
16142
+ }, [attempt]);
16143
+ if (unavailable || !status) {
16144
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 text-center", role: "status", "aria-live": "polite", children: [
16145
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: unavailable ? "We couldn\u2019t check your account right now." : "Checking your account\u2026" }),
16146
+ unavailable && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16147
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[12px] text-text-secondary", children: "You can try again or continue. Your account details will be available when setup finishes." }),
16148
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "min-h-[44px] w-full rounded-lg bg-cta px-4 py-2.5 text-on-cta", onClick: () => {
16149
+ setUnavailable(false);
16150
+ setAttempt((value) => value + 1);
16151
+ }, children: "Try again" }),
16152
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "min-h-[44px] w-full", onClick: onContinue, children: continueLabel })
16153
+ ] })
16154
+ ] });
16155
+ }
16139
16156
  if (status.status === "ready" && status.account) {
16140
16157
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", role: "status", "aria-live": "polite", children: [
16141
16158
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
@@ -16193,14 +16210,14 @@ var AccountOpeningPanel = ({ onContinue, continueLabel = "Continue" }) => {
16193
16210
  init_authService();
16194
16211
  var WALLET_AWAKENING_MS = 1100;
16195
16212
  var TOTAL_MS = 3e3;
16196
- function OnboardingWelcomeMoment({ chrome } = {}) {
16213
+ function OnboardingWelcomeMoment({ chrome, deferAccountOpening = false } = {}) {
16197
16214
  const navigate = useWizardNavigate();
16198
16215
  const { messages } = useBranding();
16199
- const [name, setName] = React55.useState("");
16200
- const [walletShort, setWalletShort] = React55.useState(null);
16201
- const [phase, setPhase] = React55.useState("wallet");
16202
- const [accountOpened, setAccountOpened] = React55.useState(false);
16203
- React55.useEffect(() => {
16216
+ const [name, setName] = React39.useState("");
16217
+ const [walletShort, setWalletShort] = React39.useState(null);
16218
+ const [phase, setPhase] = React39.useState("wallet");
16219
+ const [accountOpened, setAccountOpened] = React39.useState(deferAccountOpening);
16220
+ React39.useEffect(() => {
16204
16221
  let cancelled = false;
16205
16222
  (async () => {
16206
16223
  const token = exports.authService.getAccessToken();
@@ -16233,7 +16250,7 @@ function OnboardingWelcomeMoment({ chrome } = {}) {
16233
16250
  cancelled = true;
16234
16251
  };
16235
16252
  }, []);
16236
- React55.useEffect(() => {
16253
+ React39.useEffect(() => {
16237
16254
  if (!accountOpened) return;
16238
16255
  const swap = window.setTimeout(() => setPhase("welcome"), WALLET_AWAKENING_MS);
16239
16256
  const route = window.setTimeout(() => navigate("/home"), TOTAL_MS);
@@ -16443,39 +16460,39 @@ function ChoosePlan({
16443
16460
  hydratePlanSelection,
16444
16461
  clearPlanSelection
16445
16462
  } = useWizardPlanIntent();
16446
- const [catalog, setCatalog] = React55.useState(null);
16447
- const [selected, setSelected] = React55.useState(null);
16448
- const [selectedCatalogVersion, setSelectedCatalogVersion] = React55.useState(null);
16449
- const [loading, setLoading] = React55.useState(true);
16450
- const [busy, setBusy] = React55.useState(false);
16451
- const [error, setError] = React55.useState(null);
16452
- const [loadAttempt, setLoadAttempt] = React55.useState(0);
16453
- const [completed, setCompleted] = React55.useState(false);
16454
- const [leave, setLeave] = React55.useState(false);
16455
- const [serverRequired, setServerRequired] = React55.useState(false);
16456
- const [returnPending, setReturnPending] = React55.useState(() => {
16463
+ const [catalog, setCatalog] = React39.useState(null);
16464
+ const [selected, setSelected] = React39.useState(null);
16465
+ const [selectedCatalogVersion, setSelectedCatalogVersion] = React39.useState(null);
16466
+ const [loading, setLoading] = React39.useState(true);
16467
+ const [busy, setBusy] = React39.useState(false);
16468
+ const [error, setError] = React39.useState(null);
16469
+ const [loadAttempt, setLoadAttempt] = React39.useState(0);
16470
+ const [completed, setCompleted] = React39.useState(false);
16471
+ const [leave, setLeave] = React39.useState(false);
16472
+ const [serverRequired, setServerRequired] = React39.useState(false);
16473
+ const [returnPending, setReturnPending] = React39.useState(() => {
16457
16474
  const marker = readCreditCheckoutReturnMarker();
16458
16475
  return marker?.kind === "plan" && !marker.groupId;
16459
16476
  });
16460
- const [returnRetryRequired, setReturnRetryRequired] = React55.useState(false);
16461
- const initialAppliedProofRef = React55.useRef(readAppliedPlanProof());
16462
- const appliedProofRef = React55.useRef(initialAppliedProofRef.current);
16463
- const appliedPlanIdRef = React55.useRef(
16477
+ const [returnRetryRequired, setReturnRetryRequired] = React39.useState(false);
16478
+ const initialAppliedProofRef = React39.useRef(readAppliedPlanProof());
16479
+ const appliedProofRef = React39.useRef(initialAppliedProofRef.current);
16480
+ const appliedPlanIdRef = React39.useRef(
16464
16481
  initialAppliedProofRef.current?.purchasedPlanId ?? null
16465
16482
  );
16466
- const expectedPlanIdRef = React55.useRef(null);
16483
+ const expectedPlanIdRef = React39.useRef(null);
16467
16484
  const initialMismatch = initialAppliedProofRef.current?.intendedPlanId && initialAppliedProofRef.current.intendedPlanId !== initialAppliedProofRef.current.purchasedPlanId ? {
16468
16485
  purchasedPlanId: initialAppliedProofRef.current.purchasedPlanId,
16469
16486
  intendedPlanId: initialAppliedProofRef.current.intendedPlanId
16470
16487
  } : null;
16471
- const [appliedMismatch, setAppliedMismatch] = React55.useState(
16488
+ const [appliedMismatch, setAppliedMismatch] = React39.useState(
16472
16489
  initialMismatch
16473
16490
  );
16474
- const appliedMismatchRef = React55.useRef(initialMismatch);
16491
+ const appliedMismatchRef = React39.useRef(initialMismatch);
16475
16492
  expectedPlanIdRef.current = selected?.id ?? planSelection?.planId ?? null;
16476
16493
  const directSelfPayApplicable = !(wizardPlatform ?? config?.platform?.group_id) && !personalSessionHasGroupPayer();
16477
16494
  const planRequired = required || serverRequired;
16478
- React55.useEffect(() => {
16495
+ React39.useEffect(() => {
16479
16496
  if (!directSelfPayApplicable) return;
16480
16497
  let disposed = false;
16481
16498
  setLoading(true);
@@ -16565,7 +16582,7 @@ function ChoosePlan({
16565
16582
  required,
16566
16583
  returnPending
16567
16584
  ]);
16568
- React55.useEffect(() => {
16585
+ React39.useEffect(() => {
16569
16586
  const handleApplied = (event) => {
16570
16587
  const detail = event.detail;
16571
16588
  if (detail.kind !== "plan" || detail.groupId || !detail.creditPlanId) return;
@@ -16599,7 +16616,7 @@ function ChoosePlan({
16599
16616
  window.addEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, handleApplied);
16600
16617
  return () => window.removeEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, handleApplied);
16601
16618
  }, []);
16602
- React55.useEffect(() => {
16619
+ React39.useEffect(() => {
16603
16620
  const matchesPersonalPlanReturn = (event) => {
16604
16621
  const detail = event.detail;
16605
16622
  const marker = readCreditCheckoutReturnMarker();
@@ -16630,7 +16647,7 @@ function ChoosePlan({
16630
16647
  );
16631
16648
  };
16632
16649
  }, []);
16633
- React55.useEffect(() => {
16650
+ React39.useEffect(() => {
16634
16651
  if (!returnPending) return;
16635
16652
  const timer = window.setInterval(() => {
16636
16653
  const marker = readCreditCheckoutReturnMarker();
@@ -17132,20 +17149,20 @@ function SponsorshipConsent({
17132
17149
  stageSponsorship,
17133
17150
  finishSponsorship
17134
17151
  } = useWizardAuthentication();
17135
- const [sponsorship, setSponsorship] = React55.useState(null);
17136
- const [exactSession, setExactSession] = React55.useState(false);
17137
- const [agreed, setAgreed] = React55.useState(false);
17138
- const [loading, setLoading] = React55.useState(true);
17139
- const [busy, setBusy] = React55.useState(false);
17140
- const [error, setError] = React55.useState(null);
17141
- const [loadAttempt, setLoadAttempt] = React55.useState(0);
17142
- const destination = React55.useMemo(() => {
17152
+ const [sponsorship, setSponsorship] = React39.useState(null);
17153
+ const [exactSession, setExactSession] = React39.useState(false);
17154
+ const [agreed, setAgreed] = React39.useState(false);
17155
+ const [loading, setLoading] = React39.useState(true);
17156
+ const [busy, setBusy] = React39.useState(false);
17157
+ const [error, setError] = React39.useState(null);
17158
+ const [loadAttempt, setLoadAttempt] = React39.useState(0);
17159
+ const destination = React39.useMemo(() => {
17143
17160
  if (pendingSponsorship?.groupId === groupId) {
17144
17161
  return pendingSponsorship.destination;
17145
17162
  }
17146
17163
  return fallbackDestination;
17147
17164
  }, [fallbackDestination, groupId, pendingSponsorship]);
17148
- const loadCurrent = React55.useCallback(async (driftMessage) => {
17165
+ const loadCurrent = React39.useCallback(async (driftMessage) => {
17149
17166
  setLoading(true);
17150
17167
  if (!driftMessage) setError(null);
17151
17168
  try {
@@ -17168,7 +17185,7 @@ function SponsorshipConsent({
17168
17185
  setLoading(false);
17169
17186
  }
17170
17187
  }, [destination, groupId, stageSponsorship]);
17171
- React55.useEffect(() => {
17188
+ React39.useEffect(() => {
17172
17189
  let cancelled = false;
17173
17190
  setLoading(true);
17174
17191
  setError(null);
@@ -17371,7 +17388,8 @@ function OnboardingWizard({
17371
17388
  invite,
17372
17389
  platform,
17373
17390
  onSelectPlatform,
17374
- sponsorshipConsent = "wizard"
17391
+ sponsorshipConsent = "wizard",
17392
+ billingMode = "automatic"
17375
17393
  }) {
17376
17394
  return /* @__PURE__ */ jsxRuntime.jsx(BrandingProvider, { branding, children: /* @__PURE__ */ jsxRuntime.jsx(
17377
17395
  WizardProvider,
@@ -17385,7 +17403,8 @@ function OnboardingWizard({
17385
17403
  {
17386
17404
  chrome,
17387
17405
  onSelectPlatform,
17388
- sponsorshipConsent
17406
+ sponsorshipConsent,
17407
+ billingMode
17389
17408
  }
17390
17409
  )
17391
17410
  }
@@ -17415,7 +17434,8 @@ function gateToPath(status) {
17415
17434
  function WizardRouter({
17416
17435
  chrome,
17417
17436
  onSelectPlatform,
17418
- sponsorshipConsent = "wizard"
17437
+ sponsorshipConsent = "wizard",
17438
+ billingMode = "automatic"
17419
17439
  }) {
17420
17440
  const pathname = useWizardPathname();
17421
17441
  const { config } = useProviderConfig();
@@ -17424,7 +17444,7 @@ function WizardRouter({
17424
17444
  const effectivePlatform = wizardPlatform ?? config?.platform?.group_id ?? pendingSponsorship?.groupId;
17425
17445
  const primaryKycId = config?.kyc.primary;
17426
17446
  const identityRequired = !!(primaryKycId && config?.kyc.enabled.includes(primaryKycId) && config?.kyc.settings[primaryKycId]?.required_for_completion);
17427
- const planApplicable = !effectivePlatform && !personalSessionHasGroupPayer();
17447
+ const planApplicable = billingMode !== "host" && !effectivePlatform && !personalSessionHasGroupPayer();
17428
17448
  const allowedIdentityProviders = userIdentityStatusScopes(config);
17429
17449
  const gate = useOnboardingState(
17430
17450
  identityRequired,
@@ -17435,11 +17455,14 @@ function WizardRouter({
17435
17455
  identityRequired && primaryKycVerifiesEmail(config)
17436
17456
  );
17437
17457
  const hostOwnsSponsorshipConsent = sponsorshipConsent === "host";
17438
- React55__default.default.useEffect(() => {
17458
+ React39__default.default.useEffect(() => {
17439
17459
  if (hostOwnsSponsorshipConsent && pendingSponsorship) {
17440
17460
  discardSponsorship();
17441
17461
  }
17442
17462
  }, [hostOwnsSponsorshipConsent, pendingSponsorship, discardSponsorship]);
17463
+ if (!planApplicable && ["/onboarding", "/onboarding/pricing", "/onboarding/plan", "/onboarding/card"].includes(pathname)) {
17464
+ return /* @__PURE__ */ jsxRuntime.jsx(WizardRedirect, { to: "/onboarding/choose", replace: true });
17465
+ }
17443
17466
  const sponsorshipContext = !hostOwnsSponsorshipConsent && !!effectivePlatform && (pendingSponsorship !== null || exports.authService.isAuthenticated() && !exports.authService.hasExactSponsoredSession(effectivePlatform));
17444
17467
  const exactSponsorship = !!effectivePlatform && exports.authService.hasExactSponsoredSession(effectivePlatform);
17445
17468
  const gateCanAnswer = exports.authService.isAuthenticated() && !!exports.tokenManager.getAccessToken();
@@ -17523,7 +17546,7 @@ function WizardRouter({
17523
17546
  }
17524
17547
  );
17525
17548
  if (pathname === "/onboarding/welcome")
17526
- return /* @__PURE__ */ jsxRuntime.jsx(OnboardingWelcomeMoment, { chrome });
17549
+ return /* @__PURE__ */ jsxRuntime.jsx(OnboardingWelcomeMoment, { chrome, deferAccountOpening: billingMode === "host" });
17527
17550
  if (pathname === "/onboarding")
17528
17551
  return /* @__PURE__ */ jsxRuntime.jsx(SelectPlan, { chrome, platformPlansAvailable: !!onSelectPlatform });
17529
17552
  if (pathname.startsWith("/onboarding/"))
@@ -17651,7 +17674,7 @@ function builtinProviderDisplayName(id) {
17651
17674
  }
17652
17675
  }
17653
17676
  function useProviderDisplayName(config) {
17654
- return React55__default.default.useCallback(
17677
+ return React39__default.default.useCallback(
17655
17678
  (id) => {
17656
17679
  const labelled = config?.kyc?.settings?.[id]?.label ?? config?.auth?.settings?.[id]?.label;
17657
17680
  const trimmed = typeof labelled === "string" ? labelled.trim() : "";
@@ -17721,26 +17744,26 @@ var OnboardingPolicySection = ({
17721
17744
  groupId,
17722
17745
  sponsorshipEpoch = 0
17723
17746
  }) => {
17724
- const [deployConfig, setDeployConfig] = React55.useState(null);
17747
+ const [deployConfig, setDeployConfig] = React39.useState(null);
17725
17748
  const providerDisplayName = useProviderDisplayName(deployConfig);
17726
- const [deployLoading, setDeployLoading] = React55.useState(true);
17727
- const [profiles, setProfiles] = React55.useState([]);
17728
- const [catalogRefreshed, setCatalogRefreshed] = React55.useState(false);
17729
- const [loading, setLoading] = React55.useState(true);
17730
- const [hidden, setHidden] = React55.useState(false);
17731
- const [platformActive, setPlatformActive] = React55.useState(null);
17732
- const [loadError, setLoadError] = React55.useState(null);
17733
- const [saving, setSaving] = React55.useState(false);
17734
- const [saved, setSaved] = React55.useState(false);
17735
- const [saveError, setSaveError] = React55.useState(null);
17736
- const [profileName, setProfileName] = React55.useState("");
17737
- const [requireEmail, setRequireEmail] = React55.useState(false);
17738
- const [customize, setCustomize] = React55.useState(false);
17739
- const [selectedProviders, setSelectedProviders] = React55.useState([]);
17740
- const [authPrimary, setAuthPrimary] = React55.useState("");
17741
- const [kycPrimary, setKycPrimary] = React55.useState("");
17742
- const [uxSteps, setUxSteps] = React55.useState({});
17743
- React55.useEffect(() => {
17749
+ const [deployLoading, setDeployLoading] = React39.useState(true);
17750
+ const [profiles, setProfiles] = React39.useState([]);
17751
+ const [catalogRefreshed, setCatalogRefreshed] = React39.useState(false);
17752
+ const [loading, setLoading] = React39.useState(true);
17753
+ const [hidden, setHidden] = React39.useState(false);
17754
+ const [platformActive, setPlatformActive] = React39.useState(null);
17755
+ const [loadError, setLoadError] = React39.useState(null);
17756
+ const [saving, setSaving] = React39.useState(false);
17757
+ const [saved, setSaved] = React39.useState(false);
17758
+ const [saveError, setSaveError] = React39.useState(null);
17759
+ const [profileName, setProfileName] = React39.useState("");
17760
+ const [requireEmail, setRequireEmail] = React39.useState(false);
17761
+ const [customize, setCustomize] = React39.useState(false);
17762
+ const [selectedProviders, setSelectedProviders] = React39.useState([]);
17763
+ const [authPrimary, setAuthPrimary] = React39.useState("");
17764
+ const [kycPrimary, setKycPrimary] = React39.useState("");
17765
+ const [uxSteps, setUxSteps] = React39.useState({});
17766
+ React39.useEffect(() => {
17744
17767
  let cancelled = false;
17745
17768
  (async () => {
17746
17769
  try {
@@ -17759,7 +17782,7 @@ var OnboardingPolicySection = ({
17759
17782
  cancelled = true;
17760
17783
  };
17761
17784
  }, []);
17762
- const applyResponse = React55.useCallback((p) => {
17785
+ const applyResponse = React39.useCallback((p) => {
17763
17786
  const pol = p.policy;
17764
17787
  setProfileName(p.verification_profile ?? "");
17765
17788
  setRequireEmail(pol?.require_email ?? false);
@@ -17769,8 +17792,8 @@ var OnboardingPolicySection = ({
17769
17792
  setKycPrimary(pol?.kyc_primary ?? "");
17770
17793
  setUxSteps(pol?.ux_steps ?? {});
17771
17794
  }, []);
17772
- const loadGen = React55.useRef(0);
17773
- const load = React55.useCallback(async () => {
17795
+ const loadGen = React39.useRef(0);
17796
+ const load = React39.useCallback(async () => {
17774
17797
  const gen = ++loadGen.current;
17775
17798
  setLoading(true);
17776
17799
  setLoadError(null);
@@ -17793,16 +17816,16 @@ var OnboardingPolicySection = ({
17793
17816
  if (gen === loadGen.current) setLoading(false);
17794
17817
  }
17795
17818
  }, [groupId, applyResponse]);
17796
- React55.useEffect(() => {
17819
+ React39.useEffect(() => {
17797
17820
  setHidden(false);
17798
17821
  setSaved(false);
17799
17822
  setSaveError(null);
17800
17823
  setCatalogRefreshed(false);
17801
17824
  void load();
17802
17825
  }, [load]);
17803
- const [probeRetry, setProbeRetry] = React55.useState(0);
17804
- const probedGroupRef = React55.useRef(null);
17805
- React55.useEffect(() => {
17826
+ const [probeRetry, setProbeRetry] = React39.useState(0);
17827
+ const probedGroupRef = React39.useRef(null);
17828
+ React39.useEffect(() => {
17806
17829
  let cancelled = false;
17807
17830
  if (probedGroupRef.current !== groupId) {
17808
17831
  setPlatformActive(null);
@@ -17817,7 +17840,7 @@ var OnboardingPolicySection = ({
17817
17840
  cancelled = true;
17818
17841
  };
17819
17842
  }, [groupId, sponsorshipEpoch, probeRetry]);
17820
- const markDirty = React55.useCallback(() => {
17843
+ const markDirty = React39.useCallback(() => {
17821
17844
  setSaved(false);
17822
17845
  setSaveError(null);
17823
17846
  }, []);
@@ -17868,7 +17891,7 @@ var OnboardingPolicySection = ({
17868
17891
  return null;
17869
17892
  };
17870
17893
  const anyBlockedToggle = !loading && profileGroups.some((g) => groupVendors(g).some((v) => vendorToggleTarget(g, v) === null));
17871
- React55.useEffect(() => {
17894
+ React39.useEffect(() => {
17872
17895
  if (!anyBlockedToggle || catalogRefreshed) return;
17873
17896
  setCatalogRefreshed(true);
17874
17897
  onboardingPolicyService.listVerificationProfiles().then((v) => setProfiles(v.profiles)).catch(() => {
@@ -17907,7 +17930,7 @@ var OnboardingPolicySection = ({
17907
17930
  ...requireEmail ? [{ label: "Verify email" }] : [],
17908
17931
  ...profileName && identityStepLabel ? [{ label: identityStepLabel, detail: identityStepDetail }] : []
17909
17932
  ];
17910
- const save = React55.useCallback(async () => {
17933
+ const save = React39.useCallback(async () => {
17911
17934
  if (customize && selectedProviders.length === 0) {
17912
17935
  setSaveError("Select at least one sign-in method, or turn customization off.");
17913
17936
  return;
@@ -17987,7 +18010,7 @@ var OnboardingPolicySection = ({
17987
18010
  )
17988
18011
  ] }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
17989
18012
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-2.5 gap-y-1.5 rounded-lg border border-primary/20 bg-primary/[0.04] px-3.5 py-2.5", children: [
17990
- journeySteps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs(React55__default.default.Fragment, { children: [
18013
+ journeySteps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs(React39__default.default.Fragment, { children: [
17991
18014
  i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "text-[12px] text-text-muted/60", children: "\u203A" }),
17992
18015
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5", children: [
17993
18016
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-4 w-4 items-center justify-center rounded-full bg-primary/20 text-[9px] font-bold text-primary", children: i + 1 }),
@@ -18846,7 +18869,7 @@ function formatBigNumberString(value) {
18846
18869
  return { withSeparators, sci: `~${mantissa}e${exp}` };
18847
18870
  }
18848
18871
  function ExpandableString({ value }) {
18849
- const [expanded, setExpanded] = React55.useState(false);
18872
+ const [expanded, setExpanded] = React39.useState(false);
18850
18873
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex flex-wrap items-baseline gap-2", children: [
18851
18874
  expanded ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[10px] text-text-secondary break-all", children: value }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-text-muted", children: [
18852
18875
  "[",
@@ -18932,7 +18955,7 @@ function PrettyObject({
18932
18955
  depth,
18933
18956
  keyHint
18934
18957
  }) {
18935
- const [showEmpty, setShowEmpty] = React55.useState(false);
18958
+ const [showEmpty, setShowEmpty] = React39.useState(false);
18936
18959
  const entries = Object.entries(value);
18937
18960
  const present = entries.filter(([, v]) => !isEmptyValue(v));
18938
18961
  const empty = entries.filter(([, v]) => isEmptyValue(v));
@@ -19020,24 +19043,24 @@ function PrettyJson({
19020
19043
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-text-secondary", children: String(value) });
19021
19044
  }
19022
19045
  function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId, entityType = "user", selectorRegistry, addressLabels, renderSimpleSummary, mode = "sign", onRetry, onSwitchToSign }) {
19023
- const [unsignedTransaction, setUnsignedTransaction] = React55.useState(null);
19024
- const [loading, setLoading] = React55.useState(true);
19025
- const [error, setError] = React55.useState(null);
19026
- const [reviewWarning, setReviewWarning] = React55.useState(null);
19027
- const [signing, setSigning] = React55.useState(false);
19028
- const [selectedKey, setSelectedKey] = React55.useState(null);
19029
- const [availableKeys, setAvailableKeys] = React55.useState([]);
19030
- const [keysLoading, setKeysLoading] = React55.useState(false);
19031
- const [keysError, setKeysError] = React55.useState(null);
19032
- const [policyAuthorizedKeyIds, setPolicyAuthorizedKeyIds] = React55.useState([]);
19033
- const [expandedTxData, setExpandedTxData] = React55.useState(/* @__PURE__ */ new Set());
19034
- const [view, setView] = React55.useState("simple");
19035
- const [cancelling, setCancelling] = React55.useState(false);
19036
- const [cancelError, setCancelError] = React55.useState(null);
19046
+ const [unsignedTransaction, setUnsignedTransaction] = React39.useState(null);
19047
+ const [loading, setLoading] = React39.useState(true);
19048
+ const [error, setError] = React39.useState(null);
19049
+ const [reviewWarning, setReviewWarning] = React39.useState(null);
19050
+ const [signing, setSigning] = React39.useState(false);
19051
+ const [selectedKey, setSelectedKey] = React39.useState(null);
19052
+ const [availableKeys, setAvailableKeys] = React39.useState([]);
19053
+ const [keysLoading, setKeysLoading] = React39.useState(false);
19054
+ const [keysError, setKeysError] = React39.useState(null);
19055
+ const [policyAuthorizedKeyIds, setPolicyAuthorizedKeyIds] = React39.useState([]);
19056
+ const [expandedTxData, setExpandedTxData] = React39.useState(/* @__PURE__ */ new Set());
19057
+ const [view, setView] = React39.useState("simple");
19058
+ const [cancelling, setCancelling] = React39.useState(false);
19059
+ const [cancelError, setCancelError] = React39.useState(null);
19037
19060
  const walletSigner = useWalletSigner();
19038
19061
  const tokenStore = useTokenStore();
19039
19062
  const delegationTokenForSigning = tokenStore.getDelegationToken();
19040
- const ownedSignerState = React55.useMemo(() => {
19063
+ const ownedSignerState = React39.useMemo(() => {
19041
19064
  try {
19042
19065
  return {
19043
19066
  binding: nftOwnedSignerBinding(delegationTokenForSigning),
@@ -19066,7 +19089,7 @@ function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId
19066
19089
  setCancelling(false);
19067
19090
  }
19068
19091
  };
19069
- React55.useEffect(() => {
19092
+ React39.useEffect(() => {
19070
19093
  setError(null);
19071
19094
  setReviewWarning(null);
19072
19095
  setKeysError(null);
@@ -19076,7 +19099,7 @@ function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId
19076
19099
  setKeysError(null);
19077
19100
  };
19078
19101
  }, [message.id]);
19079
- React55.useEffect(() => {
19102
+ React39.useEffect(() => {
19080
19103
  const fetchUnsignedTransaction = async () => {
19081
19104
  try {
19082
19105
  setLoading(true);
@@ -19199,7 +19222,7 @@ function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId
19199
19222
  mode,
19200
19223
  delegationTokenForSigning
19201
19224
  ]);
19202
- React55.useEffect(() => {
19225
+ React39.useEffect(() => {
19203
19226
  if (mode === "inspect") {
19204
19227
  setKeysLoading(false);
19205
19228
  return;
@@ -19264,7 +19287,7 @@ function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId
19264
19287
  ownedSignerBinding,
19265
19288
  ownedSignerState.error
19266
19289
  ]);
19267
- React55.useEffect(() => {
19290
+ React39.useEffect(() => {
19268
19291
  if (mode === "inspect") {
19269
19292
  setPolicyAuthorizedKeyIds([]);
19270
19293
  return;
@@ -19288,7 +19311,7 @@ function SignaturePreviewDrawer({ message, onClose, onSignatureConfirmed, userId
19288
19311
  cancelled = true;
19289
19312
  };
19290
19313
  }, [message?.id, mode]);
19291
- React55.useEffect(() => {
19314
+ React39.useEffect(() => {
19292
19315
  if (availableKeys.length === 0) {
19293
19316
  if (selectedKey) setSelectedKey(null);
19294
19317
  return;
@@ -20106,8 +20129,8 @@ function InspectFooter({
20106
20129
  onRetry,
20107
20130
  onSwitchToSign
20108
20131
  }) {
20109
- const [retrying, setRetrying] = React55.useState(false);
20110
- const [actionError, setActionError] = React55.useState(null);
20132
+ const [retrying, setRetrying] = React39.useState(false);
20133
+ const [actionError, setActionError] = React39.useState(null);
20111
20134
  const status = effectiveStatus(message);
20112
20135
  const color = statusToColor(status);
20113
20136
  const txHash = message.response?.deployment_tx_hash || message.response?.transaction_hash;
@@ -20246,8 +20269,8 @@ var GWEI_DISPLAY_THRESHOLD = BigInt("100000000000000");
20246
20269
  var NATIVE_SYMBOL = "ETH";
20247
20270
  var USD_PER_GAS = 0.01 / 21e3;
20248
20271
  function useGasPricing() {
20249
- const [pricing, setPricing] = React55.useState(null);
20250
- React55.useEffect(() => {
20272
+ const [pricing, setPricing] = React39.useState(null);
20273
+ React39.useEffect(() => {
20251
20274
  let mounted = true;
20252
20275
  void exports.billingService.getGasPricing().then((p) => {
20253
20276
  if (mounted) setPricing(p);
@@ -20381,12 +20404,12 @@ var Toast = ({
20381
20404
  icon,
20382
20405
  action
20383
20406
  }) => {
20384
- const [progress, setProgress] = React55.useState(100);
20385
- const [isVisible, setIsVisible] = React55.useState(false);
20386
- React55.useEffect(() => {
20407
+ const [progress, setProgress] = React39.useState(100);
20408
+ const [isVisible, setIsVisible] = React39.useState(false);
20409
+ React39.useEffect(() => {
20387
20410
  requestAnimationFrame(() => setIsVisible(true));
20388
20411
  }, []);
20389
- React55.useEffect(() => {
20412
+ React39.useEffect(() => {
20390
20413
  if (duration > 0) {
20391
20414
  const interval = setInterval(() => {
20392
20415
  setProgress((prev) => {
@@ -20531,7 +20554,7 @@ function SignatureWorkflow({
20531
20554
  dismissPending,
20532
20555
  refreshPending
20533
20556
  } = useSignatureQueue();
20534
- React55.useEffect(() => {
20557
+ React39.useEffect(() => {
20535
20558
  if (!notify || !pending) return;
20536
20559
  const cleanup = notify({
20537
20560
  id: `signature-${pending.id}`,
@@ -20681,7 +20704,7 @@ async function resolveKey(userId, selection) {
20681
20704
  function useGenericSigner() {
20682
20705
  const { user } = useAuth();
20683
20706
  const { signMessage: signWithWallet } = useWalletSigner();
20684
- const sign = React55.useCallback(
20707
+ const sign = React39.useCallback(
20685
20708
  async (hash32Hex, opts = {}) => {
20686
20709
  if (!user) throw new Error("useGenericSigner: no authenticated user");
20687
20710
  const selection = opts.keySelection ?? { mode: "default" };
@@ -20748,10 +20771,10 @@ function PhoneVerification({
20748
20771
  readOnly = false,
20749
20772
  valueClassName
20750
20773
  }) {
20751
- const [phone, setPhone] = React55.useState(profile.phone_e164 ?? "");
20752
- const [editing, setEditing] = React55.useState(!profile.phone_e164);
20753
- const [saving, setSaving] = React55.useState(false);
20754
- const [error, setError] = React55.useState(null);
20774
+ const [phone, setPhone] = React39.useState(profile.phone_e164 ?? "");
20775
+ const [editing, setEditing] = React39.useState(!profile.phone_e164);
20776
+ const [saving, setSaving] = React39.useState(false);
20777
+ const [error, setError] = React39.useState(null);
20755
20778
  async function save() {
20756
20779
  if (!isValidE164(phone)) {
20757
20780
  setError("Please enter a phone number in E.164 format (e.g. +14155550101).");
@@ -20879,10 +20902,10 @@ function Profile({ classNames: propClassNames } = {}) {
20879
20902
  ...propClassNames ?? {}
20880
20903
  });
20881
20904
  const { isLoading: configLoading } = useProviderConfig();
20882
- const [profile, setProfile] = React55.useState(null);
20883
- const [loading, setLoading] = React55.useState(true);
20884
- const [topError, setTopError] = React55.useState(null);
20885
- React55.useEffect(() => {
20905
+ const [profile, setProfile] = React39.useState(null);
20906
+ const [loading, setLoading] = React39.useState(true);
20907
+ const [topError, setTopError] = React39.useState(null);
20908
+ React39.useEffect(() => {
20886
20909
  let cancelled = false;
20887
20910
  (async () => {
20888
20911
  try {
@@ -20927,13 +20950,13 @@ function Profile({ classNames: propClassNames } = {}) {
20927
20950
  ] });
20928
20951
  }
20929
20952
  var IdentitySection = ({ profile, onSaved, classNames }) => {
20930
- const [displayName, setDisplayName] = React55.useState(
20953
+ const [displayName, setDisplayName] = React39.useState(
20931
20954
  profile.display_name === PLACEHOLDER_DISPLAY_NAME ? "" : profile.display_name
20932
20955
  );
20933
- const [avatarChoice, setAvatarChoice] = React55.useState(profile.avatar_choice);
20934
- const [avatarUrl, setAvatarUrl] = React55.useState(profile.avatar_url);
20935
- const [busy, setBusy] = React55.useState(false);
20936
- const [err, setErr] = React55.useState(null);
20956
+ const [avatarChoice, setAvatarChoice] = React39.useState(profile.avatar_choice);
20957
+ const [avatarUrl, setAvatarUrl] = React39.useState(profile.avatar_url);
20958
+ const [busy, setBusy] = React39.useState(false);
20959
+ const [err, setErr] = React39.useState(null);
20937
20960
  const [saved, flashSaved] = useSavedFlash();
20938
20961
  const dirty = displayName !== (profile.display_name === PLACEHOLDER_DISPLAY_NAME ? "" : profile.display_name) || avatarChoice !== profile.avatar_choice || (avatarUrl ?? "") !== (profile.avatar_url ?? "");
20939
20962
  async function save() {
@@ -21174,12 +21197,12 @@ var SaveButton = ({ onClick, busy, disabled, saved = false, classNames }) => /*
21174
21197
  }
21175
21198
  );
21176
21199
  function useSavedFlash(ms = 1800) {
21177
- const [saved, setSaved] = React55.useState(false);
21178
- const timer = React55__default.default.useRef(null);
21179
- React55.useEffect(() => () => {
21200
+ const [saved, setSaved] = React39.useState(false);
21201
+ const timer = React39__default.default.useRef(null);
21202
+ React39.useEffect(() => () => {
21180
21203
  if (timer.current) clearTimeout(timer.current);
21181
21204
  }, []);
21182
- const flash = React55__default.default.useCallback(() => {
21205
+ const flash = React39__default.default.useCallback(() => {
21183
21206
  setSaved(true);
21184
21207
  if (timer.current) clearTimeout(timer.current);
21185
21208
  timer.current = setTimeout(() => setSaved(false), ms);
@@ -21448,14 +21471,14 @@ function isEoaKey(key) {
21448
21471
  function useKeyBalance(handle, options = {}) {
21449
21472
  const { pollIntervalMs = 15e3, enabled = true } = options;
21450
21473
  const { request } = useWalletSigner();
21451
- const [wei, setWei] = React55.useState(null);
21452
- const [loading, setLoading] = React55.useState(false);
21453
- const [error, setError] = React55.useState(null);
21454
- const requestRef = React55.useRef(request);
21474
+ const [wei, setWei] = React39.useState(null);
21475
+ const [loading, setLoading] = React39.useState(false);
21476
+ const [error, setError] = React39.useState(null);
21477
+ const requestRef = React39.useRef(request);
21455
21478
  requestRef.current = request;
21456
- const handleRef = React55.useRef(handle);
21479
+ const handleRef = React39.useRef(handle);
21457
21480
  handleRef.current = handle;
21458
- const fetchOnce = React55.useCallback(async () => {
21481
+ const fetchOnce = React39.useCallback(async () => {
21459
21482
  const h = handleRef.current;
21460
21483
  if (!h) {
21461
21484
  setWei(null);
@@ -21475,7 +21498,7 @@ function useKeyBalance(handle, options = {}) {
21475
21498
  setLoading(false);
21476
21499
  }
21477
21500
  }, []);
21478
- React55.useEffect(() => {
21501
+ React39.useEffect(() => {
21479
21502
  if (!enabled || !handle) {
21480
21503
  setWei(null);
21481
21504
  setError(null);
@@ -21493,17 +21516,17 @@ function useKeyBalance(handle, options = {}) {
21493
21516
  function useEoaSend(handle, options = {}) {
21494
21517
  const { timeoutMs = 9e4, pollIntervalMs = 3e3, onConfirmed } = options;
21495
21518
  const { sendTransaction, request } = useWalletSigner();
21496
- const [status, setStatus] = React55.useState("idle");
21497
- const [txHash, setTxHash] = React55.useState(null);
21498
- const [error, setError] = React55.useState(null);
21499
- const abortRef = React55.useRef(false);
21500
- const reset = React55.useCallback(() => {
21519
+ const [status, setStatus] = React39.useState("idle");
21520
+ const [txHash, setTxHash] = React39.useState(null);
21521
+ const [error, setError] = React39.useState(null);
21522
+ const abortRef = React39.useRef(false);
21523
+ const reset = React39.useCallback(() => {
21501
21524
  abortRef.current = true;
21502
21525
  setStatus("idle");
21503
21526
  setTxHash(null);
21504
21527
  setError(null);
21505
21528
  }, []);
21506
- const send = React55.useCallback(
21529
+ const send = React39.useCallback(
21507
21530
  async (input) => {
21508
21531
  if (!handle) {
21509
21532
  setError("No EOA selected.");
@@ -21594,14 +21617,14 @@ var SendFromKey = ({
21594
21617
  maxWei,
21595
21618
  onClose
21596
21619
  }) => {
21597
- const [to, setTo] = React55.useState("");
21598
- const [amount, setAmount] = React55.useState("");
21620
+ const [to, setTo] = React39.useState("");
21621
+ const [amount, setAmount] = React39.useState("");
21599
21622
  const { status, txHash, error, send, reset } = useEoaSend(handle, {
21600
21623
  onConfirmed: () => {
21601
21624
  }
21602
21625
  });
21603
21626
  const toValid = ADDRESS_RE2.test(to);
21604
- const amountValid = React55.useMemo(() => {
21627
+ const amountValid = React39.useMemo(() => {
21605
21628
  if (!amount) return false;
21606
21629
  if (!/^\d*\.?\d*$/.test(amount.trim())) return false;
21607
21630
  return Number(amount) > 0;
@@ -21826,7 +21849,7 @@ var KeyBalances = ({
21826
21849
  }) => {
21827
21850
  const configuredClassNames = useWalletConfig().ui?.security;
21828
21851
  const classNames = { ...configuredClassNames ?? {}, ...propClassNames ?? {} };
21829
- const [sendOpen, setSendOpen] = React55.useState(false);
21852
+ const [sendOpen, setSendOpen] = React39.useState(false);
21830
21853
  const { wei, loading, error } = useKeyBalance(handle);
21831
21854
  const formatted = wei === null ? null : formatUnits(wei, 18, 6);
21832
21855
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -21876,13 +21899,13 @@ var ChangePasswordModal = ({
21876
21899
  onClose,
21877
21900
  onChanged
21878
21901
  }) => {
21879
- const [current, setCurrent] = React55.useState("");
21880
- const [next, setNext] = React55.useState("");
21881
- const [confirm, setConfirm] = React55.useState("");
21882
- const [submitting, setSubmitting] = React55.useState(false);
21883
- const [serverError, setServerError] = React55.useState(null);
21884
- const [success, setSuccess] = React55.useState(false);
21885
- const issues = React55.useMemo(() => {
21902
+ const [current, setCurrent] = React39.useState("");
21903
+ const [next, setNext] = React39.useState("");
21904
+ const [confirm, setConfirm] = React39.useState("");
21905
+ const [submitting, setSubmitting] = React39.useState(false);
21906
+ const [serverError, setServerError] = React39.useState(null);
21907
+ const [success, setSuccess] = React39.useState(false);
21908
+ const issues = React39.useMemo(() => {
21886
21909
  const out = [];
21887
21910
  if (!current) out.push({ field: "current", message: "Required." });
21888
21911
  if (!next) {
@@ -22045,7 +22068,7 @@ function PasswordField({
22045
22068
  autoComplete,
22046
22069
  autoFocus
22047
22070
  }) {
22048
- const [reveal, setReveal] = React55.useState(false);
22071
+ const [reveal, setReveal] = React39.useState(false);
22049
22072
  const touched = value.length > 0;
22050
22073
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
22051
22074
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-[10px] uppercase tracking-wide text-text-muted", children: label }),
@@ -22175,32 +22198,32 @@ function SecurityPage() {
22175
22198
  const configuredClassNames = useWalletConfig().ui?.security;
22176
22199
  const classNames = resolveSecurityClasses(configuredClassNames);
22177
22200
  const navigate = useWalletNavigate();
22178
- const [keys, setKeys] = React55.useState([]);
22179
- const [loading, setLoading] = React55.useState(true);
22180
- const [error, setError] = React55.useState(null);
22181
- const [info, setInfo] = React55.useState(null);
22182
- const [showAdvanced, setShowAdvanced] = React55.useState(false);
22183
- const [lockdown, setLockdown] = React55.useState(null);
22184
- const [busy, setBusy] = React55.useState(null);
22185
- const [rotateTarget, setRotateTarget] = React55.useState(null);
22186
- const [rotateNewKind, setRotateNewKind] = React55.useState(null);
22187
- const [rotateStep, setRotateStep] = React55.useState("pick");
22188
- const [rotateNewAddress, setRotateNewAddress] = React55.useState(null);
22189
- const [rotateNewKeyId, setRotateNewKeyId] = React55.useState(null);
22190
- const [rotateAccount, setRotateAccount] = React55.useState(null);
22191
- const [rotateAddStatus, setRotateAddStatus] = React55.useState(null);
22192
- const [rotateOperationMessageId, setRotateOperationMessageId] = React55.useState(null);
22193
- const [passwordModalOpen, setPasswordModalOpen] = React55.useState(false);
22194
- const [editingLabelKeyId, setEditingLabelKeyId] = React55.useState(null);
22195
- const [labelDraft, setLabelDraft] = React55.useState("");
22196
- const [apiKeys, setApiKeys] = React55.useState([]);
22197
- const [apiKeysLoading, setApiKeysLoading] = React55.useState(true);
22198
- const [generateOpen, setGenerateOpen] = React55.useState(false);
22199
- const [generateName, setGenerateName] = React55.useState("");
22200
- const [generateDescription, setGenerateDescription] = React55.useState("");
22201
- const [freshApiKey, setFreshApiKey] = React55.useState(null);
22202
- const [freshApiKeyCopied, setFreshApiKeyCopied] = React55.useState(false);
22203
- const refresh = React55.useCallback(async (opts) => {
22201
+ const [keys, setKeys] = React39.useState([]);
22202
+ const [loading, setLoading] = React39.useState(true);
22203
+ const [error, setError] = React39.useState(null);
22204
+ const [info, setInfo] = React39.useState(null);
22205
+ const [showAdvanced, setShowAdvanced] = React39.useState(false);
22206
+ const [lockdown, setLockdown] = React39.useState(null);
22207
+ const [busy, setBusy] = React39.useState(null);
22208
+ const [rotateTarget, setRotateTarget] = React39.useState(null);
22209
+ const [rotateNewKind, setRotateNewKind] = React39.useState(null);
22210
+ const [rotateStep, setRotateStep] = React39.useState("pick");
22211
+ const [rotateNewAddress, setRotateNewAddress] = React39.useState(null);
22212
+ const [rotateNewKeyId, setRotateNewKeyId] = React39.useState(null);
22213
+ const [rotateAccount, setRotateAccount] = React39.useState(null);
22214
+ const [rotateAddStatus, setRotateAddStatus] = React39.useState(null);
22215
+ const [rotateOperationMessageId, setRotateOperationMessageId] = React39.useState(null);
22216
+ const [passwordModalOpen, setPasswordModalOpen] = React39.useState(false);
22217
+ const [editingLabelKeyId, setEditingLabelKeyId] = React39.useState(null);
22218
+ const [labelDraft, setLabelDraft] = React39.useState("");
22219
+ const [apiKeys, setApiKeys] = React39.useState([]);
22220
+ const [apiKeysLoading, setApiKeysLoading] = React39.useState(true);
22221
+ const [generateOpen, setGenerateOpen] = React39.useState(false);
22222
+ const [generateName, setGenerateName] = React39.useState("");
22223
+ const [generateDescription, setGenerateDescription] = React39.useState("");
22224
+ const [freshApiKey, setFreshApiKey] = React39.useState(null);
22225
+ const [freshApiKeyCopied, setFreshApiKeyCopied] = React39.useState(false);
22226
+ const refresh = React39.useCallback(async (opts) => {
22204
22227
  setError(null);
22205
22228
  try {
22206
22229
  if (opts?.invalidate !== false) invalidateWalletCount();
@@ -22216,10 +22239,10 @@ function SecurityPage() {
22216
22239
  setLoading(false);
22217
22240
  }
22218
22241
  }, []);
22219
- React55.useEffect(() => {
22242
+ React39.useEffect(() => {
22220
22243
  void refresh({ invalidate: false });
22221
22244
  }, [refresh]);
22222
- const refreshApiKeys = React55.useCallback(async () => {
22245
+ const refreshApiKeys = React39.useCallback(async () => {
22223
22246
  try {
22224
22247
  const list = await apiKeysService.list();
22225
22248
  setApiKeys(list);
@@ -22229,7 +22252,7 @@ function SecurityPage() {
22229
22252
  setApiKeysLoading(false);
22230
22253
  }
22231
22254
  }, []);
22232
- React55.useEffect(() => {
22255
+ React39.useEffect(() => {
22233
22256
  refreshApiKeys();
22234
22257
  }, [refreshApiKeys]);
22235
22258
  const userControlledCount = keys.length;
@@ -23513,42 +23536,42 @@ var GroupsView = ({
23513
23536
  clearDelegationToken,
23514
23537
  user
23515
23538
  } = useAuthContext();
23516
- const [busyId, setBusyId] = React55.useState(null);
23517
- const [error, setError] = React55.useState(null);
23518
- const [refreshing, setRefreshing] = React55.useState(false);
23519
- const [creating, setCreating] = React55.useState(false);
23520
- const [createOpen, setCreateOpen] = React55.useState(false);
23521
- const [newGroupName, setNewGroupName] = React55.useState("");
23522
- const [newGroupDescription, setNewGroupDescription] = React55.useState("");
23523
- const [newGroupType, setNewGroupType] = React55.useState("Team");
23524
- const [newGroupLegalEntity, setNewGroupLegalEntity] = React55.useState(false);
23525
- const [selectedGroupId, setSelectedGroupId] = React55.useState(null);
23526
- const [ownedGroups, setOwnedGroups] = React55.useState([]);
23527
- const [ownedGroupsLoading, setOwnedGroupsLoading] = React55.useState(false);
23528
- const [ownedGroupsError, setOwnedGroupsError] = React55.useState(null);
23529
- const [activeOwnedGroup, setActiveOwnedGroup] = React55.useState(null);
23530
- const [operatorKeys, setOperatorKeys] = React55.useState([]);
23531
- const [operatorKeysLoading, setOperatorKeysLoading] = React55.useState(false);
23532
- const [selectedOperatorKeyId, setSelectedOperatorKeyId] = React55.useState("");
23533
- const [relationshipChildGroupId, setRelationshipChildGroupId] = React55.useState("");
23534
- const [relationshipAdvancing, setRelationshipAdvancing] = React55.useState(false);
23535
- const [relationshipProgress, setRelationshipProgress] = React55.useState(null);
23539
+ const [busyId, setBusyId] = React39.useState(null);
23540
+ const [error, setError] = React39.useState(null);
23541
+ const [refreshing, setRefreshing] = React39.useState(false);
23542
+ const [creating, setCreating] = React39.useState(false);
23543
+ const [createOpen, setCreateOpen] = React39.useState(false);
23544
+ const [newGroupName, setNewGroupName] = React39.useState("");
23545
+ const [newGroupDescription, setNewGroupDescription] = React39.useState("");
23546
+ const [newGroupType, setNewGroupType] = React39.useState("Team");
23547
+ const [newGroupLegalEntity, setNewGroupLegalEntity] = React39.useState(false);
23548
+ const [selectedGroupId, setSelectedGroupId] = React39.useState(null);
23549
+ const [ownedGroups, setOwnedGroups] = React39.useState([]);
23550
+ const [ownedGroupsLoading, setOwnedGroupsLoading] = React39.useState(false);
23551
+ const [ownedGroupsError, setOwnedGroupsError] = React39.useState(null);
23552
+ const [activeOwnedGroup, setActiveOwnedGroup] = React39.useState(null);
23553
+ const [operatorKeys, setOperatorKeys] = React39.useState([]);
23554
+ const [operatorKeysLoading, setOperatorKeysLoading] = React39.useState(false);
23555
+ const [selectedOperatorKeyId, setSelectedOperatorKeyId] = React39.useState("");
23556
+ const [relationshipChildGroupId, setRelationshipChildGroupId] = React39.useState("");
23557
+ const [relationshipAdvancing, setRelationshipAdvancing] = React39.useState(false);
23558
+ const [relationshipProgress, setRelationshipProgress] = React39.useState(null);
23536
23559
  const actingAsAnyGroup = !!delegationToken;
23537
- const selectedGroup = React55.useMemo(
23560
+ const selectedGroup = React39.useMemo(
23538
23561
  () => groups.find((group) => group.id === selectedGroupId) ?? null,
23539
23562
  [groups, selectedGroupId]
23540
23563
  );
23541
23564
  const sourceGroupId = delegationSession?.kind === "owned" ? delegationSession.parentGroupId : delegationSession?.currentGroupId ?? null;
23542
- const sourceGroup = React55.useMemo(
23565
+ const sourceGroup = React39.useMemo(
23543
23566
  () => groups.find((group) => group.id === sourceGroupId) ?? null,
23544
23567
  [groups, sourceGroupId]
23545
23568
  );
23546
23569
  const canAdvanceRelationshipAsParent = sourceGroup?.role === "owner";
23547
- React55.useEffect(() => {
23570
+ React39.useEffect(() => {
23548
23571
  setRelationshipChildGroupId("");
23549
23572
  setRelationshipProgress(null);
23550
23573
  }, [delegationSession?.kind, delegationSession?.currentGroupId]);
23551
- React55.useEffect(() => {
23574
+ React39.useEffect(() => {
23552
23575
  let cancelled = false;
23553
23576
  if (!delegationToken || delegationSession?.kind !== "direct") {
23554
23577
  setOwnedGroups([]);
@@ -23576,7 +23599,7 @@ var GroupsView = ({
23576
23599
  cancelled = true;
23577
23600
  };
23578
23601
  }, [delegationSession, delegationToken]);
23579
- React55.useEffect(() => {
23602
+ React39.useEffect(() => {
23580
23603
  let cancelled = false;
23581
23604
  if (delegationSession?.kind !== "direct" || !user?.id) {
23582
23605
  setOperatorKeys([]);
@@ -23613,7 +23636,7 @@ var GroupsView = ({
23613
23636
  cancelled = true;
23614
23637
  };
23615
23638
  }, [delegationSession, user?.id]);
23616
- React55.useEffect(() => {
23639
+ React39.useEffect(() => {
23617
23640
  let cancelled = false;
23618
23641
  if (!delegationToken || delegationSession?.kind !== "owned") {
23619
23642
  setActiveOwnedGroup(null);
@@ -24363,22 +24386,22 @@ function GroupDetailView({
24363
24386
  onOpenBilling,
24364
24387
  onRefreshed
24365
24388
  }) {
24366
- const [details, setDetails] = React55.useState(group);
24367
- const [accountStatus, setAccountStatus] = React55.useState(null);
24368
- const [members, setMembers] = React55.useState([]);
24369
- const [loading, setLoading] = React55.useState(true);
24370
- const [membersLoading, setMembersLoading] = React55.useState(true);
24371
- const [error, setError] = React55.useState(null);
24372
- const [showAddMember, setShowAddMember] = React55.useState(false);
24373
- const [newMemberId, setNewMemberId] = React55.useState("");
24374
- const [newMemberRole, setNewMemberRole] = React55.useState("member");
24375
- const [editingMemberId, setEditingMemberId] = React55.useState(null);
24376
- const [editingRole, setEditingRole] = React55.useState("member");
24377
- const [submitting, setSubmitting] = React55.useState(false);
24378
- const [deploying, setDeploying] = React55.useState(false);
24389
+ const [details, setDetails] = React39.useState(group);
24390
+ const [accountStatus, setAccountStatus] = React39.useState(null);
24391
+ const [members, setMembers] = React39.useState([]);
24392
+ const [loading, setLoading] = React39.useState(true);
24393
+ const [membersLoading, setMembersLoading] = React39.useState(true);
24394
+ const [error, setError] = React39.useState(null);
24395
+ const [showAddMember, setShowAddMember] = React39.useState(false);
24396
+ const [newMemberId, setNewMemberId] = React39.useState("");
24397
+ const [newMemberRole, setNewMemberRole] = React39.useState("member");
24398
+ const [editingMemberId, setEditingMemberId] = React39.useState(null);
24399
+ const [editingRole, setEditingRole] = React39.useState("member");
24400
+ const [submitting, setSubmitting] = React39.useState(false);
24401
+ const [deploying, setDeploying] = React39.useState(false);
24379
24402
  const role = details.role ?? group.role ?? "member";
24380
24403
  const canManageMembers = role === "owner" || role === "admin";
24381
- const loadDetails = React55.useCallback(async () => {
24404
+ const loadDetails = React39.useCallback(async () => {
24382
24405
  setLoading(true);
24383
24406
  setMembersLoading(true);
24384
24407
  setError(null);
@@ -24398,7 +24421,7 @@ function GroupDetailView({
24398
24421
  setMembersLoading(false);
24399
24422
  }
24400
24423
  }, [group]);
24401
- React55.useEffect(() => {
24424
+ React39.useEffect(() => {
24402
24425
  setDetails(group);
24403
24426
  void loadDetails();
24404
24427
  }, [group, loadDetails]);
@@ -24932,17 +24955,17 @@ function ActiveEnvironmentBadge({
24932
24955
  configuredTestChains
24933
24956
  );
24934
24957
  const canChoose = Boolean(activeChainId && options.length > 1);
24935
- const [busyChainId, setBusyChainId] = React55__default.default.useState(null);
24936
- const [pendingLiveChainId, setPendingLiveChainId] = React55__default.default.useState(null);
24937
- const [error, setError] = React55__default.default.useState(null);
24938
- const switchingRef = React55__default.default.useRef(false);
24939
- const confirmLiveRef = React55__default.default.useRef(null);
24940
- const liveWarningId = React55__default.default.useId();
24958
+ const [busyChainId, setBusyChainId] = React39__default.default.useState(null);
24959
+ const [pendingLiveChainId, setPendingLiveChainId] = React39__default.default.useState(null);
24960
+ const [error, setError] = React39__default.default.useState(null);
24961
+ const switchingRef = React39__default.default.useRef(false);
24962
+ const confirmLiveRef = React39__default.default.useRef(null);
24963
+ const liveWarningId = React39__default.default.useId();
24941
24964
  const label = modeLabel(environment.mode);
24942
24965
  const modeCounts = { test: 0, live: 0, unknown: 0 };
24943
24966
  for (const option of options) modeCounts[option.mode] += 1;
24944
24967
  const pendingLive = options.find((option) => option.chainId === pendingLiveChainId) ?? null;
24945
- React55__default.default.useEffect(() => {
24968
+ React39__default.default.useEffect(() => {
24946
24969
  if (pendingLiveChainId) confirmLiveRef.current?.focus();
24947
24970
  }, [pendingLiveChainId]);
24948
24971
  async function switchTo(option) {
@@ -25213,26 +25236,26 @@ var WalletCenterSurface = ({
25213
25236
  } = useAuthContext();
25214
25237
  const walletConfig = useWalletConfig();
25215
25238
  const walletCenterUi = walletConfig.ui?.walletCenter;
25216
- const [section, setSection] = React55.useState("menu");
25217
- const [historyFilter, setHistoryFilter] = React55.useState("all");
25218
- const [historyItems, setHistoryItems] = React55.useState([]);
25219
- const [historyOffset, setHistoryOffset] = React55.useState(0);
25220
- const [historyHasMore, setHistoryHasMore] = React55.useState(false);
25221
- const [historyLoading, setHistoryLoading] = React55.useState(false);
25222
- const [historyError, setHistoryError] = React55.useState(null);
25223
- const [historyLoadedOnce, setHistoryLoadedOnce] = React55.useState(false);
25224
- const [selected, setSelected] = React55.useState(null);
25225
- const [selectedSource, setSelectedSource] = React55.useState("pending");
25226
- const [busyId, setBusyId] = React55.useState(null);
25227
- const [actionError, setActionError] = React55.useState(null);
25228
- const cancelGuardRef = React55.useRef(/* @__PURE__ */ new Map());
25229
- const wasOpenRef = React55.useRef(false);
25230
- const walletRootRef = React55.useRef(null);
25231
- const leaveSection = React55.useCallback(() => {
25239
+ const [section, setSection] = React39.useState("menu");
25240
+ const [historyFilter, setHistoryFilter] = React39.useState("all");
25241
+ const [historyItems, setHistoryItems] = React39.useState([]);
25242
+ const [historyOffset, setHistoryOffset] = React39.useState(0);
25243
+ const [historyHasMore, setHistoryHasMore] = React39.useState(false);
25244
+ const [historyLoading, setHistoryLoading] = React39.useState(false);
25245
+ const [historyError, setHistoryError] = React39.useState(null);
25246
+ const [historyLoadedOnce, setHistoryLoadedOnce] = React39.useState(false);
25247
+ const [selected, setSelected] = React39.useState(null);
25248
+ const [selectedSource, setSelectedSource] = React39.useState("pending");
25249
+ const [busyId, setBusyId] = React39.useState(null);
25250
+ const [actionError, setActionError] = React39.useState(null);
25251
+ const cancelGuardRef = React39.useRef(/* @__PURE__ */ new Map());
25252
+ const wasOpenRef = React39.useRef(false);
25253
+ const walletRootRef = React39.useRef(null);
25254
+ const leaveSection = React39.useCallback(() => {
25232
25255
  if (embedded && initialView !== "menu") onClose();
25233
25256
  else setSection("menu");
25234
25257
  }, [embedded, initialView, onClose]);
25235
- React55.useEffect(() => {
25258
+ React39.useEffect(() => {
25236
25259
  const justOpened = isOpen && !wasOpenRef.current;
25237
25260
  wasOpenRef.current = isOpen;
25238
25261
  if (!justOpened) return;
@@ -25246,24 +25269,24 @@ var WalletCenterSurface = ({
25246
25269
  setHistoryHasMore(false);
25247
25270
  setHistoryLoadedOnce(false);
25248
25271
  }, [initialView, isOpen, refreshPending]);
25249
- React55.useEffect(() => {
25272
+ React39.useEffect(() => {
25250
25273
  if (!isOpen) return;
25251
25274
  if (activeBuiltinFor(section, modules) === "transactions" && pendingList.length === 0) {
25252
25275
  leaveSection();
25253
25276
  }
25254
25277
  }, [isOpen, leaveSection, modules, pendingList.length, section]);
25255
- const delegatedGroupId = React55.useMemo(() => {
25278
+ const delegatedGroupId = React39.useMemo(() => {
25256
25279
  if (!delegationToken || typeof window === "undefined") return null;
25257
25280
  return window.localStorage.getItem("delegation_group_id");
25258
25281
  }, [delegationToken]);
25259
- const configuredModules = React55.useMemo(() => {
25282
+ const configuredModules = React39.useMemo(() => {
25260
25283
  return validateWalletCenterModules(modules ?? defaultWalletCenterModules());
25261
25284
  }, [modules]);
25262
- const runtime = React55.useMemo(
25285
+ const runtime = React39.useMemo(
25263
25286
  () => ({ pendingCount: pendingList.length, isAuthenticated: !!user }),
25264
25287
  [pendingList.length, user]
25265
25288
  );
25266
- const visibleModules = React55.useMemo(
25289
+ const visibleModules = React39.useMemo(
25267
25290
  () => configuredModules.filter((module) => {
25268
25291
  if (module.kind === "builtin" && module.builtin === "transactions" && pendingList.length === 0) {
25269
25292
  return false;
@@ -25272,16 +25295,16 @@ var WalletCenterSurface = ({
25272
25295
  }),
25273
25296
  [configuredModules, pendingList.length, runtime]
25274
25297
  );
25275
- const activeModule = React55.useMemo(
25298
+ const activeModule = React39.useMemo(
25276
25299
  () => configuredModules.find((module) => module.id === section) ?? null,
25277
25300
  [configuredModules, section]
25278
25301
  );
25279
25302
  const activeBuiltin = activeModule?.kind === "builtin" ? activeModule.builtin : null;
25280
- const menuItems = React55.useMemo(
25303
+ const menuItems = React39.useMemo(
25281
25304
  () => buildWalletMenuItems(visibleModules, runtime, groups.length),
25282
25305
  [groups.length, runtime, visibleModules]
25283
25306
  );
25284
- React55.useEffect(() => {
25307
+ React39.useEffect(() => {
25285
25308
  if (!isOpen) return;
25286
25309
  const onVis = () => {
25287
25310
  if (document.visibilityState === "visible") {
@@ -25291,11 +25314,11 @@ var WalletCenterSurface = ({
25291
25314
  document.addEventListener("visibilitychange", onVis);
25292
25315
  return () => document.removeEventListener("visibilitychange", onVis);
25293
25316
  }, [isOpen, refreshPending]);
25294
- React55.useEffect(() => {
25317
+ React39.useEffect(() => {
25295
25318
  const scrollContainer = walletRootRef.current?.parentElement;
25296
25319
  if (scrollContainer) scrollContainer.scrollTop = 0;
25297
25320
  }, [section, selected]);
25298
- const fetchHistory = React55.useCallback(
25321
+ const fetchHistory = React39.useCallback(
25299
25322
  async (offset, append) => {
25300
25323
  setHistoryLoading(true);
25301
25324
  setHistoryError(null);
@@ -25318,7 +25341,7 @@ var WalletCenterSurface = ({
25318
25341
  },
25319
25342
  [userId]
25320
25343
  );
25321
- React55.useEffect(() => {
25344
+ React39.useEffect(() => {
25322
25345
  if (!isOpen) return;
25323
25346
  if (activeBuiltin !== "history") return;
25324
25347
  if (historyLoadedOnce) return;
@@ -25333,7 +25356,7 @@ var WalletCenterSurface = ({
25333
25356
  if (historyItems.length >= HISTORY_MAX_ITEMS) return;
25334
25357
  void fetchHistory(historyOffset, true);
25335
25358
  };
25336
- const filteredHistoryItems = React55.useMemo(() => {
25359
+ const filteredHistoryItems = React39.useMemo(() => {
25337
25360
  if (historyFilter === "all") return historyItems;
25338
25361
  const want = historyFilter === "Completed" /* Completed */ ? /* @__PURE__ */ new Set(["completed", "success"]) : historyFilter === "Failed" /* Failed */ ? /* @__PURE__ */ new Set(["failed", "error"]) : /* @__PURE__ */ new Set(["canceled", "cancelled"]);
25339
25362
  return historyItems.filter(
@@ -25406,7 +25429,7 @@ var WalletCenterSurface = ({
25406
25429
  setActionError(e?.message ?? "Failed to retry message.");
25407
25430
  }
25408
25431
  };
25409
- const handleMenuActAsSelf = React55.useCallback(async () => {
25432
+ const handleMenuActAsSelf = React39.useCallback(async () => {
25410
25433
  setActionError(null);
25411
25434
  try {
25412
25435
  clearDelegationToken();
@@ -25414,7 +25437,7 @@ var WalletCenterSurface = ({
25414
25437
  setActionError(e?.message ?? "Failed to switch entity.");
25415
25438
  }
25416
25439
  }, [clearDelegationToken]);
25417
- const handleMenuActAsGroup = React55.useCallback(
25440
+ const handleMenuActAsGroup = React39.useCallback(
25418
25441
  async (group) => {
25419
25442
  setActionError(null);
25420
25443
  try {
@@ -25425,7 +25448,7 @@ var WalletCenterSurface = ({
25425
25448
  },
25426
25449
  [createDelegationToken]
25427
25450
  );
25428
- const handleSignOut = React55.useCallback(async () => {
25451
+ const handleSignOut = React39.useCallback(async () => {
25429
25452
  setActionError(null);
25430
25453
  try {
25431
25454
  await logout();
@@ -25439,7 +25462,7 @@ var WalletCenterSurface = ({
25439
25462
  setActionError(e?.message ?? "Failed to sign out.");
25440
25463
  }
25441
25464
  }, [logout, onClose, walletConfig]);
25442
- const navigateFromCenter = React55.useCallback(
25465
+ const navigateFromCenter = React39.useCallback(
25443
25466
  (href, options) => {
25444
25467
  if (walletConfig.onNavigate) {
25445
25468
  walletConfig.onNavigate(href, options);
@@ -25450,7 +25473,7 @@ var WalletCenterSurface = ({
25450
25473
  },
25451
25474
  [walletConfig]
25452
25475
  );
25453
- const panelContext = React55.useMemo(
25476
+ const panelContext = React39.useMemo(
25454
25477
  () => ({
25455
25478
  close: onClose,
25456
25479
  back: () => setSection("menu"),
@@ -25461,7 +25484,7 @@ var WalletCenterSurface = ({
25461
25484
  }),
25462
25485
  [navigateFromCenter, onClose]
25463
25486
  );
25464
- const resolvedActors = React55.useMemo(() => {
25487
+ const resolvedActors = React39.useMemo(() => {
25465
25488
  if (actors) return actors;
25466
25489
  return [
25467
25490
  {
@@ -25488,7 +25511,7 @@ var WalletCenterSurface = ({
25488
25511
  status: identity?.status ?? { label: "Online", color: "#4ade80" },
25489
25512
  actions: identity?.actions ?? []
25490
25513
  };
25491
- const handleSelectModule = React55.useCallback(
25514
+ const handleSelectModule = React39.useCallback(
25492
25515
  (module) => {
25493
25516
  setActionError(null);
25494
25517
  if (module.kind === "route") {
@@ -25500,7 +25523,7 @@ var WalletCenterSurface = ({
25500
25523
  },
25501
25524
  [navigateFromCenter, onClose]
25502
25525
  );
25503
- const handleSelectActor = React55.useCallback(async (actor) => {
25526
+ const handleSelectActor = React39.useCallback(async (actor) => {
25504
25527
  setActionError(null);
25505
25528
  try {
25506
25529
  await actor.onSelect();
@@ -25509,7 +25532,7 @@ var WalletCenterSurface = ({
25509
25532
  setActionError(error?.message ?? "Failed to switch signing context.");
25510
25533
  }
25511
25534
  }, [leaveSection]);
25512
- const drawerTitle = React55.useMemo(() => {
25535
+ const drawerTitle = React39.useMemo(() => {
25513
25536
  if (selected) {
25514
25537
  const label = humanizeMessageType(selected.data?.message_type);
25515
25538
  return selectedSource === "pending" ? `${label} \u2014 Sign` : label;
@@ -25517,7 +25540,7 @@ var WalletCenterSurface = ({
25517
25540
  return "Wallet";
25518
25541
  }, [selected, selectedSource]);
25519
25542
  const hostedTitle = !embedded ? null : selected ? drawerTitle : section === "actors" ? "Signing context" : activeModule?.label ?? null;
25520
- React55.useEffect(() => {
25543
+ React39.useEffect(() => {
25521
25544
  if (!embedded) return void 0;
25522
25545
  onTitle?.(hostedTitle);
25523
25546
  return () => onTitle?.(null);
@@ -25702,7 +25725,7 @@ function WalletMenu({
25702
25725
  const secondaryItems = items.filter((item) => item.placement === "secondary");
25703
25726
  const activeActor = actors.find((actor) => actor.active) ?? actors[0];
25704
25727
  const userName = identity.name ?? "You";
25705
- const renderCard = (cardItems) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-[24px] border border-border-light bg-raised shadow-sm", children: cardItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(React55__default.default.Fragment, { children: [
25728
+ const renderCard = (cardItems) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-[24px] border border-border-light bg-raised shadow-sm", children: cardItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(React39__default.default.Fragment, { children: [
25706
25729
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 border-t border-border-light" }),
25707
25730
  /* @__PURE__ */ jsxRuntime.jsx(
25708
25731
  WalletMenuRow,
@@ -25946,13 +25969,13 @@ function ActorsPane({
25946
25969
  error,
25947
25970
  onSelect
25948
25971
  }) {
25949
- const [busyId, setBusyId] = React55.useState(null);
25972
+ const [busyId, setBusyId] = React39.useState(null);
25950
25973
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 p-3", children: [
25951
25974
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-[11px] leading-5 text-text-muted", children: "Choose the identity used for signing and entity-owned actions." }),
25952
25975
  error && /* @__PURE__ */ jsxRuntime.jsx(ErrorBanner, { children: error }),
25953
25976
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-[22px] border border-border-light bg-raised", children: actors.map((actor, index) => {
25954
25977
  const ActorIcon = actor.icon;
25955
- return /* @__PURE__ */ jsxRuntime.jsxs(React55__default.default.Fragment, { children: [
25978
+ return /* @__PURE__ */ jsxRuntime.jsxs(React39__default.default.Fragment, { children: [
25956
25979
  index > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-4 border-t border-border-light" }),
25957
25980
  /* @__PURE__ */ jsxRuntime.jsxs(
25958
25981
  "button",
@@ -25987,10 +26010,10 @@ function DirectoryPane({
25987
26010
  module,
25988
26011
  context
25989
26012
  }) {
25990
- const [query, setQuery] = React55.useState("");
26013
+ const [query, setQuery] = React39.useState("");
25991
26014
  const isMobile = useWalletCenterMobile();
25992
26015
  const normalizedQuery = normalizeSearchText(query);
25993
- const visibleGroups = React55.useMemo(
26016
+ const visibleGroups = React39.useMemo(
25994
26017
  () => module.groups.filter((group) => {
25995
26018
  if (!group.visibility || group.visibility === "always") return true;
25996
26019
  return group.visibility === (isMobile ? "mobile" : "desktop");
@@ -26091,10 +26114,10 @@ function normalizeSearchText(value) {
26091
26114
  return value.normalize("NFD").replace(/[\u0300-\u036f]/g, "").trim().toLocaleLowerCase();
26092
26115
  }
26093
26116
  function useWalletCenterMobile() {
26094
- const [isMobile, setIsMobile] = React55.useState(
26117
+ const [isMobile, setIsMobile] = React39.useState(
26095
26118
  () => typeof window !== "undefined" && window.matchMedia("(max-width: 639px)").matches
26096
26119
  );
26097
- React55.useEffect(() => {
26120
+ React39.useEffect(() => {
26098
26121
  if (typeof window === "undefined") return;
26099
26122
  const media = window.matchMedia("(max-width: 639px)");
26100
26123
  const update = () => setIsMobile(media.matches);
@@ -26634,10 +26657,10 @@ function messageText(content) {
26634
26657
  return JSON.stringify(content, null, 2);
26635
26658
  }
26636
26659
  var PromptTranscript = ({ usageEventId }) => {
26637
- const [log, setLog] = React55.useState(null);
26638
- const [note, setNote] = React55.useState(null);
26639
- const [loading, setLoading] = React55.useState(true);
26640
- React55.useEffect(() => {
26660
+ const [log, setLog] = React39.useState(null);
26661
+ const [note, setNote] = React39.useState(null);
26662
+ const [loading, setLoading] = React39.useState(true);
26663
+ React39.useEffect(() => {
26641
26664
  let cancelled = false;
26642
26665
  const base = getAgentsServiceUrl();
26643
26666
  setLoading(true);
@@ -26802,13 +26825,13 @@ var LineItemsTable = ({
26802
26825
  caption,
26803
26826
  showActor
26804
26827
  }) => {
26805
- const [selected, setSelected] = React55.useState(null);
26806
- const [gasPricing, setGasPricing] = React55.useState(null);
26828
+ const [selected, setSelected] = React39.useState(null);
26829
+ const [gasPricing, setGasPricing] = React39.useState(null);
26807
26830
  const minuteRate = gasPricing?.agent_minute_usd ?? 0;
26808
- React55.useEffect(() => {
26831
+ React39.useEffect(() => {
26809
26832
  void exports.billingService.getGasPricing().then(setGasPricing);
26810
26833
  }, []);
26811
- const columns = React55.useMemo(
26834
+ const columns = React39.useMemo(
26812
26835
  () => [
26813
26836
  {
26814
26837
  header: "When",
@@ -27067,12 +27090,12 @@ var BuyCreditsDialog = ({
27067
27090
  source = "manual",
27068
27091
  reason
27069
27092
  }) => {
27070
- const [stage, setStage] = React55.useState({ kind: "loading" });
27071
- const [attempt, setAttempt] = React55.useState(0);
27093
+ const [stage, setStage] = React39.useState({ kind: "loading" });
27094
+ const [attempt, setAttempt] = React39.useState(0);
27072
27095
  const activeGate = creditGateInfoForActiveToken();
27073
27096
  const effectiveReason = reason ?? activeGate.reason ?? void 0;
27074
27097
  const effectiveGroupId = resolveBuyCreditsTargetGroupId(target, activeGate);
27075
- React55.useEffect(() => {
27098
+ React39.useEffect(() => {
27076
27099
  if (!isOpen) return;
27077
27100
  let cancelled = false;
27078
27101
  setStage({ kind: "loading" });
@@ -27111,7 +27134,7 @@ var BuyCreditsDialog = ({
27111
27134
  cancelled = true;
27112
27135
  };
27113
27136
  }, [isOpen, effectiveGroupId, effectiveReason, target.kind, attempt]);
27114
- const redirectTo = React55.useCallback(
27137
+ const redirectTo = React39.useCallback(
27115
27138
  async (open) => {
27116
27139
  setStage({ kind: "redirecting" });
27117
27140
  try {
@@ -27130,7 +27153,7 @@ var BuyCreditsDialog = ({
27130
27153
  },
27131
27154
  [effectiveGroupId]
27132
27155
  );
27133
- const buyPlan = React55.useCallback(
27156
+ const buyPlan = React39.useCallback(
27134
27157
  (planId) => {
27135
27158
  const { successUrl, cancelUrl } = buildCreditCheckoutReturnUrls({
27136
27159
  kind: "plan",
@@ -27147,7 +27170,7 @@ var BuyCreditsDialog = ({
27147
27170
  },
27148
27171
  [redirectTo, effectiveGroupId]
27149
27172
  );
27150
- const buyTopup = React55.useCallback(
27173
+ const buyTopup = React39.useCallback(
27151
27174
  (topupId) => {
27152
27175
  const { successUrl, cancelUrl } = buildCreditCheckoutReturnUrls({
27153
27176
  kind: "topup",
@@ -27324,11 +27347,11 @@ var shareKindLabel = (share) => {
27324
27347
  return KIND_LABELS[kind] ?? (share.entry_kind === "clawback" ? "Adjustment" : "Earnings");
27325
27348
  };
27326
27349
  var EarningsSection = ({ dense = false }) => {
27327
- const [summary, setSummary] = React55.useState(null);
27328
- const [loaded, setLoaded] = React55.useState(false);
27329
- const [connectBusy, setConnectBusy] = React55.useState(false);
27330
- const [error, setError] = React55.useState(null);
27331
- const load = React55.useCallback(async () => {
27350
+ const [summary, setSummary] = React39.useState(null);
27351
+ const [loaded, setLoaded] = React39.useState(false);
27352
+ const [connectBusy, setConnectBusy] = React39.useState(false);
27353
+ const [error, setError] = React39.useState(null);
27354
+ const load = React39.useCallback(async () => {
27332
27355
  try {
27333
27356
  const s = await exports.billingService.getMyEarnings();
27334
27357
  setSummary(s);
@@ -27338,10 +27361,10 @@ var EarningsSection = ({ dense = false }) => {
27338
27361
  setLoaded(true);
27339
27362
  }
27340
27363
  }, []);
27341
- React55.useEffect(() => {
27364
+ React39.useEffect(() => {
27342
27365
  void load();
27343
27366
  }, [load]);
27344
- const openConnectOnboarding = React55.useCallback(async () => {
27367
+ const openConnectOnboarding = React39.useCallback(async () => {
27345
27368
  setConnectBusy(true);
27346
27369
  setError(null);
27347
27370
  try {
@@ -27453,10 +27476,10 @@ var EarningsSection = ({ dense = false }) => {
27453
27476
  init_billingService();
27454
27477
  init_creditCheckoutReturn();
27455
27478
  var GroupBillingSection = ({ groupId }) => {
27456
- const [summary, setSummary] = React55.useState(null);
27457
- const [portalBusy, setPortalBusy] = React55.useState(false);
27458
- const [portalError, setPortalError] = React55.useState(null);
27459
- const openGroupPortal = React55.useCallback(async () => {
27479
+ const [summary, setSummary] = React39.useState(null);
27480
+ const [portalBusy, setPortalBusy] = React39.useState(false);
27481
+ const [portalError, setPortalError] = React39.useState(null);
27482
+ const openGroupPortal = React39.useCallback(async () => {
27460
27483
  setPortalBusy(true);
27461
27484
  setPortalError(null);
27462
27485
  try {
@@ -27472,21 +27495,21 @@ var GroupBillingSection = ({ groupId }) => {
27472
27495
  setPortalBusy(false);
27473
27496
  }
27474
27497
  }, [groupId]);
27475
- const [pricing, setPricing] = React55.useState(null);
27476
- const [items, setItems] = React55.useState([]);
27477
- const [hasMore, setHasMore] = React55.useState(false);
27478
- const [moreBusy, setMoreBusy] = React55.useState(false);
27479
- const [loading, setLoading] = React55.useState(true);
27480
- const [hidden, setHidden] = React55.useState(false);
27481
- const [addCardOpen, setAddCardOpen] = React55.useState(false);
27482
- const [buyCreditsOpen, setBuyCreditsOpen] = React55.useState(false);
27483
- const [earnings, setEarnings] = React55.useState(null);
27484
- const [reactivating, setReactivating] = React55.useState(false);
27485
- const [reactivationError, setReactivationError] = React55.useState(null);
27486
- React55.useEffect(() => {
27498
+ const [pricing, setPricing] = React39.useState(null);
27499
+ const [items, setItems] = React39.useState([]);
27500
+ const [hasMore, setHasMore] = React39.useState(false);
27501
+ const [moreBusy, setMoreBusy] = React39.useState(false);
27502
+ const [loading, setLoading] = React39.useState(true);
27503
+ const [hidden, setHidden] = React39.useState(false);
27504
+ const [addCardOpen, setAddCardOpen] = React39.useState(false);
27505
+ const [buyCreditsOpen, setBuyCreditsOpen] = React39.useState(false);
27506
+ const [earnings, setEarnings] = React39.useState(null);
27507
+ const [reactivating, setReactivating] = React39.useState(false);
27508
+ const [reactivationError, setReactivationError] = React39.useState(null);
27509
+ React39.useEffect(() => {
27487
27510
  void exports.billingService.getGasPricing().then(setPricing);
27488
27511
  }, []);
27489
- React55.useEffect(() => {
27512
+ React39.useEffect(() => {
27490
27513
  let cancelled = false;
27491
27514
  exports.billingService.getGroupEarnings(groupId).then((e) => {
27492
27515
  if (!cancelled) setEarnings(e);
@@ -27496,7 +27519,7 @@ var GroupBillingSection = ({ groupId }) => {
27496
27519
  cancelled = true;
27497
27520
  };
27498
27521
  }, [groupId]);
27499
- const load = React55.useCallback(async () => {
27522
+ const load = React39.useCallback(async () => {
27500
27523
  setLoading(true);
27501
27524
  try {
27502
27525
  const s = await exports.billingService.getGroupBilling(groupId);
@@ -27509,10 +27532,10 @@ var GroupBillingSection = ({ groupId }) => {
27509
27532
  setLoading(false);
27510
27533
  }
27511
27534
  }, [groupId]);
27512
- React55.useEffect(() => {
27535
+ React39.useEffect(() => {
27513
27536
  void load();
27514
27537
  }, [load]);
27515
- React55.useEffect(() => {
27538
+ React39.useEffect(() => {
27516
27539
  const reloadMatchingGroup = (event) => {
27517
27540
  const detail = event.detail;
27518
27541
  if (detail?.groupId === groupId) void load();
@@ -27520,7 +27543,7 @@ var GroupBillingSection = ({ groupId }) => {
27520
27543
  window.addEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, reloadMatchingGroup);
27521
27544
  return () => window.removeEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, reloadMatchingGroup);
27522
27545
  }, [groupId, load]);
27523
- const loadMore = React55.useCallback(async () => {
27546
+ const loadMore = React39.useCallback(async () => {
27524
27547
  const last = items[items.length - 1];
27525
27548
  if (!last || moreBusy) return;
27526
27549
  setMoreBusy(true);
@@ -27537,7 +27560,7 @@ var GroupBillingSection = ({ groupId }) => {
27537
27560
  setMoreBusy(false);
27538
27561
  }
27539
27562
  }, [groupId, items, moreBusy]);
27540
- const reactivate = React55.useCallback(async () => {
27563
+ const reactivate = React39.useCallback(async () => {
27541
27564
  setReactivating(true);
27542
27565
  setReactivationError(null);
27543
27566
  try {
@@ -27756,8 +27779,8 @@ var SeriesLine = ({
27756
27779
  formatUsdMicros(Math.round(usd2 * 1e6))
27757
27780
  ] });
27758
27781
  var DailySpendChart = ({ summary }) => {
27759
- const [hovered, setHovered] = React55.useState(null);
27760
- const rows = React55.useMemo(() => {
27782
+ const [hovered, setHovered] = React39.useState(null);
27783
+ const rows = React39.useMemo(() => {
27761
27784
  const byDay = /* @__PURE__ */ new Map();
27762
27785
  for (const p of summary.daily ?? []) {
27763
27786
  const parsed = new Date(p.day);
@@ -27865,7 +27888,7 @@ var BTN = "inline-flex h-8 shrink-0 items-center rounded-md border border-border
27865
27888
  var BTN_STRONG = "inline-flex h-8 shrink-0 items-center rounded-md border border-border-default bg-surface px-3 text-[12px] font-medium text-text-primary transition-colors hover:bg-raised-hover disabled:cursor-not-allowed disabled:opacity-50";
27866
27889
  var METER_TRACK = "h-1 overflow-hidden rounded-full bg-raised";
27867
27890
  var BreakdownCard = ({ title, rows, color, minuteRate, labelFor: labelFor2, countNoun }) => {
27868
- const displayRows = React55.useMemo(() => {
27891
+ const displayRows = React39.useMemo(() => {
27869
27892
  if (!labelFor2) return rows;
27870
27893
  const merged = /* @__PURE__ */ new Map();
27871
27894
  for (const r of rows) {
@@ -27928,21 +27951,21 @@ var Banner = ({
27928
27951
  );
27929
27952
  };
27930
27953
  var BillingCenter = ({ dense = false }) => {
27931
- const [summary, setSummary] = React55.useState(null);
27932
- const [pricing, setPricing] = React55.useState(null);
27933
- const [items, setItems] = React55.useState([]);
27934
- const [hasMore, setHasMore] = React55.useState(false);
27935
- const [moreBusy, setMoreBusy] = React55.useState(false);
27936
- const [expandedGroup, setExpandedGroup] = React55.useState(null);
27937
- const [notConfigured, setNotConfigured] = React55.useState(false);
27938
- const [loading, setLoading] = React55.useState(true);
27939
- const [loadError, setLoadError] = React55.useState(null);
27940
- const [portalBusy, setPortalBusy] = React55.useState(false);
27941
- const [portalError, setPortalError] = React55.useState(null);
27942
- const [reactivating, setReactivating] = React55.useState(false);
27943
- const [addCardOpen, setAddCardOpen] = React55.useState(false);
27944
- const [buyCreditsOpen, setBuyCreditsOpen] = React55.useState(false);
27945
- const load = React55.useCallback(async () => {
27954
+ const [summary, setSummary] = React39.useState(null);
27955
+ const [pricing, setPricing] = React39.useState(null);
27956
+ const [items, setItems] = React39.useState([]);
27957
+ const [hasMore, setHasMore] = React39.useState(false);
27958
+ const [moreBusy, setMoreBusy] = React39.useState(false);
27959
+ const [expandedGroup, setExpandedGroup] = React39.useState(null);
27960
+ const [notConfigured, setNotConfigured] = React39.useState(false);
27961
+ const [loading, setLoading] = React39.useState(true);
27962
+ const [loadError, setLoadError] = React39.useState(null);
27963
+ const [portalBusy, setPortalBusy] = React39.useState(false);
27964
+ const [portalError, setPortalError] = React39.useState(null);
27965
+ const [reactivating, setReactivating] = React39.useState(false);
27966
+ const [addCardOpen, setAddCardOpen] = React39.useState(false);
27967
+ const [buyCreditsOpen, setBuyCreditsOpen] = React39.useState(false);
27968
+ const load = React39.useCallback(async () => {
27946
27969
  setLoading(true);
27947
27970
  setLoadError(null);
27948
27971
  try {
@@ -27961,16 +27984,16 @@ var BillingCenter = ({ dense = false }) => {
27961
27984
  setLoading(false);
27962
27985
  }
27963
27986
  }, []);
27964
- React55.useEffect(() => {
27987
+ React39.useEffect(() => {
27965
27988
  void load();
27966
27989
  void exports.billingService.getGasPricing().then(setPricing).catch(() => setPricing(null));
27967
27990
  }, [load]);
27968
- React55.useEffect(() => {
27991
+ React39.useEffect(() => {
27969
27992
  const reloadAfterCheckout = () => void load();
27970
27993
  window.addEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, reloadAfterCheckout);
27971
27994
  return () => window.removeEventListener(exports.CREDIT_CHECKOUT_SYNCED_EVENT, reloadAfterCheckout);
27972
27995
  }, [load]);
27973
- const loadMore = React55.useCallback(async () => {
27996
+ const loadMore = React39.useCallback(async () => {
27974
27997
  const last = items[items.length - 1];
27975
27998
  if (!last || moreBusy) return;
27976
27999
  setMoreBusy(true);
@@ -27984,7 +28007,7 @@ var BillingCenter = ({ dense = false }) => {
27984
28007
  setMoreBusy(false);
27985
28008
  }
27986
28009
  }, [items, moreBusy]);
27987
- const openPortal = React55.useCallback(async () => {
28010
+ const openPortal = React39.useCallback(async () => {
27988
28011
  setPortalBusy(true);
27989
28012
  setPortalError(null);
27990
28013
  try {
@@ -27995,7 +28018,7 @@ var BillingCenter = ({ dense = false }) => {
27995
28018
  setPortalBusy(false);
27996
28019
  }
27997
28020
  }, []);
27998
- const reactivate = React55.useCallback(async () => {
28021
+ const reactivate = React39.useCallback(async () => {
27999
28022
  setReactivating(true);
28000
28023
  setPortalError(null);
28001
28024
  try {
@@ -28024,7 +28047,7 @@ var BillingCenter = ({ dense = false }) => {
28024
28047
  const breakdownCount = [llmBreakdown, gasBreakdown, knowledgeBreakdown].filter(
28025
28048
  (rows) => rows.length > 0
28026
28049
  ).length;
28027
- const meterKeys = React55.useMemo(
28050
+ const meterKeys = React39.useMemo(
28028
28051
  () => [
28029
28052
  "llm_usage_usd",
28030
28053
  "gas_usage_usd",
@@ -28038,10 +28061,10 @@ var BillingCenter = ({ dense = false }) => {
28038
28061
  (g) => g.credit_plan_id && g.status === "active"
28039
28062
  ) ?? null;
28040
28063
  const tokenCardGated = billingGateInfoForActiveToken().cardRequired;
28041
- const [sponsorBusy, setSponsorBusy] = React55.useState(false);
28042
- const [sponsorError, setSponsorError] = React55.useState(null);
28043
- const [autoBind, setAutoBind] = React55.useState("idle");
28044
- React55.useEffect(() => {
28064
+ const [sponsorBusy, setSponsorBusy] = React39.useState(false);
28065
+ const [sponsorError, setSponsorError] = React39.useState(null);
28066
+ const [autoBind, setAutoBind] = React39.useState("idle");
28067
+ React39.useEffect(() => {
28045
28068
  if (autoBind !== "idle") return;
28046
28069
  if (!summary?.card_required || !tokenCardGated || !platformGroup) return;
28047
28070
  setAutoBind("trying");
@@ -28049,7 +28072,7 @@ var BillingCenter = ({ dense = false }) => {
28049
28072
  if (bound) await load();
28050
28073
  }).finally(() => setAutoBind("settled"));
28051
28074
  }, [summary, tokenCardGated, platformGroup, autoBind]);
28052
- const billViaGroup = React55.useCallback(async () => {
28075
+ const billViaGroup = React39.useCallback(async () => {
28053
28076
  if (!platformGroup || sponsorBusy) return;
28054
28077
  setSponsorBusy(true);
28055
28078
  setSponsorError(null);
@@ -28433,9 +28456,9 @@ var BillingCenter = ({ dense = false }) => {
28433
28456
  init_cardRequired();
28434
28457
  init_billingService();
28435
28458
  var CardRequiredHost = () => {
28436
- const [request, setRequest] = React55.useState(null);
28437
- React55.useEffect(() => exports.cardRequiredGate.subscribe(setRequest), []);
28438
- React55.useEffect(() => {
28459
+ const [request, setRequest] = React39.useState(null);
28460
+ React39.useEffect(() => exports.cardRequiredGate.subscribe(setRequest), []);
28461
+ React39.useEffect(() => {
28439
28462
  let inFlight = false;
28440
28463
  const heal = async () => {
28441
28464
  if (inFlight) return;
@@ -28519,11 +28542,11 @@ var PENDING_RETURN_NOTICE = {
28519
28542
  message: "Stripe confirmation is taking longer than usual, so this purchase is not confirmed yet. Check again now or return to this page shortly. To avoid a duplicate charge, don\u2019t purchase again until Billing shows the final result."
28520
28543
  };
28521
28544
  var CreditExhaustedHost = () => {
28522
- const [request, setRequest] = React55.useState(null);
28523
- const [checkoutNotice, setCheckoutNotice] = React55.useState(null);
28524
- const [retryMarker, setRetryMarker] = React55.useState(null);
28525
- React55.useEffect(() => creditRequiredGate.subscribe(setRequest), []);
28526
- React55.useEffect(() => {
28545
+ const [request, setRequest] = React39.useState(null);
28546
+ const [checkoutNotice, setCheckoutNotice] = React39.useState(null);
28547
+ const [retryMarker, setRetryMarker] = React39.useState(null);
28548
+ React39.useEffect(() => creditRequiredGate.subscribe(setRequest), []);
28549
+ React39.useEffect(() => {
28527
28550
  const parsedMarker = readCreditCheckoutReturnMarker();
28528
28551
  if (!parsedMarker) return;
28529
28552
  const marker = parsedMarker;
@@ -28729,12 +28752,12 @@ function VerifiedBadge({
28729
28752
  }
28730
28753
  function IdentityCard() {
28731
28754
  const { config, isLoading: configLoading } = useProviderConfig();
28732
- const [credentials, setCredentials] = React55.useState([]);
28733
- const [profile, setProfile] = React55.useState(null);
28734
- const [loading, setLoading] = React55.useState(true);
28735
- const [activeKyc, setActiveKyc] = React55.useState(null);
28736
- const [error, setError] = React55.useState(null);
28737
- React55.useEffect(() => {
28755
+ const [credentials, setCredentials] = React39.useState([]);
28756
+ const [profile, setProfile] = React39.useState(null);
28757
+ const [loading, setLoading] = React39.useState(true);
28758
+ const [activeKyc, setActiveKyc] = React39.useState(null);
28759
+ const [error, setError] = React39.useState(null);
28760
+ React39.useEffect(() => {
28738
28761
  let cancelled = false;
28739
28762
  (async () => {
28740
28763
  try {
@@ -28871,10 +28894,10 @@ function LoginAltMethods({ exclude, platform, onSuccess } = {}) {
28871
28894
  const navigate = useWalletNavigate();
28872
28895
  const { bootstrapSession } = useAuth();
28873
28896
  const { config, isLoading } = useProviderConfig();
28874
- const [busyId, setBusyId] = React55.useState(null);
28875
- const [error, setError] = React55.useState(null);
28876
- const [passkeySupported, setPasskeySupported] = React55.useState(false);
28877
- React55.useEffect(() => {
28897
+ const [busyId, setBusyId] = React39.useState(null);
28898
+ const [error, setError] = React39.useState(null);
28899
+ const [passkeySupported, setPasskeySupported] = React39.useState(false);
28900
+ React39.useEffect(() => {
28878
28901
  setPasskeySupported(typeof window !== "undefined" && !!window.PublicKeyCredential);
28879
28902
  }, []);
28880
28903
  if (isLoading || !config) return null;
@@ -29040,25 +29063,25 @@ function useForm({
29040
29063
  schema,
29041
29064
  onSubmit
29042
29065
  }) {
29043
- const [state, setState] = React55.useState({
29066
+ const [state, setState] = React39.useState({
29044
29067
  values: initialValues,
29045
29068
  errors: {},
29046
29069
  touched: {}
29047
29070
  });
29048
- const handleChange = React55.useCallback((name, value) => {
29071
+ const handleChange = React39.useCallback((name, value) => {
29049
29072
  setState((prev) => ({
29050
29073
  ...prev,
29051
29074
  values: { ...prev.values, [name]: value },
29052
29075
  touched: { ...prev.touched, [name]: true }
29053
29076
  }));
29054
29077
  }, []);
29055
- const handleBlur = React55.useCallback((name) => {
29078
+ const handleBlur = React39.useCallback((name) => {
29056
29079
  setState((prev) => ({
29057
29080
  ...prev,
29058
29081
  touched: { ...prev.touched, [name]: true }
29059
29082
  }));
29060
29083
  }, []);
29061
- const validate = React55.useCallback(() => {
29084
+ const validate = React39.useCallback(() => {
29062
29085
  try {
29063
29086
  schema.parse(state.values);
29064
29087
  setState((prev) => ({ ...prev, errors: {} }));
@@ -29074,13 +29097,13 @@ function useForm({
29074
29097
  return false;
29075
29098
  }
29076
29099
  }, [schema, state.values]);
29077
- const handleSubmit = React55.useCallback(async (e) => {
29100
+ const handleSubmit = React39.useCallback(async (e) => {
29078
29101
  e.preventDefault();
29079
29102
  if (validate()) {
29080
29103
  await onSubmit(state.values);
29081
29104
  }
29082
29105
  }, [onSubmit, state.values, validate]);
29083
- const reset = React55.useCallback(() => {
29106
+ const reset = React39.useCallback(() => {
29084
29107
  setState({
29085
29108
  values: initialValues,
29086
29109
  errors: {},
@@ -29125,9 +29148,9 @@ var defaultFormConfig = {
29125
29148
  function useLogin(options = {}) {
29126
29149
  const navigate = useWalletNavigate();
29127
29150
  const { login: contextLogin, isLoading: contextLoading, error: contextError, clearError: contextClearError, user } = useAuth();
29128
- const [isSubmitting, setIsSubmitting] = React55.useState(false);
29129
- const [error, setError] = React55.useState(null);
29130
- const [isAuthenticated, setIsAuthenticated] = React55.useState(exports.authService.isAuthenticated());
29151
+ const [isSubmitting, setIsSubmitting] = React39.useState(false);
29152
+ const [error, setError] = React39.useState(null);
29153
+ const [isAuthenticated, setIsAuthenticated] = React39.useState(exports.authService.isAuthenticated());
29131
29154
  const {
29132
29155
  services = ["vault", "payments"],
29133
29156
  redirectPath = "/dashboard",
@@ -29137,11 +29160,11 @@ function useLogin(options = {}) {
29137
29160
  showErrorMessages = true,
29138
29161
  platform: optionsPlatform
29139
29162
  } = options;
29140
- const clearError = React55.useCallback(() => {
29163
+ const clearError = React39.useCallback(() => {
29141
29164
  setError(null);
29142
29165
  contextClearError();
29143
29166
  }, [contextClearError]);
29144
- const login = React55.useCallback(async (credentials) => {
29167
+ const login = React39.useCallback(async (credentials) => {
29145
29168
  try {
29146
29169
  setIsSubmitting(true);
29147
29170
  setError(null);
@@ -29395,8 +29418,8 @@ function AccessFlowBody({
29395
29418
  onSelectPlatform
29396
29419
  }) {
29397
29420
  const { isAuthenticated } = useAuth();
29398
- const [mode, setMode] = React55.useState(initialMode);
29399
- const handleWizardComplete = React55.useCallback(
29421
+ const [mode, setMode] = React39.useState(initialMode);
29422
+ const handleWizardComplete = React39.useCallback(
29400
29423
  (destination) => {
29401
29424
  if (destination === "/login") {
29402
29425
  setMode("login");
@@ -29449,8 +29472,8 @@ init_chainAccountRequired();
29449
29472
  // src/ui/account/ChainAccountRequiredHost.tsx
29450
29473
  init_chainAccountRequired();
29451
29474
  var ChainAccountRequiredHost = () => {
29452
- const [request, setRequest] = React55.useState(null);
29453
- React55.useEffect(() => exports.chainAccountRequiredGate.subscribe(setRequest), []);
29475
+ const [request, setRequest] = React39.useState(null);
29476
+ React39.useEffect(() => exports.chainAccountRequiredGate.subscribe(setRequest), []);
29454
29477
  if (!request) return null;
29455
29478
  const key = `${request.context.entityKind}:${request.context.entityId}:${request.context.chainId}`;
29456
29479
  return /* @__PURE__ */ jsxRuntime.jsx(ChainAccountActivationDialog, { request }, key);
@@ -29458,10 +29481,10 @@ var ChainAccountRequiredHost = () => {
29458
29481
  var ChainAccountActivationDialog = ({ request }) => {
29459
29482
  const mode = chainAccountMode(request.context);
29460
29483
  const label = mode === "test" ? "Test" : "Live";
29461
- const [started, setStarted] = React55.useState(false);
29462
- const [waitingForVerification, setWaitingForVerification] = React55.useState(false);
29463
- const [status, setStatus] = React55.useState(null);
29464
- const [error, setError] = React55.useState(null);
29484
+ const [started, setStarted] = React39.useState(false);
29485
+ const [waitingForVerification, setWaitingForVerification] = React39.useState(false);
29486
+ const [status, setStatus] = React39.useState(null);
29487
+ const [error, setError] = React39.useState(null);
29465
29488
  async function activate(verificationAttempted = false) {
29466
29489
  setStarted(true);
29467
29490
  setError(null);
@@ -29584,8 +29607,8 @@ init_walletIdentity();
29584
29607
  init_verificationsService();
29585
29608
  init_ProviderConfigContext();
29586
29609
  var VerificationRequiredHost = () => {
29587
- const [request, setRequest] = React55.useState(null);
29588
- React55.useEffect(() => verificationRequiredGate.subscribe(setRequest), []);
29610
+ const [request, setRequest] = React39.useState(null);
29611
+ React39.useEffect(() => verificationRequiredGate.subscribe(setRequest), []);
29589
29612
  if (!request) return null;
29590
29613
  return /* @__PURE__ */ jsxRuntime.jsx(VerificationDialog, { request }, request.context.profile ?? "default");
29591
29614
  };
@@ -29594,12 +29617,12 @@ var VerificationDialog = ({
29594
29617
  }) => {
29595
29618
  const { context } = request;
29596
29619
  const { config } = useProviderConfig();
29597
- const [activeProvider, setActiveProvider] = React55.useState(null);
29598
- const [checking, setChecking] = React55.useState(false);
29599
- const [error, setError] = React55.useState(null);
29600
- const [isGroupManager, setIsGroupManager] = React55.useState(null);
29620
+ const [activeProvider, setActiveProvider] = React39.useState(null);
29621
+ const [checking, setChecking] = React39.useState(false);
29622
+ const [error, setError] = React39.useState(null);
29623
+ const [isGroupManager, setIsGroupManager] = React39.useState(null);
29601
29624
  const hasGroupMiss = context.missing.some((m) => m.subject_kind === "group");
29602
- React55.useEffect(() => {
29625
+ React39.useEffect(() => {
29603
29626
  if (!hasGroupMiss || !context.groupId) return;
29604
29627
  let cancelled = false;
29605
29628
  groupsService.getGroupDetails(context.groupId).then((g) => {
@@ -29776,25 +29799,25 @@ function BusinessVerificationSection({
29776
29799
  initialStatus
29777
29800
  }) {
29778
29801
  const { config } = useProviderConfig();
29779
- const [status, setStatus] = React55__default.default.useState(initialStatus ?? "not_required");
29780
- const [flowInstance, setFlowInstance] = React55__default.default.useState(null);
29781
- const [error, setError] = React55__default.default.useState(null);
29782
- const [busy, setBusy] = React55__default.default.useState(false);
29783
- const kybInstances = React55__default.default.useMemo(
29802
+ const [status, setStatus] = React39__default.default.useState(initialStatus ?? "not_required");
29803
+ const [flowInstance, setFlowInstance] = React39__default.default.useState(null);
29804
+ const [error, setError] = React39__default.default.useState(null);
29805
+ const [busy, setBusy] = React39__default.default.useState(false);
29806
+ const kybInstances = React39__default.default.useMemo(
29784
29807
  () => (config?.kyc.enabled ?? []).filter(
29785
29808
  (id) => config?.kyc.settings[id]?.subject === "group"
29786
29809
  ),
29787
29810
  [config]
29788
29811
  );
29789
29812
  const entityDefault = config?.kyc.entity_default_profile ?? null;
29790
- const refreshStatus = React55__default.default.useCallback(async () => {
29813
+ const refreshStatus = React39__default.default.useCallback(async () => {
29791
29814
  try {
29792
29815
  const s = await getIdentityStatus({ groupId });
29793
29816
  setStatus(s.status === "unverified" ? "unverified" : s.status);
29794
29817
  } catch {
29795
29818
  }
29796
29819
  }, [groupId]);
29797
- React55__default.default.useEffect(() => {
29820
+ React39__default.default.useEffect(() => {
29798
29821
  if (initialStatus !== void 0) setStatus(initialStatus);
29799
29822
  }, [initialStatus]);
29800
29823
  const startFlow = async (bindFirst) => {
@@ -30530,31 +30553,31 @@ function readDelegationGroupId() {
30530
30553
  function useIncomingPayments(options = {}) {
30531
30554
  const { entityId: entityIdOverride, walletId: walletIdOverride, disableLiveRefresh } = options;
30532
30555
  const { user, isAuthenticated } = useAuth();
30533
- const [delegationGroupId, setDelegationGroupId] = React55.useState(
30556
+ const [delegationGroupId, setDelegationGroupId] = React39.useState(
30534
30557
  () => readDelegationGroupId()
30535
30558
  );
30536
- React55.useEffect(() => {
30559
+ React39.useEffect(() => {
30537
30560
  setDelegationGroupId(readDelegationGroupId());
30538
30561
  }, [isAuthenticated, user?.id]);
30539
- const activeEntityId = React55.useMemo(() => {
30562
+ const activeEntityId = React39.useMemo(() => {
30540
30563
  if (entityIdOverride !== void 0) return entityIdOverride;
30541
30564
  if (delegationGroupId) return delegationGroupId;
30542
30565
  return user?.id ?? null;
30543
30566
  }, [entityIdOverride, delegationGroupId, user?.id]);
30544
30567
  const activeWalletId = walletIdOverride ?? user?.default_wallet_id ?? null;
30545
- const [payments, setPayments] = React55.useState([]);
30546
- const [contracts, setContracts] = React55.useState([]);
30547
- const [swaps, setSwaps] = React55.useState([]);
30548
- const [loading, setLoading] = React55.useState(false);
30549
- const [error, setError] = React55.useState(null);
30550
- const [acceptState, setAcceptState] = React55.useState({ itemKey: null, error: null });
30551
- const inflightRef = React55.useRef(null);
30552
- const activeEntityIdRef = React55.useRef(activeEntityId);
30553
- React55.useEffect(() => {
30568
+ const [payments, setPayments] = React39.useState([]);
30569
+ const [contracts, setContracts] = React39.useState([]);
30570
+ const [swaps, setSwaps] = React39.useState([]);
30571
+ const [loading, setLoading] = React39.useState(false);
30572
+ const [error, setError] = React39.useState(null);
30573
+ const [acceptState, setAcceptState] = React39.useState({ itemKey: null, error: null });
30574
+ const inflightRef = React39.useRef(null);
30575
+ const activeEntityIdRef = React39.useRef(activeEntityId);
30576
+ React39.useEffect(() => {
30554
30577
  activeEntityIdRef.current = activeEntityId;
30555
30578
  setDelegationGroupId(readDelegationGroupId());
30556
30579
  });
30557
- const fetchAll = React55.useCallback(async () => {
30580
+ const fetchAll = React39.useCallback(async () => {
30558
30581
  if (!isAuthenticated || !activeEntityId) {
30559
30582
  setPayments([]);
30560
30583
  setContracts([]);
@@ -30605,10 +30628,10 @@ function useIncomingPayments(options = {}) {
30605
30628
  inflightRef.current = work;
30606
30629
  return work;
30607
30630
  }, [isAuthenticated, activeEntityId, activeWalletId]);
30608
- React55.useEffect(() => {
30631
+ React39.useEffect(() => {
30609
30632
  void fetchAll();
30610
30633
  }, [fetchAll]);
30611
- React55.useEffect(() => {
30634
+ React39.useEffect(() => {
30612
30635
  if (disableLiveRefresh) return;
30613
30636
  if (!isAuthenticated || !activeEntityId) return;
30614
30637
  const unsub = subscribeEntityEvents(activeEntityId, (event) => {
@@ -30620,12 +30643,12 @@ function useIncomingPayments(options = {}) {
30620
30643
  unsub();
30621
30644
  };
30622
30645
  }, [isAuthenticated, activeEntityId, disableLiveRefresh, fetchAll]);
30623
- const items = React55.useMemo(
30646
+ const items = React39.useMemo(
30624
30647
  () => buildInbox({ payments, contracts, swaps, activeEntityId }),
30625
30648
  [payments, contracts, swaps, activeEntityId]
30626
30649
  );
30627
- const groups = React55.useMemo(() => groupInbox(items), [items]);
30628
- const accept = React55.useCallback(
30650
+ const groups = React39.useMemo(() => groupInbox(items), [items]);
30651
+ const accept = React39.useCallback(
30629
30652
  async (item) => {
30630
30653
  setAcceptState({ itemKey: item.key, error: null });
30631
30654
  try {
@@ -30650,7 +30673,7 @@ function useIncomingPayments(options = {}) {
30650
30673
  },
30651
30674
  []
30652
30675
  );
30653
- const cancel = React55.useCallback(async (paymentId) => {
30676
+ const cancel = React39.useCallback(async (paymentId) => {
30654
30677
  try {
30655
30678
  await paymentsService.cancelPayment({ paymentId });
30656
30679
  setPayments((prev) => prev.filter((p) => p.id !== paymentId));
@@ -30679,14 +30702,14 @@ function resetDecimalsWarningCache() {
30679
30702
  warnedTokenIds.clear();
30680
30703
  }
30681
30704
  function useDecimalsCore(payments, walletAddress) {
30682
- const [cache2, setCache] = React55.useState(/* @__PURE__ */ new Map());
30683
- const [cacheErrors, setCacheErrors] = React55.useState(/* @__PURE__ */ new Map());
30684
- const fetchingRef = React55.useRef(/* @__PURE__ */ new Set());
30685
- const cacheRef = React55.useRef(cache2);
30686
- React55.useEffect(() => {
30705
+ const [cache2, setCache] = React39.useState(/* @__PURE__ */ new Map());
30706
+ const [cacheErrors, setCacheErrors] = React39.useState(/* @__PURE__ */ new Map());
30707
+ const fetchingRef = React39.useRef(/* @__PURE__ */ new Set());
30708
+ const cacheRef = React39.useRef(cache2);
30709
+ React39.useEffect(() => {
30687
30710
  cacheRef.current = cache2;
30688
30711
  }, [cache2]);
30689
- React55.useEffect(() => {
30712
+ React39.useEffect(() => {
30690
30713
  if (!payments || payments.length === 0) return;
30691
30714
  const todo = /* @__PURE__ */ new Set();
30692
30715
  for (const payment of payments) {
@@ -30777,7 +30800,7 @@ function useDecimalsCore(payments, walletAddress) {
30777
30800
  todo.forEach((id) => fetchingRef.current.delete(id));
30778
30801
  };
30779
30802
  }, [payments, walletAddress]);
30780
- return React55.useMemo(() => ({ cache: cache2, cacheErrors }), [cache2, cacheErrors]);
30803
+ return React39.useMemo(() => ({ cache: cache2, cacheErrors }), [cache2, cacheErrors]);
30781
30804
  }
30782
30805
  function usePaymentDecimals(payments, walletAddress) {
30783
30806
  const { cache: cache2 } = useDecimalsCore(payments, walletAddress);
@@ -30982,7 +31005,7 @@ var IncomingPaymentsInbox = ({
30982
31005
  ...hookOptions
30983
31006
  }) => {
30984
31007
  const inbox = useIncomingPayments(hookOptions);
30985
- const allPayments = React55__default.default.useMemo(
31008
+ const allPayments = React39__default.default.useMemo(
30986
31009
  () => [
30987
31010
  ...inbox.payments,
30988
31011
  ...inbox.contracts.flatMap((c) => c.payments ?? [])
@@ -31143,7 +31166,7 @@ var IncomingPaymentsLauncher = ({
31143
31166
  }) => {
31144
31167
  const { isAuthenticated } = useAuth();
31145
31168
  const inbox = useIncomingPayments(hookOptions);
31146
- const [open, setOpen] = React55.useState(false);
31169
+ const [open, setOpen] = React39.useState(false);
31147
31170
  if (hideWhenSignedOut && !isAuthenticated) return null;
31148
31171
  const handleClick = onClick ?? (() => setOpen(true));
31149
31172
  const count = inbox.items.length;
@@ -31273,11 +31296,11 @@ function SummaryTile({ label, count }) {
31273
31296
  ] });
31274
31297
  }
31275
31298
  function useSendPayment() {
31276
- const [sending, setSending] = React55.useState(false);
31277
- const [error, setError] = React55.useState(null);
31278
- const [lastResponse, setLastResponse] = React55.useState(null);
31279
- const inflightRef = React55.useRef(null);
31280
- const send = React55.useCallback(async (args) => {
31299
+ const [sending, setSending] = React39.useState(false);
31300
+ const [error, setError] = React39.useState(null);
31301
+ const [lastResponse, setLastResponse] = React39.useState(null);
31302
+ const inflightRef = React39.useRef(null);
31303
+ const send = React39.useCallback(async (args) => {
31281
31304
  if (inflightRef.current) {
31282
31305
  return inflightRef.current;
31283
31306
  }
@@ -31305,7 +31328,7 @@ function useSendPayment() {
31305
31328
  inflightRef.current = work;
31306
31329
  return work;
31307
31330
  }, []);
31308
- const reset = React55.useCallback(() => {
31331
+ const reset = React39.useCallback(() => {
31309
31332
  setError(null);
31310
31333
  setLastResponse(null);
31311
31334
  }, []);
@@ -31323,13 +31346,13 @@ var SendPaymentForm = ({
31323
31346
  className = ""
31324
31347
  }) => {
31325
31348
  const initialAssetId = (defaultAssetId && assets.find((a) => a.id === defaultAssetId)?.id) ?? assets[0]?.id ?? "";
31326
- const [assetId, setAssetId] = React55.useState(initialAssetId);
31327
- const [amount, setAmount] = React55.useState(defaultAmount);
31328
- const [recipient, setRecipient] = React55.useState(defaultRecipient);
31329
- const [recipientMode, setRecipientMode] = React55.useState("entity");
31330
- const [description, setDescription] = React55.useState("");
31331
- const [validationError, setValidationError] = React55.useState(null);
31332
- React55.useEffect(() => {
31349
+ const [assetId, setAssetId] = React39.useState(initialAssetId);
31350
+ const [amount, setAmount] = React39.useState(defaultAmount);
31351
+ const [recipient, setRecipient] = React39.useState(defaultRecipient);
31352
+ const [recipientMode, setRecipientMode] = React39.useState("entity");
31353
+ const [description, setDescription] = React39.useState("");
31354
+ const [validationError, setValidationError] = React39.useState(null);
31355
+ React39.useEffect(() => {
31333
31356
  if (assetId === "" && assets.length > 0) {
31334
31357
  setAssetId(assets[0].id);
31335
31358
  } else if (assetId && !assets.find((a) => a.id === assetId)) {