@rovela-ai/sdk 0.1.10 → 0.1.12

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 (49) hide show
  1. package/dist/admin/api/categories.d.ts.map +1 -1
  2. package/dist/admin/api/categories.js +28 -0
  3. package/dist/admin/api/categories.js.map +1 -1
  4. package/dist/admin/api/check.d.ts +38 -0
  5. package/dist/admin/api/check.d.ts.map +1 -0
  6. package/dist/admin/api/check.js +52 -0
  7. package/dist/admin/api/check.js.map +1 -0
  8. package/dist/admin/api/customers.d.ts.map +1 -1
  9. package/dist/admin/api/customers.js +19 -0
  10. package/dist/admin/api/customers.js.map +1 -1
  11. package/dist/admin/api/index.d.ts +8 -0
  12. package/dist/admin/api/index.d.ts.map +1 -1
  13. package/dist/admin/api/index.js +13 -1
  14. package/dist/admin/api/index.js.map +1 -1
  15. package/dist/admin/api/orders.d.ts.map +1 -1
  16. package/dist/admin/api/orders.js +22 -0
  17. package/dist/admin/api/orders.js.map +1 -1
  18. package/dist/admin/api/products.d.ts.map +1 -1
  19. package/dist/admin/api/products.js +37 -0
  20. package/dist/admin/api/products.js.map +1 -1
  21. package/dist/admin/api/refund.d.ts.map +1 -1
  22. package/dist/admin/api/refund.js +8 -0
  23. package/dist/admin/api/refund.js.map +1 -1
  24. package/dist/admin/api/setup.d.ts +60 -0
  25. package/dist/admin/api/setup.d.ts.map +1 -0
  26. package/dist/admin/api/setup.js +129 -0
  27. package/dist/admin/api/setup.js.map +1 -0
  28. package/dist/admin/api/stats.d.ts.map +1 -1
  29. package/dist/admin/api/stats.js +8 -0
  30. package/dist/admin/api/stats.js.map +1 -1
  31. package/dist/admin/components/AdminSetupForm.d.ts +28 -0
  32. package/dist/admin/components/AdminSetupForm.d.ts.map +1 -0
  33. package/dist/admin/components/AdminSetupForm.js +83 -0
  34. package/dist/admin/components/AdminSetupForm.js.map +1 -0
  35. package/dist/admin/components/index.d.ts +2 -0
  36. package/dist/admin/components/index.d.ts.map +1 -1
  37. package/dist/admin/components/index.js +3 -1
  38. package/dist/admin/components/index.js.map +1 -1
  39. package/dist/admin/index.d.ts +3 -2
  40. package/dist/admin/index.d.ts.map +1 -1
  41. package/dist/admin/index.js +7 -2
  42. package/dist/admin/index.js.map +1 -1
  43. package/dist/auth/config.d.ts +7 -2
  44. package/dist/auth/config.d.ts.map +1 -1
  45. package/dist/auth/config.js +110 -15
  46. package/dist/auth/config.js.map +1 -1
  47. package/dist/auth/types.d.ts +6 -0
  48. package/dist/auth/types.d.ts.map +1 -1
  49. package/package.json +9 -1
@@ -13,6 +13,8 @@
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.POST = POST;
15
15
  const server_1 = require("next/server");
16
+ const next_auth_1 = require("next-auth");
17
+ const config_1 = require("../../auth/config");
16
18
  const queries_1 = require("../../core/db/queries");
17
19
  const client_1 = require("../../checkout/stripe/client");
18
20
  const emails_1 = require("../../emails");
@@ -30,6 +32,12 @@ const emails_1 = require("../../emails");
30
32
  * - notifyCustomer: boolean - Send notification email (default true)
31
33
  */
32
34
  async function POST(request, { params }) {
35
+ // Auth check - require admin role
36
+ const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
37
+ const user = session?.user;
38
+ if (!user?.role || !['owner', 'admin'].includes(user.role)) {
39
+ return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
40
+ }
33
41
  try {
34
42
  const { id } = await params;
35
43
  // Check Stripe is configured
@@ -1 +1 @@
1
- {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../src/admin/api/refund.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../src/admin/api/refund.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @rovela/sdk/admin/api/setup
3
+ *
4
+ * Admin setup API route handler for first-time admin account creation.
5
+ * This endpoint is only accessible when no admins exist for the tenant.
6
+ */
7
+ import { NextResponse } from 'next/server';
8
+ /**
9
+ * Success response
10
+ */
11
+ interface AdminSetupResponse {
12
+ success: true;
13
+ message: string;
14
+ adminId: string;
15
+ }
16
+ /**
17
+ * Error response
18
+ */
19
+ interface AdminSetupError {
20
+ error: string;
21
+ code: 'SETUP_DISABLED' | 'VALIDATION_ERROR' | 'EMAIL_EXISTS' | 'SERVER_ERROR';
22
+ }
23
+ /**
24
+ * POST handler for first-time admin setup.
25
+ *
26
+ * SECURITY: This endpoint only works when countAdmins() === 0.
27
+ * Once an owner is created, this endpoint returns 403 Forbidden.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * // app/api/admin/setup/route.ts
32
+ * export { POST } from '@rovela-ai/sdk/admin/api/setup'
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Request body
38
+ * {
39
+ * "email": "owner@store.com",
40
+ * "password": "securePassword123",
41
+ * "name": "Store Owner"
42
+ * }
43
+ *
44
+ * // Success response (201)
45
+ * {
46
+ * "success": true,
47
+ * "message": "Admin account created successfully.",
48
+ * "adminId": "uuid"
49
+ * }
50
+ *
51
+ * // Error response (403) - Setup already completed
52
+ * {
53
+ * "error": "Admin setup has already been completed.",
54
+ * "code": "SETUP_DISABLED"
55
+ * }
56
+ * ```
57
+ */
58
+ export declare function POST(request: Request): Promise<NextResponse<AdminSetupResponse | AdminSetupError>>;
59
+ export {};
60
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/admin/api/setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAa1C;;GAEG;AACH,UAAU,kBAAkB;IAC1B,OAAO,EAAE,IAAI,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAAA;CAC9E;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAmH7D"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ /**
3
+ * @rovela/sdk/admin/api/setup
4
+ *
5
+ * Admin setup API route handler for first-time admin account creation.
6
+ * This endpoint is only accessible when no admins exist for the tenant.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.POST = POST;
10
+ const server_1 = require("next/server");
11
+ const admin_service_1 = require("../server/admin-service");
12
+ const password_1 = require("../../auth/server/password");
13
+ /**
14
+ * Validate email format
15
+ */
16
+ function isValidEmail(email) {
17
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
18
+ return emailRegex.test(email);
19
+ }
20
+ /**
21
+ * POST handler for first-time admin setup.
22
+ *
23
+ * SECURITY: This endpoint only works when countAdmins() === 0.
24
+ * Once an owner is created, this endpoint returns 403 Forbidden.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * // app/api/admin/setup/route.ts
29
+ * export { POST } from '@rovela-ai/sdk/admin/api/setup'
30
+ * ```
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Request body
35
+ * {
36
+ * "email": "owner@store.com",
37
+ * "password": "securePassword123",
38
+ * "name": "Store Owner"
39
+ * }
40
+ *
41
+ * // Success response (201)
42
+ * {
43
+ * "success": true,
44
+ * "message": "Admin account created successfully.",
45
+ * "adminId": "uuid"
46
+ * }
47
+ *
48
+ * // Error response (403) - Setup already completed
49
+ * {
50
+ * "error": "Admin setup has already been completed.",
51
+ * "code": "SETUP_DISABLED"
52
+ * }
53
+ * ```
54
+ */
55
+ async function POST(request) {
56
+ try {
57
+ // CRITICAL: Check if any admins exist
58
+ // If admins exist, setup is disabled
59
+ const adminCount = await (0, admin_service_1.countAdmins)();
60
+ if (adminCount > 0) {
61
+ return server_1.NextResponse.json({
62
+ error: 'Admin setup has already been completed.',
63
+ code: 'SETUP_DISABLED',
64
+ }, { status: 403 });
65
+ }
66
+ // Parse request body
67
+ const body = (await request.json());
68
+ // Validate required fields
69
+ if (!body.email || !body.password || !body.name) {
70
+ return server_1.NextResponse.json({
71
+ error: 'Email, password, and name are required.',
72
+ code: 'VALIDATION_ERROR',
73
+ }, { status: 400 });
74
+ }
75
+ // Validate email format
76
+ if (!isValidEmail(body.email)) {
77
+ return server_1.NextResponse.json({
78
+ error: 'Please enter a valid email address.',
79
+ code: 'VALIDATION_ERROR',
80
+ }, { status: 400 });
81
+ }
82
+ // Validate name
83
+ if (body.name.trim().length < 2) {
84
+ return server_1.NextResponse.json({
85
+ error: 'Name must be at least 2 characters.',
86
+ code: 'VALIDATION_ERROR',
87
+ }, { status: 400 });
88
+ }
89
+ // Validate password
90
+ const passwordValidation = (0, password_1.validatePassword)(body.password);
91
+ if (!passwordValidation.valid) {
92
+ return server_1.NextResponse.json({
93
+ error: passwordValidation.error,
94
+ code: 'VALIDATION_ERROR',
95
+ }, { status: 400 });
96
+ }
97
+ // Check if email already exists (edge case: race condition)
98
+ const emailExists = await (0, admin_service_1.adminEmailExists)(body.email);
99
+ if (emailExists) {
100
+ return server_1.NextResponse.json({
101
+ error: 'An admin with this email already exists.',
102
+ code: 'EMAIL_EXISTS',
103
+ }, { status: 409 });
104
+ }
105
+ // Create the admin as 'owner' (first admin is always owner)
106
+ const { admin } = await (0, admin_service_1.createAdmin)(body.email, body.password, body.name.trim(), 'owner');
107
+ console.log(`[Admin Setup] First admin created: ${admin.email} (owner)`);
108
+ return server_1.NextResponse.json({
109
+ success: true,
110
+ message: 'Admin account created successfully.',
111
+ adminId: admin.id,
112
+ }, { status: 201 });
113
+ }
114
+ catch (error) {
115
+ console.error('[Admin Setup] Error:', error);
116
+ // Handle duplicate email (database constraint)
117
+ if (error instanceof Error && error.message.includes('already exists')) {
118
+ return server_1.NextResponse.json({
119
+ error: 'An admin with this email already exists.',
120
+ code: 'EMAIL_EXISTS',
121
+ }, { status: 409 });
122
+ }
123
+ return server_1.NextResponse.json({
124
+ error: 'Failed to create admin account. Please try again.',
125
+ code: 'SERVER_ERROR',
126
+ }, { status: 500 });
127
+ }
128
+ }
129
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/admin/api/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM3E,UAAU,aAAa;IACrB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,YAAY,EAAE,OAAO,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClD,cAAc,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACrD;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CAmDtD"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAUvD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM3E,UAAU,aAAa;IACrB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,YAAY,EAAE,OAAO,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClD,cAAc,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACrD;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC,CA6DtD"}
@@ -13,6 +13,8 @@
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.GET = GET;
15
15
  const server_1 = require("next/server");
16
+ const next_auth_1 = require("next-auth");
17
+ const config_1 = require("../../auth/config");
16
18
  const queries_1 = require("../../core/db/queries");
17
19
  // =============================================================================
18
20
  // Handler
@@ -30,6 +32,12 @@ const queries_1 = require("../../core/db/queries");
30
32
  */
31
33
  async function GET(request) {
32
34
  try {
35
+ // Auth check - require admin role
36
+ const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
37
+ const user = session?.user;
38
+ if (!user?.role || !['owner', 'admin'].includes(user.role)) {
39
+ return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
40
+ }
33
41
  const searchParams = request.nextUrl.searchParams;
34
42
  // Parse options
35
43
  const includeRevenue = searchParams.get('includeRevenue') === 'true';
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAuCH,kBAqDC;AA1FD,wCAAuD;AACvD,mDAM8B;AAe9B,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACI,KAAK,UAAU,GAAG,CACvB,OAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAA;QAEjD,gBAAgB;QAChB,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAA;QACpE,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,MAAM,CAAA;QAC5E,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAA;QACrF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QAEpF,+BAA+B;QAC/B,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5D,IAAA,uBAAa,GAAE;YACf,IAAA,6BAAmB,EAAC,iBAAiB,CAAC;YACtC,IAAA,yBAAe,EAAC,iBAAiB,CAAC;SACnC,CAAC,CAAA;QAEF,2BAA2B;QAC3B,MAAM,QAAQ,GAAmB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3D,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC9B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC9B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAC,CAAA;QAEH,iBAAiB;QACjB,MAAM,QAAQ,GAAkB;YAC9B,KAAK;YACL,QAAQ;YACR,YAAY;SACb,CAAA;QAED,kCAAkC;QAClC,IAAI,cAAc,EAAE,CAAC;YACnB,QAAQ,CAAC,YAAY,GAAG,MAAM,IAAA,4BAAkB,EAAC,EAAE,CAAC,CAAA;QACtD,CAAC;QAED,4CAA4C;QAC5C,IAAI,kBAAkB,EAAE,CAAC;YACvB,QAAQ,CAAC,cAAc,GAAG,MAAM,IAAA,2BAAiB,GAAE,CAAA;QACrD,CAAC;QAED,OAAO,qBAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAA;QACpD,OAAO,qBAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,iCAAiC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EACpE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Props for AdminSetupForm component
3
+ */
4
+ export interface AdminSetupFormProps {
5
+ /** Pre-filled email from STORE_OWNER_EMAIL */
6
+ defaultEmail?: string;
7
+ /** Callback on successful setup */
8
+ onSuccess?: () => void;
9
+ /** Additional CSS classes */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Admin setup form for first-time account creation.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * // Basic usage
18
+ * <AdminSetupForm />
19
+ *
20
+ * // With pre-filled email
21
+ * <AdminSetupForm
22
+ * defaultEmail="owner@store.com"
23
+ * onSuccess={() => console.log('Account created!')}
24
+ * />
25
+ * ```
26
+ */
27
+ export declare function AdminSetupForm({ defaultEmail, onSuccess, className, }: AdminSetupFormProps): import("react/jsx-runtime").JSX.Element;
28
+ //# sourceMappingURL=AdminSetupForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminSetupForm.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminSetupForm.tsx"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,EAC7B,YAAiB,EACjB,SAAS,EACT,SAAc,GACf,EAAE,mBAAmB,2CAyLrB"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AdminSetupForm = AdminSetupForm;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * @rovela/sdk/admin/components/AdminSetupForm
8
+ *
9
+ * First-time admin account setup form.
10
+ * Used when no admin exists for the store.
11
+ */
12
+ const react_1 = require("react");
13
+ /**
14
+ * Admin setup form for first-time account creation.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * // Basic usage
19
+ * <AdminSetupForm />
20
+ *
21
+ * // With pre-filled email
22
+ * <AdminSetupForm
23
+ * defaultEmail="owner@store.com"
24
+ * onSuccess={() => console.log('Account created!')}
25
+ * />
26
+ * ```
27
+ */
28
+ function AdminSetupForm({ defaultEmail = '', onSuccess, className = '', }) {
29
+ const [email, setEmail] = (0, react_1.useState)(defaultEmail);
30
+ const [name, setName] = (0, react_1.useState)('');
31
+ const [password, setPassword] = (0, react_1.useState)('');
32
+ const [confirmPassword, setConfirmPassword] = (0, react_1.useState)('');
33
+ const [error, setError] = (0, react_1.useState)(null);
34
+ const [isSubmitting, setIsSubmitting] = (0, react_1.useState)(false);
35
+ const handleSubmit = (0, react_1.useCallback)(async (e) => {
36
+ e.preventDefault();
37
+ setError(null);
38
+ // Validate passwords match
39
+ if (password !== confirmPassword) {
40
+ setError('Passwords do not match');
41
+ return;
42
+ }
43
+ // Validate password length
44
+ if (password.length < 8) {
45
+ setError('Password must be at least 8 characters');
46
+ return;
47
+ }
48
+ // Validate name
49
+ if (name.trim().length < 2) {
50
+ setError('Name must be at least 2 characters');
51
+ return;
52
+ }
53
+ setIsSubmitting(true);
54
+ try {
55
+ const response = await fetch('/api/admin/setup', {
56
+ method: 'POST',
57
+ headers: { 'Content-Type': 'application/json' },
58
+ body: JSON.stringify({
59
+ email: email.trim(),
60
+ password,
61
+ name: name.trim(),
62
+ }),
63
+ });
64
+ const data = await response.json();
65
+ if (!response.ok) {
66
+ setError(data.error || 'Setup failed');
67
+ return;
68
+ }
69
+ // Success - call callback
70
+ onSuccess?.();
71
+ // Reload page to switch to login view
72
+ window.location.reload();
73
+ }
74
+ catch {
75
+ setError('An unexpected error occurred');
76
+ }
77
+ finally {
78
+ setIsSubmitting(false);
79
+ }
80
+ }, [email, name, password, confirmPassword, onSuccess]);
81
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `w-full max-w-sm ${className}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-8 text-center", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-semibold text-foreground", children: "Set Up Admin Account" }), (0, jsx_runtime_1.jsx)("p", { className: "mt-2 text-sm text-muted-foreground", children: "Create your admin account to manage your store" })] }), (0, jsx_runtime_1.jsxs)("form", { onSubmit: handleSubmit, className: "space-y-4", children: [error && ((0, jsx_runtime_1.jsx)("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "setup-email", className: "block text-sm font-medium text-foreground", children: "Email" }), (0, jsx_runtime_1.jsx)("input", { id: "setup-email", type: "email", value: email, onChange: (e) => setEmail(e.target.value), required: true, autoComplete: "email", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "admin@example.com" }), defaultEmail && email === defaultEmail && ((0, jsx_runtime_1.jsx)("p", { className: "mt-1 text-xs text-muted-foreground", children: "Pre-filled with store owner email" }))] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "setup-name", className: "block text-sm font-medium text-foreground", children: "Name" }), (0, jsx_runtime_1.jsx)("input", { id: "setup-name", type: "text", value: name, onChange: (e) => setName(e.target.value), required: true, autoComplete: "name", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "Your name" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "setup-password", className: "block text-sm font-medium text-foreground", children: "Password" }), (0, jsx_runtime_1.jsx)("input", { id: "setup-password", type: "password", value: password, onChange: (e) => setPassword(e.target.value), required: true, autoComplete: "new-password", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "At least 8 characters" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { htmlFor: "setup-confirm-password", className: "block text-sm font-medium text-foreground", children: "Confirm Password" }), (0, jsx_runtime_1.jsx)("input", { id: "setup-confirm-password", type: "password", value: confirmPassword, onChange: (e) => setConfirmPassword(e.target.value), required: true, autoComplete: "new-password", disabled: isSubmitting, className: "mt-1 block w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50", placeholder: "Confirm your password" })] }), (0, jsx_runtime_1.jsx)("button", { type: "submit", disabled: isSubmitting, className: "w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", children: isSubmitting ? ((0, jsx_runtime_1.jsxs)("span", { className: "flex items-center justify-center gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }), "Creating account..."] })) : ('Create Admin Account') })] })] }));
82
+ }
83
+ //# sourceMappingURL=AdminSetupForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminSetupForm.js","sourceRoot":"","sources":["../../../src/admin/components/AdminSetupForm.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  */
6
6
  export { AdminGuard } from './AdminGuard';
7
7
  export { AdminLoginForm } from './AdminLoginForm';
8
+ export { AdminSetupForm } from './AdminSetupForm';
9
+ export type { AdminSetupFormProps } from './AdminSetupForm';
8
10
  export { AdminLayout } from './AdminLayout';
9
11
  export { AdminNav } from './AdminNav';
10
12
  export { AdminHeader } from './AdminHeader';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAM/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAM3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAM/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAM7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -5,7 +5,7 @@
5
5
  * Admin dashboard UI components.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.StoreSettings = exports.RefundDialog = exports.OrderDetails = exports.OrderTable = exports.InventoryEditor = exports.ProductForm = exports.ProductTable = exports.LowStockAlert = exports.RecentOrders = exports.StatsCards = exports.AdminHeader = exports.AdminNav = exports.AdminLayout = exports.AdminLoginForm = exports.AdminGuard = void 0;
8
+ exports.StoreSettings = exports.RefundDialog = exports.OrderDetails = exports.OrderTable = exports.InventoryEditor = exports.ProductForm = exports.ProductTable = exports.LowStockAlert = exports.RecentOrders = exports.StatsCards = exports.AdminHeader = exports.AdminNav = exports.AdminLayout = exports.AdminSetupForm = exports.AdminLoginForm = exports.AdminGuard = void 0;
9
9
  // =============================================================================
10
10
  // Auth Components
11
11
  // =============================================================================
@@ -13,6 +13,8 @@ var AdminGuard_1 = require("./AdminGuard");
13
13
  Object.defineProperty(exports, "AdminGuard", { enumerable: true, get: function () { return AdminGuard_1.AdminGuard; } });
14
14
  var AdminLoginForm_1 = require("./AdminLoginForm");
15
15
  Object.defineProperty(exports, "AdminLoginForm", { enumerable: true, get: function () { return AdminLoginForm_1.AdminLoginForm; } });
16
+ var AdminSetupForm_1 = require("./AdminSetupForm");
17
+ Object.defineProperty(exports, "AdminSetupForm", { enumerable: true, get: function () { return AdminSetupForm_1.AdminSetupForm; } });
16
18
  // =============================================================================
17
19
  // Layout Components
18
20
  // =============================================================================
@@ -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,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AAEvB,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AAEpB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AAEtB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,kHAAA,eAAe,OAAA;AAExB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AAErB,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,iDAA+C;AAAtC,8GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/components/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AACvB,mDAAiD;AAAxC,gHAAA,cAAc,OAAA;AAGvB,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AAEpB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,iDAA+C;AAAtC,8GAAA,aAAa,OAAA;AAEtB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AACpB,qDAAmD;AAA1C,kHAAA,eAAe,OAAA;AAExB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AAErB,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,iDAA+C;AAAtC,8GAAA,aAAa,OAAA"}
@@ -57,7 +57,8 @@
57
57
  export type { OrderStatus, ProductStatus, AdminRole, Order, OrderItem, Product, ProductVariant, Customer, StoreAdmin, Category, PaginatedResponse, ApiError, Address, AdminApiError, AdminSession, AdminAuthState, AdminSignInOptions, AdminSignInResult, DashboardStats, LowStockItem, RecentOrder, UseAdminStatsOptions, ProductFormData, VariantFormData, CategoryFormData, ProductListOptions, OrderListOptions, CustomerListOptions, CrudResult, RefundResult, StoreSettingsData, AdminOrderListItem, AdminOrderDetail, AdminOrderItem, AdminProductListItem, AdminProductDetail, AdminProductVariant, AdminCustomerListItem, AdminCustomerDetail, AdminCategoryListItem, AdminLayoutProps, AdminGuardProps, AdminLoginFormProps, AdminNavProps, AdminHeaderProps, StatsCardsProps, RecentOrdersProps, LowStockAlertProps, ProductTableProps, ProductFormProps, InventoryEditorProps, OrderTableProps, OrderDetailsProps, RefundDialogProps, StoreSettingsProps, CustomerTableProps, AdminAuthConfigOptions, UseAdminAuthReturn, UseAdminStatsReturn, UseAdminOrdersReturn, UseAdminProductsReturn, UseAdminCustomersReturn, UseAdminCategoriesReturn, } from './types';
58
58
  export { createAdminAuthOptions, adminAuthConfig, adminAuthHandlers, createAdminNextAuthHandler, getAdminSession, } from './config';
59
59
  export { authenticateAdmin, createAdmin, updateAdminPassword, findAdminForSession, findAdminByEmail, findAdminById, updateAdmin, adminEmailExists, countAdmins, } from './server';
60
- export { createAdminAuthHandlers, getProducts, createProduct, getProduct, updateProduct, deleteProduct, addVariant, updateVariantHandler, deleteVariantHandler, getOrders, getOrder, updateOrder, processRefund, getStats, getCategories, createCategory, getCategory, updateCategory, deleteCategory, getCustomers, getCustomer, } from './api';
60
+ export { createAdminAuthHandlers, getProducts, createProduct, getProduct, updateProduct, deleteProduct, addVariant, updateVariantHandler, deleteVariantHandler, getOrders, getOrder, updateOrder, processRefund, getStats, getCategories, createCategory, getCategory, updateCategory, deleteCategory, getCustomers, getCustomer, setupAdmin, checkAdminExists, } from './api';
61
61
  export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, } from './hooks';
62
- export { AdminGuard, AdminLoginForm, AdminLayout, AdminNav, AdminHeader, StatsCards, RecentOrders, LowStockAlert, ProductTable, ProductForm, InventoryEditor, OrderTable, OrderDetails, RefundDialog, StoreSettings, } from './components';
62
+ export { AdminGuard, AdminLoginForm, AdminSetupForm, AdminLayout, AdminNav, AdminHeader, StatsCards, RecentOrders, LowStockAlert, ProductTable, ProductForm, InventoryEditor, OrderTable, OrderDetails, RefundDialog, StoreSettings, } from './components';
63
+ export type { AdminSetupFormProps } from './components';
63
64
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,YAAY,EAEV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,EACP,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,OAAO,EAGP,aAAa,EAGb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EAGjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAGrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAGlB,sBAAsB,EAGtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAMhB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAMjB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAOjB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,OAAO,CAAA;AAMd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,GACf,MAAM,SAAS,CAAA;AAMhB,OAAO,EAEL,UAAU,EACV,cAAc,EAEd,WAAW,EACX,QAAQ,EACR,WAAW,EAEX,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,aAAa,GACd,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAMH,YAAY,EAEV,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,EACP,cAAc,EACd,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,OAAO,EAGP,aAAa,EAGb,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,iBAAiB,EAGjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAGrB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAGlB,sBAAsB,EAGtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAMhB,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAMjB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAOjB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,UAAU,EAEV,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,GACf,MAAM,SAAS,CAAA;AAMhB,OAAO,EAEL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,WAAW,EACX,QAAQ,EACR,WAAW,EAEX,UAAU,EACV,YAAY,EACZ,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
@@ -56,8 +56,8 @@
56
56
  * ```
57
57
  */
58
58
  Object.defineProperty(exports, "__esModule", { value: true });
59
- exports.InventoryEditor = exports.ProductForm = exports.ProductTable = exports.LowStockAlert = exports.RecentOrders = exports.StatsCards = exports.AdminHeader = exports.AdminNav = exports.AdminLayout = exports.AdminLoginForm = exports.AdminGuard = exports.useAdminOrders = exports.useAdminProducts = exports.useAdminStats = exports.useAdminAuth = exports.getCustomer = exports.getCustomers = exports.deleteCategory = exports.updateCategory = exports.getCategory = exports.createCategory = exports.getCategories = exports.getStats = exports.processRefund = exports.updateOrder = exports.getOrder = exports.getOrders = exports.deleteVariantHandler = exports.updateVariantHandler = exports.addVariant = exports.deleteProduct = exports.updateProduct = exports.getProduct = exports.createProduct = exports.getProducts = exports.createAdminAuthHandlers = exports.countAdmins = exports.adminEmailExists = exports.updateAdmin = exports.findAdminById = exports.findAdminByEmail = exports.findAdminForSession = exports.updateAdminPassword = exports.createAdmin = exports.authenticateAdmin = exports.getAdminSession = exports.createAdminNextAuthHandler = exports.adminAuthHandlers = exports.adminAuthConfig = exports.createAdminAuthOptions = void 0;
60
- exports.StoreSettings = exports.RefundDialog = exports.OrderDetails = exports.OrderTable = void 0;
59
+ exports.LowStockAlert = exports.RecentOrders = exports.StatsCards = exports.AdminHeader = exports.AdminNav = exports.AdminLayout = exports.AdminSetupForm = exports.AdminLoginForm = exports.AdminGuard = exports.useAdminOrders = exports.useAdminProducts = exports.useAdminStats = exports.useAdminAuth = exports.checkAdminExists = exports.setupAdmin = exports.getCustomer = exports.getCustomers = exports.deleteCategory = exports.updateCategory = exports.getCategory = exports.createCategory = exports.getCategories = exports.getStats = exports.processRefund = exports.updateOrder = exports.getOrder = exports.getOrders = exports.deleteVariantHandler = exports.updateVariantHandler = exports.addVariant = exports.deleteProduct = exports.updateProduct = exports.getProduct = exports.createProduct = exports.getProducts = exports.createAdminAuthHandlers = exports.countAdmins = exports.adminEmailExists = exports.updateAdmin = exports.findAdminById = exports.findAdminByEmail = exports.findAdminForSession = exports.updateAdminPassword = exports.createAdmin = exports.authenticateAdmin = exports.getAdminSession = exports.createAdminNextAuthHandler = exports.adminAuthHandlers = exports.adminAuthConfig = exports.createAdminAuthOptions = void 0;
60
+ exports.StoreSettings = exports.RefundDialog = exports.OrderDetails = exports.OrderTable = exports.InventoryEditor = exports.ProductForm = exports.ProductTable = void 0;
61
61
  // =============================================================================
62
62
  // Configuration (NextAuth)
63
63
  // =============================================================================
@@ -106,6 +106,10 @@ Object.defineProperty(exports, "updateCategory", { enumerable: true, get: functi
106
106
  Object.defineProperty(exports, "deleteCategory", { enumerable: true, get: function () { return api_1.deleteCategory; } });
107
107
  Object.defineProperty(exports, "getCustomers", { enumerable: true, get: function () { return api_1.getCustomers; } });
108
108
  Object.defineProperty(exports, "getCustomer", { enumerable: true, get: function () { return api_1.getCustomer; } });
109
+ // Setup (first-time admin creation)
110
+ Object.defineProperty(exports, "setupAdmin", { enumerable: true, get: function () { return api_1.setupAdmin; } });
111
+ // Check (check if admin exists)
112
+ Object.defineProperty(exports, "checkAdminExists", { enumerable: true, get: function () { return api_1.checkAdminExists; } });
109
113
  // =============================================================================
110
114
  // React Hooks
111
115
  // =============================================================================
@@ -121,6 +125,7 @@ var components_1 = require("./components");
121
125
  // Auth
122
126
  Object.defineProperty(exports, "AdminGuard", { enumerable: true, get: function () { return components_1.AdminGuard; } });
123
127
  Object.defineProperty(exports, "AdminLoginForm", { enumerable: true, get: function () { return components_1.AdminLoginForm; } });
128
+ Object.defineProperty(exports, "AdminSetupForm", { enumerable: true, get: function () { return components_1.AdminSetupForm; } });
124
129
  // Layout
125
130
  Object.defineProperty(exports, "AdminLayout", { enumerable: true, get: function () { return components_1.AdminLayout; } });
126
131
  Object.defineProperty(exports, "AdminNav", { enumerable: true, get: function () { return components_1.AdminNav; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;;;;AAqFH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,mCAMiB;AALf,gHAAA,sBAAsB,OAAA;AACtB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,oHAAA,0BAA0B,OAAA;AAC1B,yGAAA,eAAe,OAAA;AAGjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,mCAUiB;AATf,2GAAA,iBAAiB,OAAA;AACjB,qGAAA,WAAW,OAAA;AACX,6GAAA,mBAAmB,OAAA;AACnB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,uGAAA,aAAa,OAAA;AACb,qGAAA,WAAW,OAAA;AACX,0GAAA,gBAAgB,OAAA;AAChB,qGAAA,WAAW,OAAA;AAGb,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,6BAsBc;AArBZ,8GAAA,uBAAuB,OAAA;AACvB,kGAAA,WAAW,OAAA;AACX,oGAAA,aAAa,OAAA;AACb,iGAAA,UAAU,OAAA;AACV,oGAAA,aAAa,OAAA;AACb,oGAAA,aAAa,OAAA;AACb,iGAAA,UAAU,OAAA;AACV,2GAAA,oBAAoB,OAAA;AACpB,2GAAA,oBAAoB,OAAA;AACpB,gGAAA,SAAS,OAAA;AACT,+FAAA,QAAQ,OAAA;AACR,kGAAA,WAAW,OAAA;AACX,oGAAA,aAAa,OAAA;AACb,+FAAA,QAAQ,OAAA;AACR,oGAAA,aAAa,OAAA;AACb,qGAAA,cAAc,OAAA;AACd,kGAAA,WAAW,OAAA;AACX,qGAAA,cAAc,OAAA;AACd,qGAAA,cAAc,OAAA;AACd,mGAAA,YAAY,OAAA;AACZ,kGAAA,WAAW,OAAA;AAGb,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,iCAKgB;AAJd,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA;AAGhB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,2CAsBqB;AArBnB,OAAO;AACP,wGAAA,UAAU,OAAA;AACV,4GAAA,cAAc,OAAA;AACd,SAAS;AACT,yGAAA,WAAW,OAAA;AACX,sGAAA,QAAQ,OAAA;AACR,yGAAA,WAAW,OAAA;AACX,YAAY;AACZ,wGAAA,UAAU,OAAA;AACV,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,WAAW;AACX,0GAAA,YAAY,OAAA;AACZ,yGAAA,WAAW,OAAA;AACX,6GAAA,eAAe,OAAA;AACf,SAAS;AACT,wGAAA,UAAU,OAAA;AACV,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,WAAW;AACX,2GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;;;;AAqFH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,mCAMiB;AALf,gHAAA,sBAAsB,OAAA;AACtB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,oHAAA,0BAA0B,OAAA;AAC1B,yGAAA,eAAe,OAAA;AAGjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,mCAUiB;AATf,2GAAA,iBAAiB,OAAA;AACjB,qGAAA,WAAW,OAAA;AACX,6GAAA,mBAAmB,OAAA;AACnB,6GAAA,mBAAmB,OAAA;AACnB,0GAAA,gBAAgB,OAAA;AAChB,uGAAA,aAAa,OAAA;AACb,qGAAA,WAAW,OAAA;AACX,0GAAA,gBAAgB,OAAA;AAChB,qGAAA,WAAW,OAAA;AAGb,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,6BA0Bc;AAzBZ,8GAAA,uBAAuB,OAAA;AACvB,kGAAA,WAAW,OAAA;AACX,oGAAA,aAAa,OAAA;AACb,iGAAA,UAAU,OAAA;AACV,oGAAA,aAAa,OAAA;AACb,oGAAA,aAAa,OAAA;AACb,iGAAA,UAAU,OAAA;AACV,2GAAA,oBAAoB,OAAA;AACpB,2GAAA,oBAAoB,OAAA;AACpB,gGAAA,SAAS,OAAA;AACT,+FAAA,QAAQ,OAAA;AACR,kGAAA,WAAW,OAAA;AACX,oGAAA,aAAa,OAAA;AACb,+FAAA,QAAQ,OAAA;AACR,oGAAA,aAAa,OAAA;AACb,qGAAA,cAAc,OAAA;AACd,kGAAA,WAAW,OAAA;AACX,qGAAA,cAAc,OAAA;AACd,qGAAA,cAAc,OAAA;AACd,mGAAA,YAAY,OAAA;AACZ,kGAAA,WAAW,OAAA;AACX,oCAAoC;AACpC,iGAAA,UAAU,OAAA;AACV,gCAAgC;AAChC,uGAAA,gBAAgB,OAAA;AAGlB,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,iCAKgB;AAJd,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA;AAGhB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,2CAuBqB;AAtBnB,OAAO;AACP,wGAAA,UAAU,OAAA;AACV,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,SAAS;AACT,yGAAA,WAAW,OAAA;AACX,sGAAA,QAAQ,OAAA;AACR,yGAAA,WAAW,OAAA;AACX,YAAY;AACZ,wGAAA,UAAU,OAAA;AACV,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,WAAW;AACX,0GAAA,YAAY,OAAA;AACZ,yGAAA,WAAW,OAAA;AACX,6GAAA,eAAe,OAAA;AACf,SAAS;AACT,wGAAA,UAAU,OAAA;AACV,0GAAA,YAAY,OAAA;AACZ,0GAAA,YAAY,OAAA;AACZ,WAAW;AACX,2GAAA,aAAa,OAAA"}
@@ -1,8 +1,13 @@
1
1
  /**
2
2
  * @rovela/sdk/auth/config
3
3
  *
4
- * NextAuth configuration for store customer authentication.
5
- * Uses JWT strategy with credentials provider.
4
+ * Unified NextAuth configuration for both customer AND admin authentication.
5
+ * Uses JWT strategy with two credentials providers:
6
+ * - 'credentials' for customer login
7
+ * - 'admin-credentials' for admin login
8
+ *
9
+ * This unified approach ensures signIn() works correctly for both user types
10
+ * since NextAuth always routes to /api/auth/[...nextauth].
6
11
  */
7
12
  import type { NextAuthOptions } from 'next-auth';
8
13
  import type { CustomerSession, AuthConfigOptions } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/auth/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAA;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAoBjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,eAAe,CAuIlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAEjC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/auth/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,WAAW,CAAA;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AA0BjE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,eAAe,CAmMlF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAEjC"}