@mohasinac/appkit 2.7.27 → 2.7.30

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 (359) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +1 -1
  2. package/dist/_internal/server/features/checkout/actions.js +42 -35
  3. package/dist/_internal/server/features/classified/adapters.d.ts +21 -0
  4. package/dist/_internal/server/features/classified/adapters.js +24 -0
  5. package/dist/_internal/server/features/classified/index.d.ts +3 -0
  6. package/dist/_internal/server/features/classified/index.js +3 -0
  7. package/dist/_internal/server/features/classified/metadata.d.ts +8 -0
  8. package/dist/_internal/server/features/classified/metadata.js +43 -0
  9. package/dist/_internal/server/features/classified/og.d.ts +30 -0
  10. package/dist/_internal/server/features/classified/og.js +76 -0
  11. package/dist/_internal/server/features/digital-code/adapters.d.ts +21 -0
  12. package/dist/_internal/server/features/digital-code/adapters.js +29 -0
  13. package/dist/_internal/server/features/digital-code/index.d.ts +3 -0
  14. package/dist/_internal/server/features/digital-code/index.js +3 -0
  15. package/dist/_internal/server/features/digital-code/metadata.d.ts +8 -0
  16. package/dist/_internal/server/features/digital-code/metadata.js +36 -0
  17. package/dist/_internal/server/features/digital-code/og.d.ts +27 -0
  18. package/dist/_internal/server/features/digital-code/og.js +77 -0
  19. package/dist/_internal/server/features/live/adapters.d.ts +21 -0
  20. package/dist/_internal/server/features/live/adapters.js +34 -0
  21. package/dist/_internal/server/features/live/index.d.ts +3 -0
  22. package/dist/_internal/server/features/live/index.js +3 -0
  23. package/dist/_internal/server/features/live/metadata.d.ts +8 -0
  24. package/dist/_internal/server/features/live/metadata.js +39 -0
  25. package/dist/_internal/server/features/live/og.d.ts +27 -0
  26. package/dist/_internal/server/features/live/og.js +72 -0
  27. package/dist/_internal/server/features/promotions/actions.js +4 -3
  28. package/dist/_internal/server/jobs/core/onOrderCreate.js +19 -16
  29. package/dist/_internal/server/jobs/core/onOrderStatusChange.js +25 -22
  30. package/dist/_internal/server/jobs/core/onProductWrite.js +48 -58
  31. package/dist/_internal/shared/actions/action-registry.js +310 -8
  32. package/dist/_internal/shared/features/blog/schema.d.ts +4 -4
  33. package/dist/_internal/shared/features/brands/schema.d.ts +5 -5
  34. package/dist/_internal/shared/features/cart/schema.d.ts +18 -18
  35. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +1 -1
  36. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +38 -38
  37. package/dist/_internal/shared/features/events/schema.d.ts +8 -8
  38. package/dist/_internal/shared/features/orders/schema.d.ts +8 -8
  39. package/dist/_internal/shared/features/products/schema.d.ts +42 -42
  40. package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
  41. package/dist/_internal/shared/features/reviews/schema.d.ts +1 -1
  42. package/dist/_internal/shared/media/limits.js +4 -3
  43. package/dist/client.d.ts +2 -0
  44. package/dist/client.js +1 -0
  45. package/dist/configs/next.js +4 -0
  46. package/dist/constants/table-keys.d.ts +6 -0
  47. package/dist/constants/table-keys.js +9 -0
  48. package/dist/core/hooks/useSyncManager.js +9 -8
  49. package/dist/features/about/components/FeesView.js +10 -7
  50. package/dist/features/about/components/HelpPageView.js +10 -1
  51. package/dist/features/about/components/HowAuctionsWorkView.js +10 -1
  52. package/dist/features/about/components/HowCheckoutWorksView.js +10 -1
  53. package/dist/features/about/components/HowOffersWorkView.js +10 -1
  54. package/dist/features/about/components/HowOrdersWorkView.js +10 -1
  55. package/dist/features/about/components/HowPayoutsWorkView.js +10 -1
  56. package/dist/features/about/components/HowPreOrdersWorkView.js +10 -1
  57. package/dist/features/about/components/HowReviewsWorkView.js +10 -1
  58. package/dist/features/about/components/PublicProfileView.js +44 -14
  59. package/dist/features/about/components/SecurityPrivacyView.js +7 -1
  60. package/dist/features/account/components/AddressesIndexListing.js +2 -2
  61. package/dist/features/account/components/NotificationBell.js +27 -16
  62. package/dist/features/account/components/NotificationPreferencesPanel.d.ts +9 -0
  63. package/dist/features/account/components/NotificationPreferencesPanel.js +91 -0
  64. package/dist/features/account/components/UserSidebar.js +4 -4
  65. package/dist/features/account/components/UserSupportView.js +16 -6
  66. package/dist/features/account/components/index.d.ts +2 -0
  67. package/dist/features/account/components/index.js +1 -0
  68. package/dist/features/account/schemas/index.d.ts +4 -4
  69. package/dist/features/account/types/index.d.ts +34 -0
  70. package/dist/features/admin/actions/admin-actions.js +4 -3
  71. package/dist/features/admin/actions/notification-actions.d.ts +24 -22
  72. package/dist/features/admin/actions/notification-actions.js +122 -22
  73. package/dist/features/admin/components/AdminAdEditorView.js +29 -15
  74. package/dist/features/admin/components/AdminAdsView.js +22 -28
  75. package/dist/features/admin/components/AdminAllEventEntriesView.js +6 -1
  76. package/dist/features/admin/components/AdminBidsView.js +10 -3
  77. package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
  78. package/dist/features/admin/components/AdminBlogView.js +8 -3
  79. package/dist/features/admin/components/AdminBrandsView.js +7 -2
  80. package/dist/features/admin/components/AdminBundleEditorView.js +5 -2
  81. package/dist/features/admin/components/AdminCarouselEditorView.js +6 -3
  82. package/dist/features/admin/components/AdminCarouselView.js +13 -7
  83. package/dist/features/admin/components/AdminCategoriesView.js +8 -3
  84. package/dist/features/admin/components/AdminCategoryEditorView.js +2 -2
  85. package/dist/features/admin/components/AdminContactView.js +6 -1
  86. package/dist/features/admin/components/AdminCouponEditorView.js +8 -2
  87. package/dist/features/admin/components/AdminCouponsView.js +6 -1
  88. package/dist/features/admin/components/AdminEmployeeEditorView.js +12 -9
  89. package/dist/features/admin/components/AdminFaqEditorView.js +2 -2
  90. package/dist/features/admin/components/AdminFaqsView.js +7 -2
  91. package/dist/features/admin/components/AdminFeaturesView.js +4 -3
  92. package/dist/features/admin/components/AdminMediaView.js +9 -8
  93. package/dist/features/admin/components/AdminNavigationView.js +10 -17
  94. package/dist/features/admin/components/AdminNewsletterView.js +6 -1
  95. package/dist/features/admin/components/AdminNotificationsView.js +11 -3
  96. package/dist/features/admin/components/AdminOrdersView.js +6 -1
  97. package/dist/features/admin/components/AdminPayoutsView.js +10 -3
  98. package/dist/features/admin/components/AdminPrizeDrawsView.js +10 -3
  99. package/dist/features/admin/components/AdminProductsView.js +18 -12
  100. package/dist/features/admin/components/AdminReviewsView.js +33 -24
  101. package/dist/features/admin/components/AdminScammerEditorView.js +3 -2
  102. package/dist/features/admin/components/AdminScammersView.js +28 -26
  103. package/dist/features/admin/components/AdminSectionsView.js +112 -99
  104. package/dist/features/admin/components/AdminSessionsView.js +10 -3
  105. package/dist/features/admin/components/AdminSidebar.js +4 -4
  106. package/dist/features/admin/components/AdminSiteSettingsView.js +45 -4
  107. package/dist/features/admin/components/AdminStoresView.js +6 -1
  108. package/dist/features/admin/components/AdminSublistingCategoriesView.js +0 -1
  109. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  110. package/dist/features/admin/components/AdminSupportTicketsView.js +32 -34
  111. package/dist/features/admin/components/AdminTeamView.js +6 -1
  112. package/dist/features/admin/components/AdminUserEditorView.js +8 -15
  113. package/dist/features/admin/components/AdminUsersView.js +6 -1
  114. package/dist/features/admin/components/AdminViewCards.js +4 -3
  115. package/dist/features/admin/components/DashboardStats.js +2 -2
  116. package/dist/features/admin/components/DataTable.js +2 -2
  117. package/dist/features/admin/components/sections/adminSectionsTypes.js +4 -3
  118. package/dist/features/admin/repository/chat.repository.js +8 -8
  119. package/dist/features/admin/repository/site-settings.repository.d.ts +1 -0
  120. package/dist/features/admin/repository/site-settings.repository.js +11 -9
  121. package/dist/features/admin/schemas/firestore.d.ts +38 -0
  122. package/dist/features/admin/schemas/firestore.js +15 -0
  123. package/dist/features/auctions/components/AuctionDetailPageView.js +13 -19
  124. package/dist/features/auctions/components/MarketplaceAuctionCard.js +18 -9
  125. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +3 -2
  126. package/dist/features/auctions/components/index.d.ts +0 -1
  127. package/dist/features/auctions/components/index.js +0 -1
  128. package/dist/features/auctions/schemas/index.d.ts +14 -14
  129. package/dist/features/auth/actions/realtime-token-actions.js +19 -4
  130. package/dist/features/auth/components/RegisterForm.js +8 -4
  131. package/dist/features/auth/consent-otp.d.ts +2 -0
  132. package/dist/features/auth/consent-otp.js +8 -0
  133. package/dist/features/auth/schemas/firestore.d.ts +2 -0
  134. package/dist/features/auth/schemas/firestore.js +18 -25
  135. package/dist/features/auth/schemas/index.d.ts +2 -2
  136. package/dist/features/before-after/api/[id]/route.js +8 -6
  137. package/dist/features/before-after/schemas/index.d.ts +2 -2
  138. package/dist/features/blog/actions/blog-actions.d.ts +3 -3
  139. package/dist/features/blog/components/BlogIndexListing.js +21 -2
  140. package/dist/features/blog/components/BlogPostForm.js +11 -5
  141. package/dist/features/blog/components/BlogPostView.js +10 -2
  142. package/dist/features/blog/schemas/index.d.ts +18 -18
  143. package/dist/features/cart/components/CartDrawer.js +3 -2
  144. package/dist/features/cart/repository/cart.repository.js +4 -3
  145. package/dist/features/cart/utils/pending-ops.d.ts +1 -1
  146. package/dist/features/categories/api/[id]/route.js +4 -3
  147. package/dist/features/categories/api/route.js +4 -3
  148. package/dist/features/categories/components/BrandDetailPageView.js +2 -2
  149. package/dist/features/categories/components/BrandDetailTabs.js +2 -2
  150. package/dist/features/categories/components/BundleCollage.d.ts +8 -0
  151. package/dist/features/categories/components/BundleCollage.js +50 -0
  152. package/dist/features/categories/components/BundleDetailView.js +2 -10
  153. package/dist/features/categories/components/BundleItemsPicker.js +20 -13
  154. package/dist/features/categories/components/CategoriesIndexListing.js +28 -9
  155. package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
  156. package/dist/features/categories/components/CategoryDetailTabs.js +2 -2
  157. package/dist/features/categories/components/CategoryProductsListing.js +52 -13
  158. package/dist/features/categories/components/index.d.ts +2 -0
  159. package/dist/features/categories/components/index.js +1 -0
  160. package/dist/features/categories/schemas/index.d.ts +6 -6
  161. package/dist/features/checkout/actions/checkout-actions.js +4 -3
  162. package/dist/features/checkout/hooks/usePaymentCheckout.js +31 -22
  163. package/dist/features/classified/components/ClassifiedFilters.d.ts +8 -0
  164. package/dist/features/classified/components/ClassifiedFilters.js +19 -0
  165. package/dist/features/classified/components/ClassifiedIndexListing.d.ts +4 -0
  166. package/dist/features/classified/components/ClassifiedIndexListing.js +110 -0
  167. package/dist/features/classified/components/ClassifiedListView.d.ts +6 -0
  168. package/dist/features/classified/components/ClassifiedListView.js +43 -0
  169. package/dist/features/classified/components/index.d.ts +6 -0
  170. package/dist/features/classified/components/index.js +3 -0
  171. package/dist/features/collections/api/[slug]/route.js +16 -12
  172. package/dist/features/collections/schemas/index.d.ts +5 -5
  173. package/dist/features/consultation/api/[id]/route.js +12 -9
  174. package/dist/features/consultation/components/ConsultationForm.js +3 -2
  175. package/dist/features/consultation/schemas/index.d.ts +6 -6
  176. package/dist/features/contact/email.js +77 -116
  177. package/dist/features/copilot/components/AdminCopilotView.js +12 -2
  178. package/dist/features/corporate/api/[id]/route.js +12 -9
  179. package/dist/features/corporate/components/CorporateInquiryForm.js +2 -1
  180. package/dist/features/digital-codes/components/DigitalCodeFilters.d.ts +8 -0
  181. package/dist/features/digital-codes/components/DigitalCodeFilters.js +16 -0
  182. package/dist/features/digital-codes/components/DigitalCodesIndexListing.d.ts +4 -0
  183. package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +107 -0
  184. package/dist/features/digital-codes/components/DigitalCodesListView.d.ts +6 -0
  185. package/dist/features/digital-codes/components/DigitalCodesListView.js +37 -0
  186. package/dist/features/digital-codes/components/index.d.ts +6 -0
  187. package/dist/features/digital-codes/components/index.js +3 -0
  188. package/dist/features/events/actions/event-actions.js +4 -3
  189. package/dist/features/events/components/AdminEventEditorView.js +3 -2
  190. package/dist/features/events/components/AdminEventsView.js +4 -2
  191. package/dist/features/events/components/EventPollWidget.js +5 -5
  192. package/dist/features/events/components/EventsIndexListing.js +2 -2
  193. package/dist/features/events/schemas/index.d.ts +20 -20
  194. package/dist/features/faq/actions/faq-actions.d.ts +8 -8
  195. package/dist/features/faq/components/ContactCTA.js +3 -1
  196. package/dist/features/faq/components/FAQAccordion.js +1 -1
  197. package/dist/features/faq/schemas/index.d.ts +4 -4
  198. package/dist/features/filters/AsyncFacetSection.d.ts +18 -0
  199. package/dist/features/filters/AsyncFacetSection.js +65 -0
  200. package/dist/features/forms/Checkbox.js +2 -2
  201. package/dist/features/forms/Input.js +2 -2
  202. package/dist/features/forms/Radio.js +5 -5
  203. package/dist/features/forms/Select.js +2 -2
  204. package/dist/features/forms/Slider.js +2 -2
  205. package/dist/features/forms/Textarea.js +2 -2
  206. package/dist/features/homepage/api/[id]/route.js +4 -3
  207. package/dist/features/homepage/api/sections/[id]/route.js +12 -9
  208. package/dist/features/homepage/components/AdSlot.js +2 -1
  209. package/dist/features/homepage/components/AdvertisementBanner.js +5 -3
  210. package/dist/features/homepage/components/BrandsSection.js +2 -2
  211. package/dist/features/homepage/components/CTABannerSection.js +2 -2
  212. package/dist/features/homepage/components/CharacterHotspot.d.ts +2 -2
  213. package/dist/features/homepage/components/CharacterHotspot.js +119 -157
  214. package/dist/features/homepage/components/CharacterHotspotForm.js +25 -20
  215. package/dist/features/homepage/components/CustomCardsSection.js +8 -6
  216. package/dist/features/homepage/components/FeaturedProductsSection.js +2 -2
  217. package/dist/features/homepage/components/GoogleReviewsSection.js +3 -3
  218. package/dist/features/homepage/components/HeroBanner.js +5 -4
  219. package/dist/features/homepage/components/HeroCarousel.js +13 -26
  220. package/dist/features/homepage/components/HowItWorksSection.js +4 -2
  221. package/dist/features/homepage/components/SocialFeedSection.js +2 -2
  222. package/dist/features/homepage/components/SocialPostCard.js +3 -2
  223. package/dist/features/homepage/lib/social-feed-fetcher.js +6 -3
  224. package/dist/features/layout/AppLayoutShell.d.ts +8 -2
  225. package/dist/features/layout/AppLayoutShell.js +54 -78
  226. package/dist/features/layout/BottomActions.js +43 -48
  227. package/dist/features/live/components/LiveItemFilters.d.ts +8 -0
  228. package/dist/features/live/components/LiveItemFilters.js +23 -0
  229. package/dist/features/live/components/LiveItemsIndexListing.d.ts +4 -0
  230. package/dist/features/live/components/LiveItemsIndexListing.js +108 -0
  231. package/dist/features/live/components/LiveItemsListView.d.ts +6 -0
  232. package/dist/features/live/components/LiveItemsListView.js +43 -0
  233. package/dist/features/live/components/index.d.ts +6 -0
  234. package/dist/features/live/components/index.js +3 -0
  235. package/dist/features/media/MediaLightbox.js +8 -14
  236. package/dist/features/media/types/index.d.ts +2 -2
  237. package/dist/features/media/upload/CameraCapture.js +2 -2
  238. package/dist/features/media/upload/ImageUpload.js +4 -2
  239. package/dist/features/media/upload/MediaUploadField.js +24 -8
  240. package/dist/features/media/upload/MediaUploadList.js +1 -1
  241. package/dist/features/orders/actions/order-actions.js +4 -3
  242. package/dist/features/orders/components/MarketplaceOrderCard.js +2 -1
  243. package/dist/features/orders/components/OrderFilters.js +12 -9
  244. package/dist/features/orders/schemas/index.d.ts +6 -6
  245. package/dist/features/pre-orders/api/[id]/route.js +12 -9
  246. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +5 -4
  247. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +27 -20
  248. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +17 -52
  249. package/dist/features/pre-orders/components/PreorderCard.d.ts +0 -9
  250. package/dist/features/pre-orders/components/PreorderCard.js +2 -13
  251. package/dist/features/pre-orders/components/index.d.ts +1 -1
  252. package/dist/features/pre-orders/components/index.js +1 -1
  253. package/dist/features/pre-orders/schemas/index.d.ts +10 -10
  254. package/dist/features/products/api/[id]/route.js +9 -7
  255. package/dist/features/products/api/route.js +1 -1
  256. package/dist/features/products/columns/productTableColumns.js +2 -2
  257. package/dist/features/products/components/AuctionsIndexListing.js +15 -51
  258. package/dist/features/products/components/BidHistory.js +2 -2
  259. package/dist/features/products/components/CompareOverlay.js +3 -2
  260. package/dist/features/products/components/MakeOfferButton.js +20 -14
  261. package/dist/features/products/components/MarketplacePrizeDrawCard.js +2 -1
  262. package/dist/features/products/components/PrizeDrawCollage.d.ts +1 -15
  263. package/dist/features/products/components/PrizeDrawCollage.js +54 -14
  264. package/dist/features/products/components/PrizeDrawDetailPageView.js +2 -1
  265. package/dist/features/products/components/PrizeDrawEntryActions.js +2 -1
  266. package/dist/features/products/components/PrizeDrawItemsEditor.js +9 -7
  267. package/dist/features/products/components/PrizeDrawsIndexListing.js +18 -51
  268. package/dist/features/products/components/PrizeRevealModal.js +24 -14
  269. package/dist/features/products/components/ProductDetailPageView.js +2 -1
  270. package/dist/features/products/components/ProductFilters.js +8 -6
  271. package/dist/features/products/components/ProductForm.js +12 -10
  272. package/dist/features/products/components/ProductGalleryClient.js +2 -1
  273. package/dist/features/products/components/ProductGrid.js +11 -14
  274. package/dist/features/products/components/ProductsIndexListing.js +16 -52
  275. package/dist/features/products/components/ProductsIndexPageView.js +2 -2
  276. package/dist/features/products/schemas/index.d.ts +56 -56
  277. package/dist/features/products/schemas/product-features.validators.d.ts +14 -14
  278. package/dist/features/promotions/components/CouponsIndexListing.js +1 -1
  279. package/dist/features/promotions/schemas/index.d.ts +6 -6
  280. package/dist/features/reviews/actions/review-actions.js +6 -5
  281. package/dist/features/reviews/api/[id]/route.js +4 -3
  282. package/dist/features/reviews/components/ReviewDetailPageView.js +2 -2
  283. package/dist/features/reviews/components/ReviewDetailShell.js +6 -3
  284. package/dist/features/reviews/components/ReviewsIndexListing.js +2 -2
  285. package/dist/features/reviews/schemas/index.d.ts +6 -6
  286. package/dist/features/scams/components/ScamProfileView.js +19 -10
  287. package/dist/features/scams/components/ScamRegistryView.js +2 -1
  288. package/dist/features/search/components/Search.d.ts +1 -1
  289. package/dist/features/search/components/Search.js +56 -49
  290. package/dist/features/search/schemas/index.d.ts +5 -5
  291. package/dist/features/seller/actions/offer-actions.js +11 -9
  292. package/dist/features/seller/components/SellerAddressesView.js +6 -4
  293. package/dist/features/seller/components/SellerBidsView.js +2 -2
  294. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  295. package/dist/features/seller/components/SellerOffersPanel.js +6 -1
  296. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  297. package/dist/features/seller/components/SellerPayoutSettingsView.js +3 -3
  298. package/dist/features/seller/components/SellerPreOrdersView.js +5 -4
  299. package/dist/features/seller/components/SellerPrizeDrawsView.js +5 -4
  300. package/dist/features/seller/components/SellerProductShell.d.ts +19 -1
  301. package/dist/features/seller/components/SellerProductShell.js +75 -9
  302. package/dist/features/seller/components/SellerProductsView.js +10 -11
  303. package/dist/features/seller/components/SellerShippingView.js +3 -3
  304. package/dist/features/seller/components/SellerSidebar.js +10 -7
  305. package/dist/features/seller/components/SellerStorefrontView.js +3 -3
  306. package/dist/features/seller/schemas/index.d.ts +4 -4
  307. package/dist/features/shell/FormShell.js +2 -1
  308. package/dist/features/shell/QuickFormDrawer.js +4 -3
  309. package/dist/features/shell/StepForm.js +4 -3
  310. package/dist/features/stores/actions/store-query-actions.js +4 -3
  311. package/dist/features/stores/components/StoreAboutView.js +2 -1
  312. package/dist/features/stores/components/StoreAuctionsListing.js +43 -64
  313. package/dist/features/stores/components/StoreDetailLayoutView.js +2 -2
  314. package/dist/features/stores/components/StorePreOrdersListing.js +33 -57
  315. package/dist/features/stores/components/StoreProductsListing.js +16 -49
  316. package/dist/features/stores/components/StoresIndexListing.js +2 -2
  317. package/dist/features/stores/schemas/index.d.ts +2 -2
  318. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +8 -7
  319. package/dist/features/wishlist/hooks/useGuestWishlist.d.ts +5 -5
  320. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +6 -6
  321. package/dist/features/wishlist/utils/guest-wishlist.d.ts +5 -5
  322. package/dist/index.d.ts +21 -3
  323. package/dist/index.js +1737 -1725
  324. package/dist/monitoring/server-logger.js +5 -9
  325. package/dist/next/api/apiHandler.js +56 -37
  326. package/dist/next/components/GlobalError.js +2 -1
  327. package/dist/next/routing/route-map.d.ts +27 -0
  328. package/dist/next/routing/route-map.js +10 -0
  329. package/dist/react/ErrorBoundary.js +2 -1
  330. package/dist/react/contexts/SessionContext.js +38 -28
  331. package/dist/react/hooks/useCamera.d.ts +1 -1
  332. package/dist/react/hooks/useCamera.js +8 -7
  333. package/dist/seed/site-settings-seed-data.js +6 -0
  334. package/dist/server-entry.d.ts +3 -0
  335. package/dist/server-entry.js +3 -0
  336. package/dist/server.d.ts +12 -0
  337. package/dist/server.js +15 -0
  338. package/dist/tailwind-utilities.css +1 -1
  339. package/dist/ui/DataTable.js +28 -7
  340. package/dist/ui/components/Button.d.ts +8 -1
  341. package/dist/ui/components/Button.js +47 -8
  342. package/dist/ui/components/CollageLightbox.d.ts +18 -0
  343. package/dist/ui/components/CollageLightbox.js +41 -0
  344. package/dist/ui/components/Dropdown.js +7 -6
  345. package/dist/ui/components/ImageLightbox.d.ts +7 -1
  346. package/dist/ui/components/ImageLightbox.js +15 -5
  347. package/dist/ui/components/PageLoader.js +4 -3
  348. package/dist/ui/components/PaginatedMultiSelect.d.ts +28 -0
  349. package/dist/ui/components/PaginatedMultiSelect.js +141 -0
  350. package/dist/ui/components/PaginatedMultiSelect.style.css +272 -0
  351. package/dist/ui/components/Semantic.js +1 -1
  352. package/dist/ui/components/SideDrawer.js +17 -15
  353. package/dist/ui/components/index.style.css +1 -0
  354. package/dist/ui/index.d.ts +2 -0
  355. package/dist/ui/index.js +1 -0
  356. package/dist/utils/number.formatter.js +5 -13
  357. package/dist/utils/string.formatter.js +21 -18
  358. package/dist/validation/schemas.d.ts +2 -2
  359. package/package.json +1 -1
@@ -16,15 +16,11 @@ import { AppError } from "../errors";
16
16
  // Using require() calls inside functions keeps the imports out of the static
17
17
  // analysis graph and prevents Edge Runtime warnings.
18
18
  /* eslint-disable @typescript-eslint/no-require-imports */
19
- function nodeFsPromises() {
20
- return require("fs/promises");
21
- }
22
- function nodeFs() {
23
- return require("fs");
24
- }
25
- function nodePath() {
26
- return require("path");
27
- }
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ function nodeRequire(id) { return require(id); }
21
+ function nodeFsPromises() { return nodeRequire("fs/promises"); }
22
+ function nodeFs() { return nodeRequire("fs"); }
23
+ function nodePath() { return nodeRequire("path"); }
28
24
  // process.cwd() is a Node.js-only API. Access it through module.require so
29
25
  // Next.js Edge static analysis does not flag this file.
30
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1,9 +1,56 @@
1
+ async function validateSchema(request, schema) {
2
+ if (typeof schema.safeParse === "function") {
3
+ const body = await request.json();
4
+ const result = schema.safeParse(body);
5
+ if (!result.success) {
6
+ return { validationError: true, issues: result.error.issues };
7
+ }
8
+ return { validationError: false, data: result.data };
9
+ }
10
+ try {
11
+ const data = (await request.json());
12
+ return { validationError: false, data };
13
+ }
14
+ catch {
15
+ return { validationError: false, data: undefined };
16
+ }
17
+ }
18
+ function buildRateLimitHeaders(result) {
19
+ return {
20
+ "RateLimit-Limit": String(result.limit),
21
+ "RateLimit-Remaining": String(result.remaining),
22
+ "RateLimit-Reset": String(result.reset),
23
+ };
24
+ }
25
+ function buildRateLimitExceededResponse(message, headers) {
26
+ return new Response(JSON.stringify({ success: false, error: message }), { status: 429, headers: { "Content-Type": "application/json", ...headers } });
27
+ }
28
+ function applyRateLimitHeaders(response, headers) {
29
+ for (const [key, value] of Object.entries(headers)) {
30
+ response.headers.set(key, value);
31
+ }
32
+ }
1
33
  function buildPublicCacheControl(policy) {
2
34
  const maxAge = policy?.maxAge ?? 30;
3
35
  const sMaxAge = policy?.sMaxAge ?? 300;
4
36
  const staleWhileRevalidate = policy?.staleWhileRevalidate ?? 600;
5
37
  return `public, max-age=${maxAge}, s-maxage=${sMaxAge}, stale-while-revalidate=${staleWhileRevalidate}`;
6
38
  }
39
+ async function applyRateLimitCheck(request, config, applyRateLimit, getRateLimitExceededMessage) {
40
+ const result = await applyRateLimit(request, config);
41
+ const headers = buildRateLimitHeaders(result);
42
+ if (!result.success) {
43
+ return { blocked: true, response: buildRateLimitExceededResponse(getRateLimitExceededMessage(), headers) };
44
+ }
45
+ return { blocked: false, headers };
46
+ }
47
+ async function applySchemaValidation(request, schema, errorResponse) {
48
+ const schemaResult = await validateSchema(request, schema);
49
+ if (schemaResult.validationError) {
50
+ return { invalid: true, response: errorResponse("Validation failed", 400, schemaResult.issues) };
51
+ }
52
+ return { invalid: false, data: schemaResult.data };
53
+ }
7
54
  export function createApiHandlerFactory(deps) {
8
55
  return function createApiHandler(options) {
9
56
  return async (request, context) => {
@@ -11,24 +58,10 @@ export function createApiHandlerFactory(deps) {
11
58
  try {
12
59
  let rateLimitHeaders;
13
60
  if (options.rateLimit) {
14
- const rateLimitResult = await deps.applyRateLimit(request, options.rateLimit);
15
- rateLimitHeaders = {
16
- "RateLimit-Limit": String(rateLimitResult.limit),
17
- "RateLimit-Remaining": String(rateLimitResult.remaining),
18
- "RateLimit-Reset": String(rateLimitResult.reset),
19
- };
20
- if (!rateLimitResult.success) {
21
- return new Response(JSON.stringify({
22
- success: false,
23
- error: deps.getRateLimitExceededMessage(),
24
- }), {
25
- status: 429,
26
- headers: {
27
- "Content-Type": "application/json",
28
- ...rateLimitHeaders,
29
- },
30
- });
31
- }
61
+ const rlCheck = await applyRateLimitCheck(request, options.rateLimit, deps.applyRateLimit, deps.getRateLimitExceededMessage);
62
+ if (rlCheck.blocked)
63
+ return rlCheck.response;
64
+ rateLimitHeaders = rlCheck.headers;
32
65
  }
33
66
  let user;
34
67
  if (options.roles && options.roles.length > 0) {
@@ -39,22 +72,10 @@ export function createApiHandlerFactory(deps) {
39
72
  }
40
73
  let validatedBody;
41
74
  if (options.schema) {
42
- if (typeof options.schema.safeParse === "function") {
43
- const body = await request.json();
44
- const result = options.schema.safeParse(body);
45
- if (!result.success) {
46
- return deps.errorResponse("Validation failed", 400, result.error.issues);
47
- }
48
- validatedBody = result.data;
49
- }
50
- else {
51
- try {
52
- validatedBody = (await request.json());
53
- }
54
- catch {
55
- validatedBody = undefined;
56
- }
57
- }
75
+ const schemaCheck = await applySchemaValidation(request, options.schema, deps.errorResponse);
76
+ if (schemaCheck.invalid)
77
+ return schemaCheck.response;
78
+ validatedBody = schemaCheck.data;
58
79
  }
59
80
  const resolvedParams = context?.params
60
81
  ? await context.params
@@ -67,9 +88,7 @@ export function createApiHandlerFactory(deps) {
67
88
  });
68
89
  response.headers.set("Access-Control-Max-Age", "86400");
69
90
  if (rateLimitHeaders) {
70
- for (const [key, value] of Object.entries(rateLimitHeaders)) {
71
- response.headers.set(key, value);
72
- }
91
+ applyRateLimitHeaders(response, rateLimitHeaders);
73
92
  }
74
93
  const hasCredentialHeaders = !!request.headers.get("authorization") || !!request.headers.get("cookie");
75
94
  const hasRoleGuards = !!options.roles && options.roles.length > 0;
@@ -12,6 +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
16
  import { trackError, ErrorCategory, ErrorSeverity, } from "../../monitoring/error-tracking";
16
17
  export function GlobalError({ error, reset }) {
17
18
  useEffect(() => {
@@ -30,7 +31,7 @@ export function GlobalError({ error, reset }) {
30
31
  fontFamily: "system-ui, sans-serif",
31
32
  padding: "2rem",
32
33
  textAlign: "center",
33
- }, children: [_jsx("h1", { style: { fontSize: "2rem", marginBottom: "0.5rem" }, children: "Something went wrong" }), _jsx("p", { style: { opacity: 0.7, marginBottom: "1.5rem" }, children: "A critical error occurred. We're working on it." }), process.env.NODE_ENV === "development" && (_jsxs("pre", { style: {
34
+ }, children: [_jsx(Heading, { level: 1, style: { fontSize: "2rem", marginBottom: "0.5rem" }, children: "Something went wrong" }), _jsx(Text, { style: { opacity: 0.7, marginBottom: "1.5rem" }, children: "A critical error occurred. We're working on it." }), process.env.NODE_ENV === "development" && (_jsxs("pre", { style: {
34
35
  fontSize: "0.75rem",
35
36
  padding: "1rem",
36
37
  background: "#f3f4f6",
@@ -170,6 +170,15 @@ export declare const DEFAULT_ROUTE_MAP: {
170
170
  readonly PRIZE_DRAWS_NEW: "/store/prize-draws/new";
171
171
  readonly PRIZE_DRAWS_EDIT: (id: string) => string;
172
172
  readonly PRODUCT_CODES: (id: string) => string;
173
+ readonly CLASSIFIED: "/store/classified";
174
+ readonly CLASSIFIED_NEW: "/store/classified/new";
175
+ readonly CLASSIFIED_EDIT: (id: string) => string;
176
+ readonly DIGITAL_CODES: "/store/digital-codes";
177
+ readonly DIGITAL_CODES_NEW: "/store/digital-codes/new";
178
+ readonly DIGITAL_CODES_EDIT: (id: string) => string;
179
+ readonly LIVE_ITEMS: "/store/live";
180
+ readonly LIVE_ITEMS_NEW: "/store/live/new";
181
+ readonly LIVE_ITEMS_EDIT: (id: string) => string;
173
182
  };
174
183
  readonly ADMIN: {
175
184
  readonly DASHBOARD: "/admin/dashboard";
@@ -416,6 +425,15 @@ export declare const ROUTES: {
416
425
  readonly PRIZE_DRAWS_NEW: "/store/prize-draws/new";
417
426
  readonly PRIZE_DRAWS_EDIT: (id: string) => string;
418
427
  readonly PRODUCT_CODES: (id: string) => string;
428
+ readonly CLASSIFIED: "/store/classified";
429
+ readonly CLASSIFIED_NEW: "/store/classified/new";
430
+ readonly CLASSIFIED_EDIT: (id: string) => string;
431
+ readonly DIGITAL_CODES: "/store/digital-codes";
432
+ readonly DIGITAL_CODES_NEW: "/store/digital-codes/new";
433
+ readonly DIGITAL_CODES_EDIT: (id: string) => string;
434
+ readonly LIVE_ITEMS: "/store/live";
435
+ readonly LIVE_ITEMS_NEW: "/store/live/new";
436
+ readonly LIVE_ITEMS_EDIT: (id: string) => string;
419
437
  };
420
438
  readonly ADMIN: {
421
439
  readonly DASHBOARD: "/admin/dashboard";
@@ -546,6 +564,15 @@ export declare const SELLER_ROUTES: {
546
564
  readonly PRIZE_DRAWS_NEW: "/store/prize-draws/new";
547
565
  readonly PRIZE_DRAWS_EDIT: (id: string) => string;
548
566
  readonly PRODUCT_CODES: (id: string) => string;
567
+ readonly CLASSIFIED: "/store/classified";
568
+ readonly CLASSIFIED_NEW: "/store/classified/new";
569
+ readonly CLASSIFIED_EDIT: (id: string) => string;
570
+ readonly DIGITAL_CODES: "/store/digital-codes";
571
+ readonly DIGITAL_CODES_NEW: "/store/digital-codes/new";
572
+ readonly DIGITAL_CODES_EDIT: (id: string) => string;
573
+ readonly LIVE_ITEMS: "/store/live";
574
+ readonly LIVE_ITEMS_NEW: "/store/live/new";
575
+ readonly LIVE_ITEMS_EDIT: (id: string) => string;
549
576
  };
550
577
  export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
551
578
  export declare const PROTECTED_ROUTES: readonly [string, string, string, string, string, string, string];
@@ -159,6 +159,16 @@ export const DEFAULT_ROUTE_MAP = {
159
159
  PRIZE_DRAWS_NEW: "/store/prize-draws/new",
160
160
  PRIZE_DRAWS_EDIT: (id) => `/store/prize-draws/${id}/edit`,
161
161
  PRODUCT_CODES: (id) => `/store/products/${id}/codes`,
162
+ // SB-UNI-R — classified / digital-code / live
163
+ CLASSIFIED: "/store/classified",
164
+ CLASSIFIED_NEW: "/store/classified/new",
165
+ CLASSIFIED_EDIT: (id) => `/store/classified/${id}/edit`,
166
+ DIGITAL_CODES: "/store/digital-codes",
167
+ DIGITAL_CODES_NEW: "/store/digital-codes/new",
168
+ DIGITAL_CODES_EDIT: (id) => `/store/digital-codes/${id}/edit`,
169
+ LIVE_ITEMS: "/store/live",
170
+ LIVE_ITEMS_NEW: "/store/live/new",
171
+ LIVE_ITEMS_EDIT: (id) => `/store/live/${id}/edit`,
162
172
  },
163
173
  ADMIN: {
164
174
  DASHBOARD: "/admin/dashboard",
@@ -10,6 +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
14
  import { trackError, ErrorCategory, ErrorSeverity, } from "../monitoring/error-tracking";
14
15
  function DefaultFallback({ error, onReset, }) {
15
16
  return (_jsxs("div", { role: "alert", style: {
@@ -20,7 +21,7 @@ function DefaultFallback({ error, onReset, }) {
20
21
  minHeight: "100vh",
21
22
  padding: "2rem",
22
23
  textAlign: "center",
23
- }, "data-section": "errorboundary-div-446", children: [_jsx("h1", { style: { fontSize: "1.5rem", marginBottom: "0.5rem" }, children: "Something went wrong" }), _jsx("p", { style: { marginBottom: "1.5rem", opacity: 0.7 }, children: "An unexpected error occurred. Please try again." }), process.env.NODE_ENV === "development" && error && (_jsx("pre", { style: {
24
+ }, "data-section": "errorboundary-div-446", children: [_jsx(Heading, { level: 1, style: { fontSize: "1.5rem", marginBottom: "0.5rem" }, children: "Something went wrong" }), _jsx(Text, { style: { marginBottom: "1.5rem", opacity: 0.7 }, children: "An unexpected error occurred. Please try again." }), process.env.NODE_ENV === "development" && error && (_jsx("pre", { style: {
24
25
  fontSize: "0.75rem",
25
26
  padding: "1rem",
26
27
  background: "#f3f4f6",
@@ -230,24 +230,46 @@ export function SessionProvider({ children, initialUser, endpoints: endpointOver
230
230
  useEffect(() => {
231
231
  const adapter = getClientSessionAdapter();
232
232
  let authVersion = 0;
233
+ async function tryCreateSession(authUser, version, getVersion) {
234
+ try {
235
+ const idToken = await authUser.getIdToken(true);
236
+ if (version !== getVersion())
237
+ return;
238
+ const data = await apiClient.post(ep.createSession, { idToken });
239
+ if (version !== getVersion())
240
+ return;
241
+ if (data?.sessionId)
242
+ setSessionId(data.sessionId);
243
+ }
244
+ catch (error) {
245
+ logger.error("Session creation failed", { error });
246
+ }
247
+ }
248
+ async function handleNoAuthUser(version, getVersion) {
249
+ if (!hasSessionCookie())
250
+ return false;
251
+ const serverUser = await fetchUserProfileFromServer();
252
+ if (version !== getVersion())
253
+ return true;
254
+ if (serverUser) {
255
+ setUser(serverUser);
256
+ const sid = getSessionIdFromCookie();
257
+ if (sid)
258
+ setSessionId(sid);
259
+ setLoading(false);
260
+ return true;
261
+ }
262
+ deleteCookie(SESSION_COOKIE);
263
+ deleteCookie(SESSION_ID_COOKIE);
264
+ return false;
265
+ }
233
266
  const unsubscribe = adapter.onAuthStateChanged(async (authUser) => {
234
267
  const thisVersion = ++authVersion;
268
+ const getVersion = () => authVersion;
235
269
  if (authUser) {
236
270
  const hasSession = hasSessionCookie();
237
271
  if (!hasSession) {
238
- try {
239
- const idToken = await authUser.getIdToken(true);
240
- if (thisVersion !== authVersion)
241
- return;
242
- const data = await apiClient.post(ep.createSession, { idToken });
243
- if (thisVersion !== authVersion)
244
- return;
245
- if (data?.sessionId)
246
- setSessionId(data.sessionId);
247
- }
248
- catch (error) {
249
- logger.error("Session creation failed", { error });
250
- }
272
+ await tryCreateSession(authUser, thisVersion, getVersion);
251
273
  }
252
274
  if (thisVersion !== authVersion)
253
275
  return;
@@ -276,21 +298,9 @@ export function SessionProvider({ children, initialUser, endpoints: endpointOver
276
298
  }
277
299
  else {
278
300
  // No auth user — try server-session fallback (OAuth flows)
279
- if (hasSessionCookie()) {
280
- const serverUser = await fetchUserProfileFromServer();
281
- if (thisVersion !== authVersion)
282
- return;
283
- if (serverUser) {
284
- setUser(serverUser);
285
- const sid = getSessionIdFromCookie();
286
- if (sid)
287
- setSessionId(sid);
288
- setLoading(false);
289
- return;
290
- }
291
- deleteCookie(SESSION_COOKIE);
292
- deleteCookie(SESSION_ID_COOKIE);
293
- }
301
+ const handled = await handleNoAuthUser(thisVersion, getVersion);
302
+ if (handled)
303
+ return;
294
304
  setUser(null);
295
305
  setSessionId(null);
296
306
  if (activityUpdateRef.current) {
@@ -12,7 +12,7 @@ export interface UseCameraReturn {
12
12
  videoRef: React.RefObject<HTMLVideoElement | null>;
13
13
  startCamera: (options?: UseCameraOptions) => Promise<void>;
14
14
  stopCamera: () => void;
15
- takePhoto: () => Blob | null;
15
+ takePhoto: () => Promise<Blob | null>;
16
16
  startRecording: () => void;
17
17
  stopRecording: () => Promise<Blob>;
18
18
  switchCamera: () => Promise<void>;
@@ -73,22 +73,23 @@ export function useCamera() {
73
73
  setError(message);
74
74
  }
75
75
  }, [isSupported, stopCamera]);
76
+ // canvas.toBlob() is async — must return a Promise so the blob is available
77
+ // to the caller after the encoding completes (a synchronous return always
78
+ // gives null because the callback hasn't fired yet).
76
79
  const takePhoto = useCallback(() => {
77
80
  const video = videoRef.current;
78
81
  if (!video || !isActive)
79
- return null;
82
+ return Promise.resolve(null);
80
83
  const canvas = document.createElement("canvas");
81
84
  canvas.width = video.videoWidth;
82
85
  canvas.height = video.videoHeight;
83
86
  const ctx = canvas.getContext("2d");
84
87
  if (!ctx)
85
- return null;
88
+ return Promise.resolve(null);
86
89
  ctx.drawImage(video, 0, 0);
87
- let result = null;
88
- canvas.toBlob((blob) => {
89
- result = blob;
90
- }, "image/webp", 0.92);
91
- return result;
90
+ return new Promise((resolve) => {
91
+ canvas.toBlob((blob) => resolve(blob), "image/webp", 0.92);
92
+ });
92
93
  }, [isActive]);
93
94
  const startRecording = useCallback(() => {
94
95
  if (!streamRef.current || !isActive)
@@ -396,6 +396,12 @@ export const siteSettingsSeedData = {
396
396
  deviantartClientId: "deviantart_client_id_PLACEHOLDER",
397
397
  deviantartClientSecret: "deviantart_client_secret_PLACEHOLDER",
398
398
  },
399
+ notificationChannels: {
400
+ inApp: { enabled: true, readOnly: true },
401
+ email: { enabled: false, minPriority: "normal" },
402
+ whatsapp: { enabled: false, minPriority: "high", otpEnabled: false },
403
+ sms: { enabled: false, minPriority: "high" },
404
+ },
399
405
  actionConfig: {},
400
406
  navConfig: {},
401
407
  disabledRoutes: [],
@@ -24,6 +24,9 @@ export { PreOrderDetailPageView } from "./features/pre-orders/index";
24
24
  export { AuctionDetailPageView } from "./features/auctions/index";
25
25
  export { AuctionsListView } from "./features/auctions/components/AuctionsListView";
26
26
  export { BundlesListView } from "./features/categories/components/BundlesListView";
27
+ export { ClassifiedListView } from "./features/classified/components/ClassifiedListView";
28
+ export { DigitalCodesListView } from "./features/digital-codes/components/DigitalCodesListView";
29
+ export { LiveItemsListView } from "./features/live/components/LiveItemsListView";
27
30
  export { PrizeDrawsListingView } from "./features/products/components/PrizeDrawsListingView";
28
31
  export { PrizeDrawDetailPageView } from "./features/products/components/PrizeDrawDetailPageView";
29
32
  export { ProductDetailPageView } from "./features/products/components/ProductDetailPageView";
@@ -29,6 +29,9 @@ export { PreOrderDetailPageView } from "./features/pre-orders/index";
29
29
  export { AuctionDetailPageView } from "./features/auctions/index";
30
30
  export { AuctionsListView } from "./features/auctions/components/AuctionsListView";
31
31
  export { BundlesListView } from "./features/categories/components/BundlesListView";
32
+ export { ClassifiedListView } from "./features/classified/components/ClassifiedListView";
33
+ export { DigitalCodesListView } from "./features/digital-codes/components/DigitalCodesListView";
34
+ export { LiveItemsListView } from "./features/live/components/LiveItemsListView";
32
35
  export { PrizeDrawsListingView } from "./features/products/components/PrizeDrawsListingView";
33
36
  export { PrizeDrawDetailPageView } from "./features/products/components/PrizeDrawDetailPageView";
34
37
  export { ProductDetailPageView } from "./features/products/components/ProductDetailPageView";
package/dist/server.d.ts CHANGED
@@ -491,3 +491,15 @@ export { checkActionAllowed } from "./features/admin/utils/checkActionAllowed";
491
491
  export { getDisabledRoutes } from "./features/admin/utils/getDisabledRoutes";
492
492
  export { getSiteSettingsGlobal } from "./features/admin/utils/getSiteSettingsGlobal";
493
493
  export { updateActionConfigDomain, updateNavConfigDomain } from "./_internal/server/features/site-settings/actions";
494
+ export { getClassifiedForDetail, type ClassifiedDataOptions } from "./_internal/server/features/classified/data";
495
+ export { toClientClassified, type ClassifiedClientShape } from "./_internal/server/features/classified/adapters";
496
+ export { buildClassifiedMetadata, type ClassifiedMetadataOptions } from "./_internal/server/features/classified/metadata";
497
+ export { renderClassifiedOg, renderClassifiedOgImage, renderClassifiedOgFromDoc, type ClassifiedOgData } from "./_internal/server/features/classified/og";
498
+ export { getDigitalCodeForDetail, type DigitalCodeDataOptions } from "./_internal/server/features/digital-code/data";
499
+ export { toClientDigitalCode, type DigitalCodeClientShape } from "./_internal/server/features/digital-code/adapters";
500
+ export { buildDigitalCodeMetadata, type DigitalCodeMetadataOptions } from "./_internal/server/features/digital-code/metadata";
501
+ export { renderDigitalCodeOg, renderDigitalCodeOgImage, renderDigitalCodeOgFromDoc, type DigitalCodeOgData } from "./_internal/server/features/digital-code/og";
502
+ export { getLiveItemForDetail, type LiveDataOptions } from "./_internal/server/features/live/data";
503
+ export { toClientLiveItem, type LiveItemClientShape } from "./_internal/server/features/live/adapters";
504
+ export { buildLiveItemMetadata, type LiveItemMetadataOptions } from "./_internal/server/features/live/metadata";
505
+ export { renderLiveItemOg, renderLiveItemOgImage, renderLiveItemOgFromDoc, type LiveItemOgData } from "./_internal/server/features/live/og";
package/dist/server.js CHANGED
@@ -1368,3 +1368,18 @@ export { getDisabledRoutes } from "./features/admin/utils/getDisabledRoutes";
1368
1368
  export { getSiteSettingsGlobal } from "./features/admin/utils/getSiteSettingsGlobal";
1369
1369
  // -- Site-settings domain actions (updateActionConfig / updateNavConfig) --
1370
1370
  export { updateActionConfigDomain, updateNavConfigDomain } from "./_internal/server/features/site-settings/actions";
1371
+ // ── Classified listing — data + adapters + metadata + OG ─────────────────────
1372
+ export { getClassifiedForDetail } from "./_internal/server/features/classified/data";
1373
+ export { toClientClassified } from "./_internal/server/features/classified/adapters";
1374
+ export { buildClassifiedMetadata } from "./_internal/server/features/classified/metadata";
1375
+ export { renderClassifiedOg, renderClassifiedOgImage, renderClassifiedOgFromDoc } from "./_internal/server/features/classified/og";
1376
+ // ── Digital-code listing — data + adapters + metadata + OG ───────────────────
1377
+ export { getDigitalCodeForDetail } from "./_internal/server/features/digital-code/data";
1378
+ export { toClientDigitalCode } from "./_internal/server/features/digital-code/adapters";
1379
+ export { buildDigitalCodeMetadata } from "./_internal/server/features/digital-code/metadata";
1380
+ export { renderDigitalCodeOg, renderDigitalCodeOgImage, renderDigitalCodeOgFromDoc } from "./_internal/server/features/digital-code/og";
1381
+ // ── Live-item listing — data + adapters + metadata + OG ──────────────────────
1382
+ export { getLiveItemForDetail } from "./_internal/server/features/live/data";
1383
+ export { toClientLiveItem } from "./_internal/server/features/live/adapters";
1384
+ export { buildLiveItemMetadata } from "./_internal/server/features/live/metadata";
1385
+ export { renderLiveItemOg, renderLiveItemOgImage, renderLiveItemOgFromDoc } from "./_internal/server/features/live/og";