@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,19 +1,10 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/auth/server/password
4
3
  *
5
4
  * Password hashing and verification utilities.
6
5
  * Uses bcryptjs with 12 salt rounds for security.
7
6
  */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.MIN_PASSWORD_LENGTH = void 0;
13
- exports.hashPassword = hashPassword;
14
- exports.verifyPassword = verifyPassword;
15
- exports.validatePassword = validatePassword;
16
- const bcryptjs_1 = __importDefault(require("bcryptjs"));
7
+ import bcrypt from 'bcryptjs';
17
8
  // =============================================================================
18
9
  // Constants
19
10
  // =============================================================================
@@ -25,7 +16,7 @@ const SALT_ROUNDS = 12;
25
16
  /**
26
17
  * Minimum password length required.
27
18
  */
28
- exports.MIN_PASSWORD_LENGTH = 8;
19
+ export const MIN_PASSWORD_LENGTH = 8;
29
20
  // =============================================================================
30
21
  // Password Hashing
31
22
  // =============================================================================
@@ -41,8 +32,8 @@ exports.MIN_PASSWORD_LENGTH = 8;
41
32
  * // Store hash in database
42
33
  * ```
43
34
  */
44
- async function hashPassword(password) {
45
- return bcryptjs_1.default.hash(password, SALT_ROUNDS);
35
+ export async function hashPassword(password) {
36
+ return bcrypt.hash(password, SALT_ROUNDS);
46
37
  }
47
38
  /**
48
39
  * Verify a password against a hash.
@@ -59,8 +50,8 @@ async function hashPassword(password) {
59
50
  * }
60
51
  * ```
61
52
  */
62
- async function verifyPassword(password, hashedPassword) {
63
- return bcryptjs_1.default.compare(password, hashedPassword);
53
+ export async function verifyPassword(password, hashedPassword) {
54
+ return bcrypt.compare(password, hashedPassword);
64
55
  }
65
56
  // =============================================================================
66
57
  // Password Validation
@@ -79,14 +70,14 @@ async function verifyPassword(password, hashedPassword) {
79
70
  * }
80
71
  * ```
81
72
  */
82
- function validatePassword(password) {
73
+ export function validatePassword(password) {
83
74
  if (!password) {
84
75
  return { valid: false, error: 'Password is required' };
85
76
  }
86
- if (password.length < exports.MIN_PASSWORD_LENGTH) {
77
+ if (password.length < MIN_PASSWORD_LENGTH) {
87
78
  return {
88
79
  valid: false,
89
- error: `Password must be at least ${exports.MIN_PASSWORD_LENGTH} characters`,
80
+ error: `Password must be at least ${MIN_PASSWORD_LENGTH} characters`,
90
81
  };
91
82
  }
92
83
  return { valid: true };
@@ -1 +1 @@
1
- {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/auth/server/password.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAmCH,oCAEC;AAiBD,wCAKC;AAoBD,4CAgBC;AA7FD,wDAA6B;AAE7B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,CAAA;AAEpC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,kBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,cAAsB;IAEtB,OAAO,kBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;AACjD,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAI/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,2BAAmB,EAAE,CAAC;QAC1C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,6BAA6B,2BAAmB,aAAa;SACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/auth/server/password.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,cAAsB;IAEtB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;AACjD,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAI/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAC1C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,6BAA6B,mBAAmB,aAAa;SACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
@@ -1,56 +1,15 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/auth/server/verification-service
4
3
  *
5
4
  * Email verification token management.
6
5
  * Handles creating, validating, and cleaning up verification tokens.
7
6
  */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.createVerificationToken = createVerificationToken;
43
- exports.verifyEmail = verifyEmail;
44
- exports.deleteVerificationTokens = deleteVerificationTokens;
45
- exports.resendVerificationEmail = resendVerificationEmail;
46
- exports.isEmailVerified = isEmailVerified;
47
- exports.cleanupExpiredTokens = cleanupExpiredTokens;
48
- const drizzle_orm_1 = require("drizzle-orm");
49
- const nanoid_1 = require("nanoid");
50
- const client_1 = require("../../core/db/client");
51
- const schema = __importStar(require("../../core/db/schema"));
52
- const customer_service_1 = require("./customer-service");
53
- const email_sender_1 = require("./email-sender");
7
+ import { eq, and, lt } from 'drizzle-orm';
8
+ import { nanoid } from 'nanoid';
9
+ import { getDb, getTenantId } from '../../core/db/client';
10
+ import * as schema from '../../core/db/schema';
11
+ import { findCustomerByEmail, markEmailVerified } from './customer-service';
12
+ import { sendVerificationEmail, sendWelcomeEmail, getStoreName } from './email-sender';
54
13
  // =============================================================================
55
14
  // Constants
56
15
  // =============================================================================
@@ -78,13 +37,13 @@ const TOKEN_LENGTH = 32;
78
37
  * // Use token in verification email link
79
38
  * ```
80
39
  */
81
- async function createVerificationToken(customerId) {
82
- const db = (0, client_1.getDb)();
83
- const tenantId = (0, client_1.getTenantId)();
40
+ export async function createVerificationToken(customerId) {
41
+ const db = getDb();
42
+ const tenantId = getTenantId();
84
43
  // Delete any existing tokens for this customer
85
44
  await deleteVerificationTokens(customerId);
86
45
  // Generate new token
87
- const token = (0, nanoid_1.nanoid)(TOKEN_LENGTH);
46
+ const token = nanoid(TOKEN_LENGTH);
88
47
  const expires = new Date(Date.now() + TOKEN_EXPIRY_MS);
89
48
  await db.insert(schema.customerVerificationTokens).values({
90
49
  tenantId,
@@ -111,13 +70,13 @@ async function createVerificationToken(customerId) {
111
70
  * }
112
71
  * ```
113
72
  */
114
- async function verifyEmail(token) {
115
- const db = (0, client_1.getDb)();
73
+ export async function verifyEmail(token) {
74
+ const db = getDb();
116
75
  // Find the token (not tenant-scoped since we only have the token)
117
76
  const [tokenRecord] = await db
118
77
  .select()
119
78
  .from(schema.customerVerificationTokens)
120
- .where((0, drizzle_orm_1.eq)(schema.customerVerificationTokens.token, token))
79
+ .where(eq(schema.customerVerificationTokens.token, token))
121
80
  .limit(1);
122
81
  if (!tokenRecord) {
123
82
  return {
@@ -130,18 +89,18 @@ async function verifyEmail(token) {
130
89
  // Clean up expired token
131
90
  await db
132
91
  .delete(schema.customerVerificationTokens)
133
- .where((0, drizzle_orm_1.eq)(schema.customerVerificationTokens.id, tokenRecord.id));
92
+ .where(eq(schema.customerVerificationTokens.id, tokenRecord.id));
134
93
  return {
135
94
  success: false,
136
95
  error: 'Verification link has expired. Please request a new one.',
137
96
  };
138
97
  }
139
98
  // Mark customer email as verified
140
- await (0, customer_service_1.markEmailVerified)(tokenRecord.customerId);
99
+ await markEmailVerified(tokenRecord.customerId);
141
100
  // Delete the used token and any other tokens for this customer
142
101
  await db
143
102
  .delete(schema.customerVerificationTokens)
144
- .where((0, drizzle_orm_1.eq)(schema.customerVerificationTokens.customerId, tokenRecord.customerId));
103
+ .where(eq(schema.customerVerificationTokens.customerId, tokenRecord.customerId));
145
104
  // Send welcome email (non-blocking)
146
105
  sendWelcomeEmailAsync(tokenRecord.customerId);
147
106
  return {
@@ -159,12 +118,12 @@ async function verifyEmail(token) {
159
118
  * await deleteVerificationTokens(customerId)
160
119
  * ```
161
120
  */
162
- async function deleteVerificationTokens(customerId) {
163
- const db = (0, client_1.getDb)();
164
- const tenantId = (0, client_1.getTenantId)();
121
+ export async function deleteVerificationTokens(customerId) {
122
+ const db = getDb();
123
+ const tenantId = getTenantId();
165
124
  await db
166
125
  .delete(schema.customerVerificationTokens)
167
- .where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema.customerVerificationTokens.tenantId, tenantId), (0, drizzle_orm_1.eq)(schema.customerVerificationTokens.customerId, customerId)));
126
+ .where(and(eq(schema.customerVerificationTokens.tenantId, tenantId), eq(schema.customerVerificationTokens.customerId, customerId)));
168
127
  }
169
128
  /**
170
129
  * Resend verification email to a customer.
@@ -181,9 +140,9 @@ async function deleteVerificationTokens(customerId) {
181
140
  * }
182
141
  * ```
183
142
  */
184
- async function resendVerificationEmail(email) {
143
+ export async function resendVerificationEmail(email) {
185
144
  // Find customer by email
186
- const customer = await (0, customer_service_1.findCustomerByEmail)(email);
145
+ const customer = await findCustomerByEmail(email);
187
146
  if (!customer) {
188
147
  // Don't reveal if email exists - return success anyway
189
148
  return { success: true };
@@ -198,9 +157,9 @@ async function resendVerificationEmail(email) {
198
157
  // Create new verification token
199
158
  const token = await createVerificationToken(customer.id);
200
159
  // Send verification email
201
- const storeName = await (0, email_sender_1.getStoreName)();
160
+ const storeName = await getStoreName();
202
161
  try {
203
- await (0, email_sender_1.sendVerificationEmail)(email, token, storeName);
162
+ await sendVerificationEmail(email, token, storeName);
204
163
  return { success: true };
205
164
  }
206
165
  catch {
@@ -216,13 +175,13 @@ async function resendVerificationEmail(email) {
216
175
  * @param customerId - Customer UUID
217
176
  * @returns True if email is verified
218
177
  */
219
- async function isEmailVerified(customerId) {
220
- const db = (0, client_1.getDb)();
221
- const tenantId = (0, client_1.getTenantId)();
178
+ export async function isEmailVerified(customerId) {
179
+ const db = getDb();
180
+ const tenantId = getTenantId();
222
181
  const [customer] = await db
223
182
  .select({ emailVerified: schema.customers.emailVerified })
224
183
  .from(schema.customers)
225
- .where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema.customers.tenantId, tenantId), (0, drizzle_orm_1.eq)(schema.customers.id, customerId)))
184
+ .where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)))
226
185
  .limit(1);
227
186
  return !!customer?.emailVerified;
228
187
  }
@@ -232,11 +191,11 @@ async function isEmailVerified(customerId) {
232
191
  *
233
192
  * @returns Number of tokens deleted
234
193
  */
235
- async function cleanupExpiredTokens() {
236
- const db = (0, client_1.getDb)();
194
+ export async function cleanupExpiredTokens() {
195
+ const db = getDb();
237
196
  const result = await db
238
197
  .delete(schema.customerVerificationTokens)
239
- .where((0, drizzle_orm_1.lt)(schema.customerVerificationTokens.expires, new Date()))
198
+ .where(lt(schema.customerVerificationTokens.expires, new Date()))
240
199
  .returning({ id: schema.customerVerificationTokens.id });
241
200
  return result.length;
242
201
  }
@@ -249,15 +208,15 @@ async function cleanupExpiredTokens() {
249
208
  */
250
209
  async function sendWelcomeEmailAsync(customerId) {
251
210
  try {
252
- const db = (0, client_1.getDb)();
211
+ const db = getDb();
253
212
  const [customer] = await db
254
213
  .select({ email: schema.customers.email, name: schema.customers.name })
255
214
  .from(schema.customers)
256
- .where((0, drizzle_orm_1.eq)(schema.customers.id, customerId))
215
+ .where(eq(schema.customers.id, customerId))
257
216
  .limit(1);
258
217
  if (customer) {
259
- const storeName = await (0, email_sender_1.getStoreName)();
260
- await (0, email_sender_1.sendWelcomeEmail)(customer.email, customer.name, storeName);
218
+ const storeName = await getStoreName();
219
+ await sendWelcomeEmail(customer.email, customer.name, storeName);
261
220
  }
262
221
  }
263
222
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"verification-service.js","sourceRoot":"","sources":["../../../src/auth/server/verification-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-service.js","sourceRoot":"","sources":["../../../src/auth/server/verification-service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- "use strict";
2
1
  /**
3
2
  * @rovela/sdk/auth/types
4
3
  *
5
4
  * Type definitions for customer authentication.
6
5
  */
7
- Object.defineProperty(exports, "__esModule", { value: true });
6
+ export {};
8
7
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,17 +1,13 @@
1
- "use strict";
2
1
  'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.CartProvider = CartProvider;
5
- exports.useCartHydrated = useCartHydrated;
6
- const jsx_runtime_1 = require("react/jsx-runtime");
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
7
3
  /**
8
4
  * @rovela/sdk/cart/CartProvider
9
5
  *
10
6
  * Optional provider for SSR-safe cart hydration.
11
7
  * Ensures cart state is properly hydrated from localStorage after mount.
12
8
  */
13
- const react_1 = require("react");
14
- const store_1 = require("./store");
9
+ import { useEffect, useState } from 'react';
10
+ import { hydrateCart, isCartHydrated } from './store';
15
11
  // =============================================================================
16
12
  // Component
17
13
  // =============================================================================
@@ -40,23 +36,23 @@ const store_1 = require("./store");
40
36
  * }
41
37
  * ```
42
38
  */
43
- function CartProvider({ children, onHydrated }) {
44
- const [hydrated, setHydrated] = (0, react_1.useState)(false);
45
- (0, react_1.useEffect)(() => {
39
+ export function CartProvider({ children, onHydrated }) {
40
+ const [hydrated, setHydrated] = useState(false);
41
+ useEffect(() => {
46
42
  // Check if already hydrated (e.g., from a previous mount)
47
- if ((0, store_1.isCartHydrated)()) {
43
+ if (isCartHydrated()) {
48
44
  setHydrated(true);
49
45
  onHydrated?.();
50
46
  return;
51
47
  }
52
48
  // Hydrate from localStorage
53
- (0, store_1.hydrateCart)();
49
+ hydrateCart();
54
50
  setHydrated(true);
55
51
  onHydrated?.();
56
52
  }, [onHydrated]);
57
53
  // Render children immediately - cart hooks will return empty state
58
54
  // until hydration completes, preventing SSR mismatch
59
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
55
+ return _jsx(_Fragment, { children: children });
60
56
  }
61
57
  // =============================================================================
62
58
  // Hook
@@ -81,12 +77,12 @@ function CartProvider({ children, onHydrated }) {
81
77
  * }
82
78
  * ```
83
79
  */
84
- function useCartHydrated() {
85
- const [hydrated, setHydrated] = (0, react_1.useState)(false);
86
- (0, react_1.useEffect)(() => {
80
+ export function useCartHydrated() {
81
+ const [hydrated, setHydrated] = useState(false);
82
+ useEffect(() => {
87
83
  // Check hydration status on mount
88
84
  const checkHydration = () => {
89
- if ((0, store_1.isCartHydrated)()) {
85
+ if (isCartHydrated()) {
90
86
  setHydrated(true);
91
87
  }
92
88
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CartProvider.js","sourceRoot":"","sources":["../../src/cart/CartProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;AAwDZ,oCAoBC;AA0BD,0CAqBC;;AAzHD;;;;;GAKG;AAEH,iCAA2D;AAC3D,mCAAqD;AAiBrD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAqB;IACtE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAE/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,0DAA0D;QAC1D,IAAI,IAAA,sBAAc,GAAE,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,UAAU,EAAE,EAAE,CAAA;YACd,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,IAAA,mBAAW,GAAE,CAAA;QACb,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,UAAU,EAAE,EAAE,CAAA;IAChB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,mEAAmE;IACnE,qDAAqD;IACrD,OAAO,2DAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,eAAe;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAE/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAA,sBAAc,GAAE,EAAE,CAAC;gBACrB,WAAW,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;QACH,CAAC,CAAA;QAED,gBAAgB;QAChB,cAAc,EAAE,CAAA;QAEhB,+CAA+C;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAE/C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"CartProvider.js","sourceRoot":"","sources":["../../src/cart/CartProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiBrD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAqB;IACtE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,0DAA0D;QAC1D,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,UAAU,EAAE,EAAE,CAAA;YACd,OAAM;QACR,CAAC;QAED,4BAA4B;QAC5B,WAAW,EAAE,CAAA;QACb,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,UAAU,EAAE,EAAE,CAAA;IAChB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,mEAAmE;IACnE,qDAAqD;IACrD,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,cAAc,EAAE,EAAE,CAAC;gBACrB,WAAW,CAAC,IAAI,CAAC,CAAA;YACnB,CAAC;QACH,CAAC,CAAA;QAED,gBAAgB;QAChB,cAAc,EAAE,CAAA;QAEhB,+CAA+C;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QAE/C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -1,16 +1,13 @@
1
- "use strict";
2
1
  'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AddToCartButton = AddToCartButton;
5
- const jsx_runtime_1 = require("react/jsx-runtime");
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
3
  /**
7
4
  * @rovela/sdk/cart/components/AddToCartButton
8
5
  *
9
6
  * Button component for adding products to the cart with feedback.
10
7
  */
11
- const react_1 = require("react");
12
- const utils_1 = require("../../core/utils");
13
- const store_1 = require("../store");
8
+ import { useState, useCallback } from 'react';
9
+ import { cn } from '../../core/utils';
10
+ import { useCart } from '../store';
14
11
  // =============================================================================
15
12
  // Component
16
13
  // =============================================================================
@@ -52,12 +49,12 @@ const store_1 = require("../store");
52
49
  * }
53
50
  * ```
54
51
  */
55
- function AddToCartButton({ product, selectedVariant, quantity = 1, disabled = false, className, children, onSuccess, onError, showFeedback = true, feedbackDuration = 1500, openCartAfterAdd = false, size = 'md', variant: buttonVariant = 'primary', fullWidth = false, }) {
56
- const [isAdding, setIsAdding] = (0, react_1.useState)(false);
57
- const [showSuccess, setShowSuccess] = (0, react_1.useState)(false);
58
- const addItem = (0, store_1.useCart)((state) => state.addItem);
59
- const openCart = (0, store_1.useCart)((state) => state.openCart);
60
- const handleClick = (0, react_1.useCallback)(async () => {
52
+ export function AddToCartButton({ product, selectedVariant, quantity = 1, disabled = false, className, children, onSuccess, onError, showFeedback = true, feedbackDuration = 1500, openCartAfterAdd = false, size = 'md', variant: buttonVariant = 'primary', fullWidth = false, }) {
53
+ const [isAdding, setIsAdding] = useState(false);
54
+ const [showSuccess, setShowSuccess] = useState(false);
55
+ const addItem = useCart((state) => state.addItem);
56
+ const openCart = useCart((state) => state.openCart);
57
+ const handleClick = useCallback(async () => {
61
58
  if (disabled || isAdding)
62
59
  return;
63
60
  setIsAdding(true);
@@ -104,21 +101,21 @@ function AddToCartButton({ product, selectedVariant, quantity = 1, disabled = fa
104
101
  lg: 'px-6 py-3 text-base',
105
102
  };
106
103
  const variantClasses = {
107
- primary: (0, utils_1.cn)('bg-primary text-primary-foreground', 'hover:bg-primary/90', 'disabled:bg-muted disabled:text-muted-foreground'),
108
- secondary: (0, utils_1.cn)('bg-secondary text-secondary-foreground', 'hover:bg-secondary/80', 'disabled:bg-muted disabled:text-muted-foreground'),
109
- outline: (0, utils_1.cn)('border border-primary text-primary bg-transparent', 'hover:bg-primary hover:text-primary-foreground', 'disabled:border-muted disabled:text-muted-foreground'),
104
+ primary: cn('bg-primary text-primary-foreground', 'hover:bg-primary/90', 'disabled:bg-muted disabled:text-muted-foreground'),
105
+ secondary: cn('bg-secondary text-secondary-foreground', 'hover:bg-secondary/80', 'disabled:bg-muted disabled:text-muted-foreground'),
106
+ outline: cn('border border-primary text-primary bg-transparent', 'hover:bg-primary hover:text-primary-foreground', 'disabled:border-muted disabled:text-muted-foreground'),
110
107
  };
111
108
  // Determine button content
112
109
  let buttonContent;
113
110
  if (showSuccess) {
114
- buttonContent = ((0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }), "Added!"] }));
111
+ buttonContent = (_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("svg", { className: "h-4 w-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }), "Added!"] }));
115
112
  }
116
113
  else if (isAdding) {
117
- buttonContent = ((0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("svg", { className: "h-4 w-4 animate-spin", fill: "none", viewBox: "0 0 24 24", children: [(0, jsx_runtime_1.jsx)("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), (0, jsx_runtime_1.jsx)("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Adding..."] }));
114
+ buttonContent = (_jsxs("span", { className: "flex items-center gap-2", children: [_jsxs("svg", { className: "h-4 w-4 animate-spin", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Adding..."] }));
118
115
  }
119
116
  else {
120
117
  buttonContent = children || 'Add to Cart';
121
118
  }
122
- return ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleClick, disabled: disabled || isAdding, className: (0, utils_1.cn)('inline-flex items-center justify-center rounded-md font-medium', 'transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary', 'disabled:cursor-not-allowed', sizeClasses[size], variantClasses[buttonVariant], fullWidth && 'w-full', className), "aria-label": `Add ${product.name} to cart`, children: buttonContent }));
119
+ return (_jsx("button", { type: "button", onClick: handleClick, disabled: disabled || isAdding, className: cn('inline-flex items-center justify-center rounded-md font-medium', 'transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary', 'disabled:cursor-not-allowed', sizeClasses[size], variantClasses[buttonVariant], fullWidth && 'w-full', className), "aria-label": `Add ${product.name} to cart`, children: buttonContent }));
123
120
  }
124
121
  //# sourceMappingURL=AddToCartButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddToCartButton.js","sourceRoot":"","sources":["../../../src/cart/components/AddToCartButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AddToCartButton.js","sourceRoot":"","sources":["../../../src/cart/components/AddToCartButton.tsx"],"names":[],"mappings":"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"}
@@ -1,22 +1,16 @@
1
- "use strict";
2
1
  'use client';
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.CartDrawer = CartDrawer;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
3
  /**
10
4
  * @rovela/sdk/cart/components/CartDrawer
11
5
  *
12
6
  * Slide-out cart drawer component.
13
7
  */
14
- const react_1 = require("react");
15
- const link_1 = __importDefault(require("next/link"));
16
- const utils_1 = require("../../core/utils");
17
- const store_1 = require("../store");
18
- const CartItem_1 = require("./CartItem");
19
- const CartSummary_1 = require("./CartSummary");
8
+ import { useEffect, useCallback } from 'react';
9
+ import Link from 'next/link';
10
+ import { cn } from '../../core/utils';
11
+ import { useCart } from '../store';
12
+ import { CartItem } from './CartItem';
13
+ import { CartSummary } from './CartSummary';
20
14
  // =============================================================================
21
15
  // Component
22
16
  // =============================================================================
@@ -55,15 +49,15 @@ const CartSummary_1 = require("./CartSummary");
55
49
  * }
56
50
  * ```
57
51
  */
58
- function CartDrawer({ open: controlledOpen, onOpenChange, position = 'right', className, overlayClassName, showContinueShopping = true, checkoutHref = '/checkout', emptyState, header, footer, currency = 'USD', locale = 'en-US', title = 'Shopping Cart', }) {
52
+ export function CartDrawer({ open: controlledOpen, onOpenChange, position = 'right', className, overlayClassName, showContinueShopping = true, checkoutHref = '/checkout', emptyState, header, footer, currency = 'USD', locale = 'en-US', title = 'Shopping Cart', }) {
59
53
  // Use controlled state if provided, otherwise use store state
60
- const storeIsOpen = (0, store_1.useCart)((state) => state.isOpen);
61
- const closeCart = (0, store_1.useCart)((state) => state.closeCart);
62
- const items = (0, store_1.useCart)((state) => state.items);
63
- const updateQuantity = (0, store_1.useCart)((state) => state.updateQuantity);
64
- const removeItem = (0, store_1.useCart)((state) => state.removeItem);
54
+ const storeIsOpen = useCart((state) => state.isOpen);
55
+ const closeCart = useCart((state) => state.closeCart);
56
+ const items = useCart((state) => state.items);
57
+ const updateQuantity = useCart((state) => state.updateQuantity);
58
+ const removeItem = useCart((state) => state.removeItem);
65
59
  const isOpen = controlledOpen !== undefined ? controlledOpen : storeIsOpen;
66
- const handleClose = (0, react_1.useCallback)(() => {
60
+ const handleClose = useCallback(() => {
67
61
  if (onOpenChange) {
68
62
  onOpenChange(false);
69
63
  }
@@ -72,7 +66,7 @@ function CartDrawer({ open: controlledOpen, onOpenChange, position = 'right', cl
72
66
  }
73
67
  }, [onOpenChange, closeCart]);
74
68
  // Handle escape key
75
- (0, react_1.useEffect)(() => {
69
+ useEffect(() => {
76
70
  const handleKeyDown = (e) => {
77
71
  if (e.key === 'Escape' && isOpen) {
78
72
  handleClose();
@@ -82,7 +76,7 @@ function CartDrawer({ open: controlledOpen, onOpenChange, position = 'right', cl
82
76
  return () => document.removeEventListener('keydown', handleKeyDown);
83
77
  }, [isOpen, handleClose]);
84
78
  // Prevent body scroll when drawer is open
85
- (0, react_1.useEffect)(() => {
79
+ useEffect(() => {
86
80
  if (isOpen) {
87
81
  const originalOverflow = document.body.style.overflow;
88
82
  document.body.style.overflow = 'hidden';
@@ -103,6 +97,6 @@ function CartDrawer({ open: controlledOpen, onOpenChange, position = 'right', cl
103
97
  translate: isOpen ? 'translate-x-0' : 'translate-x-full',
104
98
  },
105
99
  };
106
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('fixed inset-0 z-40 bg-black/50 transition-opacity duration-300', isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none', overlayClassName), onClick: handleClose, "aria-hidden": "true" }), (0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)('fixed top-0 z-50 h-full w-full max-w-md', 'bg-background shadow-xl', 'transition-transform duration-300 ease-in-out', positionClasses[position].drawer, positionClasses[position].translate, className), role: "dialog", "aria-modal": "true", "aria-label": title, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col", children: [header || ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between border-b border-border px-4 py-4", children: [(0, jsx_runtime_1.jsxs)("h2", { className: "text-lg font-semibold text-foreground", children: [title, itemCount > 0 && ((0, jsx_runtime_1.jsxs)("span", { className: "ml-2 text-sm font-normal text-muted-foreground", children: ["(", itemCount, " ", itemCount === 1 ? 'item' : 'items', ")"] }))] }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleClose, className: "rounded-md p-2 text-muted-foreground hover:text-foreground hover:bg-muted transition-colors", "aria-label": "Close cart", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-5 w-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] })), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 overflow-y-auto px-4", children: isEmpty ? (emptyState || ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col items-center justify-center text-center py-12", children: [(0, jsx_runtime_1.jsx)("svg", { className: "h-16 w-16 text-muted-foreground mb-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z" }) }), (0, jsx_runtime_1.jsx)("h3", { className: "text-lg font-medium text-foreground", children: "Your cart is empty" }), (0, jsx_runtime_1.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: "Add some items to get started!" }), showContinueShopping && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleClose, className: "mt-6 text-sm font-medium text-primary hover:text-primary/80 transition-colors", children: "Continue Shopping" }))] }))) : ((0, jsx_runtime_1.jsx)("div", { className: "divide-y divide-border", children: items.map((item) => ((0, jsx_runtime_1.jsx)(CartItem_1.CartItem, { item: item, onUpdateQuantity: (qty) => updateQuantity(item.id, qty), onRemove: () => removeItem(item.id), currency: currency, locale: locale }, item.id))) })) }), !isEmpty && (footer || ((0, jsx_runtime_1.jsxs)("div", { className: "border-t border-border px-4 py-4 space-y-4", children: [(0, jsx_runtime_1.jsx)(CartSummary_1.CartSummary, { showShipping: true, showTotal: true, currency: currency, locale: locale }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)(link_1.default, { href: checkoutHref, onClick: handleClose, className: (0, utils_1.cn)('flex w-full items-center justify-center rounded-md', 'bg-primary px-4 py-3 text-sm font-medium text-primary-foreground', 'hover:bg-primary/90 transition-colors', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary'), children: "Checkout" }), showContinueShopping && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: handleClose, className: (0, utils_1.cn)('flex w-full items-center justify-center rounded-md', 'border border-border px-4 py-3 text-sm font-medium text-foreground', 'hover:bg-muted transition-colors', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary'), children: "Continue Shopping" }))] })] })))] }) })] }));
100
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: cn('fixed inset-0 z-40 bg-black/50 transition-opacity duration-300', isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none', overlayClassName), onClick: handleClose, "aria-hidden": "true" }), _jsx("div", { className: cn('fixed top-0 z-50 h-full w-full max-w-md', 'bg-background shadow-xl', 'transition-transform duration-300 ease-in-out', positionClasses[position].drawer, positionClasses[position].translate, className), role: "dialog", "aria-modal": "true", "aria-label": title, children: _jsxs("div", { className: "flex h-full flex-col", children: [header || (_jsxs("div", { className: "flex items-center justify-between border-b border-border px-4 py-4", children: [_jsxs("h2", { className: "text-lg font-semibold text-foreground", children: [title, itemCount > 0 && (_jsxs("span", { className: "ml-2 text-sm font-normal text-muted-foreground", children: ["(", itemCount, " ", itemCount === 1 ? 'item' : 'items', ")"] }))] }), _jsx("button", { type: "button", onClick: handleClose, className: "rounded-md p-2 text-muted-foreground hover:text-foreground hover:bg-muted transition-colors", "aria-label": "Close cart", children: _jsx("svg", { className: "h-5 w-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] })), _jsx("div", { className: "flex-1 overflow-y-auto px-4", children: isEmpty ? (emptyState || (_jsxs("div", { className: "flex h-full flex-col items-center justify-center text-center py-12", children: [_jsx("svg", { className: "h-16 w-16 text-muted-foreground mb-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z" }) }), _jsx("h3", { className: "text-lg font-medium text-foreground", children: "Your cart is empty" }), _jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: "Add some items to get started!" }), showContinueShopping && (_jsx("button", { type: "button", onClick: handleClose, className: "mt-6 text-sm font-medium text-primary hover:text-primary/80 transition-colors", children: "Continue Shopping" }))] }))) : (_jsx("div", { className: "divide-y divide-border", children: items.map((item) => (_jsx(CartItem, { item: item, onUpdateQuantity: (qty) => updateQuantity(item.id, qty), onRemove: () => removeItem(item.id), currency: currency, locale: locale }, item.id))) })) }), !isEmpty && (footer || (_jsxs("div", { className: "border-t border-border px-4 py-4 space-y-4", children: [_jsx(CartSummary, { showShipping: true, showTotal: true, currency: currency, locale: locale }), _jsxs("div", { className: "space-y-2", children: [_jsx(Link, { href: checkoutHref, onClick: handleClose, className: cn('flex w-full items-center justify-center rounded-md', 'bg-primary px-4 py-3 text-sm font-medium text-primary-foreground', 'hover:bg-primary/90 transition-colors', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary'), children: "Checkout" }), showContinueShopping && (_jsx("button", { type: "button", onClick: handleClose, className: cn('flex w-full items-center justify-center rounded-md', 'border border-border px-4 py-3 text-sm font-medium text-foreground', 'hover:bg-muted transition-colors', 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary'), children: "Continue Shopping" }))] })] })))] }) })] }));
107
101
  }
108
102
  //# sourceMappingURL=CartDrawer.js.map