@mohasinac/appkit 2.3.2 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (677) hide show
  1. package/dist/client.d.ts +48 -12
  2. package/dist/client.js +25 -6
  3. package/dist/constants/api-endpoints.d.ts +380 -22
  4. package/dist/constants/api-endpoints.js +66 -13
  5. package/dist/constants/index.d.ts +1 -1
  6. package/dist/constants/index.js +1 -1
  7. package/dist/core/hooks/useSyncManager.d.ts +1 -0
  8. package/dist/core/hooks/useSyncManager.js +83 -0
  9. package/dist/core/integration-keys.d.ts +4 -0
  10. package/dist/core/integration-keys.js +8 -0
  11. package/dist/features/about/components/FAQPageView.js +9 -11
  12. package/dist/features/about/components/PolicyPageView.js +32 -11
  13. package/dist/features/about/components/PublicProfileView.js +77 -11
  14. package/dist/features/account/components/AddressesIndexListing.js +63 -38
  15. package/dist/features/account/components/UserOffersPanel.d.ts +8 -0
  16. package/dist/features/account/components/UserOffersPanel.js +81 -0
  17. package/dist/features/account/components/UserSettingsView.d.ts +2 -1
  18. package/dist/features/account/components/UserSettingsView.js +2 -1
  19. package/dist/features/account/components/UserSidebar.d.ts +6 -1
  20. package/dist/features/account/components/UserSidebar.js +48 -42
  21. package/dist/features/account/components/index.d.ts +2 -0
  22. package/dist/features/account/components/index.js +1 -0
  23. package/dist/features/admin/actions/admin-actions.d.ts +1 -1
  24. package/dist/features/admin/actions/admin-actions.js +13 -3
  25. package/dist/features/admin/components/AdminAdEditorView.js +6 -7
  26. package/dist/features/admin/components/AdminAllEventEntriesView.d.ts +4 -0
  27. package/dist/features/admin/components/AdminAllEventEntriesView.js +102 -0
  28. package/dist/features/admin/components/AdminBidsView.js +94 -8
  29. package/dist/features/admin/components/AdminBlogEditorView.d.ts +7 -0
  30. package/dist/features/admin/components/AdminBlogEditorView.js +162 -0
  31. package/dist/features/admin/components/AdminBlogView.d.ts +4 -1
  32. package/dist/features/admin/components/AdminBlogView.js +61 -31
  33. package/dist/features/admin/components/AdminBrandEditorView.d.ts +7 -0
  34. package/dist/features/admin/components/AdminBrandEditorView.js +104 -0
  35. package/dist/features/admin/components/AdminBrandsView.d.ts +4 -0
  36. package/dist/features/admin/components/AdminBrandsView.js +76 -0
  37. package/dist/features/admin/components/AdminCarouselEditorView.d.ts +8 -0
  38. package/dist/features/admin/components/AdminCarouselEditorView.js +204 -0
  39. package/dist/features/admin/components/AdminCarouselView.js +153 -34
  40. package/dist/features/admin/components/AdminCartsView.d.ts +4 -0
  41. package/dist/features/admin/components/AdminCartsView.js +82 -0
  42. package/dist/features/admin/components/AdminCategoriesView.d.ts +4 -1
  43. package/dist/features/admin/components/AdminCategoriesView.js +66 -48
  44. package/dist/features/admin/components/AdminCategoryEditorView.d.ts +7 -0
  45. package/dist/features/admin/components/AdminCategoryEditorView.js +115 -0
  46. package/dist/features/admin/components/AdminContactEditorView.d.ts +11 -0
  47. package/dist/features/admin/components/AdminContactEditorView.js +32 -0
  48. package/dist/features/admin/components/AdminContactView.js +111 -20
  49. package/dist/features/admin/components/AdminCouponEditorView.d.ts +7 -0
  50. package/dist/features/admin/components/AdminCouponEditorView.js +179 -0
  51. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -1
  52. package/dist/features/admin/components/AdminCouponsView.js +57 -9
  53. package/dist/features/admin/components/AdminDashboardView.js +3 -0
  54. package/dist/features/admin/components/AdminFaqEditorView.d.ts +7 -0
  55. package/dist/features/admin/components/AdminFaqEditorView.js +128 -0
  56. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -1
  57. package/dist/features/admin/components/AdminFaqsView.js +55 -23
  58. package/dist/features/admin/components/AdminFeatureFlagsView.js +33 -24
  59. package/dist/features/admin/components/AdminListingScaffold.d.ts +7 -1
  60. package/dist/features/admin/components/AdminListingScaffold.js +2 -2
  61. package/dist/features/admin/components/AdminMediaView.js +18 -8
  62. package/dist/features/admin/components/AdminNavEditorView.d.ts +20 -0
  63. package/dist/features/admin/components/AdminNavEditorView.js +84 -0
  64. package/dist/features/admin/components/AdminNavigationView.d.ts +1 -7
  65. package/dist/features/admin/components/AdminNavigationView.js +84 -72
  66. package/dist/features/admin/components/AdminNewsletterView.js +102 -20
  67. package/dist/features/admin/components/AdminNotificationsView.d.ts +4 -0
  68. package/dist/features/admin/components/AdminNotificationsView.js +119 -0
  69. package/dist/features/admin/components/AdminOrderEditorView.d.ts +8 -0
  70. package/dist/features/admin/components/AdminOrderEditorView.js +74 -0
  71. package/dist/features/admin/components/AdminOrdersView.js +64 -8
  72. package/dist/features/admin/components/AdminPayoutsView.js +122 -13
  73. package/dist/features/admin/components/AdminProductEditorView.d.ts +7 -0
  74. package/dist/features/admin/components/AdminProductEditorView.js +143 -0
  75. package/dist/features/admin/components/AdminProductsView.d.ts +4 -1
  76. package/dist/features/admin/components/AdminProductsView.js +119 -30
  77. package/dist/features/admin/components/AdminReturnRequestsView.d.ts +5 -0
  78. package/dist/features/admin/components/AdminReturnRequestsView.js +101 -0
  79. package/dist/features/admin/components/AdminReviewsView.js +138 -28
  80. package/dist/features/admin/components/AdminSectionsView.js +361 -472
  81. package/dist/features/admin/components/AdminSessionsView.d.ts +4 -0
  82. package/dist/features/admin/components/AdminSessionsView.js +119 -0
  83. package/dist/features/admin/components/AdminSidebar.d.ts +18 -3
  84. package/dist/features/admin/components/AdminSidebar.js +51 -4
  85. package/dist/features/admin/components/AdminSiteSettingsView.d.ts +7 -0
  86. package/dist/features/admin/components/AdminSiteSettingsView.js +319 -0
  87. package/dist/features/admin/components/AdminStoreAddressesView.d.ts +5 -0
  88. package/dist/features/admin/components/AdminStoreAddressesView.js +52 -0
  89. package/dist/features/admin/components/AdminStoreEditorView.d.ts +9 -0
  90. package/dist/features/admin/components/AdminStoreEditorView.js +55 -0
  91. package/dist/features/admin/components/AdminStoresView.js +62 -20
  92. package/dist/features/admin/components/AdminUserEditorView.d.ts +10 -0
  93. package/dist/features/admin/components/AdminUserEditorView.js +72 -0
  94. package/dist/features/admin/components/AdminUsersView.js +70 -36
  95. package/dist/features/admin/components/AdminWishlistsView.d.ts +4 -0
  96. package/dist/features/admin/components/AdminWishlistsView.js +53 -0
  97. package/dist/features/admin/components/BrandQuickCreateForm.d.ts +5 -0
  98. package/dist/features/admin/components/BrandQuickCreateForm.js +36 -0
  99. package/dist/features/admin/components/CategoryQuickCreateForm.d.ts +5 -0
  100. package/dist/features/admin/components/CategoryQuickCreateForm.js +35 -0
  101. package/dist/features/admin/components/DataTable.d.ts +4 -2
  102. package/dist/features/admin/components/DataTable.js +26 -6
  103. package/dist/features/admin/components/index.d.ts +47 -1
  104. package/dist/features/admin/components/index.js +23 -0
  105. package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +48 -0
  106. package/dist/features/admin/components/sections/adminSectionsBuildParse.js +653 -0
  107. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +298 -0
  108. package/dist/features/admin/components/sections/adminSectionsTypes.js +278 -0
  109. package/dist/features/admin/schemas/firestore.d.ts +26 -0
  110. package/dist/features/admin/schemas/firestore.js +1 -0
  111. package/dist/features/admin/types/product.types.d.ts +2 -3
  112. package/dist/features/auctions/actions/bid-actions.js +6 -2
  113. package/dist/features/auctions/components/AuctionDetailPageView.d.ts +3 -1
  114. package/dist/features/auctions/components/AuctionDetailPageView.js +38 -12
  115. package/dist/features/auctions/components/AuctionFilters.d.ts +3 -1
  116. package/dist/features/auctions/components/AuctionFilters.js +6 -2
  117. package/dist/features/auctions/components/CollapsibleBidHistory.d.ts +7 -0
  118. package/dist/features/auctions/components/CollapsibleBidHistory.js +8 -0
  119. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +4 -0
  120. package/dist/features/auctions/components/MarketplaceAuctionCard.js +43 -9
  121. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -0
  122. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +18 -0
  123. package/dist/features/auctions/components/PlaceBidFormClient.js +33 -0
  124. package/dist/features/auctions/hooks/useAuctions.d.ts +1 -0
  125. package/dist/features/auctions/hooks/useAuctions.js +1 -0
  126. package/dist/features/auctions/schemas/index.d.ts +22 -12
  127. package/dist/features/auth/actions/profile-actions.d.ts +5 -3
  128. package/dist/features/auth/actions/profile-actions.js +30 -11
  129. package/dist/features/auth/auth-helpers.js +1 -0
  130. package/dist/features/auth/components/LoginForm.js +2 -1
  131. package/dist/features/auth/hooks/useAuth.js +16 -4
  132. package/dist/features/auth/permissions/constants.d.ts +63 -0
  133. package/dist/features/auth/permissions/constants.js +323 -0
  134. package/dist/features/auth/schemas/firestore.d.ts +20 -0
  135. package/dist/features/auth/schemas/index.d.ts +4 -4
  136. package/dist/features/auth/schemas/index.js +3 -2
  137. package/dist/features/auth/types/index.d.ts +1 -1
  138. package/dist/features/before-after/schemas/index.d.ts +2 -2
  139. package/dist/features/blog/actions/blog-actions.d.ts +15 -15
  140. package/dist/features/blog/components/BlogFilters.js +1 -1
  141. package/dist/features/blog/components/BlogIndexListing.js +57 -5
  142. package/dist/features/blog/components/BlogIndexPageView.js +14 -2
  143. package/dist/features/blog/components/BlogPostForm.js +6 -2
  144. package/dist/features/blog/components/BlogPostView.js +2 -1
  145. package/dist/features/blog/hooks/useBlog.d.ts +2 -0
  146. package/dist/features/blog/hooks/useBlog.js +2 -0
  147. package/dist/features/blog/schemas/index.d.ts +46 -12
  148. package/dist/features/brands/actions/brand-actions.d.ts +2 -0
  149. package/dist/features/brands/actions/brand-actions.js +5 -0
  150. package/dist/features/brands/index.d.ts +3 -0
  151. package/dist/features/brands/index.js +3 -0
  152. package/dist/features/brands/repository/brands.repository.d.ts +13 -0
  153. package/dist/features/brands/repository/brands.repository.js +60 -0
  154. package/dist/features/brands/schemas/index.d.ts +33 -0
  155. package/dist/features/brands/schemas/index.js +15 -0
  156. package/dist/features/brands/server.d.ts +7 -0
  157. package/dist/features/brands/server.js +7 -0
  158. package/dist/features/cart/actions/cart-actions.js +2 -2
  159. package/dist/features/cart/components/CartDrawer.d.ts +5 -1
  160. package/dist/features/cart/components/CartDrawer.js +3 -3
  161. package/dist/features/cart/hooks/useCartCount.d.ts +3 -2
  162. package/dist/features/cart/hooks/useCartCount.js +4 -2
  163. package/dist/features/cart/hooks/useGuestCartMerge.js +1 -1
  164. package/dist/features/cart/index.d.ts +1 -0
  165. package/dist/features/cart/index.js +1 -0
  166. package/dist/features/cart/repository/cart.repository.d.ts +5 -1
  167. package/dist/features/cart/repository/cart.repository.js +36 -5
  168. package/dist/features/cart/schemas/firestore.d.ts +25 -6
  169. package/dist/features/cart/schemas/firestore.js +2 -2
  170. package/dist/features/cart/schemas/index.d.ts +9 -9
  171. package/dist/features/cart/schemas/index.js +1 -1
  172. package/dist/features/cart/types/index.d.ts +1 -1
  173. package/dist/features/cart/utils/pending-ops.d.ts +33 -0
  174. package/dist/features/cart/utils/pending-ops.js +102 -0
  175. package/dist/features/categories/components/BrandDetailPageView.d.ts +4 -0
  176. package/dist/features/categories/components/BrandDetailPageView.js +54 -0
  177. package/dist/features/categories/components/BrandDetailTabs.d.ts +10 -0
  178. package/dist/features/categories/components/BrandDetailTabs.js +22 -0
  179. package/dist/features/categories/components/CategoriesIndexListing.d.ts +3 -1
  180. package/dist/features/categories/components/CategoriesIndexListing.js +83 -7
  181. package/dist/features/categories/components/CategoryDetailPageView.js +42 -21
  182. package/dist/features/categories/components/CategoryDetailTabs.d.ts +7 -1
  183. package/dist/features/categories/components/CategoryDetailTabs.js +12 -7
  184. package/dist/features/categories/components/CategoryFilters.js +1 -1
  185. package/dist/features/categories/components/CategoryForm.js +10 -4
  186. package/dist/features/categories/components/CategoryProductsListing.d.ts +4 -1
  187. package/dist/features/categories/components/CategoryProductsListing.js +34 -5
  188. package/dist/features/categories/components/ConcernCard.js +1 -1
  189. package/dist/features/categories/hooks/useCategories.js +2 -0
  190. package/dist/features/categories/repository/categories.repository.js +2 -3
  191. package/dist/features/categories/schemas/firestore.d.ts +23 -2
  192. package/dist/features/categories/schemas/firestore.js +8 -0
  193. package/dist/features/categories/schemas/index.d.ts +8 -8
  194. package/dist/features/categories/types/index.d.ts +1 -0
  195. package/dist/features/collections/schemas/index.d.ts +2 -2
  196. package/dist/features/events/components/AdminEventEditorView.js +2 -2
  197. package/dist/features/events/components/AdminEventsView.d.ts +4 -1
  198. package/dist/features/events/components/AdminEventsView.js +64 -38
  199. package/dist/features/events/components/EventCard.js +1 -1
  200. package/dist/features/events/components/EventFilters.js +1 -1
  201. package/dist/features/events/components/EventPollWidget.d.ts +12 -0
  202. package/dist/features/events/components/EventPollWidget.js +62 -0
  203. package/dist/features/events/components/EventsIndexListing.js +57 -5
  204. package/dist/features/events/components/EventsListPageView.js +1 -1
  205. package/dist/features/events/components/index.d.ts +2 -0
  206. package/dist/features/events/components/index.js +1 -0
  207. package/dist/features/events/hooks/useEvents.d.ts +1 -0
  208. package/dist/features/events/hooks/useEvents.js +1 -0
  209. package/dist/features/events/repository/events.repository.js +3 -0
  210. package/dist/features/events/schemas/firestore.d.ts +1 -0
  211. package/dist/features/events/schemas/index.d.ts +44 -0
  212. package/dist/features/events/types/index.d.ts +2 -0
  213. package/dist/features/faq/actions/faq-actions.d.ts +16 -16
  214. package/dist/features/faq/hooks/useFaqList.js +1 -1
  215. package/dist/features/faq/schemas/firestore.d.ts +2 -2
  216. package/dist/features/faq/schemas/firestore.js +2 -1
  217. package/dist/features/faq/schemas/index.d.ts +4 -4
  218. package/dist/features/filters/FilterFacetSection.d.ts +1 -0
  219. package/dist/features/filters/FilterFacetSection.js +13 -1
  220. package/dist/features/filters/SwitchFilter.js +1 -1
  221. package/dist/features/grouped/schemas/firestore.d.ts +32 -0
  222. package/dist/features/grouped/schemas/firestore.js +19 -0
  223. package/dist/features/homepage/components/AdSlot.d.ts +1 -3
  224. package/dist/features/homepage/components/AdSlot.js +15 -14
  225. package/dist/features/homepage/components/BlogArticlesSection.d.ts +3 -1
  226. package/dist/features/homepage/components/BlogArticlesSection.js +2 -2
  227. package/dist/features/homepage/components/BrandsSection.d.ts +3 -1
  228. package/dist/features/homepage/components/BrandsSection.js +4 -3
  229. package/dist/features/homepage/components/CustomCardsSection.d.ts +3 -0
  230. package/dist/features/homepage/components/CustomCardsSection.js +76 -0
  231. package/dist/features/homepage/components/EventsSection.d.ts +3 -1
  232. package/dist/features/homepage/components/EventsSection.js +2 -2
  233. package/dist/features/homepage/components/FeaturedAuctionsSection.d.ts +4 -1
  234. package/dist/features/homepage/components/FeaturedAuctionsSection.js +2 -2
  235. package/dist/features/homepage/components/FeaturedPreOrdersSection.d.ts +4 -1
  236. package/dist/features/homepage/components/FeaturedPreOrdersSection.js +2 -2
  237. package/dist/features/homepage/components/FeaturedProductsSection.d.ts +4 -1
  238. package/dist/features/homepage/components/FeaturedProductsSection.js +8 -3
  239. package/dist/features/homepage/components/FeaturedStoresSection.d.ts +3 -1
  240. package/dist/features/homepage/components/FeaturedStoresSection.js +2 -2
  241. package/dist/features/homepage/components/GoogleReviewsSection.d.ts +3 -0
  242. package/dist/features/homepage/components/GoogleReviewsSection.js +65 -0
  243. package/dist/features/homepage/components/HeroCarousel.js +128 -84
  244. package/dist/features/homepage/components/MarketplaceHomepageView.d.ts +2 -20
  245. package/dist/features/homepage/components/MarketplaceHomepageView.js +73 -230
  246. package/dist/features/homepage/components/SectionCarousel.d.ts +1 -1
  247. package/dist/features/homepage/components/SectionCarousel.js +2 -0
  248. package/dist/features/homepage/components/ShopByCategorySection.d.ts +3 -1
  249. package/dist/features/homepage/components/ShopByCategorySection.js +8 -4
  250. package/dist/features/homepage/components/SocialFeedSection.d.ts +3 -0
  251. package/dist/features/homepage/components/SocialFeedSection.js +86 -0
  252. package/dist/features/homepage/components/SocialPostCard.d.ts +7 -0
  253. package/dist/features/homepage/components/SocialPostCard.js +39 -0
  254. package/dist/features/homepage/components/StatsCounterSection.js +1 -1
  255. package/dist/features/homepage/components/WelcomeSection.js +1 -1
  256. package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
  257. package/dist/features/homepage/hooks/useActiveAd.d.ts +23 -0
  258. package/dist/features/homepage/hooks/useActiveAd.js +20 -0
  259. package/dist/features/homepage/hooks/useBlogArticles.d.ts +1 -0
  260. package/dist/features/homepage/hooks/useBlogArticles.js +10 -0
  261. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +4 -1
  262. package/dist/features/homepage/hooks/useFeaturedAuctions.js +8 -4
  263. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +4 -1
  264. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +8 -4
  265. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +1 -0
  266. package/dist/features/homepage/hooks/useFeaturedProducts.js +6 -3
  267. package/dist/features/homepage/hooks/useFeaturedStores.d.ts +3 -1
  268. package/dist/features/homepage/hooks/useFeaturedStores.js +2 -1
  269. package/dist/features/homepage/hooks/useHomepageEvents.d.ts +3 -1
  270. package/dist/features/homepage/hooks/useHomepageEvents.js +2 -1
  271. package/dist/features/homepage/hooks/useTopBrands.d.ts +3 -1
  272. package/dist/features/homepage/hooks/useTopBrands.js +2 -1
  273. package/dist/features/homepage/index.d.ts +2 -0
  274. package/dist/features/homepage/index.js +1 -0
  275. package/dist/features/homepage/lib/google-reviews-fetcher.d.ts +14 -0
  276. package/dist/features/homepage/lib/google-reviews-fetcher.js +27 -0
  277. package/dist/features/homepage/lib/live-stats.d.ts +14 -0
  278. package/dist/features/homepage/lib/live-stats.js +62 -0
  279. package/dist/features/homepage/lib/section-defaults.d.ts +11 -0
  280. package/dist/features/homepage/lib/section-defaults.js +45 -0
  281. package/dist/features/homepage/lib/section-helpers.d.ts +5 -0
  282. package/dist/features/homepage/lib/section-helpers.js +25 -0
  283. package/dist/features/homepage/lib/section-renderer.d.ts +33 -0
  284. package/dist/features/homepage/lib/section-renderer.js +164 -0
  285. package/dist/features/homepage/lib/social-feed-fetcher.d.ts +5 -0
  286. package/dist/features/homepage/lib/social-feed-fetcher.js +193 -0
  287. package/dist/features/homepage/schemas/firestore.d.ts +180 -29
  288. package/dist/features/homepage/schemas/firestore.js +5 -0
  289. package/dist/features/homepage/types/index.d.ts +48 -19
  290. package/dist/features/layout/AppLayoutShell.d.ts +6 -1
  291. package/dist/features/layout/AppLayoutShell.js +25 -9
  292. package/dist/features/layout/BottomActions.js +1 -1
  293. package/dist/features/layout/BottomNavbar.d.ts +15 -1
  294. package/dist/features/layout/BottomNavbar.js +8 -2
  295. package/dist/features/layout/FooterLayout.d.ts +7 -1
  296. package/dist/features/layout/FooterLayout.js +3 -3
  297. package/dist/features/layout/ListingLayout.js +2 -2
  298. package/dist/features/layout/MainNavbar.d.ts +6 -14
  299. package/dist/features/layout/MainNavbar.js +4 -16
  300. package/dist/features/layout/NavItem.js +1 -1
  301. package/dist/features/layout/NavbarLayout.d.ts +3 -1
  302. package/dist/features/layout/NavbarLayout.js +5 -5
  303. package/dist/features/layout/TitleBar.d.ts +4 -2
  304. package/dist/features/layout/TitleBar.js +5 -3
  305. package/dist/features/layout/TitleBarLayout.d.ts +3 -1
  306. package/dist/features/layout/TitleBarLayout.js +2 -2
  307. package/dist/features/layout/index.d.ts +1 -1
  308. package/dist/features/media/MediaPickerModal.d.ts +30 -0
  309. package/dist/features/media/MediaPickerModal.js +72 -0
  310. package/dist/features/media/index.d.ts +3 -1
  311. package/dist/features/media/index.js +1 -0
  312. package/dist/features/media/types/index.d.ts +12 -0
  313. package/dist/features/media/types/index.js +4 -2
  314. package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
  315. package/dist/features/media/upload/MediaUploadField.js +56 -3
  316. package/dist/features/messages/schemas/firestore.d.ts +36 -0
  317. package/dist/features/messages/schemas/firestore.js +16 -0
  318. package/dist/features/orders/repository/orders.repository.d.ts +2 -2
  319. package/dist/features/orders/repository/orders.repository.js +2 -2
  320. package/dist/features/orders/schemas/firestore.d.ts +17 -4
  321. package/dist/features/orders/schemas/firestore.js +2 -2
  322. package/dist/features/orders/schemas/index.d.ts +18 -18
  323. package/dist/features/orders/schemas/index.js +3 -3
  324. package/dist/features/orders/types/index.d.ts +1 -1
  325. package/dist/features/orders/utils/order-splitter.d.ts +1 -1
  326. package/dist/features/orders/utils/order-splitter.js +2 -2
  327. package/dist/features/payments/repository/payout.repository.d.ts +4 -4
  328. package/dist/features/payments/repository/payout.repository.js +7 -7
  329. package/dist/features/payments/schemas/firestore.d.ts +6 -6
  330. package/dist/features/payments/schemas/firestore.js +6 -6
  331. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +11 -10
  332. package/dist/features/pre-orders/components/PreOrderActionsClient.d.ts +11 -0
  333. package/dist/features/pre-orders/components/PreOrderActionsClient.js +28 -0
  334. package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +2 -1
  335. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +27 -9
  336. package/dist/features/pre-orders/components/PreOrderFilters.d.ts +3 -1
  337. package/dist/features/pre-orders/components/PreOrderFilters.js +9 -6
  338. package/dist/features/pre-orders/components/PreOrdersIndexListing.d.ts +3 -1
  339. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +132 -36
  340. package/dist/features/pre-orders/components/PreOrdersListView.js +3 -3
  341. package/dist/features/pre-orders/components/PreorderCard.js +1 -1
  342. package/dist/features/pre-orders/schemas/index.d.ts +10 -0
  343. package/dist/features/products/actions/product-actions.d.ts +2 -2
  344. package/dist/features/products/actions/product-actions.js +5 -5
  345. package/dist/features/products/api/[id]/route.js +5 -2
  346. package/dist/features/products/api/route.js +10 -14
  347. package/dist/features/products/columns/productTableColumns.js +2 -2
  348. package/dist/features/products/components/AuctionDetailView.d.ts +2 -1
  349. package/dist/features/products/components/AuctionDetailView.js +2 -2
  350. package/dist/features/products/components/AuctionsIndexListing.d.ts +3 -1
  351. package/dist/features/products/components/AuctionsIndexListing.js +93 -31
  352. package/dist/features/products/components/BidHistory.d.ts +2 -1
  353. package/dist/features/products/components/BidHistory.js +18 -2
  354. package/dist/features/products/components/MakeOfferButton.d.ts +10 -0
  355. package/dist/features/products/components/MakeOfferButton.js +68 -0
  356. package/dist/features/products/components/ProductDetailPageView.d.ts +11 -1
  357. package/dist/features/products/components/ProductDetailPageView.js +27 -8
  358. package/dist/features/products/components/ProductFilters.d.ts +7 -1
  359. package/dist/features/products/components/ProductFilters.js +4 -2
  360. package/dist/features/products/components/ProductForm.d.ts +19 -1
  361. package/dist/features/products/components/ProductForm.js +24 -6
  362. package/dist/features/products/components/ProductGrid.d.ts +10 -2
  363. package/dist/features/products/components/ProductGrid.js +76 -29
  364. package/dist/features/products/components/ProductsIndexListing.js +131 -45
  365. package/dist/features/products/components/RelatedProductsCarousel.js +1 -1
  366. package/dist/features/products/components/ShareButton.d.ts +7 -0
  367. package/dist/features/products/components/ShareButton.js +22 -0
  368. package/dist/features/products/components/index.d.ts +2 -0
  369. package/dist/features/products/components/index.js +1 -0
  370. package/dist/features/products/hooks/useProducts.d.ts +7 -0
  371. package/dist/features/products/hooks/useProducts.js +6 -4
  372. package/dist/features/products/repository/products.repository.d.ts +4 -8
  373. package/dist/features/products/repository/products.repository.js +17 -50
  374. package/dist/features/products/schemas/firestore.d.ts +11 -9
  375. package/dist/features/products/schemas/firestore.js +11 -3
  376. package/dist/features/products/schemas/index.d.ts +51 -50
  377. package/dist/features/products/schemas/index.js +2 -5
  378. package/dist/features/products/types/index.d.ts +13 -5
  379. package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
  380. package/dist/features/promotions/actions/coupon-actions.js +1 -1
  381. package/dist/features/promotions/actions/seller-coupon-actions.js +11 -6
  382. package/dist/features/promotions/api/route.js +3 -3
  383. package/dist/features/promotions/components/CouponCard.js +16 -7
  384. package/dist/features/promotions/components/CouponsIndexListing.js +3 -9
  385. package/dist/features/promotions/hooks/useCouponValidate.d.ts +1 -1
  386. package/dist/features/promotions/hooks/usePromotions.js +2 -2
  387. package/dist/features/promotions/repository/coupons.repository.d.ts +21 -15
  388. package/dist/features/promotions/repository/coupons.repository.js +97 -125
  389. package/dist/features/promotions/schemas/firestore.d.ts +31 -2
  390. package/dist/features/promotions/schemas/firestore.js +29 -0
  391. package/dist/features/promotions/schemas/index.d.ts +9 -12
  392. package/dist/features/promotions/schemas/index.js +1 -2
  393. package/dist/features/promotions/types/index.d.ts +1 -2
  394. package/dist/features/reviews/actions/review-actions.js +3 -2
  395. package/dist/features/reviews/components/ReviewDetailPageView.js +5 -9
  396. package/dist/features/reviews/components/ReviewFilters.js +1 -1
  397. package/dist/features/reviews/components/ReviewsIndexListing.js +58 -7
  398. package/dist/features/reviews/components/ReviewsList.js +2 -2
  399. package/dist/features/reviews/hooks/useReviews.d.ts +1 -0
  400. package/dist/features/reviews/hooks/useReviews.js +2 -1
  401. package/dist/features/reviews/repository/reviews.repository.d.ts +9 -4
  402. package/dist/features/reviews/repository/reviews.repository.js +18 -7
  403. package/dist/features/reviews/schemas/firestore.d.ts +5 -2
  404. package/dist/features/reviews/schemas/firestore.js +1 -0
  405. package/dist/features/reviews/schemas/index.d.ts +19 -16
  406. package/dist/features/reviews/schemas/index.js +3 -2
  407. package/dist/features/reviews/types/index.d.ts +3 -2
  408. package/dist/features/scams/actions/scam-actions.d.ts +29 -0
  409. package/dist/features/scams/actions/scam-actions.js +62 -0
  410. package/dist/features/scams/components/ScamProfileView.d.ts +10 -0
  411. package/dist/features/scams/components/ScamProfileView.js +51 -0
  412. package/dist/features/scams/components/ScamRegistryView.d.ts +6 -0
  413. package/dist/features/scams/components/ScamRegistryView.js +41 -0
  414. package/dist/features/scams/components/index.d.ts +4 -0
  415. package/dist/features/scams/components/index.js +2 -0
  416. package/dist/features/scams/constants/scam-types.d.ts +38 -0
  417. package/dist/features/scams/constants/scam-types.js +443 -0
  418. package/dist/features/scams/repository/scammer.repository.d.ts +67 -0
  419. package/dist/features/scams/repository/scammer.repository.js +160 -0
  420. package/dist/features/scams/schemas/firestore.d.ts +362 -0
  421. package/dist/features/scams/schemas/firestore.js +233 -0
  422. package/dist/features/search/components/Search.d.ts +12 -2
  423. package/dist/features/search/components/Search.js +26 -7
  424. package/dist/features/search/components/index.d.ts +1 -1
  425. package/dist/features/search/hooks/useNavSuggestions.d.ts +1 -1
  426. package/dist/features/search/hooks/useNavSuggestions.js +2 -2
  427. package/dist/features/search/schemas/index.d.ts +7 -7
  428. package/dist/features/seller/actions/offer-actions.js +52 -36
  429. package/dist/features/seller/actions/seller-actions.js +19 -13
  430. package/dist/features/seller/api/products/route.js +9 -4
  431. package/dist/features/seller/components/SellerAddressesView.d.ts +3 -12
  432. package/dist/features/seller/components/SellerAddressesView.js +144 -4
  433. package/dist/features/seller/components/SellerAuctionsView.js +58 -5
  434. package/dist/features/seller/components/SellerBidsView.d.ts +4 -0
  435. package/dist/features/seller/components/SellerBidsView.js +131 -0
  436. package/dist/features/seller/components/SellerCouponEditorView.d.ts +19 -0
  437. package/dist/features/seller/components/SellerCouponEditorView.js +67 -0
  438. package/dist/features/seller/components/SellerCouponsView.d.ts +5 -3
  439. package/dist/features/seller/components/SellerCouponsView.js +135 -13
  440. package/dist/features/seller/components/SellerCreateProductView.d.ts +4 -10
  441. package/dist/features/seller/components/SellerCreateProductView.js +4 -3
  442. package/dist/features/seller/components/SellerEditProductView.d.ts +4 -10
  443. package/dist/features/seller/components/SellerEditProductView.js +4 -3
  444. package/dist/features/seller/components/SellerOffersPanel.d.ts +20 -0
  445. package/dist/features/seller/components/SellerOffersPanel.js +138 -0
  446. package/dist/features/seller/components/SellerOffersView.js +56 -5
  447. package/dist/features/seller/components/SellerOrdersView.d.ts +2 -1
  448. package/dist/features/seller/components/SellerOrdersView.js +185 -16
  449. package/dist/features/seller/components/SellerPayoutRequestView.d.ts +7 -0
  450. package/dist/features/seller/components/SellerPayoutRequestView.js +63 -0
  451. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +3 -10
  452. package/dist/features/seller/components/SellerPayoutSettingsView.js +89 -3
  453. package/dist/features/seller/components/SellerPayoutsView.js +56 -5
  454. package/dist/features/seller/components/SellerProductShell.d.ts +68 -0
  455. package/dist/features/seller/components/SellerProductShell.js +179 -0
  456. package/dist/features/seller/components/SellerProductsView.d.ts +2 -3
  457. package/dist/features/seller/components/SellerProductsView.js +194 -18
  458. package/dist/features/seller/components/SellerReviewsView.d.ts +5 -0
  459. package/dist/features/seller/components/SellerReviewsView.js +100 -0
  460. package/dist/features/seller/components/SellerShippingView.d.ts +3 -11
  461. package/dist/features/seller/components/SellerShippingView.js +87 -3
  462. package/dist/features/seller/components/SellerSidebar.d.ts +11 -3
  463. package/dist/features/seller/components/SellerSidebar.js +52 -8
  464. package/dist/features/seller/components/SellerStorefrontView.d.ts +26 -11
  465. package/dist/features/seller/components/SellerStorefrontView.js +45 -7
  466. package/dist/features/seller/components/index.d.ts +16 -2
  467. package/dist/features/seller/components/index.js +7 -0
  468. package/dist/features/seller/hooks/useSellerListingData.d.ts +3 -1
  469. package/dist/features/seller/hooks/useSellerListingData.js +6 -4
  470. package/dist/features/seller/repository/offer.repository.d.ts +3 -3
  471. package/dist/features/seller/repository/offer.repository.js +6 -6
  472. package/dist/features/seller/schemas/firestore.d.ts +7 -7
  473. package/dist/features/seller/schemas/firestore.js +4 -4
  474. package/dist/features/seller/schemas/index.d.ts +16 -16
  475. package/dist/features/shell/FormShell.d.ts +29 -0
  476. package/dist/features/shell/FormShell.js +103 -0
  477. package/dist/features/shell/QuickFormDrawer.d.ts +29 -0
  478. package/dist/features/shell/QuickFormDrawer.js +117 -0
  479. package/dist/features/shell/StepForm.d.ts +44 -0
  480. package/dist/features/shell/StepForm.js +81 -0
  481. package/dist/features/shell/index.d.ts +6 -0
  482. package/dist/features/shell/index.js +3 -0
  483. package/dist/features/stores/actions/store-query-actions.js +3 -3
  484. package/dist/features/stores/api/[storeSlug]/auctions/route.js +1 -1
  485. package/dist/features/stores/api/[storeSlug]/products/route.js +1 -1
  486. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  487. package/dist/features/stores/components/InteractiveStoreCard.d.ts +2 -2
  488. package/dist/features/stores/components/InteractiveStoreCard.js +21 -7
  489. package/dist/features/stores/components/StoreAboutView.js +1 -1
  490. package/dist/features/stores/components/StoreAuctionsListing.d.ts +5 -2
  491. package/dist/features/stores/components/StoreAuctionsListing.js +81 -8
  492. package/dist/features/stores/components/StoreAuctionsPageView.js +8 -7
  493. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -0
  494. package/dist/features/stores/components/StoreDetailLayoutView.js +29 -5
  495. package/dist/features/stores/components/StoreHeader.js +2 -1
  496. package/dist/features/stores/components/StorePreOrdersListing.d.ts +4 -2
  497. package/dist/features/stores/components/StorePreOrdersListing.js +59 -7
  498. package/dist/features/stores/components/StorePreOrdersPageView.js +8 -7
  499. package/dist/features/stores/components/StoreProductsListing.d.ts +5 -2
  500. package/dist/features/stores/components/StoreProductsListing.js +97 -8
  501. package/dist/features/stores/components/StoreProductsPageView.js +8 -7
  502. package/dist/features/stores/components/StoreReviewsListing.js +2 -2
  503. package/dist/features/stores/components/StoresIndexListing.js +74 -11
  504. package/dist/features/stores/components/StoresListView.js +1 -1
  505. package/dist/features/stores/hooks/useStores.d.ts +1 -0
  506. package/dist/features/stores/hooks/useStores.js +1 -0
  507. package/dist/features/stores/schemas/firestore.d.ts +34 -0
  508. package/dist/features/stores/schemas/index.d.ts +8 -8
  509. package/dist/features/sublisting/schemas/firestore.d.ts +30 -0
  510. package/dist/features/sublisting/schemas/firestore.js +19 -0
  511. package/dist/features/support/schemas/firestore.d.ts +113 -0
  512. package/dist/features/support/schemas/firestore.js +95 -0
  513. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +5 -0
  514. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +143 -0
  515. package/dist/features/whatsapp-bot/components/index.d.ts +2 -0
  516. package/dist/features/whatsapp-bot/components/index.js +1 -0
  517. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +23 -1
  518. package/dist/features/whatsapp-bot/helpers/whatsapp.js +104 -0
  519. package/dist/features/whatsapp-bot/server.d.ts +1 -0
  520. package/dist/features/whatsapp-bot/server.js +1 -0
  521. package/dist/features/whatsapp-bot/types/index.d.ts +49 -0
  522. package/dist/features/wishlist/components/WishlistView.d.ts +0 -10
  523. package/dist/features/wishlist/components/WishlistView.js +13 -6
  524. package/dist/features/wishlist/hooks/useWishlist.js +2 -0
  525. package/dist/features/wishlist/hooks/useWishlistCount.d.ts +11 -3
  526. package/dist/features/wishlist/hooks/useWishlistCount.js +89 -25
  527. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  528. package/dist/features/wishlist/schemas/index.d.ts +2 -2
  529. package/dist/features/wishlist/types/index.d.ts +16 -0
  530. package/dist/http/api-handler.js +8 -1
  531. package/dist/index.d.ts +114 -16
  532. package/dist/index.js +136 -28
  533. package/dist/monitoring/server-logger.js +9 -3
  534. package/dist/next/routing/route-map.d.ts +120 -6
  535. package/dist/next/routing/route-map.js +53 -2
  536. package/dist/providers/db-firebase/realtime.d.ts +1 -1
  537. package/dist/react/contexts/SessionContext.js +17 -26
  538. package/dist/react/hooks/useBulkSelection.d.ts +7 -24
  539. package/dist/react/hooks/useBulkSelection.js +27 -34
  540. package/dist/react/hooks/useLongPress.d.ts +3 -16
  541. package/dist/react/hooks/useLongPress.js +6 -25
  542. package/dist/react/index.d.ts +1 -0
  543. package/dist/react/index.js +2 -0
  544. package/dist/repositories/index.d.ts +3 -0
  545. package/dist/repositories/index.js +2 -0
  546. package/dist/seed/actions/demo-seed-actions.d.ts +2 -2
  547. package/dist/seed/actions/demo-seed-actions.js +1 -1
  548. package/dist/seed/anime-figures-seed-data.d.ts +8 -0
  549. package/dist/seed/anime-figures-seed-data.js +1033 -0
  550. package/dist/seed/beyblade-seed-data.js +206 -24
  551. package/dist/seed/bids-seed-data.d.ts +4 -10
  552. package/dist/seed/bids-seed-data.js +365 -238
  553. package/dist/seed/blog-posts-seed-data.d.ts +3 -2
  554. package/dist/seed/blog-posts-seed-data.js +250 -511
  555. package/dist/seed/brands-seed-data.d.ts +7 -0
  556. package/dist/seed/brands-seed-data.js +410 -0
  557. package/dist/seed/carousel-slides-seed-data.d.ts +3 -2
  558. package/dist/seed/carousel-slides-seed-data.js +177 -216
  559. package/dist/seed/cart-seed-data.d.ts +9 -9
  560. package/dist/seed/cart-seed-data.js +73 -73
  561. package/dist/seed/categories-seed-data.d.ts +4 -2
  562. package/dist/seed/categories-seed-data.js +720 -879
  563. package/dist/seed/conversations-seed-data.d.ts +8 -0
  564. package/dist/seed/conversations-seed-data.js +388 -0
  565. package/dist/seed/cosplay-accessories-seed-data.d.ts +8 -0
  566. package/dist/seed/cosplay-accessories-seed-data.js +647 -0
  567. package/dist/seed/coupon-usage-seed-data.d.ts +25 -0
  568. package/dist/seed/coupon-usage-seed-data.js +69 -0
  569. package/dist/seed/coupons-seed-data.d.ts +6 -3
  570. package/dist/seed/coupons-seed-data.js +375 -3
  571. package/dist/seed/events-seed-data.d.ts +4 -2
  572. package/dist/seed/events-seed-data.js +128 -430
  573. package/dist/seed/factories/cart.factory.d.ts +0 -1
  574. package/dist/seed/factories/cart.factory.js +2 -2
  575. package/dist/seed/faq-seed-data.d.ts +11 -18
  576. package/dist/seed/faq-seed-data.js +786 -1817
  577. package/dist/seed/grouped-listings-seed-data.d.ts +8 -0
  578. package/dist/seed/grouped-listings-seed-data.js +201 -0
  579. package/dist/seed/homepage-sections-seed-data.d.ts +3 -13
  580. package/dist/seed/homepage-sections-seed-data.js +228 -252
  581. package/dist/seed/hot-wheels-seed-data.js +285 -38
  582. package/dist/seed/index.d.ts +12 -11
  583. package/dist/seed/index.js +10 -12
  584. package/dist/seed/letitrip-official-seed-data.d.ts +8 -0
  585. package/dist/seed/letitrip-official-seed-data.js +399 -0
  586. package/dist/seed/manifest.d.ts +15 -0
  587. package/dist/seed/manifest.js +140 -0
  588. package/dist/seed/notifications-seed-data.d.ts +4 -2
  589. package/dist/seed/notifications-seed-data.js +117 -440
  590. package/dist/seed/orders-seed-data.d.ts +4 -2
  591. package/dist/seed/orders-seed-data.js +1090 -521
  592. package/dist/seed/payouts-seed-data.d.ts +4 -2
  593. package/dist/seed/payouts-seed-data.js +522 -145
  594. package/dist/seed/pokemon-carousel-slides-seed-data.js +6 -1
  595. package/dist/seed/pokemon-categories-seed-data.js +81 -81
  596. package/dist/seed/pokemon-homepage-sections-seed-data.d.ts +1 -1
  597. package/dist/seed/pokemon-homepage-sections-seed-data.js +116 -23
  598. package/dist/seed/pokemon-products-seed-data.d.ts +1 -1
  599. package/dist/seed/pokemon-products-seed-data.js +83 -73
  600. package/dist/seed/pokemon-seed-bundle.d.ts +5 -1
  601. package/dist/seed/pokemon-seed-bundle.js +21 -2
  602. package/dist/seed/pokemon-stores-seed-data.js +85 -9
  603. package/dist/seed/pokemon-users-seed-data.js +107 -8
  604. package/dist/seed/products-auctions-seed-data.d.ts +10 -0
  605. package/dist/seed/products-auctions-seed-data.js +689 -0
  606. package/dist/seed/products-preorders-seed-data.d.ts +9 -0
  607. package/dist/seed/products-preorders-seed-data.js +483 -0
  608. package/dist/seed/products-seed-data.js +34 -13
  609. package/dist/seed/products-standard-seed-data.d.ts +8 -0
  610. package/dist/seed/products-standard-seed-data.js +4179 -0
  611. package/dist/seed/retro-gaming-seed-data.d.ts +8 -0
  612. package/dist/seed/retro-gaming-seed-data.js +801 -0
  613. package/dist/seed/reviews-seed-data.d.ts +4 -17
  614. package/dist/seed/reviews-seed-data.js +1043 -515
  615. package/dist/seed/scammers-seed-data.d.ts +17 -0
  616. package/dist/seed/scammers-seed-data.js +118 -0
  617. package/dist/seed/site-settings-seed-data.js +25 -2
  618. package/dist/seed/store-addresses-seed-data.js +188 -84
  619. package/dist/seed/stores-seed-data.d.ts +3 -9
  620. package/dist/seed/stores-seed-data.js +212 -102
  621. package/dist/seed/sublisting-categories-seed-data.d.ts +7 -0
  622. package/dist/seed/sublisting-categories-seed-data.js +315 -0
  623. package/dist/seed/transformers-seed-data.js +34 -14
  624. package/dist/seed/users-seed-data.d.ts +3 -2
  625. package/dist/seed/users-seed-data.js +531 -440
  626. package/dist/seed/wishlists-seed-data.js +13 -13
  627. package/dist/server.d.ts +9 -2
  628. package/dist/server.js +12 -4
  629. package/dist/tokens/tokens.css +76 -31
  630. package/dist/ui/components/Avatar.style.css +10 -12
  631. package/dist/ui/components/BaseListingCard.d.ts +8 -3
  632. package/dist/ui/components/BaseListingCard.js +17 -6
  633. package/dist/ui/components/BaseListingCard.style.css +3 -1
  634. package/dist/ui/components/BulkActionsBar.d.ts +16 -0
  635. package/dist/ui/components/BulkActionsBar.js +22 -0
  636. package/dist/ui/components/Button.style.css +23 -23
  637. package/dist/ui/components/Card.style.css +60 -62
  638. package/dist/ui/components/Checkbox.style.css +19 -21
  639. package/dist/ui/components/DashboardStatsCard.style.css +12 -14
  640. package/dist/ui/components/Drawer.style.css +18 -14
  641. package/dist/ui/components/Dropdown.style.css +25 -27
  642. package/dist/ui/components/EmptyState.style.css +2 -4
  643. package/dist/ui/components/HorizontalScroller.d.ts +3 -1
  644. package/dist/ui/components/HorizontalScroller.js +116 -21
  645. package/dist/ui/components/HorizontalScroller.style.css +2 -2
  646. package/dist/ui/components/ImageLightbox.d.ts +0 -9
  647. package/dist/ui/components/ImageLightbox.js +43 -9
  648. package/dist/ui/components/InlineCreateSelect.d.ts +38 -0
  649. package/dist/ui/components/InlineCreateSelect.js +70 -0
  650. package/dist/ui/components/ListingLayout.style.css +41 -77
  651. package/dist/ui/components/ListingToolbar.d.ts +54 -0
  652. package/dist/ui/components/ListingToolbar.js +34 -0
  653. package/dist/ui/components/Modal.style.css +14 -10
  654. package/dist/ui/components/PageLoader.d.ts +11 -0
  655. package/dist/ui/components/PageLoader.js +21 -0
  656. package/dist/ui/components/Radio.style.css +34 -36
  657. package/dist/ui/components/RichTextEditor.js +1 -1
  658. package/dist/ui/components/RowActionMenu.d.ts +1 -0
  659. package/dist/ui/components/RowActionMenu.js +4 -2
  660. package/dist/ui/components/SectionTabs.js +1 -1
  661. package/dist/ui/components/SectionTabs.style.css +1 -0
  662. package/dist/ui/components/SideModal.style.css +4 -8
  663. package/dist/ui/components/Slider.style.css +2 -4
  664. package/dist/ui/components/Tabs.style.css +8 -10
  665. package/dist/ui/components/Toast.style.css +22 -24
  666. package/dist/ui/components/Toggle.style.css +11 -13
  667. package/dist/ui/index.d.ts +9 -0
  668. package/dist/ui/index.js +5 -0
  669. package/dist/ui/rich-text/RichText.js +2 -1
  670. package/dist/ui/rich-text/RichText.style.css +292 -5
  671. package/dist/ui/rich-text/RichTextRenderer.d.ts +15 -0
  672. package/dist/ui/rich-text/RichTextRenderer.js +15 -0
  673. package/dist/utils/id-generators.d.ts +10 -0
  674. package/dist/utils/id-generators.js +12 -0
  675. package/dist/validation/schemas.d.ts +9 -9
  676. package/package.json +5 -1
  677. package/README.md +0 -116
@@ -85,32 +85,42 @@ export declare const eventItemSchema: z.ZodObject<{
85
85
  type: z.ZodEnum<["image", "video", "file"]>;
86
86
  alt: z.ZodOptional<z.ZodString>;
87
87
  thumbnailUrl: z.ZodOptional<z.ZodString>;
88
+ source: z.ZodOptional<z.ZodEnum<["upload", "youtube", "external"]>>;
89
+ youtubeId: z.ZodOptional<z.ZodString>;
88
90
  }, "strip", z.ZodTypeAny, {
89
91
  url: string;
90
92
  type: "video" | "image" | "file";
93
+ source?: "external" | "upload" | "youtube" | undefined;
91
94
  alt?: string | undefined;
92
95
  thumbnailUrl?: string | undefined;
96
+ youtubeId?: string | undefined;
93
97
  }, {
94
98
  url: string;
95
99
  type: "video" | "image" | "file";
100
+ source?: "external" | "upload" | "youtube" | undefined;
96
101
  alt?: string | undefined;
97
102
  thumbnailUrl?: string | undefined;
103
+ youtubeId?: string | undefined;
98
104
  }>, z.ZodEffects<z.ZodString, {
99
105
  url: string;
100
106
  type: "image";
101
107
  }, string>]>>>, {
102
108
  url: string;
103
109
  type: "video" | "image" | "file";
110
+ source?: "external" | "upload" | "youtube" | undefined;
104
111
  alt?: string | undefined;
105
112
  thumbnailUrl?: string | undefined;
113
+ youtubeId?: string | undefined;
106
114
  } | {
107
115
  url: string;
108
116
  type: "image";
109
117
  } | null, string | {
110
118
  url: string;
111
119
  type: "video" | "image" | "file";
120
+ source?: "external" | "upload" | "youtube" | undefined;
112
121
  alt?: string | undefined;
113
122
  thumbnailUrl?: string | undefined;
123
+ youtubeId?: string | undefined;
114
124
  } | null | undefined>;
115
125
  coverImageUrl: z.ZodOptional<z.ZodString>;
116
126
  eventImages: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -118,48 +128,66 @@ export declare const eventItemSchema: z.ZodObject<{
118
128
  type: z.ZodEnum<["image", "video", "file"]>;
119
129
  alt: z.ZodOptional<z.ZodString>;
120
130
  thumbnailUrl: z.ZodOptional<z.ZodString>;
131
+ source: z.ZodOptional<z.ZodEnum<["upload", "youtube", "external"]>>;
132
+ youtubeId: z.ZodOptional<z.ZodString>;
121
133
  }, "strip", z.ZodTypeAny, {
122
134
  url: string;
123
135
  type: "video" | "image" | "file";
136
+ source?: "external" | "upload" | "youtube" | undefined;
124
137
  alt?: string | undefined;
125
138
  thumbnailUrl?: string | undefined;
139
+ youtubeId?: string | undefined;
126
140
  }, {
127
141
  url: string;
128
142
  type: "video" | "image" | "file";
143
+ source?: "external" | "upload" | "youtube" | undefined;
129
144
  alt?: string | undefined;
130
145
  thumbnailUrl?: string | undefined;
146
+ youtubeId?: string | undefined;
131
147
  }>, "many">>>;
132
148
  winnerImages: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
133
149
  url: z.ZodString;
134
150
  type: z.ZodEnum<["image", "video", "file"]>;
135
151
  alt: z.ZodOptional<z.ZodString>;
136
152
  thumbnailUrl: z.ZodOptional<z.ZodString>;
153
+ source: z.ZodOptional<z.ZodEnum<["upload", "youtube", "external"]>>;
154
+ youtubeId: z.ZodOptional<z.ZodString>;
137
155
  }, "strip", z.ZodTypeAny, {
138
156
  url: string;
139
157
  type: "video" | "image" | "file";
158
+ source?: "external" | "upload" | "youtube" | undefined;
140
159
  alt?: string | undefined;
141
160
  thumbnailUrl?: string | undefined;
161
+ youtubeId?: string | undefined;
142
162
  }, {
143
163
  url: string;
144
164
  type: "video" | "image" | "file";
165
+ source?: "external" | "upload" | "youtube" | undefined;
145
166
  alt?: string | undefined;
146
167
  thumbnailUrl?: string | undefined;
168
+ youtubeId?: string | undefined;
147
169
  }>, "many">>>;
148
170
  additionalImages: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
149
171
  url: z.ZodString;
150
172
  type: z.ZodEnum<["image", "video", "file"]>;
151
173
  alt: z.ZodOptional<z.ZodString>;
152
174
  thumbnailUrl: z.ZodOptional<z.ZodString>;
175
+ source: z.ZodOptional<z.ZodEnum<["upload", "youtube", "external"]>>;
176
+ youtubeId: z.ZodOptional<z.ZodString>;
153
177
  }, "strip", z.ZodTypeAny, {
154
178
  url: string;
155
179
  type: "video" | "image" | "file";
180
+ source?: "external" | "upload" | "youtube" | undefined;
156
181
  alt?: string | undefined;
157
182
  thumbnailUrl?: string | undefined;
183
+ youtubeId?: string | undefined;
158
184
  }, {
159
185
  url: string;
160
186
  type: "video" | "image" | "file";
187
+ source?: "external" | "upload" | "youtube" | undefined;
161
188
  alt?: string | undefined;
162
189
  thumbnailUrl?: string | undefined;
190
+ youtubeId?: string | undefined;
163
191
  }>, "many">>>;
164
192
  saleConfig: z.ZodOptional<z.ZodObject<{
165
193
  discountPercent: z.ZodNumber;
@@ -252,8 +280,10 @@ export declare const eventItemSchema: z.ZodObject<{
252
280
  coverImage: {
253
281
  url: string;
254
282
  type: "video" | "image" | "file";
283
+ source?: "external" | "upload" | "youtube" | undefined;
255
284
  alt?: string | undefined;
256
285
  thumbnailUrl?: string | undefined;
286
+ youtubeId?: string | undefined;
257
287
  } | {
258
288
  url: string;
259
289
  type: "image";
@@ -261,20 +291,26 @@ export declare const eventItemSchema: z.ZodObject<{
261
291
  eventImages: {
262
292
  url: string;
263
293
  type: "video" | "image" | "file";
294
+ source?: "external" | "upload" | "youtube" | undefined;
264
295
  alt?: string | undefined;
265
296
  thumbnailUrl?: string | undefined;
297
+ youtubeId?: string | undefined;
266
298
  }[];
267
299
  winnerImages: {
268
300
  url: string;
269
301
  type: "video" | "image" | "file";
302
+ source?: "external" | "upload" | "youtube" | undefined;
270
303
  alt?: string | undefined;
271
304
  thumbnailUrl?: string | undefined;
305
+ youtubeId?: string | undefined;
272
306
  }[];
273
307
  additionalImages: {
274
308
  url: string;
275
309
  type: "video" | "image" | "file";
310
+ source?: "external" | "upload" | "youtube" | undefined;
276
311
  alt?: string | undefined;
277
312
  thumbnailUrl?: string | undefined;
313
+ youtubeId?: string | undefined;
278
314
  }[];
279
315
  createdBy: string;
280
316
  coverImageUrl?: string | undefined;
@@ -317,26 +353,34 @@ export declare const eventItemSchema: z.ZodObject<{
317
353
  coverImage?: string | {
318
354
  url: string;
319
355
  type: "video" | "image" | "file";
356
+ source?: "external" | "upload" | "youtube" | undefined;
320
357
  alt?: string | undefined;
321
358
  thumbnailUrl?: string | undefined;
359
+ youtubeId?: string | undefined;
322
360
  } | null | undefined;
323
361
  eventImages?: {
324
362
  url: string;
325
363
  type: "video" | "image" | "file";
364
+ source?: "external" | "upload" | "youtube" | undefined;
326
365
  alt?: string | undefined;
327
366
  thumbnailUrl?: string | undefined;
367
+ youtubeId?: string | undefined;
328
368
  }[] | undefined;
329
369
  winnerImages?: {
330
370
  url: string;
331
371
  type: "video" | "image" | "file";
372
+ source?: "external" | "upload" | "youtube" | undefined;
332
373
  alt?: string | undefined;
333
374
  thumbnailUrl?: string | undefined;
375
+ youtubeId?: string | undefined;
334
376
  }[] | undefined;
335
377
  additionalImages?: {
336
378
  url: string;
337
379
  type: "video" | "image" | "file";
380
+ source?: "external" | "upload" | "youtube" | undefined;
338
381
  alt?: string | undefined;
339
382
  thumbnailUrl?: string | undefined;
383
+ youtubeId?: string | undefined;
340
384
  }[] | undefined;
341
385
  saleConfig?: {
342
386
  discountPercent: number;
@@ -38,6 +38,7 @@ export interface PollConfig {
38
38
  label: string;
39
39
  }[];
40
40
  resultsVisibility: PollResultsVisibility;
41
+ requireLogin?: boolean;
41
42
  }
42
43
  export interface SurveyConfig {
43
44
  requireLogin: boolean;
@@ -54,6 +55,7 @@ export interface FeedbackConfig {
54
55
  }
55
56
  export interface EventItem {
56
57
  id: string;
58
+ slug?: string;
57
59
  type: EventType;
58
60
  title: string;
59
61
  description: string;
@@ -31,13 +31,13 @@ export declare const faqCreateSchema: z.ZodEffects<z.ZodObject<{
31
31
  isActive: boolean;
32
32
  category: string;
33
33
  question: string;
34
- showOnHomepage: boolean;
35
- showInFooter: boolean;
36
- isPinned: boolean;
37
34
  answer: {
38
35
  text: string;
39
36
  format: "html" | "plain" | "markdown";
40
37
  };
38
+ isPinned: boolean;
39
+ showOnHomepage: boolean;
40
+ showInFooter: boolean;
41
41
  useSiteSettings: boolean;
42
42
  template?: string | undefined;
43
43
  variables?: Record<string, string> | undefined;
@@ -56,9 +56,9 @@ export declare const faqCreateSchema: z.ZodEffects<z.ZodObject<{
56
56
  isActive?: boolean | undefined;
57
57
  variables?: Record<string, string> | undefined;
58
58
  tags?: string[] | undefined;
59
+ isPinned?: boolean | undefined;
59
60
  showOnHomepage?: boolean | undefined;
60
61
  showInFooter?: boolean | undefined;
61
- isPinned?: boolean | undefined;
62
62
  relatedFAQs?: string[] | undefined;
63
63
  useSiteSettings?: boolean | undefined;
64
64
  }>, {
@@ -67,13 +67,13 @@ export declare const faqCreateSchema: z.ZodEffects<z.ZodObject<{
67
67
  isActive: boolean;
68
68
  category: string;
69
69
  question: string;
70
- showOnHomepage: boolean;
71
- showInFooter: boolean;
72
- isPinned: boolean;
73
70
  answer: {
74
71
  text: string;
75
72
  format: "html" | "plain" | "markdown";
76
73
  };
74
+ isPinned: boolean;
75
+ showOnHomepage: boolean;
76
+ showInFooter: boolean;
77
77
  useSiteSettings: boolean;
78
78
  template?: string | undefined;
79
79
  variables?: Record<string, string> | undefined;
@@ -92,9 +92,9 @@ export declare const faqCreateSchema: z.ZodEffects<z.ZodObject<{
92
92
  isActive?: boolean | undefined;
93
93
  variables?: Record<string, string> | undefined;
94
94
  tags?: string[] | undefined;
95
+ isPinned?: boolean | undefined;
95
96
  showOnHomepage?: boolean | undefined;
96
97
  showInFooter?: boolean | undefined;
97
- isPinned?: boolean | undefined;
98
98
  relatedFAQs?: string[] | undefined;
99
99
  useSiteSettings?: boolean | undefined;
100
100
  }>;
@@ -131,13 +131,13 @@ export declare const faqUpdateSchema: z.ZodObject<{
131
131
  variables?: Record<string, string> | undefined;
132
132
  tags?: string[] | undefined;
133
133
  question?: string | undefined;
134
- showOnHomepage?: boolean | undefined;
135
- showInFooter?: boolean | undefined;
136
- isPinned?: boolean | undefined;
137
134
  answer?: {
138
135
  text: string;
139
136
  format: "html" | "plain" | "markdown";
140
137
  } | undefined;
138
+ isPinned?: boolean | undefined;
139
+ showOnHomepage?: boolean | undefined;
140
+ showInFooter?: boolean | undefined;
141
141
  relatedFAQs?: string[] | undefined;
142
142
  useSiteSettings?: boolean | undefined;
143
143
  }, {
@@ -149,13 +149,13 @@ export declare const faqUpdateSchema: z.ZodObject<{
149
149
  variables?: Record<string, string> | undefined;
150
150
  tags?: string[] | undefined;
151
151
  question?: string | undefined;
152
- showOnHomepage?: boolean | undefined;
153
- showInFooter?: boolean | undefined;
154
- isPinned?: boolean | undefined;
155
152
  answer?: {
156
153
  text: string;
157
154
  format?: "html" | "plain" | "markdown" | undefined;
158
155
  } | undefined;
156
+ isPinned?: boolean | undefined;
157
+ showOnHomepage?: boolean | undefined;
158
+ showInFooter?: boolean | undefined;
159
159
  relatedFAQs?: string[] | undefined;
160
160
  useSiteSettings?: boolean | undefined;
161
161
  }>;
@@ -165,11 +165,11 @@ declare const voteSchema: z.ZodObject<{
165
165
  faqId: z.ZodString;
166
166
  vote: z.ZodEnum<["helpful", "not-helpful"]>;
167
167
  }, "strip", z.ZodTypeAny, {
168
- vote: "helpful" | "not-helpful";
169
168
  faqId: string;
170
- }, {
171
169
  vote: "helpful" | "not-helpful";
170
+ }, {
172
171
  faqId: string;
172
+ vote: "helpful" | "not-helpful";
173
173
  }>;
174
174
  export type VoteFaqActionInput = z.infer<typeof voteSchema>;
175
175
  export interface VoteFaqActionResult {
@@ -23,7 +23,7 @@ export function useFaqList(options = {}) {
23
23
  queryFn: () => apiClient.get(`${FAQ_ENDPOINTS.LIST}${queryString ? `?${queryString}` : ""}`),
24
24
  enabled: options.enabled,
25
25
  initialData: options.initialData,
26
- staleTime: 5 * 60 * 1000,
26
+ staleTime: options.initialData !== undefined ? Infinity : 5 * 60 * 1000,
27
27
  });
28
28
  return {
29
29
  ...query,
@@ -33,7 +33,7 @@ export interface FAQDocument {
33
33
  updatedAt: Date;
34
34
  }
35
35
  export declare const FAQS_COLLECTION: "faqs";
36
- export declare const FAQS_INDEXED_FIELDS: readonly ["seo.slug", "category", "order", "showOnHomepage", "showInFooter", "isPinned", "priority", "tags", "searchTokens", "isActive", "stats.helpful", "createdBy", "createdAt"];
36
+ export declare const FAQS_INDEXED_FIELDS: readonly ["slug", "seo.slug", "category", "order", "showOnHomepage", "showInFooter", "isPinned", "priority", "tags", "searchTokens", "isActive", "stats.helpful", "createdBy", "createdAt"];
37
37
  export declare const FAQ_CATEGORY_LABELS: Record<FAQCategory, string>;
38
38
  export declare const DEFAULT_FAQ_DATA: Partial<FAQDocument>;
39
39
  export declare const FAQS_PUBLIC_FIELDS: readonly ["id", "question", "answer", "category", "showOnHomepage", "showInFooter", "isPinned", "order", "priority", "tags", "relatedFAQs", "stats.views", "stats.helpful", "stats.notHelpful", "seo.slug", "seo.metaTitle", "seo.metaDescription", "isActive", "createdAt"];
@@ -45,7 +45,7 @@ export interface FAQWithInterpolatedAnswer extends Omit<FAQDocument, "answer"> {
45
45
  };
46
46
  }
47
47
  export declare const faqQueryHelpers: {
48
- readonly bySlug: (slug: string) => readonly ["seo.slug", "==", string];
48
+ readonly bySlug: (slug: string) => readonly ["slug", "==", string];
49
49
  readonly byCategory: (category: FAQCategory) => readonly ["category", "==", FAQCategory];
50
50
  readonly homepage: () => readonly ["showOnHomepage", "==", true];
51
51
  readonly footer: () => readonly ["showInFooter", "==", true];
@@ -4,6 +4,7 @@
4
4
  import { generateFAQId } from "../../../utils/id-generators";
5
5
  export const FAQS_COLLECTION = "faqs";
6
6
  export const FAQS_INDEXED_FIELDS = [
7
+ "slug",
7
8
  "seo.slug",
8
9
  "category",
9
10
  "order",
@@ -63,7 +64,7 @@ export const FAQS_PUBLIC_FIELDS = [
63
64
  "createdAt",
64
65
  ];
65
66
  export const faqQueryHelpers = {
66
- bySlug: (slug) => ["seo.slug", "==", slug],
67
+ bySlug: (slug) => ["slug", "==", slug],
67
68
  byCategory: (category) => ["category", "==", category],
68
69
  homepage: () => ["showOnHomepage", "==", true],
69
70
  footer: () => ["showInFooter", "==", true],
@@ -103,9 +103,9 @@ export declare const faqSchema: z.ZodObject<{
103
103
  seo?: {
104
104
  slug?: string | undefined;
105
105
  } | undefined;
106
+ isPinned?: boolean | undefined;
106
107
  showOnHomepage?: boolean | undefined;
107
108
  showInFooter?: boolean | undefined;
108
- isPinned?: boolean | undefined;
109
109
  relatedFAQs?: string[] | undefined;
110
110
  }, {
111
111
  id: string;
@@ -129,9 +129,9 @@ export declare const faqSchema: z.ZodObject<{
129
129
  seo?: {
130
130
  slug?: string | undefined;
131
131
  } | undefined;
132
+ isPinned?: boolean | undefined;
132
133
  showOnHomepage?: boolean | undefined;
133
134
  showInFooter?: boolean | undefined;
134
- isPinned?: boolean | undefined;
135
135
  relatedFAQs?: string[] | undefined;
136
136
  }>;
137
137
  /** Base schema for list-query parameters. */
@@ -143,14 +143,14 @@ export declare const faqListParamsSchema: z.ZodObject<{
143
143
  perPage: z.ZodOptional<z.ZodNumber>;
144
144
  }, "strip", z.ZodTypeAny, {
145
145
  q?: string | undefined;
146
- page?: number | undefined;
147
146
  category?: "general" | "orders_payment" | "shipping_delivery" | "returns_refunds" | "product_information" | "account_security" | "technical_support" | undefined;
147
+ page?: number | undefined;
148
148
  perPage?: number | undefined;
149
149
  homepage?: boolean | undefined;
150
150
  }, {
151
151
  q?: string | undefined;
152
- page?: number | undefined;
153
152
  category?: "general" | "orders_payment" | "shipping_delivery" | "returns_refunds" | "product_information" | "account_security" | "technical_support" | undefined;
153
+ page?: number | undefined;
154
154
  perPage?: number | undefined;
155
155
  homepage?: boolean | undefined;
156
156
  }>;
@@ -19,5 +19,6 @@ export interface FilterFacetSectionProps {
19
19
  /**
20
20
  * FilterFacetSection — collapsible checkbox/radio filter section.
21
21
  * Supports single-select and multi-select modes.
22
+ * When searchable, the search input is always visible and typing auto-expands.
22
23
  */
23
24
  export declare function FilterFacetSection({ title, options, selected, onChange, selectionMode, defaultCollapsed, searchable, isOpen: controlledOpen, onToggle, onClear, className, }: FilterFacetSectionProps): import("react/jsx-runtime").JSX.Element;
@@ -6,6 +6,7 @@ import { cn } from "./filterUtils";
6
6
  /**
7
7
  * FilterFacetSection — collapsible checkbox/radio filter section.
8
8
  * Supports single-select and multi-select modes.
9
+ * When searchable, the search input is always visible and typing auto-expands.
9
10
  */
10
11
  export function FilterFacetSection({ title, options, selected, onChange, selectionMode = "multi", defaultCollapsed = true, searchable = false, isOpen: controlledOpen, onToggle, onClear, className = "", }) {
11
12
  const isControlled = controlledOpen !== undefined;
@@ -18,6 +19,13 @@ export function FilterFacetSection({ title, options, selected, onChange, selecti
18
19
  else
19
20
  setInternalCollapsed((c) => !c);
20
21
  };
22
+ // When typing in the search box, auto-expand options
23
+ function handleSearch(value) {
24
+ setSearch(value);
25
+ if (value && internalCollapsed && !isControlled) {
26
+ setInternalCollapsed(false);
27
+ }
28
+ }
21
29
  const filtered = search
22
30
  ? options.filter((o) => o.label.toLowerCase().includes(search.toLowerCase()))
23
31
  : options;
@@ -32,7 +40,11 @@ export function FilterFacetSection({ title, options, selected, onChange, selecti
32
40
  }
33
41
  };
34
42
  const hasValue = selected.length > 0;
35
- return (_jsxs(Div, { className: cn("p-4 border-b border-zinc-200 dark:border-slate-700 last:border-b-0", className), children: [_jsxs(Row, { gap: "xs", children: [_jsxs(Button, { type: "button", onClick: handleToggle, variant: "ghost", size: "sm", className: "flex flex-1 items-center justify-between text-sm font-semibold text-zinc-900 dark:text-zinc-50 py-1 hover:opacity-80 transition-opacity", "aria-expanded": !isCollapsed, children: [_jsxs(Row, { as: Span, gap: "xs", children: [title, hasValue && (_jsx(Span, { className: "inline-flex items-center justify-center w-5 h-5 text-xs rounded-full bg-emerald-50 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-300 ring-1 ring-emerald-600/20 dark:ring-emerald-400/20", children: selected.length }))] }), _jsx("svg", { className: cn("w-4 h-4 text-zinc-500 dark:text-zinc-400 transition-transform duration-200", isCollapsed ? "" : "rotate-180"), fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })] }), onClear && hasValue && (_jsx(Button, { type: "button", onClick: onClear, variant: "ghost", size: "sm", className: "inline-flex items-center justify-center w-5 h-5 p-0 text-zinc-500 dark:text-zinc-400 hover:text-red-600 dark:hover:text-red-400 hover:bg-zinc-100 dark:hover:bg-slate-700 transition-colors rounded-full", "aria-label": "Clear filter", children: _jsx("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }) }))] }), !isCollapsed && (_jsxs(Div, { className: "mt-3 space-y-1", children: [searchable && options.length > 8 && (_jsx(Input, { type: "search", placeholder: "Search\u2026", value: search, onChange: (e) => setSearch(e.target.value), className: "w-full rounded-md border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-800/60 px-2.5 py-1.5 text-xs text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:focus:ring-secondary-400/20 mb-2" })), filtered.map((option) => {
43
+ // Selected labels for inline chips (shown when collapsed)
44
+ const selectedLabels = selected
45
+ .map((v) => options.find((o) => o.value === v)?.label ?? v)
46
+ .slice(0, 3);
47
+ return (_jsxs(Div, { className: cn("p-4 border-b border-zinc-200 dark:border-slate-700 last:border-b-0", className), children: [_jsxs(Row, { gap: "xs", children: [_jsxs(Button, { type: "button", onClick: handleToggle, variant: "ghost", size: "sm", className: "flex flex-1 items-center justify-between text-sm font-semibold text-zinc-900 dark:text-zinc-50 py-1 hover:opacity-80 transition-opacity", "aria-expanded": !isCollapsed, children: [_jsxs(Row, { as: Span, gap: "xs", children: [title, hasValue && (_jsx(Span, { className: "inline-flex items-center justify-center w-5 h-5 text-xs rounded-full bg-emerald-50 dark:bg-emerald-900/30 text-emerald-700 dark:text-emerald-300 ring-1 ring-emerald-600/20 dark:ring-emerald-400/20", children: selected.length }))] }), _jsx("svg", { className: cn("w-4 h-4 text-zinc-500 dark:text-zinc-400 transition-transform duration-200", isCollapsed ? "" : "rotate-180"), fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })] }), onClear && hasValue && (_jsx(Button, { type: "button", onClick: onClear, variant: "ghost", size: "sm", className: "inline-flex items-center justify-center w-5 h-5 p-0 text-zinc-500 dark:text-zinc-400 hover:text-red-600 dark:hover:text-red-400 hover:bg-zinc-100 dark:hover:bg-slate-700 transition-colors rounded-full", "aria-label": "Clear filter", children: _jsx("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 18L18 6M6 6l12 12" }) }) }))] }), isCollapsed && hasValue && (_jsxs(Div, { className: "mt-2 flex flex-wrap gap-1", children: [selectedLabels.map((label) => (_jsx(Span, { className: "inline-flex items-center px-2 py-0.5 rounded-full text-xs bg-zinc-100 dark:bg-slate-700 text-zinc-700 dark:text-zinc-300 border border-zinc-200 dark:border-slate-600", children: label }, label))), selected.length > 3 && (_jsxs(Span, { className: "inline-flex items-center px-2 py-0.5 rounded-full text-xs text-zinc-400 dark:text-zinc-500", children: ["+", selected.length - 3, " more"] }))] })), searchable && (_jsx(Div, { className: "mt-2", children: _jsx(Input, { type: "search", placeholder: "Search\u2026", value: search, onChange: (e) => handleSearch(e.target.value), className: "w-full rounded-md border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-800/60 px-2.5 py-1.5 text-xs text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:focus:ring-secondary-400/20" }) })), !isCollapsed && (_jsxs(Div, { className: "mt-3 space-y-1", children: [filtered.map((option) => {
36
48
  const isSelected = selected.includes(option.value);
37
49
  return (_jsxs(Row, { gap: "2.5", className: "py-1 cursor-pointer group", children: [selectionMode === "single" ? (_jsx("input", { type: "radio", checked: isSelected, onChange: () => toggle(option.value), "aria-label": option.label, className: cn("flex-shrink-0 border-zinc-300 dark:border-slate-600 cursor-pointer", "w-4 h-4 rounded-full text-primary-600 dark:text-secondary-500", "focus:ring-primary-500/30 dark:focus:ring-secondary-400/30") })) : (_jsx("input", { type: "checkbox", checked: isSelected, onChange: () => toggle(option.value), "aria-label": option.label, className: cn("flex-shrink-0 border-zinc-300 dark:border-slate-600 cursor-pointer", "w-4 h-4 rounded text-primary-600 dark:text-secondary-500 checked:bg-primary-600 dark:checked:bg-secondary-500", "focus:ring-primary-500/30 dark:focus:ring-secondary-400/30") })), _jsx(Span, { className: "flex-1 text-sm text-zinc-700 dark:text-zinc-300 group-hover:text-zinc-900 dark:group-hover:text-zinc-100 transition-colors truncate", children: option.label }), option.count !== undefined && (_jsx(Span, { className: "text-xs text-zinc-400 dark:text-zinc-500 tabular-nums flex-shrink-0", children: option.count }))] }, option.value));
38
50
  }), filtered.length === 0 && (_jsx(Text, { className: "text-xs text-zinc-400 dark:text-zinc-500 py-1", children: "No results" }))] }))] }));
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
4
  import { Button, Div, Row, Span, Text } from "../../ui";
5
5
  import { cn } from "./filterUtils";
6
- export function SwitchFilter({ title, label, checked, onChange, defaultCollapsed = true, className = "", isOpen: controlledOpen, onToggle, onClear, }) {
6
+ export function SwitchFilter({ title, label, checked, onChange, defaultCollapsed = false, className = "", isOpen: controlledOpen, onToggle, onClear, }) {
7
7
  const isControlled = controlledOpen !== undefined;
8
8
  const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);
9
9
  const isCollapsed = isControlled ? !controlledOpen : internalCollapsed;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Grouped Listings Firestore Document Types & Constants
3
+ *
4
+ * A grouped listing bundles multiple products together, optionally at a
5
+ * discounted bundle price. Standard products and pre-orders only — auctions
6
+ * are excluded per GP1 spec. Displayed as a horizontal scroller of circular
7
+ * thumbnail cards between the buy-box and the TABS row on the detail page.
8
+ *
9
+ * Used in Session 86 (GP1–GP2).
10
+ */
11
+ export interface GroupedListingDocument {
12
+ id: string;
13
+ slug: string;
14
+ title: string;
15
+ description?: string;
16
+ productIds: string[];
17
+ coverImage?: string;
18
+ bundlePrice?: number;
19
+ originalPrice?: number;
20
+ discountPercent?: number;
21
+ currency: "INR";
22
+ isActive: boolean;
23
+ isFeatured: boolean;
24
+ storeId?: string;
25
+ brandSlug?: string;
26
+ categorySlug?: string;
27
+ createdBy: string;
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ }
31
+ export declare const GROUPED_LISTINGS_COLLECTION: "groupedListings";
32
+ export declare const GROUPED_LISTINGS_INDEXED_FIELDS: readonly ["storeId", "brandSlug", "categorySlug", "isActive", "isFeatured", "createdAt"];
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Grouped Listings Firestore Document Types & Constants
3
+ *
4
+ * A grouped listing bundles multiple products together, optionally at a
5
+ * discounted bundle price. Standard products and pre-orders only — auctions
6
+ * are excluded per GP1 spec. Displayed as a horizontal scroller of circular
7
+ * thumbnail cards between the buy-box and the TABS row on the detail page.
8
+ *
9
+ * Used in Session 86 (GP1–GP2).
10
+ */
11
+ export const GROUPED_LISTINGS_COLLECTION = "groupedListings";
12
+ export const GROUPED_LISTINGS_INDEXED_FIELDS = [
13
+ "storeId",
14
+ "brandSlug",
15
+ "categorySlug",
16
+ "isActive",
17
+ "isFeatured",
18
+ "createdAt",
19
+ ];
@@ -17,9 +17,7 @@ export interface AdSlotProps {
17
17
  * - The slot id is not registered
18
18
  * - `enabled: false` in config
19
19
  * - `requiresConsent: true` and consent has not been granted
20
- *
21
- * When `reservedHeight` is set in the config, the container always reserves
22
- * that height to prevent CLS — even before the ad loads.
20
+ * - No active ad exists for the slot (for manual provider without manualContent)
23
21
  *
24
22
  * @example
25
23
  * <AdSlot id="homepage-hero-banner" />
@@ -1,7 +1,8 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { getAdSlot, isAdSlotRenderable } from "../ad-registry";
5
+ import { useActiveAd } from "../hooks/useActiveAd";
5
6
  // ---------------------------------------------------------------------------
6
7
  // Sub-renderers
7
8
  // ---------------------------------------------------------------------------
@@ -26,6 +27,12 @@ function ThirdPartyAd({ config }) {
26
27
  }
27
28
  return null;
28
29
  }
30
+ function ManualAdBanner({ ad }) {
31
+ const { creative } = ad;
32
+ if (!creative)
33
+ return null;
34
+ return (_jsxs("a", { href: creative.ctaHref || "#", target: creative.ctaHref ? "_blank" : undefined, rel: "noopener noreferrer", className: "flex items-center gap-3 w-full overflow-hidden rounded-lg bg-zinc-100 dark:bg-zinc-800 px-4 py-3 hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors no-underline", children: [creative.imageUrl ? (_jsx("img", { src: creative.imageUrl, alt: creative.title || "Advertisement", className: "h-14 w-14 rounded object-cover flex-shrink-0", loading: "lazy" })) : null, _jsxs("div", { className: "flex-1 min-w-0", children: [creative.title ? (_jsx("p", { className: "text-sm font-semibold text-zinc-900 dark:text-zinc-100 truncate", children: creative.title })) : null, creative.body ? (_jsx("p", { className: "text-xs text-zinc-500 dark:text-zinc-400 truncate", children: creative.body })) : null] }), creative.ctaLabel ? (_jsx("span", { className: "flex-shrink-0 rounded-md bg-primary px-3 py-1.5 text-xs font-semibold text-white", children: creative.ctaLabel })) : null] }));
35
+ }
29
36
  // ---------------------------------------------------------------------------
30
37
  // Primary component
31
38
  // ---------------------------------------------------------------------------
@@ -36,9 +43,7 @@ function ThirdPartyAd({ config }) {
36
43
  * - The slot id is not registered
37
44
  * - `enabled: false` in config
38
45
  * - `requiresConsent: true` and consent has not been granted
39
- *
40
- * When `reservedHeight` is set in the config, the container always reserves
41
- * that height to prevent CLS — even before the ad loads.
46
+ * - No active ad exists for the slot (for manual provider without manualContent)
42
47
  *
43
48
  * @example
44
49
  * <AdSlot id="homepage-hero-banner" />
@@ -46,6 +51,7 @@ function ThirdPartyAd({ config }) {
46
51
  */
47
52
  export function AdSlot({ id, manualContent, className = "" }) {
48
53
  const [hydrated, setHydrated] = useState(false);
54
+ const { ad: activeAd } = useActiveAd(id);
49
55
  useEffect(() => {
50
56
  setHydrated(true);
51
57
  }, []);
@@ -54,19 +60,14 @@ export function AdSlot({ id, manualContent, className = "" }) {
54
60
  }
55
61
  const config = getAdSlot(id);
56
62
  const renderable = isAdSlotRenderable(id);
57
- const reservedStyle = config?.reservedHeight
58
- ? { minHeight: config.reservedHeight }
59
- : undefined;
60
63
  if (!config || !renderable) {
61
- // Preserve reserved space even when ad is not shown (avoids layout jumps
62
- // when ads are re-enabled after consent grant in the same session).
63
- if (config?.reservedHeight && config?.enabled !== false) {
64
- return (_jsx("div", { className: className, style: reservedStyle, "aria-hidden": "true", "data-ad-slot-id": id, "data-ad-slot-state": "awaiting-consent" }));
65
- }
66
64
  return null;
67
65
  }
68
- const content = renderProvider(config.provider, config, manualContent);
69
- return (_jsx("div", { className: className, style: reservedStyle, "data-ad-slot-id": id, "aria-label": "Advertisement", children: content }));
66
+ const resolvedManualContent = manualContent ?? (activeAd ? _jsx(ManualAdBanner, { ad: activeAd }) : null);
67
+ const content = renderProvider(config.provider, config, resolvedManualContent);
68
+ if (!content)
69
+ return null;
70
+ return (_jsx("div", { className: className, "data-ad-slot-id": id, "aria-label": "Advertisement", children: content }));
70
71
  }
71
72
  // ---------------------------------------------------------------------------
72
73
  // Provider dispatch
@@ -1,8 +1,10 @@
1
+ import type { BlogPost } from "../../blog/types";
1
2
  export interface BlogArticlesSectionProps {
2
3
  title?: string;
3
4
  description?: string;
4
5
  viewMoreHref?: string;
5
6
  viewMoreLabel?: string;
6
7
  className?: string;
8
+ initialItems?: BlogPost[];
7
9
  }
8
- export declare function BlogArticlesSection({ title, description, viewMoreHref, viewMoreLabel, className, }: BlogArticlesSectionProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function BlogArticlesSection({ title, description, viewMoreHref, viewMoreLabel, className, initialItems, }: BlogArticlesSectionProps): import("react/jsx-runtime").JSX.Element;
@@ -5,8 +5,8 @@ import { SectionCarousel } from "./SectionCarousel";
5
5
  import { useBlogArticles } from "../hooks/useBlogArticles";
6
6
  import { BlogFeaturedCard } from "../../blog/components/BlogFeaturedCard";
7
7
  import { ROUTES } from "../../../next";
8
- export function BlogArticlesSection({ title = "From Our Blog", description, viewMoreHref, viewMoreLabel = "View all posts →", className = "", }) {
9
- const { data, isLoading } = useBlogArticles();
8
+ export function BlogArticlesSection({ title = "From Our Blog", description, viewMoreHref, viewMoreLabel = "View all posts →", className = "", initialItems, }) {
9
+ const { data, isLoading } = useBlogArticles({ initialPosts: initialItems });
10
10
  const items = data?.posts ?? [];
11
11
  return (_jsx(SectionCarousel, { title: title, description: description, pillLabel: "From Our Blog", headingVariant: "editorial", viewMoreHref: viewMoreHref, viewMoreLabel: viewMoreLabel, items: items, isLoading: isLoading, skeletonCount: 4, perView: THEME_CONSTANTS.carousel.perView.standard, gap: 16, keyExtractor: (post) => post.id, renderItem: (post) => (_jsx(BlogFeaturedCard, { post: post, href: ROUTES.BLOG.ARTICLE(post.slug) })), className: className }));
12
12
  }
@@ -1,3 +1,4 @@
1
+ import type { CategoryItem } from "../../categories/types";
1
2
  export interface BrandsSectionProps {
2
3
  title?: string;
3
4
  subtitle?: string;
@@ -5,5 +6,6 @@ export interface BrandsSectionProps {
5
6
  viewMoreHref?: string;
6
7
  viewMoreLabel?: string;
7
8
  className?: string;
9
+ initialItems?: CategoryItem[];
8
10
  }
9
- export declare function BrandsSection({ title, subtitle, limit, viewMoreHref, viewMoreLabel, className, }: BrandsSectionProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export declare function BrandsSection({ title, subtitle, limit, viewMoreHref, viewMoreLabel, className, initialItems, }: BrandsSectionProps): import("react/jsx-runtime").JSX.Element | null;