@mohasinac/appkit 2.8.1 → 2.8.3

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 (434) hide show
  1. package/dist/_internal/client/features/classified/ClassifiedDetailView.js +7 -1
  2. package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +4 -1
  3. package/dist/_internal/client/features/digital-code/DigitalCodeDetailView.js +7 -1
  4. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +3 -2
  5. package/dist/_internal/client/features/live/LiveItemDetailView.js +11 -2
  6. package/dist/_internal/client/scaffolds/AppShell.js +2 -1
  7. package/dist/_internal/client/scaffolds/DashboardScaffold.js +2 -1
  8. package/dist/_internal/server/features/checkout/actions.js +40 -39
  9. package/dist/_internal/shared/actions/action-registry.js +6 -0
  10. package/dist/_internal/shared/config/index.d.ts +1 -1
  11. package/dist/_internal/shared/config/schema.d.ts +0 -8
  12. package/dist/client-entry.d.ts +1 -1
  13. package/dist/client.d.ts +1 -1
  14. package/dist/client.js +1 -1
  15. package/dist/configs/next.js +12 -22
  16. package/dist/constants/api-endpoints.d.ts +6 -0
  17. package/dist/constants/api-endpoints.js +2 -0
  18. package/dist/core/hooks/useSiteSettings.d.ts +1 -1
  19. package/dist/features/about/components/AboutView.js +5 -2
  20. package/dist/features/about/components/FAQPageView.js +3 -3
  21. package/dist/features/about/components/FeesView.js +13 -5
  22. package/dist/features/about/components/HelpPageView.js +9 -5
  23. package/dist/features/about/components/HowAuctionsWorkView.js +9 -5
  24. package/dist/features/about/components/HowCheckoutWorksView.js +9 -5
  25. package/dist/features/about/components/HowOffersWorkView.js +10 -5
  26. package/dist/features/about/components/HowOrdersWorkView.js +10 -5
  27. package/dist/features/about/components/HowPayoutsWorkView.js +9 -5
  28. package/dist/features/about/components/HowPreOrdersWorkView.js +9 -5
  29. package/dist/features/about/components/HowReviewsWorkView.js +9 -5
  30. package/dist/features/about/components/PolicyPageView.js +3 -3
  31. package/dist/features/about/components/PublicProfileView.js +11 -4
  32. package/dist/features/about/components/SecurityPrivacyView.js +8 -4
  33. package/dist/features/about/components/ShippingPolicyView.js +3 -2
  34. package/dist/features/about/components/TrackOrderView.js +2 -2
  35. package/dist/features/about/components/UnauthorizedView.js +3 -3
  36. package/dist/features/account/components/AddressBook.js +1 -1
  37. package/dist/features/account/components/AddressForm.js +2 -2
  38. package/dist/features/account/components/AddressInlineSelect.d.ts +24 -0
  39. package/dist/features/account/components/AddressInlineSelect.js +78 -0
  40. package/dist/features/account/components/AddressSelectorCreate.d.ts +2 -1
  41. package/dist/features/account/components/AddressSelectorCreate.js +5 -32
  42. package/dist/features/account/components/AddressesIndexListing.js +3 -3
  43. package/dist/features/account/components/ChatWindow.js +2 -1
  44. package/dist/features/account/components/NotificationBell.js +13 -7
  45. package/dist/features/account/components/NotificationPreferencesPanel.js +4 -1
  46. package/dist/features/account/components/UserOffersPanel.js +2 -1
  47. package/dist/features/account/components/UserSidebar.js +11 -7
  48. package/dist/features/account/components/UserSupportView.js +13 -4
  49. package/dist/features/account/components/index.d.ts +2 -0
  50. package/dist/features/account/components/index.js +1 -0
  51. package/dist/features/account/hooks/useAccount.d.ts +2 -2
  52. package/dist/features/account/hooks/useAddressSelector.d.ts +1 -1
  53. package/dist/features/account/hooks/useAddresses.d.ts +2 -2
  54. package/dist/features/account/hooks/useNotifications.d.ts +1 -1
  55. package/dist/features/account/hooks/useProfile.d.ts +1 -1
  56. package/dist/features/account/hooks/usePublicProfile.d.ts +2 -2
  57. package/dist/features/addresses/repository/addresses.repository.d.ts +1 -0
  58. package/dist/features/addresses/repository/addresses.repository.js +13 -0
  59. package/dist/features/admin/components/AdminAdEditorView.js +8 -5
  60. package/dist/features/admin/components/AdminAddressEditorView.js +5 -5
  61. package/dist/features/admin/components/AdminAdsView.js +10 -7
  62. package/dist/features/admin/components/AdminBlogEditorView.js +15 -9
  63. package/dist/features/admin/components/AdminBrandEditorView.js +10 -4
  64. package/dist/features/admin/components/AdminBrandsView.js +4 -4
  65. package/dist/features/admin/components/AdminBundleEditorView.js +4 -5
  66. package/dist/features/admin/components/AdminBundlesView.js +3 -3
  67. package/dist/features/admin/components/AdminCarouselEditorView.js +6 -3
  68. package/dist/features/admin/components/AdminCarouselView.js +6 -6
  69. package/dist/features/admin/components/AdminCatalogGuideView.js +2 -1
  70. package/dist/features/admin/components/AdminCategoriesView.js +5 -5
  71. package/dist/features/admin/components/AdminCategoryEditorView.js +11 -5
  72. package/dist/features/admin/components/AdminContactEditorView.js +8 -1
  73. package/dist/features/admin/components/AdminCouponEditorView.js +23 -5
  74. package/dist/features/admin/components/AdminEmployeeEditorView.js +7 -4
  75. package/dist/features/admin/components/AdminFaqEditorView.js +9 -3
  76. package/dist/features/admin/components/AdminFaqsView.js +4 -4
  77. package/dist/features/admin/components/AdminFeatureEditorView.js +7 -1
  78. package/dist/features/admin/components/AdminFeatureFlagsView.js +4 -1
  79. package/dist/features/admin/components/AdminFilterBar.js +4 -4
  80. package/dist/features/admin/components/AdminGroupedListingsView.js +65 -30
  81. package/dist/features/admin/components/AdminGuideHubView.js +4 -1
  82. package/dist/features/admin/components/AdminMediaView.js +4 -1
  83. package/dist/features/admin/components/AdminNavigationView.js +7 -4
  84. package/dist/features/admin/components/AdminNotificationsView.js +2 -2
  85. package/dist/features/admin/components/AdminOrderEditorView.js +2 -2
  86. package/dist/features/admin/components/AdminPageHeader.js +5 -2
  87. package/dist/features/admin/components/AdminPrizeDrawsView.js +5 -5
  88. package/dist/features/admin/components/AdminProductEditorView.js +12 -5
  89. package/dist/features/admin/components/AdminProductsView.js +4 -4
  90. package/dist/features/admin/components/AdminReviewsView.js +2 -2
  91. package/dist/features/admin/components/AdminScammerEditorView.js +6 -2
  92. package/dist/features/admin/components/AdminScammersView.js +3 -3
  93. package/dist/features/admin/components/AdminSectionsView.js +20 -22
  94. package/dist/features/admin/components/AdminSessionsManager.js +2 -1
  95. package/dist/features/admin/components/AdminSessionsView.js +2 -2
  96. package/dist/features/admin/components/AdminSidebar.js +11 -7
  97. package/dist/features/admin/components/AdminSiteConfigGuideView.js +2 -1
  98. package/dist/features/admin/components/AdminSiteSettingsView.js +5 -1
  99. package/dist/features/admin/components/AdminStoreAddressesView.js +2 -2
  100. package/dist/features/admin/components/AdminStoreEditorView.js +5 -5
  101. package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +3 -3
  102. package/dist/features/admin/components/AdminSupportTicketDetailView.js +10 -3
  103. package/dist/features/admin/components/AdminSupportTicketsView.js +3 -3
  104. package/dist/features/admin/components/AdminTrustGuideView.js +3 -3
  105. package/dist/features/admin/components/AdminUsersGuideView.js +3 -3
  106. package/dist/features/admin/components/AdminViewCards.js +12 -6
  107. package/dist/features/admin/components/BrandQuickCreateForm.js +2 -2
  108. package/dist/features/admin/components/CategoryQuickCreateForm.js +2 -2
  109. package/dist/features/admin/components/DashboardStats.js +9 -3
  110. package/dist/features/admin/components/DataListingView.js +3 -3
  111. package/dist/features/admin/components/DataTable.js +11 -7
  112. package/dist/features/admin/components/DrawerFormFooter.js +2 -2
  113. package/dist/features/admin/components/QuickEditMenu.js +2 -1
  114. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +5 -1
  115. package/dist/features/admin/hooks/useAdmin.d.ts +1 -1
  116. package/dist/features/admin/hooks/useAdminSectionsListing.d.ts +1 -1
  117. package/dist/features/admin/hooks/useChat.d.ts +1 -1
  118. package/dist/features/auctions/components/AuctionBidsTable.js +4 -1
  119. package/dist/features/auctions/components/AuctionDetailPageView.js +14 -6
  120. package/dist/features/auctions/components/CollapsibleBidHistory.js +5 -1
  121. package/dist/features/auctions/components/MarketplaceAuctionCard.js +9 -3
  122. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +8 -2
  123. package/dist/features/auctions/components/PlaceBidFormClient.js +4 -1
  124. package/dist/features/auctions/hooks/useAuctions.d.ts +8 -8
  125. package/dist/features/auth/components/RegisterForm.js +2 -2
  126. package/dist/features/auth/components/VerifyEmailView.js +5 -2
  127. package/dist/features/auth/consent-otp.d.ts +2 -2
  128. package/dist/features/auth/hooks/useAuth.d.ts +2 -2
  129. package/dist/features/before-after/components/BeforeAfterSlider.js +1 -1
  130. package/dist/features/blog/components/BlogFeaturedCard.js +8 -1
  131. package/dist/features/blog/components/BlogIndexListing.js +11 -5
  132. package/dist/features/blog/components/BlogListView.js +11 -3
  133. package/dist/features/blog/components/BlogPostView.js +10 -3
  134. package/dist/features/cart/components/CartDrawer.js +11 -3
  135. package/dist/features/cart/components/CartSummary.js +2 -2
  136. package/dist/features/cart/components/CheckoutOtpModal.js +2 -1
  137. package/dist/features/cart/hooks/useCart.d.ts +1 -1
  138. package/dist/features/cart/hooks/useCartQuery.d.ts +1 -1
  139. package/dist/features/cart/hooks/useCheckoutReadQueries.d.ts +2 -2
  140. package/dist/features/cart/hooks/useOrder.d.ts +2 -2
  141. package/dist/features/categories/components/BrandDetailPageView.js +5 -2
  142. package/dist/features/categories/components/BrandDetailTabs.js +5 -1
  143. package/dist/features/categories/components/BundleDetailView.js +6 -3
  144. package/dist/features/categories/components/BundleDynamicRuleEditor.js +3 -1
  145. package/dist/features/categories/components/BundleItemsPicker.js +10 -3
  146. package/dist/features/categories/components/CategoriesIndexListing.js +12 -6
  147. package/dist/features/categories/components/CategoryBundlesListing.js +5 -2
  148. package/dist/features/categories/components/CategoryDetailPageView.js +6 -2
  149. package/dist/features/categories/components/CategoryDetailTabs.js +5 -1
  150. package/dist/features/categories/components/CategoryForm.js +6 -3
  151. package/dist/features/categories/components/CategoryGrid.js +9 -2
  152. package/dist/features/categories/components/CategoryProductsListing.js +10 -4
  153. package/dist/features/categories/components/CategorySelectorCreate.js +3 -3
  154. package/dist/features/categories/components/CategorySortSelect.js +1 -1
  155. package/dist/features/categories/components/CategoryStoresListing.js +3 -3
  156. package/dist/features/categories/components/CategoryTableColumns.js +10 -6
  157. package/dist/features/categories/components/CategoryTree.js +1 -1
  158. package/dist/features/categories/hooks/useCategories.d.ts +3 -3
  159. package/dist/features/categories/hooks/useCategorySelector.d.ts +3 -3
  160. package/dist/features/categories/hooks/useCategoryTree.d.ts +1 -1
  161. package/dist/features/checkout/hooks/useCheckoutApi.d.ts +2 -2
  162. package/dist/features/classified/components/ClassifiedFilters.js +2 -2
  163. package/dist/features/classified/components/ClassifiedIndexListing.js +9 -3
  164. package/dist/features/collections/components/CollectionCard.js +2 -1
  165. package/dist/features/collections/hooks/useCollections.d.ts +2 -2
  166. package/dist/features/contact/components/ContactForm.js +4 -2
  167. package/dist/features/contact/components/ContactInfoSidebar.js +4 -1
  168. package/dist/features/copilot/components/AdminCopilotView.js +13 -5
  169. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +9 -3
  170. package/dist/features/events/components/AdminEventEditorView.js +62 -40
  171. package/dist/features/events/components/AdminEventEntriesView.js +9 -6
  172. package/dist/features/events/components/EventCard.js +7 -1
  173. package/dist/features/events/components/EventFormDrawer.js +2 -1
  174. package/dist/features/events/components/EventLeaderboard.js +4 -4
  175. package/dist/features/events/components/EventOfferCard.js +4 -1
  176. package/dist/features/events/components/EventParticipateView.js +3 -2
  177. package/dist/features/events/components/EventPollWidget.js +6 -5
  178. package/dist/features/events/components/EventRaffleEntryForm.js +5 -2
  179. package/dist/features/events/components/EventRaffleWinnerView.js +7 -1
  180. package/dist/features/events/components/EventRafflesSection.js +2 -2
  181. package/dist/features/events/components/EventSaleBanner.js +5 -2
  182. package/dist/features/events/components/EventsIndexListing.js +8 -2
  183. package/dist/features/events/components/EventsListView.js +4 -1
  184. package/dist/features/events/components/SpinWheelView.js +7 -2
  185. package/dist/features/events/hooks/useEvent.d.ts +3 -3
  186. package/dist/features/events/hooks/useEvents.d.ts +1 -1
  187. package/dist/features/events/schemas/firestore.d.ts +1 -0
  188. package/dist/features/events/types/index.d.ts +1 -0
  189. package/dist/features/faq/components/ContactCTA.js +4 -1
  190. package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
  191. package/dist/features/faq/components/FAQHelpfulButtons.js +8 -5
  192. package/dist/features/faq/components/FAQPageContent.js +5 -5
  193. package/dist/features/faq/components/FAQSortDropdown.js +2 -2
  194. package/dist/features/faq/hooks/useFAQs.d.ts +1 -1
  195. package/dist/features/faq/hooks/useFaqList.d.ts +15 -15
  196. package/dist/features/filters/AsyncFacetSection.js +4 -2
  197. package/dist/features/filters/FilterFacetSection.js +14 -6
  198. package/dist/features/filters/RangeFilter.js +4 -2
  199. package/dist/features/filters/SwitchFilter.js +2 -1
  200. package/dist/features/forms/Checkbox.js +1 -1
  201. package/dist/features/forms/Radio.js +1 -1
  202. package/dist/features/forms/Slider.js +1 -1
  203. package/dist/features/homepage/components/AdSlot.js +4 -4
  204. package/dist/features/homepage/components/AdvertisementBanner.js +13 -4
  205. package/dist/features/homepage/components/AnnouncementBar.js +2 -1
  206. package/dist/features/homepage/components/BeforeAfterCard.js +8 -2
  207. package/dist/features/homepage/components/BrandsSection.js +6 -3
  208. package/dist/features/homepage/components/CTABannerSection.js +2 -2
  209. package/dist/features/homepage/components/CharacterHotspot.js +5 -2
  210. package/dist/features/homepage/components/CharacterHotspotForm.js +8 -4
  211. package/dist/features/homepage/components/CustomCardsSection.js +13 -7
  212. package/dist/features/homepage/components/CustomerReviewsSection.js +9 -3
  213. package/dist/features/homepage/components/FAQSection.js +7 -4
  214. package/dist/features/homepage/components/FeaturedBundlesSection.js +8 -2
  215. package/dist/features/homepage/components/FeaturedResultsSection.js +1 -1
  216. package/dist/features/homepage/components/GoogleReviewsSection.js +14 -8
  217. package/dist/features/homepage/components/HeroCarousel.js +1 -1
  218. package/dist/features/homepage/components/HomepageSkeleton.js +7 -1
  219. package/dist/features/homepage/components/HowItWorksInfoView.js +2 -2
  220. package/dist/features/homepage/components/HowItWorksSection.js +2 -2
  221. package/dist/features/homepage/components/NewsletterBanner.js +3 -2
  222. package/dist/features/homepage/components/NewsletterSection.js +5 -2
  223. package/dist/features/homepage/components/PromoGrid.js +4 -1
  224. package/dist/features/homepage/components/SectionCarousel.js +7 -4
  225. package/dist/features/homepage/components/SecurityHighlightsSection.js +3 -3
  226. package/dist/features/homepage/components/ShopByCategorySection.js +10 -4
  227. package/dist/features/homepage/components/SiteFeaturesSection.js +5 -2
  228. package/dist/features/homepage/components/SocialFeedSection.js +4 -4
  229. package/dist/features/homepage/components/SocialPostCard.js +6 -3
  230. package/dist/features/homepage/components/TrustFeaturesSection.js +5 -5
  231. package/dist/features/homepage/components/TrustIndicatorsSection.js +5 -2
  232. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  233. package/dist/features/homepage/components/WhatsAppCommunitySection.js +3 -3
  234. package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -1
  235. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +1 -1
  236. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +1 -1
  237. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -1
  238. package/dist/features/homepage/hooks/useFeaturedStores.d.ts +1 -1
  239. package/dist/features/homepage/hooks/useHeroCarousel.d.ts +1 -1
  240. package/dist/features/homepage/hooks/useHomepageEvents.d.ts +1 -1
  241. package/dist/features/homepage/hooks/useHomepageReviews.d.ts +1 -1
  242. package/dist/features/homepage/hooks/useHomepageSections.d.ts +1 -1
  243. package/dist/features/homepage/hooks/useTopBrands.d.ts +1 -1
  244. package/dist/features/homepage/hooks/useTopCategories.d.ts +1 -1
  245. package/dist/features/layout/AppLayoutShell.js +2 -1
  246. package/dist/features/layout/BackToTop.js +1 -1
  247. package/dist/features/layout/BottomActions.js +4 -3
  248. package/dist/features/layout/BottomNavItem.js +1 -1
  249. package/dist/features/layout/BottomSheet.js +4 -1
  250. package/dist/features/layout/FooterLayout.js +1 -1
  251. package/dist/features/layout/NavbarLayout.js +4 -1
  252. package/dist/features/layout/SidebarLayout.js +5 -2
  253. package/dist/features/live/components/LiveItemFilters.js +2 -2
  254. package/dist/features/live/components/LiveItemsIndexListing.js +9 -3
  255. package/dist/features/loyalty/components/CoinsDisplay.js +4 -2
  256. package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +1 -1
  257. package/dist/features/media/AvatarUpload.js +2 -2
  258. package/dist/features/media/MediaLightbox.js +3 -2
  259. package/dist/features/media/modals/VideoThumbnailSelector.js +4 -1
  260. package/dist/features/media/modals/VideoTrimModal.js +1 -1
  261. package/dist/features/media/upload/CameraCapture.js +1 -1
  262. package/dist/features/media/upload/ImageUpload.js +4 -1
  263. package/dist/features/media/upload/MediaUploadField.js +11 -2
  264. package/dist/features/media/upload/MediaUploadList.js +5 -1
  265. package/dist/features/orders/components/MarketplaceOrderCard.js +2 -2
  266. package/dist/features/orders/components/OrdersList.js +2 -1
  267. package/dist/features/orders/components/RefundHistoryTable.js +4 -1
  268. package/dist/features/orders/components/RefundRequestView.js +2 -1
  269. package/dist/features/orders/hooks/useOrders.d.ts +2 -2
  270. package/dist/features/payments/hooks/usePayments.d.ts +1 -1
  271. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +5 -1
  272. package/dist/features/pre-orders/components/PreOrderActionsClient.js +3 -3
  273. package/dist/features/pre-orders/components/PreOrderBadge.js +2 -1
  274. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +16 -7
  275. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +32 -24
  276. package/dist/features/pre-orders/hooks/usePreOrders.d.ts +2 -2
  277. package/dist/features/products/columns/productTableColumns.js +9 -4
  278. package/dist/features/products/components/AuctionsIndexListing.js +9 -3
  279. package/dist/features/products/components/BidHistory.js +4 -4
  280. package/dist/features/products/components/CompareOverlay.js +10 -2
  281. package/dist/features/products/components/CustomFieldsEditor.js +2 -1
  282. package/dist/features/products/components/CustomSectionTabContent.js +2 -2
  283. package/dist/features/products/components/CustomSectionsEditor.js +3 -2
  284. package/dist/features/products/components/GroupSettingsPanel.js +34 -26
  285. package/dist/features/products/components/MakeOfferButton.js +6 -2
  286. package/dist/features/products/components/MakeOfferForm.js +2 -1
  287. package/dist/features/products/components/MarketplaceBundleCard.js +6 -3
  288. package/dist/features/products/components/MarketplacePrizeDrawCard.js +3 -2
  289. package/dist/features/products/components/PlaceBidForm.js +2 -1
  290. package/dist/features/products/components/PrizeDrawCollage.js +6 -2
  291. package/dist/features/products/components/PrizeDrawDetailPageView.js +6 -1
  292. package/dist/features/products/components/PrizeDrawItemsEditor.js +4 -2
  293. package/dist/features/products/components/PrizeDrawsIndexListing.js +6 -3
  294. package/dist/features/products/components/PrizeDrawsSection.js +2 -2
  295. package/dist/features/products/components/PrizeRevealModal.js +5 -1
  296. package/dist/features/products/components/ProductDetailPageView.js +32 -16
  297. package/dist/features/products/components/ProductFeatureBadges.js +9 -9
  298. package/dist/features/products/components/ProductForm.d.ts +11 -1
  299. package/dist/features/products/components/ProductForm.js +10 -5
  300. package/dist/features/products/components/ProductGalleryClient.js +8 -4
  301. package/dist/features/products/components/ProductGradingTab.js +4 -1
  302. package/dist/features/products/components/ProductGrid.js +35 -14
  303. package/dist/features/products/components/ProductInfo.js +2 -1
  304. package/dist/features/products/components/ProductTabs.js +2 -1
  305. package/dist/features/products/components/ProductTabsShell.js +5 -1
  306. package/dist/features/products/components/ProductsIndexListing.js +32 -24
  307. package/dist/features/products/components/ProductsIndexPageView.js +2 -2
  308. package/dist/features/products/components/RelatedProducts.js +3 -3
  309. package/dist/features/products/components/ShowGroupSection.js +10 -6
  310. package/dist/features/products/components/SublistingCarouselSection.js +7 -3
  311. package/dist/features/products/components/SublistingCategorySelect.d.ts +3 -1
  312. package/dist/features/products/components/SublistingCategorySelect.js +4 -37
  313. package/dist/features/products/constants/action-defs.js +3 -3
  314. package/dist/features/products/hooks/useProductDetail.d.ts +1 -1
  315. package/dist/features/products/hooks/useRelatedProducts.d.ts +1 -1
  316. package/dist/features/promotions/components/CouponCard.js +5 -3
  317. package/dist/features/promotions/components/CouponsIndexListing.js +7 -3
  318. package/dist/features/promotions/hooks/usePromotions.d.ts +2 -2
  319. package/dist/features/promotions/repository/coupons.repository.d.ts +8 -0
  320. package/dist/features/promotions/repository/coupons.repository.js +2 -0
  321. package/dist/features/reviews/components/ReviewDetailPageView.js +3 -3
  322. package/dist/features/reviews/components/ReviewDetailShell.js +15 -3
  323. package/dist/features/reviews/components/ReviewSummary.js +4 -2
  324. package/dist/features/reviews/components/ReviewsIndexListing.js +8 -2
  325. package/dist/features/reviews/components/ReviewsList.js +1 -1
  326. package/dist/features/reviews/hooks/useReviews.d.ts +2 -2
  327. package/dist/features/scams/components/ScamAwarenessModal.js +2 -2
  328. package/dist/features/scams/components/ScamProfileView.js +3 -3
  329. package/dist/features/scams/components/ScamRegistryView.js +6 -4
  330. package/dist/features/search/components/Search.js +9 -6
  331. package/dist/features/search/components/SearchFiltersRow.js +1 -1
  332. package/dist/features/search/components/SearchResultsSection.js +1 -1
  333. package/dist/features/search/hooks/useSearch.d.ts +2 -2
  334. package/dist/features/seller/components/CouponInlineSelect.d.ts +22 -0
  335. package/dist/features/seller/components/CouponInlineSelect.js +103 -0
  336. package/dist/features/seller/components/GroupInlineSelect.d.ts +23 -0
  337. package/dist/features/seller/components/GroupInlineSelect.js +80 -0
  338. package/dist/features/seller/components/PhysicalLocationModal.js +2 -1
  339. package/dist/features/seller/components/PrintCenterView.js +2 -1
  340. package/dist/features/seller/components/ProductInlineSelect.d.ts +24 -0
  341. package/dist/features/seller/components/ProductInlineSelect.js +42 -0
  342. package/dist/features/seller/components/QuickProductForm.js +4 -1
  343. package/dist/features/seller/components/SellerAddressesView.js +8 -3
  344. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +6 -3
  345. package/dist/features/seller/components/SellerAnalyticsView.js +2 -2
  346. package/dist/features/seller/components/SellerBidsView.js +7 -7
  347. package/dist/features/seller/components/SellerBundlesView.js +2 -1
  348. package/dist/features/seller/components/SellerCouponEditorView.d.ts +2 -0
  349. package/dist/features/seller/components/SellerCouponEditorView.js +15 -3
  350. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  351. package/dist/features/seller/components/SellerDashboardView.js +2 -2
  352. package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
  353. package/dist/features/seller/components/SellerGoogleReviewsView.js +2 -2
  354. package/dist/features/seller/components/SellerGroupedListingsView.js +5 -5
  355. package/dist/features/seller/components/SellerOrdersView.js +13 -10
  356. package/dist/features/seller/components/SellerPayoutMethodsView.js +5 -4
  357. package/dist/features/seller/components/SellerPayoutRequestView.js +5 -1
  358. package/dist/features/seller/components/SellerPayoutSettingsView.js +5 -2
  359. package/dist/features/seller/components/SellerPreOrdersView.js +6 -6
  360. package/dist/features/seller/components/SellerPrizeDrawsView.js +6 -6
  361. package/dist/features/seller/components/SellerProductShell.js +1 -1
  362. package/dist/features/seller/components/SellerProductsCards.js +4 -1
  363. package/dist/features/seller/components/SellerProductsView.js +5 -5
  364. package/dist/features/seller/components/SellerReviewsView.js +7 -3
  365. package/dist/features/seller/components/SellerShippingConfigsView.js +4 -4
  366. package/dist/features/seller/components/SellerShippingView.js +1 -1
  367. package/dist/features/seller/components/SellerSidebar.js +15 -8
  368. package/dist/features/seller/components/SellerStoreCategoriesView.js +1 -1
  369. package/dist/features/seller/components/SellerStorefrontView.js +2 -2
  370. package/dist/features/seller/components/SellerTemplatesView.js +7 -4
  371. package/dist/features/seller/components/SublistingInlineSelect.d.ts +19 -0
  372. package/dist/features/seller/components/SublistingInlineSelect.js +83 -0
  373. package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
  374. package/dist/features/seller/components/index.d.ts +8 -0
  375. package/dist/features/seller/components/index.js +4 -0
  376. package/dist/features/seller/hooks/useSellerPayouts.d.ts +3 -3
  377. package/dist/features/seller/hooks/useSellerStore.d.ts +6 -6
  378. package/dist/features/seller/hooks/useSellerStorefront.d.ts +2 -2
  379. package/dist/features/shell/FormShell.js +10 -2
  380. package/dist/features/shell/QuickFormDrawer.js +5 -5
  381. package/dist/features/shell/StepForm.js +6 -6
  382. package/dist/features/site-settings/components/ActionPermissionsManager.js +8 -4
  383. package/dist/features/site-settings/components/NavPermissionsManager.js +7 -4
  384. package/dist/features/stores/components/InteractiveStoreCard.js +5 -1
  385. package/dist/features/stores/components/StoreAboutView.js +4 -1
  386. package/dist/features/stores/components/StoreAddressSelectorCreate.d.ts +2 -1
  387. package/dist/features/stores/components/StoreAddressSelectorCreate.js +5 -31
  388. package/dist/features/stores/components/StoreAuctionsListing.js +6 -3
  389. package/dist/features/stores/components/StoreGuideHubView.js +5 -2
  390. package/dist/features/stores/components/StoreHeader.js +8 -1
  391. package/dist/features/stores/components/StorePreOrdersListing.js +6 -3
  392. package/dist/features/stores/components/StoreProductsListing.js +6 -3
  393. package/dist/features/stores/components/StoreReviewsListing.js +8 -2
  394. package/dist/features/stores/components/StoresIndexListing.js +12 -6
  395. package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +1 -1
  396. package/dist/features/stores/hooks/useStores.d.ts +6 -6
  397. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +7 -1
  398. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +2 -1
  399. package/dist/features/wishlist/components/WishlistPage.js +2 -1
  400. package/dist/features/wishlist/hooks/useUserWishlist.d.ts +15 -15
  401. package/dist/features/wishlist/hooks/useWishlist.d.ts +1 -1
  402. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  403. package/dist/index.d.ts +10 -0
  404. package/dist/index.js +13 -1
  405. package/dist/next/components/GlobalError.js +2 -2
  406. package/dist/next/routing/route-map.d.ts +2 -0
  407. package/dist/next/routing/route-map.js +1 -0
  408. package/dist/providers/db-firebase/base.repository.d.ts +1 -1
  409. package/dist/react/ErrorBoundary.js +2 -2
  410. package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
  411. package/dist/seed/manifest.js +10 -0
  412. package/dist/styles.css +2 -1
  413. package/dist/tailwind-utilities.css +1 -1
  414. package/dist/ui/DataTable.js +17 -16
  415. package/dist/ui/components/DateInput.js +2 -2
  416. package/dist/ui/components/DetailPageGallery.js +4 -1
  417. package/dist/ui/components/DetailPageTabs.js +6 -2
  418. package/dist/ui/components/ImageLightbox.js +5 -3
  419. package/dist/ui/components/Input.js +6 -3
  420. package/dist/ui/components/Layout.d.ts +4 -0
  421. package/dist/ui/components/Layout.js +1 -1
  422. package/dist/ui/components/Layout.style.css +1 -0
  423. package/dist/ui/components/ListingFilterDrawer.js +4 -1
  424. package/dist/ui/components/ListingLayout.js +9 -8
  425. package/dist/ui/components/ListingToolbar.js +5 -1
  426. package/dist/ui/components/PaginatedSelect.d.ts +1 -2
  427. package/dist/ui/components/PaginatedSelect.js +1 -2
  428. package/dist/ui/components/Radio.js +1 -1
  429. package/dist/ui/components/Select.js +2 -1
  430. package/dist/ui/components/Slider.js +1 -1
  431. package/dist/ui/components/VacationBanner.js +2 -1
  432. package/dist/ui/components/surface-tokens.d.ts +1 -0
  433. package/dist/ui/components/surface-tokens.js +1 -0
  434. package/package.json +22 -4
@@ -12,16 +12,16 @@ export declare function useStores(params?: StoreListParams, opts?: UseStoresOpti
12
12
  hasMore: boolean;
13
13
  isLoading: false;
14
14
  error: string | null;
15
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<StoreListResponse, Error>>;
15
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<StoreListResponse>, Error>>;
16
16
  };
17
17
  export declare function useStoreBySlug(storeSlug: string, opts?: {
18
18
  enabled?: boolean;
19
19
  endpoint?: string;
20
20
  }): {
21
- store: StoreDetail | null;
21
+ store: NonNullable<NoInfer<StoreDetail | null>> | null;
22
22
  isLoading: boolean;
23
23
  error: string | null;
24
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<StoreDetail | null, Error>>;
24
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<StoreDetail | null>, Error>>;
25
25
  };
26
26
  export declare function useStoreProducts(storeSlug: string, params?: string, opts?: {
27
27
  enabled?: boolean;
@@ -32,7 +32,7 @@ export declare function useStoreProducts(storeSlug: string, params?: string, opt
32
32
  totalPages: number;
33
33
  isLoading: boolean;
34
34
  error: string | null;
35
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<StoreProductsResponse, Error>>;
35
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<StoreProductsResponse>, Error>>;
36
36
  };
37
37
  export declare function useStoreAuctions(storeSlug: string, params?: string, opts?: {
38
38
  enabled?: boolean;
@@ -43,7 +43,7 @@ export declare function useStoreAuctions(storeSlug: string, params?: string, opt
43
43
  totalPages: number;
44
44
  isLoading: boolean;
45
45
  error: string | null;
46
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<StoreAuctionsResponse, Error>>;
46
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<StoreAuctionsResponse>, Error>>;
47
47
  };
48
48
  export declare function useStoreReviews(storeSlug: string, params?: {
49
49
  rating?: number;
@@ -66,6 +66,6 @@ export declare function useStoreReviews(storeSlug: string, params?: {
66
66
  ratingDistribution: Record<number, number>;
67
67
  isLoading: boolean;
68
68
  error: string | null;
69
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<StoreReviewsData, Error>>;
69
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<StoreReviewsData>, Error>>;
70
70
  };
71
71
  export {};
@@ -1,6 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
+ const __P = {
5
+ p3: "p-3",
6
+ };
7
+ const __O = {
8
+ hidden: "overflow-hidden",
9
+ };
4
10
  const CLS_SECTION_CARD = "border border-zinc-200 dark:border-zinc-700 rounded-xl p-5";
5
11
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
6
12
  import { Alert, Badge, Button, Div, Form, FormActions, Heading, Input, Row, Section, Span, Stack, Text, Toggle, useToast } from "../../../ui";
@@ -163,7 +169,7 @@ export function SellerWhatsAppSettingsView({ hasCapability }) {
163
169
  additionalItemCount: 2,
164
170
  totalAmount: 450000,
165
171
  orderId: "order-3-20260510-a1b2c3",
166
- }) })] }), _jsxs(Section, { className: CLS_SECTION_CARD, children: [_jsx(Heading, { level: 2, className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100 mb-2", children: "Catalog Preview" }), _jsx(Text, { className: "text-xs text-zinc-500 dark:text-zinc-400 mb-4", children: "This is how your products appear in the WhatsApp Catalog when a buyer taps \"View Catalog\" in the chat. Only published standard products are included." }), _jsxs(Div, { className: "border border-zinc-200 dark:border-zinc-700 rounded-xl overflow-hidden bg-[#ECE5DD] dark:bg-zinc-800 p-3", children: [_jsxs(Row, { gap: "sm", align: "center", className: "mb-3", children: [_jsx(Div, { className: "w-8 h-8 rounded-full bg-[#25D366] flex items-center justify-center", children: _jsx(Text, { className: "text-white text-xs font-bold", children: "W" }) }), _jsxs(Div, { children: [_jsx(Text, { className: "text-xs font-semibold text-zinc-900 dark:text-zinc-100", children: cfg?.connected ? "Your Store" : "Store Name" }), _jsx(Text, { className: "text-[10px] text-zinc-500 dark:text-zinc-400", children: "WhatsApp Business" })] })] }), _jsx(Div, { className: "grid grid-cols-2 gap-2", children: SAMPLE_CATALOG_ITEMS.map((item) => (_jsxs(Div, { surface: "card", className: "overflow-hidden", children: [_jsx(Div, { className: "aspect-square bg-zinc-100 dark:bg-zinc-800 flex items-center justify-center", children: _jsx(Text, { className: "text-2xl", children: item.emoji }) }), _jsxs(Div, { className: "p-2", children: [_jsx(Text, { className: "text-xs font-medium text-zinc-900 dark:text-zinc-100 line-clamp-2 leading-tight", children: item.name }), _jsx(Text, { className: "text-xs text-[#25D366] font-semibold mt-0.5", children: item.price })] })] }, item.id))) }), _jsx(Div, { className: "mt-3 text-center", children: _jsx(Text, { className: "text-[10px] text-zinc-500 dark:text-zinc-400", children: cfg?.lastSyncCount
172
+ }) })] }), _jsxs(Section, { className: CLS_SECTION_CARD, children: [_jsx(Heading, { level: 2, className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100 mb-2", children: "Catalog Preview" }), _jsx(Text, { className: "text-xs text-zinc-500 dark:text-zinc-400 mb-4", children: "This is how your products appear in the WhatsApp Catalog when a buyer taps \"View Catalog\" in the chat. Only published standard products are included." }), _jsxs(Div, { className: `border border-zinc-200 dark:border-zinc-700 rounded-xl ${__O.hidden} bg-[#ECE5DD] dark:bg-zinc-800 ${__P.p3}`, children: [_jsxs(Row, { gap: "sm", align: "center", className: "mb-3", children: [_jsx(Div, { className: "w-8 h-8 rounded-full bg-[#25D366] flex items-center justify-center", children: _jsx(Text, { className: "text-white text-xs font-bold", children: "W" }) }), _jsxs(Div, { children: [_jsx(Text, { className: "text-xs font-semibold text-zinc-900 dark:text-zinc-100", children: cfg?.connected ? "Your Store" : "Store Name" }), _jsx(Text, { className: "text-[10px] text-zinc-500 dark:text-zinc-400", children: "WhatsApp Business" })] })] }), _jsx(Div, { className: "grid grid-cols-2 gap-2", children: SAMPLE_CATALOG_ITEMS.map((item) => (_jsxs(Div, { surface: "card", className: `${__O.hidden}`, children: [_jsx(Div, { className: "aspect-square bg-zinc-100 dark:bg-zinc-800 flex items-center justify-center", children: _jsx(Text, { className: "text-2xl", children: item.emoji }) }), _jsxs(Div, { className: "p-2", children: [_jsx(Text, { className: "text-xs font-medium text-zinc-900 dark:text-zinc-100 line-clamp-2 leading-tight", children: item.name }), _jsx(Text, { className: "text-xs text-[#25D366] font-semibold mt-0.5", children: item.price })] })] }, item.id))) }), _jsx(Div, { className: "mt-3 text-center", children: _jsx(Text, { className: "text-[10px] text-zinc-500 dark:text-zinc-400", children: cfg?.lastSyncCount
167
173
  ? `${cfg.lastSyncCount} products synced to catalog`
168
174
  : "Sync your products to populate the catalog" }) })] }), !cfg?.connected && (_jsx(Text, { className: "text-xs text-warning mt-2", children: "Connect your WhatsApp Business account above to enable the catalog." }))] })] }));
169
175
  }
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Link from "next/link";
3
+ const CLS_WA_BTN = "inline-flex items-center gap-2 rounded-lg bg-green-500 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-green-600";
3
4
  export function WhatsAppChatButton({ waNumber, message = "Hi! I have a question.", label = "Chat on WhatsApp", className, }) {
4
5
  const href = `https://wa.me/${waNumber}?text=${encodeURIComponent(message)}`;
5
- return (_jsxs(Link, { href: href, target: "_blank", rel: "noopener noreferrer", className: `inline-flex items-center gap-2 rounded-lg bg-green-500 px-4 py-2 text-sm font-semibold text-white transition-colors hover:bg-green-600 ${className ?? ""}`, children: [_jsx("svg", { className: "h-4 w-4", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z" }) }), label] }));
6
+ return (_jsxs(Link, { href: href, target: "_blank", rel: "noopener noreferrer", className: `${CLS_WA_BTN} ${className ?? ""}`, children: [_jsx("svg", { className: "h-4 w-4", viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z" }) }), label] }));
6
7
  }
@@ -2,10 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Div, Stack, Text } from "../../../ui";
3
3
  import { formatCurrency } from "../../../utils/number.formatter";
4
4
  import { THEME_CONSTANTS } from "../../../tokens";
5
+ const CLS_REMOVE_BTN = "self-start text-zinc-400 dark:text-zinc-400 transition hover:text-red-500";
5
6
  export function WishlistCard({ item, onRemove, onProductClick, }) {
6
7
  return (_jsxs(Div, { surface: "card", padding: "sm", className: "flex gap-4", children: [_jsx(Div, { role: onProductClick ? "button" : undefined, tabIndex: onProductClick ? 0 : undefined, onClick: onProductClick ? () => onProductClick(item) : undefined, onKeyDown: onProductClick
7
8
  ? (e) => e.key === "Enter" && onProductClick(item)
8
- : undefined, className: `h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-neutral-100 dark:bg-slate-800 ${onProductClick ? "cursor-pointer" : ""}`, children: item.productImage && (_jsx(Div, { role: "img", "aria-label": item.productTitle ?? "", className: "h-full w-full bg-center bg-cover", style: { backgroundImage: `url(${item.productImage})` } })) }), _jsxs(Div, { className: "flex flex-1 flex-col justify-between", children: [_jsx(Text, { className: `font-medium text-neutral-900 dark:text-zinc-100 ${THEME_CONSTANTS.utilities.textClamp2}`, children: item.productTitle }), item.productPrice !== undefined && (_jsx(Text, { className: "text-sm font-semibold text-neutral-900 dark:text-zinc-100", children: formatCurrency(item.productPrice, item.productCurrency) }))] }), onRemove && (_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => onRemove(item.id), "aria-label": "Remove from wishlist", className: "self-start text-zinc-400 dark:text-zinc-400 transition hover:text-red-500", children: "\u2715" }))] }));
9
+ : undefined, className: `h-20 w-20 flex-shrink-0 overflow-hidden rounded-lg bg-neutral-100 dark:bg-slate-800 ${onProductClick ? "cursor-pointer" : ""}`, children: item.productImage && (_jsx(Div, { role: "img", "aria-label": item.productTitle ?? "", className: "h-full w-full bg-center bg-cover", style: { backgroundImage: `url(${item.productImage})` } })) }), _jsxs(Div, { className: "flex flex-1 flex-col justify-between", children: [_jsx(Text, { className: `font-medium text-neutral-900 dark:text-zinc-100 ${THEME_CONSTANTS.utilities.textClamp2}`, children: item.productTitle }), item.productPrice !== undefined && (_jsx(Text, { className: "text-sm font-semibold text-neutral-900 dark:text-zinc-100", children: formatCurrency(item.productPrice, item.productCurrency) }))] }), onRemove && (_jsx(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => onRemove(item.id), "aria-label": "Remove from wishlist", className: CLS_REMOVE_BTN, children: "\u2715" }))] }));
9
10
  }
10
11
  export function WishlistPage({ items, isLoading, onRemove, onProductClick, emptyLabel = "Your wishlist is empty", }) {
11
12
  if (isLoading) {
@@ -17,7 +17,7 @@ interface UseUserWishlistOptions<TProduct> {
17
17
  }
18
18
  export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWishlistOptions<TProduct>): {
19
19
  total: number;
20
- data: UserWishlistResponse<TProduct>;
20
+ data: NoInfer<UserWishlistResponse<TProduct>>;
21
21
  error: Error;
22
22
  isError: true;
23
23
  isPending: false;
@@ -40,12 +40,12 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
40
40
  isRefetching: boolean;
41
41
  isStale: boolean;
42
42
  isEnabled: boolean;
43
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
43
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
44
44
  fetchStatus: import("@tanstack/query-core").FetchStatus;
45
- promise: Promise<UserWishlistResponse<TProduct>>;
45
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
46
46
  } | {
47
47
  total: number;
48
- data: UserWishlistResponse<TProduct>;
48
+ data: NoInfer<UserWishlistResponse<TProduct>>;
49
49
  error: null;
50
50
  isError: false;
51
51
  isPending: false;
@@ -68,9 +68,9 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
68
68
  isRefetching: boolean;
69
69
  isStale: boolean;
70
70
  isEnabled: boolean;
71
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
71
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
72
72
  fetchStatus: import("@tanstack/query-core").FetchStatus;
73
- promise: Promise<UserWishlistResponse<TProduct>>;
73
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
74
74
  } | {
75
75
  total: number;
76
76
  data: undefined;
@@ -96,9 +96,9 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
96
96
  isRefetching: boolean;
97
97
  isStale: boolean;
98
98
  isEnabled: boolean;
99
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
99
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
100
100
  fetchStatus: import("@tanstack/query-core").FetchStatus;
101
- promise: Promise<UserWishlistResponse<TProduct>>;
101
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
102
102
  } | {
103
103
  total: number;
104
104
  data: undefined;
@@ -124,9 +124,9 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
124
124
  isRefetching: boolean;
125
125
  isStale: boolean;
126
126
  isEnabled: boolean;
127
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
127
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
128
128
  fetchStatus: import("@tanstack/query-core").FetchStatus;
129
- promise: Promise<UserWishlistResponse<TProduct>>;
129
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
130
130
  } | {
131
131
  total: number;
132
132
  data: undefined;
@@ -152,12 +152,12 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
152
152
  isRefetching: boolean;
153
153
  isStale: boolean;
154
154
  isEnabled: boolean;
155
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
155
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
156
156
  fetchStatus: import("@tanstack/query-core").FetchStatus;
157
- promise: Promise<UserWishlistResponse<TProduct>>;
157
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
158
158
  } | {
159
159
  total: number;
160
- data: UserWishlistResponse<TProduct>;
160
+ data: NoInfer<UserWishlistResponse<TProduct>>;
161
161
  isError: false;
162
162
  error: null;
163
163
  isPending: false;
@@ -180,8 +180,8 @@ export declare function useUserWishlist<TProduct = unknown>(options?: UseUserWis
180
180
  isRefetching: boolean;
181
181
  isStale: boolean;
182
182
  isEnabled: boolean;
183
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<UserWishlistResponse<TProduct>, Error>>;
183
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<UserWishlistResponse<TProduct>>, Error>>;
184
184
  fetchStatus: import("@tanstack/query-core").FetchStatus;
185
- promise: Promise<UserWishlistResponse<TProduct>>;
185
+ promise: Promise<NoInfer<UserWishlistResponse<TProduct>>>;
186
186
  };
187
187
  export {};
@@ -11,6 +11,6 @@ export declare function useWishlist(userId: string, opts?: UseWishlistOptions):
11
11
  isWishlisted: (productId: string) => boolean;
12
12
  isLoading: boolean;
13
13
  error: Error | null;
14
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<WishlistResponse, Error>>;
14
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<WishlistResponse>, Error>>;
15
15
  };
16
16
  export {};
@@ -17,7 +17,7 @@ export declare function useWishlistWithGuest(userId: string | null | undefined,
17
17
  isWishlisted: (productId: string) => boolean;
18
18
  isLoading: boolean;
19
19
  error: Error | null;
20
- refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<WishlistResponse, Error>>;
20
+ refetch: (options?: import("@tanstack/query-core").RefetchOptions) => Promise<import("@tanstack/query-core").QueryObserverResult<NoInfer<WishlistResponse>, Error>>;
21
21
  isGuest: boolean;
22
22
  guestWishlist?: undefined;
23
23
  } | {
package/dist/index.d.ts CHANGED
@@ -3063,6 +3063,16 @@ export { CategoryInlineSelect } from "./features/seller/components/CategoryInlin
3063
3063
  export type { CategoryInlineSelectProps } from "./features/seller/components/CategoryInlineSelect";
3064
3064
  export { BrandInlineSelect } from "./features/seller/components/BrandInlineSelect";
3065
3065
  export type { BrandInlineSelectProps } from "./features/seller/components/BrandInlineSelect";
3066
+ export { SublistingInlineSelect } from "./features/seller/components/SublistingInlineSelect";
3067
+ export type { SublistingInlineSelectProps } from "./features/seller/components/SublistingInlineSelect";
3068
+ export { CouponInlineSelect } from "./features/seller/components/CouponInlineSelect";
3069
+ export type { CouponInlineSelectProps } from "./features/seller/components/CouponInlineSelect";
3070
+ export { GroupInlineSelect } from "./features/seller/components/GroupInlineSelect";
3071
+ export type { GroupInlineSelectProps } from "./features/seller/components/GroupInlineSelect";
3072
+ export { ProductInlineSelect } from "./features/seller/components/ProductInlineSelect";
3073
+ export type { ProductInlineSelectProps } from "./features/seller/components/ProductInlineSelect";
3074
+ export { AddressInlineSelect } from "./features/account/components/AddressInlineSelect";
3075
+ export type { AddressInlineSelectProps } from "./features/account/components/AddressInlineSelect";
3066
3076
  export { FormShell, useFormShell } from "./features/shell/index";
3067
3077
  export type { FormShellSection, FormShellProps, UseFormShellResult } from "./features/shell/index";
3068
3078
  export { QuickFormDrawer } from "./features/shell/index";
package/dist/index.js CHANGED
@@ -926,7 +926,9 @@ export { resolvePermissions } from "./security/index";
926
926
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
927
927
  // AddressesRepository - unified top-level addresses collection (SB-UNI-A 2026-05-13).
928
928
  export { AddressesRepository } from "./repositories/index";
929
- // S-STORE foundation — 14 schemas + 14 repositories + RBAC
929
+ // S-STORE foundation — 14 schemas + 14 repositories + RBAC.
930
+ // store-extensions barrel: named-export expansion would be ~200 lines.
931
+ // reexport-from-internal-ok
930
932
  export * from "./features/store-extensions/index";
931
933
  // [DB]-Database layer â€" uses firebase-admin or another server-side DB SDK; can only run in a trusted server environment.
932
934
  // BaseRepository - Shared export for base repository.
@@ -5488,6 +5490,16 @@ export { SellerProductShell } from "./features/seller/components/SellerProductSh
5488
5490
  export { CategoryInlineSelect } from "./features/seller/components/CategoryInlineSelect";
5489
5491
  // [CLIENT] BrandInlineSelect â€" searchable brand selector with inline quick-create (default: allowCreate=true).
5490
5492
  export { BrandInlineSelect } from "./features/seller/components/BrandInlineSelect";
5493
+ // [CLIENT] SublistingInlineSelect â€" searchable sub-listing-category picker with optional admin quick-create.
5494
+ export { SublistingInlineSelect } from "./features/seller/components/SublistingInlineSelect";
5495
+ // [CLIENT] CouponInlineSelect â€" searchable coupon picker (admin or store scope) with store-side quick-create.
5496
+ export { CouponInlineSelect } from "./features/seller/components/CouponInlineSelect";
5497
+ // [CLIENT] GroupInlineSelect â€" searchable grouped-listing picker with inline quick-create.
5498
+ export { GroupInlineSelect } from "./features/seller/components/GroupInlineSelect";
5499
+ // [CLIENT] ProductInlineSelect â€" searchable product picker (admin or store scope), single or multi-select.
5500
+ export { ProductInlineSelect } from "./features/seller/components/ProductInlineSelect";
5501
+ // [CLIENT] AddressInlineSelect â€" searchable address picker (user or store ownerType) with inline drawer-create.
5502
+ export { AddressInlineSelect } from "./features/account/components/AddressInlineSelect";
5491
5503
  // --- Shell primitives (UX1/UX2/UX3) -------------------------------------------
5492
5504
  // [CLIENT] FormShell â€" full-viewport edit overlay with sticky top/bottom bars, left section nav, and dirty-state hook.
5493
5505
  export { FormShell, useFormShell } from "./features/shell/index";
@@ -12,7 +12,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
12
  * export { GlobalError as default } from "@mohasinac/appkit/next";
13
13
  */
14
14
  import { useEffect } from "react";
15
- import { Heading, Text } from "../../ui";
15
+ import { Button, Heading, Text } from "../../ui";
16
16
  import { trackError, ErrorCategory, ErrorSeverity, } from "../../monitoring/error-tracking";
17
17
  export function GlobalError({ error, reset }) {
18
18
  useEffect(() => {
@@ -40,5 +40,5 @@ export function GlobalError({ error, reset }) {
40
40
  maxWidth: "40rem",
41
41
  overflow: "auto",
42
42
  marginBottom: "1.5rem",
43
- }, children: [error.message, error.digest ? `\n(digest: ${error.digest})` : ""] })), _jsx("button", { onClick: reset, type: "button", children: "Try again" })] }) }));
43
+ }, children: [error.message, error.digest ? `\n(digest: ${error.digest})` : ""] })), _jsx(Button, { onClick: reset, type: "button", children: "Try again" })] }) }));
44
44
  }
@@ -135,6 +135,7 @@ export declare const DEFAULT_ROUTE_MAP: {
135
135
  readonly BIDS: "/user/bids";
136
136
  readonly RETURNS: "/user/returns";
137
137
  readonly SUPPORT: "/user/support";
138
+ readonly SUPPORT_NEW: "/user/support/new";
138
139
  readonly SUPPORT_TICKET: (id: string) => string;
139
140
  readonly PRE_ORDERS: "/user/pre-orders";
140
141
  readonly DIGITAL_CODES: "/user/digital-codes";
@@ -459,6 +460,7 @@ export declare const ROUTES: {
459
460
  readonly BIDS: "/user/bids";
460
461
  readonly RETURNS: "/user/returns";
461
462
  readonly SUPPORT: "/user/support";
463
+ readonly SUPPORT_NEW: "/user/support/new";
462
464
  readonly SUPPORT_TICKET: (id: string) => string;
463
465
  readonly PRE_ORDERS: "/user/pre-orders";
464
466
  readonly DIGITAL_CODES: "/user/digital-codes";
@@ -123,6 +123,7 @@ export const DEFAULT_ROUTE_MAP = {
123
123
  BIDS: "/user/bids",
124
124
  RETURNS: "/user/returns",
125
125
  SUPPORT: "/user/support",
126
+ SUPPORT_NEW: "/user/support/new",
126
127
  SUPPORT_TICKET: (id) => `/user/support/${id}`,
127
128
  PRE_ORDERS: "/user/pre-orders",
128
129
  DIGITAL_CODES: "/user/digital-codes",
@@ -4,7 +4,7 @@ export declare abstract class BaseRepository<T extends DocumentData> {
4
4
  protected collection: string;
5
5
  constructor(collectionName: string);
6
6
  protected get db(): Firestore;
7
- protected getCollection(): CollectionReference<DocumentData>;
7
+ protected getCollection(): CollectionReference<DocumentData, DocumentData>;
8
8
  protected mapDoc<D = T>(snap: DocumentSnapshot): D;
9
9
  findById(id: string): Promise<T | null>;
10
10
  findByIdOrFail(id: string): Promise<T>;
@@ -10,7 +10,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  */
11
11
  import { Component } from "react";
12
12
  import { Logger } from "../core/Logger";
13
- import { Heading, Text } from "../ui";
13
+ import { Button, Heading, Text } from "../ui";
14
14
  import { trackError, ErrorCategory, ErrorSeverity, } from "../monitoring/error-tracking";
15
15
  function DefaultFallback({ error, onReset, }) {
16
16
  return (_jsxs("div", { role: "alert", style: {
@@ -30,7 +30,7 @@ function DefaultFallback({ error, onReset, }) {
30
30
  maxWidth: "40rem",
31
31
  overflow: "auto",
32
32
  marginBottom: "1.5rem",
33
- }, children: error.message })), _jsx("button", { onClick: onReset, type: "button", children: "Try again" })] }));
33
+ }, children: error.message })), _jsx(Button, { onClick: onReset, type: "button", children: "Try again" })] }));
34
34
  }
35
35
  export class ErrorBoundary extends Component {
36
36
  constructor(props) {
@@ -6,7 +6,7 @@
6
6
  * the actual collection-specific seeding logic (800+ lines with PII encryption,
7
7
  * Auth user creation, subcollection handling, etc.).
8
8
  */
9
- export type SeedCollectionName = "users" | "addresses" | "categories" | "stores" | "products" | "orders" | "reviews" | "bids" | "coupons" | "carousels" | "carouselSlides" | "homepageSections" | "siteSettings" | "faqs" | "notifications" | "payouts" | "blogPosts" | "events" | "eventEntries" | "sessions" | "carts" | "wishlists" | "history" | "conversations" | "groupedListings" | "scammerProfiles" | "supportTickets" | "productFeatures" | "offers" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "storeWhatsAppConfig" | "storeGoogleConfig" | "roleOverrides" | "customRoles" | "adminNotifications";
9
+ export type SeedCollectionName = "users" | "addresses" | "categories" | "stores" | "products" | "orders" | "reviews" | "bids" | "coupons" | "carousels" | "carouselSlides" | "homepageSections" | "siteSettings" | "faqs" | "notifications" | "payouts" | "blogPosts" | "events" | "eventEntries" | "sessions" | "carts" | "wishlists" | "history" | "conversations" | "groupedListings" | "scammerProfiles" | "supportTickets" | "productFeatures" | "offers" | "couponUsage" | "claimedCoupons" | "payoutMethods" | "shippingConfigs" | "analyticsCards" | "analyticsAlerts" | "storeCategories" | "listingTemplates" | "moderationQueue" | "reports" | "itemRequests" | "storeWhatsAppConfig" | "storeGoogleConfig" | "roleOverrides" | "customRoles" | "adminNotifications";
10
10
  export interface SeedOperationResult {
11
11
  success?: boolean;
12
12
  message: string;
@@ -44,6 +44,8 @@ import { scammersSeedData } from "./scammers-seed-data";
44
44
  import { supportTicketsSeedData } from "./support-tickets-seed-data";
45
45
  import { productFeaturesSeedData } from "./product-features-seed-data";
46
46
  import { offersSeedData } from "./offers-seed-data";
47
+ import { couponUsageSeedData } from "./coupon-usage-seed-data";
48
+ import { claimedCouponsSeedData } from "./claimed-coupons-seed-data";
47
49
  function asArr(items) {
48
50
  return items ?? [];
49
51
  }
@@ -187,6 +189,14 @@ export const SEED_MANIFEST = {
187
189
  ...o,
188
190
  name: o.productTitle ?? o.id,
189
191
  }))),
192
+ couponUsage: asArr(couponUsageSeedData).map((u) => ({
193
+ id: `${u.userId}/${u.couponId}`,
194
+ name: String(u.couponCode ?? u.couponId),
195
+ })),
196
+ claimedCoupons: pick(asArr(claimedCouponsSeedData).map((c) => ({
197
+ ...c,
198
+ name: c.couponCode ?? c.couponId ?? c.id,
199
+ }))),
190
200
  // S-STORE foundation collections — entries derived lazily from store-extensions-seed-data
191
201
  payoutMethods: pick(asArr(payoutMethodsSeedData)),
192
202
  shippingConfigs: pick(asArr(shippingConfigsSeedData)),