@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,
|
|
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
|
|
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 ??
|
|
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
|
-
|
|
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
|
|
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 ??
|
|
188
|
-
|
|
189
|
-
|
|
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 [
|
|
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 ??
|
|
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 ??
|
|
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
|
-
|
|
355
|
-
const headers = {
|
|
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
|
|
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'
|
|
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: [
|
|
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
|
|
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: {
|
|
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: {
|
|
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: {
|
|
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'
|
|
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 (
|
|
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
|
@@ -164,7 +164,7 @@ export function UserProfile({
|
|
|
164
164
|
setLastName(user.lastName ?? '');
|
|
165
165
|
setAvatarUrl(user.avatarUrl ?? '');
|
|
166
166
|
}
|
|
167
|
-
}, [user
|
|
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 ??
|
|
195
|
-
|
|
196
|
-
const
|
|
197
|
-
|
|
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 })
|
|
204
|
-
|
|
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 =
|
|
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)
|
|
240
|
-
|
|
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:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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 [
|
|
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 {
|
|
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:
|
|
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)
|
|
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(
|
|
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(
|
|
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(
|
|
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 ??
|
|
406
|
-
|
|
407
|
-
const
|
|
408
|
-
|
|
409
|
-
|
|
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 })
|
|
412
|
-
|
|
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<
|
|
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)
|
|
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(
|
|
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 ?
|
|
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
|
|
585
|
+
<p
|
|
586
|
+
className="slx-row-value"
|
|
587
|
+
style={{ margin: 0, wordBreak: 'break-word' }}
|
|
588
|
+
>
|
|
504
589
|
{name}
|
|
505
590
|
</p>
|
|
506
|
-
<p
|
|
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
|
|
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">
|
|
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
|
|
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">
|
|
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
|
|
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 &&
|
|
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
|
-
{[
|
|
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
|
|
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.
|
|
715
|
-
cannot be
|
|
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">
|
|
871
|
+
<p className="slx-billing-detail">
|
|
872
|
+
You don'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
|
|
769
|
-
|
|
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
|
|
778
|
-
{plan.
|
|
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">
|
|
782
|
-
|
|
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
|
|
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
|
|
924
|
+
<p
|
|
925
|
+
className="slx-billing-detail"
|
|
926
|
+
style={{ visibility: 'hidden', marginTop: 4 }}
|
|
927
|
+
>
|
|
790
928
|
|
|
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
|
|
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">
|
|
818
|
-
|
|
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'
|
|
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">
|
|
994
|
+
<p className="slx-billing-plan">
|
|
995
|
+
{resolvedPlanName ?? 'Subscription'}
|
|
996
|
+
</p>
|
|
847
997
|
<p className="slx-billing-detail">
|
|
848
998
|
Status:{' '}
|
|
849
|
-
<span
|
|
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
|
|
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
|
|
868
|
-
|
|
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 &&
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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 &&
|
|
913
|
-
|
|
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">
|
|
917
|
-
|
|
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
|
|
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
|
|
1118
|
+
<p
|
|
1119
|
+
className="slx-billing-detail"
|
|
1120
|
+
style={{ visibility: 'hidden', marginTop: 4 }}
|
|
1121
|
+
>
|
|
925
1122
|
|
|
926
1123
|
</p>
|
|
927
1124
|
)}
|
|
@@ -932,7 +1129,11 @@ export function UserProfile({
|
|
|
932
1129
|
</ul>
|
|
933
1130
|
<button
|
|
934
1131
|
type="button"
|
|
935
|
-
className={
|
|
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">
|
|
962
|
-
|
|
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'
|
|
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"
|