@mohasinac/appkit 2.7.27 β†’ 2.7.31

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 (397) hide show
  1. package/dist/_internal/client/features/filters/filter-load-options.d.ts +29 -0
  2. package/dist/_internal/client/features/filters/filter-load-options.js +98 -0
  3. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +1 -1
  4. package/dist/_internal/server/features/checkout/actions.js +42 -35
  5. package/dist/_internal/server/features/classified/adapters.d.ts +21 -0
  6. package/dist/_internal/server/features/classified/adapters.js +24 -0
  7. package/dist/_internal/server/features/classified/index.d.ts +3 -0
  8. package/dist/_internal/server/features/classified/index.js +3 -0
  9. package/dist/_internal/server/features/classified/metadata.d.ts +8 -0
  10. package/dist/_internal/server/features/classified/metadata.js +43 -0
  11. package/dist/_internal/server/features/classified/og.d.ts +30 -0
  12. package/dist/_internal/server/features/classified/og.js +76 -0
  13. package/dist/_internal/server/features/digital-code/adapters.d.ts +21 -0
  14. package/dist/_internal/server/features/digital-code/adapters.js +29 -0
  15. package/dist/_internal/server/features/digital-code/index.d.ts +3 -0
  16. package/dist/_internal/server/features/digital-code/index.js +3 -0
  17. package/dist/_internal/server/features/digital-code/metadata.d.ts +8 -0
  18. package/dist/_internal/server/features/digital-code/metadata.js +36 -0
  19. package/dist/_internal/server/features/digital-code/og.d.ts +27 -0
  20. package/dist/_internal/server/features/digital-code/og.js +77 -0
  21. package/dist/_internal/server/features/live/adapters.d.ts +21 -0
  22. package/dist/_internal/server/features/live/adapters.js +34 -0
  23. package/dist/_internal/server/features/live/index.d.ts +3 -0
  24. package/dist/_internal/server/features/live/index.js +3 -0
  25. package/dist/_internal/server/features/live/metadata.d.ts +8 -0
  26. package/dist/_internal/server/features/live/metadata.js +39 -0
  27. package/dist/_internal/server/features/live/og.d.ts +27 -0
  28. package/dist/_internal/server/features/live/og.js +72 -0
  29. package/dist/_internal/server/features/promotions/actions.js +4 -3
  30. package/dist/_internal/server/jobs/core/onOrderCreate.js +19 -16
  31. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +25 -22
  32. package/dist/_internal/server/jobs/core/onProductWrite.js +48 -58
  33. package/dist/_internal/shared/actions/action-registry.js +504 -9
  34. package/dist/_internal/shared/features/blog/schema.d.ts +4 -4
  35. package/dist/_internal/shared/features/brands/schema.d.ts +5 -5
  36. package/dist/_internal/shared/features/cart/schema.d.ts +18 -18
  37. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +1 -1
  38. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +38 -38
  39. package/dist/_internal/shared/features/events/schema.d.ts +8 -8
  40. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  41. package/dist/_internal/shared/features/products/schema.d.ts +42 -42
  42. package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
  43. package/dist/_internal/shared/features/reviews/schema.d.ts +1 -1
  44. package/dist/_internal/shared/media/limits.js +4 -3
  45. package/dist/client.d.ts +4 -0
  46. package/dist/client.js +2 -0
  47. package/dist/configs/next.js +4 -0
  48. package/dist/constants/api-endpoints.d.ts +6 -0
  49. package/dist/constants/api-endpoints.js +2 -0
  50. package/dist/constants/field-names.d.ts +1 -0
  51. package/dist/constants/field-names.js +1 -0
  52. package/dist/constants/table-keys.d.ts +6 -0
  53. package/dist/constants/table-keys.js +9 -0
  54. package/dist/core/hooks/useSyncManager.js +9 -8
  55. package/dist/features/about/components/FeesView.js +10 -7
  56. package/dist/features/about/components/HelpPageView.js +10 -1
  57. package/dist/features/about/components/HowAuctionsWorkView.js +10 -1
  58. package/dist/features/about/components/HowCheckoutWorksView.js +10 -1
  59. package/dist/features/about/components/HowOffersWorkView.js +10 -1
  60. package/dist/features/about/components/HowOrdersWorkView.js +10 -1
  61. package/dist/features/about/components/HowPayoutsWorkView.js +10 -1
  62. package/dist/features/about/components/HowPreOrdersWorkView.js +10 -1
  63. package/dist/features/about/components/HowReviewsWorkView.js +10 -1
  64. package/dist/features/about/components/PublicProfileView.js +46 -16
  65. package/dist/features/about/components/SecurityPrivacyView.js +7 -1
  66. package/dist/features/account/components/AddressesIndexListing.js +2 -2
  67. package/dist/features/account/components/NotificationBell.js +27 -16
  68. package/dist/features/account/components/NotificationPreferencesPanel.d.ts +9 -0
  69. package/dist/features/account/components/NotificationPreferencesPanel.js +91 -0
  70. package/dist/features/account/components/UserSidebar.js +4 -4
  71. package/dist/features/account/components/UserSupportView.js +16 -6
  72. package/dist/features/account/components/index.d.ts +2 -0
  73. package/dist/features/account/components/index.js +1 -0
  74. package/dist/features/account/schemas/index.d.ts +4 -4
  75. package/dist/features/account/types/index.d.ts +34 -0
  76. package/dist/features/admin/actions/admin-actions.js +4 -3
  77. package/dist/features/admin/actions/notification-actions.d.ts +24 -22
  78. package/dist/features/admin/actions/notification-actions.js +122 -22
  79. package/dist/features/admin/components/AdminAdEditorView.js +29 -15
  80. package/dist/features/admin/components/AdminAddressEditorView.d.ts +7 -0
  81. package/dist/features/admin/components/AdminAddressEditorView.js +117 -0
  82. package/dist/features/admin/components/AdminAdsView.js +22 -28
  83. package/dist/features/admin/components/AdminAllEventEntriesView.js +6 -1
  84. package/dist/features/admin/components/AdminBidsView.js +10 -3
  85. package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
  86. package/dist/features/admin/components/AdminBlogView.js +8 -3
  87. package/dist/features/admin/components/AdminBrandsView.js +7 -2
  88. package/dist/features/admin/components/AdminBundleEditorView.js +5 -2
  89. package/dist/features/admin/components/AdminCarouselEditorView.js +6 -3
  90. package/dist/features/admin/components/AdminCarouselView.js +13 -7
  91. package/dist/features/admin/components/AdminCategoriesView.js +8 -3
  92. package/dist/features/admin/components/AdminCategoryEditorView.js +12 -9
  93. package/dist/features/admin/components/AdminContactView.js +6 -1
  94. package/dist/features/admin/components/AdminCouponEditorView.js +8 -2
  95. package/dist/features/admin/components/AdminCouponsView.js +6 -1
  96. package/dist/features/admin/components/AdminEmployeeEditorView.js +12 -9
  97. package/dist/features/admin/components/AdminFaqEditorView.js +2 -2
  98. package/dist/features/admin/components/AdminFaqsView.js +7 -2
  99. package/dist/features/admin/components/AdminFeatureFlagsView.js +58 -13
  100. package/dist/features/admin/components/AdminFeaturesView.js +4 -3
  101. package/dist/features/admin/components/AdminMediaView.js +9 -8
  102. package/dist/features/admin/components/AdminNavigationView.js +10 -17
  103. package/dist/features/admin/components/AdminNewsletterView.js +6 -1
  104. package/dist/features/admin/components/AdminNotificationsView.js +11 -3
  105. package/dist/features/admin/components/AdminOrdersView.js +6 -1
  106. package/dist/features/admin/components/AdminPayoutsView.js +10 -3
  107. package/dist/features/admin/components/AdminPrizeDrawsView.js +10 -3
  108. package/dist/features/admin/components/AdminProductEditorView.d.ts +3 -1
  109. package/dist/features/admin/components/AdminProductEditorView.js +12 -9
  110. package/dist/features/admin/components/AdminProductsView.js +18 -12
  111. package/dist/features/admin/components/AdminReturnRequestsView.js +5 -4
  112. package/dist/features/admin/components/AdminReviewsView.js +36 -26
  113. package/dist/features/admin/components/AdminScammerEditorView.js +3 -2
  114. package/dist/features/admin/components/AdminScammersView.js +28 -26
  115. package/dist/features/admin/components/AdminSectionsView.js +112 -99
  116. package/dist/features/admin/components/AdminSessionsView.js +10 -3
  117. package/dist/features/admin/components/AdminSidebar.js +4 -4
  118. package/dist/features/admin/components/AdminSiteSettingsView.js +45 -4
  119. package/dist/features/admin/components/AdminStoresView.js +6 -1
  120. package/dist/features/admin/components/AdminSublistingCategoriesView.js +0 -1
  121. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  122. package/dist/features/admin/components/AdminSupportTicketsView.js +32 -34
  123. package/dist/features/admin/components/AdminTeamView.js +6 -1
  124. package/dist/features/admin/components/AdminUserEditorView.js +8 -15
  125. package/dist/features/admin/components/AdminUsersView.js +6 -1
  126. package/dist/features/admin/components/AdminViewCards.js +4 -3
  127. package/dist/features/admin/components/DashboardStats.js +2 -2
  128. package/dist/features/admin/components/DataTable.js +2 -2
  129. package/dist/features/admin/components/index.d.ts +2 -0
  130. package/dist/features/admin/components/index.js +1 -0
  131. package/dist/features/admin/components/sections/adminSectionsTypes.js +4 -3
  132. package/dist/features/admin/repository/chat.repository.js +8 -8
  133. package/dist/features/admin/repository/site-settings.repository.d.ts +1 -0
  134. package/dist/features/admin/repository/site-settings.repository.js +11 -9
  135. package/dist/features/admin/schemas/firestore.d.ts +38 -0
  136. package/dist/features/admin/schemas/firestore.js +15 -0
  137. package/dist/features/auctions/components/AuctionBidsTable.d.ts +13 -0
  138. package/dist/features/auctions/components/AuctionBidsTable.js +62 -0
  139. package/dist/features/auctions/components/AuctionDetailPageView.js +15 -21
  140. package/dist/features/auctions/components/AuctionFilters.d.ts +7 -1
  141. package/dist/features/auctions/components/AuctionFilters.js +3 -2
  142. package/dist/features/auctions/components/MarketplaceAuctionCard.js +18 -9
  143. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +3 -2
  144. package/dist/features/auctions/components/index.d.ts +2 -1
  145. package/dist/features/auctions/components/index.js +1 -1
  146. package/dist/features/auctions/schemas/index.d.ts +14 -14
  147. package/dist/features/auth/actions/realtime-token-actions.js +19 -4
  148. package/dist/features/auth/components/RegisterForm.js +8 -4
  149. package/dist/features/auth/consent-otp.d.ts +2 -0
  150. package/dist/features/auth/consent-otp.js +8 -0
  151. package/dist/features/auth/schemas/firestore.d.ts +2 -0
  152. package/dist/features/auth/schemas/firestore.js +18 -25
  153. package/dist/features/auth/schemas/index.d.ts +2 -2
  154. package/dist/features/before-after/api/[id]/route.js +8 -6
  155. package/dist/features/before-after/schemas/index.d.ts +2 -2
  156. package/dist/features/blog/actions/blog-actions.d.ts +3 -3
  157. package/dist/features/blog/components/BlogIndexListing.js +21 -2
  158. package/dist/features/blog/components/BlogPostForm.js +11 -5
  159. package/dist/features/blog/components/BlogPostView.js +10 -2
  160. package/dist/features/blog/schemas/index.d.ts +18 -18
  161. package/dist/features/cart/components/CartDrawer.js +3 -2
  162. package/dist/features/cart/components/CartView.js +2 -1
  163. package/dist/features/cart/components/CheckoutView.js +2 -1
  164. package/dist/features/cart/repository/cart.repository.js +4 -3
  165. package/dist/features/cart/utils/pending-ops.d.ts +1 -1
  166. package/dist/features/categories/api/[id]/route.js +4 -3
  167. package/dist/features/categories/api/route.js +4 -3
  168. package/dist/features/categories/components/BrandDetailPageView.js +2 -2
  169. package/dist/features/categories/components/BrandDetailTabs.d.ts +5 -1
  170. package/dist/features/categories/components/BrandDetailTabs.js +30 -16
  171. package/dist/features/categories/components/BundleCollage.d.ts +8 -0
  172. package/dist/features/categories/components/BundleCollage.js +50 -0
  173. package/dist/features/categories/components/BundleDetailView.js +2 -10
  174. package/dist/features/categories/components/BundleItemsPicker.js +20 -13
  175. package/dist/features/categories/components/CategoriesIndexListing.js +28 -9
  176. package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
  177. package/dist/features/categories/components/CategoryDetailTabs.d.ts +5 -1
  178. package/dist/features/categories/components/CategoryDetailTabs.js +31 -16
  179. package/dist/features/categories/components/CategoryProductsListing.js +52 -13
  180. package/dist/features/categories/components/index.d.ts +2 -0
  181. package/dist/features/categories/components/index.js +1 -0
  182. package/dist/features/categories/schemas/index.d.ts +6 -6
  183. package/dist/features/checkout/actions/checkout-actions.js +4 -3
  184. package/dist/features/checkout/hooks/usePaymentCheckout.js +31 -22
  185. package/dist/features/classified/components/ClassifiedFilters.d.ts +12 -0
  186. package/dist/features/classified/components/ClassifiedFilters.js +20 -0
  187. package/dist/features/classified/components/ClassifiedIndexListing.d.ts +4 -0
  188. package/dist/features/classified/components/ClassifiedIndexListing.js +110 -0
  189. package/dist/features/classified/components/ClassifiedListView.d.ts +6 -0
  190. package/dist/features/classified/components/ClassifiedListView.js +43 -0
  191. package/dist/features/classified/components/index.d.ts +6 -0
  192. package/dist/features/classified/components/index.js +3 -0
  193. package/dist/features/collections/api/[slug]/route.js +16 -12
  194. package/dist/features/collections/schemas/index.d.ts +5 -5
  195. package/dist/features/consultation/api/[id]/route.js +12 -9
  196. package/dist/features/consultation/components/ConsultationForm.js +3 -2
  197. package/dist/features/consultation/schemas/index.d.ts +6 -6
  198. package/dist/features/contact/email.js +77 -116
  199. package/dist/features/copilot/components/AdminCopilotView.js +12 -2
  200. package/dist/features/corporate/api/[id]/route.js +12 -9
  201. package/dist/features/corporate/components/CorporateInquiryForm.js +2 -1
  202. package/dist/features/digital-codes/components/DigitalCodeFilters.d.ts +12 -0
  203. package/dist/features/digital-codes/components/DigitalCodeFilters.js +17 -0
  204. package/dist/features/digital-codes/components/DigitalCodesIndexListing.d.ts +4 -0
  205. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +107 -0
  206. package/dist/features/digital-codes/components/DigitalCodesListView.d.ts +6 -0
  207. package/dist/features/digital-codes/components/DigitalCodesListView.js +37 -0
  208. package/dist/features/digital-codes/components/index.d.ts +6 -0
  209. package/dist/features/digital-codes/components/index.js +3 -0
  210. package/dist/features/events/actions/event-actions.js +4 -3
  211. package/dist/features/events/components/AdminEventEditorView.js +3 -2
  212. package/dist/features/events/components/AdminEventsView.js +4 -2
  213. package/dist/features/events/components/EventPollWidget.js +5 -5
  214. package/dist/features/events/components/EventsIndexListing.js +2 -2
  215. package/dist/features/events/repository/event-entry.repository.d.ts +1 -0
  216. package/dist/features/events/repository/event-entry.repository.js +5 -0
  217. package/dist/features/events/schemas/index.d.ts +20 -20
  218. package/dist/features/faq/actions/faq-actions.d.ts +8 -8
  219. package/dist/features/faq/components/ContactCTA.js +3 -1
  220. package/dist/features/faq/components/FAQAccordion.js +1 -1
  221. package/dist/features/faq/schemas/index.d.ts +4 -4
  222. package/dist/features/filters/AsyncFacetSection.d.ts +18 -0
  223. package/dist/features/filters/AsyncFacetSection.js +65 -0
  224. package/dist/features/filters/index.d.ts +2 -0
  225. package/dist/features/filters/index.js +1 -0
  226. package/dist/features/forms/Checkbox.js +2 -2
  227. package/dist/features/forms/Input.js +2 -2
  228. package/dist/features/forms/Radio.js +5 -5
  229. package/dist/features/forms/Select.js +2 -2
  230. package/dist/features/forms/Slider.js +2 -2
  231. package/dist/features/forms/Textarea.js +2 -2
  232. package/dist/features/homepage/api/[id]/route.js +4 -3
  233. package/dist/features/homepage/api/sections/[id]/route.js +12 -9
  234. package/dist/features/homepage/components/AdSlot.js +2 -1
  235. package/dist/features/homepage/components/AdvertisementBanner.js +5 -3
  236. package/dist/features/homepage/components/BrandsSection.js +2 -2
  237. package/dist/features/homepage/components/CTABannerSection.js +2 -2
  238. package/dist/features/homepage/components/CharacterHotspot.d.ts +2 -2
  239. package/dist/features/homepage/components/CharacterHotspot.js +119 -157
  240. package/dist/features/homepage/components/CharacterHotspotForm.js +25 -20
  241. package/dist/features/homepage/components/CustomCardsSection.js +8 -6
  242. package/dist/features/homepage/components/FeaturedProductsSection.js +2 -2
  243. package/dist/features/homepage/components/GoogleReviewsSection.js +3 -3
  244. package/dist/features/homepage/components/HeroBanner.js +5 -4
  245. package/dist/features/homepage/components/HeroCarousel.js +13 -26
  246. package/dist/features/homepage/components/HowItWorksSection.js +4 -2
  247. package/dist/features/homepage/components/SocialFeedSection.js +2 -2
  248. package/dist/features/homepage/components/SocialPostCard.js +3 -2
  249. package/dist/features/homepage/lib/social-feed-fetcher.js +6 -3
  250. package/dist/features/layout/AppLayoutShell.d.ts +8 -2
  251. package/dist/features/layout/AppLayoutShell.js +54 -78
  252. package/dist/features/layout/BottomActions.js +43 -48
  253. package/dist/features/live/components/LiveItemFilters.d.ts +12 -0
  254. package/dist/features/live/components/LiveItemFilters.js +24 -0
  255. package/dist/features/live/components/LiveItemsIndexListing.d.ts +4 -0
  256. package/dist/features/live/components/LiveItemsIndexListing.js +108 -0
  257. package/dist/features/live/components/LiveItemsListView.d.ts +6 -0
  258. package/dist/features/live/components/LiveItemsListView.js +43 -0
  259. package/dist/features/live/components/index.d.ts +6 -0
  260. package/dist/features/live/components/index.js +3 -0
  261. package/dist/features/media/MediaLightbox.js +8 -14
  262. package/dist/features/media/types/index.d.ts +2 -2
  263. package/dist/features/media/upload/CameraCapture.js +2 -2
  264. package/dist/features/media/upload/ImageUpload.js +4 -2
  265. package/dist/features/media/upload/MediaUploadField.js +24 -8
  266. package/dist/features/media/upload/MediaUploadList.js +1 -1
  267. package/dist/features/orders/actions/order-actions.js +4 -3
  268. package/dist/features/orders/components/MarketplaceOrderCard.js +2 -1
  269. package/dist/features/orders/components/OrderFilters.js +12 -9
  270. package/dist/features/orders/schemas/index.d.ts +6 -6
  271. package/dist/features/pre-orders/api/[id]/route.js +12 -9
  272. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +5 -4
  273. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +29 -22
  274. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +7 -1
  275. package/dist/features/pre-orders/components/PreOrderFilters.js +3 -2
  276. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +17 -52
  277. package/dist/features/pre-orders/components/PreorderCard.d.ts +0 -9
  278. package/dist/features/pre-orders/components/PreorderCard.js +2 -13
  279. package/dist/features/pre-orders/components/index.d.ts +1 -1
  280. package/dist/features/pre-orders/components/index.js +1 -1
  281. package/dist/features/pre-orders/schemas/index.d.ts +10 -10
  282. package/dist/features/products/api/[id]/route.js +9 -7
  283. package/dist/features/products/api/route.js +1 -1
  284. package/dist/features/products/columns/productTableColumns.js +3 -3
  285. package/dist/features/products/components/AuctionsIndexListing.js +15 -51
  286. package/dist/features/products/components/BidHistory.js +2 -2
  287. package/dist/features/products/components/CompareOverlay.d.ts +2 -0
  288. package/dist/features/products/components/CompareOverlay.js +3 -2
  289. package/dist/features/products/components/MakeOfferButton.js +20 -14
  290. package/dist/features/products/components/MarketplacePrizeDrawCard.js +2 -1
  291. package/dist/features/products/components/PrizeDrawCollage.d.ts +1 -15
  292. package/dist/features/products/components/PrizeDrawCollage.js +54 -14
  293. package/dist/features/products/components/PrizeDrawDetailPageView.js +2 -1
  294. package/dist/features/products/components/PrizeDrawEntryActions.js +2 -1
  295. package/dist/features/products/components/PrizeDrawItemsEditor.js +9 -7
  296. package/dist/features/products/components/PrizeDrawsIndexListing.js +18 -51
  297. package/dist/features/products/components/PrizeRevealModal.js +24 -14
  298. package/dist/features/products/components/ProductDetailPageView.js +2 -1
  299. package/dist/features/products/components/ProductFilters.d.ts +7 -1
  300. package/dist/features/products/components/ProductFilters.js +11 -8
  301. package/dist/features/products/components/ProductForm.js +18 -16
  302. package/dist/features/products/components/ProductGalleryClient.js +2 -1
  303. package/dist/features/products/components/ProductGrid.js +12 -15
  304. package/dist/features/products/components/ProductsIndexListing.js +16 -52
  305. package/dist/features/products/components/ProductsIndexPageView.js +2 -2
  306. package/dist/features/products/repository/products.repository.d.ts +4 -0
  307. package/dist/features/products/repository/products.repository.js +22 -3
  308. package/dist/features/products/schemas/firestore.d.ts +7 -1
  309. package/dist/features/products/schemas/index.d.ts +56 -56
  310. package/dist/features/products/schemas/product-features.validators.d.ts +14 -14
  311. package/dist/features/products/types/index.d.ts +4 -0
  312. package/dist/features/promotions/components/CouponsIndexListing.js +1 -1
  313. package/dist/features/promotions/schemas/index.d.ts +6 -6
  314. package/dist/features/reviews/actions/review-actions.js +6 -5
  315. package/dist/features/reviews/api/[id]/route.js +4 -3
  316. package/dist/features/reviews/components/ReviewDetailPageView.js +2 -2
  317. package/dist/features/reviews/components/ReviewDetailShell.js +6 -3
  318. package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
  319. package/dist/features/reviews/schemas/index.d.ts +6 -6
  320. package/dist/features/scams/components/ScamProfileView.js +19 -10
  321. package/dist/features/scams/components/ScamRegistryView.js +2 -1
  322. package/dist/features/search/components/Search.d.ts +1 -1
  323. package/dist/features/search/components/Search.js +56 -49
  324. package/dist/features/search/schemas/index.d.ts +5 -5
  325. package/dist/features/seller/actions/offer-actions.js +11 -9
  326. package/dist/features/seller/components/SellerAddressesView.js +6 -4
  327. package/dist/features/seller/components/SellerBidsView.js +2 -2
  328. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  329. package/dist/features/seller/components/SellerOffersPanel.js +6 -1
  330. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  331. package/dist/features/seller/components/SellerPayoutSettingsView.js +3 -3
  332. package/dist/features/seller/components/SellerPreOrdersView.js +5 -4
  333. package/dist/features/seller/components/SellerPrizeDrawsView.js +5 -4
  334. package/dist/features/seller/components/SellerProductShell.d.ts +19 -1
  335. package/dist/features/seller/components/SellerProductShell.js +75 -9
  336. package/dist/features/seller/components/SellerProductsView.js +10 -11
  337. package/dist/features/seller/components/SellerShippingView.js +3 -3
  338. package/dist/features/seller/components/SellerSidebar.js +10 -7
  339. package/dist/features/seller/components/SellerStorefrontView.js +3 -3
  340. package/dist/features/seller/schemas/index.d.ts +4 -4
  341. package/dist/features/shell/FormShell.js +2 -1
  342. package/dist/features/shell/QuickFormDrawer.js +4 -3
  343. package/dist/features/shell/StepForm.js +4 -3
  344. package/dist/features/stores/actions/store-query-actions.js +4 -3
  345. package/dist/features/stores/components/StoreAboutView.js +2 -1
  346. package/dist/features/stores/components/StoreAuctionsListing.js +43 -64
  347. package/dist/features/stores/components/StoreDetailLayoutView.js +18 -4
  348. package/dist/features/stores/components/StorePreOrdersListing.js +33 -57
  349. package/dist/features/stores/components/StoreProductsListing.js +16 -49
  350. package/dist/features/stores/components/StoresIndexListing.js +2 -2
  351. package/dist/features/stores/schemas/index.d.ts +2 -2
  352. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +8 -7
  353. package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +5 -5
  354. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +6 -6
  355. package/dist/features/wishlist/utils/guest-wishlist.d.ts +5 -5
  356. package/dist/index.d.ts +27 -3
  357. package/dist/index.js +1743 -1725
  358. package/dist/monitoring/server-logger.js +5 -9
  359. package/dist/next/api/apiHandler.js +56 -37
  360. package/dist/next/components/GlobalError.js +2 -1
  361. package/dist/next/routing/route-map.d.ts +41 -0
  362. package/dist/next/routing/route-map.js +17 -0
  363. package/dist/react/ErrorBoundary.js +2 -1
  364. package/dist/react/contexts/SessionContext.js +38 -28
  365. package/dist/react/hooks/useCamera.d.ts +1 -1
  366. package/dist/react/hooks/useCamera.js +8 -7
  367. package/dist/seed/products-auctions-seed-data.js +40 -40
  368. package/dist/seed/products-preorders-seed-data.js +16 -16
  369. package/dist/seed/products-prize-draws-seed-data.js +4 -4
  370. package/dist/seed/products-standard-seed-data.js +202 -202
  371. package/dist/seed/site-settings-seed-data.js +6 -0
  372. package/dist/server-entry.d.ts +3 -0
  373. package/dist/server-entry.js +3 -0
  374. package/dist/server.d.ts +12 -0
  375. package/dist/server.js +15 -0
  376. package/dist/tailwind-utilities.css +1 -1
  377. package/dist/ui/DataTable.js +28 -7
  378. package/dist/ui/components/Button.d.ts +8 -1
  379. package/dist/ui/components/Button.js +47 -8
  380. package/dist/ui/components/CollageLightbox.d.ts +18 -0
  381. package/dist/ui/components/CollageLightbox.js +41 -0
  382. package/dist/ui/components/Dropdown.js +7 -6
  383. package/dist/ui/components/ImageLightbox.d.ts +7 -1
  384. package/dist/ui/components/ImageLightbox.js +15 -5
  385. package/dist/ui/components/PageLoader.js +4 -3
  386. package/dist/ui/components/PaginatedMultiSelect.d.ts +28 -0
  387. package/dist/ui/components/PaginatedMultiSelect.js +141 -0
  388. package/dist/ui/components/PaginatedMultiSelect.style.css +272 -0
  389. package/dist/ui/components/Semantic.js +1 -1
  390. package/dist/ui/components/SideDrawer.js +17 -15
  391. package/dist/ui/components/index.style.css +1 -0
  392. package/dist/ui/index.d.ts +2 -0
  393. package/dist/ui/index.js +1 -0
  394. package/dist/utils/number.formatter.js +5 -13
  395. package/dist/utils/string.formatter.js +21 -18
  396. package/dist/validation/schemas.d.ts +2 -2
  397. package/package.json +1 -1
@@ -28,20 +28,20 @@ export declare const productInputSchema: z.ZodObject<{
28
28
  title: string;
29
29
  category: string;
30
30
  price: number;
31
- tags: string[];
32
- images: string[];
33
31
  stockQuantity: number;
34
32
  availableQuantity: number;
35
33
  mainImage: string;
36
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
37
- features?: string[] | undefined;
34
+ images: string[];
35
+ tags: string[];
38
36
  description?: string | undefined;
39
37
  seoTitle?: string | undefined;
40
38
  seoDescription?: string | undefined;
41
39
  seoKeywords?: string[] | undefined;
42
40
  brandSlug?: string | undefined;
41
+ features?: string[] | undefined;
43
42
  shippingInfo?: string | undefined;
44
43
  returnPolicy?: string | undefined;
44
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
45
45
  insurance?: boolean | undefined;
46
46
  insuranceCost?: number | undefined;
47
47
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -53,10 +53,6 @@ export declare const productInputSchema: z.ZodObject<{
53
53
  price: number;
54
54
  mainImage: string;
55
55
  currency?: string | undefined;
56
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
57
- tags?: string[] | undefined;
58
- features?: string[] | undefined;
59
- images?: string[] | undefined;
60
56
  description?: string | undefined;
61
57
  seoTitle?: string | undefined;
62
58
  seoDescription?: string | undefined;
@@ -64,8 +60,12 @@ export declare const productInputSchema: z.ZodObject<{
64
60
  brandSlug?: string | undefined;
65
61
  stockQuantity?: number | undefined;
66
62
  availableQuantity?: number | undefined;
63
+ images?: string[] | undefined;
64
+ tags?: string[] | undefined;
65
+ features?: string[] | undefined;
67
66
  shippingInfo?: string | undefined;
68
67
  returnPolicy?: string | undefined;
68
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
69
69
  insurance?: boolean | undefined;
70
70
  insuranceCost?: number | undefined;
71
71
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -100,21 +100,21 @@ export declare const productUpdateSchema: z.ZodObject<{
100
100
  currency?: string | undefined;
101
101
  title?: string | undefined;
102
102
  category?: string | undefined;
103
- price?: number | undefined;
104
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
105
- tags?: string[] | undefined;
106
- features?: string[] | undefined;
107
- images?: string[] | undefined;
108
103
  description?: string | undefined;
109
104
  seoTitle?: string | undefined;
110
105
  seoDescription?: string | undefined;
111
106
  seoKeywords?: string[] | undefined;
112
107
  brandSlug?: string | undefined;
108
+ price?: number | undefined;
113
109
  stockQuantity?: number | undefined;
114
110
  availableQuantity?: number | undefined;
115
111
  mainImage?: string | undefined;
112
+ images?: string[] | undefined;
113
+ tags?: string[] | undefined;
114
+ features?: string[] | undefined;
116
115
  shippingInfo?: string | undefined;
117
116
  returnPolicy?: string | undefined;
117
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
118
118
  insurance?: boolean | undefined;
119
119
  insuranceCost?: number | undefined;
120
120
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -124,21 +124,21 @@ export declare const productUpdateSchema: z.ZodObject<{
124
124
  currency?: string | undefined;
125
125
  title?: string | undefined;
126
126
  category?: string | undefined;
127
- price?: number | undefined;
128
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
129
- tags?: string[] | undefined;
130
- features?: string[] | undefined;
131
- images?: string[] | undefined;
132
127
  description?: string | undefined;
133
128
  seoTitle?: string | undefined;
134
129
  seoDescription?: string | undefined;
135
130
  seoKeywords?: string[] | undefined;
136
131
  brandSlug?: string | undefined;
132
+ price?: number | undefined;
137
133
  stockQuantity?: number | undefined;
138
134
  availableQuantity?: number | undefined;
139
135
  mainImage?: string | undefined;
136
+ images?: string[] | undefined;
137
+ tags?: string[] | undefined;
138
+ features?: string[] | undefined;
140
139
  shippingInfo?: string | undefined;
141
140
  returnPolicy?: string | undefined;
141
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
142
142
  insurance?: boolean | undefined;
143
143
  insuranceCost?: number | undefined;
144
144
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -183,25 +183,25 @@ export declare const auctionInputSchema: z.ZodObject<{
183
183
  currency: string;
184
184
  title: string;
185
185
  category: string;
186
- price: number;
187
- tags: string[];
188
186
  listingType: "auction";
189
- images: string[];
187
+ price: number;
190
188
  stockQuantity: number;
191
189
  availableQuantity: number;
192
190
  mainImage: string;
191
+ images: string[];
192
+ tags: string[];
193
193
  auctionEndDate: string;
194
194
  startingBid: number;
195
195
  autoExtendable: boolean;
196
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
197
- features?: string[] | undefined;
198
196
  description?: string | undefined;
199
197
  seoTitle?: string | undefined;
200
198
  seoDescription?: string | undefined;
201
199
  seoKeywords?: string[] | undefined;
202
200
  brandSlug?: string | undefined;
201
+ features?: string[] | undefined;
203
202
  shippingInfo?: string | undefined;
204
203
  returnPolicy?: string | undefined;
204
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
205
205
  insurance?: boolean | undefined;
206
206
  insuranceCost?: number | undefined;
207
207
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -215,16 +215,12 @@ export declare const auctionInputSchema: z.ZodObject<{
215
215
  }, {
216
216
  title: string;
217
217
  category: string;
218
- price: number;
219
218
  listingType: "auction";
219
+ price: number;
220
220
  mainImage: string;
221
221
  auctionEndDate: string;
222
222
  startingBid: number;
223
223
  currency?: string | undefined;
224
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
225
- tags?: string[] | undefined;
226
- features?: string[] | undefined;
227
- images?: string[] | undefined;
228
224
  description?: string | undefined;
229
225
  seoTitle?: string | undefined;
230
226
  seoDescription?: string | undefined;
@@ -232,8 +228,12 @@ export declare const auctionInputSchema: z.ZodObject<{
232
228
  brandSlug?: string | undefined;
233
229
  stockQuantity?: number | undefined;
234
230
  availableQuantity?: number | undefined;
231
+ images?: string[] | undefined;
232
+ tags?: string[] | undefined;
233
+ features?: string[] | undefined;
235
234
  shippingInfo?: string | undefined;
236
235
  returnPolicy?: string | undefined;
236
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
237
237
  insurance?: boolean | undefined;
238
238
  insuranceCost?: number | undefined;
239
239
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -281,25 +281,25 @@ export declare const preOrderInputSchema: z.ZodObject<{
281
281
  currency: string;
282
282
  title: string;
283
283
  category: string;
284
- price: number;
285
- tags: string[];
286
284
  listingType: "pre-order";
287
- preOrderProductionStatus: "upcoming" | "in_production" | "ready_to_ship";
288
- images: string[];
285
+ price: number;
289
286
  stockQuantity: number;
290
287
  availableQuantity: number;
291
288
  mainImage: string;
289
+ images: string[];
290
+ tags: string[];
292
291
  preOrderDeliveryDate: string;
292
+ preOrderProductionStatus: "upcoming" | "in_production" | "ready_to_ship";
293
293
  preOrderCancellable: boolean;
294
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
295
- features?: string[] | undefined;
296
294
  description?: string | undefined;
297
295
  seoTitle?: string | undefined;
298
296
  seoDescription?: string | undefined;
299
297
  seoKeywords?: string[] | undefined;
300
298
  brandSlug?: string | undefined;
299
+ features?: string[] | undefined;
301
300
  shippingInfo?: string | undefined;
302
301
  returnPolicy?: string | undefined;
302
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
303
303
  insurance?: boolean | undefined;
304
304
  insuranceCost?: number | undefined;
305
305
  shippingPaidBy?: "seller" | "buyer" | undefined;
@@ -310,16 +310,11 @@ export declare const preOrderInputSchema: z.ZodObject<{
310
310
  }, {
311
311
  title: string;
312
312
  category: string;
313
- price: number;
314
313
  listingType: "pre-order";
314
+ price: number;
315
315
  mainImage: string;
316
316
  preOrderDeliveryDate: string;
317
317
  currency?: string | undefined;
318
- condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
319
- tags?: string[] | undefined;
320
- preOrderProductionStatus?: "upcoming" | "in_production" | "ready_to_ship" | undefined;
321
- features?: string[] | undefined;
322
- images?: string[] | undefined;
323
318
  description?: string | undefined;
324
319
  seoTitle?: string | undefined;
325
320
  seoDescription?: string | undefined;
@@ -327,13 +322,18 @@ export declare const preOrderInputSchema: z.ZodObject<{
327
322
  brandSlug?: string | undefined;
328
323
  stockQuantity?: number | undefined;
329
324
  availableQuantity?: number | undefined;
325
+ images?: string[] | undefined;
326
+ tags?: string[] | undefined;
327
+ features?: string[] | undefined;
330
328
  shippingInfo?: string | undefined;
331
329
  returnPolicy?: string | undefined;
330
+ condition?: "new" | "used" | "refurbished" | "broken" | "like_new" | "good" | "fair" | "poor" | undefined;
332
331
  insurance?: boolean | undefined;
333
332
  insuranceCost?: number | undefined;
334
333
  shippingPaidBy?: "seller" | "buyer" | undefined;
335
334
  preOrderDepositPercent?: number | undefined;
336
335
  preOrderMaxQuantity?: number | undefined;
336
+ preOrderProductionStatus?: "upcoming" | "in_production" | "ready_to_ship" | undefined;
337
337
  preOrderCancellable?: boolean | undefined;
338
338
  allowOffers?: boolean | undefined;
339
339
  minOfferPercent?: number | undefined;
@@ -342,11 +342,11 @@ export declare const setFeaturedSchema: z.ZodObject<{
342
342
  productId: z.ZodString;
343
343
  featured: z.ZodBoolean;
344
344
  }, "strip", z.ZodTypeAny, {
345
- productId: string;
346
345
  featured: boolean;
347
- }, {
348
346
  productId: string;
347
+ }, {
349
348
  featured: boolean;
349
+ productId: string;
350
350
  }>;
351
351
  export declare const setStatusSchema: z.ZodObject<{
352
352
  productId: z.ZodString;
@@ -79,7 +79,7 @@ export declare const createCouponSchema: z.ZodObject<{
79
79
  }, "strip", z.ZodTypeAny, {
80
80
  code: string;
81
81
  type: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y";
82
- scope: "admin" | "seller";
82
+ scope: "seller" | "admin";
83
83
  name: string;
84
84
  discount: {
85
85
  value: number;
@@ -105,7 +105,7 @@ export declare const createCouponSchema: z.ZodObject<{
105
105
  }, {
106
106
  code: string;
107
107
  type: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y";
108
- scope: "admin" | "seller";
108
+ scope: "seller" | "admin";
109
109
  name: string;
110
110
  discount: {
111
111
  value: number;
@@ -189,7 +189,7 @@ export declare const updateCouponSchema: z.ZodObject<Omit<{
189
189
  }>>>;
190
190
  }, "code">, "strip", z.ZodTypeAny, {
191
191
  type?: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y" | undefined;
192
- scope?: "admin" | "seller" | undefined;
192
+ scope?: "seller" | "admin" | undefined;
193
193
  name?: string | undefined;
194
194
  sellerId?: string | undefined;
195
195
  discount?: {
@@ -214,7 +214,7 @@ export declare const updateCouponSchema: z.ZodObject<Omit<{
214
214
  } | undefined;
215
215
  }, {
216
216
  type?: "fixed" | "percentage" | "free_shipping" | "buy_x_get_y" | undefined;
217
- scope?: "admin" | "seller" | undefined;
217
+ scope?: "seller" | "admin" | undefined;
218
218
  name?: string | undefined;
219
219
  sellerId?: string | undefined;
220
220
  discount?: {
@@ -11,9 +11,9 @@ export declare const createReviewSchema: z.ZodObject<{
11
11
  storeId: string;
12
12
  title: string;
13
13
  body: string;
14
+ images: string[];
14
15
  productId: string;
15
16
  rating: number;
16
- images: string[];
17
17
  orderId?: string | undefined;
18
18
  }, {
19
19
  storeId: string;
@@ -84,6 +84,7 @@ export const PDF_MAGIC = "%PDF-";
84
84
  // Known-but-rejected video formats. Mapping returns a user-actionable
85
85
  // conversion hint so the upload error can say "convert your .avi to .mp4"
86
86
  // rather than the generic "invalid type" response.
87
+ const HINT_HEVC = "HEVC (H.265) video is accepted but doesn't preview in most browsers β€” please convert to MP4 (H.264) or WebM for in-browser playback";
87
88
  export const VIDEO_CONVERSION_HINTS = {
88
89
  "video/x-msvideo": "AVI is not supported β€” please convert to MP4 or WebM",
89
90
  "video/avi": "AVI is not supported β€” please convert to MP4 or WebM",
@@ -94,9 +95,9 @@ export const VIDEO_CONVERSION_HINTS = {
94
95
  // SB-UNI-Z4 2026-05-13 β€” HEVC / H.265 + HEIC/HEIF preview hint. The bytes
95
96
  // upload fine via the signed-URL flow; the issue is in-browser preview β€”
96
97
  // most browsers can't decode HEVC inline without an OS codec license.
97
- "video/hevc": "HEVC (H.265) video is accepted but doesn't preview in most browsers β€” please convert to MP4 (H.264) or WebM for in-browser playback",
98
- "video/x-hevc": "HEVC (H.265) video is accepted but doesn't preview in most browsers β€” please convert to MP4 (H.264) or WebM for in-browser playback",
99
- "video/H265": "HEVC (H.265) video is accepted but doesn't preview in most browsers β€” please convert to MP4 (H.264) or WebM for in-browser playback",
98
+ "video/hevc": HINT_HEVC,
99
+ "video/x-hevc": HINT_HEVC,
100
+ "video/H265": HINT_HEVC,
100
101
  "image/heic": "HEIC image is accepted but doesn't preview in most browsers β€” please convert to JPEG or WebP for inline preview",
101
102
  "image/heif": "HEIF image is accepted but doesn't preview in most browsers β€” please convert to JPEG or WebP for inline preview",
102
103
  };
package/dist/client.d.ts CHANGED
@@ -77,6 +77,10 @@ export type { UserSidebarProps, UserNavItem, UserNavGroup } from "./features/acc
77
77
  export { CouponsIndexListing } from "./features/promotions/components/CouponsIndexListing";
78
78
  export type { CouponsIndexListingProps } from "./features/promotions/components/CouponsIndexListing";
79
79
  export { NotificationBell } from "./features/account/components/NotificationBell";
80
+ export { NotificationPreferencesPanel } from "./features/account/components/NotificationPreferencesPanel";
81
+ export type { NotificationPreferencesPanelProps } from "./features/account/components/NotificationPreferencesPanel";
82
+ export { AuctionBidsTable } from "./features/auctions/components/AuctionBidsTable";
83
+ export type { AuctionBidsTableProps, AuctionWithBids } from "./features/auctions/components/AuctionBidsTable";
80
84
  export { ProtectedRoute, AuthStatusPanel, ForgotPasswordView, LoginForm, RegisterForm, ResetPasswordView, VerifyEmailView } from "./features/auth/index";
81
85
  export type { AuthGuardUser, ForgotPasswordViewProps, LoginFormProps, LoginFormValues, RegisterFormProps, RegisterFormValues, ResetPasswordViewProps, VerifyEmailViewProps, } from "./features/auth/index";
82
86
  export { useLogout, useLogin, useGoogleLogin, useRegister, useForgotPassword, useResetPassword, useVerifyEmail, useChangePassword, useChangeEmail } from "./features/auth/index";
package/dist/client.js CHANGED
@@ -136,6 +136,8 @@ export { ADMIN_ENDPOINTS } from "./constants/index";
136
136
  export { UserSidebar } from "./features/account/components/UserSidebar";
137
137
  export { CouponsIndexListing } from "./features/promotions/components/CouponsIndexListing";
138
138
  export { NotificationBell } from "./features/account/components/NotificationBell";
139
+ export { NotificationPreferencesPanel } from "./features/account/components/NotificationPreferencesPanel";
140
+ export { AuctionBidsTable } from "./features/auctions/components/AuctionBidsTable";
139
141
  export { ProtectedRoute, AuthStatusPanel, ForgotPasswordView, LoginForm, RegisterForm, ResetPasswordView, VerifyEmailView } from "./features/auth/index";
140
142
  export { useLogout, useLogin, useGoogleLogin, useRegister, useForgotPassword, useResetPassword, useVerifyEmail, useChangePassword, useChangeEmail } from "./features/auth/index";
141
143
  export { CartView, CartItemRow, CartSummary, CartDrawer, CheckoutView, CheckoutSuccessView, CheckoutAddressStep, useGuestCart, useCartCount, useAddToCart, useCart, useGuestCartMerge, useCartQuery } from "./features/cart/index";
@@ -156,6 +156,10 @@ export function defineNextConfig(override = {}) {
156
156
  "./node_modules/string_decoder/**",
157
157
  // Crypto / TLS utilities (used by firebase-admin token verification):
158
158
  "./node_modules/node-forge/**",
159
+ // html-entities: required by @google-cloud/storage/nodejs-common/util.js
160
+ // at cold start; not statically traced by Vercel. Missing this causes
161
+ // /api/media/sign (and any route using getAdminStorage()) to 500.
162
+ "./node_modules/html-entities/**",
159
163
  ],
160
164
  };
161
165
  const mergedOutputFileTracingIncludes = {
@@ -132,6 +132,8 @@ export declare const ADMIN_ENDPOINTS: {
132
132
  readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
133
133
  readonly SCAMMERS: "/api/admin/scammers";
134
134
  readonly SCAMMER_BY_ID: (id: string) => string;
135
+ readonly ADDRESSES: "/api/admin/addresses";
136
+ readonly ADDRESS_BY_ID: (id: string) => string;
135
137
  };
136
138
  export declare const CHAT_ENDPOINTS: {
137
139
  readonly LIST: "/api/chat";
@@ -430,6 +432,8 @@ export declare const API_ENDPOINTS: {
430
432
  readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
431
433
  readonly SCAMMERS: "/api/admin/scammers";
432
434
  readonly SCAMMER_BY_ID: (id: string) => string;
435
+ readonly ADDRESSES: "/api/admin/addresses";
436
+ readonly ADDRESS_BY_ID: (id: string) => string;
433
437
  };
434
438
  readonly CHAT: {
435
439
  readonly LIST: "/api/chat";
@@ -730,6 +734,8 @@ export declare const API_ROUTES: {
730
734
  readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
731
735
  readonly SCAMMERS: "/api/admin/scammers";
732
736
  readonly SCAMMER_BY_ID: (id: string) => string;
737
+ readonly ADDRESSES: "/api/admin/addresses";
738
+ readonly ADDRESS_BY_ID: (id: string) => string;
733
739
  };
734
740
  readonly CHAT: {
735
741
  readonly LIST: "/api/chat";
@@ -151,6 +151,8 @@ export const ADMIN_ENDPOINTS = {
151
151
  SUPPORT_TICKET_BY_ID: (id) => `/api/admin/support-tickets/${id}`,
152
152
  SCAMMERS: "/api/admin/scammers",
153
153
  SCAMMER_BY_ID: (id) => `/api/admin/scammers/${id}`,
154
+ ADDRESSES: "/api/admin/addresses",
155
+ ADDRESS_BY_ID: (id) => `/api/admin/addresses/${id}`,
154
156
  };
155
157
  // ---------------------------------------------------------------------------
156
158
  // Chat
@@ -13,6 +13,7 @@ export declare const PRODUCT_FIELDS: {
13
13
  readonly DESCRIPTION: "description";
14
14
  readonly SLUG: "slug";
15
15
  readonly CATEGORY: "category";
16
+ readonly CATEGORY_SLUGS: "categorySlugs";
16
17
  readonly CATEGORY_SLUG: "categorySlug";
17
18
  readonly SUBCATEGORY: "subcategory";
18
19
  readonly BRAND: "brand";
@@ -16,6 +16,7 @@ export const PRODUCT_FIELDS = {
16
16
  DESCRIPTION: "description",
17
17
  SLUG: "slug",
18
18
  CATEGORY: "category",
19
+ CATEGORY_SLUGS: "categorySlugs",
19
20
  CATEGORY_SLUG: "categorySlug",
20
21
  SUBCATEGORY: "subcategory",
21
22
  BRAND: "brand",
@@ -41,6 +41,12 @@ export declare const TABLE_KEYS: {
41
41
  readonly IS_PART_OF_BUNDLE: "isPartOfBundle";
42
42
  readonly SUBLISTING_CATEGORY: "sublistingCategory";
43
43
  readonly FEATURES: "features";
44
+ readonly CITY: "city";
45
+ readonly ACCEPTS_SHIPPING: "acceptsShipping";
46
+ readonly NEGOTIABLE: "negotiable";
47
+ readonly DELIVERY_METHOD: "deliveryMethod";
48
+ readonly SPECIES: "species";
49
+ readonly JURISDICTION: "jurisdiction";
44
50
  };
45
51
  export type TableKey = (typeof TABLE_KEYS)[keyof typeof TABLE_KEYS];
46
52
  export declare const VIEW_MODE: {
@@ -41,6 +41,15 @@ export const TABLE_KEYS = {
41
41
  IS_PART_OF_BUNDLE: "isPartOfBundle",
42
42
  SUBLISTING_CATEGORY: "sublistingCategory",
43
43
  FEATURES: "features",
44
+ // Classified-specific
45
+ CITY: "city",
46
+ ACCEPTS_SHIPPING: "acceptsShipping",
47
+ NEGOTIABLE: "negotiable",
48
+ // Digital-code-specific
49
+ DELIVERY_METHOD: "deliveryMethod",
50
+ // Live-item-specific
51
+ SPECIES: "species",
52
+ JURISDICTION: "jurisdiction",
44
53
  };
45
54
  export const VIEW_MODE = {
46
55
  GRID: "grid",
@@ -66,6 +66,14 @@ export function useSyncManager(userId) {
66
66
  useEffect(() => {
67
67
  if (!userId)
68
68
  return; // Guest β€” keep ops in queue, don't sync
69
+ async function invalidateAfterSync(hadCartOps, hadWishlistOps) {
70
+ if (hadCartOps) {
71
+ await queryClient.invalidateQueries({ queryKey: ["cart"] });
72
+ }
73
+ if (hadWishlistOps) {
74
+ await queryClient.invalidateQueries({ queryKey: ["wishlist", userId] });
75
+ }
76
+ }
69
77
  const sync = async () => {
70
78
  if (isSyncing.current)
71
79
  return;
@@ -74,14 +82,7 @@ export function useSyncManager(userId) {
74
82
  const hadCartOps = getCartOps().length > 0;
75
83
  const hadWishlistOps = getWishlistOps().length > 0;
76
84
  await Promise.all([replayCartOps(), replayWishlistOps()]);
77
- if (hadCartOps) {
78
- await queryClient.invalidateQueries({ queryKey: ["cart"] });
79
- }
80
- if (hadWishlistOps) {
81
- await queryClient.invalidateQueries({
82
- queryKey: ["wishlist", userId],
83
- });
84
- }
85
+ await invalidateAfterSync(hadCartOps, hadWishlistOps);
85
86
  }
86
87
  finally {
87
88
  isSyncing.current = false;
@@ -53,11 +53,14 @@ export async function FeesView({ heroBannerClass = DEFAULT_HERO_CLASS, } = {}) {
53
53
  { label: t("netPayoutLabel"), example: "= β‚Ή917.40", highlight: true },
54
54
  ];
55
55
  void ROUTES; // ROUTES imported for future CTA links if needed
56
- return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "feesview-div-100", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.sm} text-center`, "data-section": "feesview-div-101", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.sm} py-10 md:py-12 lg:py-16 space-y-12`, "data-section": "feesview-div-102", children: [_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6", children: t("tableTitle") }), _jsx("div", { className: `overflow-x-auto rounded-xl border ${themed.border}`, "data-section": "feesview-div-103", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: themed.bgSecondary, children: _jsxs("tr", { children: [_jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colFeeType") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colRate") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colPaidBy") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold hidden md:table-cell", children: t("colNote") })] }) }), _jsx("tbody", { className: "divide-y divide-neutral-100 dark:divide-neutral-800", children: FEE_ROWS.map((row) => (_jsxs("tr", { className: `${themed.bgPrimary} hover:bg-neutral-50 dark:hover:bg-neutral-800/50`, children: [_jsx("td", { className: "py-3 px-4 font-medium", children: row.category }), _jsx("td", { className: "py-3 px-4 font-semibold text-violet-700 dark:text-violet-400", children: row.rate }), _jsx("td", { className: "py-3 px-4", children: _jsx(Caption, { children: row.who }) }), _jsx("td", { className: "py-3 px-4 text-neutral-500 dark:text-neutral-400 hidden md:table-cell text-xs", children: row.note })] }, row.category))) })] }) }), _jsx(Caption, { className: "mt-3 block text-neutral-500", children: t("tableNote") })] }), _jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("payoutExampleTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6", children: t("payoutExampleSubtitle") }), _jsxs("div", { className: `rounded-xl border ${themed.border} ${themed.bgPrimary} p-5 max-w-sm`, "data-section": "feesview-div-104", children: [_jsx(Heading, { level: 3, className: "text-base mb-4", children: t("payoutExampleProduct") }), _jsx("div", { className: "space-y-2", "data-section": "feesview-div-105", children: OFFER_PAYOUT_ROWS.map((row, i) => (_jsxs("div", { className: `flex justify-between text-sm ${row.highlight
57
- ? "border-t border-neutral-200 dark:border-neutral-700 pt-2 mt-2 font-bold"
58
- : ""}`, "data-section": "feesview-div-106", children: [_jsx(Text, { className: row.highlight
59
- ? "font-bold"
60
- : "text-neutral-600 dark:text-neutral-400", children: row.label }), _jsx(Text, { className: row.highlight
61
- ? "font-bold text-green-700 dark:text-green-400"
62
- : "", children: row.example })] }, i))) })] })] }), _jsxs(Section, { className: `rounded-xl border ${themed.border} p-5 ${themed.bgSecondary}`, children: [_jsx(Heading, { level: 3, className: "text-base mb-2", children: t("disclaimerTitle") }), _jsx(Caption, { className: "leading-relaxed", children: t("disclaimerText") })] })] })] }));
56
+ return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "feesview-div-100", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.sm} text-center`, "data-section": "feesview-div-101", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.sm} py-10 md:py-12 lg:py-16 space-y-12`, "data-section": "feesview-div-102", children: [renderFeeTableSection(t, themed, FEE_ROWS), renderPayoutExampleSection(t, themed, OFFER_PAYOUT_ROWS), renderDisclaimerSection(t, themed)] })] }));
57
+ }
58
+ function renderFeeTableSection(t, themed, rows) {
59
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6", children: t("tableTitle") }), _jsx("div", { className: `overflow-x-auto rounded-xl border ${themed.border}`, "data-section": "feesview-div-103", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: themed.bgSecondary, children: _jsxs("tr", { children: [_jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colFeeType") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colRate") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colPaidBy") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold hidden md:table-cell", children: t("colNote") })] }) }), _jsx("tbody", { className: "divide-y divide-neutral-100 dark:divide-neutral-800", children: rows.map((row) => (_jsxs("tr", { className: `${themed.bgPrimary} hover:bg-neutral-50 dark:hover:bg-neutral-800/50`, children: [_jsx("td", { className: "py-3 px-4 font-medium", children: row.category }), _jsx("td", { className: "py-3 px-4 font-semibold text-violet-700 dark:text-violet-400", children: row.rate }), _jsx("td", { className: "py-3 px-4", children: _jsx(Caption, { children: row.who }) }), _jsx("td", { className: "py-3 px-4 text-neutral-500 dark:text-neutral-400 hidden md:table-cell text-xs", children: row.note })] }, row.category))) })] }) }), _jsx(Caption, { className: "mt-3 block text-neutral-500", children: t("tableNote") })] }));
60
+ }
61
+ function renderPayoutExampleSection(t, themed, rows) {
62
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("payoutExampleTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6", children: t("payoutExampleSubtitle") }), _jsxs("div", { className: `rounded-xl border ${themed.border} ${themed.bgPrimary} p-5 max-w-sm`, "data-section": "feesview-div-104", children: [_jsx(Heading, { level: 3, className: "text-base mb-4", children: t("payoutExampleProduct") }), _jsx("div", { className: "space-y-2", "data-section": "feesview-div-105", children: rows.map((row, i) => (_jsxs("div", { className: `flex justify-between text-sm ${row.highlight ? "border-t border-neutral-200 dark:border-neutral-700 pt-2 mt-2 font-bold" : ""}`, "data-section": "feesview-div-106", children: [_jsx(Text, { className: row.highlight ? "font-bold" : "text-neutral-600 dark:text-neutral-400", children: row.label }), _jsx(Text, { className: row.highlight ? "font-bold text-green-700 dark:text-green-400" : "", children: row.example })] }, i))) })] })] }));
63
+ }
64
+ function renderDisclaimerSection(t, themed) {
65
+ return (_jsxs(Section, { className: `rounded-xl border ${themed.border} p-5 ${themed.bgSecondary}`, children: [_jsx(Heading, { level: 3, className: "text-base mb-2", children: t("disclaimerTitle") }), _jsx(Caption, { className: "leading-relaxed", children: t("disclaimerText") })] }));
63
66
  }
@@ -59,5 +59,14 @@ export async function HelpPageView({ heroBannerClass = DEFAULT_HERO_CLASS, } = {
59
59
  iconColor: "text-rose-600 dark:text-rose-400",
60
60
  },
61
61
  ];
62
- return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "helppageview-div-107", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "helppageview-div-108", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "helppageview-div-109", children: [_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6 text-center", children: t("browseTopics") }), _jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", "data-section": "helppageview-div-110", children: TOPICS.map(({ icon: Icon, title, desc, href, color, iconColor }) => (_jsxs(TextLink, { href: href, className: `group rounded-xl border p-5 transition-shadow hover:shadow-md ${color} no-underline`, children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "helppageview-div-111", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsxs("div", { className: `${flex.row} justify-between items-start`, "data-section": "helppageview-div-112", children: [_jsxs("div", { "data-section": "helppageview-div-113", children: [_jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: desc })] }), _jsx(ChevronRight, { className: "w-4 h-4 mt-1 flex-shrink-0 opacity-40 group-hover:opacity-80 transition-opacity" })] })] }, href))) })] }), _jsxs(Section, { className: `rounded-2xl p-6 border ${themed.border} ${themed.bgSecondary} flex flex-col sm:flex-row items-center gap-4`, children: [_jsxs("div", { className: "flex-1", "data-section": "helppageview-div-114", children: [_jsx(Heading, { level: 3, className: "mb-1 text-base", children: t("trackOrderTitle") }), _jsx(Text, { variant: "secondary", className: "text-sm", children: t("trackOrderText") })] }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.TRACK_ORDER), className: "flex-shrink-0", children: t("trackOrderCta") })] }), _jsxs(Section, { className: `rounded-2xl p-8 text-center border ${themed.border} ${themed.bgSecondary}`, children: [_jsx(MessageCircle, { className: "w-10 h-10 mx-auto mb-3 text-primary/70" }), _jsx(Heading, { level: 2, className: "mb-3", children: t("contactTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("contactText") }), _jsxs(Stack, { gap: "sm", className: "flex-row flex-wrap justify-center gap-4", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.CONTACT), children: t("contactCta") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.FAQS), variant: "muted", children: t("faqCta") })] })] })] })] }));
62
+ return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "helppageview-div-107", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "helppageview-div-108", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "helppageview-div-109", children: [renderTopicsGrid(t, flex, TOPICS), renderTrackOrderSection(t, themed), renderContactCtaSection(t, themed)] })] }));
63
+ }
64
+ function renderTopicsGrid(t, flex, topics) {
65
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6 text-center", children: t("browseTopics") }), _jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", "data-section": "helppageview-div-110", children: topics.map(({ icon: Icon, title, desc, href, color, iconColor }) => (_jsxs(TextLink, { href: href, className: `group rounded-xl border p-5 transition-shadow hover:shadow-md ${color} no-underline`, children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "helppageview-div-111", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsxs("div", { className: `${flex.row} justify-between items-start`, "data-section": "helppageview-div-112", children: [_jsxs("div", { "data-section": "helppageview-div-113", children: [_jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: desc })] }), _jsx(ChevronRight, { className: "w-4 h-4 mt-1 flex-shrink-0 opacity-40 group-hover:opacity-80 transition-opacity" })] })] }, href))) })] }));
66
+ }
67
+ function renderTrackOrderSection(t, themed) {
68
+ return (_jsxs(Section, { className: `rounded-2xl p-6 border ${themed.border} ${themed.bgSecondary} flex flex-col sm:flex-row items-center gap-4`, children: [_jsxs("div", { className: "flex-1", "data-section": "helppageview-div-114", children: [_jsx(Heading, { level: 3, className: "mb-1 text-base", children: t("trackOrderTitle") }), _jsx(Text, { variant: "secondary", className: "text-sm", children: t("trackOrderText") })] }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.TRACK_ORDER), className: "flex-shrink-0", children: t("trackOrderCta") })] }));
69
+ }
70
+ function renderContactCtaSection(t, themed) {
71
+ return (_jsxs(Section, { className: `rounded-2xl p-8 text-center border ${themed.border} ${themed.bgSecondary}`, children: [_jsx(MessageCircle, { className: "w-10 h-10 mx-auto mb-3 text-primary/70" }), _jsx(Heading, { level: 2, className: "mb-3", children: t("contactTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("contactText") }), _jsxs(Stack, { gap: "sm", className: "flex-row flex-wrap justify-center gap-4", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.CONTACT), children: t("contactCta") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.FAQS), variant: "muted", children: t("faqCta") })] })] }));
63
72
  }
@@ -83,5 +83,14 @@ export async function HowAuctionsWorkView({ heroBannerClass = DEFAULT_HERO_CLASS
83
83
  desc: t("diagramStep5Desc"),
84
84
  },
85
85
  ];
86
- return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "howauctionsworkview-div-115", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "howauctionsworkview-div-116", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "howauctionsworkview-div-117", children: [_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-8 text-center", children: t("stepsTitle") }), _jsx(Stack, { gap: "md", className: "gap-5", children: STEPS.map(({ number, icon, title, text }) => (_jsxs("div", { className: `flex items-start gap-4 p-5 rounded-xl border ${themed.border} ${themed.bgPrimary}`, "data-section": "howauctionsworkview-div-118", children: [_jsx("div", { className: `flex-shrink-0 w-10 h-10 rounded-full bg-primary/10 dark:bg-primary/15 ${flex.center} text-xl`, "data-section": "howauctionsworkview-div-119", children: icon }), _jsxs("div", { "data-section": "howauctionsworkview-div-120", children: [_jsxs(Text, { className: "font-semibold mb-0.5", children: [number, ". ", title] }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] })] }, number))) })] }), _jsx(Section, { children: _jsx(FlowDiagram, { title: `πŸ”¨ ${t("diagramTitle")}`, titleClass: "text-primary", connectorClass: "bg-primary/20 dark:bg-primary/30", steps: DIAGRAM_STEPS, centered: true }) }), _jsx(Section, { children: _jsx("div", { className: "grid gap-5 md:grid-cols-2", "data-section": "howauctionsworkview-div-121", children: INFO_CARDS.map(({ icon: Icon, title, text, color, iconColor }) => (_jsxs("div", { className: `rounded-xl border p-5 ${color}`, "data-section": "howauctionsworkview-div-122", children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "howauctionsworkview-div-123", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] }, title))) }) }), _jsxs(Section, { className: `rounded-2xl p-8 text-center ${themed.bgSecondary} border ${themed.border}`, children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("ctaTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("ctaText") }), _jsxs("div", { className: `${flex.center} gap-4 flex-wrap`, "data-section": "howauctionsworkview-div-124", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.AUCTIONS), children: t("ctaBrowse") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.HOW_ORDERS_WORK), variant: "muted", children: t("ctaOrders") })] })] })] })] }));
86
+ return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "howauctionsworkview-div-115", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "howauctionsworkview-div-116", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "howauctionsworkview-div-117", children: [renderAuctionStepsSection(t, themed, flex, STEPS), _jsx(Section, { children: _jsx(FlowDiagram, { title: `πŸ”¨ ${t("diagramTitle")}`, titleClass: "text-primary", connectorClass: "bg-primary/20 dark:bg-primary/30", steps: DIAGRAM_STEPS, centered: true }) }), renderAuctionInfoCardsSection(flex, INFO_CARDS), renderAuctionCtaSection(t, themed, flex)] })] }));
87
+ }
88
+ function renderAuctionStepsSection(t, themed, flex, steps) {
89
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-8 text-center", children: t("stepsTitle") }), _jsx(Stack, { gap: "md", className: "gap-5", children: steps.map(({ number, icon, title, text }) => (_jsxs("div", { className: `flex items-start gap-4 p-5 rounded-xl border ${themed.border} ${themed.bgPrimary}`, "data-section": "howauctionsworkview-div-118", children: [_jsx("div", { className: `flex-shrink-0 w-10 h-10 rounded-full bg-primary/10 dark:bg-primary/15 ${flex.center} text-xl`, "data-section": "howauctionsworkview-div-119", children: icon }), _jsxs("div", { "data-section": "howauctionsworkview-div-120", children: [_jsxs(Text, { className: "font-semibold mb-0.5", children: [number, ". ", title] }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] })] }, number))) })] }));
90
+ }
91
+ function renderAuctionInfoCardsSection(flex, cards) {
92
+ return (_jsx(Section, { children: _jsx("div", { className: "grid gap-5 md:grid-cols-2", "data-section": "howauctionsworkview-div-121", children: cards.map(({ icon: Icon, title, text, color, iconColor }) => (_jsxs("div", { className: `rounded-xl border p-5 ${color}`, "data-section": "howauctionsworkview-div-122", children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "howauctionsworkview-div-123", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] }, title))) }) }));
93
+ }
94
+ function renderAuctionCtaSection(t, themed, flex) {
95
+ return (_jsxs(Section, { className: `rounded-2xl p-8 text-center ${themed.bgSecondary} border ${themed.border}`, children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("ctaTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("ctaText") }), _jsxs("div", { className: `${flex.center} gap-4 flex-wrap`, "data-section": "howauctionsworkview-div-124", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.AUCTIONS), children: t("ctaBrowse") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.HOW_ORDERS_WORK), variant: "muted", children: t("ctaOrders") })] })] }));
87
96
  }
@@ -69,5 +69,14 @@ export async function HowCheckoutWorksView({ heroBannerClass = DEFAULT_HERO_CLAS
69
69
  desc: t("diagramStep5Desc"),
70
70
  },
71
71
  ];
72
- return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "howcheckoutworksview-div-125", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "howcheckoutworksview-div-126", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "howcheckoutworksview-div-127", children: [_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-8 text-center", children: t("stepsTitle") }), _jsx(Stack, { gap: "md", className: "gap-5", children: STEPS.map(({ number, icon, title, text }) => (_jsxs("div", { className: `flex items-start gap-4 p-5 rounded-xl border ${themed.border} ${themed.bgPrimary}`, "data-section": "howcheckoutworksview-div-128", children: [_jsx("div", { className: `flex-shrink-0 w-10 h-10 rounded-full bg-primary/10 dark:bg-primary/15 ${flex.center} text-xl`, "data-section": "howcheckoutworksview-div-129", children: icon }), _jsxs("div", { "data-section": "howcheckoutworksview-div-130", children: [_jsxs(Text, { className: "font-semibold mb-0.5", children: [number, ". ", title] }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] })] }, number))) })] }), _jsx(Section, { children: _jsx(FlowDiagram, { title: `πŸ—ΊοΈ ${t("diagramTitle")}`, titleClass: "text-primary", connectorClass: "bg-primary/20 dark:bg-primary/30", steps: DIAGRAM_STEPS, centered: true }) }), _jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3 text-center", children: t("paymentMethodsTitle") }), _jsx(Text, { variant: "secondary", className: "text-center mb-8 max-w-xl mx-auto", children: t("paymentMethodsSubtitle") }), _jsx("div", { className: "grid gap-5 md:grid-cols-3", "data-section": "howcheckoutworksview-div-131", children: PAYMENT_METHODS.map(({ icon: Icon, title, text, color, iconColor }) => (_jsxs("div", { className: `rounded-xl border p-5 ${color}`, "data-section": "howcheckoutworksview-div-132", children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "howcheckoutworksview-div-133", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] }, title))) })] }), _jsxs(Section, { className: `rounded-2xl p-8 text-center ${themed.bgSecondary} border ${themed.border}`, children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("ctaTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("ctaText") }), _jsxs("div", { className: `${flex.center} gap-4 flex-wrap`, "data-section": "howcheckoutworksview-div-134", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.PRODUCTS), children: t("ctaBrowse") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.HOW_ORDERS_WORK), variant: "muted", children: t("ctaOrders") })] })] })] })] }));
72
+ return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "howcheckoutworksview-div-125", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "howcheckoutworksview-div-126", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16 space-y-14`, "data-section": "howcheckoutworksview-div-127", children: [renderCheckoutStepsSection(t, themed, flex, STEPS), _jsx(Section, { children: _jsx(FlowDiagram, { title: `πŸ—ΊοΈ ${t("diagramTitle")}`, titleClass: "text-primary", connectorClass: "bg-primary/20 dark:bg-primary/30", steps: DIAGRAM_STEPS, centered: true }) }), renderPaymentMethodsSection(t, flex, PAYMENT_METHODS), renderCheckoutCtaSection(t, themed, flex)] })] }));
73
+ }
74
+ function renderCheckoutStepsSection(t, themed, flex, steps) {
75
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-8 text-center", children: t("stepsTitle") }), _jsx(Stack, { gap: "md", className: "gap-5", children: steps.map(({ number, icon, title, text }) => (_jsxs("div", { className: `flex items-start gap-4 p-5 rounded-xl border ${themed.border} ${themed.bgPrimary}`, "data-section": "howcheckoutworksview-div-128", children: [_jsx("div", { className: `flex-shrink-0 w-10 h-10 rounded-full bg-primary/10 dark:bg-primary/15 ${flex.center} text-xl`, "data-section": "howcheckoutworksview-div-129", children: icon }), _jsxs("div", { "data-section": "howcheckoutworksview-div-130", children: [_jsxs(Text, { className: "font-semibold mb-0.5", children: [number, ". ", title] }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] })] }, number))) })] }));
76
+ }
77
+ function renderPaymentMethodsSection(t, flex, methods) {
78
+ return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3 text-center", children: t("paymentMethodsTitle") }), _jsx(Text, { variant: "secondary", className: "text-center mb-8 max-w-xl mx-auto", children: t("paymentMethodsSubtitle") }), _jsx("div", { className: "grid gap-5 md:grid-cols-3", "data-section": "howcheckoutworksview-div-131", children: methods.map(({ icon: Icon, title, text, color, iconColor }) => (_jsxs("div", { className: `rounded-xl border p-5 ${color}`, "data-section": "howcheckoutworksview-div-132", children: [_jsx("div", { className: `w-10 h-10 rounded-lg bg-white/60 dark:bg-white/10 ${flex.center} mb-3`, "data-section": "howcheckoutworksview-div-133", children: _jsx(Icon, { className: `w-5 h-5 ${iconColor}` }) }), _jsx(Text, { className: "font-semibold mb-1", children: title }), _jsx(Text, { variant: "secondary", className: "text-sm leading-relaxed", children: text })] }, title))) })] }));
79
+ }
80
+ function renderCheckoutCtaSection(t, themed, flex) {
81
+ return (_jsxs(Section, { className: `rounded-2xl p-8 text-center ${themed.bgSecondary} border ${themed.border}`, children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("ctaTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6 max-w-lg mx-auto", children: t("ctaText") }), _jsxs("div", { className: `${flex.center} gap-4 flex-wrap`, "data-section": "howcheckoutworksview-div-134", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.PRODUCTS), children: t("ctaBrowse") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.HOW_ORDERS_WORK), variant: "muted", children: t("ctaOrders") })] })] }));
73
82
  }