@proveanything/smartlinks-auth-ui 0.4.8 → 0.4.10

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
@@ -10797,7 +10797,8 @@ const PhoneAuthForm = ({ onSubmit, onBack, loading, error, collectName = false,
10797
10797
  const handleSendCode = async (e) => {
10798
10798
  e.preventDefault();
10799
10799
  try {
10800
- await onSubmit(phoneNumber, undefined, collectName ? displayName || undefined : undefined);
10800
+ const normalizedDisplayName = displayName.trim();
10801
+ await onSubmit(phoneNumber, undefined, collectName ? normalizedDisplayName || undefined : undefined);
10801
10802
  // Only transition to code entry UI AFTER successful send
10802
10803
  setCodeSent(true);
10803
10804
  setResendCooldown(60); // 60 second cooldown
@@ -10872,7 +10873,8 @@ const MagicLinkForm = ({ onSubmit, onCancel, loading = false, error, collectName
10872
10873
  const [displayName, setDisplayName] = React.useState('');
10873
10874
  const handleSubmit = async (e) => {
10874
10875
  e.preventDefault();
10875
- await onSubmit(email, collectName ? displayName || undefined : undefined);
10876
+ const normalizedDisplayName = displayName.trim();
10877
+ await onSubmit(email, collectName ? normalizedDisplayName || undefined : undefined);
10876
10878
  };
10877
10879
  return (jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "auth-form", children: [collectName && (jsxRuntime.jsxs("div", { className: "auth-form-group", children: [jsxRuntime.jsx("label", { htmlFor: "magic-link-name", className: "auth-label", children: "Name" }), jsxRuntime.jsx("input", { id: "magic-link-name", type: "text", value: displayName, onChange: (e) => setDisplayName(e.target.value), className: "auth-input", placeholder: "John Smith", disabled: loading, autoComplete: "name" })] })), jsxRuntime.jsxs("div", { className: "auth-form-group", children: [jsxRuntime.jsx("label", { htmlFor: "magic-link-email", className: "auth-label", children: "Email Address" }), jsxRuntime.jsx("input", { id: "magic-link-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), className: "auth-input", placeholder: "you@example.com", required: true, disabled: loading })] }), error && (jsxRuntime.jsx("div", { className: "auth-error-message", children: error })), jsxRuntime.jsx("button", { type: "submit", className: "auth-button auth-button-primary", disabled: loading || !email, children: loading ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("span", { className: "auth-spinner" }), "Sending..."] })) : ('Send Magic Link') }), jsxRuntime.jsx("button", { type: "button", onClick: onCancel, className: "auth-button auth-button-secondary", disabled: loading, children: "Cancel" })] }));
10878
10880
  };
@@ -11313,10 +11315,14 @@ class AuthAPI {
11313
11315
  try {
11314
11316
  // Generate a random password since passwordless users won't use it
11315
11317
  const randomPassword = crypto.randomUUID?.() || Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2);
11318
+ // Backend requires displayName to be a valid string
11319
+ // Fall back to email local part if no name provided
11320
+ const normalizedDisplayName = typeof data.displayName === 'string' ? data.displayName.trim() : '';
11321
+ const fallbackName = normalizedDisplayName || (data.email ? data.email.split('@')[0] : 'User');
11316
11322
  await this.register({
11317
11323
  email: data.email,
11318
11324
  password: randomPassword,
11319
- displayName: data.displayName,
11325
+ displayName: fallbackName,
11320
11326
  });
11321
11327
  this.log.log('ensureAccount: new account created for', data.email || data.phoneNumber);
11322
11328
  }
@@ -11330,10 +11336,11 @@ class AuthAPI {
11330
11336
  throw err;
11331
11337
  }
11332
11338
  }
11333
- async sendMagicLink(email, redirectUrl) {
11339
+ async sendMagicLink(email, redirectUrl, displayName) {
11334
11340
  return smartlinks__namespace.authKit.sendMagicLink(this.clientId, {
11335
11341
  email,
11336
- redirectUrl
11342
+ redirectUrl,
11343
+ accountData: displayName ? { displayName } : undefined,
11337
11344
  });
11338
11345
  }
11339
11346
  async verifyMagicLink(token) {
@@ -14029,9 +14036,8 @@ const SmartlinksAuthUI = ({ apiEndpoint, clientId, clientName, accountData, onAu
14029
14036
  setLoading(true);
14030
14037
  setError(undefined);
14031
14038
  try {
14032
- // Ensure account exists before sending magic link (creates if new, no-op if exists)
14033
- await api.ensureAccount({ email, displayName });
14034
- await api.sendMagicLink(email, getRedirectUrl());
14039
+ // Send magic link - backend handles account creation automatically on verify
14040
+ await api.sendMagicLink(email, getRedirectUrl(), displayName);
14035
14041
  setAuthSuccess(true);
14036
14042
  setSuccessMessage('Magic link sent! Check your email to log in.');
14037
14043
  }