decane-connect-kit 2.7.5 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2017,6 +2017,18 @@ var ApiClient = class {
2017
2017
  body: JSON.stringify({ email, code })
2018
2018
  });
2019
2019
  }
2020
+ async authPhoneStart(phone) {
2021
+ await this._request("/auth/phone/start", {
2022
+ method: "POST",
2023
+ body: JSON.stringify({ phone })
2024
+ });
2025
+ }
2026
+ async authPhoneVerify(phone, code) {
2027
+ return this._request("/auth/phone/verify", {
2028
+ method: "POST",
2029
+ body: JSON.stringify({ phone, code })
2030
+ });
2031
+ }
2020
2032
  // GET /share (the server share itself) was removed as part of the TEE
2021
2033
  // migration — the browser must never reconstruct the private key anymore.
2022
2034
  // Only public addresses are fetched from the backend now.
@@ -2862,6 +2874,14 @@ async function verifyEmailCode(api, email, code) {
2862
2874
  return api.authEmailVerify(email, code);
2863
2875
  }
2864
2876
 
2877
+ // src/social/auth/phone.ts
2878
+ async function startPhoneAuth(api, phone) {
2879
+ await api.authPhoneStart(phone);
2880
+ }
2881
+ async function verifyPhoneCode(api, phone, code) {
2882
+ return api.authPhoneVerify(phone, code);
2883
+ }
2884
+
2865
2885
  // src/social/auth/kingschat.ts
2866
2886
  init_errors();
2867
2887
  var KINGSCHAT_AUTH_ORIGIN = "https://accounts.kingsch.at";
@@ -4069,6 +4089,14 @@ async function createDecaneConnect(config) {
4069
4089
  const result = await verifyEmailCode(api, email, code);
4070
4090
  return handleAuthResult(result);
4071
4091
  },
4092
+ async connectWithPhone(phone) {
4093
+ await startPhoneAuth(api, phone);
4094
+ return { codeRequired: true };
4095
+ },
4096
+ async verifyPhoneCode(phone, code) {
4097
+ const result = await verifyPhoneCode(api, phone, code);
4098
+ return handleAuthResult(result);
4099
+ },
4072
4100
  async canSignInWithPasskey() {
4073
4101
  return await passkeyLoginCandidate() !== null;
4074
4102
  },
@@ -4831,6 +4859,8 @@ function WalletSelector({
4831
4859
  onKingsChatSignIn,
4832
4860
  onEmailStart,
4833
4861
  onEmailVerify,
4862
+ onPhoneStart,
4863
+ onPhoneVerify,
4834
4864
  customAuthLabel,
4835
4865
  onCustomAuthSignIn,
4836
4866
  canUsePasskey = false,
@@ -4846,6 +4876,9 @@ function WalletSelector({
4846
4876
  const [emailStep, setEmailStep] = useState("input");
4847
4877
  const [emailVal, setEmailVal] = useState("");
4848
4878
  const [codeVal, setCodeVal] = useState("");
4879
+ const [phoneStep, setPhoneStep] = useState("input");
4880
+ const [phoneVal, setPhoneVal] = useState("");
4881
+ const [phoneCode, setPhoneCode] = useState("");
4849
4882
  const [socialLoad, setSocialLoad] = useState(false);
4850
4883
  const [socialErr, setSocialErr] = useState("");
4851
4884
  const [showOtherMethods, setShowOtherMethods] = useState(false);
@@ -4956,6 +4989,33 @@ function WalletSelector({
4956
4989
  setSocialLoad(false);
4957
4990
  }
4958
4991
  }
4992
+ async function handlePhoneStart(e) {
4993
+ e.preventDefault();
4994
+ if (!onPhoneStart) return;
4995
+ setSocialLoad(true);
4996
+ setSocialErr("");
4997
+ try {
4998
+ await onPhoneStart(phoneVal);
4999
+ setPhoneStep("code");
5000
+ } catch (e2) {
5001
+ setSocialErr(e2.message);
5002
+ } finally {
5003
+ setSocialLoad(false);
5004
+ }
5005
+ }
5006
+ async function handlePhoneVerify(e) {
5007
+ e.preventDefault();
5008
+ if (!onPhoneVerify) return;
5009
+ setSocialLoad(true);
5010
+ setSocialErr("");
5011
+ try {
5012
+ await onPhoneVerify(phoneVal, phoneCode);
5013
+ } catch (e2) {
5014
+ setSocialErr(e2.message);
5015
+ } finally {
5016
+ setSocialLoad(false);
5017
+ }
5018
+ }
4959
5019
  const handleKey = useCallback(
4960
5020
  (e) => {
4961
5021
  if (e.key === "Escape") {
@@ -5491,6 +5551,126 @@ function WalletSelector({
5491
5551
  }
5492
5552
  },
5493
5553
  socialLoad ? "Verifying\u2026" : "Verify"
5554
+ )))), !passkeyFirst && socialAuthMethods.includes("phone") && onPhoneStart && onPhoneVerify && (phoneStep === "input" ? /* @__PURE__ */ React2.createElement("form", { onSubmit: handlePhoneStart, style: { display: "flex", flexDirection: "column", gap: 8 } }, /* @__PURE__ */ React2.createElement(
5555
+ "input",
5556
+ {
5557
+ type: "tel",
5558
+ placeholder: "+234 801 234 5678",
5559
+ value: phoneVal,
5560
+ onChange: (e) => setPhoneVal(e.target.value),
5561
+ required: true,
5562
+ style: {
5563
+ width: "100%",
5564
+ padding: "10px 12px",
5565
+ background: "var(--dc-surface)",
5566
+ border: "1px solid var(--dc-border)",
5567
+ borderRadius: 10,
5568
+ color: "var(--dc-text)",
5569
+ fontSize: 13,
5570
+ fontFamily: "inherit",
5571
+ outline: "none",
5572
+ boxSizing: "border-box"
5573
+ },
5574
+ onFocus: (e) => {
5575
+ e.currentTarget.style.borderColor = "var(--dc-border-accent)";
5576
+ },
5577
+ onBlur: (e) => {
5578
+ e.currentTarget.style.borderColor = "var(--dc-border)";
5579
+ }
5580
+ }
5581
+ ), /* @__PURE__ */ React2.createElement(
5582
+ "button",
5583
+ {
5584
+ type: "submit",
5585
+ disabled: socialLoad || !phoneVal,
5586
+ style: {
5587
+ width: "100%",
5588
+ padding: "10px 16px",
5589
+ background: "var(--dc-accent)",
5590
+ color: "var(--dc-accent-text)",
5591
+ border: "none",
5592
+ borderRadius: 10,
5593
+ fontSize: 14,
5594
+ fontWeight: 700,
5595
+ cursor: socialLoad ? "not-allowed" : "pointer",
5596
+ fontFamily: "inherit",
5597
+ opacity: socialLoad || !phoneVal ? 0.6 : 1
5598
+ }
5599
+ },
5600
+ socialLoad ? "Sending\u2026" : "Send code"
5601
+ )) : /* @__PURE__ */ React2.createElement("form", { onSubmit: handlePhoneVerify, style: { display: "flex", flexDirection: "column", gap: 8 } }, /* @__PURE__ */ React2.createElement("p", { style: { margin: 0, fontSize: 12, color: "var(--dc-text-muted)", textAlign: "center" } }, "Code sent to ", /* @__PURE__ */ React2.createElement("strong", { style: { color: "var(--dc-text)" } }, phoneVal)), /* @__PURE__ */ React2.createElement(
5602
+ "input",
5603
+ {
5604
+ type: "text",
5605
+ inputMode: "numeric",
5606
+ placeholder: "6-digit code",
5607
+ value: phoneCode,
5608
+ onChange: (e) => setPhoneCode(e.target.value.replace(/\D/g, "").slice(0, 6)),
5609
+ autoFocus: true,
5610
+ required: true,
5611
+ style: {
5612
+ width: "100%",
5613
+ padding: "10px 12px",
5614
+ background: "var(--dc-surface)",
5615
+ border: "1px solid var(--dc-border)",
5616
+ borderRadius: 10,
5617
+ color: "var(--dc-text)",
5618
+ fontSize: 20,
5619
+ fontFamily: "monospace",
5620
+ letterSpacing: 8,
5621
+ textAlign: "center",
5622
+ outline: "none",
5623
+ boxSizing: "border-box"
5624
+ },
5625
+ onFocus: (e) => {
5626
+ e.currentTarget.style.borderColor = "var(--dc-border-accent)";
5627
+ },
5628
+ onBlur: (e) => {
5629
+ e.currentTarget.style.borderColor = "var(--dc-border)";
5630
+ }
5631
+ }
5632
+ ), /* @__PURE__ */ React2.createElement("div", { style: { display: "flex", gap: 8 } }, /* @__PURE__ */ React2.createElement(
5633
+ "button",
5634
+ {
5635
+ type: "button",
5636
+ onClick: () => {
5637
+ setPhoneStep("input");
5638
+ setPhoneCode("");
5639
+ setSocialErr("");
5640
+ },
5641
+ style: {
5642
+ flex: 1,
5643
+ padding: "9px 0",
5644
+ background: "transparent",
5645
+ border: "1px solid var(--dc-border)",
5646
+ borderRadius: 10,
5647
+ color: "var(--dc-text-muted)",
5648
+ fontSize: 13,
5649
+ cursor: "pointer",
5650
+ fontFamily: "inherit"
5651
+ }
5652
+ },
5653
+ "Back"
5654
+ ), /* @__PURE__ */ React2.createElement(
5655
+ "button",
5656
+ {
5657
+ type: "submit",
5658
+ disabled: socialLoad || phoneCode.length < 6,
5659
+ style: {
5660
+ flex: 2,
5661
+ padding: "9px 0",
5662
+ background: "var(--dc-accent)",
5663
+ color: "var(--dc-accent-text)",
5664
+ border: "none",
5665
+ borderRadius: 10,
5666
+ fontSize: 13,
5667
+ fontWeight: 700,
5668
+ cursor: socialLoad || phoneCode.length < 6 ? "not-allowed" : "pointer",
5669
+ fontFamily: "inherit",
5670
+ opacity: socialLoad || phoneCode.length < 6 ? 0.6 : 1
5671
+ }
5672
+ },
5673
+ socialLoad ? "Verifying\u2026" : "Verify"
5494
5674
  )))), !passkeyFirst && customAuthLabel && onCustomAuthSignIn && /* @__PURE__ */ React2.createElement(React2.Fragment, null, (socialAuthMethods.includes("google") || socialAuthMethods.includes("email")) && /* @__PURE__ */ React2.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } }, /* @__PURE__ */ React2.createElement("div", { style: { flex: 1, height: 1, background: "var(--dc-border)" } }), /* @__PURE__ */ React2.createElement("span", { style: { fontSize: 11, color: "var(--dc-text-muted)", whiteSpace: "nowrap" } }, "or"), /* @__PURE__ */ React2.createElement("div", { style: { flex: 1, height: 1, background: "var(--dc-border)" } })), /* @__PURE__ */ React2.createElement(
5495
5675
  "button",
5496
5676
  {
@@ -5621,6 +5801,8 @@ function SignInView({
5621
5801
  onKingsChatSignIn,
5622
5802
  onEmailStart,
5623
5803
  onEmailVerify,
5804
+ onPhoneStart,
5805
+ onPhoneVerify,
5624
5806
  authMethods,
5625
5807
  resumeHint,
5626
5808
  customAuthLabel,
@@ -5635,6 +5817,10 @@ function SignInView({
5635
5817
  const [code, setCode] = useState2("");
5636
5818
  const [emailSent, setEmailSent] = useState2(false);
5637
5819
  const [emailLoading, setEmailLoading] = useState2(false);
5820
+ const [phone, setPhone] = useState2("");
5821
+ const [phoneCode, setPhoneCode] = useState2("");
5822
+ const [phoneSent, setPhoneSent] = useState2(false);
5823
+ const [phoneLoading, setPhoneLoading] = useState2(false);
5638
5824
  const [customLoading, setCustomLoading] = useState2(false);
5639
5825
  const [passkeyLoading, setPasskeyLoading] = useState2(false);
5640
5826
  const [showOtherMethods, setShowOtherMethods] = useState2(false);
@@ -5702,6 +5888,33 @@ function SignInView({
5702
5888
  setEmailLoading(false);
5703
5889
  }
5704
5890
  }
5891
+ async function handlePhoneStart(e) {
5892
+ e.preventDefault();
5893
+ if (!onPhoneStart) return;
5894
+ setError("");
5895
+ setPhoneLoading(true);
5896
+ try {
5897
+ await onPhoneStart(phone);
5898
+ setPhoneSent(true);
5899
+ } catch (e2) {
5900
+ setError(e2.message);
5901
+ } finally {
5902
+ setPhoneLoading(false);
5903
+ }
5904
+ }
5905
+ async function handlePhoneVerify(e) {
5906
+ e.preventDefault();
5907
+ if (!onPhoneVerify) return;
5908
+ setError("");
5909
+ setPhoneLoading(true);
5910
+ try {
5911
+ await onPhoneVerify(phone, phoneCode);
5912
+ } catch (e2) {
5913
+ setError(e2.message);
5914
+ } finally {
5915
+ setPhoneLoading(false);
5916
+ }
5917
+ }
5705
5918
  async function handleCustomAuth() {
5706
5919
  if (!onCustomAuthSignIn) return;
5707
5920
  setError("");
@@ -5847,7 +6060,47 @@ function SignInView({
5847
6060
  fontWeight: 700,
5848
6061
  cursor: "pointer",
5849
6062
  fontFamily: "inherit"
5850
- } }, emailLoading ? "\u2026" : "Verify"))), !passkeyFirst && customAuthLabel && onCustomAuthSignIn && /* @__PURE__ */ React3.createElement(React3.Fragment, null, (authMethods.includes("google") || authMethods.includes("email")) && /* @__PURE__ */ React3.createElement("div", { style: { textAlign: "center", color: "var(--dc-text-muted)", fontSize: 12, margin: "10px 0" } }, "\u2014 or \u2014"), /* @__PURE__ */ React3.createElement(
6063
+ } }, emailLoading ? "\u2026" : "Verify"))), !passkeyFirst && authMethods.includes("phone") && onPhoneStart && onPhoneVerify && /* @__PURE__ */ React3.createElement(React3.Fragment, null, (authMethods.includes("google") || authMethods.includes("email")) && /* @__PURE__ */ React3.createElement("div", { style: { textAlign: "center", color: "var(--dc-text-muted)", fontSize: 12, margin: "10px 0" } }, "\u2014 or \u2014"), !phoneSent ? /* @__PURE__ */ React3.createElement("form", { onSubmit: handlePhoneStart, style: { display: "flex", gap: 8 } }, /* @__PURE__ */ React3.createElement(
6064
+ "input",
6065
+ {
6066
+ type: "tel",
6067
+ required: true,
6068
+ placeholder: "+234 801 234 5678",
6069
+ value: phone,
6070
+ onChange: (e) => setPhone(e.target.value),
6071
+ style: { ...inputStyle, flex: 1 }
6072
+ }
6073
+ ), /* @__PURE__ */ React3.createElement("button", { type: "submit", disabled: phoneLoading, style: {
6074
+ padding: "0 16px",
6075
+ background: "var(--dc-surface)",
6076
+ border: "1px solid var(--dc-border)",
6077
+ borderRadius: 8,
6078
+ color: "var(--dc-text)",
6079
+ fontSize: 13,
6080
+ cursor: "pointer",
6081
+ fontFamily: "inherit"
6082
+ } }, phoneLoading ? "\u2026" : "Send code")) : /* @__PURE__ */ React3.createElement("form", { onSubmit: handlePhoneVerify, style: { display: "flex", gap: 8 } }, /* @__PURE__ */ React3.createElement(
6083
+ "input",
6084
+ {
6085
+ placeholder: "6-digit code",
6086
+ value: phoneCode,
6087
+ maxLength: 6,
6088
+ autoFocus: true,
6089
+ inputMode: "numeric",
6090
+ onChange: (e) => setPhoneCode(e.target.value.replace(/\D/g, "")),
6091
+ style: { ...inputStyle, flex: 1, letterSpacing: 4, textAlign: "center" }
6092
+ }
6093
+ ), /* @__PURE__ */ React3.createElement("button", { type: "submit", disabled: phoneLoading, style: {
6094
+ padding: "0 16px",
6095
+ background: "var(--dc-accent)",
6096
+ color: "var(--dc-accent-text)",
6097
+ border: "none",
6098
+ borderRadius: 8,
6099
+ fontSize: 13,
6100
+ fontWeight: 700,
6101
+ cursor: "pointer",
6102
+ fontFamily: "inherit"
6103
+ } }, phoneLoading ? "\u2026" : "Verify"))), !passkeyFirst && customAuthLabel && onCustomAuthSignIn && /* @__PURE__ */ React3.createElement(React3.Fragment, null, (authMethods.includes("google") || authMethods.includes("email")) && /* @__PURE__ */ React3.createElement("div", { style: { textAlign: "center", color: "var(--dc-text-muted)", fontSize: 12, margin: "10px 0" } }, "\u2014 or \u2014"), /* @__PURE__ */ React3.createElement(
5851
6104
  "button",
5852
6105
  {
5853
6106
  onClick: handleCustomAuth,
@@ -5984,6 +6237,8 @@ function SocialWalletModal({
5984
6237
  onKingsChatSignIn,
5985
6238
  onEmailStart,
5986
6239
  onEmailVerify,
6240
+ onPhoneStart,
6241
+ onPhoneVerify,
5987
6242
  authMethods = ["google", "email"],
5988
6243
  customAuthLabel,
5989
6244
  onCustomAuthSignIn,
@@ -6118,6 +6373,8 @@ function SocialWalletModal({
6118
6373
  onKingsChatSignIn,
6119
6374
  onEmailStart,
6120
6375
  onEmailVerify,
6376
+ onPhoneStart,
6377
+ onPhoneVerify,
6121
6378
  authMethods,
6122
6379
  resumeHint: socialAuth.needsReconnect ? "your wallet" : void 0,
6123
6380
  customAuthLabel,
@@ -6368,7 +6625,16 @@ function DecaneKit({ config, children }) {
6368
6625
  apiBaseUrl,
6369
6626
  chains,
6370
6627
  rpcUrls,
6371
- requireAssertionPerSignature
6628
+ requireAssertionPerSignature,
6629
+ // Recovery callbacks. Forwarding these is what makes recovery
6630
+ // configurable at all from <DecaneKit>; before, they were silently
6631
+ // dropped and the headless client was constructed without them.
6632
+ offerRecoveryAtSignup,
6633
+ onRecoveryShareOffer,
6634
+ onRecoveryFileReady,
6635
+ promptForRecoveryFile,
6636
+ onRecoveryRotated,
6637
+ onRecoveryProgress
6372
6638
  } = config.social;
6373
6639
  createDecaneConnect({
6374
6640
  appId: config.appId,
@@ -6378,7 +6644,13 @@ function DecaneKit({ config, children }) {
6378
6644
  chains: chains ?? ["evm:1", "solana:mainnet"],
6379
6645
  rpcUrls,
6380
6646
  promptPin,
6381
- requireAssertionPerSignature
6647
+ requireAssertionPerSignature,
6648
+ offerRecoveryAtSignup,
6649
+ onRecoveryShareOffer,
6650
+ onRecoveryFileReady,
6651
+ promptForRecoveryFile,
6652
+ onRecoveryRotated,
6653
+ onRecoveryProgress
6382
6654
  }).then((sdk) => {
6383
6655
  socialRef.current = sdk;
6384
6656
  sdk.on(
@@ -6469,6 +6741,23 @@ function DecaneKit({ config, children }) {
6469
6741
  throw e;
6470
6742
  }
6471
6743
  }, [clearPhase]);
6744
+ const connectWithPhone = useCallback3(async (phone) => {
6745
+ const sdk = socialRef.current;
6746
+ if (!sdk) throw new Error("Social sign-in not configured");
6747
+ return sdk.connectWithPhone(phone);
6748
+ }, []);
6749
+ const verifyPhoneCode2 = useCallback3(async (phone, code) => {
6750
+ const sdk = socialRef.current;
6751
+ if (!sdk) throw new Error("Social sign-in not configured");
6752
+ try {
6753
+ const result = await sdk.verifyPhoneCode(phone, code);
6754
+ applyResult(result);
6755
+ setSelectorOpen(false);
6756
+ } catch (e) {
6757
+ clearPhase();
6758
+ throw e;
6759
+ }
6760
+ }, [clearPhase]);
6472
6761
  const connectWithToken = useCallback3(async (token, opts) => {
6473
6762
  const sdk = socialRef.current;
6474
6763
  if (!sdk) throw new Error("Social sign-in not configured");
@@ -6621,6 +6910,8 @@ function DecaneKit({ config, children }) {
6621
6910
  connectWithKingsChat,
6622
6911
  connectWithEmail,
6623
6912
  verifyEmailCode: verifyEmailCode2,
6913
+ connectWithPhone,
6914
+ verifyPhoneCode: verifyPhoneCode2,
6624
6915
  connectWithToken,
6625
6916
  customAuthLabel: customAuthConfig?.label,
6626
6917
  connectWithCustomAuth: customAuthConfig ? connectWithCustomAuth : void 0,
@@ -6664,6 +6955,8 @@ function DecaneKit({ config, children }) {
6664
6955
  onKingsChatSignIn: connectWithKingsChat,
6665
6956
  onEmailStart: connectWithEmail,
6666
6957
  onEmailVerify: verifyEmailCode2,
6958
+ onPhoneStart: connectWithPhone,
6959
+ onPhoneVerify: verifyPhoneCode2,
6667
6960
  canUsePasskey: socialAuth.canUsePasskey,
6668
6961
  passkeyAddress: socialAuth.addresses?.evm ?? socialAuth.addresses?.solana ?? null,
6669
6962
  onPasskeySignIn: signInWithPasskey,
@@ -6686,6 +6979,8 @@ function DecaneKit({ config, children }) {
6686
6979
  onKingsChatSignIn: connectWithKingsChat,
6687
6980
  onEmailStart: connectWithEmail,
6688
6981
  onEmailVerify: verifyEmailCode2,
6982
+ onPhoneStart: connectWithPhone,
6983
+ onPhoneVerify: verifyPhoneCode2,
6689
6984
  authMethods: config?.social?.authMethods ?? ["google", "email"],
6690
6985
  canUsePasskey: socialAuth.canUsePasskey,
6691
6986
  passkeyAddress: socialAuth.addresses?.evm ?? socialAuth.addresses?.solana ?? null,
@@ -6717,6 +7012,8 @@ function useSocialAuth() {
6717
7012
  connectWithGoogle,
6718
7013
  connectWithEmail,
6719
7014
  verifyEmailCode: verifyEmailCode2,
7015
+ connectWithPhone,
7016
+ verifyPhoneCode: verifyPhoneCode2,
6720
7017
  connectWithToken,
6721
7018
  customAuthLabel,
6722
7019
  connectWithCustomAuth,
@@ -6726,6 +7023,7 @@ function useSocialAuth() {
6726
7023
  } = useDecaneContext();
6727
7024
  const [googleLoading, setGoogleLoading] = useState4(false);
6728
7025
  const [emailLoading, setEmailLoading] = useState4(false);
7026
+ const [phoneLoading, setPhoneLoading] = useState4(false);
6729
7027
  const [tokenLoading, setTokenLoading] = useState4(false);
6730
7028
  const [customLoading, setCustomLoading] = useState4(false);
6731
7029
  const [error, setError] = useState4(null);
@@ -6764,6 +7062,31 @@ function useSocialAuth() {
6764
7062
  setEmailLoading(false);
6765
7063
  }
6766
7064
  }, [verifyEmailCode2]);
7065
+ const sendPhoneCode = useCallback4(async (phone) => {
7066
+ setPhoneLoading(true);
7067
+ setError(null);
7068
+ try {
7069
+ await connectWithPhone(phone);
7070
+ return { codeRequired: true };
7071
+ } catch (e) {
7072
+ setError(e.message);
7073
+ throw e;
7074
+ } finally {
7075
+ setPhoneLoading(false);
7076
+ }
7077
+ }, [connectWithPhone]);
7078
+ const confirmPhoneCode = useCallback4(async (phone, code) => {
7079
+ setPhoneLoading(true);
7080
+ setError(null);
7081
+ try {
7082
+ await verifyPhoneCode2(phone, code);
7083
+ } catch (e) {
7084
+ setError(e.message);
7085
+ throw e;
7086
+ } finally {
7087
+ setPhoneLoading(false);
7088
+ }
7089
+ }, [verifyPhoneCode2]);
6767
7090
  const signInWithToken = useCallback4(async (token, opts) => {
6768
7091
  setTokenLoading(true);
6769
7092
  setError(null);
@@ -6834,6 +7157,7 @@ function useSocialAuth() {
6834
7157
  needsReconnect: socialAuth.needsReconnect,
6835
7158
  googleLoading,
6836
7159
  emailLoading,
7160
+ phoneLoading,
6837
7161
  tokenLoading,
6838
7162
  customLoading,
6839
7163
  customAuthLabel,
@@ -6842,6 +7166,8 @@ function useSocialAuth() {
6842
7166
  signInWithGoogle,
6843
7167
  sendEmailCode,
6844
7168
  confirmEmailCode,
7169
+ sendPhoneCode,
7170
+ confirmPhoneCode,
6845
7171
  signInWithToken,
6846
7172
  signInWithCustomAuth: connectWithCustomAuth ? signInWithCustomAuth : void 0,
6847
7173
  signInWithPasskey,