@rovela-ai/sdk 0.1.18 → 0.1.20

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 (345) hide show
  1. package/dist/admin/api/auth.js +5 -11
  2. package/dist/admin/api/auth.js.map +1 -1
  3. package/dist/admin/api/categories.js +43 -50
  4. package/dist/admin/api/categories.js.map +1 -1
  5. package/dist/admin/api/check.js +6 -9
  6. package/dist/admin/api/check.js.map +1 -1
  7. package/dist/admin/api/customers.js +17 -21
  8. package/dist/admin/api/customers.js.map +1 -1
  9. package/dist/admin/api/index.js +10 -38
  10. package/dist/admin/api/index.js.map +1 -1
  11. package/dist/admin/api/orders.js +30 -35
  12. package/dist/admin/api/orders.js.map +1 -1
  13. package/dist/admin/api/products.js +56 -66
  14. package/dist/admin/api/products.js.map +1 -1
  15. package/dist/admin/api/refund.js +26 -29
  16. package/dist/admin/api/refund.js.map +1 -1
  17. package/dist/admin/api/settings.js +17 -21
  18. package/dist/admin/api/settings.js.map +1 -1
  19. package/dist/admin/api/setup.js +17 -20
  20. package/dist/admin/api/setup.js.map +1 -1
  21. package/dist/admin/api/stats.js +14 -17
  22. package/dist/admin/api/stats.js.map +1 -1
  23. package/dist/admin/components/AdminGuard.js +13 -17
  24. package/dist/admin/components/AdminGuard.js.map +1 -1
  25. package/dist/admin/components/AdminHeader.js +8 -11
  26. package/dist/admin/components/AdminHeader.js.map +1 -1
  27. package/dist/admin/components/AdminLayout.js +5 -8
  28. package/dist/admin/components/AdminLayout.js.map +1 -1
  29. package/dist/admin/components/AdminLoginForm.js +11 -14
  30. package/dist/admin/components/AdminLoginForm.js.map +1 -1
  31. package/dist/admin/components/AdminNav.d.ts.map +1 -1
  32. package/dist/admin/components/AdminNav.js +16 -14
  33. package/dist/admin/components/AdminNav.js.map +1 -1
  34. package/dist/admin/components/AdminSetupForm.js +11 -14
  35. package/dist/admin/components/AdminSetupForm.js.map +1 -1
  36. package/dist/admin/components/CategoryForm.d.ts +30 -0
  37. package/dist/admin/components/CategoryForm.d.ts.map +1 -0
  38. package/dist/admin/components/CategoryForm.js +153 -0
  39. package/dist/admin/components/CategoryForm.js.map +1 -0
  40. package/dist/admin/components/CategorySelect.d.ts +32 -0
  41. package/dist/admin/components/CategorySelect.d.ts.map +1 -0
  42. package/dist/admin/components/CategorySelect.js +148 -0
  43. package/dist/admin/components/CategorySelect.js.map +1 -0
  44. package/dist/admin/components/InventoryEditor.js +16 -19
  45. package/dist/admin/components/InventoryEditor.js.map +1 -1
  46. package/dist/admin/components/LowStockAlert.js +6 -9
  47. package/dist/admin/components/LowStockAlert.js.map +1 -1
  48. package/dist/admin/components/OrderDetails.js +15 -18
  49. package/dist/admin/components/OrderDetails.js.map +1 -1
  50. package/dist/admin/components/OrderTable.js +13 -16
  51. package/dist/admin/components/OrderTable.js.map +1 -1
  52. package/dist/admin/components/ProductForm.d.ts +2 -2
  53. package/dist/admin/components/ProductForm.d.ts.map +1 -1
  54. package/dist/admin/components/ProductForm.js +140 -27
  55. package/dist/admin/components/ProductForm.js.map +1 -1
  56. package/dist/admin/components/ProductTable.js +15 -18
  57. package/dist/admin/components/ProductTable.js.map +1 -1
  58. package/dist/admin/components/RecentOrders.js +6 -9
  59. package/dist/admin/components/RecentOrders.js.map +1 -1
  60. package/dist/admin/components/RefundDialog.js +12 -15
  61. package/dist/admin/components/RefundDialog.js.map +1 -1
  62. package/dist/admin/components/SEOPreview.d.ts +32 -0
  63. package/dist/admin/components/SEOPreview.d.ts.map +1 -0
  64. package/dist/admin/components/SEOPreview.js +30 -0
  65. package/dist/admin/components/SEOPreview.js.map +1 -0
  66. package/dist/admin/components/StatsCards.js +7 -10
  67. package/dist/admin/components/StatsCards.js.map +1 -1
  68. package/dist/admin/components/StoreSettings.js +10 -13
  69. package/dist/admin/components/StoreSettings.js.map +1 -1
  70. package/dist/admin/components/TagInput.d.ts +29 -0
  71. package/dist/admin/components/TagInput.d.ts.map +1 -0
  72. package/dist/admin/components/TagInput.js +73 -0
  73. package/dist/admin/components/TagInput.js.map +1 -0
  74. package/dist/admin/components/VariantManager.d.ts +42 -0
  75. package/dist/admin/components/VariantManager.d.ts.map +1 -0
  76. package/dist/admin/components/VariantManager.js +175 -0
  77. package/dist/admin/components/VariantManager.js.map +1 -0
  78. package/dist/admin/components/index.d.ts +5 -0
  79. package/dist/admin/components/index.d.ts.map +1 -1
  80. package/dist/admin/components/index.js +27 -35
  81. package/dist/admin/components/index.js.map +1 -1
  82. package/dist/admin/config.js +12 -54
  83. package/dist/admin/config.js.map +1 -1
  84. package/dist/admin/hooks/index.d.ts +2 -0
  85. package/dist/admin/hooks/index.d.ts.map +1 -1
  86. package/dist/admin/hooks/index.js +5 -11
  87. package/dist/admin/hooks/index.js.map +1 -1
  88. package/dist/admin/hooks/useAdminAuth.js +9 -12
  89. package/dist/admin/hooks/useAdminAuth.js.map +1 -1
  90. package/dist/admin/hooks/useAdminCategories.d.ts +36 -0
  91. package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -0
  92. package/dist/admin/hooks/useAdminCategories.js +217 -0
  93. package/dist/admin/hooks/useAdminCategories.js.map +1 -0
  94. package/dist/admin/hooks/useAdminOrders.js +11 -14
  95. package/dist/admin/hooks/useAdminOrders.js.map +1 -1
  96. package/dist/admin/hooks/useAdminProducts.js +13 -16
  97. package/dist/admin/hooks/useAdminProducts.js.map +1 -1
  98. package/dist/admin/hooks/useAdminStats.js +11 -14
  99. package/dist/admin/hooks/useAdminStats.js.map +1 -1
  100. package/dist/admin/index.d.ts +3 -2
  101. package/dist/admin/index.d.ts.map +1 -1
  102. package/dist/admin/index.js +17 -66
  103. package/dist/admin/index.js.map +1 -1
  104. package/dist/admin/server/admin-service.js +39 -83
  105. package/dist/admin/server/admin-service.js.map +1 -1
  106. package/dist/admin/server/index.js +3 -13
  107. package/dist/admin/server/index.js.map +1 -1
  108. package/dist/admin/types.js +1 -2
  109. package/dist/admin/types.js.map +1 -1
  110. package/dist/auth/api/auth.js +6 -14
  111. package/dist/auth/api/auth.js.map +1 -1
  112. package/dist/auth/api/forgot-password.js +8 -11
  113. package/dist/auth/api/forgot-password.js.map +1 -1
  114. package/dist/auth/api/index.js +6 -18
  115. package/dist/auth/api/index.js.map +1 -1
  116. package/dist/auth/api/register.js +17 -20
  117. package/dist/auth/api/register.js.map +1 -1
  118. package/dist/auth/api/resend-verification.js +9 -12
  119. package/dist/auth/api/resend-verification.js.map +1 -1
  120. package/dist/auth/api/reset-password.js +18 -22
  121. package/dist/auth/api/reset-password.js.map +1 -1
  122. package/dist/auth/api/verify-email.js +14 -18
  123. package/dist/auth/api/verify-email.js.map +1 -1
  124. package/dist/auth/components/AuthGuard.js +13 -17
  125. package/dist/auth/components/AuthGuard.js.map +1 -1
  126. package/dist/auth/components/ForgotPasswordForm.js +11 -14
  127. package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
  128. package/dist/auth/components/ResetPasswordForm.js +18 -21
  129. package/dist/auth/components/ResetPasswordForm.js.map +1 -1
  130. package/dist/auth/components/SignInForm.js +13 -16
  131. package/dist/auth/components/SignInForm.js.map +1 -1
  132. package/dist/auth/components/SignUpForm.js +15 -18
  133. package/dist/auth/components/SignUpForm.js.map +1 -1
  134. package/dist/auth/components/UserMenu.js +13 -16
  135. package/dist/auth/components/UserMenu.js.map +1 -1
  136. package/dist/auth/components/VerifyEmailNotice.js +10 -13
  137. package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
  138. package/dist/auth/components/index.js +7 -18
  139. package/dist/auth/components/index.js.map +1 -1
  140. package/dist/auth/config.js +9 -49
  141. package/dist/auth/config.js.map +1 -1
  142. package/dist/auth/hooks/index.js +1 -5
  143. package/dist/auth/hooks/index.js.map +1 -1
  144. package/dist/auth/hooks/useAuth.js +14 -17
  145. package/dist/auth/hooks/useAuth.js.map +1 -1
  146. package/dist/auth/index.js +15 -37
  147. package/dist/auth/index.js.map +1 -1
  148. package/dist/auth/server/customer-service.js +39 -83
  149. package/dist/auth/server/customer-service.js.map +1 -1
  150. package/dist/auth/server/email-sender.js +11 -17
  151. package/dist/auth/server/email-sender.js.map +1 -1
  152. package/dist/auth/server/index.js +5 -36
  153. package/dist/auth/server/index.js.map +1 -1
  154. package/dist/auth/server/password-reset-service.js +30 -70
  155. package/dist/auth/server/password-reset-service.js.map +1 -1
  156. package/dist/auth/server/password.js +9 -18
  157. package/dist/auth/server/password.js.map +1 -1
  158. package/dist/auth/server/verification-service.js +35 -76
  159. package/dist/auth/server/verification-service.js.map +1 -1
  160. package/dist/auth/types.js +1 -2
  161. package/dist/auth/types.js.map +1 -1
  162. package/dist/cart/CartProvider.js +13 -17
  163. package/dist/cart/CartProvider.js.map +1 -1
  164. package/dist/cart/components/AddToCartButton.js +16 -19
  165. package/dist/cart/components/AddToCartButton.js.map +1 -1
  166. package/dist/cart/components/CartDrawer.js +17 -23
  167. package/dist/cart/components/CartDrawer.js.map +1 -1
  168. package/dist/cart/components/CartIcon.js +9 -12
  169. package/dist/cart/components/CartIcon.js.map +1 -1
  170. package/dist/cart/components/CartItem.js +7 -13
  171. package/dist/cart/components/CartItem.js.map +1 -1
  172. package/dist/cart/components/CartSummary.js +12 -15
  173. package/dist/cart/components/CartSummary.js.map +1 -1
  174. package/dist/cart/components/QuantitySelector.js +9 -12
  175. package/dist/cart/components/QuantitySelector.js.map +1 -1
  176. package/dist/cart/components/index.js +6 -15
  177. package/dist/cart/components/index.js.map +1 -1
  178. package/dist/cart/index.js +3 -17
  179. package/dist/cart/index.js.map +1 -1
  180. package/dist/cart/store.js +8 -13
  181. package/dist/cart/store.js.map +1 -1
  182. package/dist/checkout/api/checkout.js +12 -15
  183. package/dist/checkout/api/checkout.js.map +1 -1
  184. package/dist/checkout/api/index.js +2 -7
  185. package/dist/checkout/api/index.js.map +1 -1
  186. package/dist/checkout/api/webhook.js +8 -11
  187. package/dist/checkout/api/webhook.js.map +1 -1
  188. package/dist/checkout/components/CheckoutButton.js +8 -11
  189. package/dist/checkout/components/CheckoutButton.js.map +1 -1
  190. package/dist/checkout/components/CheckoutSuccess.js +11 -14
  191. package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
  192. package/dist/checkout/components/OrderSummary.js +8 -11
  193. package/dist/checkout/components/OrderSummary.js.map +1 -1
  194. package/dist/checkout/components/ShippingForm.js +14 -17
  195. package/dist/checkout/components/ShippingForm.js.map +1 -1
  196. package/dist/checkout/components/index.js +4 -11
  197. package/dist/checkout/components/index.js.map +1 -1
  198. package/dist/checkout/hooks/index.js +1 -6
  199. package/dist/checkout/hooks/index.js.map +1 -1
  200. package/dist/checkout/hooks/useCheckout.js +10 -19
  201. package/dist/checkout/hooks/useCheckout.js.map +1 -1
  202. package/dist/checkout/index.js +7 -28
  203. package/dist/checkout/index.js.map +1 -1
  204. package/dist/checkout/server/create-checkout-session.js +11 -16
  205. package/dist/checkout/server/create-checkout-session.js.map +1 -1
  206. package/dist/checkout/server/handle-webhook.js +21 -24
  207. package/dist/checkout/server/handle-webhook.js.map +1 -1
  208. package/dist/checkout/server/index.js +3 -13
  209. package/dist/checkout/server/index.js.map +1 -1
  210. package/dist/checkout/server/order-service.js +11 -16
  211. package/dist/checkout/server/order-service.js.map +1 -1
  212. package/dist/checkout/stripe/client.js +13 -29
  213. package/dist/checkout/stripe/client.js.map +1 -1
  214. package/dist/checkout/stripe/index.js +1 -15
  215. package/dist/checkout/stripe/index.js.map +1 -1
  216. package/dist/checkout/types.js +1 -2
  217. package/dist/checkout/types.js.map +1 -1
  218. package/dist/core/StoreSettingsProvider.d.ts +104 -0
  219. package/dist/core/StoreSettingsProvider.d.ts.map +1 -0
  220. package/dist/core/StoreSettingsProvider.js +195 -0
  221. package/dist/core/StoreSettingsProvider.js.map +1 -0
  222. package/dist/core/api/index.d.ts +7 -0
  223. package/dist/core/api/index.d.ts.map +1 -0
  224. package/dist/core/api/index.js +7 -0
  225. package/dist/core/api/index.js.map +1 -0
  226. package/dist/core/api/settings.d.ts +42 -0
  227. package/dist/core/api/settings.d.ts.map +1 -0
  228. package/dist/core/api/settings.js +74 -0
  229. package/dist/core/api/settings.js.map +1 -0
  230. package/dist/core/config.js +12 -57
  231. package/dist/core/config.js.map +1 -1
  232. package/dist/core/db/client.js +16 -62
  233. package/dist/core/db/client.js.map +1 -1
  234. package/dist/core/db/index.js +14 -93
  235. package/dist/core/db/index.js.map +1 -1
  236. package/dist/core/db/queries.d.ts +6 -6
  237. package/dist/core/db/queries.js +207 -284
  238. package/dist/core/db/queries.js.map +1 -1
  239. package/dist/core/db/schema.js +179 -182
  240. package/dist/core/db/schema.js.map +1 -1
  241. package/dist/core/index.d.ts +2 -0
  242. package/dist/core/index.d.ts.map +1 -1
  243. package/dist/core/index.js +14 -42
  244. package/dist/core/index.js.map +1 -1
  245. package/dist/core/server/index.js +16 -68
  246. package/dist/core/server/index.js.map +1 -1
  247. package/dist/core/types.js +1 -2
  248. package/dist/core/types.js.map +1 -1
  249. package/dist/core/utils.js +26 -51
  250. package/dist/core/utils.js.map +1 -1
  251. package/dist/emails/config.js +13 -21
  252. package/dist/emails/config.js.map +1 -1
  253. package/dist/emails/index.js +10 -72
  254. package/dist/emails/index.js.map +1 -1
  255. package/dist/emails/send/auth.js +26 -34
  256. package/dist/emails/send/auth.js.map +1 -1
  257. package/dist/emails/send/index.js +2 -21
  258. package/dist/emails/send/index.js.map +1 -1
  259. package/dist/emails/send/orders.js +38 -50
  260. package/dist/emails/send/orders.js.map +1 -1
  261. package/dist/emails/sender.js +7 -12
  262. package/dist/emails/sender.js.map +1 -1
  263. package/dist/emails/templates/base.js +37 -53
  264. package/dist/emails/templates/base.js.map +1 -1
  265. package/dist/emails/templates/email-verification.js +12 -16
  266. package/dist/emails/templates/email-verification.js.map +1 -1
  267. package/dist/emails/templates/index.js +9 -43
  268. package/dist/emails/templates/index.js.map +1 -1
  269. package/dist/emails/templates/order-cancelled.js +18 -22
  270. package/dist/emails/templates/order-cancelled.js.map +1 -1
  271. package/dist/emails/templates/order-confirmation.js +30 -34
  272. package/dist/emails/templates/order-confirmation.js.map +1 -1
  273. package/dist/emails/templates/order-delivered.js +20 -24
  274. package/dist/emails/templates/order-delivered.js.map +1 -1
  275. package/dist/emails/templates/order-shipped.js +19 -23
  276. package/dist/emails/templates/order-shipped.js.map +1 -1
  277. package/dist/emails/templates/password-reset.js +12 -16
  278. package/dist/emails/templates/password-reset.js.map +1 -1
  279. package/dist/emails/templates/refund-processed.js +17 -21
  280. package/dist/emails/templates/refund-processed.js.map +1 -1
  281. package/dist/emails/templates/welcome.js +11 -15
  282. package/dist/emails/templates/welcome.js.map +1 -1
  283. package/dist/emails/types.js +1 -2
  284. package/dist/emails/types.js.map +1 -1
  285. package/dist/emails/utils.js +9 -20
  286. package/dist/emails/utils.js.map +1 -1
  287. package/dist/index.js +24 -176
  288. package/dist/index.js.map +1 -1
  289. package/dist/products/api/categories.js +7 -10
  290. package/dist/products/api/categories.js.map +1 -1
  291. package/dist/products/api/index.js +3 -9
  292. package/dist/products/api/index.js.map +1 -1
  293. package/dist/products/api/product.js +10 -13
  294. package/dist/products/api/product.js.map +1 -1
  295. package/dist/products/api/products.js +8 -11
  296. package/dist/products/api/products.js.map +1 -1
  297. package/dist/products/components/CategoryNav.js +20 -26
  298. package/dist/products/components/CategoryNav.js.map +1 -1
  299. package/dist/products/components/ProductBreadcrumb.js +7 -13
  300. package/dist/products/components/ProductBreadcrumb.js.map +1 -1
  301. package/dist/products/components/ProductCard.js +6 -12
  302. package/dist/products/components/ProductCard.js.map +1 -1
  303. package/dist/products/components/ProductDetails.js +14 -17
  304. package/dist/products/components/ProductDetails.js.map +1 -1
  305. package/dist/products/components/ProductFilters.js +15 -18
  306. package/dist/products/components/ProductFilters.js.map +1 -1
  307. package/dist/products/components/ProductGallery.js +17 -23
  308. package/dist/products/components/ProductGallery.js.map +1 -1
  309. package/dist/products/components/ProductGrid.js +10 -13
  310. package/dist/products/components/ProductGrid.js.map +1 -1
  311. package/dist/products/components/ProductSearch.js +14 -17
  312. package/dist/products/components/ProductSearch.js.map +1 -1
  313. package/dist/products/components/ProductSort.js +8 -11
  314. package/dist/products/components/ProductSort.js.map +1 -1
  315. package/dist/products/components/VariantSelector.js +16 -19
  316. package/dist/products/components/VariantSelector.js.map +1 -1
  317. package/dist/products/components/index.js +10 -23
  318. package/dist/products/components/index.js.map +1 -1
  319. package/dist/products/hooks/index.js +4 -11
  320. package/dist/products/hooks/index.js.map +1 -1
  321. package/dist/products/hooks/useCategories.js +12 -15
  322. package/dist/products/hooks/useCategories.js.map +1 -1
  323. package/dist/products/hooks/useProduct.js +9 -12
  324. package/dist/products/hooks/useProduct.js.map +1 -1
  325. package/dist/products/hooks/useProductAttributes.js +10 -13
  326. package/dist/products/hooks/useProductAttributes.js.map +1 -1
  327. package/dist/products/hooks/useProducts.js +15 -18
  328. package/dist/products/hooks/useProducts.js.map +1 -1
  329. package/dist/products/index.js +6 -23
  330. package/dist/products/index.js.map +1 -1
  331. package/dist/theme/ThemeProvider.js +12 -14
  332. package/dist/theme/ThemeProvider.js.map +1 -1
  333. package/dist/theme/colors.js +3 -8
  334. package/dist/theme/colors.js.map +1 -1
  335. package/dist/theme/defaults.js +27 -30
  336. package/dist/theme/defaults.js.map +1 -1
  337. package/dist/theme/fonts.js +12 -18
  338. package/dist/theme/fonts.js.map +1 -1
  339. package/dist/theme/generator.js +63 -69
  340. package/dist/theme/generator.js.map +1 -1
  341. package/dist/theme/hooks.js +11 -16
  342. package/dist/theme/hooks.js.map +1 -1
  343. package/dist/theme/index.js +6 -42
  344. package/dist/theme/index.js.map +1 -1
  345. package/package.json +35 -30
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/admin/api/refund
4
3
  *
@@ -10,14 +9,12 @@
10
9
  * export { POST } from '@rovela/sdk/admin/api/refund'
11
10
  * ```
12
11
  */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.POST = POST;
15
- const server_1 = require("next/server");
16
- const next_auth_1 = require("next-auth");
17
- const config_1 = require("../../auth/config");
18
- const queries_1 = require("../../core/db/queries");
19
- const client_1 = require("../../checkout/stripe/client");
20
- const emails_1 = require("../../emails");
12
+ import { NextResponse } from 'next/server';
13
+ import { getServerSession } from 'next-auth';
14
+ import { createAuthOptions } from '../../auth/config';
15
+ import { findOrderById, updateOrderStatus } from '../../core/db/queries';
16
+ import { getStripe, getConnectedAccountId, hasConnectedAccount } from '../../checkout/stripe/client';
17
+ import { sendRefundProcessedAsync, formatPrice, formatOrderNumber } from '../../emails';
21
18
  // =============================================================================
22
19
  // Handler
23
20
  // =============================================================================
@@ -31,35 +28,35 @@ const emails_1 = require("../../emails");
31
28
  * - reason: string - Reason for refund (optional)
32
29
  * - notifyCustomer: boolean - Send notification email (default true)
33
30
  */
34
- async function POST(request, { params }) {
31
+ export async function POST(request, { params }) {
35
32
  // Auth check - require admin role
36
- const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
33
+ const session = await getServerSession(createAuthOptions());
37
34
  const user = session?.user;
38
35
  if (!user?.role || !['owner', 'admin'].includes(user.role)) {
39
- return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
36
+ return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
40
37
  }
41
38
  try {
42
39
  const { id } = await params;
43
40
  // Check Stripe is configured
44
- if (!(0, client_1.hasConnectedAccount)()) {
45
- return server_1.NextResponse.json({ error: 'Stripe is not configured for this store', code: 'INTERNAL_ERROR' }, { status: 500 });
41
+ if (!hasConnectedAccount()) {
42
+ return NextResponse.json({ error: 'Stripe is not configured for this store', code: 'INTERNAL_ERROR' }, { status: 500 });
46
43
  }
47
44
  const body = await request.json();
48
45
  // Get order
49
- const order = await (0, queries_1.findOrderById)(id);
46
+ const order = await findOrderById(id);
50
47
  if (!order) {
51
- return server_1.NextResponse.json({ error: 'Order not found', code: 'NOT_FOUND' }, { status: 404 });
48
+ return NextResponse.json({ error: 'Order not found', code: 'NOT_FOUND' }, { status: 404 });
52
49
  }
53
50
  // Check order has payment intent
54
51
  if (!order.stripePaymentIntentId) {
55
- return server_1.NextResponse.json({ error: 'Order has no payment to refund', code: 'VALIDATION_ERROR' }, { status: 400 });
52
+ return NextResponse.json({ error: 'Order has no payment to refund', code: 'VALIDATION_ERROR' }, { status: 400 });
56
53
  }
57
54
  // Check order is refundable
58
55
  if (order.status === 'refunded') {
59
- return server_1.NextResponse.json({ error: 'Order has already been refunded', code: 'VALIDATION_ERROR' }, { status: 400 });
56
+ return NextResponse.json({ error: 'Order has already been refunded', code: 'VALIDATION_ERROR' }, { status: 400 });
60
57
  }
61
58
  if (order.status === 'cancelled') {
62
- return server_1.NextResponse.json({ error: 'Cannot refund a cancelled order', code: 'VALIDATION_ERROR' }, { status: 400 });
59
+ return NextResponse.json({ error: 'Cannot refund a cancelled order', code: 'VALIDATION_ERROR' }, { status: 400 });
63
60
  }
64
61
  // Calculate refund amount
65
62
  const orderTotalCents = Math.round(parseFloat(order.total) * 100);
@@ -67,11 +64,11 @@ async function POST(request, { params }) {
67
64
  ? Math.min(body.amount, orderTotalCents)
68
65
  : orderTotalCents;
69
66
  if (refundAmount <= 0) {
70
- return server_1.NextResponse.json({ error: 'Invalid refund amount', code: 'VALIDATION_ERROR' }, { status: 400 });
67
+ return NextResponse.json({ error: 'Invalid refund amount', code: 'VALIDATION_ERROR' }, { status: 400 });
71
68
  }
72
69
  // Process refund via Stripe
73
- const stripe = (0, client_1.getStripe)();
74
- const connectedAccountId = (0, client_1.getConnectedAccountId)();
70
+ const stripe = getStripe();
71
+ const connectedAccountId = getConnectedAccountId();
75
72
  const refund = await stripe.refunds.create({
76
73
  payment_intent: order.stripePaymentIntentId,
77
74
  amount: refundAmount,
@@ -82,17 +79,17 @@ async function POST(request, { params }) {
82
79
  // Update order status if full refund
83
80
  const isFullRefund = refundAmount >= orderTotalCents;
84
81
  if (isFullRefund) {
85
- await (0, queries_1.updateOrderStatus)(id, 'refunded');
82
+ await updateOrderStatus(id, 'refunded');
86
83
  }
87
84
  // Send notification email
88
85
  const notifyCustomer = body.notifyCustomer !== false;
89
86
  if (notifyCustomer && order.email) {
90
87
  const customerName = order.email.split('@')[0];
91
- (0, emails_1.sendRefundProcessedAsync)({
88
+ sendRefundProcessedAsync({
92
89
  to: order.email,
93
90
  customerName,
94
- orderNumber: (0, emails_1.formatOrderNumber)(order.id),
95
- refundAmount: (0, emails_1.formatPrice)(refundAmount / 100),
91
+ orderNumber: formatOrderNumber(order.id),
92
+ refundAmount: formatPrice(refundAmount / 100),
96
93
  refundDate: new Date().toLocaleDateString(),
97
94
  paymentMethod: 'Original payment method',
98
95
  estimatedArrival: '5-10 business days',
@@ -100,7 +97,7 @@ async function POST(request, { params }) {
100
97
  });
101
98
  console.log('[Admin Refund] Refund email queued for:', order.email);
102
99
  }
103
- return server_1.NextResponse.json({
100
+ return NextResponse.json({
104
101
  success: true,
105
102
  refundId: refund.id,
106
103
  });
@@ -109,9 +106,9 @@ async function POST(request, { params }) {
109
106
  console.error('[Admin Refund API] POST error:', error);
110
107
  // Handle Stripe errors
111
108
  if (isStripeError(error)) {
112
- return server_1.NextResponse.json({ error: error.message, code: 'INTERNAL_ERROR' }, { status: 400 });
109
+ return NextResponse.json({ error: error.message, code: 'INTERNAL_ERROR' }, { status: 400 });
113
110
  }
114
- return server_1.NextResponse.json({ error: 'Failed to process refund', code: 'INTERNAL_ERROR' }, { status: 500 });
111
+ return NextResponse.json({ error: 'Failed to process refund', code: 'INTERNAL_ERROR' }, { status: 500 });
115
112
  }
116
113
  }
117
114
  // =============================================================================
@@ -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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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/admin/api/settings
4
3
  *
@@ -11,13 +10,10 @@
11
10
  * export { GET, PUT } from '@rovela/sdk/admin/api/settings'
12
11
  * ```
13
12
  */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.GET = GET;
16
- exports.PUT = PUT;
17
- const server_1 = require("next/server");
18
- const next_auth_1 = require("next-auth");
19
- const config_1 = require("../../auth/config");
20
- const queries_1 = require("../../core/db/queries");
13
+ import { NextResponse } from 'next/server';
14
+ import { getServerSession } from 'next-auth';
15
+ import { createAuthOptions } from '../../auth/config';
16
+ import { findSettings, upsertSettings } from '../../core/db/queries';
21
17
  // =============================================================================
22
18
  // Default Values
23
19
  // =============================================================================
@@ -51,26 +47,26 @@ function getDefaultSettings() {
51
47
  * Get store settings. If no settings exist in database, seeds from
52
48
  * blueprint and environment variables (lazy initialization).
53
49
  */
54
- async function GET() {
50
+ export async function GET() {
55
51
  try {
56
52
  // Auth check - require admin role
57
- const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
53
+ const session = await getServerSession(createAuthOptions());
58
54
  const user = session?.user;
59
55
  if (!user?.role || !['owner', 'admin'].includes(user.role)) {
60
- return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
56
+ return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
61
57
  }
62
58
  // Try to find existing settings
63
- let settings = await (0, queries_1.findSettings)();
59
+ let settings = await findSettings();
64
60
  // If no settings exist, seed from defaults (lazy initialization)
65
61
  if (!settings) {
66
62
  const defaults = getDefaultSettings();
67
- settings = await (0, queries_1.upsertSettings)(defaults);
63
+ settings = await upsertSettings(defaults);
68
64
  }
69
- return server_1.NextResponse.json({ settings });
65
+ return NextResponse.json({ settings });
70
66
  }
71
67
  catch (error) {
72
68
  console.error('[Admin Settings API] GET error:', error);
73
- return server_1.NextResponse.json({ error: 'Failed to fetch settings', code: 'INTERNAL_ERROR' }, { status: 500 });
69
+ return NextResponse.json({ error: 'Failed to fetch settings', code: 'INTERNAL_ERROR' }, { status: 500 });
74
70
  }
75
71
  }
76
72
  /**
@@ -92,13 +88,13 @@ async function GET() {
92
88
  * }
93
89
  * ```
94
90
  */
95
- async function PUT(request) {
91
+ export async function PUT(request) {
96
92
  try {
97
93
  // Auth check - require admin role
98
- const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
94
+ const session = await getServerSession(createAuthOptions());
99
95
  const user = session?.user;
100
96
  if (!user?.role || !['owner', 'admin'].includes(user.role)) {
101
- return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
97
+ return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
102
98
  }
103
99
  // Parse request body
104
100
  const body = await request.json();
@@ -129,12 +125,12 @@ async function PUT(request) {
129
125
  data.freeShippingThreshold = Math.max(0, body.freeShippingThreshold);
130
126
  }
131
127
  // Upsert settings
132
- const settings = await (0, queries_1.upsertSettings)(data);
133
- return server_1.NextResponse.json({ settings });
128
+ const settings = await upsertSettings(data);
129
+ return NextResponse.json({ settings });
134
130
  }
135
131
  catch (error) {
136
132
  console.error('[Admin Settings API] PUT error:', error);
137
- return server_1.NextResponse.json({ error: 'Failed to update settings', code: 'INTERNAL_ERROR' }, { status: 500 });
133
+ return NextResponse.json({ error: 'Failed to update settings', code: 'INTERNAL_ERROR' }, { status: 500 });
138
134
  }
139
135
  }
140
136
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,12 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/admin/api/setup
4
3
  *
5
4
  * Admin setup API route handler for first-time admin account creation.
6
5
  * This endpoint is only accessible when no admins exist for the tenant.
7
6
  */
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");
7
+ import { NextResponse } from 'next/server';
8
+ import { createAdmin, countAdmins, adminEmailExists } from '../server/admin-service';
9
+ import { validatePassword } from '../../auth/server/password';
13
10
  /**
14
11
  * Validate email format
15
12
  */
@@ -52,13 +49,13 @@ function isValidEmail(email) {
52
49
  * }
53
50
  * ```
54
51
  */
55
- async function POST(request) {
52
+ export async function POST(request) {
56
53
  try {
57
54
  // CRITICAL: Check if any admins exist
58
55
  // If admins exist, setup is disabled
59
- const adminCount = await (0, admin_service_1.countAdmins)();
56
+ const adminCount = await countAdmins();
60
57
  if (adminCount > 0) {
61
- return server_1.NextResponse.json({
58
+ return NextResponse.json({
62
59
  error: 'Admin setup has already been completed.',
63
60
  code: 'SETUP_DISABLED',
64
61
  }, { status: 403 });
@@ -67,45 +64,45 @@ async function POST(request) {
67
64
  const body = (await request.json());
68
65
  // Validate required fields
69
66
  if (!body.email || !body.password || !body.name) {
70
- return server_1.NextResponse.json({
67
+ return NextResponse.json({
71
68
  error: 'Email, password, and name are required.',
72
69
  code: 'VALIDATION_ERROR',
73
70
  }, { status: 400 });
74
71
  }
75
72
  // Validate email format
76
73
  if (!isValidEmail(body.email)) {
77
- return server_1.NextResponse.json({
74
+ return NextResponse.json({
78
75
  error: 'Please enter a valid email address.',
79
76
  code: 'VALIDATION_ERROR',
80
77
  }, { status: 400 });
81
78
  }
82
79
  // Validate name
83
80
  if (body.name.trim().length < 2) {
84
- return server_1.NextResponse.json({
81
+ return NextResponse.json({
85
82
  error: 'Name must be at least 2 characters.',
86
83
  code: 'VALIDATION_ERROR',
87
84
  }, { status: 400 });
88
85
  }
89
86
  // Validate password
90
- const passwordValidation = (0, password_1.validatePassword)(body.password);
87
+ const passwordValidation = validatePassword(body.password);
91
88
  if (!passwordValidation.valid) {
92
- return server_1.NextResponse.json({
89
+ return NextResponse.json({
93
90
  error: passwordValidation.error,
94
91
  code: 'VALIDATION_ERROR',
95
92
  }, { status: 400 });
96
93
  }
97
94
  // Check if email already exists (edge case: race condition)
98
- const emailExists = await (0, admin_service_1.adminEmailExists)(body.email);
95
+ const emailExists = await adminEmailExists(body.email);
99
96
  if (emailExists) {
100
- return server_1.NextResponse.json({
97
+ return NextResponse.json({
101
98
  error: 'An admin with this email already exists.',
102
99
  code: 'EMAIL_EXISTS',
103
100
  }, { status: 409 });
104
101
  }
105
102
  // 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');
103
+ const { admin } = await createAdmin(body.email, body.password, body.name.trim(), 'owner');
107
104
  console.log(`[Admin Setup] First admin created: ${admin.email} (owner)`);
108
- return server_1.NextResponse.json({
105
+ return NextResponse.json({
109
106
  success: true,
110
107
  message: 'Admin account created successfully.',
111
108
  adminId: admin.id,
@@ -115,12 +112,12 @@ async function POST(request) {
115
112
  console.error('[Admin Setup] Error:', error);
116
113
  // Handle duplicate email (database constraint)
117
114
  if (error instanceof Error && error.message.includes('already exists')) {
118
- return server_1.NextResponse.json({
115
+ return NextResponse.json({
119
116
  error: 'An admin with this email already exists.',
120
117
  code: 'EMAIL_EXISTS',
121
118
  }, { status: 409 });
122
119
  }
123
- return server_1.NextResponse.json({
120
+ return NextResponse.json({
124
121
  error: 'Failed to create admin account. Please try again.',
125
122
  code: 'SERVER_ERROR',
126
123
  }, { status: 500 });
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/admin/api/setup.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA2EH,oBAqHC;AA9LD,wCAA0C;AAC1C,2DAAoF;AACpF,yDAA6D;AA4B7D;;GAEG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,UAAU,GAAG,4BAA4B,CAAA;IAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACI,KAAK,UAAU,IAAI,CACxB,OAAgB;IAEhB,IAAI,CAAC;QACH,sCAAsC;QACtC,qCAAqC;QACrC,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAW,GAAE,CAAA;QACtC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,yCAAyC;gBAChD,IAAI,EAAE,gBAAgB;aACvB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAsB,CAAA;QAExD,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,yCAAyC;gBAChD,IAAI,EAAE,kBAAkB;aACzB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,qCAAqC;gBAC5C,IAAI,EAAE,kBAAkB;aACzB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,qCAAqC;gBAC5C,IAAI,EAAE,kBAAkB;aACzB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,kBAAkB,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC1D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC9B,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,kBAAkB,CAAC,KAAM;gBAChC,IAAI,EAAE,kBAAkB;aACzB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,4DAA4D;QAC5D,MAAM,WAAW,GAAG,MAAM,IAAA,gCAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,0CAA0C;gBACjD,IAAI,EAAE,cAAc;aACrB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,4DAA4D;QAC5D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,2BAAW,EACjC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAChB,OAAO,CACR,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,CAAC,KAAK,UAAU,CAAC,CAAA;QAExE,OAAO,qBAAY,CAAC,IAAI,CACtB;YACE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,KAAK,CAAC,EAAE;SAClB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAE5C,+CAA+C;QAC/C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvE,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,0CAA0C;gBACjD,IAAI,EAAE,cAAc;aACrB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,OAAO,qBAAY,CAAC,IAAI,CACtB;YACE,KAAK,EAAE,mDAAmD;YAC1D,IAAI,EAAE,cAAc;SACrB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/admin/api/setup.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/admin/api/stats
4
3
  *
@@ -10,12 +9,10 @@
10
9
  * export { GET } from '@rovela/sdk/admin/api/stats'
11
10
  * ```
12
11
  */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.GET = GET;
15
- const server_1 = require("next/server");
16
- const next_auth_1 = require("next-auth");
17
- const config_1 = require("../../auth/config");
18
- const queries_1 = require("../../core/db/queries");
12
+ import { NextResponse } from 'next/server';
13
+ import { getServerSession } from 'next-auth';
14
+ import { createAuthOptions } from '../../auth/config';
15
+ import { getStoreStats, getLowStockProducts, getRecentOrders, getRevenueByPeriod, getOrdersByStatus, } from '../../core/db/queries';
19
16
  // =============================================================================
20
17
  // Handler
21
18
  // =============================================================================
@@ -30,13 +27,13 @@ const queries_1 = require("../../core/db/queries");
30
27
  * - lowStockThreshold: number - Threshold for low stock (default 10)
31
28
  * - recentOrdersLimit: number - Number of recent orders (default 5)
32
29
  */
33
- async function GET(request) {
30
+ export async function GET(request) {
34
31
  try {
35
32
  // Auth check - require admin role
36
- const session = await (0, next_auth_1.getServerSession)((0, config_1.createAuthOptions)());
33
+ const session = await getServerSession(createAuthOptions());
37
34
  const user = session?.user;
38
35
  if (!user?.role || !['owner', 'admin'].includes(user.role)) {
39
- return server_1.NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
36
+ return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
40
37
  }
41
38
  const searchParams = request.nextUrl.searchParams;
42
39
  // Parse options
@@ -46,9 +43,9 @@ async function GET(request) {
46
43
  const recentOrdersLimit = parseInt(searchParams.get('recentOrdersLimit') || '5', 10);
47
44
  // Fetch core stats in parallel
48
45
  const [stats, lowStockData, recentOrders] = await Promise.all([
49
- (0, queries_1.getStoreStats)(),
50
- (0, queries_1.getLowStockProducts)(lowStockThreshold),
51
- (0, queries_1.getRecentOrders)(recentOrdersLimit),
46
+ getStoreStats(),
47
+ getLowStockProducts(lowStockThreshold),
48
+ getRecentOrders(recentOrdersLimit),
52
49
  ]);
53
50
  // Transform low stock data
54
51
  const lowStock = lowStockData.map((item) => ({
@@ -66,17 +63,17 @@ async function GET(request) {
66
63
  };
67
64
  // Optionally include revenue data
68
65
  if (includeRevenue) {
69
- response.revenueByDay = await (0, queries_1.getRevenueByPeriod)(30);
66
+ response.revenueByDay = await getRevenueByPeriod(30);
70
67
  }
71
68
  // Optionally include order status breakdown
72
69
  if (includeOrderStatus) {
73
- response.ordersByStatus = await (0, queries_1.getOrdersByStatus)();
70
+ response.ordersByStatus = await getOrdersByStatus();
74
71
  }
75
- return server_1.NextResponse.json(response);
72
+ return NextResponse.json(response);
76
73
  }
77
74
  catch (error) {
78
75
  console.error('[Admin Stats API] GET error:', error);
79
- return server_1.NextResponse.json({ error: 'Failed to fetch dashboard stats', code: 'INTERNAL_ERROR' }, { status: 500 });
76
+ return NextResponse.json({ error: 'Failed to fetch dashboard stats', code: 'INTERNAL_ERROR' }, { status: 500 });
80
77
  }
81
78
  }
82
79
  //# sourceMappingURL=stats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/admin/api/stats.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,12 @@
1
- "use strict";
2
1
  'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AdminGuard = AdminGuard;
5
- exports.withAdminAuth = withAdminAuth;
6
- const jsx_runtime_1 = require("react/jsx-runtime");
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
3
  /**
8
4
  * @rovela/sdk/admin/components/AdminGuard
9
5
  *
10
6
  * Route protection component for admin routes.
11
7
  */
12
- const react_1 = require("react");
13
- const useAdminAuth_1 = require("../hooks/useAdminAuth");
8
+ import { useEffect } from 'react';
9
+ import { useAdminAuth } from '../hooks/useAdminAuth';
14
10
  /**
15
11
  * Guard component that protects routes requiring admin authentication.
16
12
  *
@@ -32,10 +28,10 @@ const useAdminAuth_1 = require("../hooks/useAdminAuth");
32
28
  * </AdminGuard>
33
29
  * ```
34
30
  */
35
- function AdminGuard({ children, fallback, redirectTo = '/admin/login', requireOwner = false, loadingComponent, }) {
36
- const { isAuthenticated, isLoading, isOwner } = (0, useAdminAuth_1.useAdminAuth)();
31
+ export function AdminGuard({ children, fallback, redirectTo = '/admin/login', requireOwner = false, loadingComponent, }) {
32
+ const { isAuthenticated, isLoading, isOwner } = useAdminAuth();
37
33
  // Handle redirect when not authenticated
38
- (0, react_1.useEffect)(() => {
34
+ useEffect(() => {
39
35
  if (isLoading)
40
36
  return;
41
37
  // Not authenticated - redirect to login
@@ -53,26 +49,26 @@ function AdminGuard({ children, fallback, redirectTo = '/admin/login', requireOw
53
49
  // Loading state
54
50
  if (isLoading) {
55
51
  if (loadingComponent) {
56
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: loadingComponent });
52
+ return _jsx(_Fragment, { children: loadingComponent });
57
53
  }
58
- return ((0, jsx_runtime_1.jsx)("div", { className: "flex min-h-screen items-center justify-center bg-background", children: (0, jsx_runtime_1.jsxs)("div", { className: "text-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "mx-auto h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }), (0, jsx_runtime_1.jsx)("p", { className: "mt-4 text-sm text-muted-foreground", children: "Loading..." })] }) }));
54
+ return (_jsx("div", { className: "flex min-h-screen items-center justify-center bg-background", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "mx-auto h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent" }), _jsx("p", { className: "mt-4 text-sm text-muted-foreground", children: "Loading..." })] }) }));
59
55
  }
60
56
  // Not authenticated
61
57
  if (!isAuthenticated) {
62
58
  if (fallback) {
63
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback });
59
+ return _jsx(_Fragment, { children: fallback });
64
60
  }
65
61
  return null;
66
62
  }
67
63
  // Owner required but not owner
68
64
  if (requireOwner && !isOwner) {
69
65
  if (fallback) {
70
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback });
66
+ return _jsx(_Fragment, { children: fallback });
71
67
  }
72
68
  return null;
73
69
  }
74
70
  // Authenticated (and owner if required) - render children
75
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
71
+ return _jsx(_Fragment, { children: children });
76
72
  }
77
73
  /**
78
74
  * HOC version of AdminGuard.
@@ -86,9 +82,9 @@ function AdminGuard({ children, fallback, redirectTo = '/admin/login', requireOw
86
82
  * export default withAdminAuth(SettingsPage, { requireOwner: true })
87
83
  * ```
88
84
  */
89
- function withAdminAuth(Component, options = {}) {
85
+ export function withAdminAuth(Component, options = {}) {
90
86
  function WrappedComponent(props) {
91
- return ((0, jsx_runtime_1.jsx)(AdminGuard, { ...options, children: (0, jsx_runtime_1.jsx)(Component, { ...props }) }));
87
+ return (_jsx(AdminGuard, { ...options, children: _jsx(Component, { ...props }) }));
92
88
  }
93
89
  const displayName = Component.displayName || Component.name || 'Component';
94
90
  WrappedComponent.displayName = `withAdminAuth(${displayName})`;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminGuard.js","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;AAiCZ,gCA6DC;AAcD,sCAgBC;;AA1HD;;;;GAIG;AAEH,iCAAiC;AACjC,wDAAoD;AAGpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,cAAc,EAC3B,YAAY,GAAG,KAAK,EACpB,gBAAgB,GACA;IAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAA,2BAAY,GAAE,CAAA;IAE9D,yCAAyC;IACzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,OAAM;QAErB,wCAAwC;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,UAAU,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAA;YAClC,OAAM;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;IAEnE,gBAAgB;IAChB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,2DAAG,gBAAgB,GAAI,CAAA;QAChC,CAAC;QAED,OAAO,CACL,gCAAK,SAAS,EAAC,6DAA6D,YAC1E,iCAAK,SAAS,EAAC,aAAa,aAC1B,gCAAK,SAAS,EAAC,wFAAwF,GAAG,EAC1G,8BAAG,SAAS,EAAC,oCAAoC,2BAAe,IAC5D,GACF,CACP,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,2DAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+BAA+B;IAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,2DAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0DAA0D;IAC1D,OAAO,2DAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,aAAa,CAC3B,SAAiC,EACjC,UAA6C,EAAE;IAE/C,SAAS,gBAAgB,CAAC,KAAQ;QAChC,OAAO,CACL,uBAAC,UAAU,OAAK,OAAO,YACrB,uBAAC,SAAS,OAAK,KAAK,GAAI,GACb,CACd,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAA;IAC1E,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,WAAW,GAAG,CAAA;IAE9D,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"AdminGuard.js","sourceRoot":"","sources":["../../../src/admin/components/AdminGuard.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,cAAc,EAC3B,YAAY,GAAG,KAAK,EACpB,gBAAgB,GACA;IAChB,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAA;IAE9D,yCAAyC;IACzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS;YAAE,OAAM;QAErB,wCAAwC;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA;YACrE,MAAM,WAAW,GAAG,GAAG,UAAU,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAA;YAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAA;YAClC,OAAM;QACR,CAAC;QAED,+BAA+B;QAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;IAEnE,gBAAgB;IAChB,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,4BAAG,gBAAgB,GAAI,CAAA;QAChC,CAAC;QAED,OAAO,CACL,cAAK,SAAS,EAAC,6DAA6D,YAC1E,eAAK,SAAS,EAAC,aAAa,aAC1B,cAAK,SAAS,EAAC,wFAAwF,GAAG,EAC1G,YAAG,SAAS,EAAC,oCAAoC,2BAAe,IAC5D,GACF,CACP,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,4BAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+BAA+B;IAC/B,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,4BAAG,QAAQ,GAAI,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0DAA0D;IAC1D,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAiC,EACjC,UAA6C,EAAE;IAE/C,SAAS,gBAAgB,CAAC,KAAQ;QAChC,OAAO,CACL,KAAC,UAAU,OAAK,OAAO,YACrB,KAAC,SAAS,OAAK,KAAK,GAAI,GACb,CACd,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAA;IAC1E,gBAAgB,CAAC,WAAW,GAAG,iBAAiB,WAAW,GAAG,CAAA;IAE9D,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
@@ -1,15 +1,12 @@
1
- "use strict";
2
1
  'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AdminHeader = AdminHeader;
5
- const jsx_runtime_1 = require("react/jsx-runtime");
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
6
3
  /**
7
4
  * @rovela/sdk/admin/components/AdminHeader
8
5
  *
9
6
  * Admin top header with user menu.
10
7
  */
11
- const react_1 = require("react");
12
- const useAdminAuth_1 = require("../hooks/useAdminAuth");
8
+ import { useState, useCallback } from 'react';
9
+ import { useAdminAuth } from '../hooks/useAdminAuth';
13
10
  // =============================================================================
14
11
  // Component
15
12
  // =============================================================================
@@ -21,13 +18,13 @@ const useAdminAuth_1 = require("../hooks/useAdminAuth");
21
18
  * <AdminHeader title="Dashboard" storeUrl="https://mystore.com" />
22
19
  * ```
23
20
  */
24
- function AdminHeader({ title, storeUrl = '/', className = '', }) {
25
- const { admin, signOut } = (0, useAdminAuth_1.useAdminAuth)();
26
- const [isMenuOpen, setIsMenuOpen] = (0, react_1.useState)(false);
27
- const handleSignOut = (0, react_1.useCallback)(async () => {
21
+ export function AdminHeader({ title, storeUrl = '/', className = '', }) {
22
+ const { admin, signOut } = useAdminAuth();
23
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
24
+ const handleSignOut = useCallback(async () => {
28
25
  await signOut();
29
26
  window.location.href = '/admin/login';
30
27
  }, [signOut]);
31
- return ((0, jsx_runtime_1.jsxs)("header", { className: `flex h-16 items-center justify-between border-b border-border bg-card px-6 ${className}`, children: [(0, jsx_runtime_1.jsx)("div", { children: title && ((0, jsx_runtime_1.jsx)("h1", { className: "text-xl font-semibold text-foreground", children: title })) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-4", children: [(0, jsx_runtime_1.jsxs)("a", { href: storeUrl, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground", children: [(0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) }), "View Store"] }), (0, jsx_runtime_1.jsxs)("div", { className: "relative", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setIsMenuOpen(!isMenuOpen), className: "flex items-center gap-2 rounded-md px-3 py-2 text-sm hover:bg-accent", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground", children: admin?.name?.charAt(0).toUpperCase() || 'A' }), (0, jsx_runtime_1.jsx)("span", { className: "hidden text-foreground md:block", children: admin?.name || 'Admin' }), (0, jsx_runtime_1.jsx)("svg", { className: `h-4 w-4 text-muted-foreground transition-transform ${isMenuOpen ? 'rotate-180' : ''}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), isMenuOpen && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-10", onClick: () => setIsMenuOpen(false) }), (0, jsx_runtime_1.jsxs)("div", { className: "absolute right-0 z-20 mt-2 w-48 rounded-md border border-border bg-card py-1 shadow-lg", children: [(0, jsx_runtime_1.jsxs)("div", { className: "border-b border-border px-4 py-2", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-foreground", children: admin?.name }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-muted-foreground", children: admin?.email }), admin?.role === 'owner' && ((0, jsx_runtime_1.jsx)("span", { className: "mt-1 inline-block rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary", children: "Owner" }))] }), (0, jsx_runtime_1.jsx)("a", { href: "/admin/settings", className: "block px-4 py-2 text-sm text-foreground hover:bg-accent", onClick: () => setIsMenuOpen(false), children: "Settings" }), (0, jsx_runtime_1.jsx)("button", { onClick: handleSignOut, className: "block w-full px-4 py-2 text-left text-sm text-destructive hover:bg-accent", children: "Sign Out" })] })] }))] })] })] }));
28
+ return (_jsxs("header", { className: `flex h-16 items-center justify-between border-b border-border bg-card px-6 ${className}`, children: [_jsx("div", { children: title && (_jsx("h1", { className: "text-xl font-semibold text-foreground", children: title })) }), _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("a", { href: storeUrl, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground", children: [_jsx("svg", { className: "h-4 w-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" }) }), "View Store"] }), _jsxs("div", { className: "relative", children: [_jsxs("button", { onClick: () => setIsMenuOpen(!isMenuOpen), className: "flex items-center gap-2 rounded-md px-3 py-2 text-sm hover:bg-accent", children: [_jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground", children: admin?.name?.charAt(0).toUpperCase() || 'A' }), _jsx("span", { className: "hidden text-foreground md:block", children: admin?.name || 'Admin' }), _jsx("svg", { className: `h-4 w-4 text-muted-foreground transition-transform ${isMenuOpen ? 'rotate-180' : ''}`, fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), isMenuOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-10", onClick: () => setIsMenuOpen(false) }), _jsxs("div", { className: "absolute right-0 z-20 mt-2 w-48 rounded-md border border-border bg-card py-1 shadow-lg", children: [_jsxs("div", { className: "border-b border-border px-4 py-2", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: admin?.name }), _jsx("p", { className: "text-xs text-muted-foreground", children: admin?.email }), admin?.role === 'owner' && (_jsx("span", { className: "mt-1 inline-block rounded-full bg-primary/10 px-2 py-0.5 text-xs text-primary", children: "Owner" }))] }), _jsx("a", { href: "/admin/settings", className: "block px-4 py-2 text-sm text-foreground hover:bg-accent", onClick: () => setIsMenuOpen(false), children: "Settings" }), _jsx("button", { onClick: handleSignOut, className: "block w-full px-4 py-2 text-left text-sm text-destructive hover:bg-accent", children: "Sign Out" })] })] }))] })] })] }));
32
29
  }
33
30
  //# sourceMappingURL=AdminHeader.js.map