@rovela-ai/sdk 0.1.1 → 0.1.2

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 (575) hide show
  1. package/dist/admin/hooks/useAdminAuth.d.ts.map +1 -1
  2. package/dist/admin/hooks/useAdminAuth.js +4 -1
  3. package/dist/admin/hooks/useAdminAuth.js.map +1 -1
  4. package/dist/auth/hooks/useAuth.d.ts.map +1 -1
  5. package/dist/auth/hooks/useAuth.js +8 -2
  6. package/dist/auth/hooks/useAuth.js.map +1 -1
  7. package/package.json +1 -1
  8. package/dist/admin/api/auth.d.ts +0 -32
  9. package/dist/admin/api/auth.d.ts.map +0 -1
  10. package/dist/admin/api/auth.js +0 -43
  11. package/dist/admin/api/auth.js.map +0 -1
  12. package/dist/admin/api/categories.d.ts +0 -68
  13. package/dist/admin/api/categories.d.ts.map +0 -1
  14. package/dist/admin/api/categories.js +0 -247
  15. package/dist/admin/api/categories.js.map +0 -1
  16. package/dist/admin/api/customers.d.ts +0 -41
  17. package/dist/admin/api/customers.d.ts.map +0 -1
  18. package/dist/admin/api/customers.js +0 -113
  19. package/dist/admin/api/customers.js.map +0 -1
  20. package/dist/admin/api/index.d.ts +0 -56
  21. package/dist/admin/api/index.d.ts.map +0 -1
  22. package/dist/admin/api/index.js +0 -87
  23. package/dist/admin/api/index.js.map +0 -1
  24. package/dist/admin/api/orders.d.ts +0 -59
  25. package/dist/admin/api/orders.d.ts.map +0 -1
  26. package/dist/admin/api/orders.js +0 -209
  27. package/dist/admin/api/orders.js.map +0 -1
  28. package/dist/admin/api/products.d.ts +0 -103
  29. package/dist/admin/api/products.d.ts.map +0 -1
  30. package/dist/admin/api/products.js +0 -329
  31. package/dist/admin/api/products.js.map +0 -1
  32. package/dist/admin/api/refund.d.ts +0 -29
  33. package/dist/admin/api/refund.d.ts.map +0 -1
  34. package/dist/admin/api/refund.js +0 -136
  35. package/dist/admin/api/refund.js.map +0 -1
  36. package/dist/admin/api/stats.d.ts +0 -40
  37. package/dist/admin/api/stats.d.ts.map +0 -1
  38. package/dist/admin/api/stats.js +0 -74
  39. package/dist/admin/api/stats.js.map +0 -1
  40. package/dist/admin/components/AdminGuard.d.ts +0 -40
  41. package/dist/admin/components/AdminGuard.d.ts.map +0 -1
  42. package/dist/admin/components/AdminGuard.js +0 -97
  43. package/dist/admin/components/AdminGuard.js.map +0 -1
  44. package/dist/admin/components/AdminHeader.d.ts +0 -18
  45. package/dist/admin/components/AdminHeader.d.ts.map +0 -1
  46. package/dist/admin/components/AdminHeader.js +0 -33
  47. package/dist/admin/components/AdminHeader.js.map +0 -1
  48. package/dist/admin/components/AdminLayout.d.ts +0 -50
  49. package/dist/admin/components/AdminLayout.d.ts.map +0 -1
  50. package/dist/admin/components/AdminLayout.js +0 -46
  51. package/dist/admin/components/AdminLayout.js.map +0 -1
  52. package/dist/admin/components/AdminLoginForm.d.ts +0 -18
  53. package/dist/admin/components/AdminLoginForm.d.ts.map +0 -1
  54. package/dist/admin/components/AdminLoginForm.js +0 -58
  55. package/dist/admin/components/AdminLoginForm.js.map +0 -1
  56. package/dist/admin/components/AdminNav.d.ts +0 -34
  57. package/dist/admin/components/AdminNav.d.ts.map +0 -1
  58. package/dist/admin/components/AdminNav.js +0 -61
  59. package/dist/admin/components/AdminNav.js.map +0 -1
  60. package/dist/admin/components/InventoryEditor.d.ts +0 -15
  61. package/dist/admin/components/InventoryEditor.d.ts.map +0 -1
  62. package/dist/admin/components/InventoryEditor.js +0 -83
  63. package/dist/admin/components/InventoryEditor.js.map +0 -1
  64. package/dist/admin/components/LowStockAlert.d.ts +0 -11
  65. package/dist/admin/components/LowStockAlert.d.ts.map +0 -1
  66. package/dist/admin/components/LowStockAlert.js +0 -35
  67. package/dist/admin/components/LowStockAlert.js.map +0 -1
  68. package/dist/admin/components/OrderDetails.d.ts +0 -14
  69. package/dist/admin/components/OrderDetails.d.ts.map +0 -1
  70. package/dist/admin/components/OrderDetails.js +0 -94
  71. package/dist/admin/components/OrderDetails.js.map +0 -1
  72. package/dist/admin/components/OrderTable.d.ts +0 -13
  73. package/dist/admin/components/OrderTable.d.ts.map +0 -1
  74. package/dist/admin/components/OrderTable.js +0 -89
  75. package/dist/admin/components/OrderTable.js.map +0 -1
  76. package/dist/admin/components/ProductForm.d.ts +0 -18
  77. package/dist/admin/components/ProductForm.d.ts.map +0 -1
  78. package/dist/admin/components/ProductForm.js +0 -127
  79. package/dist/admin/components/ProductForm.js.map +0 -1
  80. package/dist/admin/components/ProductTable.d.ts +0 -13
  81. package/dist/admin/components/ProductTable.d.ts.map +0 -1
  82. package/dist/admin/components/ProductTable.js +0 -81
  83. package/dist/admin/components/ProductTable.js.map +0 -1
  84. package/dist/admin/components/RecentOrders.d.ts +0 -11
  85. package/dist/admin/components/RecentOrders.d.ts.map +0 -1
  86. package/dist/admin/components/RecentOrders.js +0 -58
  87. package/dist/admin/components/RecentOrders.js.map +0 -1
  88. package/dist/admin/components/RefundDialog.d.ts +0 -17
  89. package/dist/admin/components/RefundDialog.d.ts.map +0 -1
  90. package/dist/admin/components/RefundDialog.js +0 -86
  91. package/dist/admin/components/RefundDialog.js.map +0 -1
  92. package/dist/admin/components/StatsCards.d.ts +0 -23
  93. package/dist/admin/components/StatsCards.d.ts.map +0 -1
  94. package/dist/admin/components/StatsCards.js +0 -82
  95. package/dist/admin/components/StatsCards.js.map +0 -1
  96. package/dist/admin/components/StoreSettings.d.ts +0 -14
  97. package/dist/admin/components/StoreSettings.d.ts.map +0 -1
  98. package/dist/admin/components/StoreSettings.js +0 -88
  99. package/dist/admin/components/StoreSettings.js.map +0 -1
  100. package/dist/admin/components/index.d.ts +0 -21
  101. package/dist/admin/components/index.d.ts.map +0 -1
  102. package/dist/admin/components/index.js +0 -57
  103. package/dist/admin/components/index.js.map +0 -1
  104. package/dist/admin/config.d.ts +0 -74
  105. package/dist/admin/config.d.ts.map +0 -1
  106. package/dist/admin/config.js +0 -229
  107. package/dist/admin/config.js.map +0 -1
  108. package/dist/admin/hooks/index.d.ts +0 -10
  109. package/dist/admin/hooks/index.d.ts.map +0 -1
  110. package/dist/admin/hooks/index.js +0 -17
  111. package/dist/admin/hooks/index.js.map +0 -1
  112. package/dist/admin/hooks/useAdminOrders.d.ts +0 -41
  113. package/dist/admin/hooks/useAdminOrders.d.ts.map +0 -1
  114. package/dist/admin/hooks/useAdminOrders.js +0 -191
  115. package/dist/admin/hooks/useAdminOrders.js.map +0 -1
  116. package/dist/admin/hooks/useAdminProducts.d.ts +0 -39
  117. package/dist/admin/hooks/useAdminProducts.d.ts.map +0 -1
  118. package/dist/admin/hooks/useAdminProducts.js +0 -235
  119. package/dist/admin/hooks/useAdminProducts.js.map +0 -1
  120. package/dist/admin/hooks/useAdminStats.d.ts +0 -50
  121. package/dist/admin/hooks/useAdminStats.d.ts.map +0 -1
  122. package/dist/admin/hooks/useAdminStats.js +0 -111
  123. package/dist/admin/hooks/useAdminStats.js.map +0 -1
  124. package/dist/admin/index.d.ts +0 -63
  125. package/dist/admin/index.d.ts.map +0 -1
  126. package/dist/admin/index.js +0 -148
  127. package/dist/admin/index.js.map +0 -1
  128. package/dist/admin/server/admin-service.d.ts +0 -130
  129. package/dist/admin/server/admin-service.d.ts.map +0 -1
  130. package/dist/admin/server/admin-service.js +0 -298
  131. package/dist/admin/server/admin-service.js.map +0 -1
  132. package/dist/admin/server/index.d.ts +0 -8
  133. package/dist/admin/server/index.d.ts.map +0 -1
  134. package/dist/admin/server/index.js +0 -25
  135. package/dist/admin/server/index.js.map +0 -1
  136. package/dist/admin/types.d.ts +0 -549
  137. package/dist/admin/types.d.ts.map +0 -1
  138. package/dist/admin/types.js +0 -11
  139. package/dist/admin/types.js.map +0 -1
  140. package/dist/auth/api/auth.d.ts +0 -54
  141. package/dist/auth/api/auth.d.ts.map +0 -1
  142. package/dist/auth/api/auth.js +0 -67
  143. package/dist/auth/api/auth.js.map +0 -1
  144. package/dist/auth/api/forgot-password.d.ts +0 -41
  145. package/dist/auth/api/forgot-password.d.ts.map +0 -1
  146. package/dist/auth/api/forgot-password.js +0 -68
  147. package/dist/auth/api/forgot-password.js.map +0 -1
  148. package/dist/auth/api/index.d.ts +0 -34
  149. package/dist/auth/api/index.d.ts.map +0 -1
  150. package/dist/auth/api/index.js +0 -52
  151. package/dist/auth/api/index.js.map +0 -1
  152. package/dist/auth/api/register.d.ts +0 -41
  153. package/dist/auth/api/register.d.ts.map +0 -1
  154. package/dist/auth/api/register.js +0 -93
  155. package/dist/auth/api/register.js.map +0 -1
  156. package/dist/auth/api/resend-verification.d.ts +0 -41
  157. package/dist/auth/api/resend-verification.d.ts.map +0 -1
  158. package/dist/auth/api/resend-verification.js +0 -71
  159. package/dist/auth/api/resend-verification.js.map +0 -1
  160. package/dist/auth/api/reset-password.d.ts +0 -67
  161. package/dist/auth/api/reset-password.d.ts.map +0 -1
  162. package/dist/auth/api/reset-password.js +0 -110
  163. package/dist/auth/api/reset-password.js.map +0 -1
  164. package/dist/auth/api/verify-email.d.ts +0 -47
  165. package/dist/auth/api/verify-email.d.ts.map +0 -1
  166. package/dist/auth/api/verify-email.js +0 -94
  167. package/dist/auth/api/verify-email.js.map +0 -1
  168. package/dist/auth/components/AuthGuard.d.ts +0 -52
  169. package/dist/auth/components/AuthGuard.d.ts.map +0 -1
  170. package/dist/auth/components/AuthGuard.js +0 -113
  171. package/dist/auth/components/AuthGuard.js.map +0 -1
  172. package/dist/auth/components/ForgotPasswordForm.d.ts +0 -15
  173. package/dist/auth/components/ForgotPasswordForm.d.ts.map +0 -1
  174. package/dist/auth/components/ForgotPasswordForm.js +0 -44
  175. package/dist/auth/components/ForgotPasswordForm.js.map +0 -1
  176. package/dist/auth/components/ResetPasswordForm.d.ts +0 -18
  177. package/dist/auth/components/ResetPasswordForm.d.ts.map +0 -1
  178. package/dist/auth/components/ResetPasswordForm.js +0 -88
  179. package/dist/auth/components/ResetPasswordForm.js.map +0 -1
  180. package/dist/auth/components/SignInForm.d.ts +0 -21
  181. package/dist/auth/components/SignInForm.d.ts.map +0 -1
  182. package/dist/auth/components/SignInForm.js +0 -63
  183. package/dist/auth/components/SignInForm.js.map +0 -1
  184. package/dist/auth/components/SignUpForm.d.ts +0 -18
  185. package/dist/auth/components/SignUpForm.d.ts.map +0 -1
  186. package/dist/auth/components/SignUpForm.js +0 -79
  187. package/dist/auth/components/SignUpForm.js.map +0 -1
  188. package/dist/auth/components/UserMenu.d.ts +0 -18
  189. package/dist/auth/components/UserMenu.d.ts.map +0 -1
  190. package/dist/auth/components/UserMenu.js +0 -75
  191. package/dist/auth/components/UserMenu.js.map +0 -1
  192. package/dist/auth/components/VerifyEmailNotice.d.ts +0 -20
  193. package/dist/auth/components/VerifyEmailNotice.d.ts.map +0 -1
  194. package/dist/auth/components/VerifyEmailNotice.js +0 -59
  195. package/dist/auth/components/VerifyEmailNotice.js.map +0 -1
  196. package/dist/auth/components/index.d.ts +0 -13
  197. package/dist/auth/components/index.d.ts.map +0 -1
  198. package/dist/auth/components/index.js +0 -24
  199. package/dist/auth/components/index.js.map +0 -1
  200. package/dist/auth/config.d.ts +0 -42
  201. package/dist/auth/config.d.ts.map +0 -1
  202. package/dist/auth/config.js +0 -174
  203. package/dist/auth/config.js.map +0 -1
  204. package/dist/auth/hooks/index.d.ts +0 -7
  205. package/dist/auth/hooks/index.d.ts.map +0 -1
  206. package/dist/auth/hooks/index.js +0 -11
  207. package/dist/auth/hooks/index.js.map +0 -1
  208. package/dist/auth/index.d.ts +0 -54
  209. package/dist/auth/index.d.ts.map +0 -1
  210. package/dist/auth/index.js +0 -88
  211. package/dist/auth/index.js.map +0 -1
  212. package/dist/auth/server/customer-service.d.ts +0 -138
  213. package/dist/auth/server/customer-service.d.ts.map +0 -1
  214. package/dist/auth/server/customer-service.js +0 -309
  215. package/dist/auth/server/customer-service.js.map +0 -1
  216. package/dist/auth/server/email-sender.d.ts +0 -64
  217. package/dist/auth/server/email-sender.d.ts.map +0 -1
  218. package/dist/auth/server/email-sender.js +0 -112
  219. package/dist/auth/server/email-sender.js.map +0 -1
  220. package/dist/auth/server/index.d.ts +0 -13
  221. package/dist/auth/server/index.d.ts.map +0 -1
  222. package/dist/auth/server/index.js +0 -48
  223. package/dist/auth/server/index.js.map +0 -1
  224. package/dist/auth/server/password-reset-service.d.ts +0 -86
  225. package/dist/auth/server/password-reset-service.d.ts.map +0 -1
  226. package/dist/auth/server/password-reset-service.js +0 -236
  227. package/dist/auth/server/password-reset-service.js.map +0 -1
  228. package/dist/auth/server/password.d.ts +0 -58
  229. package/dist/auth/server/password.d.ts.map +0 -1
  230. package/dist/auth/server/password.js +0 -94
  231. package/dist/auth/server/password.js.map +0 -1
  232. package/dist/auth/server/verification-service.d.ts +0 -87
  233. package/dist/auth/server/verification-service.d.ts.map +0 -1
  234. package/dist/auth/server/verification-service.js +0 -268
  235. package/dist/auth/server/verification-service.js.map +0 -1
  236. package/dist/auth/types.d.ts +0 -305
  237. package/dist/auth/types.d.ts.map +0 -1
  238. package/dist/auth/types.js +0 -8
  239. package/dist/auth/types.js.map +0 -1
  240. package/dist/cart/CartProvider.d.ts +0 -65
  241. package/dist/cart/CartProvider.d.ts.map +0 -1
  242. package/dist/cart/CartProvider.js +0 -101
  243. package/dist/cart/CartProvider.js.map +0 -1
  244. package/dist/cart/components/AddToCartButton.d.ts +0 -77
  245. package/dist/cart/components/AddToCartButton.d.ts.map +0 -1
  246. package/dist/cart/components/AddToCartButton.js +0 -124
  247. package/dist/cart/components/AddToCartButton.js.map +0 -1
  248. package/dist/cart/components/CartDrawer.d.ts +0 -71
  249. package/dist/cart/components/CartDrawer.d.ts.map +0 -1
  250. package/dist/cart/components/CartDrawer.js +0 -108
  251. package/dist/cart/components/CartDrawer.js.map +0 -1
  252. package/dist/cart/components/CartIcon.d.ts +0 -36
  253. package/dist/cart/components/CartIcon.d.ts.map +0 -1
  254. package/dist/cart/components/CartIcon.js +0 -70
  255. package/dist/cart/components/CartIcon.js.map +0 -1
  256. package/dist/cart/components/CartItem.d.ts +0 -52
  257. package/dist/cart/components/CartItem.d.ts.map +0 -1
  258. package/dist/cart/components/CartItem.js +0 -55
  259. package/dist/cart/components/CartItem.js.map +0 -1
  260. package/dist/cart/components/CartSummary.d.ts +0 -43
  261. package/dist/cart/components/CartSummary.d.ts.map +0 -1
  262. package/dist/cart/components/CartSummary.js +0 -58
  263. package/dist/cart/components/CartSummary.js.map +0 -1
  264. package/dist/cart/components/QuantitySelector.d.ts +0 -39
  265. package/dist/cart/components/QuantitySelector.d.ts.map +0 -1
  266. package/dist/cart/components/QuantitySelector.js +0 -87
  267. package/dist/cart/components/QuantitySelector.js.map +0 -1
  268. package/dist/cart/components/index.d.ts +0 -18
  269. package/dist/cart/components/index.d.ts.map +0 -1
  270. package/dist/cart/components/index.js +0 -21
  271. package/dist/cart/components/index.js.map +0 -1
  272. package/dist/cart/index.d.ts +0 -109
  273. package/dist/cart/index.d.ts.map +0 -1
  274. package/dist/cart/index.js +0 -129
  275. package/dist/cart/index.js.map +0 -1
  276. package/dist/cart/store.d.ts +0 -101
  277. package/dist/cart/store.d.ts.map +0 -1
  278. package/dist/cart/store.js +0 -207
  279. package/dist/cart/store.js.map +0 -1
  280. package/dist/checkout/api/checkout.d.ts +0 -31
  281. package/dist/checkout/api/checkout.d.ts.map +0 -1
  282. package/dist/checkout/api/checkout.js +0 -103
  283. package/dist/checkout/api/checkout.js.map +0 -1
  284. package/dist/checkout/api/index.d.ts +0 -8
  285. package/dist/checkout/api/index.d.ts.map +0 -1
  286. package/dist/checkout/api/index.js +0 -13
  287. package/dist/checkout/api/index.js.map +0 -1
  288. package/dist/checkout/api/webhook.d.ts +0 -30
  289. package/dist/checkout/api/webhook.d.ts.map +0 -1
  290. package/dist/checkout/api/webhook.js +0 -58
  291. package/dist/checkout/api/webhook.js.map +0 -1
  292. package/dist/checkout/components/CheckoutButton.d.ts +0 -44
  293. package/dist/checkout/components/CheckoutButton.d.ts.map +0 -1
  294. package/dist/checkout/components/CheckoutButton.js +0 -97
  295. package/dist/checkout/components/CheckoutButton.js.map +0 -1
  296. package/dist/checkout/components/CheckoutSuccess.d.ts +0 -29
  297. package/dist/checkout/components/CheckoutSuccess.d.ts.map +0 -1
  298. package/dist/checkout/components/CheckoutSuccess.js +0 -60
  299. package/dist/checkout/components/CheckoutSuccess.js.map +0 -1
  300. package/dist/checkout/components/OrderSummary.d.ts +0 -37
  301. package/dist/checkout/components/OrderSummary.d.ts.map +0 -1
  302. package/dist/checkout/components/OrderSummary.js +0 -70
  303. package/dist/checkout/components/OrderSummary.js.map +0 -1
  304. package/dist/checkout/components/ShippingForm.d.ts +0 -30
  305. package/dist/checkout/components/ShippingForm.d.ts.map +0 -1
  306. package/dist/checkout/components/ShippingForm.js +0 -125
  307. package/dist/checkout/components/ShippingForm.js.map +0 -1
  308. package/dist/checkout/components/index.d.ts +0 -10
  309. package/dist/checkout/components/index.d.ts.map +0 -1
  310. package/dist/checkout/components/index.js +0 -17
  311. package/dist/checkout/components/index.js.map +0 -1
  312. package/dist/checkout/hooks/index.d.ts +0 -7
  313. package/dist/checkout/hooks/index.d.ts.map +0 -1
  314. package/dist/checkout/hooks/index.js +0 -12
  315. package/dist/checkout/hooks/index.js.map +0 -1
  316. package/dist/checkout/hooks/useCheckout.d.ts +0 -61
  317. package/dist/checkout/hooks/useCheckout.d.ts.map +0 -1
  318. package/dist/checkout/hooks/useCheckout.js +0 -174
  319. package/dist/checkout/hooks/useCheckout.js.map +0 -1
  320. package/dist/checkout/index.d.ts +0 -111
  321. package/dist/checkout/index.d.ts.map +0 -1
  322. package/dist/checkout/index.js +0 -148
  323. package/dist/checkout/index.js.map +0 -1
  324. package/dist/checkout/server/create-checkout-session.d.ts +0 -69
  325. package/dist/checkout/server/create-checkout-session.d.ts.map +0 -1
  326. package/dist/checkout/server/create-checkout-session.js +0 -190
  327. package/dist/checkout/server/create-checkout-session.js.map +0 -1
  328. package/dist/checkout/server/handle-webhook.d.ts +0 -35
  329. package/dist/checkout/server/handle-webhook.d.ts.map +0 -1
  330. package/dist/checkout/server/handle-webhook.js +0 -279
  331. package/dist/checkout/server/handle-webhook.js.map +0 -1
  332. package/dist/checkout/server/index.d.ts +0 -10
  333. package/dist/checkout/server/index.d.ts.map +0 -1
  334. package/dist/checkout/server/index.js +0 -19
  335. package/dist/checkout/server/index.js.map +0 -1
  336. package/dist/checkout/server/order-service.d.ts +0 -43
  337. package/dist/checkout/server/order-service.d.ts.map +0 -1
  338. package/dist/checkout/server/order-service.js +0 -196
  339. package/dist/checkout/server/order-service.js.map +0 -1
  340. package/dist/checkout/stripe/client.d.ts +0 -72
  341. package/dist/checkout/stripe/client.d.ts.map +0 -1
  342. package/dist/checkout/stripe/client.js +0 -189
  343. package/dist/checkout/stripe/client.js.map +0 -1
  344. package/dist/checkout/stripe/index.d.ts +0 -7
  345. package/dist/checkout/stripe/index.d.ts.map +0 -1
  346. package/dist/checkout/stripe/index.js +0 -21
  347. package/dist/checkout/stripe/index.js.map +0 -1
  348. package/dist/checkout/types.d.ts +0 -263
  349. package/dist/checkout/types.d.ts.map +0 -1
  350. package/dist/checkout/types.js +0 -9
  351. package/dist/checkout/types.js.map +0 -1
  352. package/dist/core/config.d.ts +0 -296
  353. package/dist/core/config.d.ts.map +0 -1
  354. package/dist/core/config.js +0 -162
  355. package/dist/core/config.js.map +0 -1
  356. package/dist/core/db/client.d.ts +0 -69
  357. package/dist/core/db/client.d.ts.map +0 -1
  358. package/dist/core/db/client.js +0 -202
  359. package/dist/core/db/client.js.map +0 -1
  360. package/dist/core/db/index.d.ts +0 -11
  361. package/dist/core/db/index.d.ts.map +0 -1
  362. package/dist/core/db/index.js +0 -87
  363. package/dist/core/db/index.js.map +0 -1
  364. package/dist/core/db/queries.d.ts +0 -658
  365. package/dist/core/db/queries.d.ts.map +0 -1
  366. package/dist/core/db/queries.js +0 -735
  367. package/dist/core/db/queries.js.map +0 -1
  368. package/dist/core/db/schema.d.ts +0 -1628
  369. package/dist/core/db/schema.d.ts.map +0 -1
  370. package/dist/core/db/schema.js +0 -262
  371. package/dist/core/db/schema.js.map +0 -1
  372. package/dist/core/index.d.ts +0 -20
  373. package/dist/core/index.d.ts.map +0 -1
  374. package/dist/core/index.js +0 -71
  375. package/dist/core/index.js.map +0 -1
  376. package/dist/core/server/index.d.ts +0 -17
  377. package/dist/core/server/index.d.ts.map +0 -1
  378. package/dist/core/server/index.js +0 -68
  379. package/dist/core/server/index.js.map +0 -1
  380. package/dist/core/types.d.ts +0 -230
  381. package/dist/core/types.d.ts.map +0 -1
  382. package/dist/core/types.js +0 -9
  383. package/dist/core/types.js.map +0 -1
  384. package/dist/core/utils.d.ts +0 -153
  385. package/dist/core/utils.d.ts.map +0 -1
  386. package/dist/core/utils.js +0 -356
  387. package/dist/core/utils.js.map +0 -1
  388. package/dist/emails/config.d.ts +0 -42
  389. package/dist/emails/config.d.ts.map +0 -1
  390. package/dist/emails/config.js +0 -89
  391. package/dist/emails/config.js.map +0 -1
  392. package/dist/emails/index.d.ts +0 -85
  393. package/dist/emails/index.d.ts.map +0 -1
  394. package/dist/emails/index.js +0 -170
  395. package/dist/emails/index.js.map +0 -1
  396. package/dist/emails/send/auth.d.ts +0 -91
  397. package/dist/emails/send/auth.d.ts.map +0 -1
  398. package/dist/emails/send/auth.js +0 -132
  399. package/dist/emails/send/auth.js.map +0 -1
  400. package/dist/emails/send/index.d.ts +0 -10
  401. package/dist/emails/send/index.d.ts.map +0 -1
  402. package/dist/emails/send/index.js +0 -33
  403. package/dist/emails/send/index.js.map +0 -1
  404. package/dist/emails/send/orders.d.ts +0 -180
  405. package/dist/emails/send/orders.d.ts.map +0 -1
  406. package/dist/emails/send/orders.js +0 -259
  407. package/dist/emails/send/orders.js.map +0 -1
  408. package/dist/emails/sender.d.ts +0 -72
  409. package/dist/emails/sender.d.ts.map +0 -1
  410. package/dist/emails/sender.js +0 -118
  411. package/dist/emails/sender.js.map +0 -1
  412. package/dist/emails/templates/base.d.ts +0 -105
  413. package/dist/emails/templates/base.d.ts.map +0 -1
  414. package/dist/emails/templates/base.js +0 -291
  415. package/dist/emails/templates/base.js.map +0 -1
  416. package/dist/emails/templates/email-verification.d.ts +0 -28
  417. package/dist/emails/templates/email-verification.d.ts.map +0 -1
  418. package/dist/emails/templates/email-verification.js +0 -56
  419. package/dist/emails/templates/email-verification.js.map +0 -1
  420. package/dist/emails/templates/index.d.ts +0 -15
  421. package/dist/emails/templates/index.d.ts.map +0 -1
  422. package/dist/emails/templates/index.js +0 -58
  423. package/dist/emails/templates/index.js.map +0 -1
  424. package/dist/emails/templates/order-cancelled.d.ts +0 -30
  425. package/dist/emails/templates/order-cancelled.d.ts.map +0 -1
  426. package/dist/emails/templates/order-cancelled.js +0 -87
  427. package/dist/emails/templates/order-cancelled.js.map +0 -1
  428. package/dist/emails/templates/order-confirmation.d.ts +0 -36
  429. package/dist/emails/templates/order-confirmation.d.ts.map +0 -1
  430. package/dist/emails/templates/order-confirmation.js +0 -161
  431. package/dist/emails/templates/order-confirmation.js.map +0 -1
  432. package/dist/emails/templates/order-delivered.d.ts +0 -31
  433. package/dist/emails/templates/order-delivered.d.ts.map +0 -1
  434. package/dist/emails/templates/order-delivered.js +0 -95
  435. package/dist/emails/templates/order-delivered.js.map +0 -1
  436. package/dist/emails/templates/order-shipped.d.ts +0 -32
  437. package/dist/emails/templates/order-shipped.d.ts.map +0 -1
  438. package/dist/emails/templates/order-shipped.js +0 -87
  439. package/dist/emails/templates/order-shipped.js.map +0 -1
  440. package/dist/emails/templates/password-reset.d.ts +0 -27
  441. package/dist/emails/templates/password-reset.d.ts.map +0 -1
  442. package/dist/emails/templates/password-reset.js +0 -55
  443. package/dist/emails/templates/password-reset.js.map +0 -1
  444. package/dist/emails/templates/refund-processed.d.ts +0 -32
  445. package/dist/emails/templates/refund-processed.d.ts.map +0 -1
  446. package/dist/emails/templates/refund-processed.js +0 -96
  447. package/dist/emails/templates/refund-processed.js.map +0 -1
  448. package/dist/emails/templates/welcome.d.ts +0 -27
  449. package/dist/emails/templates/welcome.d.ts.map +0 -1
  450. package/dist/emails/templates/welcome.js +0 -56
  451. package/dist/emails/templates/welcome.js.map +0 -1
  452. package/dist/emails/types.d.ts +0 -202
  453. package/dist/emails/types.d.ts.map +0 -1
  454. package/dist/emails/types.js +0 -8
  455. package/dist/emails/types.js.map +0 -1
  456. package/dist/emails/utils.d.ts +0 -94
  457. package/dist/emails/utils.d.ts.map +0 -1
  458. package/dist/emails/utils.js +0 -229
  459. package/dist/emails/utils.js.map +0 -1
  460. package/dist/index.d.ts +0 -40
  461. package/dist/index.d.ts.map +0 -1
  462. package/dist/index.js +0 -225
  463. package/dist/index.js.map +0 -1
  464. package/dist/products/api/categories.d.ts +0 -29
  465. package/dist/products/api/categories.d.ts.map +0 -1
  466. package/dist/products/api/categories.js +0 -49
  467. package/dist/products/api/categories.js.map +0 -1
  468. package/dist/products/api/index.d.ts +0 -24
  469. package/dist/products/api/index.d.ts.map +0 -1
  470. package/dist/products/api/index.js +0 -30
  471. package/dist/products/api/index.js.map +0 -1
  472. package/dist/products/api/product.d.ts +0 -36
  473. package/dist/products/api/product.d.ts.map +0 -1
  474. package/dist/products/api/product.js +0 -70
  475. package/dist/products/api/product.js.map +0 -1
  476. package/dist/products/api/products.d.ts +0 -41
  477. package/dist/products/api/products.d.ts.map +0 -1
  478. package/dist/products/api/products.js +0 -102
  479. package/dist/products/api/products.js.map +0 -1
  480. package/dist/products/components/CategoryNav.d.ts +0 -51
  481. package/dist/products/components/CategoryNav.d.ts.map +0 -1
  482. package/dist/products/components/CategoryNav.js +0 -115
  483. package/dist/products/components/CategoryNav.js.map +0 -1
  484. package/dist/products/components/ProductBreadcrumb.d.ts +0 -52
  485. package/dist/products/components/ProductBreadcrumb.d.ts.map +0 -1
  486. package/dist/products/components/ProductBreadcrumb.js +0 -78
  487. package/dist/products/components/ProductBreadcrumb.js.map +0 -1
  488. package/dist/products/components/ProductCard.d.ts +0 -54
  489. package/dist/products/components/ProductCard.d.ts.map +0 -1
  490. package/dist/products/components/ProductCard.js +0 -65
  491. package/dist/products/components/ProductCard.js.map +0 -1
  492. package/dist/products/components/ProductDetails.d.ts +0 -63
  493. package/dist/products/components/ProductDetails.d.ts.map +0 -1
  494. package/dist/products/components/ProductDetails.js +0 -105
  495. package/dist/products/components/ProductDetails.js.map +0 -1
  496. package/dist/products/components/ProductFilters.d.ts +0 -70
  497. package/dist/products/components/ProductFilters.d.ts.map +0 -1
  498. package/dist/products/components/ProductFilters.js +0 -127
  499. package/dist/products/components/ProductFilters.js.map +0 -1
  500. package/dist/products/components/ProductGallery.d.ts +0 -37
  501. package/dist/products/components/ProductGallery.d.ts.map +0 -1
  502. package/dist/products/components/ProductGallery.js +0 -80
  503. package/dist/products/components/ProductGallery.js.map +0 -1
  504. package/dist/products/components/ProductGrid.d.ts +0 -50
  505. package/dist/products/components/ProductGrid.d.ts.map +0 -1
  506. package/dist/products/components/ProductGrid.js +0 -83
  507. package/dist/products/components/ProductGrid.js.map +0 -1
  508. package/dist/products/components/ProductSearch.d.ts +0 -43
  509. package/dist/products/components/ProductSearch.d.ts.map +0 -1
  510. package/dist/products/components/ProductSearch.js +0 -99
  511. package/dist/products/components/ProductSearch.js.map +0 -1
  512. package/dist/products/components/ProductSort.d.ts +0 -43
  513. package/dist/products/components/ProductSort.d.ts.map +0 -1
  514. package/dist/products/components/ProductSort.js +0 -61
  515. package/dist/products/components/ProductSort.js.map +0 -1
  516. package/dist/products/components/VariantSelector.d.ts +0 -43
  517. package/dist/products/components/VariantSelector.d.ts.map +0 -1
  518. package/dist/products/components/VariantSelector.js +0 -147
  519. package/dist/products/components/VariantSelector.js.map +0 -1
  520. package/dist/products/components/index.d.ts +0 -26
  521. package/dist/products/components/index.d.ts.map +0 -1
  522. package/dist/products/components/index.js +0 -32
  523. package/dist/products/components/index.js.map +0 -1
  524. package/dist/products/hooks/index.d.ts +0 -14
  525. package/dist/products/hooks/index.d.ts.map +0 -1
  526. package/dist/products/hooks/index.js +0 -17
  527. package/dist/products/hooks/index.js.map +0 -1
  528. package/dist/products/hooks/useCategories.d.ts +0 -56
  529. package/dist/products/hooks/useCategories.d.ts.map +0 -1
  530. package/dist/products/hooks/useCategories.js +0 -126
  531. package/dist/products/hooks/useCategories.js.map +0 -1
  532. package/dist/products/hooks/useProduct.d.ts +0 -44
  533. package/dist/products/hooks/useProduct.d.ts.map +0 -1
  534. package/dist/products/hooks/useProduct.js +0 -86
  535. package/dist/products/hooks/useProduct.js.map +0 -1
  536. package/dist/products/hooks/useProductAttributes.d.ts +0 -59
  537. package/dist/products/hooks/useProductAttributes.d.ts.map +0 -1
  538. package/dist/products/hooks/useProductAttributes.js +0 -148
  539. package/dist/products/hooks/useProductAttributes.js.map +0 -1
  540. package/dist/products/hooks/useProducts.d.ts +0 -67
  541. package/dist/products/hooks/useProducts.d.ts.map +0 -1
  542. package/dist/products/hooks/useProducts.js +0 -132
  543. package/dist/products/hooks/useProducts.js.map +0 -1
  544. package/dist/products/index.d.ts +0 -94
  545. package/dist/products/index.d.ts.map +0 -1
  546. package/dist/products/index.js +0 -123
  547. package/dist/products/index.js.map +0 -1
  548. package/dist/theme/ThemeProvider.d.ts +0 -70
  549. package/dist/theme/ThemeProvider.d.ts.map +0 -1
  550. package/dist/theme/ThemeProvider.js +0 -77
  551. package/dist/theme/ThemeProvider.js.map +0 -1
  552. package/dist/theme/colors.d.ts +0 -148
  553. package/dist/theme/colors.d.ts.map +0 -1
  554. package/dist/theme/colors.js +0 -219
  555. package/dist/theme/colors.js.map +0 -1
  556. package/dist/theme/defaults.d.ts +0 -212
  557. package/dist/theme/defaults.d.ts.map +0 -1
  558. package/dist/theme/defaults.js +0 -278
  559. package/dist/theme/defaults.js.map +0 -1
  560. package/dist/theme/fonts.d.ts +0 -59
  561. package/dist/theme/fonts.d.ts.map +0 -1
  562. package/dist/theme/fonts.js +0 -202
  563. package/dist/theme/fonts.js.map +0 -1
  564. package/dist/theme/generator.d.ts +0 -50
  565. package/dist/theme/generator.d.ts.map +0 -1
  566. package/dist/theme/generator.js +0 -322
  567. package/dist/theme/generator.js.map +0 -1
  568. package/dist/theme/hooks.d.ts +0 -110
  569. package/dist/theme/hooks.d.ts.map +0 -1
  570. package/dist/theme/hooks.js +0 -106
  571. package/dist/theme/hooks.js.map +0 -1
  572. package/dist/theme/index.d.ts +0 -37
  573. package/dist/theme/index.d.ts.map +0 -1
  574. package/dist/theme/index.js +0 -85
  575. package/dist/theme/index.js.map +0 -1
@@ -1,102 +0,0 @@
1
- "use strict";
2
- /**
3
- * @rovela/sdk/products/api/products
4
- *
5
- * API route handler for product listing endpoint.
6
- * Provides GET /api/products with filtering, sorting, and pagination.
7
- *
8
- * Usage in Next.js App Router:
9
- * ```typescript
10
- * // app/api/products/route.ts
11
- * export { GET } from '@rovela/sdk/products/api'
12
- * ```
13
- */
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.GET = GET;
16
- const server_1 = require("next/server");
17
- const queries_1 = require("../../core/db/queries");
18
- // =============================================================================
19
- // Handler
20
- // =============================================================================
21
- /**
22
- * GET /api/products
23
- *
24
- * Query Parameters:
25
- * - category: string - Filter by category ID
26
- * - search: string - Search by product name
27
- * - sort: 'newest' | 'price-asc' | 'price-desc' | 'name'
28
- * - status: 'draft' | 'active' | 'archived' (defaults to 'active')
29
- * - minPrice: number - Minimum price filter
30
- * - maxPrice: number - Maximum price filter
31
- * - limit: number - Page size (default 12, max 100)
32
- * - page: number - Page number (1-based, default 1)
33
- * - attributes: JSON string - Attribute filters { color: ['Red'], size: ['L'] }
34
- */
35
- async function GET(request) {
36
- try {
37
- const searchParams = request.nextUrl.searchParams;
38
- // Parse pagination
39
- const page = Math.max(1, parseInt(searchParams.get('page') || '1', 10));
40
- const limit = Math.min(100, Math.max(1, parseInt(searchParams.get('limit') || '12', 10)));
41
- const offset = (page - 1) * limit;
42
- // Parse sort
43
- const sortParam = searchParams.get('sort');
44
- const sort = isValidSort(sortParam) ? sortParam : 'newest';
45
- // Parse status (default to 'active' for public API)
46
- const statusParam = searchParams.get('status');
47
- const status = isValidStatus(statusParam) ? statusParam : 'active';
48
- // Build query options
49
- const options = {
50
- categoryId: searchParams.get('category') || undefined,
51
- search: searchParams.get('search') || undefined,
52
- sort,
53
- status,
54
- limit,
55
- offset,
56
- };
57
- // Execute queries in parallel
58
- const [products, total] = await Promise.all([
59
- (0, queries_1.findProducts)(options),
60
- (0, queries_1.countProducts)({
61
- categoryId: options.categoryId,
62
- status: options.status,
63
- search: options.search,
64
- }),
65
- ]);
66
- const hasMore = offset + products.length < total;
67
- return server_1.NextResponse.json({
68
- data: products,
69
- total,
70
- page,
71
- pageSize: limit,
72
- hasMore,
73
- });
74
- }
75
- catch (error) {
76
- console.error('[Products API] Error:', error);
77
- // Handle tenant not set error gracefully
78
- if (error instanceof Error && error.message.includes('Tenant ID not set')) {
79
- return server_1.NextResponse.json({
80
- error: 'Store not configured. Please set TENANT_ID environment variable.',
81
- code: 'TENANT_NOT_SET',
82
- }, { status: 500 });
83
- }
84
- return server_1.NextResponse.json({
85
- error: 'Failed to fetch products',
86
- code: 'INTERNAL_ERROR',
87
- }, { status: 500 });
88
- }
89
- }
90
- // =============================================================================
91
- // Helpers
92
- // =============================================================================
93
- function isValidSort(value) {
94
- return (value === 'newest' ||
95
- value === 'price-asc' ||
96
- value === 'price-desc' ||
97
- value === 'name');
98
- }
99
- function isValidStatus(value) {
100
- return value === 'draft' || value === 'active' || value === 'archived';
101
- }
102
- //# sourceMappingURL=products.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../../src/products/api/products.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AA4CH,kBAyEC;AAnHD,wCAAuD;AACvD,mDAI8B;AAmB9B,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,GAAG,CACvB,OAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAA;QAEjD,mBAAmB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAC7D,CAAA;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;QAEjC,aAAa;QACb,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;QAE1D,oDAAoD;QACpD,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;QAElE,sBAAsB;QACtB,MAAM,OAAO,GAAwB;YACnC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,SAAS;YACrD,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;YAC/C,IAAI;YACJ,MAAM;YACN,KAAK;YACL,MAAM;SACP,CAAA;QAED,8BAA8B;QAC9B,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC1C,IAAA,sBAAY,EAAC,OAAO,CAAC;YACrB,IAAA,uBAAa,EAAC;gBACZ,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;SACH,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAA;QAEhD,OAAO,qBAAY,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,QAAQ;YACd,KAAK;YACL,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;QAE7C,yCAAyC;QACzC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,OAAO,qBAAY,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,kEAAkE;gBACzE,IAAI,EAAE,gBAAgB;aACvB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,OAAO,qBAAY,CAAC,IAAI,CACtB;YACE,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,gBAAgB;SACvB,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,SAAS,WAAW,CAClB,KAAoB;IAEpB,OAAO,CACL,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,WAAW;QACrB,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,MAAM,CACjB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CACpB,KAAoB;IAEpB,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAA;AACxE,CAAC"}
@@ -1,51 +0,0 @@
1
- import type { Category } from '../../core/types';
2
- import type { CategoryWithChildren } from '../hooks/useCategories';
3
- export interface CategoryNavProps {
4
- /** Categories (flat or tree structure) */
5
- categories: Category[] | CategoryWithChildren[];
6
- /** Currently active category slug */
7
- activeSlug?: string | null;
8
- /** Custom className */
9
- className?: string;
10
- /** Navigation style */
11
- variant?: 'horizontal' | 'vertical' | 'dropdown';
12
- /** Link href pattern (default: /categories/[slug]) */
13
- hrefPattern?: string;
14
- /** Show product count */
15
- showCount?: boolean;
16
- /** Product counts by category ID */
17
- counts?: Record<string, number>;
18
- /** Show all products link */
19
- showAllLink?: boolean;
20
- /** All products link label */
21
- allLinkLabel?: string;
22
- /** Collapse nested categories */
23
- collapsible?: boolean;
24
- /** Maximum depth to render */
25
- maxDepth?: number;
26
- }
27
- /**
28
- * CategoryNav component for displaying category navigation.
29
- *
30
- * @example
31
- * ```tsx
32
- * import { CategoryNav, useCategories } from '@rovela/sdk/products'
33
- *
34
- * function Sidebar({ activeCategory }) {
35
- * const { tree, isLoading } = useCategories()
36
- *
37
- * if (isLoading) return <div>Loading...</div>
38
- *
39
- * return (
40
- * <CategoryNav
41
- * categories={tree}
42
- * activeSlug={activeCategory}
43
- * variant="vertical"
44
- * collapsible
45
- * />
46
- * )
47
- * }
48
- * ```
49
- */
50
- export declare function CategoryNav({ categories, activeSlug, className, variant, hrefPattern, showCount, counts, showAllLink, allLinkLabel, collapsible, maxDepth, }: CategoryNavProps): import("react/jsx-runtime").JSX.Element;
51
- //# sourceMappingURL=CategoryNav.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CategoryNav.d.ts","sourceRoot":"","sources":["../../../src/products/components/CategoryNav.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAMlE,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAC/C,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAA;IAChD,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yBAAyB;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,6BAA6B;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,UAAU,EACV,SAAS,EACT,OAAoB,EACpB,WAAkC,EAClC,SAAiB,EACjB,MAAW,EACX,WAAkB,EAClB,YAA6B,EAC7B,WAAmB,EACnB,QAAY,GACb,EAAE,gBAAgB,2CAmElB"}
@@ -1,115 +0,0 @@
1
- "use strict";
2
- '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.CategoryNav = CategoryNav;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
9
- /**
10
- * @rovela/sdk/products/components/CategoryNav
11
- *
12
- * Category navigation component with hierarchical support.
13
- */
14
- const react_1 = require("react");
15
- const link_1 = __importDefault(require("next/link"));
16
- const utils_1 = require("../../core/utils");
17
- // =============================================================================
18
- // Component
19
- // =============================================================================
20
- /**
21
- * CategoryNav component for displaying category navigation.
22
- *
23
- * @example
24
- * ```tsx
25
- * import { CategoryNav, useCategories } from '@rovela/sdk/products'
26
- *
27
- * function Sidebar({ activeCategory }) {
28
- * const { tree, isLoading } = useCategories()
29
- *
30
- * if (isLoading) return <div>Loading...</div>
31
- *
32
- * return (
33
- * <CategoryNav
34
- * categories={tree}
35
- * activeSlug={activeCategory}
36
- * variant="vertical"
37
- * collapsible
38
- * />
39
- * )
40
- * }
41
- * ```
42
- */
43
- function CategoryNav({ categories, activeSlug, className, variant = 'vertical', hrefPattern = '/categories/[slug]', showCount = false, counts = {}, showAllLink = true, allLinkLabel = 'All Products', collapsible = false, maxDepth = 3, }) {
44
- // Check if categories have children (tree structure)
45
- const isTree = categories.length > 0 && 'children' in categories[0];
46
- const baseClasses = {
47
- horizontal: 'flex flex-wrap gap-2',
48
- vertical: 'flex flex-col space-y-1',
49
- dropdown: 'relative',
50
- };
51
- if (variant === 'dropdown') {
52
- return ((0, jsx_runtime_1.jsx)(CategoryDropdown, { categories: categories, activeSlug: activeSlug, className: className, hrefPattern: hrefPattern, showCount: showCount, counts: counts, showAllLink: showAllLink, allLinkLabel: allLinkLabel }));
53
- }
54
- return ((0, jsx_runtime_1.jsxs)("nav", { className: (0, utils_1.cn)(baseClasses[variant], className), "aria-label": "Categories", children: [showAllLink && ((0, jsx_runtime_1.jsx)(CategoryLink, { href: "/products", label: allLinkLabel, isActive: !activeSlug, variant: variant })), isTree ? (
55
- // Render tree structure
56
- categories.map((category) => ((0, jsx_runtime_1.jsx)(CategoryTreeItem, { category: category, activeSlug: activeSlug, hrefPattern: hrefPattern, showCount: showCount, counts: counts, collapsible: collapsible, variant: variant, depth: 0, maxDepth: maxDepth }, category.id)))) : (
57
- // Render flat structure
58
- categories.map((category) => ((0, jsx_runtime_1.jsx)(CategoryLink, { href: hrefPattern.replace('[slug]', category.slug), label: category.name, isActive: category.slug === activeSlug, count: showCount ? counts[category.id] : undefined, variant: variant }, category.id))))] }));
59
- }
60
- function CategoryLink({ href, label, isActive = false, count, variant = 'vertical', className, depth = 0, }) {
61
- const linkClasses = (0, utils_1.cn)('block transition-colors', variant === 'horizontal'
62
- ? (0, utils_1.cn)('rounded-full px-4 py-2 text-sm', isActive
63
- ? 'bg-primary text-primary-foreground'
64
- : 'bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground')
65
- : (0, utils_1.cn)('rounded-md px-3 py-2 text-sm', isActive
66
- ? 'bg-primary/10 font-medium text-primary'
67
- : 'text-muted-foreground hover:bg-muted hover:text-foreground'), depth > 0 && variant === 'vertical' && `ml-${Math.min(depth * 4, 12)}`, className);
68
- return ((0, jsx_runtime_1.jsx)(link_1.default, { href: href, className: linkClasses, children: (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: label }), count !== undefined && ((0, jsx_runtime_1.jsxs)("span", { className: "ml-2 text-xs text-muted-foreground", children: ["(", count, ")"] }))] }) }));
69
- }
70
- function CategoryTreeItem({ category, activeSlug, hrefPattern, showCount, counts, collapsible, variant, depth, maxDepth, }) {
71
- const hasChildren = category.children && category.children.length > 0;
72
- const isActive = category.slug === activeSlug;
73
- const isActiveParent = hasChildren &&
74
- category.children.some(child => child.slug === activeSlug ||
75
- (child.children && child.children.some(gc => gc.slug === activeSlug)));
76
- const [isExpanded, setIsExpanded] = (0, react_1.useState)(isActive || isActiveParent);
77
- const handleToggle = (0, react_1.useCallback)((e) => {
78
- if (collapsible && hasChildren) {
79
- e.preventDefault();
80
- setIsExpanded(!isExpanded);
81
- }
82
- }, [collapsible, hasChildren, isExpanded]);
83
- // Don't render beyond max depth
84
- if (depth >= maxDepth)
85
- return null;
86
- return ((0, jsx_runtime_1.jsxs)("div", { className: variant === 'vertical' ? 'space-y-1' : '', children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center", children: [collapsible && hasChildren && variant === 'vertical' && ((0, jsx_runtime_1.jsx)("button", { onClick: handleToggle, className: "mr-1 flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted", "aria-label": isExpanded ? 'Collapse' : 'Expand', children: (0, jsx_runtime_1.jsx)("svg", { className: (0, utils_1.cn)('h-4 w-4 transition-transform', isExpanded && 'rotate-90'), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }) })), (0, jsx_runtime_1.jsx)(CategoryLink, { href: hrefPattern.replace('[slug]', category.slug), label: category.name, isActive: isActive, count: showCount ? counts[category.id] : undefined, variant: variant, depth: collapsible ? 0 : depth, className: "flex-1" })] }), hasChildren && (collapsible ? isExpanded : true) && ((0, jsx_runtime_1.jsx)("div", { className: (0, utils_1.cn)(variant === 'vertical' && 'ml-4 space-y-1'), children: category.children.map((child) => ((0, jsx_runtime_1.jsx)(CategoryTreeItem, { category: child, activeSlug: activeSlug, hrefPattern: hrefPattern, showCount: showCount, counts: counts, collapsible: collapsible, variant: variant, depth: depth + 1, maxDepth: maxDepth }, child.id))) }))] }));
87
- }
88
- function CategoryDropdown({ categories, activeSlug, className, hrefPattern, showCount, counts, showAllLink, allLinkLabel, }) {
89
- const [isOpen, setIsOpen] = (0, react_1.useState)(false);
90
- // Find active category name
91
- const flatCategories = flattenCategories(categories);
92
- const activeCategory = flatCategories.find((c) => c.slug === activeSlug);
93
- return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('relative', className), children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setIsOpen(!isOpen), className: "flex w-full items-center justify-between rounded-md border border-border bg-background px-4 py-2 text-sm", children: [(0, jsx_runtime_1.jsx)("span", { children: activeCategory?.name || allLinkLabel }), (0, jsx_runtime_1.jsx)("svg", { className: (0, utils_1.cn)('h-4 w-4 transition-transform', isOpen && 'rotate-180'), fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), isOpen && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 z-10", onClick: () => setIsOpen(false) }), (0, jsx_runtime_1.jsxs)("div", { className: "absolute z-20 mt-1 w-full rounded-md border border-border bg-background py-1 shadow-lg", children: [showAllLink && ((0, jsx_runtime_1.jsx)(link_1.default, { href: "/products", onClick: () => setIsOpen(false), className: (0, utils_1.cn)('block px-4 py-2 text-sm', !activeSlug
94
- ? 'bg-primary/10 text-primary'
95
- : 'text-foreground hover:bg-muted'), children: allLinkLabel })), flatCategories.map((category) => ((0, jsx_runtime_1.jsx)(link_1.default, { href: hrefPattern.replace('[slug]', category.slug), onClick: () => setIsOpen(false), className: (0, utils_1.cn)('block px-4 py-2 text-sm', category.slug === activeSlug
96
- ? 'bg-primary/10 text-primary'
97
- : 'text-foreground hover:bg-muted'), children: (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("span", { children: category.name }), showCount && counts[category.id] !== undefined && ((0, jsx_runtime_1.jsxs)("span", { className: "text-xs text-muted-foreground", children: ["(", counts[category.id], ")"] }))] }) }, category.id)))] })] }))] }));
98
- }
99
- // =============================================================================
100
- // Helpers
101
- // =============================================================================
102
- function flattenCategories(categories) {
103
- const result = [];
104
- function flatten(items) {
105
- items.forEach((item) => {
106
- result.push(item);
107
- if ('children' in item && Array.isArray(item.children) && item.children.length > 0) {
108
- flatten(item.children);
109
- }
110
- });
111
- }
112
- flatten(categories);
113
- return result;
114
- }
115
- //# sourceMappingURL=CategoryNav.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CategoryNav.js","sourceRoot":"","sources":["../../../src/products/components/CategoryNav.tsx"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import type { Category, Product } from '../../core/types';
2
- export interface BreadcrumbItem {
3
- label: string;
4
- href?: string;
5
- }
6
- export interface ProductBreadcrumbProps {
7
- /** Category path (from root to current) */
8
- categories?: Category[];
9
- /** Current product (optional, for product pages) */
10
- product?: Product | null;
11
- /** Custom className */
12
- className?: string;
13
- /** Show home link */
14
- showHome?: boolean;
15
- /** Home label */
16
- homeLabel?: string;
17
- /** Home href */
18
- homeHref?: string;
19
- /** Category href pattern */
20
- categoryHrefPattern?: string;
21
- /** Custom separator */
22
- separator?: React.ReactNode;
23
- /** Custom items (overrides categories/product) */
24
- items?: BreadcrumbItem[];
25
- }
26
- /**
27
- * ProductBreadcrumb component for navigation context.
28
- *
29
- * @example
30
- * ```tsx
31
- * import { ProductBreadcrumb, useCategories } from '@rovela/sdk/products'
32
- *
33
- * function ProductPage({ product, categorySlug }) {
34
- * const { getBreadcrumb, getCategoryBySlug } = useCategories()
35
- * const category = getCategoryBySlug(categorySlug)
36
- * const categoryPath = category ? getBreadcrumb(category.id) : []
37
- *
38
- * return (
39
- * <div>
40
- * <ProductBreadcrumb
41
- * categories={categoryPath}
42
- * product={product}
43
- * showHome
44
- * />
45
- * {// ... product content}
46
- * </div>
47
- * )
48
- * }
49
- * ```
50
- */
51
- export declare function ProductBreadcrumb({ categories, product, className, showHome, homeLabel, homeHref, categoryHrefPattern, separator, items: customItems, }: ProductBreadcrumbProps): import("react/jsx-runtime").JSX.Element;
52
- //# sourceMappingURL=ProductBreadcrumb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductBreadcrumb.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductBreadcrumb.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAMzD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,kDAAkD;IAClD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;CACzB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,UAAe,EACf,OAAO,EACP,SAAS,EACT,QAAe,EACf,SAAkB,EAClB,QAAc,EACd,mBAA0C,EAC1C,SAAS,EACT,KAAK,EAAE,WAAW,GACnB,EAAE,sBAAsB,2CAwFxB"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- '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.ProductBreadcrumb = ProductBreadcrumb;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
9
- /**
10
- * @rovela/sdk/products/components/ProductBreadcrumb
11
- *
12
- * Breadcrumb navigation for product and category pages.
13
- */
14
- const link_1 = __importDefault(require("next/link"));
15
- const utils_1 = require("../../core/utils");
16
- // =============================================================================
17
- // Component
18
- // =============================================================================
19
- /**
20
- * ProductBreadcrumb component for navigation context.
21
- *
22
- * @example
23
- * ```tsx
24
- * import { ProductBreadcrumb, useCategories } from '@rovela/sdk/products'
25
- *
26
- * function ProductPage({ product, categorySlug }) {
27
- * const { getBreadcrumb, getCategoryBySlug } = useCategories()
28
- * const category = getCategoryBySlug(categorySlug)
29
- * const categoryPath = category ? getBreadcrumb(category.id) : []
30
- *
31
- * return (
32
- * <div>
33
- * <ProductBreadcrumb
34
- * categories={categoryPath}
35
- * product={product}
36
- * showHome
37
- * />
38
- * {// ... product content}
39
- * </div>
40
- * )
41
- * }
42
- * ```
43
- */
44
- function ProductBreadcrumb({ categories = [], product, className, showHome = true, homeLabel = 'Home', homeHref = '/', categoryHrefPattern = '/categories/[slug]', separator, items: customItems, }) {
45
- // Build breadcrumb items
46
- const items = [];
47
- if (customItems) {
48
- // Use custom items if provided
49
- items.push(...customItems);
50
- }
51
- else {
52
- // Build from categories and product
53
- if (showHome) {
54
- items.push({ label: homeLabel, href: homeHref });
55
- }
56
- // Add "Shop" or "Products" link
57
- items.push({ label: 'Products', href: '/products' });
58
- // Add category path
59
- categories.forEach((category) => {
60
- items.push({
61
- label: category.name,
62
- href: categoryHrefPattern.replace('[slug]', category.slug),
63
- });
64
- });
65
- // Add product (no link, it's the current page)
66
- if (product) {
67
- items.push({ label: product.name });
68
- }
69
- }
70
- const defaultSeparator = ((0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4 flex-shrink-0 text-muted-foreground", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }));
71
- return ((0, jsx_runtime_1.jsx)("nav", { className: (0, utils_1.cn)('flex items-center text-sm', className), "aria-label": "Breadcrumb", children: (0, jsx_runtime_1.jsx)("ol", { className: "flex flex-wrap items-center gap-1.5", children: items.map((item, index) => {
72
- const isLast = index === items.length - 1;
73
- return ((0, jsx_runtime_1.jsxs)("li", { className: "flex items-center gap-1.5", children: [index > 0 && ((0, jsx_runtime_1.jsx)("span", { className: "flex-shrink-0", "aria-hidden": "true", children: separator || defaultSeparator })), item.href && !isLast ? ((0, jsx_runtime_1.jsx)(link_1.default, { href: item.href, className: "text-muted-foreground transition-colors hover:text-foreground", children: item.label })) : ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)(isLast
74
- ? 'font-medium text-foreground'
75
- : 'text-muted-foreground'), "aria-current": isLast ? 'page' : undefined, children: item.label }))] }, index));
76
- }) }) }));
77
- }
78
- //# sourceMappingURL=ProductBreadcrumb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductBreadcrumb.js","sourceRoot":"","sources":["../../../src/products/components/ProductBreadcrumb.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;;AAuEZ,8CAkGC;;AAvKD;;;;GAIG;AAEH,qDAA4B;AAC5B,4CAAqC;AAiCrC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,iBAAiB,CAAC,EAChC,UAAU,GAAG,EAAE,EACf,OAAO,EACP,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,MAAM,EAClB,QAAQ,GAAG,GAAG,EACd,mBAAmB,GAAG,oBAAoB,EAC1C,SAAS,EACT,KAAK,EAAE,WAAW,GACK;IACvB,yBAAyB;IACzB,MAAM,KAAK,GAAqB,EAAE,CAAA;IAElC,IAAI,WAAW,EAAE,CAAC;QAChB,+BAA+B;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,oCAAoC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QAClD,CAAC;QAED,gCAAgC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QAEpD,oBAAoB;QACpB,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;aAC3D,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,+CAA+C;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,CACvB,gCACE,SAAS,EAAC,6CAA6C,EACvD,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,YAEnB,iCACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,cAAc,GAChB,GACE,CACP,CAAA;IAED,OAAO,CACL,gCACE,SAAS,EAAE,IAAA,UAAE,EAAC,2BAA2B,EAAE,SAAS,CAAC,gBAC1C,YAAY,YAEvB,+BAAI,SAAS,EAAC,qCAAqC,YAChD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;gBAEzC,OAAO,CACL,gCAAgB,SAAS,EAAC,2BAA2B,aAClD,KAAK,GAAG,CAAC,IAAI,CACZ,iCAAM,SAAS,EAAC,eAAe,iBAAa,MAAM,YAC/C,SAAS,IAAI,gBAAgB,GACzB,CACR,EAEA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACtB,uBAAC,cAAI,IACH,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAC,+DAA+D,YAExE,IAAI,CAAC,KAAK,GACN,CACR,CAAC,CAAC,CAAC,CACF,iCACE,SAAS,EAAE,IAAA,UAAE,EACX,MAAM;gCACJ,CAAC,CAAC,6BAA6B;gCAC/B,CAAC,CAAC,uBAAuB,CAC5B,kBACa,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAExC,IAAI,CAAC,KAAK,GACN,CACR,KAzBM,KAAK,CA0BT,CACN,CAAA;YACH,CAAC,CAAC,GACC,GACD,CACP,CAAA;AACH,CAAC"}
@@ -1,54 +0,0 @@
1
- /**
2
- * @rovela/sdk/products/components/ProductCard
3
- *
4
- * Product card component for catalog display.
5
- */
6
- import { type ReactNode } from 'react';
7
- import type { Product } from '../../core/types';
8
- export interface ProductCardProps {
9
- /** Product data */
10
- product: Product;
11
- /** Show quick add button */
12
- showQuickAdd?: boolean;
13
- /** Quick add handler */
14
- onQuickAdd?: (product: Product) => void;
15
- /** Image aspect ratio */
16
- imageAspect?: 'square' | 'portrait' | 'landscape';
17
- /** Custom className */
18
- className?: string;
19
- /** Currency for price formatting */
20
- currency?: string;
21
- /** Locale for price formatting */
22
- locale?: string;
23
- /** Custom quick add button content */
24
- quickAddContent?: ReactNode;
25
- /** Link href pattern (default: /products/[slug]) */
26
- href?: string;
27
- /** Show discount badge */
28
- showDiscount?: boolean;
29
- }
30
- /**
31
- * ProductCard component for displaying products in a grid.
32
- *
33
- * @example
34
- * ```tsx
35
- * import { ProductCard } from '@rovela/sdk/products'
36
- *
37
- * function ProductGrid({ products }) {
38
- * return (
39
- * <div className="grid grid-cols-3 gap-4">
40
- * {products.map(product => (
41
- * <ProductCard
42
- * key={product.id}
43
- * product={product}
44
- * showQuickAdd
45
- * onQuickAdd={handleQuickAdd}
46
- * />
47
- * ))}
48
- * </div>
49
- * )
50
- * }
51
- * ```
52
- */
53
- export declare function ProductCard({ product, showQuickAdd, onQuickAdd, imageAspect, className, currency, locale, quickAddContent, href, showDiscount, }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
54
- //# sourceMappingURL=ProductCard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductCard.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAM/C,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,yBAAyB;IACzB,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAA;IACjD,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sCAAsC;IACtC,eAAe,CAAC,EAAE,SAAS,CAAA;IAC3B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,YAAoB,EACpB,UAAU,EACV,WAAsB,EACtB,SAAS,EACT,QAAgB,EAChB,MAAgB,EAChB,eAAe,EACf,IAAI,EACJ,YAAmB,GACpB,EAAE,gBAAgB,2CAqHlB"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- '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.ProductCard = ProductCard;
8
- const jsx_runtime_1 = require("react/jsx-runtime");
9
- const image_1 = __importDefault(require("next/image"));
10
- const link_1 = __importDefault(require("next/link"));
11
- const utils_1 = require("../../core/utils");
12
- // =============================================================================
13
- // Component
14
- // =============================================================================
15
- /**
16
- * ProductCard component for displaying products in a grid.
17
- *
18
- * @example
19
- * ```tsx
20
- * import { ProductCard } from '@rovela/sdk/products'
21
- *
22
- * function ProductGrid({ products }) {
23
- * return (
24
- * <div className="grid grid-cols-3 gap-4">
25
- * {products.map(product => (
26
- * <ProductCard
27
- * key={product.id}
28
- * product={product}
29
- * showQuickAdd
30
- * onQuickAdd={handleQuickAdd}
31
- * />
32
- * ))}
33
- * </div>
34
- * )
35
- * }
36
- * ```
37
- */
38
- function ProductCard({ product, showQuickAdd = false, onQuickAdd, imageAspect = 'square', className, currency = 'USD', locale = 'en-US', quickAddContent, href, showDiscount = true, }) {
39
- const aspectClasses = {
40
- square: 'aspect-square',
41
- portrait: 'aspect-[3/4]',
42
- landscape: 'aspect-[4/3]',
43
- };
44
- const productHref = href || `/products/${product.slug}`;
45
- const mainImage = product.images?.[0];
46
- // Calculate discount percentage
47
- const price = typeof product.price === 'string'
48
- ? parseFloat(product.price)
49
- : product.price;
50
- const comparePrice = product.comparePrice
51
- ? typeof product.comparePrice === 'string'
52
- ? parseFloat(product.comparePrice)
53
- : product.comparePrice
54
- : null;
55
- const discountPercent = comparePrice && comparePrice > price
56
- ? Math.round(((comparePrice - price) / comparePrice) * 100)
57
- : null;
58
- const handleQuickAdd = (e) => {
59
- e.preventDefault();
60
- e.stopPropagation();
61
- onQuickAdd?.(product);
62
- };
63
- return ((0, jsx_runtime_1.jsxs)("article", { className: (0, utils_1.cn)('group relative flex flex-col overflow-hidden rounded-lg border bg-card text-card-foreground transition-shadow hover:shadow-md', className), children: [(0, jsx_runtime_1.jsx)(link_1.default, { href: productHref, className: "relative block overflow-hidden", children: (0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)('relative w-full bg-muted', aspectClasses[imageAspect]), children: [mainImage ? ((0, jsx_runtime_1.jsx)(image_1.default, { src: mainImage, alt: product.name, fill: true, sizes: "(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw", className: "object-cover transition-transform duration-300 group-hover:scale-105" })) : ((0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 flex items-center justify-center text-muted-foreground", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-12 w-12", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1, d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" }) }) })), showDiscount && discountPercent && ((0, jsx_runtime_1.jsxs)("span", { className: "absolute left-2 top-2 rounded-full bg-destructive px-2 py-0.5 text-xs font-medium text-destructive-foreground", children: ["-", discountPercent, "%"] })), showQuickAdd && ((0, jsx_runtime_1.jsx)("div", { className: "absolute inset-x-0 bottom-0 translate-y-full bg-gradient-to-t from-black/60 to-transparent p-4 opacity-0 transition-all duration-200 group-hover:translate-y-0 group-hover:opacity-100", children: (0, jsx_runtime_1.jsx)("button", { onClick: handleQuickAdd, className: "w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90", children: quickAddContent || 'Quick Add' }) }))] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-1 flex-col p-4", children: [(0, jsx_runtime_1.jsx)(link_1.default, { href: productHref, className: "flex-1", children: (0, jsx_runtime_1.jsx)("h3", { className: "line-clamp-2 font-medium text-foreground transition-colors hover:text-primary", children: product.name }) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2 flex items-baseline gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-lg font-semibold text-foreground", children: (0, utils_1.formatPrice)(price, { currency, locale }) }), comparePrice && comparePrice > price && ((0, jsx_runtime_1.jsx)("span", { className: "text-sm text-muted-foreground line-through", children: (0, utils_1.formatPrice)(comparePrice, { currency, locale }) }))] }), product.hasVariants && ((0, jsx_runtime_1.jsx)("p", { className: "mt-1 text-xs text-muted-foreground", children: "Multiple options available" }))] })] }));
64
- }
65
- //# sourceMappingURL=ProductCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductCard.js","sourceRoot":"","sources":["../../../src/products/components/ProductCard.tsx"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- /**
2
- * @rovela/sdk/products/components/ProductDetails
3
- *
4
- * Full product details component for product pages.
5
- */
6
- import { type ReactNode } from 'react';
7
- import type { Product, ProductVariant } from '../../core/types';
8
- export interface ProductDetailsProps {
9
- /** Product data */
10
- product: Product;
11
- /** Product variants */
12
- variants?: ProductVariant[];
13
- /** Custom className */
14
- className?: string;
15
- /** Currency for price formatting */
16
- currency?: string;
17
- /** Locale for price formatting */
18
- locale?: string;
19
- /** Add to cart handler */
20
- onAddToCart?: (product: Product, variant: ProductVariant | null, quantity: number) => void;
21
- /** Buy now handler */
22
- onBuyNow?: (product: Product, variant: ProductVariant | null, quantity: number) => void;
23
- /** Custom add to cart button content */
24
- addToCartContent?: ReactNode;
25
- /** Custom buy now button content */
26
- buyNowContent?: ReactNode;
27
- /** Show buy now button */
28
- showBuyNow?: boolean;
29
- /** Show quantity selector */
30
- showQuantity?: boolean;
31
- /** Maximum quantity allowed */
32
- maxQuantity?: number;
33
- /** Show stock status */
34
- showStock?: boolean;
35
- /** Show variant selector labels */
36
- variantLabels?: Record<string, string>;
37
- /** Gallery position */
38
- galleryPosition?: 'left' | 'top';
39
- /** Children rendered after description */
40
- children?: ReactNode;
41
- }
42
- /**
43
- * ProductDetails component for product pages.
44
- *
45
- * @example
46
- * ```tsx
47
- * import { ProductDetails } from '@rovela/sdk/products'
48
- *
49
- * function ProductPage({ product, variants }) {
50
- * return (
51
- * <ProductDetails
52
- * product={product}
53
- * variants={variants}
54
- * onAddToCart={handleAddToCart}
55
- * showBuyNow
56
- * showStock
57
- * />
58
- * )
59
- * }
60
- * ```
61
- */
62
- export declare function ProductDetails({ product, variants, className, currency, locale, onAddToCart, onBuyNow, addToCartContent, buyNowContent, showBuyNow, showQuantity, maxQuantity, showStock, variantLabels, galleryPosition, children, }: ProductDetailsProps): import("react/jsx-runtime").JSX.Element;
63
- //# sourceMappingURL=ProductDetails.d.ts.map