@rovela-ai/sdk 0.2.1 → 0.3.1

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.
Files changed (182) hide show
  1. package/dist/admin/api/accept-invite.d.ts +65 -0
  2. package/dist/admin/api/accept-invite.d.ts.map +1 -0
  3. package/dist/admin/api/accept-invite.js +115 -0
  4. package/dist/admin/api/accept-invite.js.map +1 -0
  5. package/dist/admin/api/categories.d.ts.map +1 -1
  6. package/dist/admin/api/categories.js +21 -28
  7. package/dist/admin/api/categories.js.map +1 -1
  8. package/dist/admin/api/customers.d.ts.map +1 -1
  9. package/dist/admin/api/customers.js +17 -25
  10. package/dist/admin/api/customers.js.map +1 -1
  11. package/dist/admin/api/forgot-password.d.ts +39 -0
  12. package/dist/admin/api/forgot-password.d.ts.map +1 -0
  13. package/dist/admin/api/forgot-password.js +66 -0
  14. package/dist/admin/api/forgot-password.js.map +1 -0
  15. package/dist/admin/api/index.d.ts +6 -0
  16. package/dist/admin/api/index.d.ts.map +1 -1
  17. package/dist/admin/api/index.js +9 -0
  18. package/dist/admin/api/index.js.map +1 -1
  19. package/dist/admin/api/me.d.ts +72 -0
  20. package/dist/admin/api/me.d.ts.map +1 -0
  21. package/dist/admin/api/me.js +177 -0
  22. package/dist/admin/api/me.js.map +1 -0
  23. package/dist/admin/api/orders.d.ts.map +1 -1
  24. package/dist/admin/api/orders.js +21 -28
  25. package/dist/admin/api/orders.js.map +1 -1
  26. package/dist/admin/api/products.d.ts.map +1 -1
  27. package/dist/admin/api/products.js +33 -37
  28. package/dist/admin/api/products.js.map +1 -1
  29. package/dist/admin/api/refund.d.ts.map +1 -1
  30. package/dist/admin/api/refund.js +5 -7
  31. package/dist/admin/api/refund.js.map +1 -1
  32. package/dist/admin/api/reset-password.d.ts +49 -0
  33. package/dist/admin/api/reset-password.d.ts.map +1 -0
  34. package/dist/admin/api/reset-password.js +99 -0
  35. package/dist/admin/api/reset-password.js.map +1 -0
  36. package/dist/admin/api/return.d.ts.map +1 -1
  37. package/dist/admin/api/return.js +9 -12
  38. package/dist/admin/api/return.js.map +1 -1
  39. package/dist/admin/api/settings.d.ts.map +1 -1
  40. package/dist/admin/api/settings.js +9 -12
  41. package/dist/admin/api/settings.js.map +1 -1
  42. package/dist/admin/api/shipping.d.ts.map +1 -1
  43. package/dist/admin/api/shipping.js +65 -61
  44. package/dist/admin/api/shipping.js.map +1 -1
  45. package/dist/admin/api/stats.d.ts.map +1 -1
  46. package/dist/admin/api/stats.js +5 -7
  47. package/dist/admin/api/stats.js.map +1 -1
  48. package/dist/admin/api/stripe-status.d.ts.map +1 -1
  49. package/dist/admin/api/stripe-status.js +5 -7
  50. package/dist/admin/api/stripe-status.js.map +1 -1
  51. package/dist/admin/api/tax-zones.d.ts.map +1 -1
  52. package/dist/admin/api/tax-zones.js +21 -28
  53. package/dist/admin/api/tax-zones.js.map +1 -1
  54. package/dist/admin/api/users.d.ts +142 -0
  55. package/dist/admin/api/users.d.ts.map +1 -0
  56. package/dist/admin/api/users.js +356 -0
  57. package/dist/admin/api/users.js.map +1 -0
  58. package/dist/admin/components/AdminAcceptInviteForm.d.ts +3 -0
  59. package/dist/admin/components/AdminAcceptInviteForm.d.ts.map +1 -0
  60. package/dist/admin/components/AdminAcceptInviteForm.js +137 -0
  61. package/dist/admin/components/AdminAcceptInviteForm.js.map +1 -0
  62. package/dist/admin/components/AdminAccountPage.d.ts +10 -0
  63. package/dist/admin/components/AdminAccountPage.d.ts.map +1 -0
  64. package/dist/admin/components/AdminAccountPage.js +123 -0
  65. package/dist/admin/components/AdminAccountPage.js.map +1 -0
  66. package/dist/admin/components/AdminForgotPasswordForm.d.ts +8 -0
  67. package/dist/admin/components/AdminForgotPasswordForm.d.ts.map +1 -0
  68. package/dist/admin/components/AdminForgotPasswordForm.js +59 -0
  69. package/dist/admin/components/AdminForgotPasswordForm.js.map +1 -0
  70. package/dist/admin/components/AdminNav.d.ts.map +1 -1
  71. package/dist/admin/components/AdminNav.js +32 -4
  72. package/dist/admin/components/AdminNav.js.map +1 -1
  73. package/dist/admin/components/AdminResetPasswordForm.d.ts +12 -0
  74. package/dist/admin/components/AdminResetPasswordForm.d.ts.map +1 -0
  75. package/dist/admin/components/AdminResetPasswordForm.js +134 -0
  76. package/dist/admin/components/AdminResetPasswordForm.js.map +1 -0
  77. package/dist/admin/components/AdminUserMenu.d.ts.map +1 -1
  78. package/dist/admin/components/AdminUserMenu.js +2 -2
  79. package/dist/admin/components/AdminUserMenu.js.map +1 -1
  80. package/dist/admin/components/InviteUserDialog.d.ts +3 -0
  81. package/dist/admin/components/InviteUserDialog.d.ts.map +1 -0
  82. package/dist/admin/components/InviteUserDialog.js +127 -0
  83. package/dist/admin/components/InviteUserDialog.js.map +1 -0
  84. package/dist/admin/components/UsersTable.d.ts +3 -0
  85. package/dist/admin/components/UsersTable.d.ts.map +1 -0
  86. package/dist/admin/components/UsersTable.js +399 -0
  87. package/dist/admin/components/UsersTable.js.map +1 -0
  88. package/dist/admin/components/index.d.ts +9 -0
  89. package/dist/admin/components/index.d.ts.map +1 -1
  90. package/dist/admin/components/index.js +9 -0
  91. package/dist/admin/components/index.js.map +1 -1
  92. package/dist/admin/config.d.ts +15 -10
  93. package/dist/admin/config.d.ts.map +1 -1
  94. package/dist/admin/config.js +38 -11
  95. package/dist/admin/config.js.map +1 -1
  96. package/dist/admin/hooks/index.d.ts +4 -0
  97. package/dist/admin/hooks/index.d.ts.map +1 -1
  98. package/dist/admin/hooks/index.js +3 -0
  99. package/dist/admin/hooks/index.js.map +1 -1
  100. package/dist/admin/hooks/useAdminMe.d.ts +31 -0
  101. package/dist/admin/hooks/useAdminMe.d.ts.map +1 -0
  102. package/dist/admin/hooks/useAdminMe.js +103 -0
  103. package/dist/admin/hooks/useAdminMe.js.map +1 -0
  104. package/dist/admin/hooks/useAdminPermissions.d.ts +3 -0
  105. package/dist/admin/hooks/useAdminPermissions.d.ts.map +1 -0
  106. package/dist/admin/hooks/useAdminPermissions.js +51 -0
  107. package/dist/admin/hooks/useAdminPermissions.js.map +1 -0
  108. package/dist/admin/hooks/useAdminUsers.d.ts +3 -0
  109. package/dist/admin/hooks/useAdminUsers.d.ts.map +1 -0
  110. package/dist/admin/hooks/useAdminUsers.js +240 -0
  111. package/dist/admin/hooks/useAdminUsers.js.map +1 -0
  112. package/dist/admin/index.d.ts +4 -4
  113. package/dist/admin/index.d.ts.map +1 -1
  114. package/dist/admin/index.js +20 -2
  115. package/dist/admin/index.js.map +1 -1
  116. package/dist/admin/permissions.d.ts +92 -0
  117. package/dist/admin/permissions.d.ts.map +1 -0
  118. package/dist/admin/permissions.js +201 -0
  119. package/dist/admin/permissions.js.map +1 -0
  120. package/dist/admin/server/admin-invite.d.ts +122 -0
  121. package/dist/admin/server/admin-invite.d.ts.map +1 -0
  122. package/dist/admin/server/admin-invite.js +235 -0
  123. package/dist/admin/server/admin-invite.js.map +1 -0
  124. package/dist/admin/server/admin-password-reset.d.ts +87 -0
  125. package/dist/admin/server/admin-password-reset.d.ts.map +1 -0
  126. package/dist/admin/server/admin-password-reset.js +220 -0
  127. package/dist/admin/server/admin-password-reset.js.map +1 -0
  128. package/dist/admin/server/admin-self-service.d.ts +86 -0
  129. package/dist/admin/server/admin-self-service.d.ts.map +1 -0
  130. package/dist/admin/server/admin-self-service.js +188 -0
  131. package/dist/admin/server/admin-self-service.js.map +1 -0
  132. package/dist/admin/server/admin-service.d.ts.map +1 -1
  133. package/dist/admin/server/admin-service.js +21 -2
  134. package/dist/admin/server/admin-service.js.map +1 -1
  135. package/dist/admin/server/admin-session.d.ts +137 -0
  136. package/dist/admin/server/admin-session.d.ts.map +1 -0
  137. package/dist/admin/server/admin-session.js +229 -0
  138. package/dist/admin/server/admin-session.js.map +1 -0
  139. package/dist/admin/server/index.d.ts +7 -0
  140. package/dist/admin/server/index.d.ts.map +1 -1
  141. package/dist/admin/server/index.js +20 -0
  142. package/dist/admin/server/index.js.map +1 -1
  143. package/dist/admin/server/user-management.d.ts +223 -0
  144. package/dist/admin/server/user-management.d.ts.map +1 -0
  145. package/dist/admin/server/user-management.js +846 -0
  146. package/dist/admin/server/user-management.js.map +1 -0
  147. package/dist/admin/types.d.ts +153 -2
  148. package/dist/admin/types.d.ts.map +1 -1
  149. package/dist/auth/config.d.ts.map +1 -1
  150. package/dist/auth/config.js +11 -2
  151. package/dist/auth/config.js.map +1 -1
  152. package/dist/core/db/queries.d.ts +19 -13
  153. package/dist/core/db/queries.d.ts.map +1 -1
  154. package/dist/core/db/schema.d.ts +327 -9
  155. package/dist/core/db/schema.d.ts.map +1 -1
  156. package/dist/core/db/schema.js +80 -3
  157. package/dist/core/db/schema.js.map +1 -1
  158. package/dist/core/types.d.ts +19 -3
  159. package/dist/core/types.d.ts.map +1 -1
  160. package/dist/emails/index.d.ts +2 -2
  161. package/dist/emails/index.d.ts.map +1 -1
  162. package/dist/emails/index.js +3 -1
  163. package/dist/emails/index.js.map +1 -1
  164. package/dist/emails/send/admin-auth.d.ts +94 -0
  165. package/dist/emails/send/admin-auth.d.ts.map +1 -0
  166. package/dist/emails/send/admin-auth.js +118 -0
  167. package/dist/emails/send/admin-auth.js.map +1 -0
  168. package/dist/emails/send/index.d.ts +2 -0
  169. package/dist/emails/send/index.d.ts.map +1 -1
  170. package/dist/emails/send/index.js +4 -0
  171. package/dist/emails/send/index.js.map +1 -1
  172. package/dist/emails/templates/admin-invite.d.ts +40 -0
  173. package/dist/emails/templates/admin-invite.d.ts.map +1 -0
  174. package/dist/emails/templates/admin-invite.js +62 -0
  175. package/dist/emails/templates/admin-invite.js.map +1 -0
  176. package/dist/emails/templates/index.d.ts +1 -0
  177. package/dist/emails/templates/index.d.ts.map +1 -1
  178. package/dist/emails/templates/index.js +4 -0
  179. package/dist/emails/templates/index.js.map +1 -1
  180. package/dist/emails/types.d.ts +22 -1
  181. package/dist/emails/types.d.ts.map +1 -1
  182. package/package.json +21 -1
@@ -0,0 +1,399 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * @rovela/sdk/admin/components/UsersTable
5
+ *
6
+ * Admin user management table — list, search, filter, and lifecycle-action
7
+ * (deactivate / reactivate / hard-delete) flows.
8
+ *
9
+ * Reuses the existing CustomerTable styling conventions (admin-* CSS classes)
10
+ * and the shared `DeleteConfirmDialog` for all destructive confirmations.
11
+ *
12
+ * Role-based gating:
13
+ * - Action buttons on each row respect `canManageUser` from
14
+ * `useAdminPermissions` — an admin can never see an action they can't
15
+ * execute. Server still enforces the same rules.
16
+ * - Self row shows no action menu (can't manage yourself).
17
+ * - Hard-delete action is owner-only and requires the target to already
18
+ * be in `deactivated` status.
19
+ * - Hard-delete confirmation requires typing the target's email (high
20
+ * friction, matches GitHub repo deletion UX).
21
+ */
22
+ import { useState, useEffect, useCallback, useMemo } from 'react';
23
+ import { Search, Users as UsersIcon, UserCheck, UserX, MoreHorizontal, Shield, CheckCircle2, Clock, XCircle, Trash2, RotateCcw, AlertTriangle, UserPlus, Send, Ban, ChevronRight, } from 'lucide-react';
24
+ import { useAdminUsers } from '../hooks/useAdminUsers';
25
+ import { useAdminAuth } from '../hooks/useAdminAuth';
26
+ import { useAdminPermissions } from '../hooks/useAdminPermissions';
27
+ import { useStoreSettingsOptional } from '../../core/StoreSettingsProvider';
28
+ import { roleLabel, canonicalRole } from '../permissions';
29
+ import { DeleteConfirmDialog } from './DeleteConfirmDialog';
30
+ import { InviteUserDialog } from './InviteUserDialog';
31
+ // =============================================================================
32
+ // Role badge
33
+ // =============================================================================
34
+ function RoleBadge({ role }) {
35
+ const canonical = canonicalRole(role);
36
+ const label = roleLabel(role);
37
+ let className = 'admin-badge ';
38
+ if (canonical === 'owner') {
39
+ className += 'admin-badge-verified';
40
+ }
41
+ else if (canonical === 'administrator') {
42
+ className += 'admin-badge-verified';
43
+ }
44
+ else if (canonical === 'manager') {
45
+ className += 'admin-badge-unverified';
46
+ }
47
+ else {
48
+ className += 'admin-badge-unverified';
49
+ }
50
+ return (_jsxs("span", { className: `${className} inline-flex items-center gap-1`, children: [_jsx(Shield, { className: "h-3 w-3" }), label] }));
51
+ }
52
+ // =============================================================================
53
+ // Status badge
54
+ // =============================================================================
55
+ function StatusBadge({ status }) {
56
+ if (status === 'active') {
57
+ return (_jsxs("span", { className: "admin-badge admin-badge-verified inline-flex items-center gap-1", children: [_jsx(CheckCircle2, { className: "h-3 w-3" }), "Active"] }));
58
+ }
59
+ if (status === 'invited') {
60
+ return (_jsxs("span", { className: "admin-badge admin-badge-unverified inline-flex items-center gap-1", children: [_jsx(Clock, { className: "h-3 w-3" }), "Invited"] }));
61
+ }
62
+ return (_jsxs("span", { className: "admin-badge admin-badge-unverified inline-flex items-center gap-1", children: [_jsx(XCircle, { className: "h-3 w-3" }), "Deactivated"] }));
63
+ }
64
+ function RowActions({ user, canDeactivate, canReactivate, canDelete, canResendInvite, canCancelInvite, grantableRoles, onDeactivate, onReactivate, onDelete, onResendInvite, onCancelInvite, onChangeRole, }) {
65
+ const [open, setOpen] = useState(false);
66
+ const [roleSubmenuOpen, setRoleSubmenuOpen] = useState(false);
67
+ const hasAnyAction = canDeactivate ||
68
+ canReactivate ||
69
+ canDelete ||
70
+ canResendInvite ||
71
+ canCancelInvite ||
72
+ grantableRoles.length > 0;
73
+ // If no actions available, render nothing (cleaner than disabled menu)
74
+ if (!hasAnyAction) {
75
+ return _jsx("span", { className: "text-xs admin-text-muted", children: "\u2014" });
76
+ }
77
+ return (_jsxs("div", { className: "relative inline-block", children: [_jsx("button", { type: "button", onClick: (e) => {
78
+ e.stopPropagation();
79
+ setOpen((v) => !v);
80
+ setRoleSubmenuOpen(false);
81
+ }, className: "p-2 rounded-md hover:bg-[hsl(var(--admin-background-hover))] text-[hsl(var(--admin-foreground-muted))]", "aria-label": "Actions", "aria-expanded": open, children: _jsx(MoreHorizontal, { className: "h-4 w-4" }) }), open && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => {
82
+ setOpen(false);
83
+ setRoleSubmenuOpen(false);
84
+ }, "aria-hidden": "true" }), _jsx("div", { className: "absolute right-0 z-50 mt-1 min-w-[200px] rounded-md border shadow-lg", style: {
85
+ background: 'hsl(var(--admin-card))',
86
+ borderColor: 'hsl(var(--admin-border))',
87
+ }, onClick: (e) => e.stopPropagation(), children: _jsxs("div", { className: "py-1", children: [canResendInvite && (_jsxs("button", { type: "button", onClick: () => {
88
+ setOpen(false);
89
+ onResendInvite(user);
90
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-background-hover))]", children: [_jsx(Send, { className: "h-4 w-4" }), "Resend invite"] })), canCancelInvite && (_jsxs("button", { type: "button", onClick: () => {
91
+ setOpen(false);
92
+ onCancelInvite(user);
93
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-destructive)/0.1)] text-[hsl(var(--admin-destructive))]", children: [_jsx(Ban, { className: "h-4 w-4" }), "Cancel invite"] })), canDeactivate && (_jsxs("button", { type: "button", onClick: () => {
94
+ setOpen(false);
95
+ onDeactivate(user);
96
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-background-hover))]", children: [_jsx(UserX, { className: "h-4 w-4" }), "Deactivate"] })), canReactivate && (_jsxs("button", { type: "button", onClick: () => {
97
+ setOpen(false);
98
+ onReactivate(user);
99
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-background-hover))]", children: [_jsx(RotateCcw, { className: "h-4 w-4" }), "Reactivate"] })), grantableRoles.length > 0 && (_jsxs("div", { className: "relative", children: [_jsxs("button", { type: "button", onClick: () => setRoleSubmenuOpen((v) => !v), className: "w-full px-3 py-2 text-left text-sm flex items-center justify-between gap-2 hover:bg-[hsl(var(--admin-background-hover))]", "aria-expanded": roleSubmenuOpen, children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx(Shield, { className: "h-4 w-4" }), "Change role"] }), _jsx(ChevronRight, { className: "h-4 w-4" })] }), roleSubmenuOpen && (_jsx("div", { className: "ml-4 mt-1 rounded-md border", style: {
100
+ background: 'hsl(var(--admin-card))',
101
+ borderColor: 'hsl(var(--admin-border))',
102
+ }, children: grantableRoles.map((targetRole) => (_jsx("button", { type: "button", onClick: () => {
103
+ setOpen(false);
104
+ setRoleSubmenuOpen(false);
105
+ onChangeRole(user, targetRole);
106
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-background-hover))]", children: roleLabel(targetRole) }, targetRole))) }))] })), canDelete && (_jsxs(_Fragment, { children: [_jsx("div", { className: "my-1 border-t", style: { borderColor: 'hsl(var(--admin-border))' } }), _jsxs("button", { type: "button", onClick: () => {
107
+ setOpen(false);
108
+ onDelete(user);
109
+ }, className: "w-full px-3 py-2 text-left text-sm flex items-center gap-2 hover:bg-[hsl(var(--admin-destructive)/0.1)] text-[hsl(var(--admin-destructive))]", children: [_jsx(Trash2, { className: "h-4 w-4" }), "Delete permanently"] })] }))] }) })] }))] }));
110
+ }
111
+ function UserRow({ user, isSelf, canDeactivate, canReactivate, canDelete, canResendInvite, canCancelInvite, grantableRoles, formatDate, onDeactivate, onReactivate, onDelete, onResendInvite, onCancelInvite, onChangeRole, }) {
112
+ return (_jsxs("tr", { className: "admin-table-row", children: [_jsx("td", { className: "px-4 py-3", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "admin-customer-avatar h-9 w-9 text-sm font-medium", children: (user.name || user.email).charAt(0).toUpperCase() }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "font-medium", children: user.name || 'Unnamed' }), isSelf && (_jsx("span", { className: "text-xs admin-text-muted", children: "(you)" }))] })] }) }), _jsx("td", { className: "px-4 py-3", children: _jsx("span", { className: "text-sm admin-text-muted", children: user.email }) }), _jsx("td", { className: "px-4 py-3", children: _jsx(RoleBadge, { role: user.role }) }), _jsx("td", { className: "px-4 py-3", children: _jsx(StatusBadge, { status: user.status }) }), _jsx("td", { className: "px-4 py-3", children: _jsx("span", { className: "text-sm admin-text-muted", children: formatDate(user.lastLoginAt) }) }), _jsx("td", { className: "px-4 py-3", children: _jsx("span", { className: "text-sm admin-text-muted", children: formatDate(user.createdAt) }) }), _jsx("td", { className: "px-4 py-3 text-right", children: isSelf ? (_jsx("span", { className: "text-xs admin-text-muted", children: "\u2014" })) : (_jsx(RowActions, { user: user, canDeactivate: canDeactivate, canReactivate: canReactivate, canDelete: canDelete, canResendInvite: canResendInvite, canCancelInvite: canCancelInvite, grantableRoles: grantableRoles, onDeactivate: onDeactivate, onReactivate: onReactivate, onDelete: onDelete, onResendInvite: onResendInvite, onCancelInvite: onCancelInvite, onChangeRole: onChangeRole })) })] }));
113
+ }
114
+ function DeleteWithConfirmationDialog({ user, isDeleting, error, onConfirm, onCancel, }) {
115
+ const [typed, setTyped] = useState('');
116
+ // Reset the typed input whenever the dialog opens for a new target
117
+ useEffect(() => {
118
+ setTyped('');
119
+ }, [user?.id]);
120
+ if (!user)
121
+ return null;
122
+ const canConfirm = typed.trim().toLowerCase() === user.email.toLowerCase();
123
+ return (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", style: { background: 'rgba(0,0,0,0.5)' }, onClick: () => {
124
+ if (!isDeleting)
125
+ onCancel();
126
+ }, children: _jsxs("div", { className: "w-full max-w-md rounded-lg p-6", style: {
127
+ background: 'hsl(var(--admin-card))',
128
+ border: '1px solid hsl(var(--admin-border))',
129
+ }, 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-destructive) / 0.1)' }, children: _jsx(AlertTriangle, { className: "h-5 w-5 text-[hsl(var(--admin-destructive))]" }) }), _jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold mb-1", children: "Delete user permanently" }), _jsxs("p", { className: "text-sm admin-text-muted", children: ["This permanently removes ", _jsx("strong", { children: user.name || user.email }), ". Their reset tokens and invite tokens will also be deleted. This action cannot be undone."] })] })] }), _jsxs("div", { className: "mb-4", children: [_jsxs("label", { className: "admin-label block mb-2", children: ["Type ", _jsx("code", { className: "font-mono", children: user.email }), " to confirm"] }), _jsx("input", { type: "text", value: typed, onChange: (e) => setTyped(e.target.value), disabled: isDeleting, className: "admin-input w-full", placeholder: user.email, autoComplete: "off", autoFocus: true })] }), error && (_jsx("div", { className: "admin-alert admin-alert-error mb-4", children: _jsx("div", { className: "admin-alert-description", children: error }) })), _jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx("button", { type: "button", onClick: onCancel, disabled: isDeleting, className: "admin-btn admin-btn-secondary", children: "Cancel" }), _jsx("button", { type: "button", onClick: onConfirm, disabled: !canConfirm || isDeleting, className: "admin-btn", style: {
130
+ background: 'hsl(var(--admin-destructive))',
131
+ color: 'hsl(var(--admin-destructive-foreground, 0 0% 100%))',
132
+ }, children: isDeleting ? (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "admin-spinner admin-spinner-sm" }), "Deleting..."] })) : ('Delete permanently') })] })] }) }));
133
+ }
134
+ // =============================================================================
135
+ // Main component
136
+ // =============================================================================
137
+ export function UsersTable({ pageSize = 20, className = '' }) {
138
+ const { users, total, page, isLoading, error, fetchUsers, deactivate, reactivate, deleteUser,
139
+ // Phase 3
140
+ resendInvite, cancelInvite, changeRole, } = useAdminUsers();
141
+ const { admin: currentAdmin } = useAdminAuth();
142
+ const { canManageUser, isOwner, can, canManageUser: canManageRole, } = useAdminPermissions();
143
+ // Permission to even see the Invite button
144
+ const canInvite = can('users.write');
145
+ const storeSettings = useStoreSettingsOptional();
146
+ const resolvedLocale = storeSettings?.locale ?? 'en-US';
147
+ // Filters
148
+ const [search, setSearch] = useState('');
149
+ const [debouncedSearch, setDebouncedSearch] = useState('');
150
+ const [statusFilter, setStatusFilter] = useState('all');
151
+ const [roleFilter, setRoleFilter] = useState('all');
152
+ // Deactivate confirmation state
153
+ const [deactivateTarget, setDeactivateTarget] = useState(null);
154
+ const [isDeactivating, setIsDeactivating] = useState(false);
155
+ const [deactivateError, setDeactivateError] = useState(null);
156
+ // Hard-delete confirmation state
157
+ const [deleteTarget, setDeleteTarget] = useState(null);
158
+ const [isDeleting, setIsDeleting] = useState(false);
159
+ const [deleteError, setDeleteError] = useState(null);
160
+ // Phase 3 — invite dialog
161
+ const [isInviteOpen, setIsInviteOpen] = useState(false);
162
+ // Phase 3 — cancel invite confirmation
163
+ const [cancelInviteTarget, setCancelInviteTarget] = useState(null);
164
+ const [isCancellingInvite, setIsCancellingInvite] = useState(false);
165
+ const [cancelInviteError, setCancelInviteError] = useState(null);
166
+ // Phase 3 — change role confirmation
167
+ const [changeRoleTarget, setChangeRoleTarget] = useState(null);
168
+ const [isChangingRole, setIsChangingRole] = useState(false);
169
+ const [changeRoleError, setChangeRoleError] = useState(null);
170
+ // Debounce search input (300ms)
171
+ useEffect(() => {
172
+ const timer = setTimeout(() => {
173
+ setDebouncedSearch(search);
174
+ }, 300);
175
+ return () => clearTimeout(timer);
176
+ }, [search]);
177
+ // Refetch on filter change
178
+ useEffect(() => {
179
+ fetchUsers({
180
+ search: debouncedSearch || undefined,
181
+ status: statusFilter,
182
+ role: roleFilter,
183
+ page: 1,
184
+ limit: pageSize,
185
+ });
186
+ }, [debouncedSearch, statusFilter, roleFilter, pageSize, fetchUsers]);
187
+ const handlePageChange = useCallback((newPage) => {
188
+ fetchUsers({
189
+ search: debouncedSearch || undefined,
190
+ status: statusFilter,
191
+ role: roleFilter,
192
+ page: newPage,
193
+ limit: pageSize,
194
+ });
195
+ }, [debouncedSearch, statusFilter, roleFilter, pageSize, fetchUsers]);
196
+ const formatDate = useCallback((iso) => {
197
+ if (!iso)
198
+ return 'Never';
199
+ const date = new Date(iso);
200
+ return date.toLocaleDateString(resolvedLocale, {
201
+ month: 'short',
202
+ day: 'numeric',
203
+ year: 'numeric',
204
+ });
205
+ }, [resolvedLocale]);
206
+ // =======================================================================
207
+ // Deactivate flow
208
+ // =======================================================================
209
+ const openDeactivateDialog = useCallback((user) => {
210
+ setDeactivateTarget(user);
211
+ setDeactivateError(null);
212
+ }, []);
213
+ const confirmDeactivate = useCallback(async () => {
214
+ if (!deactivateTarget)
215
+ return;
216
+ setIsDeactivating(true);
217
+ setDeactivateError(null);
218
+ const result = await deactivate(deactivateTarget.id);
219
+ setIsDeactivating(false);
220
+ if (result.success) {
221
+ setDeactivateTarget(null);
222
+ }
223
+ else {
224
+ setDeactivateError(result.error || 'Failed to deactivate user.');
225
+ }
226
+ }, [deactivateTarget, deactivate]);
227
+ const cancelDeactivate = useCallback(() => {
228
+ if (!isDeactivating) {
229
+ setDeactivateTarget(null);
230
+ setDeactivateError(null);
231
+ }
232
+ }, [isDeactivating]);
233
+ // =======================================================================
234
+ // Reactivate flow (no confirmation — it's reversible and benign)
235
+ // =======================================================================
236
+ const handleReactivate = useCallback(async (user) => {
237
+ const result = await reactivate(user.id);
238
+ if (!result.success) {
239
+ // Show error via alert — the inline error row at the top of the table
240
+ // isn't ideal for ad-hoc operations. Simple alert matches existing
241
+ // admin component patterns.
242
+ window.alert(result.error || 'Failed to reactivate user.');
243
+ }
244
+ }, [reactivate]);
245
+ // =======================================================================
246
+ // Hard-delete flow
247
+ // =======================================================================
248
+ const openDeleteDialog = useCallback((user) => {
249
+ setDeleteTarget(user);
250
+ setDeleteError(null);
251
+ }, []);
252
+ const confirmDelete = useCallback(async () => {
253
+ if (!deleteTarget)
254
+ return;
255
+ setIsDeleting(true);
256
+ setDeleteError(null);
257
+ const result = await deleteUser(deleteTarget.id);
258
+ setIsDeleting(false);
259
+ if (result.success) {
260
+ setDeleteTarget(null);
261
+ }
262
+ else {
263
+ setDeleteError(result.error || 'Failed to delete user.');
264
+ }
265
+ }, [deleteTarget, deleteUser]);
266
+ const cancelDelete = useCallback(() => {
267
+ if (!isDeleting) {
268
+ setDeleteTarget(null);
269
+ setDeleteError(null);
270
+ }
271
+ }, [isDeleting]);
272
+ // =======================================================================
273
+ // Phase 3 — Resend invite (one-click, no confirmation; reversible)
274
+ // =======================================================================
275
+ const handleResendInvite = useCallback(async (user) => {
276
+ const result = await resendInvite(user.id);
277
+ if (!result.success) {
278
+ window.alert(result.error || 'Failed to resend invite.');
279
+ }
280
+ else {
281
+ window.alert(`Invite resent to ${user.email}.`);
282
+ }
283
+ }, [resendInvite]);
284
+ // =======================================================================
285
+ // Phase 3 — Cancel invite (confirm dialog)
286
+ // =======================================================================
287
+ const openCancelInviteDialog = useCallback((user) => {
288
+ setCancelInviteTarget(user);
289
+ setCancelInviteError(null);
290
+ }, []);
291
+ const confirmCancelInvite = useCallback(async () => {
292
+ if (!cancelInviteTarget)
293
+ return;
294
+ setIsCancellingInvite(true);
295
+ setCancelInviteError(null);
296
+ const result = await cancelInvite(cancelInviteTarget.id);
297
+ setIsCancellingInvite(false);
298
+ if (result.success) {
299
+ setCancelInviteTarget(null);
300
+ }
301
+ else {
302
+ setCancelInviteError(result.error || 'Failed to cancel invite.');
303
+ }
304
+ }, [cancelInviteTarget, cancelInvite]);
305
+ const closeCancelInviteDialog = useCallback(() => {
306
+ if (!isCancellingInvite) {
307
+ setCancelInviteTarget(null);
308
+ setCancelInviteError(null);
309
+ }
310
+ }, [isCancellingInvite]);
311
+ // =======================================================================
312
+ // Phase 3 — Change role (confirm dialog)
313
+ // =======================================================================
314
+ const openChangeRoleDialog = useCallback((user, newRole) => {
315
+ setChangeRoleTarget({ user, newRole });
316
+ setChangeRoleError(null);
317
+ }, []);
318
+ const confirmChangeRole = useCallback(async () => {
319
+ if (!changeRoleTarget)
320
+ return;
321
+ setIsChangingRole(true);
322
+ setChangeRoleError(null);
323
+ const result = await changeRole(changeRoleTarget.user.id, changeRoleTarget.newRole);
324
+ setIsChangingRole(false);
325
+ if (result.success) {
326
+ setChangeRoleTarget(null);
327
+ }
328
+ else {
329
+ setChangeRoleError(result.error || 'Failed to change role.');
330
+ }
331
+ }, [changeRoleTarget, changeRole]);
332
+ const closeChangeRoleDialog = useCallback(() => {
333
+ if (!isChangingRole) {
334
+ setChangeRoleTarget(null);
335
+ setChangeRoleError(null);
336
+ }
337
+ }, [isChangingRole]);
338
+ // =======================================================================
339
+ // Per-row permission calculations
340
+ // =======================================================================
341
+ const rowPermissions = useMemo(() => {
342
+ const map = new Map();
343
+ // Pre-compute the full list of grantable roles for this actor, so the
344
+ // `canManageRole` check is just a reference lookup.
345
+ const allRoles = ['owner', 'administrator', 'manager', 'user'];
346
+ const actorGrantableRoles = allRoles.filter((role) => {
347
+ if (role === 'owner' && !isOwner)
348
+ return false;
349
+ return canManageRole({ id: '__role_target__', role });
350
+ });
351
+ for (const user of users) {
352
+ const isSelf = currentAdmin?.id === user.id;
353
+ const canManage = !isSelf && canManageUser(user);
354
+ const canDeactivate = canManage && user.status === 'active';
355
+ const canReactivate = canManage && user.status === 'deactivated';
356
+ // Hard delete is owner-only AND requires prior deactivation
357
+ const canDelete = canManage && isOwner && user.status === 'deactivated';
358
+ // Invite lifecycle — only for rows in `invited` status
359
+ const canResendInvite = canManage && user.status === 'invited';
360
+ const canCancelInvite = canManage && user.status === 'invited';
361
+ // Change role — grantable roles minus the current role
362
+ // Always excludes the target's current role. Only shown for rows
363
+ // the actor can manage.
364
+ const grantableRoles = canManage
365
+ ? actorGrantableRoles.filter((r) => {
366
+ // Exclude the target's current canonical role
367
+ const targetCanonical = user.role === 'admin' ? 'administrator' : user.role;
368
+ return r !== targetCanonical;
369
+ })
370
+ : [];
371
+ map.set(user.id, {
372
+ canDeactivate,
373
+ canReactivate,
374
+ canDelete,
375
+ canResendInvite,
376
+ canCancelInvite,
377
+ grantableRoles,
378
+ });
379
+ }
380
+ return map;
381
+ }, [users, currentAdmin, canManageUser, canManageRole, isOwner]);
382
+ const totalPages = Math.ceil(total / pageSize);
383
+ return (_jsxs("div", { className: `space-y-4 ${className}`, children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3 flex-1", children: [_jsxs("div", { className: "admin-input-with-icon flex-1 max-w-sm", children: [_jsx(Search, { className: "admin-input-with-icon-left h-4 w-4" }), _jsx("input", { type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search by email or name...", className: "admin-input w-full" })] }), _jsxs("select", { value: statusFilter, onChange: (e) => setStatusFilter(e.target.value), className: "admin-input", children: [_jsx("option", { value: "all", children: "All statuses" }), _jsx("option", { value: "active", children: "Active" }), _jsx("option", { value: "invited", children: "Invited" }), _jsx("option", { value: "deactivated", children: "Deactivated" })] }), _jsxs("select", { value: roleFilter, onChange: (e) => setRoleFilter(e.target.value), className: "admin-input", children: [_jsx("option", { value: "all", children: "All roles" }), _jsx("option", { value: "owner", children: "Owner" }), _jsx("option", { value: "administrator", children: "Administrator" }), _jsx("option", { value: "manager", children: "Manager" }), _jsx("option", { value: "user", children: "User" })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm admin-text-muted", children: [_jsx(UsersIcon, { className: "h-4 w-4" }), _jsxs("span", { children: [total, " user", total !== 1 ? 's' : ''] })] }), canInvite && (_jsxs("button", { type: "button", onClick: () => setIsInviteOpen(true), className: "admin-btn admin-btn-primary inline-flex items-center gap-2", children: [_jsx(UserPlus, { className: "h-4 w-4" }), "Invite user"] }))] })] }), error && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error", children: error })), _jsx("div", { className: "admin-card overflow-hidden", children: _jsxs("table", { className: "admin-table w-full", children: [_jsx("thead", { children: _jsxs("tr", { className: "admin-table-header", children: [_jsx("th", { className: "px-4 py-3 text-left", children: "User" }), _jsx("th", { className: "px-4 py-3 text-left", children: "Email" }), _jsx("th", { className: "px-4 py-3 text-left", children: "Role" }), _jsx("th", { className: "px-4 py-3 text-left", children: "Status" }), _jsx("th", { className: "px-4 py-3 text-left", children: "Last login" }), _jsx("th", { className: "px-4 py-3 text-left", children: "Created" }), _jsx("th", { className: "px-4 py-3 text-right", children: "Actions" })] }) }), _jsx("tbody", { children: isLoading && users.length === 0 ? (
384
+ // Loading skeleton
385
+ Array.from({ length: 5 }).map((_, i) => (_jsx("tr", { className: "admin-table-row", children: _jsx("td", { className: "px-4 py-3", colSpan: 7, children: _jsx("div", { className: "admin-skeleton admin-skeleton-md w-full rounded" }) }) }, `skeleton-${i}`)))) : users.length === 0 ? (_jsx("tr", { children: _jsxs("td", { className: "px-4 py-12 text-center text-sm admin-text-muted", colSpan: 7, children: [_jsx(UserCheck, { className: "h-8 w-8 mx-auto mb-2 opacity-40" }), "No users match your filters."] }) })) : (users.map((user) => {
386
+ const perms = rowPermissions.get(user.id) ?? {
387
+ canDeactivate: false,
388
+ canReactivate: false,
389
+ canDelete: false,
390
+ canResendInvite: false,
391
+ canCancelInvite: false,
392
+ grantableRoles: [],
393
+ };
394
+ return (_jsx(UserRow, { user: user, isSelf: currentAdmin?.id === user.id, canDeactivate: perms.canDeactivate, canReactivate: perms.canReactivate, canDelete: perms.canDelete, canResendInvite: perms.canResendInvite, canCancelInvite: perms.canCancelInvite, grantableRoles: perms.grantableRoles, formatDate: formatDate, onDeactivate: openDeactivateDialog, onReactivate: handleReactivate, onDelete: openDeleteDialog, onResendInvite: handleResendInvite, onCancelInvite: openCancelInviteDialog, onChangeRole: openChangeRoleDialog }, user.id));
395
+ })) })] }) }), totalPages > 1 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "text-sm admin-text-muted", children: ["Page ", page, " of ", totalPages] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { type: "button", onClick: () => handlePageChange(page - 1), disabled: page <= 1 || isLoading, className: "admin-btn admin-btn-secondary", children: "Previous" }), _jsx("button", { type: "button", onClick: () => handlePageChange(page + 1), disabled: page >= totalPages || isLoading, className: "admin-btn admin-btn-secondary", children: "Next" })] })] })), _jsx(DeleteConfirmDialog, { isOpen: !!deactivateTarget, title: "Deactivate user", itemName: deactivateTarget?.name || deactivateTarget?.email || '', itemType: "user", isDeleting: isDeactivating, error: deactivateError, onConfirm: confirmDeactivate, onCancel: cancelDeactivate }), _jsx(DeleteWithConfirmationDialog, { user: deleteTarget, isDeleting: isDeleting, error: deleteError, onConfirm: confirmDelete, onCancel: cancelDelete }), _jsx(InviteUserDialog, { isOpen: isInviteOpen, onClose: () => setIsInviteOpen(false) }), _jsx(DeleteConfirmDialog, { isOpen: !!cancelInviteTarget, title: "Cancel invite", itemName: cancelInviteTarget?.email || '', itemType: "invite", isDeleting: isCancellingInvite, error: cancelInviteError, onConfirm: confirmCancelInvite, onCancel: closeCancelInviteDialog }), _jsx(DeleteConfirmDialog, { isOpen: !!changeRoleTarget, title: "Change role", itemName: changeRoleTarget
396
+ ? `${changeRoleTarget.user.name || changeRoleTarget.user.email} → ${roleLabel(changeRoleTarget.newRole)}`
397
+ : '', itemType: "change", isDeleting: isChangingRole, error: changeRoleError, onConfirm: confirmChangeRole, onCancel: closeChangeRoleDialog })] }));
398
+ }
399
+ //# sourceMappingURL=UsersTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UsersTable.js","sourceRoot":"","sources":["../../../src/admin/components/UsersTable.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,10 @@ export { AdminGuard } from './AdminGuard';
7
7
  export { AdminLoginForm } from './AdminLoginForm';
8
8
  export { AdminSetupForm } from './AdminSetupForm';
9
9
  export type { AdminSetupFormProps } from './AdminSetupForm';
10
+ export { AdminForgotPasswordForm } from './AdminForgotPasswordForm';
11
+ export type { AdminForgotPasswordFormProps } from './AdminForgotPasswordForm';
12
+ export { AdminResetPasswordForm } from './AdminResetPasswordForm';
13
+ export type { AdminResetPasswordFormProps } from './AdminResetPasswordForm';
10
14
  export { AdminLayout } from './AdminLayout';
11
15
  export { AdminNav } from './AdminNav';
12
16
  export { AdminUserMenu } from './AdminUserMenu';
@@ -49,4 +53,9 @@ export { ShippingSettings } from './ShippingSettings';
49
53
  export { TaxSettings } from './TaxSettings';
50
54
  export { CustomerTable } from './CustomerTable';
51
55
  export { CustomerDetails } from './CustomerDetails';
56
+ export { UsersTable } from './UsersTable';
57
+ export { InviteUserDialog } from './InviteUserDialog';
58
+ export { AdminAcceptInviteForm } from './AdminAcceptInviteForm';
59
+ export { AdminAccountPage } from './AdminAccountPage';
60
+ export type { AdminAccountPageProps } from './AdminAccountPage';
52
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@
9
9
  export { AdminGuard } from './AdminGuard';
10
10
  export { AdminLoginForm } from './AdminLoginForm';
11
11
  export { AdminSetupForm } from './AdminSetupForm';
12
+ export { AdminForgotPasswordForm } from './AdminForgotPasswordForm';
13
+ export { AdminResetPasswordForm } from './AdminResetPasswordForm';
12
14
  // =============================================================================
13
15
  // Layout Components
14
16
  // =============================================================================
@@ -70,4 +72,11 @@ export { TaxSettings } from './TaxSettings';
70
72
  // =============================================================================
71
73
  export { CustomerTable } from './CustomerTable';
72
74
  export { CustomerDetails } from './CustomerDetails';
75
+ // =============================================================================
76
+ // User Management Components (Phase 2 + Phase 3 + Phase 4)
77
+ // =============================================================================
78
+ export { UsersTable } from './UsersTable';
79
+ export { InviteUserDialog } from './InviteUserDialog';
80
+ export { AdminAcceptInviteForm } from './AdminAcceptInviteForm';
81
+ export { AdminAccountPage } from './AdminAccountPage';
73
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGjD,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,4CAA4C;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"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"}
@@ -14,18 +14,23 @@ import type { AdminSession, AdminAuthConfigOptions } from './types';
14
14
  /**
15
15
  * Create NextAuth options for store admin authentication.
16
16
  *
17
- * @param options - Configuration options
18
- * @returns NextAuth options object
17
+ * @deprecated The Rovela sandbox template mounts exactly ONE NextAuth
18
+ * endpoint at `/api/auth/[...nextauth]`, wired to `createAuthOptions()`
19
+ * from `@rovela-ai/sdk/auth` — which already knows both the `credentials`
20
+ * and `admin-credentials` providers. `requireAdmin()` reads sessions via
21
+ * that same unified config, so the cookie name and SameSite policy match
22
+ * between write and read.
19
23
  *
20
- * @example
21
- * ```typescript
22
- * // app/api/admin/auth/[...nextauth]/route.ts
23
- * import NextAuth from 'next-auth'
24
- * import { createAdminAuthOptions } from '@rovela/sdk/admin'
24
+ * Mounting a separate `/api/admin/auth/[...nextauth]` with this function
25
+ * creates a second cookie namespace that will NOT be read by
26
+ * `requireAdmin()`. Every admin API call will return 401.
25
27
  *
26
- * const handler = NextAuth(createAdminAuthOptions())
27
- * export { handler as GET, handler as POST }
28
- * ```
28
+ * Use `createAuthOptions()` from `@rovela-ai/sdk/auth` instead. This
29
+ * function is kept to preserve SDK API compatibility for existing
30
+ * consumers and will be removed in a future major release.
31
+ *
32
+ * @param options - Configuration options
33
+ * @returns NextAuth options object
29
34
  */
30
35
  export declare function createAdminAuthOptions(options?: AdminAuthConfigOptions): NextAuthOptions;
31
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/admin/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAA;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAgBnE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAiH5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAE9B;AA8BD;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAA2B,CAAA;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,uBAOzC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;CAG7B,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/admin/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAA;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAiBnE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAyI5F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAE9B;AAgCD;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAA2B,CAAA;AAEvD;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,uBAOzC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;CAG7B,CAAA"}