@rovela-ai/sdk 0.1.19 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AdminNav.d.ts +10 -3
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +80 -28
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/CategoryForm.d.ts +30 -0
- package/dist/admin/components/CategoryForm.d.ts.map +1 -0
- package/dist/admin/components/CategoryForm.js +153 -0
- package/dist/admin/components/CategoryForm.js.map +1 -0
- package/dist/admin/components/CategorySelect.d.ts +32 -0
- package/dist/admin/components/CategorySelect.d.ts.map +1 -0
- package/dist/admin/components/CategorySelect.js +148 -0
- package/dist/admin/components/CategorySelect.js.map +1 -0
- package/dist/admin/components/LowStockAlert.d.ts +2 -2
- package/dist/admin/components/LowStockAlert.d.ts.map +1 -1
- package/dist/admin/components/LowStockAlert.js +16 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderStatusChart.d.ts +21 -0
- package/dist/admin/components/OrderStatusChart.d.ts.map +1 -0
- package/dist/admin/components/OrderStatusChart.js +54 -0
- package/dist/admin/components/OrderStatusChart.js.map +1 -0
- package/dist/admin/components/ProductForm.d.ts +2 -2
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +125 -9
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/RecentOrders.d.ts +1 -1
- package/dist/admin/components/RecentOrders.d.ts.map +1 -1
- package/dist/admin/components/RecentOrders.js +11 -10
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RevenueChart.d.ts +23 -0
- package/dist/admin/components/RevenueChart.d.ts.map +1 -0
- package/dist/admin/components/RevenueChart.js +70 -0
- package/dist/admin/components/RevenueChart.js.map +1 -0
- package/dist/admin/components/SEOPreview.d.ts +32 -0
- package/dist/admin/components/SEOPreview.d.ts.map +1 -0
- package/dist/admin/components/SEOPreview.js +30 -0
- package/dist/admin/components/SEOPreview.js.map +1 -0
- package/dist/admin/components/StatsCards.d.ts +2 -2
- package/dist/admin/components/StatsCards.d.ts.map +1 -1
- package/dist/admin/components/StatsCards.js +18 -20
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/TagInput.d.ts +29 -0
- package/dist/admin/components/TagInput.d.ts.map +1 -0
- package/dist/admin/components/TagInput.js +73 -0
- package/dist/admin/components/TagInput.js.map +1 -0
- package/dist/admin/components/VariantManager.d.ts +42 -0
- package/dist/admin/components/VariantManager.d.ts.map +1 -0
- package/dist/admin/components/VariantManager.js +175 -0
- package/dist/admin/components/VariantManager.js.map +1 -0
- package/dist/admin/components/index.d.ts +9 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +13 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/hooks/index.d.ts +2 -0
- package/dist/admin/hooks/index.d.ts.map +1 -1
- package/dist/admin/hooks/index.js +1 -0
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminCategories.d.ts +36 -0
- package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminCategories.js +217 -0
- package/dist/admin/hooks/useAdminCategories.js.map +1 -0
- package/dist/admin/index.d.ts +4 -3
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +6 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/core/StoreSettingsProvider.d.ts +104 -0
- package/dist/core/StoreSettingsProvider.d.ts.map +1 -0
- package/dist/core/StoreSettingsProvider.js +195 -0
- package/dist/core/StoreSettingsProvider.js.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +7 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/settings.d.ts +42 -0
- package/dist/core/api/settings.d.ts.map +1 -0
- package/dist/core/api/settings.js +74 -0
- package/dist/core/api/settings.js.map +1 -0
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { UseAdminCategoriesReturn, AdminCategoryListItem } from '../types';
|
|
2
|
+
export interface CategoryTreeItem extends AdminCategoryListItem {
|
|
3
|
+
children: CategoryTreeItem[];
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Category management hook for admin panel.
|
|
7
|
+
*
|
|
8
|
+
* @returns Categories data and CRUD methods
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* function CategoriesPage() {
|
|
13
|
+
* const {
|
|
14
|
+
* categories,
|
|
15
|
+
* flatCategories,
|
|
16
|
+
* isLoading,
|
|
17
|
+
* error,
|
|
18
|
+
* fetchCategories,
|
|
19
|
+
* createCategory,
|
|
20
|
+
* updateCategory,
|
|
21
|
+
* deleteCategory,
|
|
22
|
+
* } = useAdminCategories()
|
|
23
|
+
*
|
|
24
|
+
* useEffect(() => {
|
|
25
|
+
* fetchCategories()
|
|
26
|
+
* }, [fetchCategories])
|
|
27
|
+
*
|
|
28
|
+
* return <CategoryTable categories={categories} />
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function useAdminCategories(): UseAdminCategoriesReturn & {
|
|
33
|
+
flatCategories: AdminCategoryListItem[];
|
|
34
|
+
categoryTree: CategoryTreeItem[];
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=useAdminCategories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAdminCategories.d.ts","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminCategories.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAMjB,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,GAAG;IAC/D,cAAc,EAAE,qBAAqB,EAAE,CAAA;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAA;CACjC,CA2MA"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
/**
|
|
3
|
+
* @rovela/sdk/admin/hooks/useAdminCategories
|
|
4
|
+
*
|
|
5
|
+
* Category management hook for admin panel.
|
|
6
|
+
*/
|
|
7
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Hook Implementation
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Category management hook for admin panel.
|
|
13
|
+
*
|
|
14
|
+
* @returns Categories data and CRUD methods
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* function CategoriesPage() {
|
|
19
|
+
* const {
|
|
20
|
+
* categories,
|
|
21
|
+
* flatCategories,
|
|
22
|
+
* isLoading,
|
|
23
|
+
* error,
|
|
24
|
+
* fetchCategories,
|
|
25
|
+
* createCategory,
|
|
26
|
+
* updateCategory,
|
|
27
|
+
* deleteCategory,
|
|
28
|
+
* } = useAdminCategories()
|
|
29
|
+
*
|
|
30
|
+
* useEffect(() => {
|
|
31
|
+
* fetchCategories()
|
|
32
|
+
* }, [fetchCategories])
|
|
33
|
+
*
|
|
34
|
+
* return <CategoryTable categories={categories} />
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export function useAdminCategories() {
|
|
39
|
+
const [categories, setCategories] = useState([]);
|
|
40
|
+
const [categoryTree, setCategoryTree] = useState([]);
|
|
41
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
42
|
+
const [error, setError] = useState(null);
|
|
43
|
+
/**
|
|
44
|
+
* Build tree structure from flat list
|
|
45
|
+
*/
|
|
46
|
+
const buildTree = useCallback((flatList) => {
|
|
47
|
+
const map = new Map();
|
|
48
|
+
const roots = [];
|
|
49
|
+
// First pass: create nodes
|
|
50
|
+
for (const cat of flatList) {
|
|
51
|
+
map.set(cat.id, { ...cat, children: [] });
|
|
52
|
+
}
|
|
53
|
+
// Second pass: build tree
|
|
54
|
+
for (const cat of flatList) {
|
|
55
|
+
const node = map.get(cat.id);
|
|
56
|
+
if (cat.parentId && map.has(cat.parentId)) {
|
|
57
|
+
map.get(cat.parentId).children.push(node);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
roots.push(node);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Sort by order
|
|
64
|
+
const sortByOrder = (a, b) => a.order - b.order;
|
|
65
|
+
roots.sort(sortByOrder);
|
|
66
|
+
for (const node of map.values()) {
|
|
67
|
+
node.children.sort(sortByOrder);
|
|
68
|
+
}
|
|
69
|
+
return roots;
|
|
70
|
+
}, []);
|
|
71
|
+
/**
|
|
72
|
+
* Fetch all categories.
|
|
73
|
+
*/
|
|
74
|
+
const fetchCategories = useCallback(async () => {
|
|
75
|
+
setIsLoading(true);
|
|
76
|
+
setError(null);
|
|
77
|
+
try {
|
|
78
|
+
const response = await fetch('/api/admin/categories?flat=true');
|
|
79
|
+
if (!response.ok) {
|
|
80
|
+
const data = await response.json();
|
|
81
|
+
throw new Error(data.error || 'Failed to fetch categories');
|
|
82
|
+
}
|
|
83
|
+
const data = await response.json();
|
|
84
|
+
const flatList = (data.data || []);
|
|
85
|
+
setCategories(flatList);
|
|
86
|
+
setCategoryTree(buildTree(flatList));
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error('[useAdminCategories] Fetch error:', err);
|
|
90
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch categories');
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
setIsLoading(false);
|
|
94
|
+
}
|
|
95
|
+
}, [buildTree]);
|
|
96
|
+
/**
|
|
97
|
+
* Get a single category by ID.
|
|
98
|
+
*/
|
|
99
|
+
const getCategory = useCallback(async (id) => {
|
|
100
|
+
try {
|
|
101
|
+
const response = await fetch(`/api/admin/categories/${id}`);
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
const data = await response.json();
|
|
104
|
+
throw new Error(data.error || 'Failed to fetch category');
|
|
105
|
+
}
|
|
106
|
+
const data = await response.json();
|
|
107
|
+
return data.data;
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
console.error('[useAdminCategories] Get category error:', err);
|
|
111
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch category');
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}, []);
|
|
115
|
+
/**
|
|
116
|
+
* Create a new category.
|
|
117
|
+
*/
|
|
118
|
+
const createCategory = useCallback(async (data) => {
|
|
119
|
+
try {
|
|
120
|
+
const response = await fetch('/api/admin/categories', {
|
|
121
|
+
method: 'POST',
|
|
122
|
+
headers: { 'Content-Type': 'application/json' },
|
|
123
|
+
body: JSON.stringify(data),
|
|
124
|
+
});
|
|
125
|
+
const result = await response.json();
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
error: result.error || 'Failed to create category',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// Refresh categories list
|
|
133
|
+
await fetchCategories();
|
|
134
|
+
return {
|
|
135
|
+
success: true,
|
|
136
|
+
data: result.data,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
console.error('[useAdminCategories] Create error:', err);
|
|
141
|
+
return {
|
|
142
|
+
success: false,
|
|
143
|
+
error: err instanceof Error ? err.message : 'Failed to create category',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}, [fetchCategories]);
|
|
147
|
+
/**
|
|
148
|
+
* Update an existing category.
|
|
149
|
+
*/
|
|
150
|
+
const updateCategory = useCallback(async (id, data) => {
|
|
151
|
+
try {
|
|
152
|
+
const response = await fetch(`/api/admin/categories/${id}`, {
|
|
153
|
+
method: 'PUT',
|
|
154
|
+
headers: { 'Content-Type': 'application/json' },
|
|
155
|
+
body: JSON.stringify(data),
|
|
156
|
+
});
|
|
157
|
+
const result = await response.json();
|
|
158
|
+
if (!response.ok) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
error: result.error || 'Failed to update category',
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
// Refresh categories list
|
|
165
|
+
await fetchCategories();
|
|
166
|
+
return {
|
|
167
|
+
success: true,
|
|
168
|
+
data: result.data,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
console.error('[useAdminCategories] Update error:', err);
|
|
173
|
+
return {
|
|
174
|
+
success: false,
|
|
175
|
+
error: err instanceof Error ? err.message : 'Failed to update category',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}, [fetchCategories]);
|
|
179
|
+
/**
|
|
180
|
+
* Delete a category.
|
|
181
|
+
*/
|
|
182
|
+
const deleteCategory = useCallback(async (id) => {
|
|
183
|
+
try {
|
|
184
|
+
const response = await fetch(`/api/admin/categories/${id}`, {
|
|
185
|
+
method: 'DELETE',
|
|
186
|
+
});
|
|
187
|
+
if (!response.ok) {
|
|
188
|
+
const data = await response.json();
|
|
189
|
+
throw new Error(data.error || 'Failed to delete category');
|
|
190
|
+
}
|
|
191
|
+
// Refresh categories list
|
|
192
|
+
await fetchCategories();
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
console.error('[useAdminCategories] Delete error:', err);
|
|
197
|
+
setError(err instanceof Error ? err.message : 'Failed to delete category');
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}, [fetchCategories]);
|
|
201
|
+
// Load categories on mount
|
|
202
|
+
useEffect(() => {
|
|
203
|
+
fetchCategories();
|
|
204
|
+
}, [fetchCategories]);
|
|
205
|
+
return {
|
|
206
|
+
categories,
|
|
207
|
+
flatCategories: categories,
|
|
208
|
+
categoryTree,
|
|
209
|
+
isLoading,
|
|
210
|
+
error,
|
|
211
|
+
fetchCategories,
|
|
212
|
+
createCategory,
|
|
213
|
+
updateCategory,
|
|
214
|
+
deleteCategory,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=useAdminCategories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAdminCategories.js","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminCategories.ts"],"names":[],"mappings":"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"}
|
package/dist/admin/index.d.ts
CHANGED
|
@@ -58,7 +58,8 @@ export type { OrderStatus, ProductStatus, AdminRole, Order, OrderItem, Product,
|
|
|
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
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
|
-
export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, } from './hooks';
|
|
62
|
-
export {
|
|
63
|
-
export
|
|
61
|
+
export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, useAdminCategories, } from './hooks';
|
|
62
|
+
export type { CategoryTreeItem } from './hooks/useAdminCategories';
|
|
63
|
+
export { AdminGuard, AdminLoginForm, AdminSetupForm, AdminLayout, AdminNav, AdminHeader, StatsCards, RecentOrders, LowStockAlert, RevenueChart, OrderStatusChart, ProductTable, ProductForm, InventoryEditor, CategorySelect, CategoryForm, SEOPreview, TagInput, VariantManager, OrderTable, OrderDetails, RefundDialog, StoreSettings, } from './components';
|
|
64
|
+
export type { AdminSetupFormProps, RevenueChartProps, OrderStatusChartProps, } from './components';
|
|
64
65
|
//# 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,EAEX,UAAU,EAEV,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAMd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,
|
|
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,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAMlE,OAAO,EAEL,UAAU,EACV,cAAc,EACd,cAAc,EAEd,WAAW,EACX,QAAQ,EACR,WAAW,EAEX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAEhB,YAAY,EACZ,WAAW,EACX,eAAe,EAEf,cAAc,EACd,YAAY,EAEZ,UAAU,EACV,QAAQ,EACR,cAAc,EAEd,UAAU,EACV,YAAY,EACZ,YAAY,EAEZ,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,cAAc,CAAA"}
|
package/dist/admin/index.js
CHANGED
|
@@ -74,7 +74,7 @@ checkAdminExists, } from './api';
|
|
|
74
74
|
// =============================================================================
|
|
75
75
|
// React Hooks
|
|
76
76
|
// =============================================================================
|
|
77
|
-
export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, } from './hooks';
|
|
77
|
+
export { useAdminAuth, useAdminStats, useAdminProducts, useAdminOrders, useAdminCategories, } from './hooks';
|
|
78
78
|
// =============================================================================
|
|
79
79
|
// React Components
|
|
80
80
|
// =============================================================================
|
|
@@ -84,9 +84,13 @@ AdminGuard, AdminLoginForm, AdminSetupForm,
|
|
|
84
84
|
// Layout
|
|
85
85
|
AdminLayout, AdminNav, AdminHeader,
|
|
86
86
|
// Dashboard
|
|
87
|
-
StatsCards, RecentOrders, LowStockAlert,
|
|
87
|
+
StatsCards, RecentOrders, LowStockAlert, RevenueChart, OrderStatusChart,
|
|
88
88
|
// Products
|
|
89
89
|
ProductTable, ProductForm, InventoryEditor,
|
|
90
|
+
// Categories
|
|
91
|
+
CategorySelect, CategoryForm,
|
|
92
|
+
// Utility (used by ProductForm)
|
|
93
|
+
SEOPreview, TagInput, VariantManager,
|
|
90
94
|
// Orders
|
|
91
95
|
OrderTable, OrderDetails, RefundDialog,
|
|
92
96
|
// Settings
|
package/dist/admin/index.js.map
CHANGED
|
@@ -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,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,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;AACX,oCAAoC;AACpC,UAAU;AACV,gCAAgC;AAChC,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAEd,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAqFH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,gFAAgF;AAChF,mDAAmD;AACnD,0EAA0E;AAC1E,gFAAgF;AAEhF,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;AACX,oCAAoC;AACpC,UAAU;AACV,gCAAgC;AAChC,gBAAgB,GACjB,MAAM,OAAO,CAAA;AAEd,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAIhB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,OAAO;AACL,OAAO;AACP,UAAU,EACV,cAAc,EACd,cAAc;AACd,SAAS;AACT,WAAW,EACX,QAAQ,EACR,WAAW;AACX,YAAY;AACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB;AAChB,WAAW;AACX,YAAY,EACZ,WAAW,EACX,eAAe;AACf,aAAa;AACb,cAAc,EACd,YAAY;AACZ,gCAAgC;AAChC,UAAU,EACV,QAAQ,EACR,cAAc;AACd,SAAS;AACT,UAAU,EACV,YAAY,EACZ,YAAY;AACZ,WAAW;AACX,aAAa,GACd,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/core/StoreSettingsProvider
|
|
3
|
+
*
|
|
4
|
+
* React context provider for dynamic store settings.
|
|
5
|
+
* Fetches settings from the database and provides them to all components.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```tsx
|
|
9
|
+
* // app/layout.tsx
|
|
10
|
+
* import { StoreSettingsProvider } from '@rovela-ai/sdk/core'
|
|
11
|
+
*
|
|
12
|
+
* export default function RootLayout({ children }) {
|
|
13
|
+
* return (
|
|
14
|
+
* <html>
|
|
15
|
+
* <body>
|
|
16
|
+
* <StoreSettingsProvider>
|
|
17
|
+
* {children}
|
|
18
|
+
* </StoreSettingsProvider>
|
|
19
|
+
* </body>
|
|
20
|
+
* </html>
|
|
21
|
+
* )
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* // In any component
|
|
25
|
+
* import { useStoreSettings } from '@rovela-ai/sdk/core'
|
|
26
|
+
*
|
|
27
|
+
* function MyComponent() {
|
|
28
|
+
* const { storeName, currency, formatPrice, isLoading } = useStoreSettings()
|
|
29
|
+
* return <h1>{storeName}</h1>
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import { type ReactNode } from 'react';
|
|
34
|
+
export interface StoreSettings {
|
|
35
|
+
storeName: string;
|
|
36
|
+
storeEmail: string;
|
|
37
|
+
storeCurrency: string;
|
|
38
|
+
storeTimezone: string;
|
|
39
|
+
taxEnabled: boolean;
|
|
40
|
+
taxRate: number;
|
|
41
|
+
shippingEnabled: boolean;
|
|
42
|
+
freeShippingThreshold: number;
|
|
43
|
+
}
|
|
44
|
+
export interface StoreSettingsContextValue {
|
|
45
|
+
/** Store display name */
|
|
46
|
+
storeName: string;
|
|
47
|
+
/** Store currency code (USD, EUR, etc.) */
|
|
48
|
+
currency: string;
|
|
49
|
+
/** Store locale for formatting */
|
|
50
|
+
locale: string;
|
|
51
|
+
/** Support email */
|
|
52
|
+
supportEmail: string;
|
|
53
|
+
/** Whether settings are still loading */
|
|
54
|
+
isLoading: boolean;
|
|
55
|
+
/** Error message if fetch failed */
|
|
56
|
+
error: string | null;
|
|
57
|
+
/** Full settings object */
|
|
58
|
+
settings: StoreSettings | null;
|
|
59
|
+
/** Format a price with the store's currency */
|
|
60
|
+
formatPrice: (price: number | string) => string;
|
|
61
|
+
/** Format a date with the store's timezone and locale */
|
|
62
|
+
formatDate: (date: Date | string, options?: Intl.DateTimeFormatOptions) => string;
|
|
63
|
+
/** Refetch settings from server */
|
|
64
|
+
refetch: () => Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
export interface StoreSettingsProviderProps {
|
|
67
|
+
children: ReactNode;
|
|
68
|
+
/** Initial settings for SSR (optional) */
|
|
69
|
+
initialSettings?: Partial<StoreSettings>;
|
|
70
|
+
/** Fallback values when settings not available */
|
|
71
|
+
fallback?: {
|
|
72
|
+
storeName?: string;
|
|
73
|
+
currency?: string;
|
|
74
|
+
locale?: string;
|
|
75
|
+
supportEmail?: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export declare function StoreSettingsProvider({ children, initialSettings, fallback, }: StoreSettingsProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
79
|
+
/**
|
|
80
|
+
* Hook to access store settings from context.
|
|
81
|
+
*
|
|
82
|
+
* @throws Error if used outside of StoreSettingsProvider
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```tsx
|
|
86
|
+
* function PriceDisplay({ price }: { price: number }) {
|
|
87
|
+
* const { formatPrice } = useStoreSettings()
|
|
88
|
+
* return <span>{formatPrice(price)}</span>
|
|
89
|
+
* }
|
|
90
|
+
*
|
|
91
|
+
* function Header() {
|
|
92
|
+
* const { storeName, isLoading } = useStoreSettings()
|
|
93
|
+
* if (isLoading) return <Skeleton />
|
|
94
|
+
* return <h1>{storeName}</h1>
|
|
95
|
+
* }
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function useStoreSettings(): StoreSettingsContextValue;
|
|
99
|
+
/**
|
|
100
|
+
* Optional hook that returns null instead of throwing if used outside provider.
|
|
101
|
+
* Useful for components that can work with or without settings.
|
|
102
|
+
*/
|
|
103
|
+
export declare function useStoreSettingsOptional(): StoreSettingsContextValue | null;
|
|
104
|
+
//# sourceMappingURL=StoreSettingsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreSettingsProvider.d.ts","sourceRoot":"","sources":["../../src/core/StoreSettingsProvider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAMd,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,+CAA+C;IAC/C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,KAAK,MAAM,CAAA;IACjF,mCAAmC;IACnC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAA;IACnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACxC,kDAAkD;IAClD,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAuCD,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE,0BAA0B,2CAwH5B;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,IAAI,yBAAyB,CAW5D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,yBAAyB,GAAG,IAAI,CAE3E"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* @rovela/sdk/core/StoreSettingsProvider
|
|
5
|
+
*
|
|
6
|
+
* React context provider for dynamic store settings.
|
|
7
|
+
* Fetches settings from the database and provides them to all components.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* ```tsx
|
|
11
|
+
* // app/layout.tsx
|
|
12
|
+
* import { StoreSettingsProvider } from '@rovela-ai/sdk/core'
|
|
13
|
+
*
|
|
14
|
+
* export default function RootLayout({ children }) {
|
|
15
|
+
* return (
|
|
16
|
+
* <html>
|
|
17
|
+
* <body>
|
|
18
|
+
* <StoreSettingsProvider>
|
|
19
|
+
* {children}
|
|
20
|
+
* </StoreSettingsProvider>
|
|
21
|
+
* </body>
|
|
22
|
+
* </html>
|
|
23
|
+
* )
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // In any component
|
|
27
|
+
* import { useStoreSettings } from '@rovela-ai/sdk/core'
|
|
28
|
+
*
|
|
29
|
+
* function MyComponent() {
|
|
30
|
+
* const { storeName, currency, formatPrice, isLoading } = useStoreSettings()
|
|
31
|
+
* return <h1>{storeName}</h1>
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import { createContext, useContext, useState, useEffect, useCallback, useMemo, } from 'react';
|
|
36
|
+
// =============================================================================
|
|
37
|
+
// Defaults
|
|
38
|
+
// =============================================================================
|
|
39
|
+
const DEFAULT_SETTINGS = {
|
|
40
|
+
storeName: 'Store',
|
|
41
|
+
storeEmail: '',
|
|
42
|
+
storeCurrency: 'USD',
|
|
43
|
+
storeTimezone: 'America/New_York',
|
|
44
|
+
taxEnabled: false,
|
|
45
|
+
taxRate: 0,
|
|
46
|
+
shippingEnabled: true,
|
|
47
|
+
freeShippingThreshold: 0,
|
|
48
|
+
};
|
|
49
|
+
const DEFAULT_LOCALE = 'en-US';
|
|
50
|
+
// Currency to locale mapping for proper formatting
|
|
51
|
+
const CURRENCY_LOCALES = {
|
|
52
|
+
USD: 'en-US',
|
|
53
|
+
EUR: 'de-DE',
|
|
54
|
+
GBP: 'en-GB',
|
|
55
|
+
CAD: 'en-CA',
|
|
56
|
+
AUD: 'en-AU',
|
|
57
|
+
JPY: 'ja-JP',
|
|
58
|
+
};
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// Context
|
|
61
|
+
// =============================================================================
|
|
62
|
+
const StoreSettingsContext = createContext(null);
|
|
63
|
+
// =============================================================================
|
|
64
|
+
// Provider Component
|
|
65
|
+
// =============================================================================
|
|
66
|
+
export function StoreSettingsProvider({ children, initialSettings, fallback, }) {
|
|
67
|
+
const [settings, setSettings] = useState(initialSettings ? { ...DEFAULT_SETTINGS, ...initialSettings } : null);
|
|
68
|
+
const [isLoading, setIsLoading] = useState(!initialSettings);
|
|
69
|
+
const [error, setError] = useState(null);
|
|
70
|
+
// Fetch settings from API
|
|
71
|
+
const fetchSettings = useCallback(async () => {
|
|
72
|
+
try {
|
|
73
|
+
setIsLoading(true);
|
|
74
|
+
setError(null);
|
|
75
|
+
const response = await fetch('/api/store/settings');
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
throw new Error('Failed to fetch store settings');
|
|
78
|
+
}
|
|
79
|
+
const data = await response.json();
|
|
80
|
+
setSettings({
|
|
81
|
+
storeName: data.settings?.storeName || DEFAULT_SETTINGS.storeName,
|
|
82
|
+
storeEmail: data.settings?.storeEmail || DEFAULT_SETTINGS.storeEmail,
|
|
83
|
+
storeCurrency: data.settings?.storeCurrency || DEFAULT_SETTINGS.storeCurrency,
|
|
84
|
+
storeTimezone: data.settings?.storeTimezone || DEFAULT_SETTINGS.storeTimezone,
|
|
85
|
+
taxEnabled: data.settings?.taxEnabled ?? DEFAULT_SETTINGS.taxEnabled,
|
|
86
|
+
taxRate: data.settings?.taxRate ?? DEFAULT_SETTINGS.taxRate,
|
|
87
|
+
shippingEnabled: data.settings?.shippingEnabled ?? DEFAULT_SETTINGS.shippingEnabled,
|
|
88
|
+
freeShippingThreshold: data.settings?.freeShippingThreshold ?? DEFAULT_SETTINGS.freeShippingThreshold,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
console.error('[StoreSettingsProvider] Failed to fetch settings:', err);
|
|
93
|
+
setError(err instanceof Error ? err.message : 'Failed to load settings');
|
|
94
|
+
// Use fallback or defaults on error
|
|
95
|
+
setSettings({
|
|
96
|
+
...DEFAULT_SETTINGS,
|
|
97
|
+
storeName: fallback?.storeName || DEFAULT_SETTINGS.storeName,
|
|
98
|
+
storeCurrency: fallback?.currency || DEFAULT_SETTINGS.storeCurrency,
|
|
99
|
+
storeEmail: fallback?.supportEmail || DEFAULT_SETTINGS.storeEmail,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
setIsLoading(false);
|
|
104
|
+
}
|
|
105
|
+
}, [fallback]);
|
|
106
|
+
// Fetch on mount
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
if (!initialSettings) {
|
|
109
|
+
fetchSettings();
|
|
110
|
+
}
|
|
111
|
+
}, [fetchSettings, initialSettings]);
|
|
112
|
+
// Memoized formatPrice function
|
|
113
|
+
const formatPrice = useCallback((price) => {
|
|
114
|
+
const currency = settings?.storeCurrency || fallback?.currency || 'USD';
|
|
115
|
+
const locale = CURRENCY_LOCALES[currency] || fallback?.locale || DEFAULT_LOCALE;
|
|
116
|
+
// Convert to number
|
|
117
|
+
let numPrice = typeof price === 'string' ? parseFloat(price) : price;
|
|
118
|
+
// Assume cents if price is a large integer (> 100 and whole number)
|
|
119
|
+
if (Number.isInteger(numPrice) && numPrice > 100) {
|
|
120
|
+
numPrice = numPrice / 100;
|
|
121
|
+
}
|
|
122
|
+
return new Intl.NumberFormat(locale, {
|
|
123
|
+
style: 'currency',
|
|
124
|
+
currency,
|
|
125
|
+
minimumFractionDigits: 2,
|
|
126
|
+
maximumFractionDigits: 2,
|
|
127
|
+
}).format(numPrice);
|
|
128
|
+
}, [settings?.storeCurrency, fallback?.currency, fallback?.locale]);
|
|
129
|
+
// Memoized formatDate function with timezone support
|
|
130
|
+
const formatDate = useCallback((date, options = {
|
|
131
|
+
year: 'numeric',
|
|
132
|
+
month: 'short',
|
|
133
|
+
day: 'numeric',
|
|
134
|
+
}) => {
|
|
135
|
+
const d = typeof date === 'string' ? new Date(date) : date;
|
|
136
|
+
const timezone = settings?.storeTimezone || DEFAULT_SETTINGS.storeTimezone;
|
|
137
|
+
const locale = CURRENCY_LOCALES[settings?.storeCurrency || ''] || fallback?.locale || DEFAULT_LOCALE;
|
|
138
|
+
return new Intl.DateTimeFormat(locale, {
|
|
139
|
+
...options,
|
|
140
|
+
timeZone: timezone,
|
|
141
|
+
}).format(d);
|
|
142
|
+
}, [settings?.storeTimezone, settings?.storeCurrency, fallback?.locale]);
|
|
143
|
+
// Memoized context value
|
|
144
|
+
const value = useMemo(() => ({
|
|
145
|
+
storeName: settings?.storeName || fallback?.storeName || DEFAULT_SETTINGS.storeName,
|
|
146
|
+
currency: settings?.storeCurrency || fallback?.currency || DEFAULT_SETTINGS.storeCurrency,
|
|
147
|
+
locale: CURRENCY_LOCALES[settings?.storeCurrency || ''] || fallback?.locale || DEFAULT_LOCALE,
|
|
148
|
+
supportEmail: settings?.storeEmail || fallback?.supportEmail || '',
|
|
149
|
+
isLoading,
|
|
150
|
+
error,
|
|
151
|
+
settings,
|
|
152
|
+
formatPrice,
|
|
153
|
+
formatDate,
|
|
154
|
+
refetch: fetchSettings,
|
|
155
|
+
}), [settings, fallback, isLoading, error, formatPrice, formatDate, fetchSettings]);
|
|
156
|
+
return (_jsx(StoreSettingsContext.Provider, { value: value, children: children }));
|
|
157
|
+
}
|
|
158
|
+
// =============================================================================
|
|
159
|
+
// Hook
|
|
160
|
+
// =============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Hook to access store settings from context.
|
|
163
|
+
*
|
|
164
|
+
* @throws Error if used outside of StoreSettingsProvider
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```tsx
|
|
168
|
+
* function PriceDisplay({ price }: { price: number }) {
|
|
169
|
+
* const { formatPrice } = useStoreSettings()
|
|
170
|
+
* return <span>{formatPrice(price)}</span>
|
|
171
|
+
* }
|
|
172
|
+
*
|
|
173
|
+
* function Header() {
|
|
174
|
+
* const { storeName, isLoading } = useStoreSettings()
|
|
175
|
+
* if (isLoading) return <Skeleton />
|
|
176
|
+
* return <h1>{storeName}</h1>
|
|
177
|
+
* }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function useStoreSettings() {
|
|
181
|
+
const context = useContext(StoreSettingsContext);
|
|
182
|
+
if (!context) {
|
|
183
|
+
throw new Error('useStoreSettings must be used within a StoreSettingsProvider. ' +
|
|
184
|
+
'Make sure to wrap your app with <StoreSettingsProvider> in layout.tsx');
|
|
185
|
+
}
|
|
186
|
+
return context;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Optional hook that returns null instead of throwing if used outside provider.
|
|
190
|
+
* Useful for components that can work with or without settings.
|
|
191
|
+
*/
|
|
192
|
+
export function useStoreSettingsOptional() {
|
|
193
|
+
return useContext(StoreSettingsContext);
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=StoreSettingsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoreSettingsProvider.js","sourceRoot":"","sources":["../../src/core/StoreSettingsProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
|