@rovela-ai/sdk 0.18.4 → 0.18.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AdminAcceptInviteForm.d.ts.map +1 -1
- package/dist/admin/components/AdminAcceptInviteForm.js +17 -6
- package/dist/admin/components/AdminAcceptInviteForm.js.map +1 -1
- package/dist/admin/components/AdminAccountPage.d.ts.map +1 -1
- package/dist/admin/components/AdminAccountPage.js +5 -6
- package/dist/admin/components/AdminAccountPage.js.map +1 -1
- package/dist/admin/components/AdminAuthShell.d.ts +32 -0
- package/dist/admin/components/AdminAuthShell.d.ts.map +1 -0
- package/dist/admin/components/AdminAuthShell.js +17 -0
- package/dist/admin/components/AdminAuthShell.js.map +1 -0
- package/dist/admin/components/AdminBrandTile.d.ts +10 -0
- package/dist/admin/components/AdminBrandTile.d.ts.map +1 -0
- package/dist/admin/components/AdminBrandTile.js +46 -0
- package/dist/admin/components/AdminBrandTile.js.map +1 -0
- package/dist/admin/components/AdminForgotPasswordForm.d.ts.map +1 -1
- package/dist/admin/components/AdminForgotPasswordForm.js +8 -6
- package/dist/admin/components/AdminForgotPasswordForm.js.map +1 -1
- package/dist/admin/components/AdminResetPasswordForm.d.ts.map +1 -1
- package/dist/admin/components/AdminResetPasswordForm.js +12 -6
- package/dist/admin/components/AdminResetPasswordForm.js.map +1 -1
- package/dist/admin/components/AdminTopBar.d.ts +1 -1
- package/dist/admin/components/AdminTopBar.d.ts.map +1 -1
- package/dist/admin/components/AdminTopBar.js +5 -21
- package/dist/admin/components/AdminTopBar.js.map +1 -1
- package/dist/admin/components/CustomerAddressPanel.d.ts.map +1 -1
- package/dist/admin/components/CustomerAddressPanel.js +6 -2
- package/dist/admin/components/CustomerAddressPanel.js.map +1 -1
- package/dist/admin/components/CustomerGroupsManager.d.ts.map +1 -1
- package/dist/admin/components/CustomerGroupsManager.js +15 -11
- package/dist/admin/components/CustomerGroupsManager.js.map +1 -1
- package/dist/admin/components/CustomerTable.d.ts.map +1 -1
- package/dist/admin/components/CustomerTable.js +10 -2
- package/dist/admin/components/CustomerTable.js.map +1 -1
- package/dist/admin/components/DiscountsManager.d.ts.map +1 -1
- package/dist/admin/components/DiscountsManager.js +10 -5
- package/dist/admin/components/DiscountsManager.js.map +1 -1
- package/dist/admin/components/EmailsManager.d.ts.map +1 -1
- package/dist/admin/components/EmailsManager.js +14 -18
- package/dist/admin/components/EmailsManager.js.map +1 -1
- package/dist/admin/components/FilesManager.d.ts.map +1 -1
- package/dist/admin/components/FilesManager.js +8 -15
- package/dist/admin/components/FilesManager.js.map +1 -1
- package/dist/admin/components/LocationsManager.d.ts.map +1 -1
- package/dist/admin/components/LocationsManager.js +10 -5
- package/dist/admin/components/LocationsManager.js.map +1 -1
- package/dist/admin/components/LowStockAlert.d.ts.map +1 -1
- package/dist/admin/components/LowStockAlert.js +8 -4
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.d.ts.map +1 -1
- package/dist/admin/components/OrderDetails.js +9 -0
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.d.ts.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -1
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/PaymentMethodsManager.d.ts.map +1 -1
- package/dist/admin/components/PaymentMethodsManager.js +13 -14
- package/dist/admin/components/PaymentMethodsManager.js.map +1 -1
- package/dist/admin/components/ProductTable.d.ts.map +1 -1
- package/dist/admin/components/ProductTable.js +8 -4
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.d.ts.map +1 -1
- package/dist/admin/components/RecentOrders.js +5 -2
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.d.ts.map +1 -1
- package/dist/admin/components/RefundDialog.js +3 -0
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/index.d.ts +4 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +2 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +10 -0
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.d.ts +2 -2
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +3 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/styles/admin-theme.css +211 -10
- package/dist/admin/types.d.ts +6 -0
- package/dist/admin/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminAcceptInviteForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminAcceptInviteForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminAcceptInviteForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminAcceptInviteForm.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AAsB1D,wBAAgB,qBAAqB,CAAC,EACpC,SAAc,EACd,QAAyB,EACzB,eAAsB,GACvB,EAAE,0BAA0B,2CAoR5B"}
|
|
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* Public page component for accepting an admin invite. Lives outside the
|
|
7
7
|
* dashboard layout — the invitee hasn't logged in yet.
|
|
8
8
|
*
|
|
9
|
-
* Lifecycle mirrors `AdminResetPasswordForm`
|
|
9
|
+
* Lifecycle mirrors `AdminResetPasswordForm` exactly:
|
|
10
10
|
* 1. Read `?token=X` from the URL via `useSearchParams`.
|
|
11
11
|
* 2. Mount effect calls `GET /api/admin/accept-invite?token=X` to check
|
|
12
12
|
* validity AND fetch the invitee snippet (email, name, role).
|
|
@@ -18,24 +18,35 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
18
18
|
* greeting showing the role
|
|
19
19
|
* - `success` — "Welcome!" + 2-second delay → /admin/login
|
|
20
20
|
*
|
|
21
|
+
* Rendered inside the AdminAuthShell (the front-door chrome owns identity:
|
|
22
|
+
* brand tile + store name + card). Meant to be mounted BARE at
|
|
23
|
+
* `/admin/accept-invite`. Errors are STATES — inline alerts inside the
|
|
24
|
+
* card, never toasts (LEDGER notification grammar).
|
|
25
|
+
*
|
|
21
26
|
* Because this uses `useSearchParams`, the consuming page MUST wrap this
|
|
22
27
|
* component in a `<Suspense>` boundary (Next.js App Router requirement).
|
|
23
28
|
*/
|
|
24
29
|
import { useState, useEffect, useCallback } from 'react';
|
|
25
30
|
import { useSearchParams } from 'next/navigation';
|
|
26
|
-
import {
|
|
31
|
+
import { Check, Eye, EyeOff } from 'lucide-react';
|
|
32
|
+
import { useStoreSettingsOptional } from '../../core';
|
|
27
33
|
import { roleLabel } from '../permissions';
|
|
34
|
+
import { AdminAuthShell } from './AdminAuthShell';
|
|
28
35
|
// =============================================================================
|
|
29
36
|
// Component
|
|
30
37
|
// =============================================================================
|
|
31
38
|
export function AdminAcceptInviteForm({ className = '', loginUrl = '/admin/login', redirectDelayMs = 2000, }) {
|
|
32
39
|
const searchParams = useSearchParams();
|
|
33
40
|
const token = searchParams?.get('token') ?? '';
|
|
41
|
+
const storeSettings = useStoreSettingsOptional();
|
|
42
|
+
const storeName = storeSettings?.storeName || null;
|
|
34
43
|
const [validation, setValidation] = useState({
|
|
35
44
|
status: 'validating',
|
|
36
45
|
});
|
|
37
46
|
const [password, setPassword] = useState('');
|
|
38
47
|
const [confirmPassword, setConfirmPassword] = useState('');
|
|
48
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
49
|
+
const [showConfirm, setShowConfirm] = useState(false);
|
|
39
50
|
const [formError, setFormError] = useState(null);
|
|
40
51
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
41
52
|
const [success, setSuccess] = useState(false);
|
|
@@ -120,18 +131,18 @@ export function AdminAcceptInviteForm({ className = '', loginUrl = '/admin/login
|
|
|
120
131
|
// --- Render states ------------------------------------------------------
|
|
121
132
|
// Loading state — waiting on GET validation
|
|
122
133
|
if (validation.status === 'validating') {
|
|
123
|
-
return (_jsx(
|
|
134
|
+
return (_jsx(AdminAuthShell, { className: className, children: _jsx("div", { className: "flex items-center justify-center py-8", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) }) }));
|
|
124
135
|
}
|
|
125
136
|
// Invalid invite — no recovery path here (invitee must contact admin)
|
|
126
137
|
if (validation.status === 'invalid') {
|
|
127
|
-
return (_jsxs(
|
|
138
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "This invite has expired" }), _jsx("p", { className: "admin-auth-sub", children: validation.error }), _jsx("p", { className: "text-sm admin-text-muted", children: "Contact the admin who invited you and ask them to send a new invite." }), _jsx("a", { href: loginUrl, className: "admin-auth-footlink", children: "Already have an account? Sign in" })] }));
|
|
128
139
|
}
|
|
129
140
|
// Success — invite accepted, redirecting to login
|
|
130
141
|
if (success) {
|
|
131
|
-
return (
|
|
142
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "Welcome aboard" }), _jsx("p", { className: "admin-auth-sub", children: "Your account is ready. Sign in with your new password to get started." }), _jsxs("div", { className: "admin-auth-ok", children: [_jsx(Check, { "aria-hidden": "true" }), "Taking you to sign in\u2026"] })] }));
|
|
132
143
|
}
|
|
133
144
|
// Form — token validated, let the invitee set their password
|
|
134
145
|
const { admin } = validation;
|
|
135
|
-
return (_jsxs(
|
|
146
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: storeName ? `Join the ${storeName} team` : 'You’re invited' }), _jsxs("p", { className: "admin-auth-sub", children: ["Hi ", _jsx("strong", { children: admin.name }), ", you've been invited as", ' ', _jsx("strong", { children: roleLabel(admin.role) }), ". Choose a strong password to activate your account."] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [formError && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: formError }) })), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Email" }), _jsx("input", { type: "email", value: admin.email, readOnly: true, disabled: true, className: "admin-input w-full", style: { opacity: 0.7 } })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "accept-password", className: "admin-label admin-label-required", children: "Set a password" }), _jsxs("div", { className: "admin-auth-pw", children: [_jsx("input", { id: "accept-password", type: showPassword ? 'text' : 'password', value: password, onChange: (e) => setPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: isSubmitting, className: "admin-input w-full", placeholder: "At least 8 characters" }), _jsx("button", { type: "button", className: "admin-auth-eye", onClick: () => setShowPassword((v) => !v), "aria-label": showPassword ? 'Hide password' : 'Show password', tabIndex: -1, children: showPassword ? _jsx(EyeOff, { "aria-hidden": "true" }) : _jsx(Eye, { "aria-hidden": "true" }) })] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "accept-confirm", className: "admin-label admin-label-required", children: "Confirm password" }), _jsxs("div", { className: "admin-auth-pw", children: [_jsx("input", { id: "accept-confirm", type: showConfirm ? 'text' : 'password', value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: isSubmitting, className: "admin-input w-full", placeholder: "Re-enter your password" }), _jsx("button", { type: "button", className: "admin-auth-eye", onClick: () => setShowConfirm((v) => !v), "aria-label": showConfirm ? 'Hide password' : 'Show password', tabIndex: -1, children: showConfirm ? _jsx(EyeOff, { "aria-hidden": "true" }) : _jsx(Eye, { "aria-hidden": "true" }) })] })] }), _jsx("button", { type: "submit", disabled: isSubmitting || !password || !confirmPassword, className: "admin-btn admin-btn-primary w-full", children: isSubmitting ? (_jsxs("span", { className: "flex items-center justify-center gap-2", children: [_jsx("span", { className: "admin-spinner admin-spinner-sm" }), "Setting up your account\u2026"] })) : ('Accept invite and sign in') })] })] }));
|
|
136
147
|
}
|
|
137
148
|
//# sourceMappingURL=AdminAcceptInviteForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminAcceptInviteForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminAcceptInviteForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"AdminAcceptInviteForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminAcceptInviteForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminAccountPage.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminAccountPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminAccountPage.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminAccountPage.tsx"],"names":[],"mappings":"AA6BA,MAAM,WAAW,qBAAqB;IACpC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAc,EACd,QAAyB,EACzB,eAAsB,GACvB,EAAE,qBAAqB,2CAkYvB"}
|
|
@@ -20,6 +20,7 @@ import { useState, useEffect, useCallback } from 'react';
|
|
|
20
20
|
import { User, KeyRound, Mail, CheckCircle2, AlertCircle } from 'lucide-react';
|
|
21
21
|
import { AdminPageHeader } from './AdminPageHeader';
|
|
22
22
|
import { useAdminMe } from '../hooks/useAdminMe';
|
|
23
|
+
import { adminToast } from './AdminToaster';
|
|
23
24
|
// =============================================================================
|
|
24
25
|
// Component
|
|
25
26
|
// =============================================================================
|
|
@@ -31,7 +32,6 @@ export function AdminAccountPage({ className = '', loginUrl = '/admin/login', re
|
|
|
31
32
|
const [originalEmail, setOriginalEmail] = useState('');
|
|
32
33
|
const [profileSaving, setProfileSaving] = useState(false);
|
|
33
34
|
const [profileError, setProfileError] = useState(null);
|
|
34
|
-
const [profileSuccess, setProfileSuccess] = useState(false);
|
|
35
35
|
const [showEmailWarning, setShowEmailWarning] = useState(false);
|
|
36
36
|
// Seed form fields once `me` loads.
|
|
37
37
|
// Pattern C — populate state from async-loaded data.
|
|
@@ -49,7 +49,6 @@ export function AdminAccountPage({ className = '', loginUrl = '/admin/login', re
|
|
|
49
49
|
const handleProfileSubmit = useCallback(async (e) => {
|
|
50
50
|
e.preventDefault();
|
|
51
51
|
setProfileError(null);
|
|
52
|
-
setProfileSuccess(false);
|
|
53
52
|
// If email changed and user hasn't confirmed, show warning dialog
|
|
54
53
|
if (emailChanged && !showEmailWarning) {
|
|
55
54
|
setShowEmailWarning(true);
|
|
@@ -66,9 +65,9 @@ export function AdminAccountPage({ className = '', loginUrl = '/admin/login', re
|
|
|
66
65
|
setProfileError(result.error || 'Failed to update profile.');
|
|
67
66
|
return;
|
|
68
67
|
}
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
|
|
68
|
+
// Profile saved is an EVENT → the toaster (the old inline banner with
|
|
69
|
+
// a 3s timer was a pseudo-toast — the wrong channel, convention #7).
|
|
70
|
+
adminToast.success('Profile updated');
|
|
72
71
|
}, [emailChanged, showEmailWarning, me, name, email, updateProfile]);
|
|
73
72
|
// --- Password form state -----------------------------------------------
|
|
74
73
|
const [currentPassword, setCurrentPassword] = useState('');
|
|
@@ -116,7 +115,7 @@ export function AdminAccountPage({ className = '', loginUrl = '/admin/login', re
|
|
|
116
115
|
if (error || !me) {
|
|
117
116
|
return (_jsx("div", { className: `space-y-4 ${className}`, children: _jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: error || 'Unable to load your account.' }) }) }));
|
|
118
117
|
}
|
|
119
|
-
return (_jsxs("div", { className: `space-y-6 ${className}`, children: [_jsx(AdminPageHeader, { title: "My account", subtitle: "Manage your profile and password." }), _jsxs("div", { className: "admin-card p-6", children: [_jsxs("div", { className: "flex items-center gap-2 mb-4", children: [_jsx(User, { className: "h-5 w-5 admin-icon-primary" }), _jsx("h2", { className: "text-lg font-semibold", children: "Profile" })] }), _jsxs("form", { onSubmit: handleProfileSubmit, className: "space-y-4", children: [profileError && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: profileError }) })),
|
|
118
|
+
return (_jsxs("div", { className: `space-y-6 ${className}`, children: [_jsx(AdminPageHeader, { title: "My account", subtitle: "Manage your profile and password." }), _jsxs("div", { className: "admin-card p-6", children: [_jsxs("div", { className: "flex items-center gap-2 mb-4", children: [_jsx(User, { className: "h-5 w-5 admin-icon-primary" }), _jsx("h2", { className: "text-lg font-semibold", children: "Profile" })] }), _jsxs("form", { onSubmit: handleProfileSubmit, className: "space-y-4", children: [profileError && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: profileError }) })), _jsxs("div", { children: [_jsx("label", { htmlFor: "account-name", className: "admin-label", children: "Name" }), _jsx("input", { id: "account-name", type: "text", value: name, onChange: (e) => setName(e.target.value), required: true, minLength: 2, disabled: profileSaving, className: "admin-input w-full" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "account-email", className: "admin-label", children: "Email" }), _jsxs("div", { className: "admin-input-with-icon", children: [_jsx(Mail, { className: "admin-input-with-icon-left h-4 w-4" }), _jsx("input", { id: "account-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), required: true, disabled: profileSaving, className: "admin-input w-full" })] }), _jsx("p", { className: "text-xs admin-text-muted mt-1", children: "Used for sign-in and forgot-password emails." })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Role" }), _jsxs("div", { className: "text-sm admin-text-muted", children: [me.role, " (managed by the store owner)"] })] }), _jsx("div", { className: "flex items-center justify-end pt-2", children: _jsx("button", { type: "submit", disabled: !profileDirty || profileSaving, className: "admin-btn admin-btn-primary", children: profileSaving ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "admin-spinner admin-spinner-sm" }), "Saving..."] })) : ('Save profile') }) })] }), showEmailWarning && (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", style: { background: 'rgba(0,0,0,0.5)' }, onClick: () => setShowEmailWarning(false), children: _jsxs("div", { className: "w-full max-w-md rounded-lg p-6", style: {
|
|
120
119
|
background: 'hsl(var(--admin-card))',
|
|
121
120
|
border: '1px solid hsl(var(--admin-border))',
|
|
122
121
|
}, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "flex items-start gap-3 mb-4", children: [_jsx("div", { className: "flex-shrink-0 h-10 w-10 rounded-full flex items-center justify-center", style: { background: 'hsl(var(--admin-warning) / 0.1)' }, children: _jsx(AlertCircle, { className: "h-5 w-5 text-[hsl(var(--admin-warning,0_95%_55%))]" }) }), _jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold mb-1", children: "Change email?" }), _jsxs("p", { className: "text-sm admin-text-muted", children: ["Your sign-in email will change from", ' ', _jsx("strong", { children: originalEmail }), " to", ' ', _jsx("strong", { children: email }), ". Future forgot-password emails will go to the new address. Make sure you can receive email there."] })] })] }), _jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: () => setShowEmailWarning(false), disabled: profileSaving, className: "admin-btn admin-btn-secondary", children: "Cancel" }), _jsx("button", { type: "button", onClick: (e) => handleProfileSubmit(e), disabled: profileSaving, className: "admin-btn admin-btn-primary", children: profileSaving ? 'Saving...' : 'Yes, change email' })] })] }) }))] }), _jsxs("div", { className: "admin-card p-6", children: [_jsxs("div", { className: "flex items-center gap-2 mb-4", children: [_jsx(KeyRound, { className: "h-5 w-5 admin-icon-primary" }), _jsx("h2", { className: "text-lg font-semibold", children: "Password" })] }), passwordSuccess ? (_jsxs("div", { className: "text-center py-6", children: [_jsx("div", { className: "admin-icon-container-sm mx-auto mb-4", children: _jsx(CheckCircle2, { className: "h-6 w-6 admin-icon-primary" }) }), _jsx("h3", { className: "admin-heading-2 mb-2", children: "Password changed" }), _jsx("p", { className: "text-sm admin-text-muted", children: "For your security, all sessions have been signed out. Redirecting to sign in..." })] })) : (_jsxs("form", { onSubmit: handlePasswordSubmit, className: "space-y-4", children: [passwordError && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: passwordError }) })), _jsxs("div", { children: [_jsx("label", { htmlFor: "current-password", className: "admin-label admin-label-required", children: "Current password" }), _jsx("input", { id: "current-password", type: "password", value: currentPassword, onChange: (e) => setCurrentPassword(e.target.value), required: true, autoComplete: "current-password", disabled: passwordSaving, className: "admin-input w-full" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "new-password", className: "admin-label admin-label-required", children: "New password" }), _jsx("input", { id: "new-password", type: "password", value: newPassword, onChange: (e) => setNewPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: passwordSaving, className: "admin-input w-full", placeholder: "At least 8 characters" })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "confirm-new-password", className: "admin-label admin-label-required", children: "Confirm new password" }), _jsx("input", { id: "confirm-new-password", type: "password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: passwordSaving, className: "admin-input w-full" })] }), _jsx("p", { className: "text-xs admin-text-muted", children: "After changing your password, you'll be signed out and need to sign back in." }), _jsx("div", { className: "flex items-center justify-end pt-2", children: _jsx("button", { type: "submit", disabled: passwordSaving ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminAccountPage.js","sourceRoot":"","sources":["../../../src/admin/components/AdminAccountPage.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"AdminAccountPage.js","sourceRoot":"","sources":["../../../src/admin/components/AdminAccountPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela-ai/sdk/admin/components/AdminAuthShell
|
|
3
|
+
*
|
|
4
|
+
* THE front-door chrome — one shell for every admin auth page (sign in,
|
|
5
|
+
* first-run setup, forgot/reset password, accept invite) and their loading
|
|
6
|
+
* splashes. LEDGER anatomy: cream page with the identity wash greeting you
|
|
7
|
+
* at the top, the favicon-first brand tile (40px) + store name + Admin
|
|
8
|
+
* chip, a single 380px card holding whatever the page needs, and the
|
|
9
|
+
* powered-by line beneath.
|
|
10
|
+
*
|
|
11
|
+
* Includes the `.rovela-admin-theme` scope itself, so an auth page is just:
|
|
12
|
+
*
|
|
13
|
+
* <AdminAuthShell>
|
|
14
|
+
* <h1 className="admin-auth-title">Sign in</h1>
|
|
15
|
+
* …form…
|
|
16
|
+
* </AdminAuthShell>
|
|
17
|
+
*
|
|
18
|
+
* Store identity resolves via the (public, pre-auth-safe) settings provider
|
|
19
|
+
* with env fallbacks, exactly like AdminTopBar — skeletons while loading,
|
|
20
|
+
* never a wrong painted value.
|
|
21
|
+
*/
|
|
22
|
+
import type { ReactNode } from 'react';
|
|
23
|
+
import '../styles/admin-theme.css';
|
|
24
|
+
export interface AdminAuthShellProps {
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
/** Store name override (else provider → 'Admin'). */
|
|
27
|
+
storeName?: string;
|
|
28
|
+
/** Custom className on the theme root */
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function AdminAuthShell({ children, storeName: storeNameProp, className, }: AdminAuthShellProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=AdminAuthShell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminAuthShell.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminAuthShell.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,OAAO,2BAA2B,CAAA;AAMlC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAA;IACnB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,SAAc,GACf,EAAE,mBAAmB,2CAqCrB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useStoreSettingsOptional } from '../../core';
|
|
4
|
+
import { AdminBrandTile } from './AdminBrandTile';
|
|
5
|
+
// Self-sufficient styling (AdminLayout's pattern) — auth pages can be bare
|
|
6
|
+
// mounts without importing the theme themselves.
|
|
7
|
+
import '../styles/admin-theme.css';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Component
|
|
10
|
+
// =============================================================================
|
|
11
|
+
export function AdminAuthShell({ children, storeName: storeNameProp, className = '', }) {
|
|
12
|
+
const storeSettings = useStoreSettingsOptional();
|
|
13
|
+
const settingsLoading = !storeNameProp && !!storeSettings?.isLoading && !storeSettings?.settings;
|
|
14
|
+
const storeName = storeNameProp || storeSettings?.storeName || 'Admin';
|
|
15
|
+
return (_jsx("div", { className: `rovela-admin-theme admin-auth ${className}`.trim(), children: _jsxs("main", { className: "admin-auth-main", children: [_jsxs("div", { className: "admin-auth-brand", children: [_jsx(AdminBrandTile, { size: "lg", storeName: storeName }), _jsxs("div", { className: "admin-auth-brand-name", children: [settingsLoading ? (_jsx("span", { className: "admin-skeleton admin-topbar-name-skeleton" })) : (_jsx("b", { children: storeName })), _jsx("span", { className: "admin-topbar-tag", children: "Admin" })] })] }), _jsx("div", { className: "admin-auth-card", children: children }), _jsxs("a", { href: "https://rovela.ai", target: "_blank", rel: "noopener noreferrer", className: "admin-auth-powered", children: [_jsx("span", { children: "Powered by" }), _jsx("img", { src: "https://rovela.ai/logo.png", alt: "", className: "admin-rovela-logo" }), _jsx("span", { className: "admin-powered-by-name", children: "Rovela" })] })] }) }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=AdminAuthShell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminAuthShell.js","sourceRoot":"","sources":["../../../src/admin/components/AdminAuthShell.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAyBZ,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,2EAA2E;AAC3E,iDAAiD;AACjD,OAAO,2BAA2B,CAAA;AAclC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EAAE,aAAa,EACxB,SAAS,GAAG,EAAE,GACM;IACpB,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAA;IAChD,MAAM,eAAe,GACnB,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAA;IAC1E,MAAM,SAAS,GAAG,aAAa,IAAI,aAAa,EAAE,SAAS,IAAI,OAAO,CAAA;IAEtE,OAAO,CACL,cAAK,SAAS,EAAE,iCAAiC,SAAS,EAAE,CAAC,IAAI,EAAE,YACjE,gBAAM,SAAS,EAAC,iBAAiB,aAC/B,eAAK,SAAS,EAAC,kBAAkB,aAC/B,KAAC,cAAc,IAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAE,SAAS,GAAI,EAClD,eAAK,SAAS,EAAC,uBAAuB,aACnC,eAAe,CAAC,CAAC,CAAC,CACjB,eAAM,SAAS,EAAC,2CAA2C,GAAG,CAC/D,CAAC,CAAC,CAAC,CACF,sBAAI,SAAS,GAAK,CACnB,EACD,eAAM,SAAS,EAAC,kBAAkB,sBAAa,IAC3C,IACF,EAEN,cAAK,SAAS,EAAC,iBAAiB,YAAE,QAAQ,GAAO,EAEjD,aACE,IAAI,EAAC,mBAAmB,EACxB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,oBAAoB,aAE9B,wCAAuB,EAEvB,cAAK,GAAG,EAAC,4BAA4B,EAAC,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,mBAAmB,GAAG,EAC7E,eAAM,SAAS,EAAC,uBAAuB,uBAAc,IACnD,IACC,GACH,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface AdminBrandTileProps {
|
|
2
|
+
/** sm = 28px (top bar) · lg = 40px (auth shell). */
|
|
3
|
+
size?: 'sm' | 'lg';
|
|
4
|
+
/** Store name override for the monogram (else provider → 'Admin'). */
|
|
5
|
+
storeName?: string;
|
|
6
|
+
/** Custom className */
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function AdminBrandTile({ size, storeName: storeNameProp, className, }: AdminBrandTileProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=AdminBrandTile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminBrandTile.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminBrandTile.tsx"],"names":[],"mappings":"AA0BA,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAgB,cAAc,CAAC,EAC7B,IAAW,EACX,SAAS,EAAE,aAAa,EACxB,SAAc,GACf,EAAE,mBAAmB,2CAsCrB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @rovela-ai/sdk/admin/components/AdminBrandTile
|
|
5
|
+
*
|
|
6
|
+
* THE store mark for admin chrome — a framed tile whose source resolves
|
|
7
|
+
* favicon → logo → ink monogram. A square favicon belongs in a small tile;
|
|
8
|
+
* wide logo lockups read cramped, and merchant logos with baked-in taglines
|
|
9
|
+
* turn to mush — the tile frames whatever exists cleanly, and a stale URL
|
|
10
|
+
* degrades to the monogram instead of a broken image.
|
|
11
|
+
*
|
|
12
|
+
* Shared by AdminTopBar (sm, 28px) and AdminAuthShell (lg, 40px) so the
|
|
13
|
+
* resolution logic lives exactly once. Sources are settings-first (live
|
|
14
|
+
* store_settings via the provider) with the build-time env vars as
|
|
15
|
+
* fallback — the branding write contract keeps the settings mirror fresh,
|
|
16
|
+
* so store-side changes show without a redeploy. Works pre-auth: the
|
|
17
|
+
* public settings payload feeds the provider on the login door too.
|
|
18
|
+
*/
|
|
19
|
+
import { useEffect, useState } from 'react';
|
|
20
|
+
import { useStoreSettingsOptional } from '../../core';
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Component
|
|
23
|
+
// =============================================================================
|
|
24
|
+
export function AdminBrandTile({ size = 'sm', storeName: storeNameProp, className = '', }) {
|
|
25
|
+
const storeSettings = useStoreSettingsOptional();
|
|
26
|
+
const settingsLoading = !!storeSettings?.isLoading && !storeSettings?.settings;
|
|
27
|
+
const storeName = storeNameProp || storeSettings?.storeName || 'Admin';
|
|
28
|
+
const faviconUrl = storeSettings?.faviconUrl || process.env.NEXT_PUBLIC_STORE_FAVICON_URL || null;
|
|
29
|
+
const logoUrl = storeSettings?.logoUrl || process.env.NEXT_PUBLIC_STORE_LOGO_URL || null;
|
|
30
|
+
const tileUrl = faviconUrl || logoUrl;
|
|
31
|
+
// A stale pointer (asset deleted store-side while an env var still carries
|
|
32
|
+
// the fixed URL) must degrade to the monogram, never a broken img.
|
|
33
|
+
const [tileBroken, setTileBroken] = useState(false);
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
// Pattern A — reset internal state on prop change (retry when the URL changes).
|
|
36
|
+
// eslint-disable-next-line react-hooks/set-state-in-effect
|
|
37
|
+
setTileBroken(false);
|
|
38
|
+
}, [tileUrl]);
|
|
39
|
+
const tileSrc = tileBroken ? null : tileUrl;
|
|
40
|
+
return (_jsx("span", { className: `admin-brand-tile ${size === 'lg' ? 'admin-brand-tile-lg' : ''} ${tileSrc ? '' : 'admin-brand-tile-monogram'} ${className}`
|
|
41
|
+
.replace(/\s+/g, ' ')
|
|
42
|
+
.trim(), children: tileSrc ? (
|
|
43
|
+
// eslint-disable-next-line @next/next/no-img-element
|
|
44
|
+
_jsx("img", { src: tileSrc, alt: "", onError: () => setTileBroken(true) })) : settingsLoading ? (_jsx("span", { className: "admin-skeleton admin-brand-tile-skeleton" })) : (storeName.charAt(0).toUpperCase()) }));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=AdminBrandTile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminBrandTile.js","sourceRoot":"","sources":["../../../src/admin/components/AdminBrandTile.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAerD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,GAAG,IAAI,EACX,SAAS,EAAE,aAAa,EACxB,SAAS,GAAG,EAAE,GACM;IACpB,MAAM,aAAa,GAAG,wBAAwB,EAAE,CAAA;IAChD,MAAM,eAAe,GAAG,CAAC,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAA;IAC9E,MAAM,SAAS,GAAG,aAAa,IAAI,aAAa,EAAE,SAAS,IAAI,OAAO,CAAA;IAEtE,MAAM,UAAU,GACd,aAAa,EAAE,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAA;IAChF,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,CAAA;IACxF,MAAM,OAAO,GAAG,UAAU,IAAI,OAAO,CAAA;IAErC,2EAA2E;IAC3E,mEAAmE;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,gFAAgF;QAChF,2DAA2D;QAC3D,aAAa,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACb,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;IAE3C,OAAO,CACL,eACE,SAAS,EAAE,oBAAoB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,IACvE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BACjB,IAAI,SAAS,EAAE;aACZ,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,IAAI,EAAE,YAER,OAAO,CAAC,CAAC,CAAC;QACT,qDAAqD;QACrD,cAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAC,EAAE,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAI,CACjE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,0CAA0C,GAAG,CAC9D,CAAC,CAAC,CAAC,CACF,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAClC,GACI,CACR,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminForgotPasswordForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminForgotPasswordForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminForgotPasswordForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminForgotPasswordForm.tsx"],"names":[],"mappings":"AAyBA,MAAM,WAAW,4BAA4B;IAC3C,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,wBAAgB,uBAAuB,CAAC,EACtC,SAAc,EACd,QAAyB,GAC1B,EAAE,4BAA4B,2CAsH9B"}
|
|
@@ -5,16 +5,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
*
|
|
6
6
|
* Admin forgot-password request form.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `/admin/forgot-password`.
|
|
8
|
+
* Rendered inside the AdminAuthShell (the front-door chrome owns identity:
|
|
9
|
+
* brand tile + store name + card). Meant to be mounted BARE at
|
|
10
|
+
* `/admin/forgot-password`. Errors are STATES — inline alerts inside the
|
|
11
|
+
* card, never toasts (LEDGER notification grammar).
|
|
11
12
|
*
|
|
12
13
|
* The success state is intentionally enumeration-safe: we always show the
|
|
13
14
|
* same "check your email" message whether or not the entered email belongs
|
|
14
15
|
* to a real admin. Backend enforces this behavior too.
|
|
15
16
|
*/
|
|
16
17
|
import { useState, useCallback } from 'react';
|
|
17
|
-
import {
|
|
18
|
+
import { Check } from 'lucide-react';
|
|
19
|
+
import { AdminAuthShell } from './AdminAuthShell';
|
|
18
20
|
// =============================================================================
|
|
19
21
|
// Component
|
|
20
22
|
// =============================================================================
|
|
@@ -51,9 +53,9 @@ export function AdminForgotPasswordForm({ className = '', loginUrl = '/admin/log
|
|
|
51
53
|
}, [email]);
|
|
52
54
|
// --- Success view (after the request was accepted) ----------------------
|
|
53
55
|
if (submitted) {
|
|
54
|
-
return (_jsxs(
|
|
56
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "Check your email" }), _jsx("p", { className: "admin-auth-sub", children: "If an admin account exists for that address, the reset link is on its way. It expires in 1 hour." }), _jsxs("div", { className: "admin-auth-ok", children: [_jsx(Check, { "aria-hidden": "true" }), "Sent to ", email] }), _jsx("a", { href: loginUrl, className: "admin-auth-footlink", children: "Back to sign in" })] }));
|
|
55
57
|
}
|
|
56
58
|
// --- Form view -----------------------------------------------------------
|
|
57
|
-
return (_jsxs(
|
|
59
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "Forgot your password?" }), _jsx("p", { className: "admin-auth-sub", children: "Enter your admin email and we'll send you a link to reset it." }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: error }) })), _jsxs("div", { children: [_jsx("label", { htmlFor: "forgot-email", className: "admin-label admin-label-required", children: "Email" }), _jsx("input", { id: "forgot-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), required: true, autoComplete: "email", disabled: isSubmitting, className: "admin-input w-full", placeholder: "you@example.com" })] }), _jsx("button", { type: "submit", disabled: isSubmitting || !email.trim(), className: "admin-btn admin-btn-primary w-full", children: isSubmitting ? (_jsxs("span", { className: "flex items-center justify-center gap-2", children: [_jsx("span", { className: "admin-spinner admin-spinner-sm" }), "Sending link\u2026"] })) : ('Send reset link') })] }), _jsx("a", { href: loginUrl, className: "admin-auth-footlink", children: "Back to sign in" })] }));
|
|
58
60
|
}
|
|
59
61
|
//# sourceMappingURL=AdminForgotPasswordForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminForgotPasswordForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminForgotPasswordForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"AdminForgotPasswordForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminForgotPasswordForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminResetPasswordForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminResetPasswordForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminResetPasswordForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminResetPasswordForm.tsx"],"names":[],"mappings":"AAmCA,MAAM,WAAW,2BAA2B;IAC1C,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAWD,wBAAgB,sBAAsB,CAAC,EACrC,SAAc,EACd,QAAyB,EACzB,iBAA4C,EAC5C,eAAsB,GACvB,EAAE,2BAA2B,2CAqQ7B"}
|
|
@@ -15,14 +15,18 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
* 5. On submit, calls `POST /api/admin/reset-password`. On success, shows
|
|
16
16
|
* a confirmation screen and redirects to `/admin/login` after 2s.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Rendered inside the AdminAuthShell (the front-door chrome owns identity:
|
|
19
|
+
* brand tile + store name + card). Meant to be mounted BARE at
|
|
20
|
+
* `/admin/reset-password`. Errors are STATES — inline alerts inside the
|
|
21
|
+
* card, never toasts (LEDGER notification grammar).
|
|
19
22
|
*
|
|
20
23
|
* NOTE: because this component uses `useSearchParams`, the consuming page
|
|
21
24
|
* MUST wrap it in a `<Suspense>` boundary (Next.js App Router requirement).
|
|
22
25
|
*/
|
|
23
26
|
import { useState, useEffect, useCallback } from 'react';
|
|
24
27
|
import { useSearchParams } from 'next/navigation';
|
|
25
|
-
import {
|
|
28
|
+
import { Check, Eye, EyeOff } from 'lucide-react';
|
|
29
|
+
import { AdminAuthShell } from './AdminAuthShell';
|
|
26
30
|
// =============================================================================
|
|
27
31
|
// Component
|
|
28
32
|
// =============================================================================
|
|
@@ -34,6 +38,8 @@ export function AdminResetPasswordForm({ className = '', loginUrl = '/admin/logi
|
|
|
34
38
|
});
|
|
35
39
|
const [password, setPassword] = useState('');
|
|
36
40
|
const [confirmPassword, setConfirmPassword] = useState('');
|
|
41
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
42
|
+
const [showConfirm, setShowConfirm] = useState(false);
|
|
37
43
|
const [formError, setFormError] = useState(null);
|
|
38
44
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
39
45
|
const [success, setSuccess] = useState(false);
|
|
@@ -118,17 +124,17 @@ export function AdminResetPasswordForm({ className = '', loginUrl = '/admin/logi
|
|
|
118
124
|
// --- 3. Render states ---------------------------------------------------
|
|
119
125
|
// Loading state — waiting on GET validation
|
|
120
126
|
if (validation.status === 'validating') {
|
|
121
|
-
return (_jsx(
|
|
127
|
+
return (_jsx(AdminAuthShell, { className: className, children: _jsx("div", { className: "flex items-center justify-center py-8", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) }) }));
|
|
122
128
|
}
|
|
123
129
|
// Invalid token — offer a new reset link
|
|
124
130
|
if (validation.status === 'invalid') {
|
|
125
|
-
return (_jsxs(
|
|
131
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "This link has expired" }), _jsx("p", { className: "admin-auth-sub", children: validation.error }), _jsx("a", { href: forgotPasswordUrl, className: "admin-btn admin-btn-primary w-full inline-flex items-center justify-center", children: "Request a new link" }), _jsx("a", { href: loginUrl, className: "admin-auth-footlink", children: "Back to sign in" })] }));
|
|
126
132
|
}
|
|
127
133
|
// Success — password updated, redirecting
|
|
128
134
|
if (success) {
|
|
129
|
-
return (
|
|
135
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "Password updated" }), _jsx("p", { className: "admin-auth-sub", children: "You can now sign in with your new password." }), _jsxs("div", { className: "admin-auth-ok", children: [_jsx(Check, { "aria-hidden": "true" }), "Taking you to sign in\u2026"] })] }));
|
|
130
136
|
}
|
|
131
137
|
// Form — token validated, let the user set a new password
|
|
132
|
-
return (_jsxs(
|
|
138
|
+
return (_jsxs(AdminAuthShell, { className: className, children: [_jsx("h1", { className: "admin-auth-title", children: "Set a new password" }), _jsx("p", { className: "admin-auth-sub", children: "Choose a strong password you don't use anywhere else." }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [formError && (_jsx("div", { className: "admin-alert admin-alert-error", children: _jsx("div", { className: "admin-alert-description", children: formError }) })), _jsxs("div", { children: [_jsx("label", { htmlFor: "new-password", className: "admin-label admin-label-required", children: "New password" }), _jsxs("div", { className: "admin-auth-pw", children: [_jsx("input", { id: "new-password", type: showPassword ? 'text' : 'password', value: password, onChange: (e) => setPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: isSubmitting, className: "admin-input w-full", placeholder: "At least 8 characters" }), _jsx("button", { type: "button", className: "admin-auth-eye", onClick: () => setShowPassword((v) => !v), "aria-label": showPassword ? 'Hide password' : 'Show password', tabIndex: -1, children: showPassword ? _jsx(EyeOff, { "aria-hidden": "true" }) : _jsx(Eye, { "aria-hidden": "true" }) })] })] }), _jsxs("div", { children: [_jsx("label", { htmlFor: "confirm-password", className: "admin-label admin-label-required", children: "Confirm password" }), _jsxs("div", { className: "admin-auth-pw", children: [_jsx("input", { id: "confirm-password", type: showConfirm ? 'text' : 'password', value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true, minLength: 8, autoComplete: "new-password", disabled: isSubmitting, className: "admin-input w-full", placeholder: "Re-enter your new password" }), _jsx("button", { type: "button", className: "admin-auth-eye", onClick: () => setShowConfirm((v) => !v), "aria-label": showConfirm ? 'Hide password' : 'Show password', tabIndex: -1, children: showConfirm ? _jsx(EyeOff, { "aria-hidden": "true" }) : _jsx(Eye, { "aria-hidden": "true" }) })] })] }), _jsx("button", { type: "submit", disabled: isSubmitting || !password || !confirmPassword, className: "admin-btn admin-btn-primary w-full", children: isSubmitting ? (_jsxs("span", { className: "flex items-center justify-center gap-2", children: [_jsx("span", { className: "admin-spinner admin-spinner-sm" }), "Updating password\u2026"] })) : ('Reset password') })] }), _jsx("a", { href: loginUrl, className: "admin-auth-footlink", children: "Back to sign in" })] }));
|
|
133
139
|
}
|
|
134
140
|
//# sourceMappingURL=AdminResetPasswordForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminResetPasswordForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminResetPasswordForm.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ
|
|
1
|
+
{"version":3,"file":"AdminResetPasswordForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminResetPasswordForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminTopBar.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminTopBar.tsx"],"names":[],"mappings":"AAoBA,OAAO,
|
|
1
|
+
{"version":3,"file":"AdminTopBar.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminTopBar.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAStC,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EAAE,aAAuB,EAClC,IAAI,EACJ,QAAc,EACd,SAAc,GACf,EAAE,gBAAgB,2CAiElB"}
|