@rovela-ai/sdk 0.1.2 → 0.1.4

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 (569) hide show
  1. package/dist/admin/api/auth.d.ts +32 -0
  2. package/dist/admin/api/auth.d.ts.map +1 -0
  3. package/dist/admin/api/auth.js +43 -0
  4. package/dist/admin/api/auth.js.map +1 -0
  5. package/dist/admin/api/categories.d.ts +68 -0
  6. package/dist/admin/api/categories.d.ts.map +1 -0
  7. package/dist/admin/api/categories.js +247 -0
  8. package/dist/admin/api/categories.js.map +1 -0
  9. package/dist/admin/api/customers.d.ts +41 -0
  10. package/dist/admin/api/customers.d.ts.map +1 -0
  11. package/dist/admin/api/customers.js +113 -0
  12. package/dist/admin/api/customers.js.map +1 -0
  13. package/dist/admin/api/index.d.ts +56 -0
  14. package/dist/admin/api/index.d.ts.map +1 -0
  15. package/dist/admin/api/index.js +87 -0
  16. package/dist/admin/api/index.js.map +1 -0
  17. package/dist/admin/api/orders.d.ts +59 -0
  18. package/dist/admin/api/orders.d.ts.map +1 -0
  19. package/dist/admin/api/orders.js +209 -0
  20. package/dist/admin/api/orders.js.map +1 -0
  21. package/dist/admin/api/products.d.ts +103 -0
  22. package/dist/admin/api/products.d.ts.map +1 -0
  23. package/dist/admin/api/products.js +329 -0
  24. package/dist/admin/api/products.js.map +1 -0
  25. package/dist/admin/api/refund.d.ts +29 -0
  26. package/dist/admin/api/refund.d.ts.map +1 -0
  27. package/dist/admin/api/refund.js +136 -0
  28. package/dist/admin/api/refund.js.map +1 -0
  29. package/dist/admin/api/stats.d.ts +40 -0
  30. package/dist/admin/api/stats.d.ts.map +1 -0
  31. package/dist/admin/api/stats.js +74 -0
  32. package/dist/admin/api/stats.js.map +1 -0
  33. package/dist/admin/components/AdminGuard.d.ts +40 -0
  34. package/dist/admin/components/AdminGuard.d.ts.map +1 -0
  35. package/dist/admin/components/AdminGuard.js +97 -0
  36. package/dist/admin/components/AdminGuard.js.map +1 -0
  37. package/dist/admin/components/AdminHeader.d.ts +18 -0
  38. package/dist/admin/components/AdminHeader.d.ts.map +1 -0
  39. package/dist/admin/components/AdminHeader.js +33 -0
  40. package/dist/admin/components/AdminHeader.js.map +1 -0
  41. package/dist/admin/components/AdminLayout.d.ts +50 -0
  42. package/dist/admin/components/AdminLayout.d.ts.map +1 -0
  43. package/dist/admin/components/AdminLayout.js +46 -0
  44. package/dist/admin/components/AdminLayout.js.map +1 -0
  45. package/dist/admin/components/AdminLoginForm.d.ts +18 -0
  46. package/dist/admin/components/AdminLoginForm.d.ts.map +1 -0
  47. package/dist/admin/components/AdminLoginForm.js +58 -0
  48. package/dist/admin/components/AdminLoginForm.js.map +1 -0
  49. package/dist/admin/components/AdminNav.d.ts +34 -0
  50. package/dist/admin/components/AdminNav.d.ts.map +1 -0
  51. package/dist/admin/components/AdminNav.js +61 -0
  52. package/dist/admin/components/AdminNav.js.map +1 -0
  53. package/dist/admin/components/InventoryEditor.d.ts +15 -0
  54. package/dist/admin/components/InventoryEditor.d.ts.map +1 -0
  55. package/dist/admin/components/InventoryEditor.js +83 -0
  56. package/dist/admin/components/InventoryEditor.js.map +1 -0
  57. package/dist/admin/components/LowStockAlert.d.ts +11 -0
  58. package/dist/admin/components/LowStockAlert.d.ts.map +1 -0
  59. package/dist/admin/components/LowStockAlert.js +35 -0
  60. package/dist/admin/components/LowStockAlert.js.map +1 -0
  61. package/dist/admin/components/OrderDetails.d.ts +14 -0
  62. package/dist/admin/components/OrderDetails.d.ts.map +1 -0
  63. package/dist/admin/components/OrderDetails.js +94 -0
  64. package/dist/admin/components/OrderDetails.js.map +1 -0
  65. package/dist/admin/components/OrderTable.d.ts +13 -0
  66. package/dist/admin/components/OrderTable.d.ts.map +1 -0
  67. package/dist/admin/components/OrderTable.js +89 -0
  68. package/dist/admin/components/OrderTable.js.map +1 -0
  69. package/dist/admin/components/ProductForm.d.ts +18 -0
  70. package/dist/admin/components/ProductForm.d.ts.map +1 -0
  71. package/dist/admin/components/ProductForm.js +127 -0
  72. package/dist/admin/components/ProductForm.js.map +1 -0
  73. package/dist/admin/components/ProductTable.d.ts +13 -0
  74. package/dist/admin/components/ProductTable.d.ts.map +1 -0
  75. package/dist/admin/components/ProductTable.js +81 -0
  76. package/dist/admin/components/ProductTable.js.map +1 -0
  77. package/dist/admin/components/RecentOrders.d.ts +11 -0
  78. package/dist/admin/components/RecentOrders.d.ts.map +1 -0
  79. package/dist/admin/components/RecentOrders.js +58 -0
  80. package/dist/admin/components/RecentOrders.js.map +1 -0
  81. package/dist/admin/components/RefundDialog.d.ts +17 -0
  82. package/dist/admin/components/RefundDialog.d.ts.map +1 -0
  83. package/dist/admin/components/RefundDialog.js +86 -0
  84. package/dist/admin/components/RefundDialog.js.map +1 -0
  85. package/dist/admin/components/StatsCards.d.ts +23 -0
  86. package/dist/admin/components/StatsCards.d.ts.map +1 -0
  87. package/dist/admin/components/StatsCards.js +82 -0
  88. package/dist/admin/components/StatsCards.js.map +1 -0
  89. package/dist/admin/components/StoreSettings.d.ts +14 -0
  90. package/dist/admin/components/StoreSettings.d.ts.map +1 -0
  91. package/dist/admin/components/StoreSettings.js +88 -0
  92. package/dist/admin/components/StoreSettings.js.map +1 -0
  93. package/dist/admin/components/index.d.ts +21 -0
  94. package/dist/admin/components/index.d.ts.map +1 -0
  95. package/dist/admin/components/index.js +57 -0
  96. package/dist/admin/components/index.js.map +1 -0
  97. package/dist/admin/config.d.ts +74 -0
  98. package/dist/admin/config.d.ts.map +1 -0
  99. package/dist/admin/config.js +229 -0
  100. package/dist/admin/config.js.map +1 -0
  101. package/dist/admin/hooks/index.d.ts +10 -0
  102. package/dist/admin/hooks/index.d.ts.map +1 -0
  103. package/dist/admin/hooks/index.js +17 -0
  104. package/dist/admin/hooks/index.js.map +1 -0
  105. package/dist/admin/hooks/useAdminOrders.d.ts +41 -0
  106. package/dist/admin/hooks/useAdminOrders.d.ts.map +1 -0
  107. package/dist/admin/hooks/useAdminOrders.js +191 -0
  108. package/dist/admin/hooks/useAdminOrders.js.map +1 -0
  109. package/dist/admin/hooks/useAdminProducts.d.ts +39 -0
  110. package/dist/admin/hooks/useAdminProducts.d.ts.map +1 -0
  111. package/dist/admin/hooks/useAdminProducts.js +235 -0
  112. package/dist/admin/hooks/useAdminProducts.js.map +1 -0
  113. package/dist/admin/hooks/useAdminStats.d.ts +50 -0
  114. package/dist/admin/hooks/useAdminStats.d.ts.map +1 -0
  115. package/dist/admin/hooks/useAdminStats.js +111 -0
  116. package/dist/admin/hooks/useAdminStats.js.map +1 -0
  117. package/dist/admin/index.d.ts +63 -0
  118. package/dist/admin/index.d.ts.map +1 -0
  119. package/dist/admin/index.js +148 -0
  120. package/dist/admin/index.js.map +1 -0
  121. package/dist/admin/server/admin-service.d.ts +130 -0
  122. package/dist/admin/server/admin-service.d.ts.map +1 -0
  123. package/dist/admin/server/admin-service.js +298 -0
  124. package/dist/admin/server/admin-service.js.map +1 -0
  125. package/dist/admin/server/index.d.ts +8 -0
  126. package/dist/admin/server/index.d.ts.map +1 -0
  127. package/dist/admin/server/index.js +25 -0
  128. package/dist/admin/server/index.js.map +1 -0
  129. package/dist/admin/types.d.ts +549 -0
  130. package/dist/admin/types.d.ts.map +1 -0
  131. package/dist/admin/types.js +11 -0
  132. package/dist/admin/types.js.map +1 -0
  133. package/dist/auth/api/auth.d.ts +54 -0
  134. package/dist/auth/api/auth.d.ts.map +1 -0
  135. package/dist/auth/api/auth.js +67 -0
  136. package/dist/auth/api/auth.js.map +1 -0
  137. package/dist/auth/api/forgot-password.d.ts +41 -0
  138. package/dist/auth/api/forgot-password.d.ts.map +1 -0
  139. package/dist/auth/api/forgot-password.js +68 -0
  140. package/dist/auth/api/forgot-password.js.map +1 -0
  141. package/dist/auth/api/index.d.ts +34 -0
  142. package/dist/auth/api/index.d.ts.map +1 -0
  143. package/dist/auth/api/index.js +52 -0
  144. package/dist/auth/api/index.js.map +1 -0
  145. package/dist/auth/api/register.d.ts +41 -0
  146. package/dist/auth/api/register.d.ts.map +1 -0
  147. package/dist/auth/api/register.js +93 -0
  148. package/dist/auth/api/register.js.map +1 -0
  149. package/dist/auth/api/resend-verification.d.ts +41 -0
  150. package/dist/auth/api/resend-verification.d.ts.map +1 -0
  151. package/dist/auth/api/resend-verification.js +71 -0
  152. package/dist/auth/api/resend-verification.js.map +1 -0
  153. package/dist/auth/api/reset-password.d.ts +67 -0
  154. package/dist/auth/api/reset-password.d.ts.map +1 -0
  155. package/dist/auth/api/reset-password.js +110 -0
  156. package/dist/auth/api/reset-password.js.map +1 -0
  157. package/dist/auth/api/verify-email.d.ts +47 -0
  158. package/dist/auth/api/verify-email.d.ts.map +1 -0
  159. package/dist/auth/api/verify-email.js +94 -0
  160. package/dist/auth/api/verify-email.js.map +1 -0
  161. package/dist/auth/components/AuthGuard.d.ts +52 -0
  162. package/dist/auth/components/AuthGuard.d.ts.map +1 -0
  163. package/dist/auth/components/AuthGuard.js +113 -0
  164. package/dist/auth/components/AuthGuard.js.map +1 -0
  165. package/dist/auth/components/ForgotPasswordForm.d.ts +15 -0
  166. package/dist/auth/components/ForgotPasswordForm.d.ts.map +1 -0
  167. package/dist/auth/components/ForgotPasswordForm.js +44 -0
  168. package/dist/auth/components/ForgotPasswordForm.js.map +1 -0
  169. package/dist/auth/components/ResetPasswordForm.d.ts +18 -0
  170. package/dist/auth/components/ResetPasswordForm.d.ts.map +1 -0
  171. package/dist/auth/components/ResetPasswordForm.js +88 -0
  172. package/dist/auth/components/ResetPasswordForm.js.map +1 -0
  173. package/dist/auth/components/SignInForm.d.ts +21 -0
  174. package/dist/auth/components/SignInForm.d.ts.map +1 -0
  175. package/dist/auth/components/SignInForm.js +63 -0
  176. package/dist/auth/components/SignInForm.js.map +1 -0
  177. package/dist/auth/components/SignUpForm.d.ts +18 -0
  178. package/dist/auth/components/SignUpForm.d.ts.map +1 -0
  179. package/dist/auth/components/SignUpForm.js +79 -0
  180. package/dist/auth/components/SignUpForm.js.map +1 -0
  181. package/dist/auth/components/UserMenu.d.ts +18 -0
  182. package/dist/auth/components/UserMenu.d.ts.map +1 -0
  183. package/dist/auth/components/UserMenu.js +75 -0
  184. package/dist/auth/components/UserMenu.js.map +1 -0
  185. package/dist/auth/components/VerifyEmailNotice.d.ts +20 -0
  186. package/dist/auth/components/VerifyEmailNotice.d.ts.map +1 -0
  187. package/dist/auth/components/VerifyEmailNotice.js +59 -0
  188. package/dist/auth/components/VerifyEmailNotice.js.map +1 -0
  189. package/dist/auth/components/index.d.ts +13 -0
  190. package/dist/auth/components/index.d.ts.map +1 -0
  191. package/dist/auth/components/index.js +24 -0
  192. package/dist/auth/components/index.js.map +1 -0
  193. package/dist/auth/config.d.ts +42 -0
  194. package/dist/auth/config.d.ts.map +1 -0
  195. package/dist/auth/config.js +174 -0
  196. package/dist/auth/config.js.map +1 -0
  197. package/dist/auth/hooks/index.d.ts +7 -0
  198. package/dist/auth/hooks/index.d.ts.map +1 -0
  199. package/dist/auth/hooks/index.js +11 -0
  200. package/dist/auth/hooks/index.js.map +1 -0
  201. package/dist/auth/index.d.ts +54 -0
  202. package/dist/auth/index.d.ts.map +1 -0
  203. package/dist/auth/index.js +88 -0
  204. package/dist/auth/index.js.map +1 -0
  205. package/dist/auth/server/customer-service.d.ts +138 -0
  206. package/dist/auth/server/customer-service.d.ts.map +1 -0
  207. package/dist/auth/server/customer-service.js +309 -0
  208. package/dist/auth/server/customer-service.js.map +1 -0
  209. package/dist/auth/server/email-sender.d.ts +64 -0
  210. package/dist/auth/server/email-sender.d.ts.map +1 -0
  211. package/dist/auth/server/email-sender.js +112 -0
  212. package/dist/auth/server/email-sender.js.map +1 -0
  213. package/dist/auth/server/index.d.ts +13 -0
  214. package/dist/auth/server/index.d.ts.map +1 -0
  215. package/dist/auth/server/index.js +48 -0
  216. package/dist/auth/server/index.js.map +1 -0
  217. package/dist/auth/server/password-reset-service.d.ts +86 -0
  218. package/dist/auth/server/password-reset-service.d.ts.map +1 -0
  219. package/dist/auth/server/password-reset-service.js +236 -0
  220. package/dist/auth/server/password-reset-service.js.map +1 -0
  221. package/dist/auth/server/password.d.ts +58 -0
  222. package/dist/auth/server/password.d.ts.map +1 -0
  223. package/dist/auth/server/password.js +94 -0
  224. package/dist/auth/server/password.js.map +1 -0
  225. package/dist/auth/server/verification-service.d.ts +87 -0
  226. package/dist/auth/server/verification-service.d.ts.map +1 -0
  227. package/dist/auth/server/verification-service.js +268 -0
  228. package/dist/auth/server/verification-service.js.map +1 -0
  229. package/dist/auth/types.d.ts +305 -0
  230. package/dist/auth/types.d.ts.map +1 -0
  231. package/dist/auth/types.js +8 -0
  232. package/dist/auth/types.js.map +1 -0
  233. package/dist/cart/CartProvider.d.ts +65 -0
  234. package/dist/cart/CartProvider.d.ts.map +1 -0
  235. package/dist/cart/CartProvider.js +101 -0
  236. package/dist/cart/CartProvider.js.map +1 -0
  237. package/dist/cart/components/AddToCartButton.d.ts +77 -0
  238. package/dist/cart/components/AddToCartButton.d.ts.map +1 -0
  239. package/dist/cart/components/AddToCartButton.js +124 -0
  240. package/dist/cart/components/AddToCartButton.js.map +1 -0
  241. package/dist/cart/components/CartDrawer.d.ts +71 -0
  242. package/dist/cart/components/CartDrawer.d.ts.map +1 -0
  243. package/dist/cart/components/CartDrawer.js +108 -0
  244. package/dist/cart/components/CartDrawer.js.map +1 -0
  245. package/dist/cart/components/CartIcon.d.ts +36 -0
  246. package/dist/cart/components/CartIcon.d.ts.map +1 -0
  247. package/dist/cart/components/CartIcon.js +70 -0
  248. package/dist/cart/components/CartIcon.js.map +1 -0
  249. package/dist/cart/components/CartItem.d.ts +52 -0
  250. package/dist/cart/components/CartItem.d.ts.map +1 -0
  251. package/dist/cart/components/CartItem.js +55 -0
  252. package/dist/cart/components/CartItem.js.map +1 -0
  253. package/dist/cart/components/CartSummary.d.ts +43 -0
  254. package/dist/cart/components/CartSummary.d.ts.map +1 -0
  255. package/dist/cart/components/CartSummary.js +58 -0
  256. package/dist/cart/components/CartSummary.js.map +1 -0
  257. package/dist/cart/components/QuantitySelector.d.ts +39 -0
  258. package/dist/cart/components/QuantitySelector.d.ts.map +1 -0
  259. package/dist/cart/components/QuantitySelector.js +87 -0
  260. package/dist/cart/components/QuantitySelector.js.map +1 -0
  261. package/dist/cart/components/index.d.ts +18 -0
  262. package/dist/cart/components/index.d.ts.map +1 -0
  263. package/dist/cart/components/index.js +21 -0
  264. package/dist/cart/components/index.js.map +1 -0
  265. package/dist/cart/index.d.ts +109 -0
  266. package/dist/cart/index.d.ts.map +1 -0
  267. package/dist/cart/index.js +129 -0
  268. package/dist/cart/index.js.map +1 -0
  269. package/dist/cart/store.d.ts +101 -0
  270. package/dist/cart/store.d.ts.map +1 -0
  271. package/dist/cart/store.js +207 -0
  272. package/dist/cart/store.js.map +1 -0
  273. package/dist/checkout/api/checkout.d.ts +31 -0
  274. package/dist/checkout/api/checkout.d.ts.map +1 -0
  275. package/dist/checkout/api/checkout.js +103 -0
  276. package/dist/checkout/api/checkout.js.map +1 -0
  277. package/dist/checkout/api/index.d.ts +8 -0
  278. package/dist/checkout/api/index.d.ts.map +1 -0
  279. package/dist/checkout/api/index.js +13 -0
  280. package/dist/checkout/api/index.js.map +1 -0
  281. package/dist/checkout/api/webhook.d.ts +30 -0
  282. package/dist/checkout/api/webhook.d.ts.map +1 -0
  283. package/dist/checkout/api/webhook.js +58 -0
  284. package/dist/checkout/api/webhook.js.map +1 -0
  285. package/dist/checkout/components/CheckoutButton.d.ts +44 -0
  286. package/dist/checkout/components/CheckoutButton.d.ts.map +1 -0
  287. package/dist/checkout/components/CheckoutButton.js +97 -0
  288. package/dist/checkout/components/CheckoutButton.js.map +1 -0
  289. package/dist/checkout/components/CheckoutSuccess.d.ts +29 -0
  290. package/dist/checkout/components/CheckoutSuccess.d.ts.map +1 -0
  291. package/dist/checkout/components/CheckoutSuccess.js +60 -0
  292. package/dist/checkout/components/CheckoutSuccess.js.map +1 -0
  293. package/dist/checkout/components/OrderSummary.d.ts +37 -0
  294. package/dist/checkout/components/OrderSummary.d.ts.map +1 -0
  295. package/dist/checkout/components/OrderSummary.js +70 -0
  296. package/dist/checkout/components/OrderSummary.js.map +1 -0
  297. package/dist/checkout/components/ShippingForm.d.ts +30 -0
  298. package/dist/checkout/components/ShippingForm.d.ts.map +1 -0
  299. package/dist/checkout/components/ShippingForm.js +125 -0
  300. package/dist/checkout/components/ShippingForm.js.map +1 -0
  301. package/dist/checkout/components/index.d.ts +10 -0
  302. package/dist/checkout/components/index.d.ts.map +1 -0
  303. package/dist/checkout/components/index.js +17 -0
  304. package/dist/checkout/components/index.js.map +1 -0
  305. package/dist/checkout/hooks/index.d.ts +7 -0
  306. package/dist/checkout/hooks/index.d.ts.map +1 -0
  307. package/dist/checkout/hooks/index.js +12 -0
  308. package/dist/checkout/hooks/index.js.map +1 -0
  309. package/dist/checkout/hooks/useCheckout.d.ts +61 -0
  310. package/dist/checkout/hooks/useCheckout.d.ts.map +1 -0
  311. package/dist/checkout/hooks/useCheckout.js +174 -0
  312. package/dist/checkout/hooks/useCheckout.js.map +1 -0
  313. package/dist/checkout/index.d.ts +111 -0
  314. package/dist/checkout/index.d.ts.map +1 -0
  315. package/dist/checkout/index.js +148 -0
  316. package/dist/checkout/index.js.map +1 -0
  317. package/dist/checkout/server/create-checkout-session.d.ts +69 -0
  318. package/dist/checkout/server/create-checkout-session.d.ts.map +1 -0
  319. package/dist/checkout/server/create-checkout-session.js +190 -0
  320. package/dist/checkout/server/create-checkout-session.js.map +1 -0
  321. package/dist/checkout/server/handle-webhook.d.ts +35 -0
  322. package/dist/checkout/server/handle-webhook.d.ts.map +1 -0
  323. package/dist/checkout/server/handle-webhook.js +279 -0
  324. package/dist/checkout/server/handle-webhook.js.map +1 -0
  325. package/dist/checkout/server/index.d.ts +10 -0
  326. package/dist/checkout/server/index.d.ts.map +1 -0
  327. package/dist/checkout/server/index.js +19 -0
  328. package/dist/checkout/server/index.js.map +1 -0
  329. package/dist/checkout/server/order-service.d.ts +43 -0
  330. package/dist/checkout/server/order-service.d.ts.map +1 -0
  331. package/dist/checkout/server/order-service.js +196 -0
  332. package/dist/checkout/server/order-service.js.map +1 -0
  333. package/dist/checkout/stripe/client.d.ts +72 -0
  334. package/dist/checkout/stripe/client.d.ts.map +1 -0
  335. package/dist/checkout/stripe/client.js +189 -0
  336. package/dist/checkout/stripe/client.js.map +1 -0
  337. package/dist/checkout/stripe/index.d.ts +7 -0
  338. package/dist/checkout/stripe/index.d.ts.map +1 -0
  339. package/dist/checkout/stripe/index.js +21 -0
  340. package/dist/checkout/stripe/index.js.map +1 -0
  341. package/dist/checkout/types.d.ts +263 -0
  342. package/dist/checkout/types.d.ts.map +1 -0
  343. package/dist/checkout/types.js +9 -0
  344. package/dist/checkout/types.js.map +1 -0
  345. package/dist/core/config.d.ts +296 -0
  346. package/dist/core/config.d.ts.map +1 -0
  347. package/dist/core/config.js +162 -0
  348. package/dist/core/config.js.map +1 -0
  349. package/dist/core/db/client.d.ts +69 -0
  350. package/dist/core/db/client.d.ts.map +1 -0
  351. package/dist/core/db/client.js +202 -0
  352. package/dist/core/db/client.js.map +1 -0
  353. package/dist/core/db/index.d.ts +11 -0
  354. package/dist/core/db/index.d.ts.map +1 -0
  355. package/dist/core/db/index.js +109 -0
  356. package/dist/core/db/index.js.map +1 -0
  357. package/dist/core/db/queries.d.ts +627 -0
  358. package/dist/core/db/queries.d.ts.map +1 -0
  359. package/dist/core/db/queries.js +730 -0
  360. package/dist/core/db/queries.js.map +1 -0
  361. package/dist/core/db/schema.d.ts +1628 -0
  362. package/dist/core/db/schema.d.ts.map +1 -0
  363. package/dist/core/db/schema.js +262 -0
  364. package/dist/core/db/schema.js.map +1 -0
  365. package/dist/core/index.d.ts +20 -0
  366. package/dist/core/index.d.ts.map +1 -0
  367. package/dist/core/index.js +71 -0
  368. package/dist/core/index.js.map +1 -0
  369. package/dist/core/server/index.d.ts +17 -0
  370. package/dist/core/server/index.d.ts.map +1 -0
  371. package/dist/core/server/index.js +96 -0
  372. package/dist/core/server/index.js.map +1 -0
  373. package/dist/core/types.d.ts +230 -0
  374. package/dist/core/types.d.ts.map +1 -0
  375. package/dist/core/types.js +9 -0
  376. package/dist/core/types.js.map +1 -0
  377. package/dist/core/utils.d.ts +153 -0
  378. package/dist/core/utils.d.ts.map +1 -0
  379. package/dist/core/utils.js +356 -0
  380. package/dist/core/utils.js.map +1 -0
  381. package/dist/emails/config.d.ts +42 -0
  382. package/dist/emails/config.d.ts.map +1 -0
  383. package/dist/emails/config.js +89 -0
  384. package/dist/emails/config.js.map +1 -0
  385. package/dist/emails/index.d.ts +85 -0
  386. package/dist/emails/index.d.ts.map +1 -0
  387. package/dist/emails/index.js +170 -0
  388. package/dist/emails/index.js.map +1 -0
  389. package/dist/emails/send/auth.d.ts +91 -0
  390. package/dist/emails/send/auth.d.ts.map +1 -0
  391. package/dist/emails/send/auth.js +132 -0
  392. package/dist/emails/send/auth.js.map +1 -0
  393. package/dist/emails/send/index.d.ts +10 -0
  394. package/dist/emails/send/index.d.ts.map +1 -0
  395. package/dist/emails/send/index.js +33 -0
  396. package/dist/emails/send/index.js.map +1 -0
  397. package/dist/emails/send/orders.d.ts +180 -0
  398. package/dist/emails/send/orders.d.ts.map +1 -0
  399. package/dist/emails/send/orders.js +259 -0
  400. package/dist/emails/send/orders.js.map +1 -0
  401. package/dist/emails/sender.d.ts +72 -0
  402. package/dist/emails/sender.d.ts.map +1 -0
  403. package/dist/emails/sender.js +118 -0
  404. package/dist/emails/sender.js.map +1 -0
  405. package/dist/emails/templates/base.d.ts +105 -0
  406. package/dist/emails/templates/base.d.ts.map +1 -0
  407. package/dist/emails/templates/base.js +291 -0
  408. package/dist/emails/templates/base.js.map +1 -0
  409. package/dist/emails/templates/email-verification.d.ts +28 -0
  410. package/dist/emails/templates/email-verification.d.ts.map +1 -0
  411. package/dist/emails/templates/email-verification.js +56 -0
  412. package/dist/emails/templates/email-verification.js.map +1 -0
  413. package/dist/emails/templates/index.d.ts +15 -0
  414. package/dist/emails/templates/index.d.ts.map +1 -0
  415. package/dist/emails/templates/index.js +58 -0
  416. package/dist/emails/templates/index.js.map +1 -0
  417. package/dist/emails/templates/order-cancelled.d.ts +30 -0
  418. package/dist/emails/templates/order-cancelled.d.ts.map +1 -0
  419. package/dist/emails/templates/order-cancelled.js +87 -0
  420. package/dist/emails/templates/order-cancelled.js.map +1 -0
  421. package/dist/emails/templates/order-confirmation.d.ts +36 -0
  422. package/dist/emails/templates/order-confirmation.d.ts.map +1 -0
  423. package/dist/emails/templates/order-confirmation.js +161 -0
  424. package/dist/emails/templates/order-confirmation.js.map +1 -0
  425. package/dist/emails/templates/order-delivered.d.ts +31 -0
  426. package/dist/emails/templates/order-delivered.d.ts.map +1 -0
  427. package/dist/emails/templates/order-delivered.js +95 -0
  428. package/dist/emails/templates/order-delivered.js.map +1 -0
  429. package/dist/emails/templates/order-shipped.d.ts +32 -0
  430. package/dist/emails/templates/order-shipped.d.ts.map +1 -0
  431. package/dist/emails/templates/order-shipped.js +87 -0
  432. package/dist/emails/templates/order-shipped.js.map +1 -0
  433. package/dist/emails/templates/password-reset.d.ts +27 -0
  434. package/dist/emails/templates/password-reset.d.ts.map +1 -0
  435. package/dist/emails/templates/password-reset.js +55 -0
  436. package/dist/emails/templates/password-reset.js.map +1 -0
  437. package/dist/emails/templates/refund-processed.d.ts +32 -0
  438. package/dist/emails/templates/refund-processed.d.ts.map +1 -0
  439. package/dist/emails/templates/refund-processed.js +96 -0
  440. package/dist/emails/templates/refund-processed.js.map +1 -0
  441. package/dist/emails/templates/welcome.d.ts +27 -0
  442. package/dist/emails/templates/welcome.d.ts.map +1 -0
  443. package/dist/emails/templates/welcome.js +56 -0
  444. package/dist/emails/templates/welcome.js.map +1 -0
  445. package/dist/emails/types.d.ts +202 -0
  446. package/dist/emails/types.d.ts.map +1 -0
  447. package/dist/emails/types.js +8 -0
  448. package/dist/emails/types.js.map +1 -0
  449. package/dist/emails/utils.d.ts +94 -0
  450. package/dist/emails/utils.d.ts.map +1 -0
  451. package/dist/emails/utils.js +229 -0
  452. package/dist/emails/utils.js.map +1 -0
  453. package/dist/index.d.ts +40 -0
  454. package/dist/index.d.ts.map +1 -0
  455. package/dist/index.js +225 -0
  456. package/dist/index.js.map +1 -0
  457. package/dist/products/api/categories.d.ts +29 -0
  458. package/dist/products/api/categories.d.ts.map +1 -0
  459. package/dist/products/api/categories.js +49 -0
  460. package/dist/products/api/categories.js.map +1 -0
  461. package/dist/products/api/index.d.ts +24 -0
  462. package/dist/products/api/index.d.ts.map +1 -0
  463. package/dist/products/api/index.js +30 -0
  464. package/dist/products/api/index.js.map +1 -0
  465. package/dist/products/api/product.d.ts +36 -0
  466. package/dist/products/api/product.d.ts.map +1 -0
  467. package/dist/products/api/product.js +70 -0
  468. package/dist/products/api/product.js.map +1 -0
  469. package/dist/products/api/products.d.ts +41 -0
  470. package/dist/products/api/products.d.ts.map +1 -0
  471. package/dist/products/api/products.js +102 -0
  472. package/dist/products/api/products.js.map +1 -0
  473. package/dist/products/components/CategoryNav.d.ts +51 -0
  474. package/dist/products/components/CategoryNav.d.ts.map +1 -0
  475. package/dist/products/components/CategoryNav.js +115 -0
  476. package/dist/products/components/CategoryNav.js.map +1 -0
  477. package/dist/products/components/ProductBreadcrumb.d.ts +52 -0
  478. package/dist/products/components/ProductBreadcrumb.d.ts.map +1 -0
  479. package/dist/products/components/ProductBreadcrumb.js +78 -0
  480. package/dist/products/components/ProductBreadcrumb.js.map +1 -0
  481. package/dist/products/components/ProductCard.d.ts +54 -0
  482. package/dist/products/components/ProductCard.d.ts.map +1 -0
  483. package/dist/products/components/ProductCard.js +65 -0
  484. package/dist/products/components/ProductCard.js.map +1 -0
  485. package/dist/products/components/ProductDetails.d.ts +63 -0
  486. package/dist/products/components/ProductDetails.d.ts.map +1 -0
  487. package/dist/products/components/ProductDetails.js +105 -0
  488. package/dist/products/components/ProductDetails.js.map +1 -0
  489. package/dist/products/components/ProductFilters.d.ts +70 -0
  490. package/dist/products/components/ProductFilters.d.ts.map +1 -0
  491. package/dist/products/components/ProductFilters.js +127 -0
  492. package/dist/products/components/ProductFilters.js.map +1 -0
  493. package/dist/products/components/ProductGallery.d.ts +37 -0
  494. package/dist/products/components/ProductGallery.d.ts.map +1 -0
  495. package/dist/products/components/ProductGallery.js +80 -0
  496. package/dist/products/components/ProductGallery.js.map +1 -0
  497. package/dist/products/components/ProductGrid.d.ts +50 -0
  498. package/dist/products/components/ProductGrid.d.ts.map +1 -0
  499. package/dist/products/components/ProductGrid.js +83 -0
  500. package/dist/products/components/ProductGrid.js.map +1 -0
  501. package/dist/products/components/ProductSearch.d.ts +43 -0
  502. package/dist/products/components/ProductSearch.d.ts.map +1 -0
  503. package/dist/products/components/ProductSearch.js +99 -0
  504. package/dist/products/components/ProductSearch.js.map +1 -0
  505. package/dist/products/components/ProductSort.d.ts +43 -0
  506. package/dist/products/components/ProductSort.d.ts.map +1 -0
  507. package/dist/products/components/ProductSort.js +61 -0
  508. package/dist/products/components/ProductSort.js.map +1 -0
  509. package/dist/products/components/VariantSelector.d.ts +43 -0
  510. package/dist/products/components/VariantSelector.d.ts.map +1 -0
  511. package/dist/products/components/VariantSelector.js +147 -0
  512. package/dist/products/components/VariantSelector.js.map +1 -0
  513. package/dist/products/components/index.d.ts +26 -0
  514. package/dist/products/components/index.d.ts.map +1 -0
  515. package/dist/products/components/index.js +32 -0
  516. package/dist/products/components/index.js.map +1 -0
  517. package/dist/products/hooks/index.d.ts +14 -0
  518. package/dist/products/hooks/index.d.ts.map +1 -0
  519. package/dist/products/hooks/index.js +17 -0
  520. package/dist/products/hooks/index.js.map +1 -0
  521. package/dist/products/hooks/useCategories.d.ts +56 -0
  522. package/dist/products/hooks/useCategories.d.ts.map +1 -0
  523. package/dist/products/hooks/useCategories.js +126 -0
  524. package/dist/products/hooks/useCategories.js.map +1 -0
  525. package/dist/products/hooks/useProduct.d.ts +44 -0
  526. package/dist/products/hooks/useProduct.d.ts.map +1 -0
  527. package/dist/products/hooks/useProduct.js +86 -0
  528. package/dist/products/hooks/useProduct.js.map +1 -0
  529. package/dist/products/hooks/useProductAttributes.d.ts +59 -0
  530. package/dist/products/hooks/useProductAttributes.d.ts.map +1 -0
  531. package/dist/products/hooks/useProductAttributes.js +148 -0
  532. package/dist/products/hooks/useProductAttributes.js.map +1 -0
  533. package/dist/products/hooks/useProducts.d.ts +67 -0
  534. package/dist/products/hooks/useProducts.d.ts.map +1 -0
  535. package/dist/products/hooks/useProducts.js +132 -0
  536. package/dist/products/hooks/useProducts.js.map +1 -0
  537. package/dist/products/index.d.ts +94 -0
  538. package/dist/products/index.d.ts.map +1 -0
  539. package/dist/products/index.js +123 -0
  540. package/dist/products/index.js.map +1 -0
  541. package/dist/theme/ThemeProvider.d.ts +70 -0
  542. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  543. package/dist/theme/ThemeProvider.js +77 -0
  544. package/dist/theme/ThemeProvider.js.map +1 -0
  545. package/dist/theme/colors.d.ts +148 -0
  546. package/dist/theme/colors.d.ts.map +1 -0
  547. package/dist/theme/colors.js +219 -0
  548. package/dist/theme/colors.js.map +1 -0
  549. package/dist/theme/defaults.d.ts +212 -0
  550. package/dist/theme/defaults.d.ts.map +1 -0
  551. package/dist/theme/defaults.js +278 -0
  552. package/dist/theme/defaults.js.map +1 -0
  553. package/dist/theme/fonts.d.ts +59 -0
  554. package/dist/theme/fonts.d.ts.map +1 -0
  555. package/dist/theme/fonts.js +202 -0
  556. package/dist/theme/fonts.js.map +1 -0
  557. package/dist/theme/generator.d.ts +50 -0
  558. package/dist/theme/generator.d.ts.map +1 -0
  559. package/dist/theme/generator.js +322 -0
  560. package/dist/theme/generator.js.map +1 -0
  561. package/dist/theme/hooks.d.ts +110 -0
  562. package/dist/theme/hooks.d.ts.map +1 -0
  563. package/dist/theme/hooks.js +106 -0
  564. package/dist/theme/hooks.js.map +1 -0
  565. package/dist/theme/index.d.ts +37 -0
  566. package/dist/theme/index.d.ts.map +1 -0
  567. package/dist/theme/index.js +85 -0
  568. package/dist/theme/index.js.map +1 -0
  569. package/package.json +7 -2
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ /**
3
+ * @rovela/sdk/core/utils
4
+ *
5
+ * Utility functions for e-commerce stores
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.cn = cn;
9
+ exports.formatPrice = formatPrice;
10
+ exports.parsePrice = parsePrice;
11
+ exports.generateSlug = generateSlug;
12
+ exports.generateUniqueSlug = generateUniqueSlug;
13
+ exports.generateSKU = generateSKU;
14
+ exports.formatDate = formatDate;
15
+ exports.formatRelativeTime = formatRelativeTime;
16
+ exports.truncate = truncate;
17
+ exports.capitalize = capitalize;
18
+ exports.titleCase = titleCase;
19
+ exports.clamp = clamp;
20
+ exports.formatNumber = formatNumber;
21
+ exports.percentage = percentage;
22
+ exports.isValidEmail = isValidEmail;
23
+ exports.isValidPhone = isValidPhone;
24
+ exports.isValidPostalCode = isValidPostalCode;
25
+ exports.deepClone = deepClone;
26
+ exports.compact = compact;
27
+ exports.pick = pick;
28
+ exports.omit = omit;
29
+ exports.sleep = sleep;
30
+ exports.retry = retry;
31
+ const clsx_1 = require("clsx");
32
+ const tailwind_merge_1 = require("tailwind-merge");
33
+ // =============================================================================
34
+ // Class Name Utilities
35
+ // =============================================================================
36
+ /**
37
+ * Merge Tailwind CSS classes with clsx
38
+ * Handles conflicting classes intelligently
39
+ *
40
+ * @example
41
+ * cn('px-4 py-2', 'px-6') // => 'py-2 px-6'
42
+ * cn('bg-red-500', { 'bg-blue-500': isBlue }) // => 'bg-blue-500' if isBlue
43
+ */
44
+ function cn(...inputs) {
45
+ return (0, tailwind_merge_1.twMerge)((0, clsx_1.clsx)(inputs));
46
+ }
47
+ /**
48
+ * Format a price for display with proper currency formatting
49
+ *
50
+ * @param price - Price in cents or as decimal (e.g., 1999 or 19.99)
51
+ * @param options - Formatting options
52
+ * @returns Formatted price string (e.g., "$19.99")
53
+ *
54
+ * @example
55
+ * formatPrice(1999) // => "$19.99"
56
+ * formatPrice(19.99, { currency: 'EUR', locale: 'de-DE' }) // => "19,99 €"
57
+ */
58
+ function formatPrice(price, options = {}) {
59
+ const { currency = 'USD', locale = 'en-US', showCents = true } = options;
60
+ // Convert to number
61
+ let numPrice = typeof price === 'string' ? parseFloat(price) : price;
62
+ // Assume cents if price is a large integer (> 100 and whole number)
63
+ if (Number.isInteger(numPrice) && numPrice > 100) {
64
+ numPrice = numPrice / 100;
65
+ }
66
+ return new Intl.NumberFormat(locale, {
67
+ style: 'currency',
68
+ currency,
69
+ minimumFractionDigits: showCents ? 2 : 0,
70
+ maximumFractionDigits: showCents ? 2 : 0,
71
+ }).format(numPrice);
72
+ }
73
+ /**
74
+ * Parse a formatted price string back to a number
75
+ *
76
+ * @param priceString - Formatted price (e.g., "$19.99")
77
+ * @returns Price as a number (e.g., 19.99)
78
+ */
79
+ function parsePrice(priceString) {
80
+ // Remove currency symbols, spaces, and convert comma decimal to dot
81
+ const cleaned = priceString
82
+ .replace(/[^0-9.,]/g, '')
83
+ .replace(',', '.');
84
+ return parseFloat(cleaned) || 0;
85
+ }
86
+ // =============================================================================
87
+ // Slug Generation
88
+ // =============================================================================
89
+ /**
90
+ * Generate a URL-safe slug from a string
91
+ *
92
+ * @param text - Text to convert to slug
93
+ * @returns URL-safe slug
94
+ *
95
+ * @example
96
+ * generateSlug('Hello World!') // => 'hello-world'
97
+ * generateSlug('Product Name (2024)') // => 'product-name-2024'
98
+ */
99
+ function generateSlug(text) {
100
+ return text
101
+ .toString()
102
+ .toLowerCase()
103
+ .trim()
104
+ // Replace spaces with hyphens
105
+ .replace(/\s+/g, '-')
106
+ // Remove special characters except hyphens
107
+ .replace(/[^\w-]+/g, '')
108
+ // Replace multiple hyphens with single hyphen
109
+ .replace(/--+/g, '-')
110
+ // Remove leading/trailing hyphens
111
+ .replace(/^-+/, '')
112
+ .replace(/-+$/, '');
113
+ }
114
+ /**
115
+ * Generate a unique slug by appending a suffix if needed
116
+ *
117
+ * @param baseSlug - Base slug to make unique
118
+ * @param existingSlugs - Array of existing slugs to check against
119
+ * @returns Unique slug
120
+ */
121
+ function generateUniqueSlug(baseSlug, existingSlugs) {
122
+ let slug = baseSlug;
123
+ let counter = 1;
124
+ while (existingSlugs.includes(slug)) {
125
+ slug = `${baseSlug}-${counter}`;
126
+ counter++;
127
+ }
128
+ return slug;
129
+ }
130
+ // =============================================================================
131
+ // SKU Generation
132
+ // =============================================================================
133
+ /**
134
+ * Generate a SKU (Stock Keeping Unit) from product details
135
+ *
136
+ * @param productName - Product name
137
+ * @param variant - Optional variant attributes
138
+ * @returns Generated SKU
139
+ *
140
+ * @example
141
+ * generateSKU('Blue T-Shirt') // => 'BLU-TSH-XXXX'
142
+ * generateSKU('Blue T-Shirt', { size: 'L', color: 'Blue' }) // => 'BLU-TSH-L-BLU-XXXX'
143
+ */
144
+ function generateSKU(productName, variant) {
145
+ // Extract first 3 characters of each significant word
146
+ const words = productName
147
+ .split(/\s+/)
148
+ .filter((w) => w.length > 2)
149
+ .slice(0, 2)
150
+ .map((w) => w.substring(0, 3).toUpperCase());
151
+ const baseSKU = words.join('-');
152
+ // Add variant attributes if provided
153
+ let variantPart = '';
154
+ if (variant) {
155
+ variantPart = Object.values(variant)
156
+ .map((v) => v.substring(0, 3).toUpperCase())
157
+ .join('-');
158
+ }
159
+ // Add random suffix for uniqueness
160
+ const suffix = Math.random().toString(36).substring(2, 6).toUpperCase();
161
+ return [baseSKU, variantPart, suffix].filter(Boolean).join('-');
162
+ }
163
+ // =============================================================================
164
+ // Date Formatting
165
+ // =============================================================================
166
+ /**
167
+ * Format a date for display
168
+ *
169
+ * @param date - Date to format
170
+ * @param options - Intl.DateTimeFormat options
171
+ * @returns Formatted date string
172
+ */
173
+ function formatDate(date, options = {
174
+ year: 'numeric',
175
+ month: 'short',
176
+ day: 'numeric',
177
+ }) {
178
+ const d = typeof date === 'string' ? new Date(date) : date;
179
+ return new Intl.DateTimeFormat('en-US', options).format(d);
180
+ }
181
+ /**
182
+ * Format a date as relative time (e.g., "2 hours ago")
183
+ *
184
+ * @param date - Date to format
185
+ * @returns Relative time string
186
+ */
187
+ function formatRelativeTime(date) {
188
+ const d = typeof date === 'string' ? new Date(date) : date;
189
+ const now = new Date();
190
+ const diffMs = now.getTime() - d.getTime();
191
+ const diffSecs = Math.floor(diffMs / 1000);
192
+ const diffMins = Math.floor(diffSecs / 60);
193
+ const diffHours = Math.floor(diffMins / 60);
194
+ const diffDays = Math.floor(diffHours / 24);
195
+ if (diffSecs < 60)
196
+ return 'just now';
197
+ if (diffMins < 60)
198
+ return `${diffMins} minute${diffMins > 1 ? 's' : ''} ago`;
199
+ if (diffHours < 24)
200
+ return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
201
+ if (diffDays < 7)
202
+ return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
203
+ return formatDate(d);
204
+ }
205
+ // =============================================================================
206
+ // String Utilities
207
+ // =============================================================================
208
+ /**
209
+ * Truncate text to a maximum length with ellipsis
210
+ *
211
+ * @param text - Text to truncate
212
+ * @param maxLength - Maximum length (default 100)
213
+ * @returns Truncated text with ellipsis if needed
214
+ */
215
+ function truncate(text, maxLength = 100) {
216
+ if (text.length <= maxLength)
217
+ return text;
218
+ return text.substring(0, maxLength - 3).trim() + '...';
219
+ }
220
+ /**
221
+ * Capitalize the first letter of a string
222
+ */
223
+ function capitalize(text) {
224
+ return text.charAt(0).toUpperCase() + text.slice(1);
225
+ }
226
+ /**
227
+ * Convert a string to title case
228
+ */
229
+ function titleCase(text) {
230
+ return text
231
+ .toLowerCase()
232
+ .split(' ')
233
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
234
+ .join(' ');
235
+ }
236
+ // =============================================================================
237
+ // Number Utilities
238
+ // =============================================================================
239
+ /**
240
+ * Clamp a number between min and max values
241
+ */
242
+ function clamp(value, min, max) {
243
+ return Math.min(Math.max(value, min), max);
244
+ }
245
+ /**
246
+ * Format a number with thousands separators
247
+ */
248
+ function formatNumber(value, locale = 'en-US') {
249
+ return new Intl.NumberFormat(locale).format(value);
250
+ }
251
+ /**
252
+ * Calculate percentage
253
+ */
254
+ function percentage(value, total) {
255
+ if (total === 0)
256
+ return 0;
257
+ return Math.round((value / total) * 100);
258
+ }
259
+ // =============================================================================
260
+ // Validation Utilities
261
+ // =============================================================================
262
+ /**
263
+ * Validate an email address
264
+ */
265
+ function isValidEmail(email) {
266
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
267
+ return emailRegex.test(email);
268
+ }
269
+ /**
270
+ * Validate a phone number (basic validation)
271
+ */
272
+ function isValidPhone(phone) {
273
+ // Remove all non-digits
274
+ const digits = phone.replace(/\D/g, '');
275
+ // Check if we have 10-15 digits
276
+ return digits.length >= 10 && digits.length <= 15;
277
+ }
278
+ /**
279
+ * Validate a postal/zip code (basic validation)
280
+ */
281
+ function isValidPostalCode(postalCode, country = 'US') {
282
+ const patterns = {
283
+ US: /^\d{5}(-\d{4})?$/,
284
+ CA: /^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/,
285
+ UK: /^[A-Za-z]{1,2}\d[A-Za-z\d]?\s?\d[A-Za-z]{2}$/,
286
+ };
287
+ const pattern = patterns[country.toUpperCase()];
288
+ if (!pattern)
289
+ return postalCode.length > 0;
290
+ return pattern.test(postalCode);
291
+ }
292
+ // =============================================================================
293
+ // Object Utilities
294
+ // =============================================================================
295
+ /**
296
+ * Deep clone an object
297
+ */
298
+ function deepClone(obj) {
299
+ return JSON.parse(JSON.stringify(obj));
300
+ }
301
+ /**
302
+ * Remove undefined and null values from an object
303
+ */
304
+ function compact(obj) {
305
+ return Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null));
306
+ }
307
+ /**
308
+ * Pick specific keys from an object
309
+ */
310
+ function pick(obj, keys) {
311
+ return keys.reduce((acc, key) => {
312
+ if (key in obj) {
313
+ acc[key] = obj[key];
314
+ }
315
+ return acc;
316
+ }, {});
317
+ }
318
+ /**
319
+ * Omit specific keys from an object
320
+ */
321
+ function omit(obj, keys) {
322
+ const result = { ...obj };
323
+ for (const key of keys) {
324
+ delete result[key];
325
+ }
326
+ return result;
327
+ }
328
+ // =============================================================================
329
+ // Async Utilities
330
+ // =============================================================================
331
+ /**
332
+ * Sleep for a specified duration
333
+ */
334
+ function sleep(ms) {
335
+ return new Promise((resolve) => setTimeout(resolve, ms));
336
+ }
337
+ /**
338
+ * Retry a function with exponential backoff
339
+ */
340
+ async function retry(fn, options = {}) {
341
+ const { maxAttempts = 3, delayMs = 1000 } = options;
342
+ let lastError;
343
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
344
+ try {
345
+ return await fn();
346
+ }
347
+ catch (error) {
348
+ lastError = error instanceof Error ? error : new Error(String(error));
349
+ if (attempt < maxAttempts) {
350
+ await sleep(delayMs * Math.pow(2, attempt - 1));
351
+ }
352
+ }
353
+ }
354
+ throw lastError;
355
+ }
356
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @rovela/sdk/emails/config
3
+ *
4
+ * Email configuration and Resend client management.
5
+ */
6
+ import { Resend } from 'resend';
7
+ import type { EmailConfig } from './types';
8
+ /**
9
+ * Get or create Resend client instance.
10
+ * Lazily initialized on first use.
11
+ *
12
+ * @throws Error if RESEND_API_KEY is not set
13
+ */
14
+ export declare function getResend(): Resend;
15
+ /**
16
+ * Get the sender email address.
17
+ * Format: "Store Name <email@domain.com>"
18
+ */
19
+ export declare function getFromEmail(): string;
20
+ /**
21
+ * Get the store name from environment configuration.
22
+ *
23
+ * The STORE_NAME environment variable is set during store deployment
24
+ * from the blueprint's store.name value.
25
+ *
26
+ * @returns Store name from STORE_NAME env var, or 'Our Store' as fallback
27
+ */
28
+ export declare function getStoreName(): string;
29
+ /**
30
+ * Get the store URL for links in emails.
31
+ */
32
+ export declare function getStoreUrl(): string;
33
+ /**
34
+ * Get the complete email configuration for templates.
35
+ * Assembles config from environment variables and blueprint.
36
+ */
37
+ export declare function getEmailConfig(): EmailConfig;
38
+ /**
39
+ * Get the support email address.
40
+ */
41
+ export declare function getSupportEmail(): string;
42
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/emails/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAQ1C;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAgBlC;AAMD;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAW5C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /**
3
+ * @rovela/sdk/emails/config
4
+ *
5
+ * Email configuration and Resend client management.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.getResend = getResend;
9
+ exports.getFromEmail = getFromEmail;
10
+ exports.getStoreName = getStoreName;
11
+ exports.getStoreUrl = getStoreUrl;
12
+ exports.getEmailConfig = getEmailConfig;
13
+ exports.getSupportEmail = getSupportEmail;
14
+ const resend_1 = require("resend");
15
+ // =============================================================================
16
+ // Resend Client
17
+ // =============================================================================
18
+ let resendClient = null;
19
+ /**
20
+ * Get or create Resend client instance.
21
+ * Lazily initialized on first use.
22
+ *
23
+ * @throws Error if RESEND_API_KEY is not set
24
+ */
25
+ function getResend() {
26
+ if (!resendClient) {
27
+ const apiKey = process.env.RESEND_API_KEY;
28
+ if (!apiKey) {
29
+ throw new Error('RESEND_API_KEY environment variable is not set. ' +
30
+ 'Please add your Resend API key to .env.local:\n' +
31
+ 'RESEND_API_KEY=re_xxx');
32
+ }
33
+ resendClient = new resend_1.Resend(apiKey);
34
+ }
35
+ return resendClient;
36
+ }
37
+ // =============================================================================
38
+ // Email Configuration
39
+ // =============================================================================
40
+ /**
41
+ * Get the sender email address.
42
+ * Format: "Store Name <email@domain.com>"
43
+ */
44
+ function getFromEmail() {
45
+ const email = process.env.RESEND_FROM_EMAIL || 'noreply@example.com';
46
+ const storeName = getStoreName();
47
+ return `${storeName} <${email}>`;
48
+ }
49
+ /**
50
+ * Get the store name from environment configuration.
51
+ *
52
+ * The STORE_NAME environment variable is set during store deployment
53
+ * from the blueprint's store.name value.
54
+ *
55
+ * @returns Store name from STORE_NAME env var, or 'Our Store' as fallback
56
+ */
57
+ function getStoreName() {
58
+ return process.env.STORE_NAME || 'Our Store';
59
+ }
60
+ /**
61
+ * Get the store URL for links in emails.
62
+ */
63
+ function getStoreUrl() {
64
+ return process.env.NEXT_PUBLIC_APP_URL || process.env.NEXTAUTH_URL || '';
65
+ }
66
+ /**
67
+ * Get the complete email configuration for templates.
68
+ * Assembles config from environment variables and blueprint.
69
+ */
70
+ function getEmailConfig() {
71
+ return {
72
+ logoUrl: process.env.STORE_LOGO_URL || '',
73
+ storeName: getStoreName(),
74
+ storeAddress: process.env.STORE_ADDRESS || '',
75
+ supportEmail: process.env.SUPPORT_EMAIL ||
76
+ process.env.RESEND_FROM_EMAIL ||
77
+ 'support@example.com',
78
+ shopUrl: getStoreUrl(),
79
+ };
80
+ }
81
+ /**
82
+ * Get the support email address.
83
+ */
84
+ function getSupportEmail() {
85
+ return (process.env.SUPPORT_EMAIL ||
86
+ process.env.RESEND_FROM_EMAIL ||
87
+ 'support@example.com');
88
+ }
89
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/emails/config.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAiBH,8BAgBC;AAUD,oCAKC;AAUD,oCAEC;AAKD,kCAEC;AAMD,wCAWC;AAKD,0CAMC;AA7FD,mCAA+B;AAG/B,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,IAAI,YAAY,GAAkB,IAAI,CAAA;AAEtC;;;;;GAKG;AACH,SAAgB,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;QAEzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,kDAAkD;gBAChD,iDAAiD;gBACjD,uBAAuB,CAC1B,CAAA;QACH,CAAC;QAED,YAAY,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;GAGG;AACH,SAAgB,YAAY;IAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAA;IACpE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;IAEhC,OAAO,GAAG,SAAS,KAAK,KAAK,GAAG,CAAA;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW,CAAA;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc;IAC5B,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QACzC,SAAS,EAAE,YAAY,EAAE;QACzB,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;QAC7C,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,aAAa;YACzB,OAAO,CAAC,GAAG,CAAC,iBAAiB;YAC7B,qBAAqB;QACvB,OAAO,EAAE,WAAW,EAAE;KACvB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,qBAAqB,CACtB,CAAA;AACH,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @rovela/sdk/emails
3
+ *
4
+ * Transactional email module for e-commerce stores.
5
+ *
6
+ * This module provides:
7
+ * - Email template rendering functions
8
+ * - Send functions for common transactional emails
9
+ * - Configuration utilities for Resend integration
10
+ *
11
+ * @example Basic Usage
12
+ * ```typescript
13
+ * import { sendOrderConfirmation, sendVerificationEmail } from '@rovela/sdk/emails'
14
+ *
15
+ * // Send order confirmation
16
+ * await sendOrderConfirmation({
17
+ * to: 'customer@example.com',
18
+ * customerName: 'John',
19
+ * orderNumber: 'ORD-12345',
20
+ * // ... other params
21
+ * })
22
+ *
23
+ * // Send verification email
24
+ * await sendVerificationEmail({
25
+ * to: 'customer@example.com',
26
+ * customerName: 'John',
27
+ * verificationLink: 'https://store.com/verify?token=...',
28
+ * })
29
+ * ```
30
+ *
31
+ * @example Fire-and-Forget (Webhooks)
32
+ * ```typescript
33
+ * import { sendOrderConfirmationAsync } from '@rovela/sdk/emails'
34
+ *
35
+ * // In webhook handler - don't wait for email
36
+ * sendOrderConfirmationAsync({
37
+ * to: 'customer@example.com',
38
+ * // ...
39
+ * })
40
+ *
41
+ * // Return immediately
42
+ * return Response.json({ received: true })
43
+ * ```
44
+ *
45
+ * @example Custom Templates
46
+ * ```typescript
47
+ * import { sendEmail, getEmailConfig, baseLayout } from '@rovela/sdk/emails'
48
+ *
49
+ * // Build custom email HTML
50
+ * const config = getEmailConfig()
51
+ * const html = baseLayout({
52
+ * config,
53
+ * title: 'Custom Email',
54
+ * content: '<h1>Hello World</h1>',
55
+ * })
56
+ *
57
+ * // Send it
58
+ * await sendEmail({
59
+ * to: 'customer@example.com',
60
+ * subject: 'Custom Email',
61
+ * html,
62
+ * })
63
+ * ```
64
+ *
65
+ * ## Environment Variables
66
+ *
67
+ * Required:
68
+ * - `RESEND_API_KEY` - Your Resend API key
69
+ * - `RESEND_FROM_EMAIL` - Sender email address (must be verified in Resend)
70
+ *
71
+ * Optional:
72
+ * - `STORE_NAME` - Store name (falls back to blueprint config)
73
+ * - `STORE_LOGO_URL` - Logo URL for emails
74
+ * - `STORE_ADDRESS` - Physical address for footer
75
+ * - `SUPPORT_EMAIL` - Support email (falls back to RESEND_FROM_EMAIL)
76
+ * - `NEXT_PUBLIC_APP_URL` - Store URL for links
77
+ */
78
+ export type { EmailConfig, SendEmailOptions, SendEmailResult, EmailAddress, EmailOrderItem, EmailVerificationData, WelcomeEmailData, PasswordResetEmailData, OrderConfirmationData, OrderShippedData, OrderDeliveredData, OrderCancelledData, RefundProcessedData, EmailTemplateType, EmailData, } from './types';
79
+ export { getResend, getFromEmail, getStoreName, getStoreUrl, getEmailConfig, getSupportEmail, } from './config';
80
+ export { sendEmail, sendEmailAsync, sendEmailBatch } from './sender';
81
+ export { formatDate, formatDateTime, formatPrice, formatAddressLine, formatAddressHtml, escapeHtml, emailButton, emailFooter, formatOrderNumber, } from './utils';
82
+ export { baseLayout, primaryButton, heading, paragraph, infoBox, linkFallback, detailBox, statusBadge, highlightBox, secondaryButton, addressSection, sectionHeading, STYLES, renderEmailVerification, getEmailVerificationSubject, renderWelcomeEmail, getWelcomeEmailSubject, renderPasswordResetEmail, getPasswordResetSubject, renderOrderConfirmation, getOrderConfirmationSubject, renderOrderShipped, getOrderShippedSubject, renderOrderDelivered, getOrderDeliveredSubject, renderOrderCancelled, getOrderCancelledSubject, renderRefundProcessed, getRefundProcessedSubject, } from './templates';
83
+ export { sendVerificationEmail, sendVerificationEmailAsync, sendWelcomeEmail, sendWelcomeEmailAsync, sendPasswordResetEmail, sendPasswordResetEmailAsync, sendOrderConfirmation, sendOrderConfirmationAsync, sendOrderShipped, sendOrderShippedAsync, sendOrderDelivered, sendOrderDeliveredAsync, sendOrderCancelled, sendOrderCancelledAsync, sendRefundProcessed, sendRefundProcessedAsync, } from './send';
84
+ export type { SendVerificationEmailParams, SendWelcomeEmailParams, SendPasswordResetEmailParams, SendOrderConfirmationParams, SendOrderShippedParams, SendOrderDeliveredParams, SendOrderCancelledParams, SendRefundProcessedParams, } from './send';
85
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AAMH,YAAY,EAEV,WAAW,EACX,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACZ,cAAc,EAEd,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EAEtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EAEnB,iBAAiB,EACjB,SAAS,GACV,MAAM,SAAS,CAAA;AAMhB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,UAAU,CAAA;AAMjB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAMpE,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAMhB,OAAO,EAEL,UAAU,EACV,aAAa,EACb,OAAO,EACP,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,MAAM,EAEN,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAA;AAMpB,OAAO,EAEL,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAE3B,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,QAAQ,CAAA;AAGf,YAAY,EACV,2BAA2B,EAC3B,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,QAAQ,CAAA"}