@classytic/commerce-sdk 0.1.1 → 0.2.1

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 (438) hide show
  1. package/README.md +187 -74
  2. package/dist/accounting/api/account.d.ts +49 -0
  3. package/dist/accounting/api/account.js +45 -0
  4. package/dist/accounting/api/budget.d.ts +76 -0
  5. package/dist/accounting/api/budget.js +82 -0
  6. package/dist/accounting/api/constants.d.ts +58 -0
  7. package/dist/accounting/api/constants.js +79 -0
  8. package/dist/accounting/api/fiscal-period.d.ts +31 -0
  9. package/dist/accounting/api/fiscal-period.js +30 -0
  10. package/dist/accounting/api/index.d.ts +7 -0
  11. package/dist/accounting/api/journal-entry.d.ts +66 -0
  12. package/dist/accounting/api/journal-entry.js +72 -0
  13. package/dist/accounting/api/posting.d.ts +55 -0
  14. package/dist/accounting/api/posting.js +70 -0
  15. package/dist/accounting/api/reports.d.ts +63 -0
  16. package/dist/accounting/api/reports.js +81 -0
  17. package/dist/accounting/hooks/account.d.ts +29 -0
  18. package/dist/accounting/hooks/account.js +102 -0
  19. package/dist/accounting/hooks/budget.d.ts +39 -0
  20. package/dist/accounting/hooks/budget.js +106 -0
  21. package/dist/accounting/hooks/fiscal-period.d.ts +22 -0
  22. package/dist/accounting/hooks/fiscal-period.js +52 -0
  23. package/dist/accounting/hooks/index.d.ts +6 -0
  24. package/dist/accounting/hooks/journal-entry.d.ts +37 -0
  25. package/dist/accounting/hooks/journal-entry.js +89 -0
  26. package/dist/accounting/hooks/posting.d.ts +128 -0
  27. package/dist/accounting/hooks/posting.js +119 -0
  28. package/dist/accounting/hooks/reports.d.ts +32 -0
  29. package/dist/accounting/hooks/reports.js +131 -0
  30. package/dist/accounting/index.d.ts +15 -0
  31. package/dist/accounting/index.js +15 -0
  32. package/dist/accounting/types/index.d.ts +375 -0
  33. package/dist/analytics/api/analytics.d.ts +16 -0
  34. package/dist/analytics/api/analytics.js +27 -0
  35. package/dist/analytics/api/index.d.ts +1 -0
  36. package/dist/analytics/hooks/analytics.d.ts +12 -0
  37. package/dist/analytics/hooks/analytics.js +33 -0
  38. package/dist/analytics/hooks/index.d.ts +1 -0
  39. package/dist/analytics/index.d.ts +4 -27
  40. package/dist/analytics/index.js +4 -6
  41. package/dist/analytics/types.d.ts +46 -0
  42. package/dist/audit/api/audit.d.ts +17 -0
  43. package/dist/audit/api/audit.js +21 -0
  44. package/dist/audit/hooks/audit.d.ts +17 -0
  45. package/dist/audit/hooks/audit.js +38 -0
  46. package/dist/audit/index.d.ts +4 -0
  47. package/dist/audit/index.js +4 -0
  48. package/dist/audit/types/index.d.ts +32 -0
  49. package/dist/auth/api/user-data.d.ts +30 -0
  50. package/dist/auth/api/user-data.js +70 -0
  51. package/dist/auth/hooks/user-search.d.ts +32 -0
  52. package/dist/auth/hooks/user-search.js +51 -0
  53. package/dist/auth/index.d.ts +4 -39
  54. package/dist/auth/index.js +5 -5
  55. package/dist/auth/types.d.ts +46 -0
  56. package/dist/auth/types.js +27 -0
  57. package/dist/catalog/api/category.d.ts +97 -0
  58. package/dist/catalog/api/category.js +109 -0
  59. package/dist/catalog/api/index.d.ts +4 -0
  60. package/dist/catalog/api/product.d.ts +136 -0
  61. package/dist/catalog/api/product.js +142 -0
  62. package/dist/catalog/api/review.d.ts +32 -0
  63. package/dist/catalog/api/review.js +41 -0
  64. package/dist/catalog/api/size-guide.d.ts +46 -0
  65. package/dist/catalog/api/size-guide.js +58 -0
  66. package/dist/catalog/hooks/category.d.ts +201 -0
  67. package/dist/catalog/hooks/category.js +295 -0
  68. package/dist/catalog/hooks/index.d.ts +4 -0
  69. package/dist/catalog/hooks/product.d.ts +165 -0
  70. package/dist/catalog/hooks/product.js +267 -0
  71. package/dist/catalog/hooks/review.d.ts +18 -0
  72. package/dist/catalog/hooks/review.js +38 -0
  73. package/dist/catalog/hooks/size-guide.d.ts +136 -0
  74. package/dist/catalog/hooks/size-guide.js +173 -0
  75. package/dist/catalog/index.d.ts +13 -571
  76. package/dist/catalog/index.js +10 -9
  77. package/dist/catalog/prefetch.d.ts +29 -0
  78. package/dist/catalog/prefetch.js +32 -0
  79. package/dist/catalog/types/category.d.ts +168 -0
  80. package/dist/catalog/types/index.d.ts +4 -0
  81. package/dist/catalog/types/product.d.ts +261 -0
  82. package/dist/catalog/types/review.d.ts +48 -0
  83. package/dist/catalog/types/size-guide.d.ts +118 -0
  84. package/dist/client.d.ts +138 -0
  85. package/dist/client.js +129 -0
  86. package/dist/content/api/cms.d.ts +27 -0
  87. package/dist/content/api/cms.js +43 -0
  88. package/dist/content/api/index.d.ts +2 -0
  89. package/dist/content/api/media.d.ts +74 -0
  90. package/dist/content/api/media.js +77 -0
  91. package/dist/content/hooks/cms.d.ts +31 -0
  92. package/dist/content/hooks/cms.js +62 -0
  93. package/dist/content/hooks/index.d.ts +2 -0
  94. package/dist/content/hooks/media.d.ts +74 -0
  95. package/dist/content/hooks/media.js +153 -0
  96. package/dist/content/index.d.ts +7 -309
  97. package/dist/content/index.js +6 -6
  98. package/dist/content/types/cms.d.ts +390 -0
  99. package/dist/content/types/media.d.ts +110 -0
  100. package/dist/core/api-factory.d.ts +17 -0
  101. package/dist/core/api-factory.js +39 -0
  102. package/dist/core/api-handler.d.ts +53 -0
  103. package/dist/core/api-handler.js +89 -0
  104. package/dist/core/index.d.ts +4 -166
  105. package/dist/core/index.js +4 -5
  106. package/dist/core/prefetch.d.ts +2 -0
  107. package/dist/core/prefetch.js +3 -0
  108. package/dist/core/react/crud.factory.d.ts +3 -0
  109. package/dist/core/react/crud.factory.js +5 -0
  110. package/dist/core/react/index.d.ts +4 -0
  111. package/dist/core/react/index.js +7 -0
  112. package/dist/core/react/mutation.factory.d.ts +9 -0
  113. package/dist/core/react/mutation.factory.js +21 -0
  114. package/dist/core/react/query.factory.d.ts +12 -0
  115. package/dist/core/react/query.factory.js +5 -0
  116. package/dist/core/server-context.d.ts +6 -0
  117. package/dist/core/server-context.js +12 -0
  118. package/dist/core/types/shared.d.ts +29 -0
  119. package/dist/finance/api/finance.d.ts +22 -0
  120. package/dist/finance/api/finance.js +29 -0
  121. package/dist/finance/api/index.d.ts +1 -0
  122. package/dist/finance/hooks/finance.d.ts +32 -0
  123. package/dist/finance/hooks/finance.js +66 -0
  124. package/dist/finance/hooks/index.d.ts +1 -0
  125. package/dist/finance/index.d.ts +4 -81
  126. package/dist/finance/index.js +4 -5
  127. package/dist/finance/types/finance.d.ts +82 -0
  128. package/dist/index.d.ts +139 -32
  129. package/dist/index.js +113 -29
  130. package/dist/inventory/api/adjustment.d.ts +123 -0
  131. package/dist/inventory/api/adjustment.js +120 -0
  132. package/dist/inventory/api/availability.d.ts +70 -0
  133. package/dist/inventory/api/availability.js +47 -0
  134. package/dist/inventory/api/cost.d.ts +58 -0
  135. package/dist/inventory/api/cost.js +34 -0
  136. package/dist/inventory/api/index.d.ts +18 -0
  137. package/dist/inventory/api/lot.d.ts +82 -0
  138. package/dist/inventory/api/lot.js +46 -0
  139. package/dist/inventory/api/movement.d.ts +71 -0
  140. package/dist/inventory/api/movement.js +75 -0
  141. package/dist/inventory/api/package.d.ts +97 -0
  142. package/dist/inventory/api/package.js +56 -0
  143. package/dist/inventory/api/procurement.d.ts +110 -0
  144. package/dist/inventory/api/procurement.js +59 -0
  145. package/dist/inventory/api/purchase.d.ts +106 -0
  146. package/dist/inventory/api/purchase.js +115 -0
  147. package/dist/inventory/api/replenishment.d.ts +145 -0
  148. package/dist/inventory/api/replenishment.js +63 -0
  149. package/dist/inventory/api/report.d.ts +102 -0
  150. package/dist/inventory/api/report.js +54 -0
  151. package/dist/inventory/api/request.d.ts +157 -0
  152. package/dist/inventory/api/request.js +140 -0
  153. package/dist/inventory/api/reservation.d.ts +77 -0
  154. package/dist/inventory/api/reservation.js +51 -0
  155. package/dist/inventory/api/scan.d.ts +29 -0
  156. package/dist/inventory/api/scan.js +30 -0
  157. package/dist/inventory/api/supplier.d.ts +9 -0
  158. package/dist/inventory/api/supplier.js +24 -0
  159. package/dist/inventory/api/trace.d.ts +71 -0
  160. package/dist/inventory/api/trace.js +39 -0
  161. package/dist/inventory/api/transfer.d.ts +162 -0
  162. package/dist/inventory/api/transfer.js +155 -0
  163. package/dist/inventory/api/warehouse.d.ts +199 -0
  164. package/dist/inventory/api/warehouse.js +155 -0
  165. package/dist/inventory/hooks/adjustment.d.ts +24 -0
  166. package/dist/inventory/hooks/adjustment.js +30 -0
  167. package/dist/inventory/hooks/availability.d.ts +16 -0
  168. package/dist/inventory/hooks/availability.js +35 -0
  169. package/dist/inventory/hooks/cost.d.ts +21 -0
  170. package/dist/inventory/hooks/cost.js +50 -0
  171. package/dist/inventory/hooks/index.d.ts +18 -0
  172. package/dist/inventory/hooks/inventory.d.ts +130 -0
  173. package/dist/inventory/hooks/inventory.js +267 -0
  174. package/dist/inventory/hooks/lot.d.ts +26 -0
  175. package/dist/inventory/hooks/lot.js +67 -0
  176. package/dist/inventory/hooks/movement.d.ts +68 -0
  177. package/dist/inventory/hooks/movement.js +106 -0
  178. package/dist/inventory/hooks/package.d.ts +32 -0
  179. package/dist/inventory/hooks/package.js +80 -0
  180. package/dist/inventory/hooks/procurement.d.ts +28 -0
  181. package/dist/inventory/hooks/procurement.js +87 -0
  182. package/dist/inventory/hooks/purchase.d.ts +63 -0
  183. package/dist/inventory/hooks/purchase.js +119 -0
  184. package/dist/inventory/hooks/replenishment.d.ts +34 -0
  185. package/dist/inventory/hooks/replenishment.js +87 -0
  186. package/dist/inventory/hooks/report.d.ts +37 -0
  187. package/dist/inventory/hooks/report.js +79 -0
  188. package/dist/inventory/hooks/request.d.ts +113 -0
  189. package/dist/inventory/hooks/request.js +218 -0
  190. package/dist/inventory/hooks/reservation.d.ts +25 -0
  191. package/dist/inventory/hooks/reservation.js +56 -0
  192. package/dist/inventory/hooks/scan.d.ts +14 -0
  193. package/dist/inventory/hooks/scan.js +22 -0
  194. package/dist/inventory/hooks/supplier.d.ts +24 -0
  195. package/dist/inventory/hooks/supplier.js +30 -0
  196. package/dist/inventory/hooks/trace.d.ts +19 -0
  197. package/dist/inventory/hooks/trace.js +55 -0
  198. package/dist/inventory/hooks/transfer.d.ts +90 -0
  199. package/dist/inventory/hooks/transfer.js +197 -0
  200. package/dist/inventory/hooks/warehouse.d.ts +87 -0
  201. package/dist/inventory/hooks/warehouse.js +240 -0
  202. package/dist/inventory/index.d.ts +39 -512
  203. package/dist/inventory/index.js +37 -16
  204. package/dist/inventory/types/index.d.ts +3 -0
  205. package/dist/inventory/types/inventory.d.ts +485 -0
  206. package/dist/inventory/types/supplier.d.ts +90 -0
  207. package/dist/inventory/types/warehouse.d.ts +182 -0
  208. package/dist/logistics/api/index.d.ts +1 -0
  209. package/dist/logistics/api/logistics.d.ts +260 -0
  210. package/dist/logistics/api/logistics.js +249 -0
  211. package/dist/logistics/hooks/index.d.ts +1 -0
  212. package/dist/logistics/hooks/logistics.d.ts +252 -0
  213. package/dist/logistics/hooks/logistics.js +370 -0
  214. package/dist/logistics/index.d.ts +4 -248
  215. package/dist/logistics/index.js +4 -7
  216. package/dist/logistics/types/logistics.d.ts +188 -0
  217. package/dist/node_modules/@tanstack/query-core/build/modern/hydration-C-jfQLut.d.ts +270 -0
  218. package/dist/notifications/api/notification.d.ts +15 -0
  219. package/dist/notifications/api/notification.js +43 -0
  220. package/dist/notifications/hooks/notification.d.ts +34 -0
  221. package/dist/notifications/hooks/notification.js +86 -0
  222. package/dist/notifications/hooks/stream.d.ts +22 -0
  223. package/dist/notifications/hooks/stream.js +80 -0
  224. package/dist/notifications/index.d.ts +5 -0
  225. package/dist/notifications/index.js +5 -0
  226. package/dist/notifications/types/index.d.ts +57 -0
  227. package/dist/payments/api/index.d.ts +1 -0
  228. package/dist/payments/api/payment.d.ts +89 -0
  229. package/dist/payments/api/payment.js +93 -0
  230. package/dist/payments/hooks/payment.d.ts +53 -0
  231. package/dist/payments/hooks/payment.js +93 -0
  232. package/dist/payments/index.d.ts +4 -55
  233. package/dist/payments/index.js +4 -6
  234. package/dist/payments/types/payment.d.ts +50 -0
  235. package/dist/permissions/checker.d.ts +125 -0
  236. package/dist/permissions/checker.js +150 -0
  237. package/dist/permissions/index.d.ts +3 -0
  238. package/dist/permissions/index.js +4 -0
  239. package/dist/permissions/roles.d.ts +39 -0
  240. package/dist/permissions/roles.js +66 -0
  241. package/dist/platform/api/branch.d.ts +57 -0
  242. package/dist/platform/api/branch.js +73 -0
  243. package/dist/platform/api/config.d.ts +67 -0
  244. package/dist/platform/api/config.js +83 -0
  245. package/dist/platform/api/features.d.ts +15 -0
  246. package/dist/platform/api/features.js +20 -0
  247. package/dist/platform/api/index.d.ts +6 -0
  248. package/dist/platform/api/promo.d.ts +286 -0
  249. package/dist/platform/api/promo.js +276 -0
  250. package/dist/platform/api/user.d.ts +10 -0
  251. package/dist/platform/api/user.js +29 -0
  252. package/dist/platform/api/webhook.d.ts +102 -0
  253. package/dist/platform/api/webhook.js +124 -0
  254. package/dist/platform/hooks/branch.d.ts +24 -0
  255. package/dist/platform/hooks/branch.js +31 -0
  256. package/dist/platform/hooks/config.d.ts +61 -0
  257. package/dist/platform/hooks/config.js +100 -0
  258. package/dist/platform/hooks/features.d.ts +22 -0
  259. package/dist/platform/hooks/features.js +75 -0
  260. package/dist/platform/hooks/index.d.ts +6 -0
  261. package/dist/platform/hooks/promo.d.ts +218 -0
  262. package/dist/platform/hooks/promo.js +451 -0
  263. package/dist/platform/hooks/user.d.ts +24 -0
  264. package/dist/platform/hooks/user.js +30 -0
  265. package/dist/platform/index.d.ts +18 -645
  266. package/dist/platform/index.js +14 -8
  267. package/dist/platform/prefetch.d.ts +9 -0
  268. package/dist/platform/prefetch.js +11 -0
  269. package/dist/platform/types/branch.d.ts +110 -0
  270. package/dist/platform/types/branch.js +16 -0
  271. package/dist/platform/types/config.d.ts +137 -0
  272. package/dist/platform/types/features.d.ts +46 -0
  273. package/dist/platform/types/promo.d.ts +260 -0
  274. package/dist/platform/types/user.d.ts +72 -0
  275. package/dist/platform/types/webhook.d.ts +165 -0
  276. package/dist/sales/api/cart.d.ts +34 -0
  277. package/dist/sales/api/cart.js +38 -0
  278. package/dist/sales/api/customer.d.ts +40 -0
  279. package/dist/sales/api/customer.js +52 -0
  280. package/dist/sales/api/earning-rules.d.ts +54 -0
  281. package/dist/sales/api/earning-rules.js +56 -0
  282. package/dist/sales/api/index.d.ts +9 -0
  283. package/dist/sales/api/loyalty.d.ts +54 -0
  284. package/dist/sales/api/loyalty.js +57 -0
  285. package/dist/sales/api/order.d.ts +147 -0
  286. package/dist/sales/api/order.js +69 -0
  287. package/dist/sales/api/pos.d.ts +81 -0
  288. package/dist/sales/api/pos.js +95 -0
  289. package/dist/sales/api/referrals.d.ts +63 -0
  290. package/dist/sales/api/referrals.js +62 -0
  291. package/dist/sales/api/tiers.d.ts +66 -0
  292. package/dist/sales/api/tiers.js +59 -0
  293. package/dist/sales/hooks/cart.d.ts +50 -0
  294. package/dist/sales/hooks/cart.js +161 -0
  295. package/dist/sales/hooks/customer.d.ts +100 -0
  296. package/dist/sales/hooks/customer.js +130 -0
  297. package/dist/sales/hooks/earning-rules.d.ts +31 -0
  298. package/dist/sales/hooks/earning-rules.js +112 -0
  299. package/dist/sales/hooks/index.d.ts +8 -0
  300. package/dist/sales/hooks/loyalty.d.ts +51 -0
  301. package/dist/sales/hooks/loyalty.js +122 -0
  302. package/dist/sales/hooks/order.d.ts +219 -0
  303. package/dist/sales/hooks/order.js +401 -0
  304. package/dist/sales/hooks/pos.d.ts +87 -0
  305. package/dist/sales/hooks/pos.js +222 -0
  306. package/dist/sales/hooks/referrals.d.ts +34 -0
  307. package/dist/sales/hooks/referrals.js +132 -0
  308. package/dist/sales/hooks/tiers.d.ts +32 -0
  309. package/dist/sales/hooks/tiers.js +144 -0
  310. package/dist/sales/index.d.ts +25 -587
  311. package/dist/sales/index.js +19 -9
  312. package/dist/sales/prefetch.d.ts +10 -0
  313. package/dist/sales/prefetch.js +13 -0
  314. package/dist/sales/types/cart.d.ts +123 -0
  315. package/dist/sales/types/customer.d.ts +119 -0
  316. package/dist/sales/types/earning-rules.d.ts +75 -0
  317. package/dist/sales/types/index.d.ts +8 -0
  318. package/dist/sales/types/loyalty.d.ts +120 -0
  319. package/dist/sales/types/order.d.ts +487 -0
  320. package/dist/sales/types/order.js +22 -0
  321. package/dist/sales/types/pos.d.ts +227 -0
  322. package/dist/sales/types/referrals.d.ts +51 -0
  323. package/dist/sales/types/tiers.d.ts +56 -0
  324. package/dist/server.d.ts +41 -23
  325. package/dist/server.js +41 -36
  326. package/dist/transaction/api/index.d.ts +1 -0
  327. package/dist/transaction/api/transaction.d.ts +63 -0
  328. package/dist/transaction/api/transaction.js +84 -0
  329. package/dist/transaction/hooks/index.d.ts +1 -0
  330. package/dist/transaction/hooks/transaction.d.ts +106 -0
  331. package/dist/transaction/hooks/transaction.js +156 -0
  332. package/dist/transaction/index.d.ts +4 -104
  333. package/dist/transaction/index.js +5 -8
  334. package/dist/transaction/types/transaction.d.ts +440 -0
  335. package/dist/transaction/types/transaction.js +86 -0
  336. package/package.json +36 -25
  337. package/dist/adjustment-MNH3AT6S.js +0 -5
  338. package/dist/adjustment-MNH3AT6S.js.map +0 -1
  339. package/dist/analytics/index.js.map +0 -1
  340. package/dist/analytics-DMcD-o8w.d.ts +0 -76
  341. package/dist/api-factory-B_h4RKBm.d.ts +0 -280
  342. package/dist/auth/index.js.map +0 -1
  343. package/dist/catalog/index.js.map +0 -1
  344. package/dist/chunk-24FDD6UR.js +0 -75
  345. package/dist/chunk-24FDD6UR.js.map +0 -1
  346. package/dist/chunk-2TF7QNYV.js +0 -159
  347. package/dist/chunk-2TF7QNYV.js.map +0 -1
  348. package/dist/chunk-2YAZ5WG6.js +0 -479
  349. package/dist/chunk-2YAZ5WG6.js.map +0 -1
  350. package/dist/chunk-36NLLAVH.js +0 -177
  351. package/dist/chunk-36NLLAVH.js.map +0 -1
  352. package/dist/chunk-3OYSJB3P.js +0 -126
  353. package/dist/chunk-3OYSJB3P.js.map +0 -1
  354. package/dist/chunk-5E57JODA.js +0 -135
  355. package/dist/chunk-5E57JODA.js.map +0 -1
  356. package/dist/chunk-7LZCW4VF.js +0 -13
  357. package/dist/chunk-7LZCW4VF.js.map +0 -1
  358. package/dist/chunk-ANYGZ6O5.js +0 -830
  359. package/dist/chunk-ANYGZ6O5.js.map +0 -1
  360. package/dist/chunk-AQAISI4F.js +0 -183
  361. package/dist/chunk-AQAISI4F.js.map +0 -1
  362. package/dist/chunk-B6MPVOV7.js +0 -328
  363. package/dist/chunk-B6MPVOV7.js.map +0 -1
  364. package/dist/chunk-CILP56G2.js +0 -94
  365. package/dist/chunk-CILP56G2.js.map +0 -1
  366. package/dist/chunk-ERQ52WHY.js +0 -534
  367. package/dist/chunk-ERQ52WHY.js.map +0 -1
  368. package/dist/chunk-FOTUJPM4.js +0 -640
  369. package/dist/chunk-FOTUJPM4.js.map +0 -1
  370. package/dist/chunk-IHCBBLLW.js +0 -198
  371. package/dist/chunk-IHCBBLLW.js.map +0 -1
  372. package/dist/chunk-J4JBQET2.js +0 -76
  373. package/dist/chunk-J4JBQET2.js.map +0 -1
  374. package/dist/chunk-L4OEI4VZ.js +0 -123
  375. package/dist/chunk-L4OEI4VZ.js.map +0 -1
  376. package/dist/chunk-LRV7MWWX.js +0 -616
  377. package/dist/chunk-LRV7MWWX.js.map +0 -1
  378. package/dist/chunk-N43VE355.js +0 -126
  379. package/dist/chunk-N43VE355.js.map +0 -1
  380. package/dist/chunk-PYYLHUV6.js +0 -3
  381. package/dist/chunk-PYYLHUV6.js.map +0 -1
  382. package/dist/chunk-QCTXAMLA.js +0 -261
  383. package/dist/chunk-QCTXAMLA.js.map +0 -1
  384. package/dist/chunk-RIKAPJNG.js +0 -40
  385. package/dist/chunk-RIKAPJNG.js.map +0 -1
  386. package/dist/chunk-U3XT35GZ.js +0 -202
  387. package/dist/chunk-U3XT35GZ.js.map +0 -1
  388. package/dist/chunk-W22WB3WZ.js +0 -148
  389. package/dist/chunk-W22WB3WZ.js.map +0 -1
  390. package/dist/chunk-WTIJMKML.js +0 -27
  391. package/dist/chunk-WTIJMKML.js.map +0 -1
  392. package/dist/chunk-X2CQFJPR.js +0 -75
  393. package/dist/chunk-X2CQFJPR.js.map +0 -1
  394. package/dist/chunk-YYFKLOKO.js +0 -769
  395. package/dist/chunk-YYFKLOKO.js.map +0 -1
  396. package/dist/client-Cs7E_usr.d.ts +0 -113
  397. package/dist/content/index.js.map +0 -1
  398. package/dist/core/index.js.map +0 -1
  399. package/dist/core/react.d.ts +0 -107
  400. package/dist/core/react.js +0 -5
  401. package/dist/core/react.js.map +0 -1
  402. package/dist/coupon-BZSZ0y3n.d.ts +0 -129
  403. package/dist/coupon-CDzL4bJG.d.ts +0 -655
  404. package/dist/crud.factory-DyKaPHcU.d.ts +0 -181
  405. package/dist/finance/index.js.map +0 -1
  406. package/dist/finance-BJdfKRw0.d.ts +0 -135
  407. package/dist/index.js.map +0 -1
  408. package/dist/inventory/index.js.map +0 -1
  409. package/dist/inventory-B5pssqRx.d.ts +0 -748
  410. package/dist/logistics/index.js.map +0 -1
  411. package/dist/logistics-CrpKadKE.d.ts +0 -410
  412. package/dist/media-CNLJK93J.d.ts +0 -721
  413. package/dist/movement-R3CERFAM.js +0 -5
  414. package/dist/movement-R3CERFAM.js.map +0 -1
  415. package/dist/order-B3dCvHgK.d.ts +0 -360
  416. package/dist/payment-BRboLqvU.d.ts +0 -127
  417. package/dist/payments/index.js.map +0 -1
  418. package/dist/platform/index.js.map +0 -1
  419. package/dist/pos-BCqkx2-K.d.ts +0 -527
  420. package/dist/product-p09zXkXB.d.ts +0 -260
  421. package/dist/purchase-54PER2PY.js +0 -5
  422. package/dist/purchase-54PER2PY.js.map +0 -1
  423. package/dist/request-MP6NV5ZE.js +0 -5
  424. package/dist/request-MP6NV5ZE.js.map +0 -1
  425. package/dist/sales/index.js.map +0 -1
  426. package/dist/server.js.map +0 -1
  427. package/dist/size-guide-DgjzjM5P.d.ts +0 -554
  428. package/dist/stock-2LP4HJSB.js +0 -5
  429. package/dist/stock-2LP4HJSB.js.map +0 -1
  430. package/dist/stock-CfrU5_Wr.d.ts +0 -632
  431. package/dist/supplier-BWJTRZ5Z.js +0 -5
  432. package/dist/supplier-BWJTRZ5Z.js.map +0 -1
  433. package/dist/transaction/index.js.map +0 -1
  434. package/dist/transaction-Bf6WjYCh.d.ts +0 -84
  435. package/dist/transaction-dL3WW-er.d.ts +0 -442
  436. package/dist/transfer-4XSS6HWT.js +0 -5
  437. package/dist/transfer-4XSS6HWT.js.map +0 -1
  438. package/dist/user-data-DdLjAGwO.d.ts +0 -132
@@ -0,0 +1,267 @@
1
+ "use client";
2
+
3
+ import { getToastHandler } from "../../core/react/mutation.factory.js";
4
+ import { createCrudHooks } from "../../core/react/crud.factory.js";
5
+ import { productApi } from "../api/product.js";
6
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
7
+
8
+ //#region src/catalog/hooks/product.ts
9
+ /**
10
+ * Product Hooks
11
+ *
12
+ * Pre-built hooks for product CRUD operations with:
13
+ * - Optimistic updates
14
+ * - Smart caching
15
+ * - Type safety
16
+ */
17
+ /**
18
+ * Product CRUD hooks with optimistic updates
19
+ */
20
+ const productHooks = createCrudHooks({
21
+ api: productApi,
22
+ entityKey: "products",
23
+ singular: "Product",
24
+ plural: "Products",
25
+ defaults: { staleTime: 300 * 1e3 }
26
+ });
27
+ const { KEYS: PRODUCT_KEYS, useList: useProducts, useDetail: useProductDetail, useActions: useProductActions, useNavigation: useProductNavigation } = productHooks;
28
+ /**
29
+ * Hook to get product by slug
30
+ *
31
+ * @param token - Auth token (optional for public access)
32
+ * @param slug - Product slug
33
+ * @param options - React Query options
34
+ * @returns Query result with product data
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * function ProductPage({ slug }) {
39
+ * const { data, isLoading } = useProductBySlug(null, slug);
40
+ *
41
+ * if (isLoading) return <Spinner />;
42
+ *
43
+ * return <h1>{data?.data?.name}</h1>;
44
+ * }
45
+ * ```
46
+ */
47
+ function useProductBySlug(token, slug, options = {}) {
48
+ return useQuery({
49
+ queryKey: [
50
+ ...PRODUCT_KEYS.all,
51
+ "slug",
52
+ slug
53
+ ],
54
+ queryFn: () => productApi.getBySlug({
55
+ token,
56
+ slug
57
+ }),
58
+ enabled: !!slug,
59
+ staleTime: 300 * 1e3,
60
+ ...options
61
+ });
62
+ }
63
+ /**
64
+ * Hook to get product recommendations
65
+ *
66
+ * @param productId - Product ID to get recommendations for
67
+ * @param options - React Query options
68
+ * @returns Object with recommendations array, isLoading, and error
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * function ProductRecommendations({ productId }) {
73
+ * const { recommendations, isLoading } = useProductRecommendations(productId);
74
+ *
75
+ * if (isLoading) return <Spinner />;
76
+ *
77
+ * return (
78
+ * <div>
79
+ * {recommendations.map(product => (
80
+ * <ProductCard key={product._id} product={product} />
81
+ * ))}
82
+ * </div>
83
+ * );
84
+ * }
85
+ * ```
86
+ */
87
+ function useProductRecommendations(productId, options = {}) {
88
+ const { data, isLoading, error } = useQuery({
89
+ queryKey: [
90
+ ...PRODUCT_KEYS.all,
91
+ "recommendations",
92
+ productId
93
+ ],
94
+ queryFn: () => productApi.getRecommendations({
95
+ token: null,
96
+ productId
97
+ }),
98
+ enabled: !!productId,
99
+ staleTime: 600 * 1e3,
100
+ ...options
101
+ });
102
+ return {
103
+ recommendations: data?.data ?? [],
104
+ isLoading,
105
+ error
106
+ };
107
+ }
108
+ /**
109
+ * Hook to get soft-deleted products (Recycle Bin)
110
+ *
111
+ * @param token - Auth token (required, admin only)
112
+ * @param params - Query parameters for pagination/filtering
113
+ * @param options - React Query options
114
+ * @returns Query result with deleted products
115
+ *
116
+ * @example
117
+ * ```tsx
118
+ * function RecycleBin() {
119
+ * const { data, isLoading } = useDeletedProducts(token, { page: 1, limit: 20 });
120
+ *
121
+ * if (isLoading) return <Spinner />;
122
+ *
123
+ * return (
124
+ * <div>
125
+ * {data?.docs?.map(product => (
126
+ * <DeletedProductRow key={product._id} product={product} />
127
+ * ))}
128
+ * </div>
129
+ * );
130
+ * }
131
+ * ```
132
+ */
133
+ function useDeletedProducts(token, params = {}, options = {}) {
134
+ return useQuery({
135
+ queryKey: [
136
+ ...PRODUCT_KEYS.all,
137
+ "deleted",
138
+ params
139
+ ],
140
+ queryFn: () => productApi.getDeleted({
141
+ token,
142
+ params
143
+ }),
144
+ enabled: !!token,
145
+ staleTime: 120 * 1e3,
146
+ ...options
147
+ });
148
+ }
149
+ /**
150
+ * Hook to restore a soft-deleted product
151
+ *
152
+ * @param token - Auth token (required, admin only)
153
+ * @returns Mutation result with restore function
154
+ *
155
+ * @example
156
+ * ```tsx
157
+ * function RestoreButton({ productId }) {
158
+ * const { mutate: restore, isPending } = useRestoreProduct(token);
159
+ *
160
+ * return (
161
+ * <Button onClick={() => restore(productId)} disabled={isPending}>
162
+ * Restore Product
163
+ * </Button>
164
+ * );
165
+ * }
166
+ * ```
167
+ */
168
+ function useRestoreProduct(token) {
169
+ const queryClient = useQueryClient();
170
+ const toast = getToastHandler();
171
+ return useMutation({
172
+ mutationFn: (id) => productApi.restore({
173
+ token,
174
+ id
175
+ }),
176
+ onSuccess: () => {
177
+ toast.success("Product restored successfully");
178
+ queryClient.invalidateQueries({ queryKey: [...PRODUCT_KEYS.all, "deleted"] });
179
+ queryClient.invalidateQueries({ queryKey: PRODUCT_KEYS.lists() });
180
+ },
181
+ onError: (error) => {
182
+ toast.error(error.message || "Failed to restore product");
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * Hook to permanently delete a product (Hard delete)
188
+ *
189
+ * @param token - Auth token (required, admin only)
190
+ * @returns Mutation result with hard delete function
191
+ *
192
+ * @example
193
+ * ```tsx
194
+ * function PermanentDeleteButton({ productId }) {
195
+ * const { mutate: hardDelete, isPending } = useHardDeleteProduct(token);
196
+ *
197
+ * return (
198
+ * <Button
199
+ * variant="destructive"
200
+ * onClick={() => hardDelete(productId)}
201
+ * disabled={isPending}
202
+ * >
203
+ * Permanently Delete
204
+ * </Button>
205
+ * );
206
+ * }
207
+ * ```
208
+ */
209
+ function useHardDeleteProduct(token) {
210
+ const queryClient = useQueryClient();
211
+ const toast = getToastHandler();
212
+ return useMutation({
213
+ mutationFn: (id) => productApi.hardDelete({
214
+ token,
215
+ id
216
+ }),
217
+ onSuccess: () => {
218
+ toast.success("Product permanently deleted");
219
+ queryClient.invalidateQueries({ queryKey: [...PRODUCT_KEYS.all, "deleted"] });
220
+ },
221
+ onError: (error) => {
222
+ toast.error(error.message || "Failed to permanently delete product");
223
+ }
224
+ });
225
+ }
226
+ /**
227
+ * Hook to sync product stock quantity
228
+ *
229
+ * Recomputes product.quantity by summing all StockEntry quantities across branches.
230
+ *
231
+ * @param token - Auth token (requires: admin, warehouse-admin, warehouse-staff, or store-manager role)
232
+ * @returns Mutation result with sync function
233
+ *
234
+ * @example
235
+ * ```tsx
236
+ * function SyncStockButton({ productId }) {
237
+ * const { mutate: syncStock, isPending } = useSyncProductStock(token);
238
+ *
239
+ * return (
240
+ * <Button onClick={() => syncStock(productId)} disabled={isPending}>
241
+ * Sync Stock
242
+ * </Button>
243
+ * );
244
+ * }
245
+ * ```
246
+ */
247
+ function useSyncProductStock(token) {
248
+ const queryClient = useQueryClient();
249
+ const toast = getToastHandler();
250
+ return useMutation({
251
+ mutationFn: (id) => productApi.syncStock({
252
+ token,
253
+ id
254
+ }),
255
+ onSuccess: (result, id) => {
256
+ toast.success(`Stock synced: ${result.totalQuantity} units`);
257
+ queryClient.invalidateQueries({ queryKey: PRODUCT_KEYS.detail(id) });
258
+ queryClient.invalidateQueries({ queryKey: PRODUCT_KEYS.lists() });
259
+ },
260
+ onError: (error) => {
261
+ toast.error(error.message || "Failed to sync stock");
262
+ }
263
+ });
264
+ }
265
+
266
+ //#endregion
267
+ export { PRODUCT_KEYS, productHooks, useDeletedProducts, useHardDeleteProduct, useProductActions, useProductBySlug, useProductDetail, useProductNavigation, useProductRecommendations, useProducts, useRestoreProduct, useSyncProductStock };
@@ -0,0 +1,18 @@
1
+ import { CreateReviewPayload, Review, ReviewResponse, UpdateReviewPayload } from "../types/review.js";
2
+ import * as _tanstack_react_query0 from "@tanstack/react-query";
3
+ import { UseQueryOptions } from "@tanstack/react-query";
4
+ import * as _classytic_arc_next_query0 from "@classytic/arc-next/query";
5
+ import * as _classytic_arc_next0 from "@classytic/arc-next";
6
+
7
+ //#region src/catalog/hooks/review.d.ts
8
+ declare const reviewHooks: _classytic_arc_next0.CrudHooksReturn<Review, CreateReviewPayload, UpdateReviewPayload>;
9
+ declare const REVIEW_KEYS: _classytic_arc_next_query0.QueryKeys, useReviews: {
10
+ (params?: Record<string, unknown>, options?: _classytic_arc_next_query0.ListQueryOptions<Review> | undefined): _classytic_arc_next_query0.ListQueryResult<Review>;
11
+ (token: string | null, params?: Record<string, unknown>, options?: _classytic_arc_next_query0.ListQueryOptions<Review> | undefined): _classytic_arc_next_query0.ListQueryResult<Review>;
12
+ }, useReviewDetail: {
13
+ (id: string | null, options?: _classytic_arc_next_query0.DetailQueryOptions<Review> | undefined): _classytic_arc_next_query0.DetailQueryResult<Review>;
14
+ (id: string | null, token: string | null, options?: _classytic_arc_next_query0.DetailQueryOptions<Review> | undefined): _classytic_arc_next_query0.DetailQueryResult<Review>;
15
+ }, useReviewActions: () => _classytic_arc_next0.CrudActions<Review, CreateReviewPayload, UpdateReviewPayload>, useReviewNavigation: () => _classytic_arc_next0.NavigateFn<Review>;
16
+ declare function useMyReview(token: string | null | undefined, productId: string | null | undefined, options?: Omit<UseQueryOptions<ReviewResponse>, "queryKey" | "queryFn">): _tanstack_react_query0.UseQueryResult<ReviewResponse, Error>;
17
+ //#endregion
18
+ export { REVIEW_KEYS, reviewHooks, useMyReview, useReviewActions, useReviewDetail, useReviewNavigation, useReviews };
@@ -0,0 +1,38 @@
1
+ "use client";
2
+
3
+ import { createCrudHooks } from "../../core/react/crud.factory.js";
4
+ import { reviewApi } from "../api/review.js";
5
+ import { useQuery } from "@tanstack/react-query";
6
+
7
+ //#region src/catalog/hooks/review.ts
8
+ /**
9
+ * Review Hooks
10
+ *
11
+ * CRUD hooks + current user's review helper.
12
+ */
13
+ const reviewHooks = createCrudHooks({
14
+ api: reviewApi,
15
+ entityKey: "reviews",
16
+ singular: "Review",
17
+ plural: "Reviews",
18
+ defaults: { staleTime: 300 * 1e3 }
19
+ });
20
+ const { KEYS: REVIEW_KEYS, useList: useReviews, useDetail: useReviewDetail, useActions: useReviewActions, useNavigation: useReviewNavigation } = reviewHooks;
21
+ function useMyReview(token, productId, options = {}) {
22
+ return useQuery({
23
+ queryKey: [
24
+ ...REVIEW_KEYS.all,
25
+ "my",
26
+ productId
27
+ ],
28
+ queryFn: () => reviewApi.getMyReview({
29
+ token,
30
+ productId
31
+ }),
32
+ enabled: Boolean(token && productId),
33
+ ...options
34
+ });
35
+ }
36
+
37
+ //#endregion
38
+ export { REVIEW_KEYS, reviewHooks, useMyReview, useReviewActions, useReviewDetail, useReviewNavigation, useReviews };
@@ -0,0 +1,136 @@
1
+ import { ApiResponse } from "../../core/api-factory.js";
2
+ import { CreateSizeGuidePayload, SizeGuide, UpdateSizeGuidePayload } from "../types/size-guide.js";
3
+ import * as _tanstack_react_query0 from "@tanstack/react-query";
4
+ import { UseQueryOptions } from "@tanstack/react-query";
5
+ import * as _classytic_arc_next_query0 from "@classytic/arc-next/query";
6
+ import * as _classytic_arc_next0 from "@classytic/arc-next";
7
+
8
+ //#region src/catalog/hooks/size-guide.d.ts
9
+ /**
10
+ * Size Guide CRUD hooks
11
+ */
12
+ declare const sizeGuideHooks: _classytic_arc_next0.CrudHooksReturn<SizeGuide, CreateSizeGuidePayload, UpdateSizeGuidePayload>;
13
+ declare const SIZE_GUIDE_KEYS: _classytic_arc_next_query0.QueryKeys, useSizeGuides: {
14
+ (params?: Record<string, unknown>, options?: _classytic_arc_next_query0.ListQueryOptions<SizeGuide> | undefined): _classytic_arc_next_query0.ListQueryResult<SizeGuide>;
15
+ (token: string | null, params?: Record<string, unknown>, options?: _classytic_arc_next_query0.ListQueryOptions<SizeGuide> | undefined): _classytic_arc_next_query0.ListQueryResult<SizeGuide>;
16
+ }, useSizeGuideDetail: {
17
+ (id: string | null, options?: _classytic_arc_next_query0.DetailQueryOptions<SizeGuide> | undefined): _classytic_arc_next_query0.DetailQueryResult<SizeGuide>;
18
+ (id: string | null, token: string | null, options?: _classytic_arc_next_query0.DetailQueryOptions<SizeGuide> | undefined): _classytic_arc_next_query0.DetailQueryResult<SizeGuide>;
19
+ }, useSizeGuideActions: () => _classytic_arc_next0.CrudActions<SizeGuide, CreateSizeGuidePayload, UpdateSizeGuidePayload>, useSizeGuideNavigation: () => _classytic_arc_next0.NavigateFn<SizeGuide>;
20
+ /**
21
+ * Hook to get size guide by slug
22
+ *
23
+ * @param token - Auth token (optional for public access)
24
+ * @param slug - Size guide slug
25
+ * @param options - React Query options
26
+ * @returns Query result with size guide data
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * function SizeGuideDisplay({ slug }) {
31
+ * const { data, isLoading } = useSizeGuideBySlug(null, slug);
32
+ *
33
+ * if (isLoading) return <Spinner />;
34
+ *
35
+ * return (
36
+ * <div>
37
+ * <h2>{data?.data?.name}</h2>
38
+ * <SizeTable guide={data?.data} />
39
+ * </div>
40
+ * );
41
+ * }
42
+ * ```
43
+ */
44
+ declare function useSizeGuideBySlug(token: string | null | undefined, slug: string, options?: Omit<UseQueryOptions<ApiResponse<SizeGuide>>, "queryKey" | "queryFn">): _tanstack_react_query0.UseQueryResult<ApiResponse<SizeGuide>, Error>;
45
+ /**
46
+ * Format size guide as select options
47
+ *
48
+ * @param sizeGuides - Array of size guides
49
+ * @returns Options array with value/label for select inputs
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * function SizeGuideSelect() {
54
+ * const { data } = useSizeGuides(token);
55
+ * const options = getSizeGuideOptions(data?.docs);
56
+ *
57
+ * return (
58
+ * <Select>
59
+ * {options.map(opt => (
60
+ * <SelectItem key={opt.value} value={opt.value}>
61
+ * {opt.label}
62
+ * </SelectItem>
63
+ * ))}
64
+ * </Select>
65
+ * );
66
+ * }
67
+ * ```
68
+ */
69
+ declare function getSizeGuideOptions(sizeGuides: SizeGuide[] | undefined): {
70
+ value: string;
71
+ label: string;
72
+ }[];
73
+ /**
74
+ * Get size guide by ID from a list
75
+ *
76
+ * @param sizeGuides - Array of size guides
77
+ * @param id - Size guide ID
78
+ * @returns Size guide or undefined
79
+ */
80
+ declare function findSizeGuideById(sizeGuides: SizeGuide[] | undefined, id: string): SizeGuide | undefined;
81
+ /**
82
+ * Get size guide by slug from a list
83
+ *
84
+ * @param sizeGuides - Array of size guides
85
+ * @param slug - Size guide slug
86
+ * @returns Size guide or undefined
87
+ */
88
+ declare function findSizeGuideBySlug(sizeGuides: SizeGuide[] | undefined, slug: string): SizeGuide | undefined;
89
+ /**
90
+ * Format measurement value with unit
91
+ *
92
+ * @param value - Measurement value
93
+ * @param unit - Measurement unit ('inches' or 'cm')
94
+ * @returns Formatted measurement string
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * formatMeasurement("34-36", "inches") // "34-36 in"
99
+ * formatMeasurement("88", "cm") // "88 cm"
100
+ * ```
101
+ */
102
+ declare function formatMeasurement(value: string, unit: 'inches' | 'cm'): string;
103
+ /**
104
+ * Get measurement labels as table headers
105
+ *
106
+ * @param guide - Size guide object
107
+ * @returns Array of header labels including "Size" as first column
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const headers = getSizeTableHeaders(sizeGuide);
112
+ * // ["Size", "Chest", "Length", "Shoulder"]
113
+ * ```
114
+ */
115
+ declare function getSizeTableHeaders(guide: SizeGuide | undefined): string[];
116
+ /**
117
+ * Get size table rows
118
+ *
119
+ * @param guide - Size guide object
120
+ * @returns Array of row data with size name and measurements
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * const rows = getSizeTableRows(sizeGuide);
125
+ * // [
126
+ * // { name: "S", measurements: { chest: "34-36", length: "28" } },
127
+ * // { name: "M", measurements: { chest: "38-40", length: "29" } },
128
+ * // ]
129
+ * ```
130
+ */
131
+ declare function getSizeTableRows(guide: SizeGuide | undefined): Array<{
132
+ name: string;
133
+ measurements: Record<string, string>;
134
+ }>;
135
+ //#endregion
136
+ export { SIZE_GUIDE_KEYS, findSizeGuideById, findSizeGuideBySlug, formatMeasurement, getSizeGuideOptions, getSizeTableHeaders, getSizeTableRows, sizeGuideHooks, useSizeGuideActions, useSizeGuideBySlug, useSizeGuideDetail, useSizeGuideNavigation, useSizeGuides };
@@ -0,0 +1,173 @@
1
+ "use client";
2
+
3
+ import { createCrudHooks } from "../../core/react/crud.factory.js";
4
+ import { sizeGuideApi } from "../api/size-guide.js";
5
+ import { useQuery } from "@tanstack/react-query";
6
+
7
+ //#region src/catalog/hooks/size-guide.ts
8
+ /**
9
+ * Size Guide Hooks
10
+ *
11
+ * Pre-built hooks for size guide CRUD operations with:
12
+ * - Optimistic updates
13
+ * - Smart caching
14
+ * - Type safety
15
+ */
16
+ /**
17
+ * Size Guide CRUD hooks
18
+ */
19
+ const sizeGuideHooks = createCrudHooks({
20
+ api: sizeGuideApi,
21
+ entityKey: "size-guides",
22
+ singular: "Size Guide",
23
+ plural: "Size Guides",
24
+ defaults: { staleTime: 1800 * 1e3 }
25
+ });
26
+ const { KEYS: SIZE_GUIDE_KEYS, useList: useSizeGuides, useDetail: useSizeGuideDetail, useActions: useSizeGuideActions, useNavigation: useSizeGuideNavigation } = sizeGuideHooks;
27
+ /**
28
+ * Hook to get size guide by slug
29
+ *
30
+ * @param token - Auth token (optional for public access)
31
+ * @param slug - Size guide slug
32
+ * @param options - React Query options
33
+ * @returns Query result with size guide data
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * function SizeGuideDisplay({ slug }) {
38
+ * const { data, isLoading } = useSizeGuideBySlug(null, slug);
39
+ *
40
+ * if (isLoading) return <Spinner />;
41
+ *
42
+ * return (
43
+ * <div>
44
+ * <h2>{data?.data?.name}</h2>
45
+ * <SizeTable guide={data?.data} />
46
+ * </div>
47
+ * );
48
+ * }
49
+ * ```
50
+ */
51
+ function useSizeGuideBySlug(token, slug, options = {}) {
52
+ return useQuery({
53
+ queryKey: [
54
+ ...SIZE_GUIDE_KEYS.all,
55
+ "slug",
56
+ slug
57
+ ],
58
+ queryFn: () => sizeGuideApi.getBySlug({
59
+ token,
60
+ slug
61
+ }),
62
+ enabled: !!slug,
63
+ staleTime: 1800 * 1e3,
64
+ ...options
65
+ });
66
+ }
67
+ /**
68
+ * Format size guide as select options
69
+ *
70
+ * @param sizeGuides - Array of size guides
71
+ * @returns Options array with value/label for select inputs
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * function SizeGuideSelect() {
76
+ * const { data } = useSizeGuides(token);
77
+ * const options = getSizeGuideOptions(data?.docs);
78
+ *
79
+ * return (
80
+ * <Select>
81
+ * {options.map(opt => (
82
+ * <SelectItem key={opt.value} value={opt.value}>
83
+ * {opt.label}
84
+ * </SelectItem>
85
+ * ))}
86
+ * </Select>
87
+ * );
88
+ * }
89
+ * ```
90
+ */
91
+ function getSizeGuideOptions(sizeGuides) {
92
+ return (sizeGuides || []).map((guide) => ({
93
+ value: guide._id,
94
+ label: guide.name
95
+ }));
96
+ }
97
+ /**
98
+ * Get size guide by ID from a list
99
+ *
100
+ * @param sizeGuides - Array of size guides
101
+ * @param id - Size guide ID
102
+ * @returns Size guide or undefined
103
+ */
104
+ function findSizeGuideById(sizeGuides, id) {
105
+ return sizeGuides?.find((guide) => guide._id === id);
106
+ }
107
+ /**
108
+ * Get size guide by slug from a list
109
+ *
110
+ * @param sizeGuides - Array of size guides
111
+ * @param slug - Size guide slug
112
+ * @returns Size guide or undefined
113
+ */
114
+ function findSizeGuideBySlug(sizeGuides, slug) {
115
+ return sizeGuides?.find((guide) => guide.slug === slug);
116
+ }
117
+ /**
118
+ * Format measurement value with unit
119
+ *
120
+ * @param value - Measurement value
121
+ * @param unit - Measurement unit ('inches' or 'cm')
122
+ * @returns Formatted measurement string
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * formatMeasurement("34-36", "inches") // "34-36 in"
127
+ * formatMeasurement("88", "cm") // "88 cm"
128
+ * ```
129
+ */
130
+ function formatMeasurement(value, unit) {
131
+ return `${value} ${unit === "inches" ? "in" : "cm"}`;
132
+ }
133
+ /**
134
+ * Get measurement labels as table headers
135
+ *
136
+ * @param guide - Size guide object
137
+ * @returns Array of header labels including "Size" as first column
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * const headers = getSizeTableHeaders(sizeGuide);
142
+ * // ["Size", "Chest", "Length", "Shoulder"]
143
+ * ```
144
+ */
145
+ function getSizeTableHeaders(guide) {
146
+ if (!guide?.measurementLabels) return ["Size"];
147
+ return ["Size", ...guide.measurementLabels];
148
+ }
149
+ /**
150
+ * Get size table rows
151
+ *
152
+ * @param guide - Size guide object
153
+ * @returns Array of row data with size name and measurements
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const rows = getSizeTableRows(sizeGuide);
158
+ * // [
159
+ * // { name: "S", measurements: { chest: "34-36", length: "28" } },
160
+ * // { name: "M", measurements: { chest: "38-40", length: "29" } },
161
+ * // ]
162
+ * ```
163
+ */
164
+ function getSizeTableRows(guide) {
165
+ if (!guide?.sizes) return [];
166
+ return guide.sizes.map((size) => ({
167
+ name: size.name,
168
+ measurements: size.measurements
169
+ }));
170
+ }
171
+
172
+ //#endregion
173
+ export { SIZE_GUIDE_KEYS, findSizeGuideById, findSizeGuideBySlug, formatMeasurement, getSizeGuideOptions, getSizeTableHeaders, getSizeTableRows, sizeGuideHooks, useSizeGuideActions, useSizeGuideBySlug, useSizeGuideDetail, useSizeGuideNavigation, useSizeGuides };