@mohasinac/appkit 2.3.2 → 2.4.0

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 (677) hide show
  1. package/dist/client.d.ts +44 -12
  2. package/dist/client.js +22 -6
  3. package/dist/constants/api-endpoints.d.ts +380 -22
  4. package/dist/constants/api-endpoints.js +66 -13
  5. package/dist/constants/index.d.ts +1 -1
  6. package/dist/constants/index.js +1 -1
  7. package/dist/core/hooks/useSyncManager.d.ts +1 -0
  8. package/dist/core/hooks/useSyncManager.js +83 -0
  9. package/dist/core/integration-keys.d.ts +4 -0
  10. package/dist/core/integration-keys.js +8 -0
  11. package/dist/features/about/components/FAQPageView.js +9 -11
  12. package/dist/features/about/components/PolicyPageView.js +32 -11
  13. package/dist/features/about/components/PublicProfileView.js +77 -11
  14. package/dist/features/account/components/AddressesIndexListing.js +63 -38
  15. package/dist/features/account/components/UserOffersPanel.d.ts +8 -0
  16. package/dist/features/account/components/UserOffersPanel.js +81 -0
  17. package/dist/features/account/components/UserSettingsView.d.ts +2 -1
  18. package/dist/features/account/components/UserSettingsView.js +2 -1
  19. package/dist/features/account/components/UserSidebar.d.ts +6 -1
  20. package/dist/features/account/components/UserSidebar.js +48 -42
  21. package/dist/features/account/components/index.d.ts +2 -0
  22. package/dist/features/account/components/index.js +1 -0
  23. package/dist/features/admin/actions/admin-actions.d.ts +1 -1
  24. package/dist/features/admin/actions/admin-actions.js +13 -3
  25. package/dist/features/admin/components/AdminAdEditorView.js +6 -7
  26. package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +4 -0
  27. package/dist/features/admin/components/AdminAllEventEntriesView.js +102 -0
  28. package/dist/features/admin/components/AdminBidsView.js +94 -8
  29. package/dist/features/admin/components/AdminBlogEditorView.d.ts +7 -0
  30. package/dist/features/admin/components/AdminBlogEditorView.js +162 -0
  31. package/dist/features/admin/components/AdminBlogView.d.ts +4 -1
  32. package/dist/features/admin/components/AdminBlogView.js +61 -31
  33. package/dist/features/admin/components/AdminBrandEditorView.d.ts +7 -0
  34. package/dist/features/admin/components/AdminBrandEditorView.js +104 -0
  35. package/dist/features/admin/components/AdminBrandsView.d.ts +4 -0
  36. package/dist/features/admin/components/AdminBrandsView.js +76 -0
  37. package/dist/features/admin/components/AdminCarouselEditorView.d.ts +8 -0
  38. package/dist/features/admin/components/AdminCarouselEditorView.js +204 -0
  39. package/dist/features/admin/components/AdminCarouselView.js +153 -34
  40. package/dist/features/admin/components/AdminCartsView.d.ts +4 -0
  41. package/dist/features/admin/components/AdminCartsView.js +82 -0
  42. package/dist/features/admin/components/AdminCategoriesView.d.ts +4 -1
  43. package/dist/features/admin/components/AdminCategoriesView.js +66 -48
  44. package/dist/features/admin/components/AdminCategoryEditorView.d.ts +7 -0
  45. package/dist/features/admin/components/AdminCategoryEditorView.js +115 -0
  46. package/dist/features/admin/components/AdminContactEditorView.d.ts +11 -0
  47. package/dist/features/admin/components/AdminContactEditorView.js +32 -0
  48. package/dist/features/admin/components/AdminContactView.js +111 -20
  49. package/dist/features/admin/components/AdminCouponEditorView.d.ts +7 -0
  50. package/dist/features/admin/components/AdminCouponEditorView.js +179 -0
  51. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -1
  52. package/dist/features/admin/components/AdminCouponsView.js +57 -9
  53. package/dist/features/admin/components/AdminDashboardView.js +3 -0
  54. package/dist/features/admin/components/AdminFaqEditorView.d.ts +7 -0
  55. package/dist/features/admin/components/AdminFaqEditorView.js +128 -0
  56. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -1
  57. package/dist/features/admin/components/AdminFaqsView.js +55 -23
  58. package/dist/features/admin/components/AdminFeatureFlagsView.js +33 -24
  59. package/dist/features/admin/components/AdminListingScaffold.d.ts +7 -1
  60. package/dist/features/admin/components/AdminListingScaffold.js +2 -2
  61. package/dist/features/admin/components/AdminMediaView.js +18 -8
  62. package/dist/features/admin/components/AdminNavEditorView.d.ts +20 -0
  63. package/dist/features/admin/components/AdminNavEditorView.js +84 -0
  64. package/dist/features/admin/components/AdminNavigationView.d.ts +1 -7
  65. package/dist/features/admin/components/AdminNavigationView.js +84 -72
  66. package/dist/features/admin/components/AdminNewsletterView.js +102 -20
  67. package/dist/features/admin/components/AdminNotificationsView.d.ts +4 -0
  68. package/dist/features/admin/components/AdminNotificationsView.js +119 -0
  69. package/dist/features/admin/components/AdminOrderEditorView.d.ts +8 -0
  70. package/dist/features/admin/components/AdminOrderEditorView.js +74 -0
  71. package/dist/features/admin/components/AdminOrdersView.js +64 -8
  72. package/dist/features/admin/components/AdminPayoutsView.js +122 -13
  73. package/dist/features/admin/components/AdminProductEditorView.d.ts +7 -0
  74. package/dist/features/admin/components/AdminProductEditorView.js +143 -0
  75. package/dist/features/admin/components/AdminProductsView.d.ts +4 -1
  76. package/dist/features/admin/components/AdminProductsView.js +119 -30
  77. package/dist/features/admin/components/AdminReturnRequestsView.d.ts +5 -0
  78. package/dist/features/admin/components/AdminReturnRequestsView.js +101 -0
  79. package/dist/features/admin/components/AdminReviewsView.js +138 -28
  80. package/dist/features/admin/components/AdminSectionsView.js +361 -472
  81. package/dist/features/admin/components/AdminSessionsView.d.ts +4 -0
  82. package/dist/features/admin/components/AdminSessionsView.js +119 -0
  83. package/dist/features/admin/components/AdminSidebar.d.ts +18 -3
  84. package/dist/features/admin/components/AdminSidebar.js +51 -4
  85. package/dist/features/admin/components/AdminSiteSettingsView.d.ts +7 -0
  86. package/dist/features/admin/components/AdminSiteSettingsView.js +319 -0
  87. package/dist/features/admin/components/AdminStoreAddressesView.d.ts +5 -0
  88. package/dist/features/admin/components/AdminStoreAddressesView.js +52 -0
  89. package/dist/features/admin/components/AdminStoreEditorView.d.ts +9 -0
  90. package/dist/features/admin/components/AdminStoreEditorView.js +55 -0
  91. package/dist/features/admin/components/AdminStoresView.js +62 -20
  92. package/dist/features/admin/components/AdminUserEditorView.d.ts +10 -0
  93. package/dist/features/admin/components/AdminUserEditorView.js +72 -0
  94. package/dist/features/admin/components/AdminUsersView.js +70 -36
  95. package/dist/features/admin/components/AdminWishlistsView.d.ts +4 -0
  96. package/dist/features/admin/components/AdminWishlistsView.js +53 -0
  97. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +5 -0
  98. package/dist/features/admin/components/BrandQuickCreateForm.js +36 -0
  99. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +5 -0
  100. package/dist/features/admin/components/CategoryQuickCreateForm.js +35 -0
  101. package/dist/features/admin/components/DataTable.d.ts +4 -2
  102. package/dist/features/admin/components/DataTable.js +26 -6
  103. package/dist/features/admin/components/index.d.ts +47 -1
  104. package/dist/features/admin/components/index.js +23 -0
  105. package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +48 -0
  106. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +653 -0
  107. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +298 -0
  108. package/dist/features/admin/components/sections/adminSectionsTypes.js +278 -0
  109. package/dist/features/admin/schemas/firestore.d.ts +26 -0
  110. package/dist/features/admin/schemas/firestore.js +1 -0
  111. package/dist/features/admin/types/product.types.d.ts +2 -3
  112. package/dist/features/auctions/actions/bid-actions.js +6 -2
  113. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +3 -1
  114. package/dist/features/auctions/components/AuctionDetailPageView.js +38 -12
  115. package/dist/features/auctions/components/AuctionFilters.d.ts +3 -1
  116. package/dist/features/auctions/components/AuctionFilters.js +6 -2
  117. package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +7 -0
  118. package/dist/features/auctions/components/CollapsibleBidHistory.js +8 -0
  119. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +4 -0
  120. package/dist/features/auctions/components/MarketplaceAuctionCard.js +43 -9
  121. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -0
  122. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +18 -0
  123. package/dist/features/auctions/components/PlaceBidFormClient.js +33 -0
  124. package/dist/features/auctions/hooks/useAuctions.d.ts +1 -0
  125. package/dist/features/auctions/hooks/useAuctions.js +1 -0
  126. package/dist/features/auctions/schemas/index.d.ts +22 -12
  127. package/dist/features/auth/actions/profile-actions.d.ts +5 -3
  128. package/dist/features/auth/actions/profile-actions.js +30 -11
  129. package/dist/features/auth/auth-helpers.js +1 -0
  130. package/dist/features/auth/components/LoginForm.js +2 -1
  131. package/dist/features/auth/hooks/useAuth.js +16 -4
  132. package/dist/features/auth/permissions/constants.d.ts +63 -0
  133. package/dist/features/auth/permissions/constants.js +323 -0
  134. package/dist/features/auth/schemas/firestore.d.ts +20 -0
  135. package/dist/features/auth/schemas/index.d.ts +4 -4
  136. package/dist/features/auth/schemas/index.js +3 -2
  137. package/dist/features/auth/types/index.d.ts +1 -1
  138. package/dist/features/before-after/schemas/index.d.ts +2 -2
  139. package/dist/features/blog/actions/blog-actions.d.ts +15 -15
  140. package/dist/features/blog/components/BlogFilters.js +1 -1
  141. package/dist/features/blog/components/BlogIndexListing.js +57 -5
  142. package/dist/features/blog/components/BlogIndexPageView.js +14 -2
  143. package/dist/features/blog/components/BlogPostForm.js +6 -2
  144. package/dist/features/blog/components/BlogPostView.js +2 -1
  145. package/dist/features/blog/hooks/useBlog.d.ts +2 -0
  146. package/dist/features/blog/hooks/useBlog.js +2 -0
  147. package/dist/features/blog/schemas/index.d.ts +46 -12
  148. package/dist/features/brands/actions/brand-actions.d.ts +2 -0
  149. package/dist/features/brands/actions/brand-actions.js +5 -0
  150. package/dist/features/brands/index.d.ts +3 -0
  151. package/dist/features/brands/index.js +3 -0
  152. package/dist/features/brands/repository/brands.repository.d.ts +13 -0
  153. package/dist/features/brands/repository/brands.repository.js +60 -0
  154. package/dist/features/brands/schemas/index.d.ts +33 -0
  155. package/dist/features/brands/schemas/index.js +15 -0
  156. package/dist/features/brands/server.d.ts +7 -0
  157. package/dist/features/brands/server.js +7 -0
  158. package/dist/features/cart/actions/cart-actions.js +2 -2
  159. package/dist/features/cart/components/CartDrawer.d.ts +5 -1
  160. package/dist/features/cart/components/CartDrawer.js +3 -3
  161. package/dist/features/cart/hooks/useCartCount.d.ts +3 -2
  162. package/dist/features/cart/hooks/useCartCount.js +4 -2
  163. package/dist/features/cart/hooks/useGuestCartMerge.js +1 -1
  164. package/dist/features/cart/index.d.ts +1 -0
  165. package/dist/features/cart/index.js +1 -0
  166. package/dist/features/cart/repository/cart.repository.d.ts +5 -1
  167. package/dist/features/cart/repository/cart.repository.js +36 -5
  168. package/dist/features/cart/schemas/firestore.d.ts +25 -6
  169. package/dist/features/cart/schemas/firestore.js +2 -2
  170. package/dist/features/cart/schemas/index.d.ts +9 -9
  171. package/dist/features/cart/schemas/index.js +1 -1
  172. package/dist/features/cart/types/index.d.ts +1 -1
  173. package/dist/features/cart/utils/pending-ops.d.ts +33 -0
  174. package/dist/features/cart/utils/pending-ops.js +102 -0
  175. package/dist/features/categories/components/BrandDetailPageView.d.ts +4 -0
  176. package/dist/features/categories/components/BrandDetailPageView.js +54 -0
  177. package/dist/features/categories/components/BrandDetailTabs.d.ts +10 -0
  178. package/dist/features/categories/components/BrandDetailTabs.js +22 -0
  179. package/dist/features/categories/components/CategoriesIndexListing.d.ts +3 -1
  180. package/dist/features/categories/components/CategoriesIndexListing.js +83 -7
  181. package/dist/features/categories/components/CategoryDetailPageView.js +42 -21
  182. package/dist/features/categories/components/CategoryDetailTabs.d.ts +7 -1
  183. package/dist/features/categories/components/CategoryDetailTabs.js +12 -7
  184. package/dist/features/categories/components/CategoryFilters.js +1 -1
  185. package/dist/features/categories/components/CategoryForm.js +10 -4
  186. package/dist/features/categories/components/CategoryProductsListing.d.ts +4 -1
  187. package/dist/features/categories/components/CategoryProductsListing.js +34 -5
  188. package/dist/features/categories/components/ConcernCard.js +1 -1
  189. package/dist/features/categories/hooks/useCategories.js +2 -0
  190. package/dist/features/categories/repository/categories.repository.js +2 -3
  191. package/dist/features/categories/schemas/firestore.d.ts +23 -2
  192. package/dist/features/categories/schemas/firestore.js +8 -0
  193. package/dist/features/categories/schemas/index.d.ts +8 -8
  194. package/dist/features/categories/types/index.d.ts +1 -0
  195. package/dist/features/collections/schemas/index.d.ts +2 -2
  196. package/dist/features/events/components/AdminEventEditorView.js +2 -2
  197. package/dist/features/events/components/AdminEventsView.d.ts +4 -1
  198. package/dist/features/events/components/AdminEventsView.js +64 -38
  199. package/dist/features/events/components/EventCard.js +1 -1
  200. package/dist/features/events/components/EventFilters.js +1 -1
  201. package/dist/features/events/components/EventPollWidget.d.ts +12 -0
  202. package/dist/features/events/components/EventPollWidget.js +62 -0
  203. package/dist/features/events/components/EventsIndexListing.js +57 -5
  204. package/dist/features/events/components/EventsListPageView.js +1 -1
  205. package/dist/features/events/components/index.d.ts +2 -0
  206. package/dist/features/events/components/index.js +1 -0
  207. package/dist/features/events/hooks/useEvents.d.ts +1 -0
  208. package/dist/features/events/hooks/useEvents.js +1 -0
  209. package/dist/features/events/repository/events.repository.js +3 -0
  210. package/dist/features/events/schemas/firestore.d.ts +1 -0
  211. package/dist/features/events/schemas/index.d.ts +44 -0
  212. package/dist/features/events/types/index.d.ts +2 -0
  213. package/dist/features/faq/actions/faq-actions.d.ts +16 -16
  214. package/dist/features/faq/hooks/useFaqList.js +1 -1
  215. package/dist/features/faq/schemas/firestore.d.ts +2 -2
  216. package/dist/features/faq/schemas/firestore.js +2 -1
  217. package/dist/features/faq/schemas/index.d.ts +4 -4
  218. package/dist/features/filters/FilterFacetSection.d.ts +1 -0
  219. package/dist/features/filters/FilterFacetSection.js +13 -1
  220. package/dist/features/filters/SwitchFilter.js +1 -1
  221. package/dist/features/grouped/schemas/firestore.d.ts +32 -0
  222. package/dist/features/grouped/schemas/firestore.js +19 -0
  223. package/dist/features/homepage/components/AdSlot.d.ts +1 -3
  224. package/dist/features/homepage/components/AdSlot.js +15 -14
  225. package/dist/features/homepage/components/BlogArticlesSection.d.ts +3 -1
  226. package/dist/features/homepage/components/BlogArticlesSection.js +2 -2
  227. package/dist/features/homepage/components/BrandsSection.d.ts +3 -1
  228. package/dist/features/homepage/components/BrandsSection.js +4 -3
  229. package/dist/features/homepage/components/CustomCardsSection.d.ts +3 -0
  230. package/dist/features/homepage/components/CustomCardsSection.js +76 -0
  231. package/dist/features/homepage/components/EventsSection.d.ts +3 -1
  232. package/dist/features/homepage/components/EventsSection.js +2 -2
  233. package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +4 -1
  234. package/dist/features/homepage/components/FeaturedAuctionsSection.js +2 -2
  235. package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +4 -1
  236. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +2 -2
  237. package/dist/features/homepage/components/FeaturedProductsSection.d.ts +4 -1
  238. package/dist/features/homepage/components/FeaturedProductsSection.js +8 -3
  239. package/dist/features/homepage/components/FeaturedStoresSection.d.ts +3 -1
  240. package/dist/features/homepage/components/FeaturedStoresSection.js +2 -2
  241. package/dist/features/homepage/components/GoogleReviewsSection.d.ts +3 -0
  242. package/dist/features/homepage/components/GoogleReviewsSection.js +65 -0
  243. package/dist/features/homepage/components/HeroCarousel.js +128 -84
  244. package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +2 -20
  245. package/dist/features/homepage/components/MarketplaceHomepageView.js +73 -230
  246. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
  247. package/dist/features/homepage/components/SectionCarousel.js +2 -0
  248. package/dist/features/homepage/components/ShopByCategorySection.d.ts +3 -1
  249. package/dist/features/homepage/components/ShopByCategorySection.js +8 -4
  250. package/dist/features/homepage/components/SocialFeedSection.d.ts +3 -0
  251. package/dist/features/homepage/components/SocialFeedSection.js +86 -0
  252. package/dist/features/homepage/components/SocialPostCard.d.ts +7 -0
  253. package/dist/features/homepage/components/SocialPostCard.js +39 -0
  254. package/dist/features/homepage/components/StatsCounterSection.js +1 -1
  255. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  256. package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
  257. package/dist/features/homepage/hooks/useActiveAd.d.ts +23 -0
  258. package/dist/features/homepage/hooks/useActiveAd.js +20 -0
  259. package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -0
  260. package/dist/features/homepage/hooks/useBlogArticles.js +10 -0
  261. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +4 -1
  262. package/dist/features/homepage/hooks/useFeaturedAuctions.js +8 -4
  263. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +4 -1
  264. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +8 -4
  265. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -0
  266. package/dist/features/homepage/hooks/useFeaturedProducts.js +6 -3
  267. package/dist/features/homepage/hooks/useFeaturedStores.d.ts +3 -1
  268. package/dist/features/homepage/hooks/useFeaturedStores.js +2 -1
  269. package/dist/features/homepage/hooks/useHomepageEvents.d.ts +3 -1
  270. package/dist/features/homepage/hooks/useHomepageEvents.js +2 -1
  271. package/dist/features/homepage/hooks/useTopBrands.d.ts +3 -1
  272. package/dist/features/homepage/hooks/useTopBrands.js +2 -1
  273. package/dist/features/homepage/index.d.ts +2 -0
  274. package/dist/features/homepage/index.js +1 -0
  275. package/dist/features/homepage/lib/google-reviews-fetcher.d.ts +14 -0
  276. package/dist/features/homepage/lib/google-reviews-fetcher.js +27 -0
  277. package/dist/features/homepage/lib/live-stats.d.ts +14 -0
  278. package/dist/features/homepage/lib/live-stats.js +62 -0
  279. package/dist/features/homepage/lib/section-defaults.d.ts +11 -0
  280. package/dist/features/homepage/lib/section-defaults.js +45 -0
  281. package/dist/features/homepage/lib/section-helpers.d.ts +5 -0
  282. package/dist/features/homepage/lib/section-helpers.js +25 -0
  283. package/dist/features/homepage/lib/section-renderer.d.ts +33 -0
  284. package/dist/features/homepage/lib/section-renderer.js +164 -0
  285. package/dist/features/homepage/lib/social-feed-fetcher.d.ts +5 -0
  286. package/dist/features/homepage/lib/social-feed-fetcher.js +193 -0
  287. package/dist/features/homepage/schemas/firestore.d.ts +180 -29
  288. package/dist/features/homepage/schemas/firestore.js +5 -0
  289. package/dist/features/homepage/types/index.d.ts +48 -19
  290. package/dist/features/layout/AppLayoutShell.d.ts +6 -1
  291. package/dist/features/layout/AppLayoutShell.js +25 -9
  292. package/dist/features/layout/BottomActions.js +1 -1
  293. package/dist/features/layout/BottomNavbar.d.ts +15 -1
  294. package/dist/features/layout/BottomNavbar.js +8 -2
  295. package/dist/features/layout/FooterLayout.d.ts +7 -1
  296. package/dist/features/layout/FooterLayout.js +3 -3
  297. package/dist/features/layout/ListingLayout.js +2 -2
  298. package/dist/features/layout/MainNavbar.d.ts +6 -14
  299. package/dist/features/layout/MainNavbar.js +4 -16
  300. package/dist/features/layout/NavItem.js +1 -1
  301. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  302. package/dist/features/layout/NavbarLayout.js +5 -5
  303. package/dist/features/layout/TitleBar.d.ts +4 -2
  304. package/dist/features/layout/TitleBar.js +5 -3
  305. package/dist/features/layout/TitleBarLayout.d.ts +3 -1
  306. package/dist/features/layout/TitleBarLayout.js +2 -2
  307. package/dist/features/layout/index.d.ts +1 -1
  308. package/dist/features/media/MediaPickerModal.d.ts +30 -0
  309. package/dist/features/media/MediaPickerModal.js +72 -0
  310. package/dist/features/media/index.d.ts +3 -1
  311. package/dist/features/media/index.js +1 -0
  312. package/dist/features/media/types/index.d.ts +12 -0
  313. package/dist/features/media/types/index.js +4 -2
  314. package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
  315. package/dist/features/media/upload/MediaUploadField.js +56 -3
  316. package/dist/features/messages/schemas/firestore.d.ts +36 -0
  317. package/dist/features/messages/schemas/firestore.js +16 -0
  318. package/dist/features/orders/repository/orders.repository.d.ts +2 -2
  319. package/dist/features/orders/repository/orders.repository.js +2 -2
  320. package/dist/features/orders/schemas/firestore.d.ts +17 -4
  321. package/dist/features/orders/schemas/firestore.js +2 -2
  322. package/dist/features/orders/schemas/index.d.ts +18 -18
  323. package/dist/features/orders/schemas/index.js +3 -3
  324. package/dist/features/orders/types/index.d.ts +1 -1
  325. package/dist/features/orders/utils/order-splitter.d.ts +1 -1
  326. package/dist/features/orders/utils/order-splitter.js +2 -2
  327. package/dist/features/payments/repository/payout.repository.d.ts +4 -4
  328. package/dist/features/payments/repository/payout.repository.js +7 -7
  329. package/dist/features/payments/schemas/firestore.d.ts +6 -6
  330. package/dist/features/payments/schemas/firestore.js +6 -6
  331. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +11 -10
  332. package/dist/features/pre-orders/components/PreOrderActionsClient.d.ts +11 -0
  333. package/dist/features/pre-orders/components/PreOrderActionsClient.js +28 -0
  334. package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +2 -1
  335. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +27 -9
  336. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +3 -1
  337. package/dist/features/pre-orders/components/PreOrderFilters.js +9 -6
  338. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +3 -1
  339. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +132 -36
  340. package/dist/features/pre-orders/components/PreOrdersListView.js +3 -3
  341. package/dist/features/pre-orders/components/PreorderCard.js +1 -1
  342. package/dist/features/pre-orders/schemas/index.d.ts +10 -0
  343. package/dist/features/products/actions/product-actions.d.ts +2 -2
  344. package/dist/features/products/actions/product-actions.js +5 -5
  345. package/dist/features/products/api/[id]/route.js +5 -2
  346. package/dist/features/products/api/route.js +10 -14
  347. package/dist/features/products/columns/productTableColumns.js +2 -2
  348. package/dist/features/products/components/AuctionDetailView.d.ts +2 -1
  349. package/dist/features/products/components/AuctionDetailView.js +2 -2
  350. package/dist/features/products/components/AuctionsIndexListing.d.ts +3 -1
  351. package/dist/features/products/components/AuctionsIndexListing.js +93 -31
  352. package/dist/features/products/components/BidHistory.d.ts +2 -1
  353. package/dist/features/products/components/BidHistory.js +18 -2
  354. package/dist/features/products/components/MakeOfferButton.d.ts +10 -0
  355. package/dist/features/products/components/MakeOfferButton.js +68 -0
  356. package/dist/features/products/components/ProductDetailPageView.d.ts +11 -1
  357. package/dist/features/products/components/ProductDetailPageView.js +27 -8
  358. package/dist/features/products/components/ProductFilters.d.ts +7 -1
  359. package/dist/features/products/components/ProductFilters.js +4 -2
  360. package/dist/features/products/components/ProductForm.d.ts +19 -1
  361. package/dist/features/products/components/ProductForm.js +24 -6
  362. package/dist/features/products/components/ProductGrid.d.ts +10 -2
  363. package/dist/features/products/components/ProductGrid.js +76 -29
  364. package/dist/features/products/components/ProductsIndexListing.js +131 -45
  365. package/dist/features/products/components/RelatedProductsCarousel.js +1 -1
  366. package/dist/features/products/components/ShareButton.d.ts +7 -0
  367. package/dist/features/products/components/ShareButton.js +22 -0
  368. package/dist/features/products/components/index.d.ts +2 -0
  369. package/dist/features/products/components/index.js +1 -0
  370. package/dist/features/products/hooks/useProducts.d.ts +7 -0
  371. package/dist/features/products/hooks/useProducts.js +6 -4
  372. package/dist/features/products/repository/products.repository.d.ts +4 -8
  373. package/dist/features/products/repository/products.repository.js +17 -50
  374. package/dist/features/products/schemas/firestore.d.ts +11 -9
  375. package/dist/features/products/schemas/firestore.js +11 -3
  376. package/dist/features/products/schemas/index.d.ts +51 -50
  377. package/dist/features/products/schemas/index.js +2 -5
  378. package/dist/features/products/types/index.d.ts +13 -5
  379. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  380. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  381. package/dist/features/promotions/actions/seller-coupon-actions.js +11 -6
  382. package/dist/features/promotions/api/route.js +3 -3
  383. package/dist/features/promotions/components/CouponCard.js +16 -7
  384. package/dist/features/promotions/components/CouponsIndexListing.js +3 -9
  385. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  386. package/dist/features/promotions/hooks/usePromotions.js +2 -2
  387. package/dist/features/promotions/repository/coupons.repository.d.ts +21 -15
  388. package/dist/features/promotions/repository/coupons.repository.js +97 -125
  389. package/dist/features/promotions/schemas/firestore.d.ts +31 -2
  390. package/dist/features/promotions/schemas/firestore.js +29 -0
  391. package/dist/features/promotions/schemas/index.d.ts +9 -12
  392. package/dist/features/promotions/schemas/index.js +1 -2
  393. package/dist/features/promotions/types/index.d.ts +1 -2
  394. package/dist/features/reviews/actions/review-actions.js +3 -2
  395. package/dist/features/reviews/components/ReviewDetailPageView.js +5 -9
  396. package/dist/features/reviews/components/ReviewFilters.js +1 -1
  397. package/dist/features/reviews/components/ReviewsIndexListing.js +58 -7
  398. package/dist/features/reviews/components/ReviewsList.js +2 -2
  399. package/dist/features/reviews/hooks/useReviews.d.ts +1 -0
  400. package/dist/features/reviews/hooks/useReviews.js +2 -1
  401. package/dist/features/reviews/repository/reviews.repository.d.ts +9 -4
  402. package/dist/features/reviews/repository/reviews.repository.js +18 -7
  403. package/dist/features/reviews/schemas/firestore.d.ts +5 -2
  404. package/dist/features/reviews/schemas/firestore.js +1 -0
  405. package/dist/features/reviews/schemas/index.d.ts +19 -16
  406. package/dist/features/reviews/schemas/index.js +3 -2
  407. package/dist/features/reviews/types/index.d.ts +3 -2
  408. package/dist/features/scams/actions/scam-actions.d.ts +29 -0
  409. package/dist/features/scams/actions/scam-actions.js +62 -0
  410. package/dist/features/scams/components/ScamProfileView.d.ts +7 -0
  411. package/dist/features/scams/components/ScamProfileView.js +49 -0
  412. package/dist/features/scams/components/ScamRegistryView.d.ts +6 -0
  413. package/dist/features/scams/components/ScamRegistryView.js +41 -0
  414. package/dist/features/scams/components/index.d.ts +4 -0
  415. package/dist/features/scams/components/index.js +2 -0
  416. package/dist/features/scams/constants/scam-types.d.ts +38 -0
  417. package/dist/features/scams/constants/scam-types.js +443 -0
  418. package/dist/features/scams/repository/scammer.repository.d.ts +67 -0
  419. package/dist/features/scams/repository/scammer.repository.js +160 -0
  420. package/dist/features/scams/schemas/firestore.d.ts +362 -0
  421. package/dist/features/scams/schemas/firestore.js +233 -0
  422. package/dist/features/search/components/Search.d.ts +12 -2
  423. package/dist/features/search/components/Search.js +26 -7
  424. package/dist/features/search/components/index.d.ts +1 -1
  425. package/dist/features/search/hooks/useNavSuggestions.d.ts +1 -1
  426. package/dist/features/search/hooks/useNavSuggestions.js +2 -2
  427. package/dist/features/search/schemas/index.d.ts +7 -7
  428. package/dist/features/seller/actions/offer-actions.js +52 -36
  429. package/dist/features/seller/actions/seller-actions.js +19 -13
  430. package/dist/features/seller/api/products/route.js +9 -4
  431. package/dist/features/seller/components/SellerAddressesView.d.ts +3 -12
  432. package/dist/features/seller/components/SellerAddressesView.js +144 -4
  433. package/dist/features/seller/components/SellerAuctionsView.js +58 -5
  434. package/dist/features/seller/components/SellerBidsView.d.ts +4 -0
  435. package/dist/features/seller/components/SellerBidsView.js +131 -0
  436. package/dist/features/seller/components/SellerCouponEditorView.d.ts +19 -0
  437. package/dist/features/seller/components/SellerCouponEditorView.js +67 -0
  438. package/dist/features/seller/components/SellerCouponsView.d.ts +5 -3
  439. package/dist/features/seller/components/SellerCouponsView.js +135 -13
  440. package/dist/features/seller/components/SellerCreateProductView.d.ts +4 -10
  441. package/dist/features/seller/components/SellerCreateProductView.js +4 -3
  442. package/dist/features/seller/components/SellerEditProductView.d.ts +4 -10
  443. package/dist/features/seller/components/SellerEditProductView.js +4 -3
  444. package/dist/features/seller/components/SellerOffersPanel.d.ts +20 -0
  445. package/dist/features/seller/components/SellerOffersPanel.js +138 -0
  446. package/dist/features/seller/components/SellerOffersView.js +56 -5
  447. package/dist/features/seller/components/SellerOrdersView.d.ts +2 -1
  448. package/dist/features/seller/components/SellerOrdersView.js +185 -16
  449. package/dist/features/seller/components/SellerPayoutRequestView.d.ts +7 -0
  450. package/dist/features/seller/components/SellerPayoutRequestView.js +63 -0
  451. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +3 -10
  452. package/dist/features/seller/components/SellerPayoutSettingsView.js +89 -3
  453. package/dist/features/seller/components/SellerPayoutsView.js +56 -5
  454. package/dist/features/seller/components/SellerProductShell.d.ts +68 -0
  455. package/dist/features/seller/components/SellerProductShell.js +179 -0
  456. package/dist/features/seller/components/SellerProductsView.d.ts +2 -3
  457. package/dist/features/seller/components/SellerProductsView.js +194 -18
  458. package/dist/features/seller/components/SellerReviewsView.d.ts +5 -0
  459. package/dist/features/seller/components/SellerReviewsView.js +100 -0
  460. package/dist/features/seller/components/SellerShippingView.d.ts +3 -11
  461. package/dist/features/seller/components/SellerShippingView.js +87 -3
  462. package/dist/features/seller/components/SellerSidebar.d.ts +11 -3
  463. package/dist/features/seller/components/SellerSidebar.js +52 -8
  464. package/dist/features/seller/components/SellerStorefrontView.d.ts +26 -11
  465. package/dist/features/seller/components/SellerStorefrontView.js +45 -7
  466. package/dist/features/seller/components/index.d.ts +16 -2
  467. package/dist/features/seller/components/index.js +7 -0
  468. package/dist/features/seller/hooks/useSellerListingData.d.ts +3 -1
  469. package/dist/features/seller/hooks/useSellerListingData.js +6 -4
  470. package/dist/features/seller/repository/offer.repository.d.ts +3 -3
  471. package/dist/features/seller/repository/offer.repository.js +6 -6
  472. package/dist/features/seller/schemas/firestore.d.ts +7 -7
  473. package/dist/features/seller/schemas/firestore.js +4 -4
  474. package/dist/features/seller/schemas/index.d.ts +16 -16
  475. package/dist/features/shell/FormShell.d.ts +29 -0
  476. package/dist/features/shell/FormShell.js +103 -0
  477. package/dist/features/shell/QuickFormDrawer.d.ts +29 -0
  478. package/dist/features/shell/QuickFormDrawer.js +117 -0
  479. package/dist/features/shell/StepForm.d.ts +44 -0
  480. package/dist/features/shell/StepForm.js +81 -0
  481. package/dist/features/shell/index.d.ts +6 -0
  482. package/dist/features/shell/index.js +3 -0
  483. package/dist/features/stores/actions/store-query-actions.js +3 -3
  484. package/dist/features/stores/api/[storeSlug]/auctions/route.js +1 -1
  485. package/dist/features/stores/api/[storeSlug]/products/route.js +1 -1
  486. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  487. package/dist/features/stores/components/InteractiveStoreCard.d.ts +2 -2
  488. package/dist/features/stores/components/InteractiveStoreCard.js +21 -7
  489. package/dist/features/stores/components/StoreAboutView.js +1 -1
  490. package/dist/features/stores/components/StoreAuctionsListing.d.ts +5 -2
  491. package/dist/features/stores/components/StoreAuctionsListing.js +81 -8
  492. package/dist/features/stores/components/StoreAuctionsPageView.js +8 -7
  493. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -0
  494. package/dist/features/stores/components/StoreDetailLayoutView.js +29 -5
  495. package/dist/features/stores/components/StoreHeader.js +2 -1
  496. package/dist/features/stores/components/StorePreOrdersListing.d.ts +4 -2
  497. package/dist/features/stores/components/StorePreOrdersListing.js +59 -7
  498. package/dist/features/stores/components/StorePreOrdersPageView.js +8 -7
  499. package/dist/features/stores/components/StoreProductsListing.d.ts +5 -2
  500. package/dist/features/stores/components/StoreProductsListing.js +97 -8
  501. package/dist/features/stores/components/StoreProductsPageView.js +8 -7
  502. package/dist/features/stores/components/StoreReviewsListing.js +2 -2
  503. package/dist/features/stores/components/StoresIndexListing.js +74 -11
  504. package/dist/features/stores/components/StoresListView.js +1 -1
  505. package/dist/features/stores/hooks/useStores.d.ts +1 -0
  506. package/dist/features/stores/hooks/useStores.js +1 -0
  507. package/dist/features/stores/schemas/firestore.d.ts +34 -0
  508. package/dist/features/stores/schemas/index.d.ts +8 -8
  509. package/dist/features/sublisting/schemas/firestore.d.ts +30 -0
  510. package/dist/features/sublisting/schemas/firestore.js +19 -0
  511. package/dist/features/support/schemas/firestore.d.ts +113 -0
  512. package/dist/features/support/schemas/firestore.js +95 -0
  513. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +5 -0
  514. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +143 -0
  515. package/dist/features/whatsapp-bot/components/index.d.ts +2 -0
  516. package/dist/features/whatsapp-bot/components/index.js +1 -0
  517. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +23 -1
  518. package/dist/features/whatsapp-bot/helpers/whatsapp.js +104 -0
  519. package/dist/features/whatsapp-bot/server.d.ts +1 -0
  520. package/dist/features/whatsapp-bot/server.js +1 -0
  521. package/dist/features/whatsapp-bot/types/index.d.ts +49 -0
  522. package/dist/features/wishlist/components/WishlistView.d.ts +0 -10
  523. package/dist/features/wishlist/components/WishlistView.js +13 -6
  524. package/dist/features/wishlist/hooks/useWishlist.js +2 -0
  525. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +11 -3
  526. package/dist/features/wishlist/hooks/useWishlistCount.js +89 -25
  527. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  528. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  529. package/dist/features/wishlist/types/index.d.ts +16 -0
  530. package/dist/http/api-handler.js +8 -1
  531. package/dist/index.d.ts +112 -16
  532. package/dist/index.js +133 -28
  533. package/dist/monitoring/server-logger.js +9 -3
  534. package/dist/next/routing/route-map.d.ts +120 -6
  535. package/dist/next/routing/route-map.js +53 -2
  536. package/dist/providers/db-firebase/realtime.d.ts +1 -1
  537. package/dist/react/contexts/SessionContext.js +17 -26
  538. package/dist/react/hooks/useBulkSelection.d.ts +7 -24
  539. package/dist/react/hooks/useBulkSelection.js +27 -34
  540. package/dist/react/hooks/useLongPress.d.ts +3 -16
  541. package/dist/react/hooks/useLongPress.js +6 -25
  542. package/dist/react/index.d.ts +1 -0
  543. package/dist/react/index.js +2 -0
  544. package/dist/repositories/index.d.ts +3 -0
  545. package/dist/repositories/index.js +2 -0
  546. package/dist/seed/actions/demo-seed-actions.d.ts +2 -2
  547. package/dist/seed/actions/demo-seed-actions.js +1 -1
  548. package/dist/seed/anime-figures-seed-data.d.ts +8 -0
  549. package/dist/seed/anime-figures-seed-data.js +1033 -0
  550. package/dist/seed/beyblade-seed-data.js +206 -24
  551. package/dist/seed/bids-seed-data.d.ts +4 -10
  552. package/dist/seed/bids-seed-data.js +365 -238
  553. package/dist/seed/blog-posts-seed-data.d.ts +3 -2
  554. package/dist/seed/blog-posts-seed-data.js +250 -511
  555. package/dist/seed/brands-seed-data.d.ts +7 -0
  556. package/dist/seed/brands-seed-data.js +410 -0
  557. package/dist/seed/carousel-slides-seed-data.d.ts +3 -2
  558. package/dist/seed/carousel-slides-seed-data.js +177 -216
  559. package/dist/seed/cart-seed-data.d.ts +9 -9
  560. package/dist/seed/cart-seed-data.js +73 -73
  561. package/dist/seed/categories-seed-data.d.ts +4 -2
  562. package/dist/seed/categories-seed-data.js +720 -879
  563. package/dist/seed/conversations-seed-data.d.ts +8 -0
  564. package/dist/seed/conversations-seed-data.js +388 -0
  565. package/dist/seed/cosplay-accessories-seed-data.d.ts +8 -0
  566. package/dist/seed/cosplay-accessories-seed-data.js +647 -0
  567. package/dist/seed/coupon-usage-seed-data.d.ts +25 -0
  568. package/dist/seed/coupon-usage-seed-data.js +69 -0
  569. package/dist/seed/coupons-seed-data.d.ts +6 -3
  570. package/dist/seed/coupons-seed-data.js +375 -3
  571. package/dist/seed/events-seed-data.d.ts +4 -2
  572. package/dist/seed/events-seed-data.js +128 -430
  573. package/dist/seed/factories/cart.factory.d.ts +0 -1
  574. package/dist/seed/factories/cart.factory.js +2 -2
  575. package/dist/seed/faq-seed-data.d.ts +11 -18
  576. package/dist/seed/faq-seed-data.js +786 -1817
  577. package/dist/seed/grouped-listings-seed-data.d.ts +8 -0
  578. package/dist/seed/grouped-listings-seed-data.js +201 -0
  579. package/dist/seed/homepage-sections-seed-data.d.ts +3 -13
  580. package/dist/seed/homepage-sections-seed-data.js +228 -252
  581. package/dist/seed/hot-wheels-seed-data.js +285 -38
  582. package/dist/seed/index.d.ts +12 -11
  583. package/dist/seed/index.js +10 -12
  584. package/dist/seed/letitrip-official-seed-data.d.ts +8 -0
  585. package/dist/seed/letitrip-official-seed-data.js +399 -0
  586. package/dist/seed/manifest.d.ts +15 -0
  587. package/dist/seed/manifest.js +140 -0
  588. package/dist/seed/notifications-seed-data.d.ts +4 -2
  589. package/dist/seed/notifications-seed-data.js +117 -440
  590. package/dist/seed/orders-seed-data.d.ts +4 -2
  591. package/dist/seed/orders-seed-data.js +1090 -521
  592. package/dist/seed/payouts-seed-data.d.ts +4 -2
  593. package/dist/seed/payouts-seed-data.js +522 -145
  594. package/dist/seed/pokemon-carousel-slides-seed-data.js +6 -1
  595. package/dist/seed/pokemon-categories-seed-data.js +81 -81
  596. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +1 -1
  597. package/dist/seed/pokemon-homepage-sections-seed-data.js +116 -23
  598. package/dist/seed/pokemon-products-seed-data.d.ts +1 -1
  599. package/dist/seed/pokemon-products-seed-data.js +83 -73
  600. package/dist/seed/pokemon-seed-bundle.d.ts +5 -1
  601. package/dist/seed/pokemon-seed-bundle.js +21 -2
  602. package/dist/seed/pokemon-stores-seed-data.js +85 -9
  603. package/dist/seed/pokemon-users-seed-data.js +107 -8
  604. package/dist/seed/products-auctions-seed-data.d.ts +10 -0
  605. package/dist/seed/products-auctions-seed-data.js +689 -0
  606. package/dist/seed/products-preorders-seed-data.d.ts +9 -0
  607. package/dist/seed/products-preorders-seed-data.js +483 -0
  608. package/dist/seed/products-seed-data.js +34 -13
  609. package/dist/seed/products-standard-seed-data.d.ts +8 -0
  610. package/dist/seed/products-standard-seed-data.js +4179 -0
  611. package/dist/seed/retro-gaming-seed-data.d.ts +8 -0
  612. package/dist/seed/retro-gaming-seed-data.js +801 -0
  613. package/dist/seed/reviews-seed-data.d.ts +4 -17
  614. package/dist/seed/reviews-seed-data.js +1043 -515
  615. package/dist/seed/scammers-seed-data.d.ts +17 -0
  616. package/dist/seed/scammers-seed-data.js +118 -0
  617. package/dist/seed/site-settings-seed-data.js +25 -2
  618. package/dist/seed/store-addresses-seed-data.js +188 -84
  619. package/dist/seed/stores-seed-data.d.ts +3 -9
  620. package/dist/seed/stores-seed-data.js +212 -102
  621. package/dist/seed/sublisting-categories-seed-data.d.ts +7 -0
  622. package/dist/seed/sublisting-categories-seed-data.js +315 -0
  623. package/dist/seed/transformers-seed-data.js +34 -14
  624. package/dist/seed/users-seed-data.d.ts +3 -2
  625. package/dist/seed/users-seed-data.js +531 -440
  626. package/dist/seed/wishlists-seed-data.js +13 -13
  627. package/dist/server.d.ts +9 -2
  628. package/dist/server.js +12 -4
  629. package/dist/tokens/tokens.css +76 -31
  630. package/dist/ui/components/Avatar.style.css +10 -12
  631. package/dist/ui/components/BaseListingCard.d.ts +8 -3
  632. package/dist/ui/components/BaseListingCard.js +17 -6
  633. package/dist/ui/components/BaseListingCard.style.css +3 -1
  634. package/dist/ui/components/BulkActionsBar.d.ts +16 -0
  635. package/dist/ui/components/BulkActionsBar.js +22 -0
  636. package/dist/ui/components/Button.style.css +23 -23
  637. package/dist/ui/components/Card.style.css +60 -62
  638. package/dist/ui/components/Checkbox.style.css +19 -21
  639. package/dist/ui/components/DashboardStatsCard.style.css +12 -14
  640. package/dist/ui/components/Drawer.style.css +18 -14
  641. package/dist/ui/components/Dropdown.style.css +25 -27
  642. package/dist/ui/components/EmptyState.style.css +2 -4
  643. package/dist/ui/components/HorizontalScroller.d.ts +3 -1
  644. package/dist/ui/components/HorizontalScroller.js +116 -21
  645. package/dist/ui/components/HorizontalScroller.style.css +2 -2
  646. package/dist/ui/components/ImageLightbox.d.ts +0 -9
  647. package/dist/ui/components/ImageLightbox.js +43 -9
  648. package/dist/ui/components/InlineCreateSelect.d.ts +38 -0
  649. package/dist/ui/components/InlineCreateSelect.js +70 -0
  650. package/dist/ui/components/ListingLayout.style.css +41 -77
  651. package/dist/ui/components/ListingToolbar.d.ts +54 -0
  652. package/dist/ui/components/ListingToolbar.js +34 -0
  653. package/dist/ui/components/Modal.style.css +14 -10
  654. package/dist/ui/components/PageLoader.d.ts +11 -0
  655. package/dist/ui/components/PageLoader.js +21 -0
  656. package/dist/ui/components/Radio.style.css +34 -36
  657. package/dist/ui/components/RichTextEditor.js +1 -1
  658. package/dist/ui/components/RowActionMenu.d.ts +1 -0
  659. package/dist/ui/components/RowActionMenu.js +4 -2
  660. package/dist/ui/components/SectionTabs.js +1 -1
  661. package/dist/ui/components/SectionTabs.style.css +1 -0
  662. package/dist/ui/components/SideModal.style.css +4 -8
  663. package/dist/ui/components/Slider.style.css +2 -4
  664. package/dist/ui/components/Tabs.style.css +8 -10
  665. package/dist/ui/components/Toast.style.css +22 -24
  666. package/dist/ui/components/Toggle.style.css +11 -13
  667. package/dist/ui/index.d.ts +9 -0
  668. package/dist/ui/index.js +5 -0
  669. package/dist/ui/rich-text/RichText.js +2 -1
  670. package/dist/ui/rich-text/RichText.style.css +292 -5
  671. package/dist/ui/rich-text/RichTextRenderer.d.ts +15 -0
  672. package/dist/ui/rich-text/RichTextRenderer.js +15 -0
  673. package/dist/utils/id-generators.d.ts +10 -0
  674. package/dist/utils/id-generators.js +12 -0
  675. package/dist/validation/schemas.d.ts +9 -9
  676. package/package.json +5 -1
  677. package/README.md +0 -116
@@ -52,12 +52,14 @@ export declare class CouponsRepository extends BaseRepository<CouponDocument> {
52
52
  */
53
53
  getCouponsExpiringSoon(days?: number): Promise<CouponDocument[]>;
54
54
  /**
55
- * Validate coupon code (format and availability)
55
+ * Steps shared by all public validate methods:
56
+ * 1. Code format 2. DB lookup 3. Validity 4. Per-user limit
56
57
  *
57
- * @param code - Coupon code to validate
58
- * @param userId - User ID attempting to use coupon
59
- * @param orderTotal - Order total amount (for validation)
60
- * @returns Promise<{valid: boolean, coupon?: CouponDocument, message?: string}>
58
+ * Returns either an early-exit failure result or the resolved coupon.
59
+ */
60
+ private _fetchAndValidateCoupon;
61
+ /**
62
+ * Validate coupon against a flat order total (no cart breakdown).
61
63
  */
62
64
  validateCoupon(code: string, userId: string, orderTotal: number): Promise<{
63
65
  valid: boolean;
@@ -66,15 +68,19 @@ export declare class CouponsRepository extends BaseRepository<CouponDocument> {
66
68
  message?: string;
67
69
  }>;
68
70
  /**
69
- * Apply coupon to order (increment usage counters)
71
+ * Record coupon usage after a successful checkout.
70
72
  *
71
- * @param couponId - Coupon ID
72
- * @param userId - User ID
73
- * @param orderId - Order ID
74
- * @param discountAmount - Applied discount amount
75
- * @returns Promise<void>
73
+ * Increments both the global coupon counter and the per-user usage doc so
74
+ * that subsequent `validateCoupon` calls respect `perUserLimit` and
75
+ * `totalLimit` correctly.
76
+ *
77
+ * @param couponId - Coupon document ID (e.g. "coupon-welcome10")
78
+ * @param couponCode - Human-readable code (e.g. "WELCOME10")
79
+ * @param userId - Buyer UID
80
+ * @param orderIds - All order IDs created in this checkout that used the coupon
81
+ * @param discountAmount - Total discount amount applied across all order groups
76
82
  */
77
- applyCoupon(couponId: string, userId: string, orderId: string, discountAmount: number): Promise<void>;
83
+ applyCoupon(couponId: string, couponCode: string, userId: string, orderIds: string[], discountAmount: number): Promise<void>;
78
84
  /**
79
85
  * Get user's coupon usage count for a specific coupon
80
86
  *
@@ -109,7 +115,7 @@ export declare class CouponsRepository extends BaseRepository<CouponDocument> {
109
115
  *
110
116
  * @param sellerId - The seller's user UID
111
117
  */
112
- getSellerCoupons(sellerId: string): Promise<CouponDocument[]>;
118
+ getStoreCoupons(storeId: string): Promise<CouponDocument[]>;
113
119
  /**
114
120
  * Validate a coupon against the cart items and return a per-item breakdown.
115
121
  *
@@ -130,7 +136,7 @@ export declare class CouponsRepository extends BaseRepository<CouponDocument> {
130
136
  */
131
137
  validateCouponForCart(code: string, userId: string, cartItems: Array<{
132
138
  productId: string;
133
- sellerId: string;
139
+ storeId: string;
134
140
  price: number;
135
141
  quantity: number;
136
142
  isPreOrder: boolean;
@@ -142,7 +148,7 @@ export declare class CouponsRepository extends BaseRepository<CouponDocument> {
142
148
  eligibleSubtotal?: number;
143
149
  eligibleProductIds?: string[];
144
150
  scope?: "admin" | "seller";
145
- sellerId?: string;
151
+ storeId?: string;
146
152
  message?: string;
147
153
  }>;
148
154
  static readonly SIEVE_FIELDS: {
@@ -4,23 +4,11 @@
4
4
  * Manages coupon creation, validation, and usage tracking
5
5
  */
6
6
  import { BaseRepository, prepareForFirestore, } from "../../../providers/db-firebase";
7
- import { COUPONS_COLLECTION, isValidCouponCode, isCouponValid, canUserUseCoupon, calculateDiscount, createCouponId, } from "../schemas";
7
+ import { COUPONS_COLLECTION, COUPON_FIELDS, isValidCouponCode, isCouponValid, canUserUseCoupon, calculateDiscount, createCouponId, } from "../schemas";
8
8
  import { USER_COLLECTION } from "../../auth/schemas";
9
9
  import { DatabaseError } from "../../../errors";
10
- import { increment, serverTimestamp } from "../../../contracts/field-ops";
10
+ import { increment, arrayUnion, serverTimestamp } from "../../../contracts/field-ops";
11
11
  const COUPON_USAGE_SUBCOLLECTION = "couponUsage";
12
- const COUPON_FIELDS = {
13
- CODE: "code",
14
- TYPE: "type",
15
- CREATED_BY: "createdBy",
16
- SELLER_ID: "sellerId",
17
- CREATED_AT: "createdAt",
18
- VALIDITY_FIELDS: {
19
- IS_ACTIVE: "validity.isActive",
20
- START_DATE: "validity.startDate",
21
- END_DATE: "validity.endDate",
22
- },
23
- };
24
12
  /**
25
13
  * Repository for coupon management
26
14
  */
@@ -87,9 +75,9 @@ export class CouponsRepository extends BaseRepository {
87
75
  // validity.isActive ASC + validity.endDate ASC (see firestore.indexes.json)
88
76
  const snapshot = await this.db
89
77
  .collection(this.collection)
90
- .where(COUPON_FIELDS.VALIDITY_FIELDS.IS_ACTIVE, "==", true)
91
- .where(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, ">=", now)
92
- .orderBy(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, "asc")
78
+ .where(COUPON_FIELDS.VALIDITY.IS_ACTIVE, "==", true)
79
+ .where(COUPON_FIELDS.VALIDITY.END_DATE, ">=", now)
80
+ .orderBy(COUPON_FIELDS.VALIDITY.END_DATE, "asc")
93
81
  .get();
94
82
  return snapshot.docs
95
83
  .map((doc) => this.mapDoc(doc))
@@ -147,13 +135,13 @@ export class CouponsRepository extends BaseRepository {
147
135
  try {
148
136
  const now = new Date();
149
137
  const futureDate = new Date(now.getTime() + days * 24 * 60 * 60 * 1000);
150
- // Firestore-native range filter reuses the same composite index as getActiveCoupons()
138
+ // Firestore-native range filter — reuses the same composite index as getActiveCoupons()
151
139
  const snapshot = await this.db
152
140
  .collection(this.collection)
153
- .where(COUPON_FIELDS.VALIDITY_FIELDS.IS_ACTIVE, "==", true)
154
- .where(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, ">", now)
155
- .where(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, "<=", futureDate)
156
- .orderBy(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, "asc")
141
+ .where(COUPON_FIELDS.VALIDITY.IS_ACTIVE, "==", true)
142
+ .where(COUPON_FIELDS.VALIDITY.END_DATE, ">", now)
143
+ .where(COUPON_FIELDS.VALIDITY.END_DATE, "<=", futureDate)
144
+ .orderBy(COUPON_FIELDS.VALIDITY.END_DATE, "asc")
157
145
  .get();
158
146
  return snapshot.docs.map((doc) => this.mapDoc(doc));
159
147
  }
@@ -161,99 +149,91 @@ export class CouponsRepository extends BaseRepository {
161
149
  throw new DatabaseError(`Failed to retrieve expiring coupons: ${error instanceof Error ? error.message : "Unknown error"}`);
162
150
  }
163
151
  }
152
+ // ---------------------------------------------------------------------------
153
+ // Private helpers
154
+ // ---------------------------------------------------------------------------
164
155
  /**
165
- * Validate coupon code (format and availability)
156
+ * Steps shared by all public validate methods:
157
+ * 1. Code format 2. DB lookup 3. Validity 4. Per-user limit
166
158
  *
167
- * @param code - Coupon code to validate
168
- * @param userId - User ID attempting to use coupon
169
- * @param orderTotal - Order total amount (for validation)
170
- * @returns Promise<{valid: boolean, coupon?: CouponDocument, message?: string}>
159
+ * Returns either an early-exit failure result or the resolved coupon.
171
160
  */
172
- async validateCoupon(code, userId, orderTotal) {
173
- // Validate code format
161
+ async _fetchAndValidateCoupon(code, userId) {
174
162
  if (!isValidCouponCode(code)) {
175
- return {
176
- valid: false,
177
- message: "Invalid coupon code format",
178
- };
163
+ return { ok: false, result: { valid: false, message: "Invalid coupon code format" } };
179
164
  }
180
- // Get coupon from database
181
165
  const coupon = await this.getCouponByCode(code);
182
166
  if (!coupon) {
183
- return {
184
- valid: false,
185
- message: "Coupon not found",
186
- };
167
+ return { ok: false, result: { valid: false, message: "Coupon not found" } };
187
168
  }
188
- // Check if coupon is valid (active, date range, usage limits)
189
169
  if (!isCouponValid(coupon)) {
190
- return {
191
- valid: false,
192
- coupon,
193
- message: "Coupon is not currently valid",
194
- };
170
+ return { ok: false, result: { valid: false, coupon, message: "Coupon is not currently valid" } };
195
171
  }
196
- // Check minimum purchase requirement
197
- if (coupon.discount.minPurchase &&
198
- orderTotal < coupon.discount.minPurchase) {
199
- return {
200
- valid: false,
201
- coupon,
202
- message: "Minimum purchase requirement not met",
203
- };
204
- }
205
- // Check user-specific usage limit
206
172
  const userUsageCount = await this.getUserCouponUsageCount(userId, coupon.id);
207
173
  if (!canUserUseCoupon(coupon, userUsageCount)) {
208
- return {
209
- valid: false,
210
- coupon,
211
- message: "You have reached the usage limit for this coupon",
212
- };
174
+ return { ok: false, result: { valid: false, coupon, message: "You have reached the usage limit for this coupon" } };
175
+ }
176
+ return { ok: true, coupon };
177
+ }
178
+ // ---------------------------------------------------------------------------
179
+ // Public validation methods
180
+ // ---------------------------------------------------------------------------
181
+ /**
182
+ * Validate coupon against a flat order total (no cart breakdown).
183
+ */
184
+ async validateCoupon(code, userId, orderTotal) {
185
+ const check = await this._fetchAndValidateCoupon(code, userId);
186
+ if (!check.ok)
187
+ return check.result;
188
+ const { coupon } = check;
189
+ if (coupon.discount.minPurchase && orderTotal < coupon.discount.minPurchase) {
190
+ return { valid: false, coupon, message: "Minimum purchase requirement not met" };
213
191
  }
214
- // Calculate discount
215
- const discountAmount = calculateDiscount(coupon, orderTotal);
216
192
  return {
217
193
  valid: true,
218
194
  coupon,
219
- discountAmount,
195
+ discountAmount: calculateDiscount(coupon, orderTotal),
220
196
  message: "Coupon is valid",
221
197
  };
222
198
  }
223
199
  /**
224
- * Apply coupon to order (increment usage counters)
200
+ * Record coupon usage after a successful checkout.
225
201
  *
226
- * @param couponId - Coupon ID
227
- * @param userId - User ID
228
- * @param orderId - Order ID
229
- * @param discountAmount - Applied discount amount
230
- * @returns Promise<void>
202
+ * Increments both the global coupon counter and the per-user usage doc so
203
+ * that subsequent `validateCoupon` calls respect `perUserLimit` and
204
+ * `totalLimit` correctly.
205
+ *
206
+ * @param couponId - Coupon document ID (e.g. "coupon-welcome10")
207
+ * @param couponCode - Human-readable code (e.g. "WELCOME10")
208
+ * @param userId - Buyer UID
209
+ * @param orderIds - All order IDs created in this checkout that used the coupon
210
+ * @param discountAmount - Total discount amount applied across all order groups
231
211
  */
232
- async applyCoupon(couponId, userId, orderId, discountAmount) {
212
+ async applyCoupon(couponId, couponCode, userId, orderIds, discountAmount) {
233
213
  try {
234
214
  const batch = this.db.batch();
235
- // Update coupon usage stats
215
+ // Increment global coupon counters
236
216
  const couponRef = this.db.collection(this.collection).doc(couponId);
237
217
  batch.update(couponRef, {
238
218
  "usage.currentUsage": increment(1),
239
- "stats.totalDiscountGiven": increment(discountAmount),
240
- "stats.totalOrders": increment(1),
219
+ "stats.totalDiscount": increment(discountAmount),
220
+ "stats.totalUses": increment(1),
241
221
  updatedAt: new Date(),
242
222
  });
243
- // Create user coupon usage record
244
- const usageData = {
245
- userId,
246
- couponCode: "", // Will be filled by getCouponByCode
247
- orderId,
248
- discountAmount,
249
- usedAt: new Date(),
250
- };
223
+ // Upsert per-user usage doc — safe for perUserLimit > 1
251
224
  const usageRef = this.db
252
225
  .collection(USER_COLLECTION)
253
226
  .doc(userId)
254
227
  .collection(COUPON_USAGE_SUBCOLLECTION)
255
228
  .doc(couponId);
256
- batch.set(usageRef, prepareForFirestore(usageData));
229
+ // FieldValue sentinels (increment, arrayUnion) must NOT go through
230
+ // prepareForFirestore — it recurses into objects and Object.keys() on a
231
+ // FieldValue returns [] (non-enumerable internals), silently dropping them.
232
+ batch.set(usageRef, {
233
+ ...prepareForFirestore({ userId, couponCode: couponCode.toUpperCase(), lastUsedAt: new Date() }),
234
+ usageCount: increment(1),
235
+ orders: arrayUnion(...orderIds),
236
+ }, { merge: true });
257
237
  await batch.commit();
258
238
  }
259
239
  catch (error) {
@@ -275,7 +255,10 @@ export class CouponsRepository extends BaseRepository {
275
255
  .collection(COUPON_USAGE_SUBCOLLECTION)
276
256
  .doc(couponId)
277
257
  .get();
278
- return doc.exists ? 1 : 0; // Document exists = used once (per our schema)
258
+ if (!doc.exists)
259
+ return 0;
260
+ const data = doc.data();
261
+ return data.usageCount ?? 1;
279
262
  }
280
263
  catch {
281
264
  return 0;
@@ -345,17 +328,17 @@ export class CouponsRepository extends BaseRepository {
345
328
  *
346
329
  * @param sellerId - The seller's user UID
347
330
  */
348
- async getSellerCoupons(sellerId) {
331
+ async getStoreCoupons(storeId) {
349
332
  try {
350
333
  const snapshot = await this.db
351
334
  .collection(this.collection)
352
- .where(COUPON_FIELDS.SELLER_ID, "==", sellerId)
335
+ .where(COUPON_FIELDS.STORE_ID, "==", storeId)
353
336
  .orderBy(COUPON_FIELDS.CREATED_AT, "desc")
354
337
  .get();
355
338
  return snapshot.docs.map((doc) => this.mapDoc(doc));
356
339
  }
357
340
  catch (error) {
358
- throw new DatabaseError(`Failed to retrieve seller coupons: ${error instanceof Error ? error.message : "Unknown error"}`);
341
+ throw new DatabaseError(`Failed to retrieve store coupons: ${error instanceof Error ? error.message : "Unknown error"}`);
359
342
  }
360
343
  }
361
344
  /**
@@ -377,40 +360,27 @@ export class CouponsRepository extends BaseRepository {
377
360
  * and `eligibleProductIds` (the `productId` values that qualify).
378
361
  */
379
362
  async validateCouponForCart(code, userId, cartItems) {
380
- // Format check
381
- if (!isValidCouponCode(code)) {
382
- return { valid: false, message: "Invalid coupon code format" };
383
- }
384
- const coupon = await this.getCouponByCode(code);
385
- if (!coupon) {
386
- return { valid: false, message: "Coupon not found" };
387
- }
388
- if (!isCouponValid(coupon)) {
389
- return { valid: false, coupon, message: "Coupon is not currently valid" };
390
- }
391
- const userUsageCount = await this.getUserCouponUsageCount(userId, coupon.id);
392
- if (!canUserUseCoupon(coupon, userUsageCount)) {
393
- return {
394
- valid: false,
395
- coupon,
396
- message: "You have reached the usage limit for this coupon",
397
- };
398
- }
399
- // Determine eligible items
400
- // Pre-order items are always excluded
401
- let eligible = cartItems.filter((item) => !item.isPreOrder);
363
+ const check = await this._fetchAndValidateCoupon(code, userId);
364
+ if (!check.ok)
365
+ return check.result;
366
+ const { coupon } = check;
367
+ // Determine eligible items — no blanket exclusion by product type.
368
+ // Coupon flags (applicableToAuctions) decide type eligibility below.
369
+ let eligible = [...cartItems];
402
370
  const scope = coupon.scope ?? "admin";
403
371
  if (scope === "seller") {
404
- // Restrict to this seller's items
405
- eligible = eligible.filter((item) => item.sellerId === coupon.sellerId);
406
- if (coupon.applicableToAuctions === true) {
407
- // Auction-only coupon
408
- eligible = eligible.filter((item) => item.isAuction);
409
- }
410
- else {
411
- // Regular (fixed-price) items only — exclude auctions
412
- eligible = eligible.filter((item) => !item.isAuction);
413
- }
372
+ // Restrict to this store's items
373
+ eligible = eligible.filter((item) => item.storeId === coupon.storeId);
374
+ }
375
+ // Apply product-type filter based on the coupon's own flag:
376
+ // true → auction-only coupon
377
+ // false → explicitly excludes auctions (but includes pre-orders & simple)
378
+ // undefined → no restriction; applies to all product types
379
+ if (coupon.applicableToAuctions === true) {
380
+ eligible = eligible.filter((item) => item.isAuction);
381
+ }
382
+ else if (coupon.applicableToAuctions === false) {
383
+ eligible = eligible.filter((item) => !item.isAuction);
414
384
  }
415
385
  // Apply product/category restrictions from the coupon itself
416
386
  const { applicableProducts, applicableCategories, excludeProducts } = coupon.restrictions;
@@ -420,16 +390,18 @@ export class CouponsRepository extends BaseRepository {
420
390
  if (excludeProducts && excludeProducts.length > 0) {
421
391
  eligible = eligible.filter((item) => !excludeProducts.includes(item.productId));
422
392
  }
423
- // Note: category filtering requires product metadata skipped here but
393
+ // Note: category filtering requires product metadata — skipped here but
424
394
  // the restriction is stored and can be enforced by the order service.
425
395
  void applicableCategories;
426
396
  if (eligible.length === 0) {
427
397
  return {
428
398
  valid: false,
429
399
  coupon,
430
- message: scope === "seller"
431
- ? "This coupon is not valid for the items in your cart from this store"
432
- : "No eligible items found for this coupon",
400
+ message: coupon.applicableToAuctions === true
401
+ ? "This coupon only applies to auction items"
402
+ : scope === "seller"
403
+ ? "This coupon is not valid for the items in your cart from this seller"
404
+ : "No eligible items found for this coupon",
433
405
  };
434
406
  }
435
407
  const eligibleSubtotal = eligible.reduce((sum, item) => sum + item.price * item.quantity, 0);
@@ -449,7 +421,7 @@ export class CouponsRepository extends BaseRepository {
449
421
  eligibleSubtotal,
450
422
  eligibleProductIds: eligible.map((item) => item.productId),
451
423
  scope,
452
- sellerId: coupon.sellerId,
424
+ storeId: coupon.storeId,
453
425
  message: "Coupon is valid",
454
426
  };
455
427
  }
@@ -478,8 +450,8 @@ export class CouponsRepository extends BaseRepository {
478
450
  async getExpiredActiveRefs(now) {
479
451
  const snap = await this.db
480
452
  .collection(this.collection)
481
- .where(COUPON_FIELDS.VALIDITY_FIELDS.IS_ACTIVE, "==", true)
482
- .where(COUPON_FIELDS.VALIDITY_FIELDS.END_DATE, "<=", now)
453
+ .where(COUPON_FIELDS.VALIDITY.IS_ACTIVE, "==", true)
454
+ .where(COUPON_FIELDS.VALIDITY.END_DATE, "<=", now)
483
455
  .limit(500)
484
456
  .get();
485
457
  return snap.docs.map((d) => d.ref);
@@ -489,7 +461,7 @@ export class CouponsRepository extends BaseRepository {
489
461
  */
490
462
  deactivateInBatch(batch, ref) {
491
463
  batch.update(ref, {
492
- [COUPON_FIELDS.VALIDITY_FIELDS.IS_ACTIVE]: false,
464
+ [COUPON_FIELDS.VALIDITY.IS_ACTIVE]: false,
493
465
  updatedAt: serverTimestamp(),
494
466
  });
495
467
  }
@@ -48,8 +48,8 @@ export interface CouponDocument {
48
48
  description: string;
49
49
  type: CouponType;
50
50
  scope: "admin" | "seller";
51
- sellerId?: string;
52
- storeSlug?: string;
51
+ /** For seller-scoped coupons: the storeId (= storeSlug = store.id) of the issuing store */
52
+ storeId?: string;
53
53
  applicableToAuctions?: boolean;
54
54
  discount: DiscountConfig;
55
55
  bxgy?: BXGYConfig;
@@ -73,6 +73,34 @@ export interface CouponUsageDocument {
73
73
  export declare const COUPONS_COLLECTION: "coupons";
74
74
  export declare const COUPON_USAGE_SUBCOLLECTION: "couponUsage";
75
75
  export declare const COUPONS_INDEXED_FIELDS: readonly ["code", "validity.isActive", "validity.startDate", "validity.endDate", "type", "createdBy"];
76
+ export declare const COUPON_FIELDS: {
77
+ readonly CODE: "code";
78
+ readonly TYPE: "type";
79
+ readonly SCOPE: "scope";
80
+ readonly CREATED_BY: "createdBy";
81
+ readonly STORE_ID: "storeId";
82
+ readonly CREATED_AT: "createdAt";
83
+ readonly UPDATED_AT: "updatedAt";
84
+ readonly VALIDITY: {
85
+ readonly IS_ACTIVE: "validity.isActive";
86
+ readonly START_DATE: "validity.startDate";
87
+ readonly END_DATE: "validity.endDate";
88
+ };
89
+ readonly USAGE: {
90
+ readonly CURRENT_USAGE: "usage.currentUsage";
91
+ readonly TOTAL_LIMIT: "usage.totalLimit";
92
+ };
93
+ readonly TYPE_VALUES: {
94
+ readonly PERCENTAGE: CouponType;
95
+ readonly FIXED: CouponType;
96
+ readonly FREE_SHIPPING: CouponType;
97
+ readonly BUY_X_GET_Y: CouponType;
98
+ };
99
+ readonly SCOPE_VALUES: {
100
+ readonly ADMIN: "admin";
101
+ readonly SELLER: "seller";
102
+ };
103
+ };
76
104
  export declare const COUPON_TYPE_LABELS: Record<CouponType, string>;
77
105
  export declare const DEFAULT_COUPON_DATA: Partial<CouponDocument>;
78
106
  export declare const COUPONS_PUBLIC_FIELDS: readonly ["id", "code", "name", "description", "type", "discount", "validity.startDate", "validity.endDate", "usage.totalLimit", "usage.perUserLimit"];
@@ -93,6 +121,7 @@ export declare const couponQueryHelpers: {
93
121
  readonly inactive: () => readonly ["validity.isActive", "==", false];
94
122
  readonly byType: (type: CouponType) => readonly ["type", "==", CouponType];
95
123
  readonly byCreator: (userId: string) => readonly ["createdBy", "==", string];
124
+ readonly byStore: (storeId: string) => readonly ["storeId", "==", string];
96
125
  readonly expiringSoon: (days?: number) => readonly ["validity.endDate", "<=", Date];
97
126
  };
98
127
  export declare function createCouponId(code: string): string;
@@ -12,6 +12,34 @@ export const COUPONS_INDEXED_FIELDS = [
12
12
  "type",
13
13
  "createdBy",
14
14
  ];
15
+ export const COUPON_FIELDS = {
16
+ CODE: "code",
17
+ TYPE: "type",
18
+ SCOPE: "scope",
19
+ CREATED_BY: "createdBy",
20
+ STORE_ID: "storeId",
21
+ CREATED_AT: "createdAt",
22
+ UPDATED_AT: "updatedAt",
23
+ VALIDITY: {
24
+ IS_ACTIVE: "validity.isActive",
25
+ START_DATE: "validity.startDate",
26
+ END_DATE: "validity.endDate",
27
+ },
28
+ USAGE: {
29
+ CURRENT_USAGE: "usage.currentUsage",
30
+ TOTAL_LIMIT: "usage.totalLimit",
31
+ },
32
+ TYPE_VALUES: {
33
+ PERCENTAGE: "percentage",
34
+ FIXED: "fixed",
35
+ FREE_SHIPPING: "free_shipping",
36
+ BUY_X_GET_Y: "buy_x_get_y",
37
+ },
38
+ SCOPE_VALUES: {
39
+ ADMIN: "admin",
40
+ SELLER: "seller",
41
+ },
42
+ };
15
43
  export const COUPON_TYPE_LABELS = {
16
44
  percentage: "Percentage Discount",
17
45
  fixed: "Fixed Amount Discount",
@@ -52,6 +80,7 @@ export const couponQueryHelpers = {
52
80
  inactive: () => ["validity.isActive", "==", false],
53
81
  byType: (type) => ["type", "==", type],
54
82
  byCreator: (userId) => ["createdBy", "==", userId],
83
+ byStore: (storeId) => ["storeId", "==", storeId],
55
84
  expiringSoon: (days = 7) => {
56
85
  const futureDate = new Date();
57
86
  futureDate.setDate(futureDate.getDate() + days);
@@ -31,7 +31,6 @@ export declare const couponItemSchema: z.ZodObject<{
31
31
  getQuantity: z.ZodOptional<z.ZodNumber>;
32
32
  applicableProductIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
33
33
  applicableCategoryIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
34
- sellerId: z.ZodOptional<z.ZodString>;
35
34
  storeId: z.ZodOptional<z.ZodString>;
36
35
  isPublic: z.ZodBoolean;
37
36
  isActive: z.ZodBoolean;
@@ -49,17 +48,16 @@ export declare const couponItemSchema: z.ZodObject<{
49
48
  updatedAt: string;
50
49
  isActive: boolean;
51
50
  description: string;
52
- isPublic: boolean;
53
51
  discountValue: number;
52
+ isPublic: boolean;
54
53
  usageCount: number;
55
- sellerId?: string | undefined;
56
- startsAt?: string | undefined;
57
54
  storeId?: string | undefined;
55
+ startsAt?: string | undefined;
56
+ perUserLimit?: number | undefined;
58
57
  expiresAt?: string | undefined;
59
58
  minOrderAmount?: number | undefined;
60
59
  maxDiscountAmount?: number | undefined;
61
60
  maxUsageCount?: number | undefined;
62
- perUserLimit?: number | undefined;
63
61
  buyQuantity?: number | undefined;
64
62
  getQuantity?: number | undefined;
65
63
  applicableProductIds?: string[] | undefined;
@@ -74,17 +72,16 @@ export declare const couponItemSchema: z.ZodObject<{
74
72
  updatedAt: string;
75
73
  isActive: boolean;
76
74
  description: string;
77
- isPublic: boolean;
78
75
  discountValue: number;
76
+ isPublic: boolean;
79
77
  usageCount: number;
80
- sellerId?: string | undefined;
81
- startsAt?: string | undefined;
82
78
  storeId?: string | undefined;
79
+ startsAt?: string | undefined;
80
+ perUserLimit?: number | undefined;
83
81
  expiresAt?: string | undefined;
84
82
  minOrderAmount?: number | undefined;
85
83
  maxDiscountAmount?: number | undefined;
86
84
  maxUsageCount?: number | undefined;
87
- perUserLimit?: number | undefined;
88
85
  buyQuantity?: number | undefined;
89
86
  getQuantity?: number | undefined;
90
87
  applicableProductIds?: string[] | undefined;
@@ -93,7 +90,7 @@ export declare const couponItemSchema: z.ZodObject<{
93
90
  export declare const promotionsListParamsSchema: z.ZodObject<{
94
91
  scope: z.ZodOptional<z.ZodEnum<["admin", "seller"]>>;
95
92
  isActive: z.ZodOptional<z.ZodBoolean>;
96
- sellerId: z.ZodOptional<z.ZodString>;
93
+ storeId: z.ZodOptional<z.ZodString>;
97
94
  page: z.ZodOptional<z.ZodNumber>;
98
95
  pageSize: z.ZodOptional<z.ZodNumber>;
99
96
  filters: z.ZodOptional<z.ZodString>;
@@ -105,7 +102,7 @@ export declare const promotionsListParamsSchema: z.ZodObject<{
105
102
  page?: number | undefined;
106
103
  pageSize?: number | undefined;
107
104
  filters?: string | undefined;
108
- sellerId?: string | undefined;
105
+ storeId?: string | undefined;
109
106
  }, {
110
107
  sort?: string | undefined;
111
108
  scope?: "admin" | "seller" | undefined;
@@ -113,5 +110,5 @@ export declare const promotionsListParamsSchema: z.ZodObject<{
113
110
  page?: number | undefined;
114
111
  pageSize?: number | undefined;
115
112
  filters?: string | undefined;
116
- sellerId?: string | undefined;
113
+ storeId?: string | undefined;
117
114
  }>;
@@ -38,7 +38,6 @@ export const couponItemSchema = z.object({
38
38
  getQuantity: z.number().optional(),
39
39
  applicableProductIds: z.array(z.string()).optional(),
40
40
  applicableCategoryIds: z.array(z.string()).optional(),
41
- sellerId: z.string().optional(),
42
41
  storeId: z.string().optional(),
43
42
  isPublic: z.boolean(),
44
43
  isActive: z.boolean(),
@@ -50,7 +49,7 @@ export const couponItemSchema = z.object({
50
49
  export const promotionsListParamsSchema = z.object({
51
50
  scope: couponScopeSchema.optional(),
52
51
  isActive: z.coerce.boolean().optional(),
53
- sellerId: z.string().optional(),
52
+ storeId: z.string().optional(),
54
53
  page: z.coerce.number().optional(),
55
54
  pageSize: z.coerce.number().optional(),
56
55
  filters: z.string().optional(),
@@ -17,7 +17,6 @@ export interface CouponItem {
17
17
  getQuantity?: number;
18
18
  applicableProductIds?: string[];
19
19
  applicableCategoryIds?: string[];
20
- sellerId?: string;
21
20
  storeId?: string;
22
21
  isPublic: boolean;
23
22
  isActive: boolean;
@@ -43,7 +42,7 @@ export interface PromotionsListResponse {
43
42
  export interface PromotionsListParams {
44
43
  scope?: CouponScope;
45
44
  isActive?: boolean;
46
- sellerId?: string;
45
+ storeId?: string;
47
46
  page?: number;
48
47
  pageSize?: number;
49
48
  filters?: string;
@@ -29,7 +29,8 @@ export async function createReview(userId, input) {
29
29
  return reviewRepository.create({
30
30
  productId: input.productId,
31
31
  productTitle: product.title,
32
- sellerId: product.sellerId,
32
+ storeId: product.storeId,
33
+ storeName: product.storeName,
33
34
  userId,
34
35
  userName: profile?.displayName ?? "Anonymous",
35
36
  userAvatar: profile?.photoURL ?? "",
@@ -159,7 +160,7 @@ export async function listAdminReviews(params) {
159
160
  return reviewRepository.listAll(sieve);
160
161
  }
161
162
  export async function listReviewsBySeller(sellerId) {
162
- const products = await productRepository.findBySeller(sellerId);
163
+ const products = await productRepository.findByStore(sellerId);
163
164
  const productIds = products
164
165
  .filter((product) => product.status === ProductStatusValues.PUBLISHED)
165
166
  .map((product) => product.id);