@slyxup/ui 0.2.9 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"UserProfile.d.ts","sourceRoot":"","sources":["../../../src/components/UserProfile/UserProfile.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAqFD,wBAAgB,WAAW,CAAC,EAC1B,KAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,sCAi5BlB"}
1
+ {"version":3,"file":"UserProfile.d.ts","sourceRoot":"","sources":["../../../src/components/UserProfile/UserProfile.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAqFD,wBAAgB,WAAW,CAAC,EAC1B,KAAY,EACZ,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,sCAqmClB"}
@@ -108,7 +108,7 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
108
108
  setLastName(user.lastName ?? '');
109
109
  setAvatarUrl(user.avatarUrl ?? '');
110
110
  }
111
- }, [user?.firstName, user?.lastName, user?.avatarUrl]);
111
+ }, [user]);
112
112
  useEffect(() => {
113
113
  function onKey(e) {
114
114
  if (e.key === 'Escape' && modal)
@@ -134,17 +134,19 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
134
134
  setBillingLoading(true);
135
135
  setPlansLoading(true);
136
136
  try {
137
- const rawApiUrl = client.apiUrl ?? 'https://auth.slyxup.online';
137
+ const rawApiUrl = client.apiUrl ??
138
+ 'https://auth.slyxup.online';
138
139
  const billingUrl = rawApiUrl.replace('auth.slyxup.online', 'billing.slyxup.online');
139
- const token = client?._token
140
- ?? client?.getToken?.();
140
+ const token = client?._token ??
141
+ client?.getToken?.();
141
142
  const headers = {
142
143
  'Content-Type': 'application/json',
143
144
  };
144
145
  if (token)
145
146
  headers.Authorization = `Bearer ${token}`;
146
147
  // Also forward publishable key if available (helps billing resolve project)
147
- const pubKey = client?.publishableKey;
148
+ const pubKey = client
149
+ ?.publishableKey;
148
150
  if (pubKey && pubKey !== 'pk_test_missing')
149
151
  headers['X-Publishable-Key'] = pubKey;
150
152
  // Derive projectId for plans: prefer user.projectId, then try subscription's projectId, fallback none
@@ -163,7 +165,7 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
163
165
  `${billingUrl}/v1/subscription`,
164
166
  ]) {
165
167
  try {
166
- const j = await fetchJson(path);
168
+ const j = (await fetchJson(path));
167
169
  if (j && j.ok !== false) {
168
170
  subData = j;
169
171
  break;
@@ -184,9 +186,17 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
184
186
  setSubscription({
185
187
  id: String(sub.id ?? ''),
186
188
  status: String(sub.status ?? 'active'),
187
- planId: sub.planId ?? sub.plan_id ?? null,
188
- planName: sub.planName ?? sub.plan_name ?? sub.name ?? null,
189
- currentPeriodEnd: sub.currentPeriodEnd ?? sub.current_period_end ?? sub.currentPeriod_end ?? null,
189
+ planId: sub.planId ??
190
+ sub.plan_id ??
191
+ null,
192
+ planName: sub.planName ??
193
+ sub.plan_name ??
194
+ sub.name ??
195
+ null,
196
+ currentPeriodEnd: sub.currentPeriodEnd ??
197
+ sub.current_period_end ??
198
+ sub.currentPeriod_end ??
199
+ null,
190
200
  cancelAtPeriodEnd: Boolean(sub.cancelAtPeriodEnd ?? sub.cancel_at_period_end ?? false),
191
201
  });
192
202
  }
@@ -198,7 +208,10 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
198
208
  setSubscription(null);
199
209
  }
200
210
  // Invoices
201
- for (const path of [`${billingUrl}/v1/billing/invoices`, `${billingUrl}/v1/invoices`]) {
211
+ for (const path of [
212
+ `${billingUrl}/v1/billing/invoices`,
213
+ `${billingUrl}/v1/invoices`,
214
+ ]) {
202
215
  try {
203
216
  const invJ = (await fetchJson(path));
204
217
  if (invJ?.ok !== false && Array.isArray(invJ.invoices)) {
@@ -207,7 +220,9 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
207
220
  amount: Number(inv.amount ?? 0),
208
221
  currency: String(inv.currency ?? 'USD'),
209
222
  status: String(inv.status ?? 'pending'),
210
- billedAt: inv.billedAt ?? inv.billed_at ?? null,
223
+ billedAt: inv.billedAt ??
224
+ inv.billed_at ??
225
+ null,
211
226
  })));
212
227
  break;
213
228
  }
@@ -348,14 +363,18 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
348
363
  async function handleCheckout(planId) {
349
364
  setCheckoutId(planId);
350
365
  try {
351
- const rawApiUrl = client.apiUrl ?? 'https://auth.slyxup.online';
366
+ const rawApiUrl = client.apiUrl ??
367
+ 'https://auth.slyxup.online';
352
368
  const billingUrl = rawApiUrl.replace('auth.slyxup.online', 'billing.slyxup.online');
353
- const token = client?._token
354
- ?? client?.getToken?.();
355
- const headers = { 'Content-Type': 'application/json' };
369
+ const token = client?._token ??
370
+ client?.getToken?.();
371
+ const headers = {
372
+ 'Content-Type': 'application/json',
373
+ };
356
374
  if (token)
357
375
  headers.Authorization = `Bearer ${token}`;
358
- const pubKey = client?.publishableKey;
376
+ const pubKey = client
377
+ ?.publishableKey;
359
378
  if (pubKey && pubKey !== 'pk_test_missing')
360
379
  headers['X-Publishable-Key'] = pubKey;
361
380
  const res = await fetch(`${billingUrl}/v1/billing/checkout`, {
@@ -370,7 +389,9 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
370
389
  return;
371
390
  }
372
391
  if (!res.ok)
373
- throw new Error(typeof data.error === 'string' ? data.error : `Checkout failed (${res.status})`);
392
+ throw new Error(typeof data.error === 'string'
393
+ ? data.error
394
+ : `Checkout failed (${res.status})`);
374
395
  }
375
396
  catch (err) {
376
397
  // Fallback: if billing checkout isn't configured, just log. Parent can handle via window redirect.
@@ -388,24 +409,39 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
388
409
  const name = displayName(user);
389
410
  // Resolve current plan name via plans lookup if subscription has planId but no planName
390
411
  const currentPlan = subscription
391
- ? plans.find((p) => p.id === subscription.planId) ?? null
412
+ ? (plans.find((p) => p.id === subscription.planId) ?? null)
392
413
  : null;
393
414
  const resolvedPlanName = subscription?.planName ?? currentPlan?.name ?? null;
394
415
  const bodyInner = (_jsxs(_Fragment, { children: [_jsxs("div", { className: "slx-profile-head", children: [_jsx("h2", { className: "slx-profile-title", children: "Account settings" }), modal && (_jsx("button", { type: "button", className: "slx-profile-close", onClick: (e) => {
395
416
  e.stopPropagation();
396
417
  onClose?.();
397
- }, "aria-label": "Close account settings", children: "\u2715" }))] }), _jsxs("div", { className: "slx-profile-body", children: [_jsxs("nav", { className: "slx-profile-nav", "aria-label": "Settings sections", children: [_jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'profile' ? ' on' : ''}`, onClick: () => setTab('profile'), "aria-current": tab === 'profile' ? 'page' : undefined, children: [_jsx(ProfileIcon, {}), " Profile"] }), _jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'security' ? ' on' : ''}`, onClick: () => setTab('security'), "aria-current": tab === 'security' ? 'page' : undefined, children: [_jsx(ShieldIcon, {}), " Security"] }), _jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'billing' ? ' on' : ''}`, onClick: () => setTab('billing'), "aria-current": tab === 'billing' ? 'page' : undefined, children: [_jsx(CreditCardIcon, {}), " Billing"] })] }), _jsxs("div", { className: "slx-profile-content", children: [tab === 'profile' && (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsxs("div", { className: "slx-avatar-row", children: [_jsx("div", { className: "slx-avatar-lg", "aria-hidden": "true", children: user.avatarUrl ? _jsx("img", { src: user.avatarUrl, alt: "" }) : initials(user) }), _jsxs("div", { style: { minWidth: 0 }, children: [_jsx("p", { className: "slx-row-value", style: { margin: 0, wordBreak: 'break-word' }, children: name }), _jsx("p", { className: "slx-row-label", style: { wordBreak: 'break-all' }, children: user.email })] })] }), saved && (_jsx("p", { className: "slx-error-text", style: { color: 'var(--slx-success)' }, children: "Profile saved." })), _jsxs("form", { onSubmit: onProfileSubmit, children: [_jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-first", children: "First name" }), _jsx("input", { id: "slx-up-first", className: "slx-input", type: "text", autoComplete: "given-name", value: firstName, onChange: (e) => setFirstName(e.target.value) })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-last", children: "Last name" }), _jsx("input", { id: "slx-up-last", className: "slx-input", type: "text", autoComplete: "family-name", value: lastName, onChange: (e) => setLastName(e.target.value) })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-avatar", children: "Avatar URL" }), _jsx("input", { id: "slx-up-avatar", className: "slx-input", type: "url", placeholder: "https://\u2026", value: avatarUrl, onChange: (e) => setAvatarUrl(e.target.value) }), _jsx("p", { className: "slx-hint", children: "Paste a public image URL for your avatar." })] }), _jsx("button", { className: "slx-btn", type: "submit", disabled: busy, children: busy ? 'Saving…' : 'Save changes' })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Email" }), _jsxs("div", { className: "slx-row", style: { flexWrap: 'wrap', gap: 8 }, children: [_jsxs("div", { style: { minWidth: 0 }, children: [_jsx("p", { className: "slx-row-value", style: { wordBreak: 'break-all' }, children: user.email }), _jsx("p", { className: "slx-row-label", children: "Primary email" })] }), emailVerified ? (_jsx("span", { className: "slx-badge slx-badge-ok", children: "Verified" })) : (_jsxs("span", { style: {
418
+ }, "aria-label": "Close account settings", children: "\u2715" }))] }), _jsxs("div", { className: "slx-profile-body", children: [_jsxs("nav", { className: "slx-profile-nav", "aria-label": "Settings sections", children: [_jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'profile' ? ' on' : ''}`, onClick: () => setTab('profile'), "aria-current": tab === 'profile' ? 'page' : undefined, children: [_jsx(ProfileIcon, {}), " Profile"] }), _jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'security' ? ' on' : ''}`, onClick: () => setTab('security'), "aria-current": tab === 'security' ? 'page' : undefined, children: [_jsx(ShieldIcon, {}), " Security"] }), _jsxs("button", { type: "button", className: `slx-profile-nav-btn${tab === 'billing' ? ' on' : ''}`, onClick: () => setTab('billing'), "aria-current": tab === 'billing' ? 'page' : undefined, children: [_jsx(CreditCardIcon, {}), " Billing"] })] }), _jsxs("div", { className: "slx-profile-content", children: [tab === 'profile' && (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsxs("div", { className: "slx-avatar-row", children: [_jsx("div", { className: "slx-avatar-lg", "aria-hidden": "true", children: user.avatarUrl ? (_jsx("img", { src: user.avatarUrl, alt: "" })) : (initials(user)) }), _jsxs("div", { style: { minWidth: 0 }, children: [_jsx("p", { className: "slx-row-value", style: { margin: 0, wordBreak: 'break-word' }, children: name }), _jsx("p", { className: "slx-row-label", style: { wordBreak: 'break-all' }, children: user.email })] })] }), saved && (_jsx("p", { className: "slx-error-text", style: { color: 'var(--slx-success)' }, children: "Profile saved." })), _jsxs("form", { onSubmit: onProfileSubmit, children: [_jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-first", children: "First name" }), _jsx("input", { id: "slx-up-first", className: "slx-input", type: "text", autoComplete: "given-name", value: firstName, onChange: (e) => setFirstName(e.target.value) })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-last", children: "Last name" }), _jsx("input", { id: "slx-up-last", className: "slx-input", type: "text", autoComplete: "family-name", value: lastName, onChange: (e) => setLastName(e.target.value) })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-up-avatar", children: "Avatar URL" }), _jsx("input", { id: "slx-up-avatar", className: "slx-input", type: "url", placeholder: "https://\u2026", value: avatarUrl, onChange: (e) => setAvatarUrl(e.target.value) }), _jsx("p", { className: "slx-hint", children: "Paste a public image URL for your avatar." })] }), _jsx("button", { className: "slx-btn", type: "submit", disabled: busy, children: busy ? 'Saving…' : 'Save changes' })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Email" }), _jsxs("div", { className: "slx-row", style: { flexWrap: 'wrap', gap: 8 }, children: [_jsxs("div", { style: { minWidth: 0 }, children: [_jsx("p", { className: "slx-row-value", style: { wordBreak: 'break-all' }, children: user.email }), _jsx("p", { className: "slx-row-label", children: "Primary email" })] }), emailVerified ? (_jsx("span", { className: "slx-badge slx-badge-ok", children: "Verified" })) : (_jsxs("span", { style: {
398
419
  display: 'inline-flex',
399
420
  alignItems: 'center',
400
421
  gap: 8,
401
422
  flexWrap: 'wrap',
402
- }, children: [_jsx("span", { className: "slx-badge slx-badge-warn", children: "Unverified" }), _jsx("button", { type: "button", className: "slx-link", onClick: onResendVerification, disabled: resending, children: resending ? 'Sending…' : resent ? 'Sent ✓' : 'Resend' })] }))] })] })] })), tab === 'security' && (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Change password" }), pwSaved && (_jsx("p", { className: "slx-error-text", style: { color: 'var(--slx-success)' }, children: "Password updated." })), pwError && _jsx("p", { className: "slx-error-text", children: pwError }), _jsxs("form", { onSubmit: onPasswordSubmit, children: [_jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-current", children: "Current password" }), _jsx("input", { id: "slx-pw-current", className: "slx-input", type: "password", autoComplete: "current-password", value: currentPassword, onChange: (e) => setCurrentPassword(e.target.value), required: true })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-new", children: "New password" }), _jsx("input", { id: "slx-pw-new", className: "slx-input", type: "password", autoComplete: "new-password", minLength: 8, value: newPassword, onChange: (e) => setNewPassword(e.target.value), required: true }), _jsx("p", { className: "slx-hint", children: "At least 8 characters." })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-confirm", children: "Confirm new password" }), _jsx("input", { id: "slx-pw-confirm", className: "slx-input", type: "password", autoComplete: "new-password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true })] }), _jsx("button", { className: "slx-btn", type: "submit", disabled: pwBusy, children: pwBusy ? 'Updating…' : 'Update password' })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Active sessions" }), sessionsLoading ? (_jsx("p", { className: "slx-hint", children: "Loading sessions\u2026" })) : sessions.length === 0 ? (_jsx("p", { className: "slx-hint", children: "No active sessions." })) : (_jsxs(_Fragment, { children: [sessions.map((s) => (_jsxs("div", { className: "slx-session", children: [_jsxs("div", { className: "slx-session-meta", children: [_jsxs("p", { className: "slx-session-device", children: [deviceLabel(s.userAgent), s.isCurrent && _jsx("span", { className: "slx-badge slx-badge-accent", children: "This device" })] }), _jsx("p", { className: "slx-session-sub", children: [s.ipAddress, `created ${formatDate(s.createdAt)}`, `expires ${formatDate(s.expiresAt)}`]
423
+ }, children: [_jsx("span", { className: "slx-badge slx-badge-warn", children: "Unverified" }), _jsx("button", { type: "button", className: "slx-link", onClick: onResendVerification, disabled: resending, children: resending ? 'Sending…' : resent ? 'Sent ✓' : 'Resend' })] }))] })] })] })), tab === 'security' && (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Change password" }), pwSaved && (_jsx("p", { className: "slx-error-text", style: { color: 'var(--slx-success)' }, children: "Password updated." })), pwError && _jsx("p", { className: "slx-error-text", children: pwError }), _jsxs("form", { onSubmit: onPasswordSubmit, children: [_jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-current", children: "Current password" }), _jsx("input", { id: "slx-pw-current", className: "slx-input", type: "password", autoComplete: "current-password", value: currentPassword, onChange: (e) => setCurrentPassword(e.target.value), required: true })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-new", children: "New password" }), _jsx("input", { id: "slx-pw-new", className: "slx-input", type: "password", autoComplete: "new-password", minLength: 8, value: newPassword, onChange: (e) => setNewPassword(e.target.value), required: true }), _jsx("p", { className: "slx-hint", children: "At least 8 characters." })] }), _jsxs("div", { className: "slx-field", children: [_jsx("label", { className: "slx-label", htmlFor: "slx-pw-confirm", children: "Confirm new password" }), _jsx("input", { id: "slx-pw-confirm", className: "slx-input", type: "password", autoComplete: "new-password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true })] }), _jsx("button", { className: "slx-btn", type: "submit", disabled: pwBusy, children: pwBusy ? 'Updating…' : 'Update password' })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Active sessions" }), sessionsLoading ? (_jsx("p", { className: "slx-hint", children: "Loading sessions\u2026" })) : sessions.length === 0 ? (_jsx("p", { className: "slx-hint", children: "No active sessions." })) : (_jsxs(_Fragment, { children: [sessions.map((s) => (_jsxs("div", { className: "slx-session", children: [_jsxs("div", { className: "slx-session-meta", children: [_jsxs("p", { className: "slx-session-device", children: [deviceLabel(s.userAgent), s.isCurrent && (_jsx("span", { className: "slx-badge slx-badge-accent", children: "This device" }))] }), _jsx("p", { className: "slx-session-sub", children: [
424
+ s.ipAddress,
425
+ `created ${formatDate(s.createdAt)}`,
426
+ `expires ${formatDate(s.expiresAt)}`,
427
+ ]
403
428
  .filter(Boolean)
404
- .join(' · ') })] }), !s.isCurrent && (_jsx("button", { type: "button", className: "slx-btn-danger-outline", onClick: () => onRevoke(s.id), disabled: revokingId === s.id, children: revokingId === s.id ? '…' : 'Revoke' }))] }, s.id))), sessions.some((s) => !s.isCurrent) && (_jsx("button", { type: "button", className: "slx-btn-danger-outline", style: { width: '100%', marginTop: 4 }, onClick: onRevokeOthers, disabled: othersRevoking, children: othersRevoking ? 'Signing out…' : 'Sign out other devices' }))] }))] }), _jsxs("section", { className: "slx-danger-zone", children: [_jsx("p", { className: "slx-danger-title", children: "Danger zone" }), _jsx("p", { className: "slx-danger-desc", children: "Permanently deletes your account and all associated data. Active sessions are revoked immediately. This cannot be undone." }), deleteError && _jsx("p", { className: "slx-error-text", children: deleteError }), _jsxs("div", { className: "slx-field", children: [_jsxs("label", { className: "slx-label", htmlFor: "slx-del-confirm", children: ["Type ", _jsx("strong", { children: "DELETE" }), " to confirm"] }), _jsx("input", { id: "slx-del-confirm", className: "slx-input", type: "text", value: confirmText, onChange: (e) => setConfirmText(e.target.value), placeholder: "DELETE" })] }), _jsx("button", { type: "button", className: "slx-btn", style: {
429
+ .join(' · ') })] }), !s.isCurrent && (_jsx("button", { type: "button", className: "slx-btn-danger-outline", onClick: () => onRevoke(s.id), disabled: revokingId === s.id, children: revokingId === s.id ? '…' : 'Revoke' }))] }, s.id))), sessions.some((s) => !s.isCurrent) && (_jsx("button", { type: "button", className: "slx-btn-danger-outline", style: { width: '100%', marginTop: 4 }, onClick: onRevokeOthers, disabled: othersRevoking, children: othersRevoking
430
+ ? 'Signing out…'
431
+ : 'Sign out other devices' }))] }))] }), _jsxs("section", { className: "slx-danger-zone", children: [_jsx("p", { className: "slx-danger-title", children: "Danger zone" }), _jsx("p", { className: "slx-danger-desc", children: "Permanently deletes your account and all associated data. Active sessions are revoked immediately. This cannot be undone." }), deleteError && _jsx("p", { className: "slx-error-text", children: deleteError }), _jsxs("div", { className: "slx-field", children: [_jsxs("label", { className: "slx-label", htmlFor: "slx-del-confirm", children: ["Type ", _jsx("strong", { children: "DELETE" }), " to confirm"] }), _jsx("input", { id: "slx-del-confirm", className: "slx-input", type: "text", value: confirmText, onChange: (e) => setConfirmText(e.target.value), placeholder: "DELETE" })] }), _jsx("button", { type: "button", className: "slx-btn", style: {
405
432
  background: 'var(--slx-danger)',
406
433
  borderColor: 'var(--slx-danger)',
407
434
  }, onClick: onDeleteAccount, disabled: confirmText !== 'DELETE' || deleteBusy, children: deleteBusy ? 'Deleting…' : 'Delete my account forever' })] })] })), tab === 'billing' &&
408
- (billingLoading ? (_jsx("section", { className: "slx-profile-sec", children: _jsx("p", { className: "slx-hint", children: "Loading billing information\u2026" }) })) : !subscription ? (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Subscription" }), _jsxs("div", { className: "slx-billing-card", children: [_jsx("p", { className: "slx-billing-plan", children: "No active subscription" }), _jsx("p", { className: "slx-billing-detail", children: "You don't have a subscription yet. Choose a plan to get started." })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Available plans" }), plansLoading ? (_jsx("p", { className: "slx-hint", children: "Loading plans\u2026" })) : plans.length === 0 ? (_jsxs("div", { className: "slx-billing-card", style: { textAlign: 'center' }, children: [_jsx("p", { className: "slx-billing-detail", children: "No plans configured for this project yet." }), _jsx("p", { className: "slx-hint", style: { marginTop: 6 }, children: "Ask your admin to create a plan in billing." })] })) : (_jsx("div", { className: "slx-billing-plans", children: plans.map((plan) => (_jsxs("div", { className: `slx-plan-card${plan.isPopular ? ' popular' : ''}`, children: [plan.isPopular && _jsx("span", { className: "slx-plan-badge", children: "POPULAR" }), _jsx("p", { className: "slx-plan-name", children: plan.name }), _jsxs("p", { style: { margin: '2px 0 0' }, children: [_jsx("span", { className: "slx-plan-price", children: formatCurrency(plan.amount, plan.currency) }), _jsxs("span", { className: "slx-plan-interval", children: ["/", plan.interval] })] }), plan.trialDays ? (_jsxs("p", { className: "slx-billing-detail", style: { color: 'var(--slx-accent)', marginTop: 4 }, children: [plan.trialDays, " day free trial"] })) : (_jsx("p", { className: "slx-billing-detail", style: { visibility: 'hidden', marginTop: 4 }, children: "\u00A0" })), _jsx("ul", { className: "slx-plan-features", children: (plan.features ?? []).map((f) => (_jsx("li", { children: f }, f))) }), _jsx("button", { type: "button", className: "slx-btn slx-plan-cta", onClick: () => handleCheckout(plan.id), disabled: checkoutId === plan.id, children: checkoutId === plan.id ? 'Redirecting…' : 'Choose plan' })] }, plan.id))) }))] }), invoices.length > 0 && (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Invoices" }), invoices.map((inv) => (_jsxs("div", { className: "slx-invoice-row", children: [_jsx("span", { className: "slx-invoice-date", children: inv.billedAt ? formatDate(inv.billedAt) : '—' }), _jsx("span", { className: "slx-invoice-amount", children: formatCurrency(inv.amount, inv.currency) }), _jsx("span", { className: `slx-badge ${inv.status === 'paid' ? 'slx-badge-ok' : inv.status === 'overdue' ? 'slx-badge-warn' : 'slx-badge-accent'}`, children: inv.status })] }, inv.id)))] }))] })) : (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Current plan" }), _jsxs("div", { className: "slx-billing-card", children: [_jsxs("div", { style: {
435
+ (billingLoading ? (_jsx("section", { className: "slx-profile-sec", children: _jsx("p", { className: "slx-hint", children: "Loading billing information\u2026" }) })) : !subscription ? (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Subscription" }), _jsxs("div", { className: "slx-billing-card", children: [_jsx("p", { className: "slx-billing-plan", children: "No active subscription" }), _jsx("p", { className: "slx-billing-detail", children: "You don't have a subscription yet. Choose a plan to get started." })] })] }), _jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Available plans" }), plansLoading ? (_jsx("p", { className: "slx-hint", children: "Loading plans\u2026" })) : plans.length === 0 ? (_jsxs("div", { className: "slx-billing-card", style: { textAlign: 'center' }, children: [_jsx("p", { className: "slx-billing-detail", children: "No plans configured for this project yet." }), _jsx("p", { className: "slx-hint", style: { marginTop: 6 }, children: "Ask your admin to create a plan in billing." })] })) : (_jsx("div", { className: "slx-billing-plans", children: plans.map((plan) => (_jsxs("div", { className: `slx-plan-card${plan.isPopular ? ' popular' : ''}`, children: [plan.isPopular && (_jsx("span", { className: "slx-plan-badge", children: "POPULAR" })), _jsx("p", { className: "slx-plan-name", children: plan.name }), _jsxs("p", { style: { margin: '2px 0 0' }, children: [_jsx("span", { className: "slx-plan-price", children: formatCurrency(plan.amount, plan.currency) }), _jsxs("span", { className: "slx-plan-interval", children: ["/", plan.interval] })] }), plan.trialDays ? (_jsxs("p", { className: "slx-billing-detail", style: {
436
+ color: 'var(--slx-accent)',
437
+ marginTop: 4,
438
+ }, children: [plan.trialDays, " day free trial"] })) : (_jsx("p", { className: "slx-billing-detail", style: { visibility: 'hidden', marginTop: 4 }, children: "\u00A0" })), _jsx("ul", { className: "slx-plan-features", children: (plan.features ?? []).map((f) => (_jsx("li", { children: f }, f))) }), _jsx("button", { type: "button", className: "slx-btn slx-plan-cta", onClick: () => handleCheckout(plan.id), disabled: checkoutId === plan.id, children: checkoutId === plan.id
439
+ ? 'Redirecting…'
440
+ : 'Choose plan' })] }, plan.id))) }))] }), invoices.length > 0 && (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Invoices" }), invoices.map((inv) => (_jsxs("div", { className: "slx-invoice-row", children: [_jsx("span", { className: "slx-invoice-date", children: inv.billedAt ? formatDate(inv.billedAt) : '—' }), _jsx("span", { className: "slx-invoice-amount", children: formatCurrency(inv.amount, inv.currency) }), _jsx("span", { className: `slx-badge ${inv.status === 'paid'
441
+ ? 'slx-badge-ok'
442
+ : inv.status === 'overdue'
443
+ ? 'slx-badge-warn'
444
+ : 'slx-badge-accent'}`, children: inv.status })] }, inv.id)))] }))] })) : (_jsxs(_Fragment, { children: [_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Current plan" }), _jsxs("div", { className: "slx-billing-card", children: [_jsxs("div", { style: {
409
445
  display: 'flex',
410
446
  justifyContent: 'space-between',
411
447
  alignItems: 'flex-start',
@@ -413,14 +449,23 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
413
449
  flexWrap: 'wrap',
414
450
  }, children: [_jsxs("div", { style: { minWidth: 0 }, children: [_jsx("p", { className: "slx-billing-plan", children: resolvedPlanName ?? 'Subscription' }), _jsxs("p", { className: "slx-billing-detail", children: ["Status:", ' ', _jsx("span", { className: `slx-billing-status slx-billing-status-${subscription.status}`, children: subscription.status })] }), subscription.currentPeriodEnd && (_jsx("p", { className: "slx-billing-detail", children: subscription.cancelAtPeriodEnd
415
451
  ? `Cancels ${formatDate(subscription.currentPeriodEnd)}`
416
- : `Renews ${formatDate(subscription.currentPeriodEnd)}` })), subscription.cancelAtPeriodEnd && (_jsx("p", { className: "slx-billing-detail", style: { color: 'var(--slx-danger)', fontWeight: 600 }, children: "Scheduled to cancel at period end" }))] }), currentPlan && (_jsxs("span", { className: "slx-badge slx-badge-accent", style: { flexShrink: 0 }, children: [formatCurrency(currentPlan.amount, currentPlan.currency), "/", currentPlan.interval] }))] }), currentPlan?.features && currentPlan.features.length > 0 && (_jsx("ul", { className: "slx-plan-features", style: { margin: '12px 0 0' }, children: currentPlan.features.map((f) => (_jsx("li", { children: f }, f))) })), _jsx("div", { className: "slx-billing-actions", children: _jsx("button", { type: "button", className: "slx-btn-secondary", onClick: () => void loadBilling(), children: "Refresh" }) })] })] }), plansLoading ? (_jsx("section", { className: "slx-profile-sec", children: _jsx("p", { className: "slx-hint", children: "Loading available plans\u2026" }) })) : plans.length > 0 ? (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Available plans" }), _jsx("p", { className: "slx-hint", style: { marginBottom: 8 }, children: "Switch plans anytime. Changes apply at the next billing cycle." }), _jsx("div", { className: "slx-billing-plans", children: plans.map((plan) => {
452
+ : `Renews ${formatDate(subscription.currentPeriodEnd)}` })), subscription.cancelAtPeriodEnd && (_jsx("p", { className: "slx-billing-detail", style: {
453
+ color: 'var(--slx-danger)',
454
+ fontWeight: 600,
455
+ }, children: "Scheduled to cancel at period end" }))] }), currentPlan && (_jsxs("span", { className: "slx-badge slx-badge-accent", style: { flexShrink: 0 }, children: [formatCurrency(currentPlan.amount, currentPlan.currency), "/", currentPlan.interval] }))] }), currentPlan?.features &&
456
+ currentPlan.features.length > 0 && (_jsx("ul", { className: "slx-plan-features", style: { margin: '12px 0 0' }, children: currentPlan.features.map((f) => (_jsx("li", { children: f }, f))) })), _jsx("div", { className: "slx-billing-actions", children: _jsx("button", { type: "button", className: "slx-btn-secondary", onClick: () => void loadBilling(), children: "Refresh" }) })] })] }), plansLoading ? (_jsx("section", { className: "slx-profile-sec", children: _jsx("p", { className: "slx-hint", children: "Loading available plans\u2026" }) })) : plans.length > 0 ? (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Available plans" }), _jsx("p", { className: "slx-hint", style: { marginBottom: 8 }, children: "Switch plans anytime. Changes apply at the next billing cycle." }), _jsx("div", { className: "slx-billing-plans", children: plans.map((plan) => {
417
457
  const isCurrent = subscription.planId
418
458
  ? subscription.planId === plan.id
419
459
  : resolvedPlanName === plan.name;
420
460
  const currentAmount = currentPlan?.amount ?? 0;
421
461
  const isUpgrade = plan.amount > currentAmount;
422
462
  const isDowngrade = plan.amount < currentAmount && !isCurrent;
423
- return (_jsxs("div", { className: `slx-plan-card${plan.isPopular ? ' popular' : ''}`, style: isCurrent ? { opacity: 0.92 } : undefined, children: [plan.isPopular && !isCurrent && _jsx("span", { className: "slx-plan-badge", children: "POPULAR" }), isCurrent && _jsx("span", { className: "slx-plan-badge", style: { background: 'var(--slx-success)' }, children: "CURRENT" }), _jsx("p", { className: "slx-plan-name", children: plan.name }), _jsxs("p", { style: { margin: '2px 0 0' }, children: [_jsx("span", { className: "slx-plan-price", children: formatCurrency(plan.amount, plan.currency) }), _jsxs("span", { className: "slx-plan-interval", children: ["/", plan.interval] })] }), plan.trialDays ? (_jsxs("p", { className: "slx-billing-detail", style: { color: 'var(--slx-accent)', marginTop: 4 }, children: [plan.trialDays, " day trial"] })) : (_jsx("p", { className: "slx-billing-detail", style: { visibility: 'hidden', marginTop: 4 }, children: "\u00A0" })), _jsx("ul", { className: "slx-plan-features", children: (plan.features ?? []).map((f) => (_jsx("li", { children: f }, f))) }), _jsx("button", { type: "button", className: isCurrent ? 'slx-btn-secondary slx-plan-cta' : 'slx-btn slx-plan-cta', disabled: isCurrent || checkoutId === plan.id, onClick: () => handleCheckout(plan.id), children: isCurrent
463
+ return (_jsxs("div", { className: `slx-plan-card${plan.isPopular ? ' popular' : ''}`, style: isCurrent ? { opacity: 0.92 } : undefined, children: [plan.isPopular && !isCurrent && (_jsx("span", { className: "slx-plan-badge", children: "POPULAR" })), isCurrent && (_jsx("span", { className: "slx-plan-badge", style: { background: 'var(--slx-success)' }, children: "CURRENT" })), _jsx("p", { className: "slx-plan-name", children: plan.name }), _jsxs("p", { style: { margin: '2px 0 0' }, children: [_jsx("span", { className: "slx-plan-price", children: formatCurrency(plan.amount, plan.currency) }), _jsxs("span", { className: "slx-plan-interval", children: ["/", plan.interval] })] }), plan.trialDays ? (_jsxs("p", { className: "slx-billing-detail", style: {
464
+ color: 'var(--slx-accent)',
465
+ marginTop: 4,
466
+ }, children: [plan.trialDays, " day trial"] })) : (_jsx("p", { className: "slx-billing-detail", style: { visibility: 'hidden', marginTop: 4 }, children: "\u00A0" })), _jsx("ul", { className: "slx-plan-features", children: (plan.features ?? []).map((f) => (_jsx("li", { children: f }, f))) }), _jsx("button", { type: "button", className: isCurrent
467
+ ? 'slx-btn-secondary slx-plan-cta'
468
+ : 'slx-btn slx-plan-cta', disabled: isCurrent || checkoutId === plan.id, onClick: () => handleCheckout(plan.id), children: isCurrent
424
469
  ? 'Current plan'
425
470
  : checkoutId === plan.id
426
471
  ? 'Redirecting…'
@@ -429,13 +474,19 @@ export function UserProfile({ modal = true, onClose, onDeleted, }) {
429
474
  : isDowngrade
430
475
  ? 'Downgrade'
431
476
  : 'Switch plan' })] }, plan.id));
432
- }) })] })) : null, invoices.length > 0 && (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Invoices" }), invoices.map((inv) => (_jsxs("div", { className: "slx-invoice-row", children: [_jsx("span", { className: "slx-invoice-date", children: inv.billedAt ? formatDate(inv.billedAt) : '—' }), _jsx("span", { className: "slx-invoice-amount", children: formatCurrency(inv.amount, inv.currency) }), _jsx("span", { className: `slx-badge ${inv.status === 'paid' ? 'slx-badge-ok' : inv.status === 'overdue' ? 'slx-badge-warn' : 'slx-badge-accent'}`, children: inv.status })] }, inv.id)))] }))] })))] })] })] }));
477
+ }) })] })) : null, invoices.length > 0 && (_jsxs("section", { className: "slx-profile-sec", children: [_jsx("h3", { className: "slx-sec-title", children: "Invoices" }), invoices.map((inv) => (_jsxs("div", { className: "slx-invoice-row", children: [_jsx("span", { className: "slx-invoice-date", children: inv.billedAt ? formatDate(inv.billedAt) : '—' }), _jsx("span", { className: "slx-invoice-amount", children: formatCurrency(inv.amount, inv.currency) }), _jsx("span", { className: `slx-badge ${inv.status === 'paid'
478
+ ? 'slx-badge-ok'
479
+ : inv.status === 'overdue'
480
+ ? 'slx-badge-warn'
481
+ : 'slx-badge-accent'}`, children: inv.status })] }, inv.id)))] }))] })))] })] })] }));
433
482
  if (!modal) {
434
483
  return (_jsx("div", { className: "slx-profile-modal", style: { maxHeight: 'none' }, children: bodyInner }));
435
484
  }
436
485
  // Modal overlay — click on backdrop closes, click inside modal does not.
437
486
  // Use onMouseDown + onClick for desktop + mobile reliability; close button also works via stopPropagation.
438
- return (_jsx("div", { className: "slx-overlay", onMouseDown: (e) => {
487
+ return (
488
+ // biome-ignore lint/a11y/useKeyWithClickEvents: overlay click is for mouse; keyboard Escape handled in effect
489
+ _jsx("div", { className: "slx-overlay", onMouseDown: (e) => {
439
490
  if (e.target === e.currentTarget)
440
491
  onClose?.();
441
492
  }, onClick: (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"UserProfile.js","sourceRoot":"","sources":["../../../src/components/UserProfile/UserProfile.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserProfile.js","sourceRoot":"","sources":["../../../src/components/UserProfile/UserProfile.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slyxup/ui",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "description": "@slyxup/ui — SlyxUp SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -164,7 +164,7 @@ export function UserProfile({
164
164
  setLastName(user.lastName ?? '');
165
165
  setAvatarUrl(user.avatarUrl ?? '');
166
166
  }
167
- }, [user?.firstName, user?.lastName, user?.avatarUrl]);
167
+ }, [user]);
168
168
 
169
169
  useEffect(() => {
170
170
  function onKey(e: KeyboardEvent) {
@@ -191,20 +191,35 @@ export function UserProfile({
191
191
  setPlansLoading(true);
192
192
  try {
193
193
  const rawApiUrl =
194
- (client as unknown as { apiUrl: string }).apiUrl ?? 'https://auth.slyxup.online';
195
- const billingUrl = rawApiUrl.replace('auth.slyxup.online', 'billing.slyxup.online');
196
- const token = (client as unknown as { _token?: string; getToken?: () => string | undefined })?._token
197
- ?? (client as unknown as { getToken?: () => string | undefined })?.getToken?.();
194
+ (client as unknown as { apiUrl: string }).apiUrl ??
195
+ 'https://auth.slyxup.online';
196
+ const billingUrl = rawApiUrl.replace(
197
+ 'auth.slyxup.online',
198
+ 'billing.slyxup.online'
199
+ );
200
+ const token =
201
+ (
202
+ client as unknown as {
203
+ _token?: string;
204
+ getToken?: () => string | undefined;
205
+ }
206
+ )?._token ??
207
+ (
208
+ client as unknown as { getToken?: () => string | undefined }
209
+ )?.getToken?.();
198
210
  const headers: Record<string, string> = {
199
211
  'Content-Type': 'application/json',
200
212
  };
201
213
  if (token) headers.Authorization = `Bearer ${token}`;
202
214
  // Also forward publishable key if available (helps billing resolve project)
203
- const pubKey = (client as unknown as { publishableKey?: string })?.publishableKey;
204
- if (pubKey && pubKey !== 'pk_test_missing') headers['X-Publishable-Key'] = pubKey;
215
+ const pubKey = (client as unknown as { publishableKey?: string })
216
+ ?.publishableKey;
217
+ if (pubKey && pubKey !== 'pk_test_missing')
218
+ headers['X-Publishable-Key'] = pubKey;
205
219
 
206
220
  // Derive projectId for plans: prefer user.projectId, then try subscription's projectId, fallback none
207
- const projectId = (user as unknown as { projectId?: string | null })?.projectId ?? null;
221
+ const projectId =
222
+ (user as unknown as { projectId?: string | null })?.projectId ?? null;
208
223
 
209
224
  // Fetch subscription + invoices (new /v1/billing/* with fallback to legacy /v1/*)
210
225
  async function fetchJson(url: string) {
@@ -220,7 +235,7 @@ export function UserProfile({
220
235
  `${billingUrl}/v1/subscription`,
221
236
  ]) {
222
237
  try {
223
- const j = await fetchJson(path) as Record<string, unknown>;
238
+ const j = (await fetchJson(path)) as Record<string, unknown>;
224
239
  if (j && (j as { ok?: boolean }).ok !== false) {
225
240
  subData = j;
226
241
  break;
@@ -236,17 +251,32 @@ export function UserProfile({
236
251
  subscriptions?: Record<string, unknown>[];
237
252
  };
238
253
  let sub: Record<string, unknown> | null = null;
239
- if (sd.subscription !== undefined) sub = sd.subscription as Record<string, unknown> | null;
240
- else if (Array.isArray(sd.subscriptions) && sd.subscriptions.length > 0) sub = sd.subscriptions[0] as Record<string, unknown>;
254
+ if (sd.subscription !== undefined)
255
+ sub = sd.subscription as Record<string, unknown> | null;
256
+ else if (Array.isArray(sd.subscriptions) && sd.subscriptions.length > 0)
257
+ sub = sd.subscriptions[0] as Record<string, unknown>;
241
258
 
242
259
  if (sub) {
243
260
  setSubscription({
244
261
  id: String(sub.id ?? ''),
245
262
  status: String(sub.status ?? 'active'),
246
- planId: (sub.planId as string | null) ?? (sub.plan_id as string | null) ?? null,
247
- planName: (sub.planName as string | null) ?? (sub.plan_name as string | null) ?? (sub.name as string | null) ?? null,
248
- currentPeriodEnd: (sub.currentPeriodEnd as string | null) ?? (sub.current_period_end as string | null) ?? (sub.currentPeriod_end as string | null) ?? null,
249
- cancelAtPeriodEnd: Boolean(sub.cancelAtPeriodEnd ?? sub.cancel_at_period_end ?? false),
263
+ planId:
264
+ (sub.planId as string | null) ??
265
+ (sub.plan_id as string | null) ??
266
+ null,
267
+ planName:
268
+ (sub.planName as string | null) ??
269
+ (sub.plan_name as string | null) ??
270
+ (sub.name as string | null) ??
271
+ null,
272
+ currentPeriodEnd:
273
+ (sub.currentPeriodEnd as string | null) ??
274
+ (sub.current_period_end as string | null) ??
275
+ (sub.currentPeriod_end as string | null) ??
276
+ null,
277
+ cancelAtPeriodEnd: Boolean(
278
+ sub.cancelAtPeriodEnd ?? sub.cancel_at_period_end ?? false
279
+ ),
250
280
  });
251
281
  } else {
252
282
  setSubscription(null);
@@ -256,9 +286,15 @@ export function UserProfile({
256
286
  }
257
287
 
258
288
  // Invoices
259
- for (const path of [`${billingUrl}/v1/billing/invoices`, `${billingUrl}/v1/invoices`]) {
289
+ for (const path of [
290
+ `${billingUrl}/v1/billing/invoices`,
291
+ `${billingUrl}/v1/invoices`,
292
+ ]) {
260
293
  try {
261
- const invJ = (await fetchJson(path)) as { ok?: boolean; invoices?: unknown[] };
294
+ const invJ = (await fetchJson(path)) as {
295
+ ok?: boolean;
296
+ invoices?: unknown[];
297
+ };
262
298
  if (invJ?.ok !== false && Array.isArray(invJ.invoices)) {
263
299
  setInvoices(
264
300
  (invJ.invoices as Record<string, unknown>[]).map((inv) => ({
@@ -266,7 +302,10 @@ export function UserProfile({
266
302
  amount: Number(inv.amount ?? 0),
267
303
  currency: String(inv.currency ?? 'USD'),
268
304
  status: String(inv.status ?? 'pending'),
269
- billedAt: (inv.billedAt as string | null) ?? (inv.billed_at as string | null) ?? null,
305
+ billedAt:
306
+ (inv.billedAt as string | null) ??
307
+ (inv.billed_at as string | null) ??
308
+ null,
270
309
  }))
271
310
  );
272
311
  break;
@@ -278,9 +317,12 @@ export function UserProfile({
278
317
 
279
318
  // Plans (needs projectId — if missing, try without and degrade gracefully)
280
319
  const planPaths: string[] = [];
281
- if (projectId) planPaths.push(`${billingUrl}/v1/billing/plans?projectId=${projectId}`);
320
+ if (projectId)
321
+ planPaths.push(`${billingUrl}/v1/billing/plans?projectId=${projectId}`);
282
322
  // Also try without projectId as last resort (will 400 but we catch)
283
- planPaths.push(`${billingUrl}/v1/billing/plans?projectId=${projectId ?? ''}`);
323
+ planPaths.push(
324
+ `${billingUrl}/v1/billing/plans?projectId=${projectId ?? ''}`
325
+ );
284
326
  planPaths.push(`${billingUrl}/v1/plans`);
285
327
 
286
328
  let gotPlans = false;
@@ -358,7 +400,9 @@ export function UserProfile({
358
400
  setConfirmPassword('');
359
401
  setTimeout(() => setPwSaved(false), 3000);
360
402
  } catch (err) {
361
- setPwError(err instanceof Error ? err.message : 'Failed to change password');
403
+ setPwError(
404
+ err instanceof Error ? err.message : 'Failed to change password'
405
+ );
362
406
  } finally {
363
407
  setPwBusy(false);
364
408
  }
@@ -392,7 +436,9 @@ export function UserProfile({
392
436
  await client.auth.signOut().catch(() => undefined);
393
437
  onDeleted?.();
394
438
  } catch (err) {
395
- setDeleteError(err instanceof Error ? err.message : 'Failed to delete account');
439
+ setDeleteError(
440
+ err instanceof Error ? err.message : 'Failed to delete account'
441
+ );
396
442
  } finally {
397
443
  setDeleteBusy(false);
398
444
  }
@@ -402,14 +448,30 @@ export function UserProfile({
402
448
  setCheckoutId(planId);
403
449
  try {
404
450
  const rawApiUrl =
405
- (client as unknown as { apiUrl: string }).apiUrl ?? 'https://auth.slyxup.online';
406
- const billingUrl = rawApiUrl.replace('auth.slyxup.online', 'billing.slyxup.online');
407
- const token = (client as unknown as { _token?: string; getToken?: () => string | undefined })?._token
408
- ?? (client as unknown as { getToken?: () => string | undefined })?.getToken?.();
409
- const headers: Record<string, string> = { 'Content-Type': 'application/json' };
451
+ (client as unknown as { apiUrl: string }).apiUrl ??
452
+ 'https://auth.slyxup.online';
453
+ const billingUrl = rawApiUrl.replace(
454
+ 'auth.slyxup.online',
455
+ 'billing.slyxup.online'
456
+ );
457
+ const token =
458
+ (
459
+ client as unknown as {
460
+ _token?: string;
461
+ getToken?: () => string | undefined;
462
+ }
463
+ )?._token ??
464
+ (
465
+ client as unknown as { getToken?: () => string | undefined }
466
+ )?.getToken?.();
467
+ const headers: Record<string, string> = {
468
+ 'Content-Type': 'application/json',
469
+ };
410
470
  if (token) headers.Authorization = `Bearer ${token}`;
411
- const pubKey = (client as unknown as { publishableKey?: string })?.publishableKey;
412
- if (pubKey && pubKey !== 'pk_test_missing') headers['X-Publishable-Key'] = pubKey;
471
+ const pubKey = (client as unknown as { publishableKey?: string })
472
+ ?.publishableKey;
473
+ if (pubKey && pubKey !== 'pk_test_missing')
474
+ headers['X-Publishable-Key'] = pubKey;
413
475
 
414
476
  const res = await fetch(`${billingUrl}/v1/billing/checkout`, {
415
477
  method: 'POST',
@@ -417,12 +479,20 @@ export function UserProfile({
417
479
  credentials: 'include',
418
480
  body: JSON.stringify({ planId }),
419
481
  });
420
- const data = (await res.json().catch(() => ({}))) as Record<string, unknown>;
482
+ const data = (await res.json().catch(() => ({}))) as Record<
483
+ string,
484
+ unknown
485
+ >;
421
486
  if (res.ok && typeof data.checkoutUrl === 'string' && data.checkoutUrl) {
422
487
  window.location.href = data.checkoutUrl as string;
423
488
  return;
424
489
  }
425
- if (!res.ok) throw new Error(typeof data.error === 'string' ? data.error : `Checkout failed (${res.status})`);
490
+ if (!res.ok)
491
+ throw new Error(
492
+ typeof data.error === 'string'
493
+ ? data.error
494
+ : `Checkout failed (${res.status})`
495
+ );
426
496
  } catch (err) {
427
497
  // Fallback: if billing checkout isn't configured, just log. Parent can handle via window redirect.
428
498
  console.error('[SlyxUp] checkout failed', err);
@@ -435,11 +505,13 @@ export function UserProfile({
435
505
  if (!user) return null;
436
506
 
437
507
  const emailVerified = user.emailVerified;
438
- const name = displayName(user as { firstName: string | null; lastName: string | null; email: string });
508
+ const name = displayName(
509
+ user as { firstName: string | null; lastName: string | null; email: string }
510
+ );
439
511
 
440
512
  // Resolve current plan name via plans lookup if subscription has planId but no planName
441
513
  const currentPlan = subscription
442
- ? plans.find((p) => p.id === subscription.planId) ?? null
514
+ ? (plans.find((p) => p.id === subscription.planId) ?? null)
443
515
  : null;
444
516
  const resolvedPlanName = subscription?.planName ?? currentPlan?.name ?? null;
445
517
 
@@ -497,20 +569,39 @@ export function UserProfile({
497
569
  <section className="slx-profile-sec">
498
570
  <div className="slx-avatar-row">
499
571
  <div className="slx-avatar-lg" aria-hidden="true">
500
- {user.avatarUrl ? <img src={user.avatarUrl} alt="" /> : initials(user as { firstName: string | null; lastName: string | null; email: string })}
572
+ {user.avatarUrl ? (
573
+ <img src={user.avatarUrl} alt="" />
574
+ ) : (
575
+ initials(
576
+ user as {
577
+ firstName: string | null;
578
+ lastName: string | null;
579
+ email: string;
580
+ }
581
+ )
582
+ )}
501
583
  </div>
502
584
  <div style={{ minWidth: 0 }}>
503
- <p className="slx-row-value" style={{ margin: 0, wordBreak: 'break-word' }}>
585
+ <p
586
+ className="slx-row-value"
587
+ style={{ margin: 0, wordBreak: 'break-word' }}
588
+ >
504
589
  {name}
505
590
  </p>
506
- <p className="slx-row-label" style={{ wordBreak: 'break-all' }}>
591
+ <p
592
+ className="slx-row-label"
593
+ style={{ wordBreak: 'break-all' }}
594
+ >
507
595
  {user.email}
508
596
  </p>
509
597
  </div>
510
598
  </div>
511
599
 
512
600
  {saved && (
513
- <p className="slx-error-text" style={{ color: 'var(--slx-success)' }}>
601
+ <p
602
+ className="slx-error-text"
603
+ style={{ color: 'var(--slx-success)' }}
604
+ >
514
605
  Profile saved.
515
606
  </p>
516
607
  )}
@@ -554,7 +645,9 @@ export function UserProfile({
554
645
  value={avatarUrl}
555
646
  onChange={(e) => setAvatarUrl(e.target.value)}
556
647
  />
557
- <p className="slx-hint">Paste a public image URL for your avatar.</p>
648
+ <p className="slx-hint">
649
+ Paste a public image URL for your avatar.
650
+ </p>
558
651
  </div>
559
652
  <button className="slx-btn" type="submit" disabled={busy}>
560
653
  {busy ? 'Saving…' : 'Save changes'}
@@ -566,7 +659,10 @@ export function UserProfile({
566
659
  <h3 className="slx-sec-title">Email</h3>
567
660
  <div className="slx-row" style={{ flexWrap: 'wrap', gap: 8 }}>
568
661
  <div style={{ minWidth: 0 }}>
569
- <p className="slx-row-value" style={{ wordBreak: 'break-all' }}>
662
+ <p
663
+ className="slx-row-value"
664
+ style={{ wordBreak: 'break-all' }}
665
+ >
570
666
  {user.email}
571
667
  </p>
572
668
  <p className="slx-row-label">Primary email</p>
@@ -582,7 +678,9 @@ export function UserProfile({
582
678
  flexWrap: 'wrap',
583
679
  }}
584
680
  >
585
- <span className="slx-badge slx-badge-warn">Unverified</span>
681
+ <span className="slx-badge slx-badge-warn">
682
+ Unverified
683
+ </span>
586
684
  <button
587
685
  type="button"
588
686
  className="slx-link"
@@ -604,7 +702,10 @@ export function UserProfile({
604
702
  <section className="slx-profile-sec">
605
703
  <h3 className="slx-sec-title">Change password</h3>
606
704
  {pwSaved && (
607
- <p className="slx-error-text" style={{ color: 'var(--slx-success)' }}>
705
+ <p
706
+ className="slx-error-text"
707
+ style={{ color: 'var(--slx-success)' }}
708
+ >
608
709
  Password updated.
609
710
  </p>
610
711
  )}
@@ -673,10 +774,18 @@ export function UserProfile({
673
774
  <div className="slx-session-meta">
674
775
  <p className="slx-session-device">
675
776
  {deviceLabel(s.userAgent)}
676
- {s.isCurrent && <span className="slx-badge slx-badge-accent">This device</span>}
777
+ {s.isCurrent && (
778
+ <span className="slx-badge slx-badge-accent">
779
+ This device
780
+ </span>
781
+ )}
677
782
  </p>
678
783
  <p className="slx-session-sub">
679
- {[s.ipAddress, `created ${formatDate(s.createdAt)}`, `expires ${formatDate(s.expiresAt)}`]
784
+ {[
785
+ s.ipAddress,
786
+ `created ${formatDate(s.createdAt)}`,
787
+ `expires ${formatDate(s.expiresAt)}`,
788
+ ]
680
789
  .filter(Boolean)
681
790
  .join(' · ')}
682
791
  </p>
@@ -701,7 +810,9 @@ export function UserProfile({
701
810
  onClick={onRevokeOthers}
702
811
  disabled={othersRevoking}
703
812
  >
704
- {othersRevoking ? 'Signing out…' : 'Sign out other devices'}
813
+ {othersRevoking
814
+ ? 'Signing out…'
815
+ : 'Sign out other devices'}
705
816
  </button>
706
817
  )}
707
818
  </>
@@ -711,8 +822,9 @@ export function UserProfile({
711
822
  <section className="slx-danger-zone">
712
823
  <p className="slx-danger-title">Danger zone</p>
713
824
  <p className="slx-danger-desc">
714
- Permanently deletes your account and all associated data. Active sessions are revoked immediately. This
715
- cannot be undone.
825
+ Permanently deletes your account and all associated data.
826
+ Active sessions are revoked immediately. This cannot be
827
+ undone.
716
828
  </p>
717
829
  {deleteError && <p className="slx-error-text">{deleteError}</p>}
718
830
  <div className="slx-field">
@@ -756,7 +868,10 @@ export function UserProfile({
756
868
  <h3 className="slx-sec-title">Subscription</h3>
757
869
  <div className="slx-billing-card">
758
870
  <p className="slx-billing-plan">No active subscription</p>
759
- <p className="slx-billing-detail">You don&apos;t have a subscription yet. Choose a plan to get started.</p>
871
+ <p className="slx-billing-detail">
872
+ You don&apos;t have a subscription yet. Choose a plan to
873
+ get started.
874
+ </p>
760
875
  </div>
761
876
  </section>
762
877
 
@@ -765,8 +880,13 @@ export function UserProfile({
765
880
  {plansLoading ? (
766
881
  <p className="slx-hint">Loading plans…</p>
767
882
  ) : plans.length === 0 ? (
768
- <div className="slx-billing-card" style={{ textAlign: 'center' }}>
769
- <p className="slx-billing-detail">No plans configured for this project yet.</p>
883
+ <div
884
+ className="slx-billing-card"
885
+ style={{ textAlign: 'center' }}
886
+ >
887
+ <p className="slx-billing-detail">
888
+ No plans configured for this project yet.
889
+ </p>
770
890
  <p className="slx-hint" style={{ marginTop: 6 }}>
771
891
  Ask your admin to create a plan in billing.
772
892
  </p>
@@ -774,19 +894,37 @@ export function UserProfile({
774
894
  ) : (
775
895
  <div className="slx-billing-plans">
776
896
  {plans.map((plan) => (
777
- <div key={plan.id} className={`slx-plan-card${plan.isPopular ? ' popular' : ''}`}>
778
- {plan.isPopular && <span className="slx-plan-badge">POPULAR</span>}
897
+ <div
898
+ key={plan.id}
899
+ className={`slx-plan-card${plan.isPopular ? ' popular' : ''}`}
900
+ >
901
+ {plan.isPopular && (
902
+ <span className="slx-plan-badge">POPULAR</span>
903
+ )}
779
904
  <p className="slx-plan-name">{plan.name}</p>
780
905
  <p style={{ margin: '2px 0 0' }}>
781
- <span className="slx-plan-price">{formatCurrency(plan.amount, plan.currency)}</span>
782
- <span className="slx-plan-interval">/{plan.interval}</span>
906
+ <span className="slx-plan-price">
907
+ {formatCurrency(plan.amount, plan.currency)}
908
+ </span>
909
+ <span className="slx-plan-interval">
910
+ /{plan.interval}
911
+ </span>
783
912
  </p>
784
913
  {plan.trialDays ? (
785
- <p className="slx-billing-detail" style={{ color: 'var(--slx-accent)', marginTop: 4 }}>
914
+ <p
915
+ className="slx-billing-detail"
916
+ style={{
917
+ color: 'var(--slx-accent)',
918
+ marginTop: 4,
919
+ }}
920
+ >
786
921
  {plan.trialDays} day free trial
787
922
  </p>
788
923
  ) : (
789
- <p className="slx-billing-detail" style={{ visibility: 'hidden', marginTop: 4 }}>
924
+ <p
925
+ className="slx-billing-detail"
926
+ style={{ visibility: 'hidden', marginTop: 4 }}
927
+ >
790
928
  &nbsp;
791
929
  </p>
792
930
  )}
@@ -801,7 +939,9 @@ export function UserProfile({
801
939
  onClick={() => handleCheckout(plan.id)}
802
940
  disabled={checkoutId === plan.id}
803
941
  >
804
- {checkoutId === plan.id ? 'Redirecting…' : 'Choose plan'}
942
+ {checkoutId === plan.id
943
+ ? 'Redirecting…'
944
+ : 'Choose plan'}
805
945
  </button>
806
946
  </div>
807
947
  ))}
@@ -814,11 +954,19 @@ export function UserProfile({
814
954
  <h3 className="slx-sec-title">Invoices</h3>
815
955
  {invoices.map((inv) => (
816
956
  <div key={inv.id} className="slx-invoice-row">
817
- <span className="slx-invoice-date">{inv.billedAt ? formatDate(inv.billedAt) : '—'}</span>
818
- <span className="slx-invoice-amount">{formatCurrency(inv.amount, inv.currency)}</span>
957
+ <span className="slx-invoice-date">
958
+ {inv.billedAt ? formatDate(inv.billedAt) : '—'}
959
+ </span>
960
+ <span className="slx-invoice-amount">
961
+ {formatCurrency(inv.amount, inv.currency)}
962
+ </span>
819
963
  <span
820
964
  className={`slx-badge ${
821
- inv.status === 'paid' ? 'slx-badge-ok' : inv.status === 'overdue' ? 'slx-badge-warn' : 'slx-badge-accent'
965
+ inv.status === 'paid'
966
+ ? 'slx-badge-ok'
967
+ : inv.status === 'overdue'
968
+ ? 'slx-badge-warn'
969
+ : 'slx-badge-accent'
822
970
  }`}
823
971
  >
824
972
  {inv.status}
@@ -843,10 +991,14 @@ export function UserProfile({
843
991
  }}
844
992
  >
845
993
  <div style={{ minWidth: 0 }}>
846
- <p className="slx-billing-plan">{resolvedPlanName ?? 'Subscription'}</p>
994
+ <p className="slx-billing-plan">
995
+ {resolvedPlanName ?? 'Subscription'}
996
+ </p>
847
997
  <p className="slx-billing-detail">
848
998
  Status:{' '}
849
- <span className={`slx-billing-status slx-billing-status-${subscription.status}`}>
999
+ <span
1000
+ className={`slx-billing-status slx-billing-status-${subscription.status}`}
1001
+ >
850
1002
  {subscription.status}
851
1003
  </span>
852
1004
  </p>
@@ -858,26 +1010,47 @@ export function UserProfile({
858
1010
  </p>
859
1011
  )}
860
1012
  {subscription.cancelAtPeriodEnd && (
861
- <p className="slx-billing-detail" style={{ color: 'var(--slx-danger)', fontWeight: 600 }}>
1013
+ <p
1014
+ className="slx-billing-detail"
1015
+ style={{
1016
+ color: 'var(--slx-danger)',
1017
+ fontWeight: 600,
1018
+ }}
1019
+ >
862
1020
  Scheduled to cancel at period end
863
1021
  </p>
864
1022
  )}
865
1023
  </div>
866
1024
  {currentPlan && (
867
- <span className="slx-badge slx-badge-accent" style={{ flexShrink: 0 }}>
868
- {formatCurrency(currentPlan.amount, currentPlan.currency)}/{currentPlan.interval}
1025
+ <span
1026
+ className="slx-badge slx-badge-accent"
1027
+ style={{ flexShrink: 0 }}
1028
+ >
1029
+ {formatCurrency(
1030
+ currentPlan.amount,
1031
+ currentPlan.currency
1032
+ )}
1033
+ /{currentPlan.interval}
869
1034
  </span>
870
1035
  )}
871
1036
  </div>
872
- {currentPlan?.features && currentPlan.features.length > 0 && (
873
- <ul className="slx-plan-features" style={{ margin: '12px 0 0' }}>
874
- {currentPlan.features.map((f) => (
875
- <li key={f}>{f}</li>
876
- ))}
877
- </ul>
878
- )}
1037
+ {currentPlan?.features &&
1038
+ currentPlan.features.length > 0 && (
1039
+ <ul
1040
+ className="slx-plan-features"
1041
+ style={{ margin: '12px 0 0' }}
1042
+ >
1043
+ {currentPlan.features.map((f) => (
1044
+ <li key={f}>{f}</li>
1045
+ ))}
1046
+ </ul>
1047
+ )}
879
1048
  <div className="slx-billing-actions">
880
- <button type="button" className="slx-btn-secondary" onClick={() => void loadBilling()}>
1049
+ <button
1050
+ type="button"
1051
+ className="slx-btn-secondary"
1052
+ onClick={() => void loadBilling()}
1053
+ >
881
1054
  Refresh
882
1055
  </button>
883
1056
  </div>
@@ -893,7 +1066,8 @@ export function UserProfile({
893
1066
  <section className="slx-profile-sec">
894
1067
  <h3 className="slx-sec-title">Available plans</h3>
895
1068
  <p className="slx-hint" style={{ marginBottom: 8 }}>
896
- Switch plans anytime. Changes apply at the next billing cycle.
1069
+ Switch plans anytime. Changes apply at the next billing
1070
+ cycle.
897
1071
  </p>
898
1072
  <div className="slx-billing-plans">
899
1073
  {plans.map((plan) => {
@@ -902,26 +1076,49 @@ export function UserProfile({
902
1076
  : resolvedPlanName === plan.name;
903
1077
  const currentAmount = currentPlan?.amount ?? 0;
904
1078
  const isUpgrade = plan.amount > currentAmount;
905
- const isDowngrade = plan.amount < currentAmount && !isCurrent;
1079
+ const isDowngrade =
1080
+ plan.amount < currentAmount && !isCurrent;
906
1081
  return (
907
1082
  <div
908
1083
  key={plan.id}
909
1084
  className={`slx-plan-card${plan.isPopular ? ' popular' : ''}`}
910
1085
  style={isCurrent ? { opacity: 0.92 } : undefined}
911
1086
  >
912
- {plan.isPopular && !isCurrent && <span className="slx-plan-badge">POPULAR</span>}
913
- {isCurrent && <span className="slx-plan-badge" style={{ background: 'var(--slx-success)' }}>CURRENT</span>}
1087
+ {plan.isPopular && !isCurrent && (
1088
+ <span className="slx-plan-badge">POPULAR</span>
1089
+ )}
1090
+ {isCurrent && (
1091
+ <span
1092
+ className="slx-plan-badge"
1093
+ style={{ background: 'var(--slx-success)' }}
1094
+ >
1095
+ CURRENT
1096
+ </span>
1097
+ )}
914
1098
  <p className="slx-plan-name">{plan.name}</p>
915
1099
  <p style={{ margin: '2px 0 0' }}>
916
- <span className="slx-plan-price">{formatCurrency(plan.amount, plan.currency)}</span>
917
- <span className="slx-plan-interval">/{plan.interval}</span>
1100
+ <span className="slx-plan-price">
1101
+ {formatCurrency(plan.amount, plan.currency)}
1102
+ </span>
1103
+ <span className="slx-plan-interval">
1104
+ /{plan.interval}
1105
+ </span>
918
1106
  </p>
919
1107
  {plan.trialDays ? (
920
- <p className="slx-billing-detail" style={{ color: 'var(--slx-accent)', marginTop: 4 }}>
1108
+ <p
1109
+ className="slx-billing-detail"
1110
+ style={{
1111
+ color: 'var(--slx-accent)',
1112
+ marginTop: 4,
1113
+ }}
1114
+ >
921
1115
  {plan.trialDays} day trial
922
1116
  </p>
923
1117
  ) : (
924
- <p className="slx-billing-detail" style={{ visibility: 'hidden', marginTop: 4 }}>
1118
+ <p
1119
+ className="slx-billing-detail"
1120
+ style={{ visibility: 'hidden', marginTop: 4 }}
1121
+ >
925
1122
  &nbsp;
926
1123
  </p>
927
1124
  )}
@@ -932,7 +1129,11 @@ export function UserProfile({
932
1129
  </ul>
933
1130
  <button
934
1131
  type="button"
935
- className={isCurrent ? 'slx-btn-secondary slx-plan-cta' : 'slx-btn slx-plan-cta'}
1132
+ className={
1133
+ isCurrent
1134
+ ? 'slx-btn-secondary slx-plan-cta'
1135
+ : 'slx-btn slx-plan-cta'
1136
+ }
936
1137
  disabled={isCurrent || checkoutId === plan.id}
937
1138
  onClick={() => handleCheckout(plan.id)}
938
1139
  >
@@ -958,11 +1159,19 @@ export function UserProfile({
958
1159
  <h3 className="slx-sec-title">Invoices</h3>
959
1160
  {invoices.map((inv) => (
960
1161
  <div key={inv.id} className="slx-invoice-row">
961
- <span className="slx-invoice-date">{inv.billedAt ? formatDate(inv.billedAt) : '—'}</span>
962
- <span className="slx-invoice-amount">{formatCurrency(inv.amount, inv.currency)}</span>
1162
+ <span className="slx-invoice-date">
1163
+ {inv.billedAt ? formatDate(inv.billedAt) : '—'}
1164
+ </span>
1165
+ <span className="slx-invoice-amount">
1166
+ {formatCurrency(inv.amount, inv.currency)}
1167
+ </span>
963
1168
  <span
964
1169
  className={`slx-badge ${
965
- inv.status === 'paid' ? 'slx-badge-ok' : inv.status === 'overdue' ? 'slx-badge-warn' : 'slx-badge-accent'
1170
+ inv.status === 'paid'
1171
+ ? 'slx-badge-ok'
1172
+ : inv.status === 'overdue'
1173
+ ? 'slx-badge-warn'
1174
+ : 'slx-badge-accent'
966
1175
  }`}
967
1176
  >
968
1177
  {inv.status}
@@ -989,6 +1198,7 @@ export function UserProfile({
989
1198
  // Modal overlay — click on backdrop closes, click inside modal does not.
990
1199
  // Use onMouseDown + onClick for desktop + mobile reliability; close button also works via stopPropagation.
991
1200
  return (
1201
+ // biome-ignore lint/a11y/useKeyWithClickEvents: overlay click is for mouse; keyboard Escape handled in effect
992
1202
  <div
993
1203
  className="slx-overlay"
994
1204
  onMouseDown={(e) => {
@@ -999,6 +1209,8 @@ export function UserProfile({
999
1209
  }}
1000
1210
  role="presentation"
1001
1211
  >
1212
+ {/* biome-ignore lint/a11y/useKeyWithClickEvents: stopPropagation only, no keyboard action needed */}
1213
+ {/* biome-ignore lint/a11y/useSemanticElements: dialog is correct for modal */}
1002
1214
  <div
1003
1215
  role="dialog"
1004
1216
  aria-modal="true"