@mohasinac/appkit 4.58.0 → 4.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1080) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +62 -5
  3. package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -2
  4. package/dist/_internal/server/features/brands/actions.js +78 -4
  5. package/dist/_internal/server/features/checkout/actions.d.ts +36 -13
  6. package/dist/_internal/server/features/checkout/actions.js +668 -183
  7. package/dist/_internal/server/features/checkout/supplier-identity.js +18 -1
  8. package/dist/_internal/server/features/gateway-events/index.d.ts +10 -0
  9. package/dist/_internal/server/features/gateway-events/index.js +10 -0
  10. package/dist/_internal/server/features/gateway-events/ingest.d.ts +127 -0
  11. package/dist/_internal/server/features/gateway-events/ingest.js +188 -0
  12. package/dist/_internal/server/features/gateway-events/redact.d.ts +66 -0
  13. package/dist/_internal/server/features/gateway-events/redact.js +151 -0
  14. package/dist/_internal/server/features/grievance/actions.d.ts +63 -0
  15. package/dist/_internal/server/features/grievance/actions.js +173 -0
  16. package/dist/_internal/server/features/grievance/index.d.ts +8 -0
  17. package/dist/_internal/server/features/grievance/index.js +8 -0
  18. package/dist/_internal/server/features/grouped/data.js +28 -3
  19. package/dist/_internal/server/features/lottery/actions.js +99 -4
  20. package/dist/_internal/server/features/order-completion/actions.d.ts +92 -0
  21. package/dist/_internal/server/features/order-completion/actions.js +336 -0
  22. package/dist/_internal/server/features/order-completion/index.d.ts +7 -0
  23. package/dist/_internal/server/features/order-completion/index.js +7 -0
  24. package/dist/_internal/server/features/orders/actions.d.ts +13 -0
  25. package/dist/_internal/server/features/orders/actions.js +56 -2
  26. package/dist/_internal/server/features/orders/adapters.js +26 -0
  27. package/dist/_internal/server/features/orders/cancellation-refund.d.ts +116 -0
  28. package/dist/_internal/server/features/orders/cancellation-refund.js +466 -0
  29. package/dist/_internal/server/features/orders/index.d.ts +2 -1
  30. package/dist/_internal/server/features/orders/index.js +1 -1
  31. package/dist/_internal/server/features/orders/service.d.ts +60 -0
  32. package/dist/_internal/server/features/orders/service.js +74 -0
  33. package/dist/_internal/server/features/payment-cases/disputes.d.ts +76 -0
  34. package/dist/_internal/server/features/payment-cases/disputes.js +241 -0
  35. package/dist/_internal/server/features/payment-cases/index.d.ts +9 -0
  36. package/dist/_internal/server/features/payment-cases/index.js +9 -0
  37. package/dist/_internal/server/features/payouts/actions.d.ts +28 -3
  38. package/dist/_internal/server/features/payouts/actions.js +84 -10
  39. package/dist/_internal/server/features/points/adjust.d.ts +61 -0
  40. package/dist/_internal/server/features/points/adjust.js +121 -0
  41. package/dist/_internal/server/features/points/award.d.ts +65 -0
  42. package/dist/_internal/server/features/points/award.js +145 -0
  43. package/dist/_internal/server/features/price-index/market.d.ts +33 -0
  44. package/dist/_internal/server/features/price-index/market.js +54 -1
  45. package/dist/_internal/server/features/products/data.js +40 -22
  46. package/dist/_internal/server/features/protection-claims/actions.d.ts +72 -0
  47. package/dist/_internal/server/features/protection-claims/actions.js +228 -0
  48. package/dist/_internal/server/features/protection-claims/index.d.ts +8 -0
  49. package/dist/_internal/server/features/protection-claims/index.js +8 -0
  50. package/dist/_internal/server/features/refunds/actions.d.ts +20 -0
  51. package/dist/_internal/server/features/refunds/actions.js +259 -17
  52. package/dist/_internal/server/features/refunds/capacity.d.ts +29 -0
  53. package/dist/_internal/server/features/refunds/capacity.js +37 -0
  54. package/dist/_internal/server/features/reviews/actions.js +3 -2
  55. package/dist/_internal/server/features/search/index-build/sources.js +20 -1
  56. package/dist/_internal/server/features/shipping/reconcile.d.ts +10 -1
  57. package/dist/_internal/server/features/shipping/reconcile.js +34 -3
  58. package/dist/_internal/server/features/shipping/reimbursement.d.ts +117 -0
  59. package/dist/_internal/server/features/shipping/reimbursement.js +223 -0
  60. package/dist/_internal/server/features/stores/tabs.d.ts +19 -4
  61. package/dist/_internal/server/features/stores/tabs.js +24 -4
  62. package/dist/_internal/server/functions/https.d.ts +31 -1
  63. package/dist/_internal/server/functions/https.js +52 -1
  64. package/dist/_internal/server/functions/scheduled.d.ts +72 -1
  65. package/dist/_internal/server/functions/scheduled.js +124 -1
  66. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +62 -16
  67. package/dist/_internal/server/jobs/core/boxRollupReconcile.d.ts +46 -0
  68. package/dist/_internal/server/jobs/core/boxRollupReconcile.js +142 -0
  69. package/dist/_internal/server/jobs/core/dailyDataCleanup.js +149 -1
  70. package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +14 -0
  71. package/dist/_internal/server/jobs/core/dailyStatusDigest.js +79 -1
  72. package/dist/_internal/server/jobs/core/index.d.ts +2 -0
  73. package/dist/_internal/server/jobs/core/index.js +2 -0
  74. package/dist/_internal/server/jobs/core/marketPriceRollup.d.ts +64 -0
  75. package/dist/_internal/server/jobs/core/marketPriceRollup.js +153 -0
  76. package/dist/_internal/server/jobs/core/obligationSweep.d.ts +36 -0
  77. package/dist/_internal/server/jobs/core/obligationSweep.js +503 -0
  78. package/dist/_internal/server/jobs/core/paymentReconcile.d.ts +79 -0
  79. package/dist/_internal/server/jobs/core/paymentReconcile.js +614 -0
  80. package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +34 -0
  81. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +35 -4
  82. package/dist/_internal/server/jobs/handlers/boxRollupReconcile.d.ts +2 -0
  83. package/dist/_internal/server/jobs/handlers/boxRollupReconcile.js +15 -0
  84. package/dist/_internal/server/jobs/handlers/countersReconcileNow.d.ts +65 -0
  85. package/dist/_internal/server/jobs/handlers/countersReconcileNow.js +89 -0
  86. package/dist/_internal/server/jobs/handlers/index.d.ts +5 -0
  87. package/dist/_internal/server/jobs/handlers/index.js +5 -0
  88. package/dist/_internal/server/jobs/handlers/marketPriceRollup.d.ts +2 -0
  89. package/dist/_internal/server/jobs/handlers/marketPriceRollup.js +2 -0
  90. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  91. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  92. package/dist/_internal/server/jobs/handlers/obligationSweep.d.ts +2 -0
  93. package/dist/_internal/server/jobs/handlers/obligationSweep.js +15 -0
  94. package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +30 -1
  95. package/dist/_internal/server/jobs/handlers/paymentReconcile.d.ts +2 -0
  96. package/dist/_internal/server/jobs/handlers/paymentReconcile.js +6 -0
  97. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  98. package/dist/_internal/shared/actions/action-registry.js +71 -0
  99. package/dist/_internal/shared/checkout/coupon-discount.d.ts +73 -0
  100. package/dist/_internal/shared/checkout/coupon-discount.js +103 -0
  101. package/dist/_internal/shared/checkout/lanes.d.ts +42 -0
  102. package/dist/_internal/shared/checkout/lanes.js +46 -0
  103. package/dist/_internal/shared/checkout/order-math.d.ts +149 -1
  104. package/dist/_internal/shared/checkout/order-math.js +251 -3
  105. package/dist/_internal/shared/checkout/refundable-base.d.ts +116 -0
  106. package/dist/_internal/shared/checkout/refundable-base.js +122 -0
  107. package/dist/_internal/shared/features/auctions/config.d.ts +14 -1
  108. package/dist/_internal/shared/features/auctions/config.js +30 -1
  109. package/dist/_internal/shared/features/brands/schema.d.ts +42 -0
  110. package/dist/_internal/shared/features/brands/schema.js +18 -0
  111. package/dist/_internal/shared/features/orders/refund-copy.d.ts +22 -0
  112. package/dist/_internal/shared/features/orders/refund-copy.js +34 -0
  113. package/dist/_internal/shared/features/print/label-profiles.d.ts +198 -0
  114. package/dist/_internal/shared/features/print/label-profiles.js +350 -0
  115. package/dist/_internal/shared/features/products/to-product-item.js +33 -5
  116. package/dist/_internal/shared/fees/calculator.d.ts +31 -2
  117. package/dist/_internal/shared/fees/calculator.js +103 -5
  118. package/dist/_internal/shared/fees/india-states.d.ts +195 -0
  119. package/dist/_internal/shared/fees/india-states.js +190 -0
  120. package/dist/_internal/shared/fees/payout-hold.d.ts +80 -0
  121. package/dist/_internal/shared/fees/payout-hold.js +74 -0
  122. package/dist/_internal/shared/obligations/deadlines.d.ts +94 -0
  123. package/dist/_internal/shared/obligations/deadlines.js +155 -0
  124. package/dist/_internal/shared/shipping/quote.d.ts +96 -0
  125. package/dist/_internal/shared/shipping/quote.js +67 -0
  126. package/dist/_internal/shared/time/business-days.d.ts +91 -0
  127. package/dist/_internal/shared/time/business-days.js +185 -0
  128. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  129. package/dist/cli/index.js +0 -2
  130. package/dist/client.d.ts +9 -4
  131. package/dist/client.js +26 -3
  132. package/dist/configs/tailwind.d.ts +0 -12
  133. package/dist/configs/tailwind.js +28 -15
  134. package/dist/constants/api-endpoints.d.ts +51 -9
  135. package/dist/constants/api-endpoints.js +23 -7
  136. package/dist/constants/index.d.ts +1 -1
  137. package/dist/constants/index.js +1 -1
  138. package/dist/constants/seed-meta.d.ts +113 -0
  139. package/dist/constants/seed-meta.js +91 -0
  140. package/dist/contracts/index.d.ts +1 -1
  141. package/dist/contracts/payment.d.ts +131 -0
  142. package/dist/features/about/components/AboutView.js +1 -1
  143. package/dist/features/about/components/DeveloperView.js +5 -2
  144. package/dist/features/about/components/FAQPageView.js +2 -1
  145. package/dist/features/about/components/FeesView.js +2 -1
  146. package/dist/features/about/components/HelpPageView.js +2 -1
  147. package/dist/features/about/components/HowAuctionsWorkView.js +2 -1
  148. package/dist/features/about/components/HowCheckoutWorksView.js +2 -1
  149. package/dist/features/about/components/HowEmiWorksView.js +2 -1
  150. package/dist/features/about/components/HowOffersWorkView.js +2 -1
  151. package/dist/features/about/components/HowOrdersWorkView.js +2 -1
  152. package/dist/features/about/components/HowPayoutsWorkView.js +2 -1
  153. package/dist/features/about/components/HowPreOrdersWorkView.js +2 -1
  154. package/dist/features/about/components/HowReviewsWorkView.js +2 -1
  155. package/dist/features/about/components/PolicyPageView.js +2 -1
  156. package/dist/features/about/components/ProseHero.d.ts +73 -0
  157. package/dist/features/about/components/ProseHero.js +18 -0
  158. package/dist/features/about/components/SecurityPrivacyView.js +2 -1
  159. package/dist/features/about/components/ShippingPolicyView.js +2 -1
  160. package/dist/features/about/components/TrackOrderView.js +2 -1
  161. package/dist/features/about/components/UnauthorizedView.js +1 -1
  162. package/dist/features/about/index.d.ts +2 -0
  163. package/dist/features/about/index.js +5 -0
  164. package/dist/features/account/actions/address-actions.d.ts +26 -2
  165. package/dist/features/account/actions/address-actions.js +25 -1
  166. package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
  167. package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
  168. package/dist/features/account/components/UserOrdersView.js +17 -0
  169. package/dist/features/account/components/UserSidebar.js +1 -1
  170. package/dist/features/account/hooks/useNotifications.js +29 -0
  171. package/dist/features/admin/actions/admin-coupon-actions.js +36 -0
  172. package/dist/features/admin/components/AdminBeysView.js +2 -2
  173. package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
  174. package/dist/features/admin/components/AdminBrandEditorView.js +32 -2
  175. package/dist/features/admin/components/AdminBundleEditorView.js +1 -1
  176. package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
  177. package/dist/features/admin/components/AdminCategoriesView.js +1 -1
  178. package/dist/features/admin/components/AdminCategoryEditorView.js +73 -17
  179. package/dist/features/admin/components/AdminContactEditorView.js +1 -1
  180. package/dist/features/admin/components/AdminCouponEditorView.js +26 -1
  181. package/dist/features/admin/components/AdminFaqEditorView.js +1 -1
  182. package/dist/features/admin/components/AdminFaqsView.js +2 -2
  183. package/dist/features/admin/components/AdminGatewayEventsView.d.ts +54 -0
  184. package/dist/features/admin/components/AdminGatewayEventsView.js +209 -0
  185. package/dist/features/admin/components/AdminGuideHubView.js +1 -1
  186. package/dist/features/admin/components/AdminMoneyCasesView.d.ts +60 -0
  187. package/dist/features/admin/components/AdminMoneyCasesView.js +287 -0
  188. package/dist/features/admin/components/AdminPartsView.js +2 -2
  189. package/dist/features/admin/components/AdminProductsView.js +75 -4
  190. package/dist/features/admin/components/AdminSidebar.js +2 -2
  191. package/dist/features/admin/components/AdminSiteSettingsView.js +65 -7
  192. package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
  193. package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
  194. package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
  195. package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
  196. package/dist/features/admin/components/AdminUsersView.js +72 -1
  197. package/dist/features/admin/components/AdminViewCards.d.ts +3 -1
  198. package/dist/features/admin/components/AdminViewCards.js +4 -4
  199. package/dist/features/admin/components/DataListingView.d.ts +28 -0
  200. package/dist/features/admin/components/DataListingView.js +175 -14
  201. package/dist/features/admin/components/DataTable.d.ts +12 -1
  202. package/dist/features/admin/components/DataTable.js +3 -3
  203. package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
  204. package/dist/features/admin/components/OwnerQuickActions.js +60 -2
  205. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +1 -1
  206. package/dist/features/admin/components/RecordOwnerQuickActions.js +61 -14
  207. package/dist/features/admin/components/analytics/AdminStatCard.d.ts +35 -1
  208. package/dist/features/admin/components/analytics/AdminStatCard.js +77 -2
  209. package/dist/features/admin/components/index.d.ts +4 -0
  210. package/dist/features/admin/components/index.js +6 -0
  211. package/dist/features/admin/constants/filter-tabs.d.ts +156 -0
  212. package/dist/features/admin/constants/filter-tabs.js +106 -0
  213. package/dist/features/admin/repository/site-settings.repository.d.ts +22 -0
  214. package/dist/features/admin/repository/site-settings.repository.js +82 -1
  215. package/dist/features/admin/schemas/admin-editor-forms.d.ts +21 -0
  216. package/dist/features/admin/schemas/admin-editor-forms.js +44 -0
  217. package/dist/features/admin/schemas/firestore.js +5 -1
  218. package/dist/features/admin/schemas/site-settings-form.js +30 -1
  219. package/dist/features/auctions/actions/bid-actions.js +13 -1
  220. package/dist/features/auctions/components/AuctionBottomActions.js +2 -2
  221. package/dist/features/auctions/components/AuctionDetailPageView.js +3 -1
  222. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -0
  223. package/dist/features/auctions/components/MarketplaceAuctionCard.js +5 -3
  224. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +8 -1
  225. package/dist/features/auctions/components/PlaceBidFormClient.js +2 -2
  226. package/dist/features/audit-log/schemas/firestore.d.ts +28 -0
  227. package/dist/features/audit-log/schemas/firestore.js +14 -0
  228. package/dist/features/auth/permissions/constants.d.ts +17 -1
  229. package/dist/features/auth/permissions/constants.js +18 -0
  230. package/dist/features/blog/components/BlogPostView.js +1 -1
  231. package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
  232. package/dist/features/categories/api/[id]/description-template/route.js +107 -1
  233. package/dist/features/categories/components/BrandDetailPageView.js +2 -2
  234. package/dist/features/categories/components/BreadcrumbTrail.js +7 -1
  235. package/dist/features/categories/components/BundleDetailView.js +1 -1
  236. package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
  237. package/dist/features/categories/components/CategoryForm.js +12 -1
  238. package/dist/features/categories/components/CategoryTemplatePicker.js +38 -5
  239. package/dist/features/categories/repository/market-price-index.repository.d.ts +123 -0
  240. package/dist/features/categories/repository/market-price-index.repository.js +105 -0
  241. package/dist/features/categories/repository/price-observation.repository.d.ts +166 -0
  242. package/dist/features/categories/repository/price-observation.repository.js +132 -0
  243. package/dist/features/events/components/EventSaleBanner.js +1 -1
  244. package/dist/features/events/components/EventStatusBadge.js +1 -1
  245. package/dist/features/faq/components/FAQAccordion.js +2 -1
  246. package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
  247. package/dist/features/faq/components/FAQHelpfulButtons.js +4 -4
  248. package/dist/features/faq/components/RelatedFAQs.js +1 -1
  249. package/dist/features/filters/FilterFacetSection.js +1 -1
  250. package/dist/features/filters/SwitchFilter.js +1 -1
  251. package/dist/features/gateway-events/repository/gateway-events.repository.d.ts +117 -0
  252. package/dist/features/gateway-events/repository/gateway-events.repository.js +274 -0
  253. package/dist/features/gateway-events/schemas/firestore.d.ts +217 -0
  254. package/dist/features/gateway-events/schemas/firestore.js +125 -0
  255. package/dist/features/gateway-events/schemas/index.d.ts +81 -0
  256. package/dist/features/gateway-events/schemas/index.js +79 -0
  257. package/dist/features/grouped/components/GroupedListingDetailView.js +1 -1
  258. package/dist/features/homepage/components/AnnouncementBar.js +37 -1
  259. package/dist/features/homepage/components/AnnouncementBar.style.css +30 -0
  260. package/dist/features/homepage/components/BrandsSection.js +1 -1
  261. package/dist/features/homepage/components/CTABannerSection.js +1 -1
  262. package/dist/features/homepage/components/FeaturedBundlesSection.js +14 -24
  263. package/dist/features/homepage/components/HeroCarousel.js +2 -2
  264. package/dist/features/homepage/components/SocialPostCard.js +1 -1
  265. package/dist/features/inventory/components/AdminMoveLedgerView.d.ts +7 -0
  266. package/dist/features/inventory/components/AdminMoveLedgerView.js +157 -0
  267. package/dist/features/inventory/components/AdminStorageBoxesView.d.ts +11 -0
  268. package/dist/features/inventory/components/AdminStorageBoxesView.js +168 -0
  269. package/dist/features/inventory/components/ReceiveStationView.d.ts +39 -0
  270. package/dist/features/inventory/components/ReceiveStationView.js +413 -0
  271. package/dist/features/inventory/components/operator-message.d.ts +29 -0
  272. package/dist/features/inventory/components/operator-message.js +41 -0
  273. package/dist/features/inventory/index.d.ts +13 -0
  274. package/dist/features/inventory/index.js +28 -0
  275. package/dist/features/inventory/repository/inventory-movements.repository.d.ts +97 -0
  276. package/dist/features/inventory/repository/inventory-movements.repository.js +186 -0
  277. package/dist/features/inventory/repository/inventory-placements.repository.d.ts +179 -0
  278. package/dist/features/inventory/repository/inventory-placements.repository.js +345 -0
  279. package/dist/features/inventory/repository/storage-boxes.repository.d.ts +83 -0
  280. package/dist/features/inventory/repository/storage-boxes.repository.js +127 -0
  281. package/dist/features/inventory/schemas/firestore.d.ts +197 -0
  282. package/dist/features/inventory/schemas/firestore.js +159 -0
  283. package/dist/features/layout/AppLayoutShell.d.ts +12 -1
  284. package/dist/features/layout/AppLayoutShell.js +25 -12
  285. package/dist/features/layout/AutoBreadcrumbs.js +162 -3
  286. package/dist/features/layout/AutoBreadcrumbs.style.css +45 -0
  287. package/dist/features/layout/BottomNavbar.d.ts +1 -1
  288. package/dist/features/layout/BottomNavbar.js +2 -2
  289. package/dist/features/media/MediaAvatar.js +1 -1
  290. package/dist/features/media/MediaImage.d.ts +24 -4
  291. package/dist/features/media/MediaImage.js +44 -4
  292. package/dist/features/media/MediaLightbox.js +1 -1
  293. package/dist/features/media/modals/ImageCropModal.js +1 -1
  294. package/dist/features/media/modals/ImageEditor.js +1 -1
  295. package/dist/features/media/upload/MediaUploadField.js +91 -3
  296. package/dist/features/obligations/constants/policies.d.ts +92 -0
  297. package/dist/features/obligations/constants/policies.js +378 -0
  298. package/dist/features/obligations/repository/obligations.repository.d.ts +68 -0
  299. package/dist/features/obligations/repository/obligations.repository.js +158 -0
  300. package/dist/features/obligations/schemas/firestore.d.ts +160 -0
  301. package/dist/features/obligations/schemas/firestore.js +87 -0
  302. package/dist/features/orders/actions/order-actions.d.ts +43 -4
  303. package/dist/features/orders/actions/order-actions.js +60 -3
  304. package/dist/features/orders/actions/refund-actions.js +70 -10
  305. package/dist/features/orders/components/OrderCompletionPanel.d.ts +27 -0
  306. package/dist/features/orders/components/OrderCompletionPanel.js +192 -0
  307. package/dist/features/orders/components/OrdersList.js +2 -2
  308. package/dist/features/orders/components/RefundHistoryTable.js +3 -1
  309. package/dist/features/orders/components/index.d.ts +2 -0
  310. package/dist/features/orders/components/index.js +6 -0
  311. package/dist/features/orders/constants/transitions.d.ts +59 -0
  312. package/dist/features/orders/constants/transitions.js +104 -0
  313. package/dist/features/orders/repository/orders.repository.d.ts +109 -6
  314. package/dist/features/orders/repository/orders.repository.js +464 -21
  315. package/dist/features/orders/schemas/firestore.d.ts +270 -0
  316. package/dist/features/orders/schemas/firestore.js +24 -0
  317. package/dist/features/orders/schemas/index.d.ts +61 -0
  318. package/dist/features/orders/schemas/index.js +22 -0
  319. package/dist/features/orders/types/index.d.ts +79 -0
  320. package/dist/features/parts/components/PartsIndexPageView.js +8 -1
  321. package/dist/features/payment-cases/repository/payment-cases.repository.d.ts +170 -0
  322. package/dist/features/payment-cases/repository/payment-cases.repository.js +342 -0
  323. package/dist/features/payment-cases/schemas/firestore.d.ts +229 -0
  324. package/dist/features/payment-cases/schemas/firestore.js +105 -0
  325. package/dist/features/payment-cases/schemas/resolve-form.d.ts +97 -0
  326. package/dist/features/payment-cases/schemas/resolve-form.js +114 -0
  327. package/dist/features/payments/repository/payout.repository.d.ts +0 -1
  328. package/dist/features/payments/repository/payout.repository.js +0 -1
  329. package/dist/features/points/repository/points.repository.d.ts +122 -0
  330. package/dist/features/points/repository/points.repository.js +304 -1
  331. package/dist/features/points/schemas/adjust-form.d.ts +58 -0
  332. package/dist/features/points/schemas/adjust-form.js +63 -0
  333. package/dist/features/points/schemas/firestore.d.ts +108 -1
  334. package/dist/features/points/schemas/firestore.js +84 -0
  335. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -3
  336. package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
  337. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
  338. package/dist/features/price-index/components/PriceIndexToolView.d.ts +23 -4
  339. package/dist/features/price-index/components/PriceIndexToolView.js +71 -6
  340. package/dist/features/price-index/market-stats.d.ts +82 -0
  341. package/dist/features/price-index/market-stats.js +230 -0
  342. package/dist/features/print/components/BoxLabelPrintView.d.ts +25 -0
  343. package/dist/features/print/components/BoxLabelPrintView.js +66 -0
  344. package/dist/features/print/components/LabelProfilePicker.d.ts +13 -0
  345. package/dist/features/print/components/LabelProfilePicker.js +38 -0
  346. package/dist/features/print/components/labels.d.ts +117 -0
  347. package/dist/features/print/components/labels.js +258 -0
  348. package/dist/features/print/components/labels.style.css +46 -0
  349. package/dist/features/print/index.d.ts +6 -0
  350. package/dist/features/print/index.js +16 -0
  351. package/dist/features/products/columns/productTableColumns.js +5 -4
  352. package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
  353. package/dist/features/products/components/MarketplacePrizeDrawCard.js +6 -6
  354. package/dist/features/products/components/PrizeDrawCollage.js +1 -1
  355. package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
  356. package/dist/features/products/components/PrizeRevealModal.js +2 -2
  357. package/dist/features/products/components/ProductDetailPageView.js +18 -4
  358. package/dist/features/products/components/ProductForm.js +34 -23
  359. package/dist/features/products/components/ProductGrid.js +86 -62
  360. package/dist/features/products/constants/card-badges.d.ts +97 -0
  361. package/dist/features/products/constants/card-badges.js +100 -0
  362. package/dist/features/products/repository/products.repository.js +34 -1
  363. package/dist/features/products/schemas/firestore.d.ts +46 -3
  364. package/dist/features/products/schemas/firestore.js +21 -0
  365. package/dist/features/promotions/components/PromotionsView.js +1 -1
  366. package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +32 -0
  367. package/dist/features/promotions/repository/claimed-coupons.repository.js +58 -0
  368. package/dist/features/promotions/schemas/firestore.js +30 -3
  369. package/dist/features/promotions/schemas/index.d.ts +6 -6
  370. package/dist/features/protection-claims/repository/protection-claims.repository.d.ts +54 -0
  371. package/dist/features/protection-claims/repository/protection-claims.repository.js +174 -0
  372. package/dist/features/protection-claims/schemas/firestore.d.ts +168 -0
  373. package/dist/features/protection-claims/schemas/firestore.js +130 -0
  374. package/dist/features/reviews/actions/review-actions.js +3 -2
  375. package/dist/features/reviews/components/ReviewModal.js +1 -1
  376. package/dist/features/reviews/components/ReviewsList.js +1 -1
  377. package/dist/features/reviews/schemas/firestore.d.ts +20 -1
  378. package/dist/features/scams/constants/scam-types.d.ts +2 -0
  379. package/dist/features/scams/constants/scam-types.js +18 -0
  380. package/dist/features/scams/schemas/report-form.d.ts +3 -3
  381. package/dist/features/scams/schemas/report-form.js +26 -1
  382. package/dist/features/search/components/Search.js +9 -9
  383. package/dist/features/search/components/SearchResultsClient.js +18 -3
  384. package/dist/features/search/components/SearchResultsPageView.d.ts +1 -6
  385. package/dist/features/search/components/SearchResultsPageView.js +2 -2
  386. package/dist/features/seller/actions/offer-actions.js +16 -1
  387. package/dist/features/seller/actions/seller-actions.js +14 -3
  388. package/dist/features/seller/components/CategoryInlineSelect.js +75 -11
  389. package/dist/features/seller/components/PrintCenterView.d.ts +5 -0
  390. package/dist/features/seller/components/PrintCenterView.js +41 -30
  391. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  392. package/dist/features/seller/components/SellerPayoutRequestView.js +16 -5
  393. package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
  394. package/dist/features/seller/components/SellerProductShell.d.ts +16 -0
  395. package/dist/features/seller/components/SellerProductShell.js +123 -13
  396. package/dist/features/seller/components/SellerReviewsView.js +4 -2
  397. package/dist/features/seller/components/SellerSidebar.js +1 -1
  398. package/dist/features/seller/schemas/coupon-form.d.ts +26 -0
  399. package/dist/features/seller/schemas/coupon-form.js +27 -0
  400. package/dist/features/seller/schemas/product-form.d.ts +3 -0
  401. package/dist/features/seller/schemas/product-form.js +5 -0
  402. package/dist/features/shell/FormShell.js +2 -2
  403. package/dist/features/shell/QuickFormDrawer.js +14 -0
  404. package/dist/features/shell/SectionForm.d.ts +19 -0
  405. package/dist/features/shell/SectionForm.js +133 -9
  406. package/dist/features/shell/SectionForm.style.css +54 -0
  407. package/dist/features/shipments/components/AdminShipmentsView.js +16 -1
  408. package/dist/features/shipments/repository/shipment-items.repository.d.ts +9 -0
  409. package/dist/features/shipments/repository/shipment-items.repository.js +14 -0
  410. package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
  411. package/dist/features/sticker-trace/components/StickerCommitPanel.js +1 -1
  412. package/dist/features/store-extensions/schemas/report-review-form.d.ts +8 -8
  413. package/dist/features/stores/components/StoreGuideHubView.js +1 -1
  414. package/dist/features/stores/components/StoreHeader.js +1 -1
  415. package/dist/features/support/schemas/firestore.d.ts +73 -2
  416. package/dist/features/support/schemas/firestore.js +59 -0
  417. package/dist/index.d.ts +16 -155
  418. package/dist/index.js +88 -341
  419. package/dist/next/ErrorBoundary.js +1 -1
  420. package/dist/next/routing/route-map.d.ts +24 -0
  421. package/dist/next/routing/route-map.js +40 -0
  422. package/dist/providers/payment-manual/index.d.ts +15 -1
  423. package/dist/providers/payment-manual/index.js +37 -0
  424. package/dist/providers/payment-phonepe/index.d.ts +14 -1
  425. package/dist/providers/payment-phonepe/index.js +36 -0
  426. package/dist/providers/payment-razorpay/index.d.ts +44 -1
  427. package/dist/providers/payment-razorpay/index.js +99 -0
  428. package/dist/providers/shipping-shiprocket/index.d.ts +18 -0
  429. package/dist/providers/shipping-shiprocket/index.js +18 -0
  430. package/dist/schemas/registry.d.ts +44 -11
  431. package/dist/server-entry.d.ts +2 -0
  432. package/dist/server-entry.js +27 -0
  433. package/dist/server.d.ts +42 -69
  434. package/dist/server.js +93 -69
  435. package/dist/styles.css +418 -149
  436. package/dist/tailwind-utilities.css +1 -1
  437. package/dist/tokens/themes/default-dark.js +15 -12
  438. package/dist/tokens/themes/default-light.js +14 -11
  439. package/dist/tokens/tokens.css +106 -23
  440. package/dist/ui/DataTable.style.css +4 -4
  441. package/dist/ui/columns/cell-renderers.d.ts +20 -0
  442. package/dist/ui/columns/cell-renderers.js +26 -1
  443. package/dist/ui/columns/index.d.ts +1 -1
  444. package/dist/ui/columns/index.js +4 -1
  445. package/dist/ui/components/Badge.style.css +1 -1
  446. package/dist/ui/components/Breadcrumb.js +19 -1
  447. package/dist/ui/components/BulkActionBar.style.css +4 -4
  448. package/dist/ui/components/Button.style.css +1 -1
  449. package/dist/ui/components/Checkbox.style.css +1 -1
  450. package/dist/ui/components/FallbackShell.js +1 -1
  451. package/dist/ui/components/Form.d.ts +14 -1
  452. package/dist/ui/components/Form.js +2 -2
  453. package/dist/ui/components/FormField.js +18 -4
  454. package/dist/ui/components/FormField.style.css +43 -3
  455. package/dist/ui/components/GatedPrice.style.css +1 -1
  456. package/dist/ui/components/IconButton.style.css +1 -1
  457. package/dist/ui/components/Input.js +22 -1
  458. package/dist/ui/components/Input.style.css +38 -22
  459. package/dist/ui/components/ListingFilterDrawer.js +1 -1
  460. package/dist/ui/components/ListingToolbar.js +1 -1
  461. package/dist/ui/components/PaginatedSelect.js +0 -0
  462. package/dist/ui/components/Radio.style.css +1 -1
  463. package/dist/ui/components/Repeater.d.ts +53 -0
  464. package/dist/ui/components/Repeater.js +7 -0
  465. package/dist/ui/components/RichTextEditor.d.ts +20 -1
  466. package/dist/ui/components/RichTextEditor.js +23 -2
  467. package/dist/ui/components/Select.style.css +7 -21
  468. package/dist/ui/components/Semantic.js +27 -3
  469. package/dist/ui/components/TagInput.style.css +4 -9
  470. package/dist/ui/components/Textarea.style.css +4 -18
  471. package/dist/ui/components/Toggle.style.css +1 -1
  472. package/dist/ui/components/Typography.d.ts +3 -3
  473. package/dist/ui/components/Typography.js +15 -15
  474. package/dist/ui/components/ViewToggle.style.css +4 -4
  475. package/dist/ui/forms/AddAnotherToggle.d.ts +16 -0
  476. package/dist/ui/forms/AddAnotherToggle.js +56 -0
  477. package/dist/ui/forms/ColorPickerField.js +15 -2
  478. package/dist/ui/forms/FieldCheckbox.js +15 -2
  479. package/dist/ui/forms/FieldInput.d.ts +22 -1
  480. package/dist/ui/forms/FieldInput.js +19 -5
  481. package/dist/ui/forms/FieldLabel.d.ts +35 -0
  482. package/dist/ui/forms/FieldLabel.js +70 -0
  483. package/dist/ui/forms/FieldSelect.d.ts +4 -1
  484. package/dist/ui/forms/FieldSelect.js +27 -5
  485. package/dist/ui/forms/FieldTextarea.d.ts +4 -1
  486. package/dist/ui/forms/FieldTextarea.js +22 -5
  487. package/dist/ui/forms/FormShell.d.ts +17 -1
  488. package/dist/ui/forms/FormShell.js +36 -2
  489. package/dist/ui/forms/FormShell.style.css +41 -33
  490. package/dist/ui/forms/index.d.ts +5 -1
  491. package/dist/ui/forms/index.js +2 -0
  492. package/dist/ui/icons/icon-registry.d.ts +1 -0
  493. package/dist/ui/icons/icon-registry.js +17 -1
  494. package/dist/utils/id-generators.d.ts +80 -0
  495. package/dist/utils/id-generators.js +93 -0
  496. package/dist/utils/search-txt-builders.d.ts +12 -0
  497. package/dist/utils/search-txt-builders.js +17 -0
  498. package/package.json +4 -2
  499. package/scripts/seed-cli.mjs +175 -6
  500. package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +0 -12
  501. package/dist/features/loyalty/api/admin/loyalty/grant/route.js +0 -38
  502. package/dist/features/loyalty/api/balance/route.d.ts +0 -12
  503. package/dist/features/loyalty/api/balance/route.js +0 -41
  504. package/dist/features/loyalty/api/earn/route.d.ts +0 -12
  505. package/dist/features/loyalty/api/earn/route.js +0 -38
  506. package/dist/features/loyalty/api/history/route.d.ts +0 -12
  507. package/dist/features/loyalty/api/history/route.js +0 -58
  508. package/dist/features/loyalty/api/redeem/route.d.ts +0 -12
  509. package/dist/features/loyalty/api/redeem/route.js +0 -38
  510. package/dist/features/loyalty/columns/index.d.ts +0 -17
  511. package/dist/features/loyalty/columns/index.js +0 -40
  512. package/dist/features/loyalty/components/CoinsDisplay.d.ts +0 -12
  513. package/dist/features/loyalty/components/CoinsDisplay.js +0 -10
  514. package/dist/features/loyalty/components/index.d.ts +0 -1
  515. package/dist/features/loyalty/components/index.js +0 -1
  516. package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +0 -4
  517. package/dist/features/loyalty/hooks/useLoyaltyBalance.js +0 -25
  518. package/dist/features/loyalty/index.d.ts +0 -6
  519. package/dist/features/loyalty/index.js +0 -6
  520. package/dist/features/loyalty/manifest.d.ts +0 -2
  521. package/dist/features/loyalty/manifest.js +0 -16
  522. package/dist/features/loyalty/messages/en.json +0 -19
  523. package/dist/features/loyalty/repository/loyalty.repository.d.ts +0 -8
  524. package/dist/features/loyalty/repository/loyalty.repository.js +0 -22
  525. package/dist/features/loyalty/schemas/index.d.ts +0 -85
  526. package/dist/features/loyalty/schemas/index.js +0 -40
  527. package/dist/features/loyalty/server.d.ts +0 -6
  528. package/dist/features/loyalty/server.js +0 -6
  529. package/dist/features/loyalty/types/index.d.ts +0 -31
  530. package/dist/features/loyalty/types/index.js +0 -1
  531. package/dist/features/loyalty/types/loyalty-config.d.ts +0 -7
  532. package/dist/features/loyalty/types/loyalty-config.js +0 -1
  533. package/dist/features/loyalty/types/loyalty-math.d.ts +0 -9
  534. package/dist/features/loyalty/types/loyalty-math.js +0 -27
  535. package/dist/features/products/components/ProductOwnerQuickActions.d.ts +0 -11
  536. package/dist/features/products/components/ProductOwnerQuickActions.js +0 -120
  537. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  538. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  539. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  540. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  541. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  542. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  543. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  544. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  545. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  546. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  547. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  548. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  549. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  550. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  551. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  552. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  553. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  554. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  555. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  556. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  557. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  558. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  559. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  560. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  561. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  562. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  563. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  564. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  565. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  566. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  567. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  568. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  569. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  570. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  571. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  572. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  573. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  574. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  575. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  576. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  577. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  578. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  579. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  580. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  581. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  582. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  583. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  584. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  585. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  586. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  587. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  588. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  589. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  590. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  591. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  592. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  593. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  594. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  595. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  596. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  597. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  598. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  599. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  600. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  601. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  602. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  603. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  604. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  605. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  606. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  607. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  608. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  609. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  610. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  611. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  612. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  613. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  614. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  615. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  616. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  617. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  618. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  619. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  620. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  621. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  622. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  623. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  624. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  625. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  626. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  627. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  628. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  629. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  630. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  631. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  632. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  633. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  634. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  635. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  636. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  637. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  638. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  639. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  640. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  641. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  642. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  643. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  644. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  645. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  646. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  647. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  648. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  649. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  650. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  651. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  652. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  653. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  654. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  655. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  656. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  657. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  658. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  659. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  660. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  661. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  662. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  663. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  664. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  665. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  666. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  667. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  668. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  669. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  670. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  671. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  672. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  673. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  674. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  675. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  676. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  677. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  678. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  679. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  680. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  681. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  682. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  683. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  684. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  685. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  686. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  687. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  688. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  689. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  690. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  691. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  692. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  693. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  694. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  695. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  696. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  697. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  698. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  699. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  700. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  701. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  702. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  703. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  704. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  705. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  706. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  707. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  708. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  709. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  710. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  711. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  712. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  713. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  714. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  715. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  716. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  717. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  718. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  719. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  720. package/dist/features/tester/seed-data/authored/index.js +0 -301
  721. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  722. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  723. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  724. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  725. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  726. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  727. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  728. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  729. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  730. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  731. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  732. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  733. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  734. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  735. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  736. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  737. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  738. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  739. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  740. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  741. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  742. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  743. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  744. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  745. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  746. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  747. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  748. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  749. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  750. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  751. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  752. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  753. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  754. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  755. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  756. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  757. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  758. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  759. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  760. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  761. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  762. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  763. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  764. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  765. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  766. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  767. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  768. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  769. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  770. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  771. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  772. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  773. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  774. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  775. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  776. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  777. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  778. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  779. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  780. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  781. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  782. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  783. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  784. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  785. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  786. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  787. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  788. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  789. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  790. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  791. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  792. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  793. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  794. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  795. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  796. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  797. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  798. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  799. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  800. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  801. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  802. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  803. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  804. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  805. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  806. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  807. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  808. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  809. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  810. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  811. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  812. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  813. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  814. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  815. package/dist/features/tester/seed-data/index.d.ts +0 -2
  816. package/dist/features/tester/seed-data/index.js +0 -2
  817. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  818. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  819. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  820. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  821. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  822. package/dist/features/tester/seed-data/tester-window.js +0 -66
  823. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  824. package/dist/seed/_helpers/brand-rows.js +0 -600
  825. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  826. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  827. package/dist/seed/_helpers/category-content.d.ts +0 -68
  828. package/dist/seed/_helpers/category-content.js +0 -731
  829. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  830. package/dist/seed/_helpers/category-forest.js +0 -824
  831. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  832. package/dist/seed/_helpers/category-images-generated.js +0 -618
  833. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  834. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  835. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  836. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  837. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  838. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  839. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  840. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  841. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  842. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  843. package/dist/seed/_helpers/category-models.d.ts +0 -12
  844. package/dist/seed/_helpers/category-models.js +0 -45
  845. package/dist/seed/_helpers/category-names.d.ts +0 -54
  846. package/dist/seed/_helpers/category-names.js +0 -118
  847. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  848. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  849. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  850. package/dist/seed/_helpers/category-parts.js +0 -15022
  851. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  852. package/dist/seed/_helpers/category-tree.js +0 -119
  853. package/dist/seed/_helpers/character-features.d.ts +0 -10
  854. package/dist/seed/_helpers/character-features.js +0 -120
  855. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  856. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  857. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  858. package/dist/seed/_helpers/franchise-rows.js +0 -189
  859. package/dist/seed/_helpers/media.d.ts +0 -67
  860. package/dist/seed/_helpers/media.js +0 -172
  861. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  862. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  863. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  864. package/dist/seed/_helpers/product-search-txt.js +0 -23
  865. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  866. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  867. package/dist/seed/addresses-seed-data.d.ts +0 -2
  868. package/dist/seed/addresses-seed-data.js +0 -78
  869. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  870. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  871. package/dist/seed/bey-products-seed-data.d.ts +0 -18
  872. package/dist/seed/bey-products-seed-data.js +0 -18011
  873. package/dist/seed/beys/chunk0.d.ts +0 -17
  874. package/dist/seed/beys/chunk0.js +0 -36733
  875. package/dist/seed/beys/chunk1.d.ts +0 -17
  876. package/dist/seed/beys/chunk1.js +0 -35728
  877. package/dist/seed/beys/chunk2.d.ts +0 -17
  878. package/dist/seed/beys/chunk2.js +0 -35857
  879. package/dist/seed/beys/chunk3.d.ts +0 -17
  880. package/dist/seed/beys/chunk3.js +0 -34476
  881. package/dist/seed/beys-seed-data.d.ts +0 -18
  882. package/dist/seed/beys-seed-data.js +0 -11
  883. package/dist/seed/bids-seed-data.d.ts +0 -2
  884. package/dist/seed/bids-seed-data.js +0 -206
  885. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  886. package/dist/seed/blog-posts-seed-data.js +0 -442
  887. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  888. package/dist/seed/carousel-slides-seed-data.js +0 -411
  889. package/dist/seed/carousels-seed-data.d.ts +0 -2
  890. package/dist/seed/carousels-seed-data.js +0 -36
  891. package/dist/seed/cart-seed-data.d.ts +0 -2
  892. package/dist/seed/cart-seed-data.js +0 -241
  893. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  894. package/dist/seed/catalogue-seed-data.js +0 -112
  895. package/dist/seed/categories-seed-data.d.ts +0 -3
  896. package/dist/seed/categories-seed-data.js +0 -816
  897. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  898. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  899. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  900. package/dist/seed/coupon-usage-seed-data.js +0 -55
  901. package/dist/seed/coupons-seed-data.d.ts +0 -2
  902. package/dist/seed/coupons-seed-data.js +0 -226
  903. package/dist/seed/defaults/categories.d.ts +0 -2
  904. package/dist/seed/defaults/categories.js +0 -12
  905. package/dist/seed/defaults/faqs.d.ts +0 -2
  906. package/dist/seed/defaults/faqs.js +0 -40
  907. package/dist/seed/events-seed-data.d.ts +0 -7
  908. package/dist/seed/events-seed-data.js +0 -482
  909. package/dist/seed/factories/address.factory.d.ts +0 -21
  910. package/dist/seed/factories/address.factory.js +0 -44
  911. package/dist/seed/factories/bid.factory.d.ts +0 -15
  912. package/dist/seed/factories/bid.factory.js +0 -33
  913. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  914. package/dist/seed/factories/blog-post.factory.js +0 -22
  915. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  916. package/dist/seed/factories/carousel.factory.js +0 -17
  917. package/dist/seed/factories/cart.factory.d.ts +0 -25
  918. package/dist/seed/factories/cart.factory.js +0 -35
  919. package/dist/seed/factories/category.factory.d.ts +0 -11
  920. package/dist/seed/factories/category.factory.js +0 -16
  921. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  922. package/dist/seed/factories/coupon.factory.js +0 -43
  923. package/dist/seed/factories/faq.factory.d.ts +0 -10
  924. package/dist/seed/factories/faq.factory.js +0 -15
  925. package/dist/seed/factories/notification.factory.d.ts +0 -18
  926. package/dist/seed/factories/notification.factory.js +0 -39
  927. package/dist/seed/factories/order.factory.d.ts +0 -20
  928. package/dist/seed/factories/order.factory.js +0 -20
  929. package/dist/seed/factories/payout.factory.d.ts +0 -21
  930. package/dist/seed/factories/payout.factory.js +0 -38
  931. package/dist/seed/factories/product.factory.d.ts +0 -27
  932. package/dist/seed/factories/product.factory.js +0 -80
  933. package/dist/seed/factories/review.factory.d.ts +0 -14
  934. package/dist/seed/factories/review.factory.js +0 -52
  935. package/dist/seed/factories/session.factory.d.ts +0 -15
  936. package/dist/seed/factories/session.factory.js +0 -31
  937. package/dist/seed/factories/store.factory.d.ts +0 -23
  938. package/dist/seed/factories/store.factory.js +0 -47
  939. package/dist/seed/factories/user.factory.d.ts +0 -19
  940. package/dist/seed/factories/user.factory.js +0 -56
  941. package/dist/seed/faq-seed-data.d.ts +0 -18
  942. package/dist/seed/faq-seed-data.js +0 -1956
  943. package/dist/seed/firestore-indexes.d.ts +0 -12
  944. package/dist/seed/firestore-indexes.js +0 -31
  945. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  946. package/dist/seed/grouped-listings-seed-data.js +0 -283
  947. package/dist/seed/history-seed-data.d.ts +0 -12
  948. package/dist/seed/history-seed-data.js +0 -70
  949. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  950. package/dist/seed/homepage-sections-seed-data.js +0 -1034
  951. package/dist/seed/index.d.ts +0 -100
  952. package/dist/seed/index.js +0 -115
  953. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  954. package/dist/seed/lottery-entries-seed-data.js +0 -108
  955. package/dist/seed/manifest.d.ts +0 -16
  956. package/dist/seed/manifest.js +0 -235
  957. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  958. package/dist/seed/media-assets-seed-data.js +0 -5593
  959. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  960. package/dist/seed/model-composition-seed-data.js +0 -9032
  961. package/dist/seed/notifications-seed-data.d.ts +0 -2
  962. package/dist/seed/notifications-seed-data.js +0 -606
  963. package/dist/seed/offers-seed-data.d.ts +0 -2
  964. package/dist/seed/offers-seed-data.js +0 -398
  965. package/dist/seed/orders-seed-data.d.ts +0 -2
  966. package/dist/seed/orders-seed-data.js +0 -845
  967. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  968. package/dist/seed/part-glossary/chunk0.js +0 -35448
  969. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  970. package/dist/seed/part-glossary/chunk1.js +0 -40494
  971. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  972. package/dist/seed/part-glossary/chunk2.js +0 -51242
  973. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  974. package/dist/seed/part-glossary/chunk3.js +0 -53337
  975. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  976. package/dist/seed/part-glossary/chunk4.js +0 -51454
  977. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  978. package/dist/seed/part-glossary-seed-data.js +0 -25
  979. package/dist/seed/payouts-seed-data.d.ts +0 -2
  980. package/dist/seed/payouts-seed-data.js +0 -302
  981. package/dist/seed/product-features-seed-data.d.ts +0 -3
  982. package/dist/seed/product-features-seed-data.js +0 -366
  983. package/dist/seed/products-art-seed-data.d.ts +0 -2
  984. package/dist/seed/products-art-seed-data.js +0 -289
  985. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  986. package/dist/seed/products-auctions-seed-data.js +0 -475
  987. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  988. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  989. package/dist/seed/products-catalogue/chunk0.d.ts +0 -12
  990. package/dist/seed/products-catalogue/chunk0.js +0 -7262
  991. package/dist/seed/products-catalogue/chunk1.d.ts +0 -12
  992. package/dist/seed/products-catalogue/chunk1.js +0 -7290
  993. package/dist/seed/products-catalogue/chunk10.d.ts +0 -12
  994. package/dist/seed/products-catalogue/chunk10.js +0 -7290
  995. package/dist/seed/products-catalogue/chunk11.d.ts +0 -12
  996. package/dist/seed/products-catalogue/chunk11.js +0 -7005
  997. package/dist/seed/products-catalogue/chunk12.d.ts +0 -12
  998. package/dist/seed/products-catalogue/chunk12.js +0 -7002
  999. package/dist/seed/products-catalogue/chunk13.d.ts +0 -12
  1000. package/dist/seed/products-catalogue/chunk13.js +0 -7002
  1001. package/dist/seed/products-catalogue/chunk14.d.ts +0 -12
  1002. package/dist/seed/products-catalogue/chunk14.js +0 -7002
  1003. package/dist/seed/products-catalogue/chunk15.d.ts +0 -12
  1004. package/dist/seed/products-catalogue/chunk15.js +0 -7002
  1005. package/dist/seed/products-catalogue/chunk16.d.ts +0 -12
  1006. package/dist/seed/products-catalogue/chunk16.js +0 -7002
  1007. package/dist/seed/products-catalogue/chunk17.d.ts +0 -12
  1008. package/dist/seed/products-catalogue/chunk17.js +0 -7002
  1009. package/dist/seed/products-catalogue/chunk18.d.ts +0 -12
  1010. package/dist/seed/products-catalogue/chunk18.js +0 -4398
  1011. package/dist/seed/products-catalogue/chunk2.d.ts +0 -12
  1012. package/dist/seed/products-catalogue/chunk2.js +0 -7268
  1013. package/dist/seed/products-catalogue/chunk3.d.ts +0 -12
  1014. package/dist/seed/products-catalogue/chunk3.js +0 -7264
  1015. package/dist/seed/products-catalogue/chunk4.d.ts +0 -12
  1016. package/dist/seed/products-catalogue/chunk4.js +0 -7268
  1017. package/dist/seed/products-catalogue/chunk5.d.ts +0 -12
  1018. package/dist/seed/products-catalogue/chunk5.js +0 -7258
  1019. package/dist/seed/products-catalogue/chunk6.d.ts +0 -12
  1020. package/dist/seed/products-catalogue/chunk6.js +0 -7268
  1021. package/dist/seed/products-catalogue/chunk7.d.ts +0 -12
  1022. package/dist/seed/products-catalogue/chunk7.js +0 -7311
  1023. package/dist/seed/products-catalogue/chunk8.d.ts +0 -12
  1024. package/dist/seed/products-catalogue/chunk8.js +0 -7304
  1025. package/dist/seed/products-catalogue/chunk9.d.ts +0 -12
  1026. package/dist/seed/products-catalogue/chunk9.js +0 -7309
  1027. package/dist/seed/products-catalogue-seed-data.d.ts +0 -2
  1028. package/dist/seed/products-catalogue-seed-data.js +0 -60
  1029. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  1030. package/dist/seed/products-classifieds-seed-data.js +0 -435
  1031. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  1032. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  1033. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  1034. package/dist/seed/products-live-items-seed-data.js +0 -269
  1035. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  1036. package/dist/seed/products-preorders-seed-data.js +0 -360
  1037. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  1038. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  1039. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  1040. package/dist/seed/products-spares-seed-data.js +0 -368
  1041. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  1042. package/dist/seed/products-standard-seed-data.js +0 -632
  1043. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  1044. package/dist/seed/products-stickers-seed-data.js +0 -319
  1045. package/dist/seed/reviews-seed-data.d.ts +0 -1
  1046. package/dist/seed/reviews-seed-data.js +0 -185
  1047. package/dist/seed/runner.d.ts +0 -2
  1048. package/dist/seed/runner.js +0 -125
  1049. package/dist/seed/scammers-seed-data.d.ts +0 -2
  1050. package/dist/seed/scammers-seed-data.js +0 -235
  1051. package/dist/seed/seed-market-config.d.ts +0 -48
  1052. package/dist/seed/seed-market-config.js +0 -199
  1053. package/dist/seed/seed-purpose.d.ts +0 -299
  1054. package/dist/seed/seed-purpose.js +0 -440
  1055. package/dist/seed/sessions-seed-data.d.ts +0 -3
  1056. package/dist/seed/sessions-seed-data.js +0 -116
  1057. package/dist/seed/shipments-seed-data.d.ts +0 -5
  1058. package/dist/seed/shipments-seed-data.js +0 -185
  1059. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  1060. package/dist/seed/site-settings-seed-data.js +0 -1069
  1061. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  1062. package/dist/seed/store-addresses-seed-data.js +0 -71
  1063. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  1064. package/dist/seed/store-extensions-seed-data.js +0 -292
  1065. package/dist/seed/stores-seed-data.d.ts +0 -6
  1066. package/dist/seed/stores-seed-data.js +0 -242
  1067. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  1068. package/dist/seed/support-tickets-seed-data.js +0 -239
  1069. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  1070. package/dist/seed/tax-codes-seed-data.js +0 -100
  1071. package/dist/seed/test-data-ttl.d.ts +0 -29
  1072. package/dist/seed/test-data-ttl.js +0 -31
  1073. package/dist/seed/test-utils.d.ts +0 -49
  1074. package/dist/seed/test-utils.js +0 -110
  1075. package/dist/seed/types.d.ts +0 -89
  1076. package/dist/seed/types.js +0 -15
  1077. package/dist/seed/users-seed-data.d.ts +0 -2
  1078. package/dist/seed/users-seed-data.js +0 -597
  1079. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  1080. package/dist/seed/wishlists-seed-data.js +0 -54
@@ -1,1956 +0,0 @@
1
- /*
2
- * WHY: Seeds 63 FAQs for LetItRip collectibles marketplace — covers general platform, shipping,
3
- * returns, payments, auctions, pre-orders, product info, account/security, scam awareness.
4
- * WHAT: Mix of broad collectibles marketplace FAQs + category-specific FAQs (trading cards, action figures,
5
- * diecast, Beyblade, model kits, grading, authenticity, bundles, prize draws), plus (Phase 17,
6
- * 2026-08-17) the verified-badge trust system, classifieds, digital codes, live items, personal
7
- * catalogue, and seller procurement shipments — features shipped since the FAQs were last written.
8
- *
9
- * EXPORTS:
10
- * faqSeedData — Array of Partial<FAQDocument> for seed runner
11
- *
12
- * @tag domain:faqs
13
- * @tag layer:seed
14
- * @tag pattern:none
15
- * @tag access:server-only
16
- * @tag consumers:seed/index.ts,seed/runner.ts
17
- * @tag sideEffects:none
18
- */
19
- import { buildFaqSearchTxt } from "../features/faq/repository/faqs.repository.js";
20
- const NOW = new Date();
21
- const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
22
- const html = (text) => ({ text, format: "html" });
23
- const makeStats = (views = 0, helpful = 0) => ({ views, helpful, notHelpful: 0 });
24
- const faqSeedRecords = [
25
- // ── GENERAL (10) ────────────────────────────────────────────────────────────
26
- {
27
- id: "faq-what-is-letitrip",
28
- question: "What is LetItRip?",
29
- answer: html(`<p><strong>LetItRip</strong> is India's largest collectibles marketplace — trading cards (Pokémon, Yu-Gi-Oh!, One Piece), action figures (Bandai, McFarlane, Good Smile), diecast vehicles (Hot Wheels, Tomica), Beyblades, model kits (Gundam, Zoids), and vintage/rare collectibles. Every seller is manually verified before they can list.</p><p>LetItRip is a <strong>platform</strong> that connects buyers with independent sellers. We handle payments, escrow, and dispute mediation — but we are not the seller. Each store has its own shipping, return, and authenticity policies.</p>`),
30
- category: "general",
31
- showOnHomepage: true,
32
- showInFooter: false,
33
- isPinned: true,
34
- order: 1,
35
- priority: 10,
36
- tags: ["about", "letitrip", "platform", "marketplace", "collectibles"],
37
- relatedFAQs: ["faq-is-letitrip-safe", "faq-how-does-letitrip-work"],
38
- useSiteSettings: true,
39
- variables: {},
40
- stats: makeStats(8200, 410),
41
- seo: { slug: "faq-what-is-letitrip", metaTitle: "What is LetItRip? India's Collectibles Marketplace", metaDescription: "LetItRip is India's verified collectibles marketplace for trading cards, action figures, diecast vehicles, and more." },
42
- isActive: true,
43
- createdBy: "user-admin-letitrip",
44
- createdAt: daysAgo(120),
45
- updatedAt: daysAgo(5),
46
- },
47
- {
48
- id: "faq-is-letitrip-safe",
49
- question: "Is LetItRip safe to buy from?",
50
- answer: html(`<p>Yes. All sellers are verified before they can list. Payments go through secure escrow — sellers only get paid after you confirm delivery. If something goes wrong, our support team mediates the dispute.</p>`),
51
- category: "general",
52
- showOnHomepage: true,
53
- showInFooter: false,
54
- isPinned: false,
55
- order: 2,
56
- priority: 9,
57
- tags: ["safety", "escrow", "trust"],
58
- relatedFAQs: ["faq-what-is-letitrip", "faq-what-is-escrow"],
59
- stats: makeStats(5400, 270),
60
- seo: { slug: "faq-is-letitrip-safe", metaTitle: "Is LetItRip Safe?", metaDescription: "Learn about LetItRip's seller verification, payment escrow, and buyer protection." },
61
- isActive: true,
62
- createdBy: "user-admin-letitrip",
63
- createdAt: daysAgo(120),
64
- updatedAt: daysAgo(10),
65
- },
66
- {
67
- id: "faq-how-does-letitrip-work",
68
- question: "How does buying on LetItRip work?",
69
- answer: html(`<p>Browse verified stores, add items to your cart, and checkout with Razorpay (UPI, cards, net banking). Your payment is held in escrow until you confirm delivery. Sellers ship directly to you — check each store's shipping policy for timelines.</p>`),
70
- category: "general",
71
- showOnHomepage: true,
72
- showInFooter: true,
73
- isPinned: false,
74
- order: 3,
75
- priority: 8,
76
- tags: ["buying", "checkout", "how-it-works"],
77
- relatedFAQs: ["faq-what-is-escrow", "faq-payment-methods"],
78
- stats: makeStats(4100, 205),
79
- seo: { slug: "faq-how-does-letitrip-work", metaTitle: "How Does LetItRip Work?", metaDescription: "Step-by-step guide to buying collectibles on LetItRip." },
80
- isActive: true,
81
- createdBy: "user-admin-letitrip",
82
- createdAt: daysAgo(110),
83
- updatedAt: daysAgo(8),
84
- },
85
- {
86
- id: "faq-how-to-sell-on-letitrip",
87
- question: "How do I become a seller on LetItRip?",
88
- answer: html(`<p>Go to your Account → Become a Seller. Fill in your store details, upload verification documents, and submit for review. Our team typically approves sellers within 48 hours. Once approved, you can start listing immediately.</p>`),
89
- category: "general",
90
- showOnHomepage: true,
91
- showInFooter: true,
92
- isPinned: false,
93
- order: 4,
94
- priority: 7,
95
- tags: ["seller", "registration", "store"],
96
- relatedFAQs: ["faq-seller-fees", "faq-seller-payout-schedule"],
97
- stats: makeStats(3200, 160),
98
- seo: { slug: "faq-how-to-sell-on-letitrip", metaTitle: "How to Sell on LetItRip", metaDescription: "Become a verified seller on India's largest collectibles marketplace." },
99
- isActive: true,
100
- createdBy: "user-admin-letitrip",
101
- createdAt: daysAgo(100),
102
- updatedAt: daysAgo(15),
103
- },
104
- {
105
- id: "faq-what-categories-available",
106
- question: "What types of collectibles can I find on LetItRip?",
107
- answer: html(`<p>LetItRip covers six major categories: <strong>Trading Cards</strong> (Pokémon, Yu-Gi-Oh!, One Piece, Dragon Ball), <strong>Action Figures</strong> (Bandai, McFarlane, Good Smile, NECA, Funko Pop), <strong>Diecast Vehicles</strong> (Hot Wheels, Tomica, Matchbox), <strong>Spinning Tops</strong> (Beyblade X, Burst, Metal Saga), <strong>Model Kits</strong> (Gundam, Zoids, Evangelion), and <strong>Vintage & Rare</strong> collectibles. Each category has subcategories for easy browsing.</p>`),
108
- category: "general",
109
- showOnHomepage: false,
110
- showInFooter: false,
111
- isPinned: false,
112
- order: 5,
113
- priority: 6,
114
- tags: ["categories", "products", "collectibles"],
115
- relatedFAQs: ["faq-what-is-letitrip"],
116
- stats: makeStats(2800, 140),
117
- seo: { slug: "faq-what-categories-available", metaTitle: "What Collectibles Are on LetItRip?", metaDescription: "Browse trading cards, action figures, diecast, Beyblades, model kits, and vintage collectibles." },
118
- isActive: true,
119
- createdBy: "user-admin-letitrip",
120
- createdAt: daysAgo(95),
121
- updatedAt: daysAgo(20),
122
- },
123
- {
124
- id: "faq-make-an-offer",
125
- question: "Can I negotiate the price with a seller?",
126
- answer: html(`<p>Yes! Most listings have a "Make an Offer" button. Submit your offer and the seller can accept, counter, or decline. If accepted, the item is locked at the agreed price for 24 hours so you can complete checkout.</p>`),
127
- category: "general",
128
- showOnHomepage: false,
129
- showInFooter: false,
130
- isPinned: false,
131
- order: 6,
132
- priority: 6,
133
- tags: ["offer", "negotiation", "price"],
134
- relatedFAQs: ["faq-how-does-letitrip-work"],
135
- stats: makeStats(2500, 125),
136
- seo: { slug: "faq-make-an-offer", metaTitle: "Make an Offer on LetItRip", metaDescription: "Negotiate prices with sellers on India's collectibles marketplace." },
137
- isActive: true,
138
- createdBy: "user-admin-letitrip",
139
- createdAt: daysAgo(88),
140
- updatedAt: daysAgo(14),
141
- },
142
- {
143
- id: "faq-what-is-escrow",
144
- question: "What is escrow and how does it protect me?",
145
- answer: html(`<p>Escrow means your payment is held by LetItRip — not sent directly to the seller. The seller ships the item, you receive it, and only when you confirm delivery (or 7 days pass without a dispute) does the seller get paid. This protects both buyers and sellers from fraud.</p>`),
146
- category: "general",
147
- showOnHomepage: true,
148
- showInFooter: false,
149
- isPinned: false,
150
- order: 7,
151
- priority: 9,
152
- tags: ["escrow", "trust", "buyer-protection"],
153
- relatedFAQs: ["faq-is-letitrip-safe", "faq-payment-methods"],
154
- stats: makeStats(4300, 215),
155
- seo: { slug: "faq-what-is-escrow", metaTitle: "How Escrow Works on LetItRip", metaDescription: "Understand how escrow protects your collectibles purchases." },
156
- isActive: true,
157
- createdBy: "user-admin-letitrip",
158
- createdAt: daysAgo(108),
159
- updatedAt: daysAgo(8),
160
- },
161
- {
162
- id: "faq-wishlists-and-alerts",
163
- question: "Can I save items and get notified about price drops?",
164
- answer: html(`<p>Yes! Add any listing to your Wishlist (up to 20 items). You'll receive notifications when a wishlisted item drops in price, gets relisted, or when similar items appear. Your recently viewed items are also saved in your browsing history (up to 50).</p>`),
165
- category: "general",
166
- showOnHomepage: false,
167
- showInFooter: false,
168
- isPinned: false,
169
- order: 8,
170
- priority: 5,
171
- tags: ["wishlist", "alerts", "price-drop", "history"],
172
- relatedFAQs: ["faq-how-does-letitrip-work"],
173
- stats: makeStats(1800, 90),
174
- seo: { slug: "faq-wishlists-and-alerts", metaTitle: "Wishlists & Price Alerts", metaDescription: "Save items and get price drop alerts on LetItRip." },
175
- isActive: true,
176
- createdBy: "user-admin-letitrip",
177
- createdAt: daysAgo(60),
178
- updatedAt: daysAgo(8),
179
- },
180
- {
181
- id: "faq-bundles-and-deals",
182
- question: "What are bundles and how do they save me money?",
183
- answer: html(`<p>Bundles are curated sets of related collectibles sold at a discount. For example, a complete Beyblade starter set or a sealed Pokémon booster box + sleeves + playmat combo. Sellers create bundles to offer savings on grouped items — look for the savings badge on each bundle listing.</p>`),
184
- category: "general",
185
- showOnHomepage: false,
186
- showInFooter: false,
187
- isPinned: false,
188
- order: 9,
189
- priority: 5,
190
- tags: ["bundles", "deals", "savings"],
191
- relatedFAQs: ["faq-what-categories-available"],
192
- stats: makeStats(1400, 70),
193
- seo: { slug: "faq-bundles-and-deals", metaTitle: "Bundles & Deals on LetItRip", metaDescription: "Save money on curated collectible bundles on LetItRip." },
194
- isActive: true,
195
- createdBy: "user-admin-letitrip",
196
- createdAt: daysAgo(30),
197
- updatedAt: daysAgo(5),
198
- },
199
- {
200
- id: "faq-prize-draws-how-they-work",
201
- question: "How do prize draws and spin wheels work?",
202
- answer: html(`<p>LetItRip runs community prize draws tied to events. Enter eligible events for a chance to win rare collectibles. Some events feature a spin wheel — spin for instant prizes like discount coupons or free shipping. Winners are selected using cryptographically random selection. Check the Events page for active draws.</p>`),
203
- category: "general",
204
- showOnHomepage: false,
205
- showInFooter: false,
206
- isPinned: false,
207
- order: 10,
208
- priority: 5,
209
- tags: ["prize-draw", "spin-wheel", "events", "raffle"],
210
- relatedFAQs: ["faq-community-events"],
211
- stats: makeStats(1100, 55),
212
- seo: { slug: "faq-prize-draws-how-they-work", metaTitle: "Prize Draws & Spin Wheels", metaDescription: "Enter prize draws and spin wheels to win rare collectibles on LetItRip." },
213
- isActive: true,
214
- createdBy: "user-admin-letitrip",
215
- createdAt: daysAgo(20),
216
- updatedAt: daysAgo(3),
217
- },
218
- // ── SHIPPING & DELIVERY (7) ────────────────────────────────────────────────
219
- {
220
- id: "faq-how-long-does-shipping-take",
221
- question: "How long does shipping take?",
222
- answer: html(`<p>Shipping timelines depend on the seller's location and chosen courier. Most sellers ship within 1–3 business days. Domestic delivery typically takes 3–7 business days. Check each store's shipping policy for specifics.</p>`),
223
- category: "shipping_delivery",
224
- showOnHomepage: true,
225
- showInFooter: false,
226
- isPinned: false,
227
- order: 11,
228
- priority: 9,
229
- tags: ["shipping", "delivery", "timeline"],
230
- relatedFAQs: ["faq-track-my-order", "faq-how-are-cards-packaged"],
231
- stats: makeStats(6100, 305),
232
- seo: { slug: "faq-how-long-does-shipping-take", metaTitle: "Shipping Times on LetItRip", metaDescription: "Typical shipping timelines for collectibles orders on LetItRip." },
233
- isActive: true,
234
- createdBy: "user-admin-letitrip",
235
- createdAt: daysAgo(115),
236
- updatedAt: daysAgo(7),
237
- },
238
- {
239
- id: "faq-how-are-cards-packaged",
240
- question: "How are collectibles packaged for shipping?",
241
- answer: html(`<p>All verified sellers follow category-specific packaging standards: <strong>Trading cards</strong> — penny sleeves + top-loaders, rigid mailers. <strong>Action figures</strong> — bubble wrap, double-boxed for mint-in-box items. <strong>Diecast/Beyblade</strong> — foam inserts, padded boxes. <strong>Graded slabs</strong> — padded fitted boxes. If an item arrives damaged due to poor packaging, open a dispute and our team will mediate.</p>`),
242
- category: "shipping_delivery",
243
- showOnHomepage: false,
244
- showInFooter: false,
245
- isPinned: false,
246
- order: 12,
247
- priority: 7,
248
- tags: ["packaging", "shipping", "protection"],
249
- relatedFAQs: ["faq-damaged-in-transit"],
250
- stats: makeStats(3400, 170),
251
- seo: { slug: "faq-how-are-cards-packaged", metaTitle: "Packaging Standards for Collectibles", metaDescription: "How sellers package collectibles for safe delivery on LetItRip." },
252
- isActive: true,
253
- createdBy: "user-admin-letitrip",
254
- createdAt: daysAgo(110),
255
- updatedAt: daysAgo(12),
256
- },
257
- {
258
- id: "faq-free-shipping-available",
259
- question: "Is free shipping available?",
260
- answer: html(`<p>Many sellers offer free shipping on orders above a certain amount. Look for the "Free Shipping" badge on product listings. You can also use the FREESHIP499 coupon for free shipping on orders ₹499+.</p>`),
261
- category: "shipping_delivery",
262
- showOnHomepage: true,
263
- showInFooter: false,
264
- isPinned: false,
265
- order: 13,
266
- priority: 6,
267
- tags: ["free-shipping", "coupons"],
268
- relatedFAQs: ["faq-coupons-and-discounts"],
269
- stats: makeStats(2900, 145),
270
- seo: { slug: "faq-free-shipping-available", metaTitle: "Free Shipping on LetItRip", metaDescription: "How to get free shipping on your collectibles orders." },
271
- isActive: true,
272
- createdBy: "user-admin-letitrip",
273
- createdAt: daysAgo(100),
274
- updatedAt: daysAgo(14),
275
- },
276
- {
277
- id: "faq-international-shipping",
278
- question: "Do you ship internationally?",
279
- answer: html(`<p>LetItRip currently operates within India only. International shipping is not supported at this time. We're working on expanding to more countries — stay tuned!</p>`),
280
- category: "shipping_delivery",
281
- showOnHomepage: false,
282
- showInFooter: false,
283
- isPinned: false,
284
- order: 14,
285
- priority: 5,
286
- tags: ["international", "shipping"],
287
- relatedFAQs: [],
288
- stats: makeStats(1800, 90),
289
- seo: { slug: "faq-international-shipping", metaTitle: "International Shipping", metaDescription: "LetItRip currently ships within India only." },
290
- isActive: true,
291
- createdBy: "user-admin-letitrip",
292
- createdAt: daysAgo(90),
293
- updatedAt: daysAgo(30),
294
- },
295
- {
296
- id: "faq-track-my-order",
297
- question: "How do I track my order?",
298
- answer: html(`<p>Once your seller ships the order, you'll receive a carrier name and tracking number via email and in-app notification. Go to Account → My Orders → click the order to see it. Paste the tracking number into the carrier's own website (India Post, DTDC, BlueDart, Delhivery, etc.) for real-time updates — sellers ship manually, so tracking is via the carrier's site, not an in-app live map.</p>`),
299
- category: "shipping_delivery",
300
- showOnHomepage: true,
301
- showInFooter: false,
302
- isPinned: false,
303
- order: 15,
304
- priority: 8,
305
- tags: ["tracking", "orders"],
306
- relatedFAQs: ["faq-how-long-does-shipping-take"],
307
- stats: makeStats(4500, 225),
308
- seo: { slug: "faq-track-my-order", metaTitle: "Track Your Order", metaDescription: "How to track your collectibles order on LetItRip." },
309
- isActive: true,
310
- createdBy: "user-admin-letitrip",
311
- createdAt: daysAgo(105),
312
- updatedAt: daysAgo(9),
313
- },
314
- {
315
- id: "faq-shipping-for-large-items",
316
- question: "How are large items like statues and display cases shipped?",
317
- answer: html(`<p>Oversized items (large action figures, resin statues, display shelves) are shipped via specialist couriers with additional insurance. Sellers may charge a higher shipping fee for fragile oversized items. Delivery timelines for these may be 5–10 business days depending on location.</p>`),
318
- category: "shipping_delivery",
319
- showOnHomepage: false,
320
- showInFooter: false,
321
- isPinned: false,
322
- order: 16,
323
- priority: 5,
324
- tags: ["large-items", "shipping", "statues", "insurance"],
325
- relatedFAQs: ["faq-how-are-cards-packaged"],
326
- stats: makeStats(900, 45),
327
- seo: { slug: "faq-shipping-for-large-items", metaTitle: "Shipping Large Collectibles", metaDescription: "How oversized items like statues and display cases are shipped on LetItRip." },
328
- isActive: true,
329
- createdBy: "user-admin-letitrip",
330
- createdAt: daysAgo(45),
331
- updatedAt: daysAgo(10),
332
- },
333
- {
334
- id: "faq-how-sellers-ship",
335
- question: "How do sellers ship orders on LetItRip?",
336
- answer: html(`<p>Sellers ship manually — they pack your order, hand it to their courier of choice, and enter the carrier name plus tracking number into their dashboard. That's what appears on your order page. There's no single integrated courier, so delivery speed and tracking detail can vary by seller.</p>`),
337
- category: "shipping_delivery",
338
- showOnHomepage: false,
339
- showInFooter: false,
340
- isPinned: false,
341
- order: 17,
342
- priority: 6,
343
- tags: ["shipping", "tracking", "sellers"],
344
- relatedFAQs: ["faq-track-my-order"],
345
- stats: makeStats(1500, 75),
346
- seo: { slug: "faq-how-sellers-ship", metaTitle: "How Sellers Ship Orders", metaDescription: "How sellers ship and track orders on LetItRip." },
347
- isActive: true,
348
- createdBy: "user-admin-letitrip",
349
- createdAt: daysAgo(40),
350
- updatedAt: daysAgo(8),
351
- },
352
- // ── RETURNS & REFUNDS (7) ─────────────────────────────────────────────────
353
- {
354
- id: "faq-return-policy",
355
- question: "What is LetItRip's return policy?",
356
- answer: html(`<p>Each store sets its own return policy. Most stores accept returns within 7 days for items not as described. Graded cards (PSA/BGS/CGC) and sealed products are typically final sale. Always check the store's return policy before purchasing. If a seller doesn't honor their policy, open a support ticket and we'll mediate.</p>`),
357
- category: "returns_refunds",
358
- showOnHomepage: true,
359
- showInFooter: true,
360
- isPinned: false,
361
- order: 18,
362
- priority: 9,
363
- tags: ["returns", "refunds", "policy"],
364
- relatedFAQs: ["faq-how-to-request-refund", "faq-counterfeit-guarantee"],
365
- stats: makeStats(5800, 290),
366
- seo: { slug: "faq-return-policy", metaTitle: "Return Policy on LetItRip", metaDescription: "Understand return policies for collectibles purchases on LetItRip." },
367
- isActive: true,
368
- createdBy: "user-admin-letitrip",
369
- createdAt: daysAgo(115),
370
- updatedAt: daysAgo(6),
371
- },
372
- {
373
- id: "faq-how-to-request-refund",
374
- question: "How do I request a refund?",
375
- answer: html(`<p>Go to Account → My Orders → select the order → Request Refund. Describe the issue and upload photos if the item is damaged or not as described. The seller has 48 hours to respond. If they don't, LetItRip support will step in.</p>`),
376
- category: "returns_refunds",
377
- showOnHomepage: true,
378
- showInFooter: false,
379
- isPinned: false,
380
- order: 19,
381
- priority: 8,
382
- tags: ["refund", "dispute", "support"],
383
- relatedFAQs: ["faq-return-policy", "faq-refund-timeline"],
384
- stats: makeStats(3700, 185),
385
- seo: { slug: "faq-how-to-request-refund", metaTitle: "Request a Refund", metaDescription: "How to request a refund for your LetItRip order." },
386
- isActive: true,
387
- createdBy: "user-admin-letitrip",
388
- createdAt: daysAgo(100),
389
- updatedAt: daysAgo(11),
390
- },
391
- {
392
- id: "faq-card-not-as-described",
393
- question: "What if the item I received doesn't match the listing?",
394
- answer: html(`<p>If the condition, edition, brand, or any detail doesn't match what was listed, you're eligible for a full refund. Take clear photos of the item next to the listing screenshots, then open a dispute through Account → My Orders. Our team reviews disputes within 24 hours.</p>`),
395
- category: "returns_refunds",
396
- showOnHomepage: false,
397
- showInFooter: false,
398
- isPinned: false,
399
- order: 20,
400
- priority: 7,
401
- tags: ["dispute", "condition", "mismatch"],
402
- relatedFAQs: ["faq-how-to-request-refund"],
403
- stats: makeStats(2600, 130),
404
- seo: { slug: "faq-card-not-as-described", metaTitle: "Item Not as Described", metaDescription: "What to do if your collectible doesn't match the listing on LetItRip." },
405
- isActive: true,
406
- createdBy: "user-admin-letitrip",
407
- createdAt: daysAgo(90),
408
- updatedAt: daysAgo(18),
409
- },
410
- {
411
- id: "faq-refund-timeline",
412
- question: "How long do refunds take?",
413
- answer: html(`<p>Once a refund is approved, it's processed within 3–5 business days. UPI refunds are typically faster (1–2 days). Card and net banking refunds may take up to 7 business days depending on your bank.</p>`),
414
- category: "returns_refunds",
415
- showOnHomepage: false,
416
- showInFooter: false,
417
- isPinned: false,
418
- order: 21,
419
- priority: 6,
420
- tags: ["refund", "timeline", "processing"],
421
- relatedFAQs: ["faq-how-to-request-refund"],
422
- stats: makeStats(2100, 105),
423
- seo: { slug: "faq-refund-timeline", metaTitle: "Refund Processing Time", metaDescription: "How long refunds take on LetItRip." },
424
- isActive: true,
425
- createdBy: "user-admin-letitrip",
426
- createdAt: daysAgo(85),
427
- updatedAt: daysAgo(22),
428
- },
429
- {
430
- id: "faq-damaged-in-transit",
431
- question: "What if my item is damaged during shipping?",
432
- answer: html(`<p>Tell us within <strong>48 hours of delivery</strong>, with photos of the outer packaging and the item — take them <em>before</em> you finish unpacking if the parcel looks crushed or opened. That window is short on purpose: a courier will not accept a damage claim without timely evidence, and after it closes we cannot recover the cost from them.</p><p>Sellers are responsible for packaging quality, and LetItRip mediates if the seller disputes your claim. If you bought <strong>shipment protection</strong> at checkout, a transit loss or damage claim is handled by us and we pursue the courier — you never have to argue with them yourself.</p>`),
433
- category: "returns_refunds",
434
- showOnHomepage: false,
435
- showInFooter: false,
436
- isPinned: false,
437
- order: 22,
438
- priority: 7,
439
- tags: ["damaged", "shipping", "dispute", "48 hours", "shipment protection"],
440
- relatedFAQs: ["faq-how-are-cards-packaged", "faq-how-to-request-refund"],
441
- stats: makeStats(1900, 95),
442
- seo: { slug: "faq-damaged-in-transit", metaTitle: "Item Damaged in Transit", metaDescription: "What to do if your collectible arrives damaged." },
443
- isActive: true,
444
- createdBy: "user-admin-letitrip",
445
- createdAt: daysAgo(80),
446
- updatedAt: daysAgo(25),
447
- },
448
- {
449
- id: "faq-counterfeit-guarantee",
450
- question: "What if I receive a counterfeit item?",
451
- answer: html(`<p>LetItRip has a <strong>zero-tolerance counterfeit policy</strong>. If you receive a counterfeit item, open a dispute with photo evidence. You'll receive a full refund and the seller's account will be reviewed for suspension. For high-value items, we recommend buying graded/certified products which come with third-party authentication.</p>`),
452
- category: "returns_refunds",
453
- showOnHomepage: true,
454
- showInFooter: true,
455
- isPinned: false,
456
- order: 23,
457
- priority: 9,
458
- tags: ["counterfeit", "fake", "authenticity", "guarantee"],
459
- relatedFAQs: ["faq-return-policy", "faq-how-to-verify-authenticity"],
460
- stats: makeStats(3600, 180),
461
- seo: { slug: "faq-counterfeit-guarantee", metaTitle: "Counterfeit Protection on LetItRip", metaDescription: "Zero-tolerance counterfeit policy with full refund guarantee." },
462
- isActive: true,
463
- createdBy: "user-admin-letitrip",
464
- createdAt: daysAgo(100),
465
- updatedAt: daysAgo(7),
466
- },
467
- {
468
- id: "faq-partial-refund",
469
- question: "Can I get a partial refund instead of a full return?",
470
- answer: html(`<p>Yes — if the item is mostly as described but has a minor discrepancy (e.g., slightly different condition grade, missing an accessory), you can negotiate a partial refund with the seller through the dispute system. Both parties must agree to the partial refund amount before it's processed.</p>`),
471
- category: "returns_refunds",
472
- showOnHomepage: false,
473
- showInFooter: false,
474
- isPinned: false,
475
- order: 24,
476
- priority: 5,
477
- tags: ["partial-refund", "negotiation", "dispute"],
478
- relatedFAQs: ["faq-how-to-request-refund"],
479
- stats: makeStats(800, 40),
480
- seo: { slug: "faq-partial-refund", metaTitle: "Partial Refunds on LetItRip", metaDescription: "How partial refunds work on LetItRip." },
481
- isActive: true,
482
- createdBy: "user-admin-letitrip",
483
- createdAt: daysAgo(35),
484
- updatedAt: daysAgo(10),
485
- },
486
- // ── ORDERS & PAYMENT (7) ──────────────────────────────────────────────────
487
- {
488
- id: "faq-payment-methods",
489
- question: "What payment methods are accepted?",
490
- answer: html(`<p>LetItRip's default payment method is <strong>Manual UPI / Bank Transfer</strong> — you pay directly and submit your payment reference, which the seller or LetItRip confirms before shipping. Where enabled, you can also pay instantly via <strong>PhonePe</strong> (cards, UPI, net banking), choose <strong>Cash on Delivery</strong> (a small deposit online plus cash on arrival), or spread the cost with <strong>EMI</strong> on eligible orders. Sellers only receive payout funds after you confirm delivery (or after the dispute window closes).</p>`),
491
- category: "orders_payment",
492
- showOnHomepage: true,
493
- showInFooter: true,
494
- isPinned: false,
495
- order: 25,
496
- priority: 8,
497
- tags: ["payment", "upi", "phonepe", "cod", "emi"],
498
- relatedFAQs: ["faq-what-is-escrow", "faq-emi-installments", "faq-payment-proof-verification"],
499
- stats: makeStats(5100, 255),
500
- seo: { slug: "faq-payment-methods", metaTitle: "Payment Methods on LetItRip", metaDescription: "Manual UPI, PhonePe, Cash on Delivery, and EMI — all payment options on LetItRip." },
501
- isActive: true,
502
- createdBy: "user-admin-letitrip",
503
- createdAt: daysAgo(110),
504
- updatedAt: daysAgo(6),
505
- },
506
- {
507
- id: "faq-payment-proof-verification",
508
- question: "How does manual payment proof verification work?",
509
- answer: html(`<p>After placing an order with UPI/Bank Transfer, you have <strong>15 minutes</strong> to pay and upload your payment screenshot + transaction reference — the item is held for you during this window. If the window expires with no proof, the order is automatically cancelled and the item returns to stock; you're welcome to order again. When you submit proof, confirm the payment amount and UPI ID with the checkboxes provided — false declarations may result in your proof being rejected.</p><p>An admin usually reviews your proof within <strong>2 hours</strong>. If nobody has reviewed it by then, it's automatically confirmed as a safety net — you'll still be able to raise a dispute afterward if something looks wrong. Submitting proof that doesn't match your actual payment (a fake screenshot, a mismatched UPI ID) is treated as fraud: the order is cancelled and your account is suspended for 7 days.</p><p>Orders of ₹5,000 or more (except Cash on Delivery) also require a one-time email verification code before you can place the order, as an extra fraud-prevention step.</p>`),
510
- category: "orders_payment",
511
- showOnHomepage: false,
512
- showInFooter: false,
513
- isPinned: false,
514
- order: 26,
515
- priority: 7,
516
- tags: ["payment", "proof", "verification", "fraud", "timeout"],
517
- relatedFAQs: ["faq-payment-methods"],
518
- stats: makeStats(0, 0),
519
- seo: { slug: "faq-payment-proof-verification", metaTitle: "Payment Proof Verification on LetItRip", metaDescription: "How the 15-minute payment window, proof review, auto-approval, and fraud policy work on LetItRip." },
520
- isActive: true,
521
- createdBy: "user-admin-letitrip",
522
- createdAt: daysAgo(1),
523
- updatedAt: daysAgo(1),
524
- },
525
- {
526
- id: "faq-emi-installments",
527
- question: "Can I pay in installments (EMI)?",
528
- answer: html(`<p>Yes — on eligible orders. If the seller has EMI enabled and your order with them meets the minimum order value, "Pay in EMI" appears as a payment option at checkout. Choose a tenure of 2–6 months, pay a small token amount upfront, and the remaining balance plus a small monthly surcharge is billed automatically in equal installments each month. Your order ships once the EMI is fully paid — the token confirms your commitment and secures the item, it is not a dispatch trigger. A seller may opt an individual listing into earlier dispatch, and that is stated on the listing.</p>`),
529
- category: "orders_payment",
530
- showOnHomepage: false,
531
- showInFooter: false,
532
- isPinned: false,
533
- order: 56,
534
- priority: 6,
535
- tags: ["emi", "installments", "payment"],
536
- relatedFAQs: ["faq-payment-methods"],
537
- stats: makeStats(1400, 70),
538
- seo: { slug: "faq-emi-installments", metaTitle: "Pay in EMI on LetItRip", metaDescription: "How EMI installment payments work for eligible orders on LetItRip." },
539
- isActive: true,
540
- createdBy: "user-admin-letitrip",
541
- createdAt: daysAgo(20),
542
- updatedAt: daysAgo(2),
543
- },
544
- {
545
- id: "faq-coupons-and-discounts",
546
- question: "How do I use coupons and discount codes?",
547
- answer: html(`<p>Enter your coupon code at checkout in the "Apply Coupon" field. Coupons are either <strong>store coupons</strong> (issued by an individual seller) or <strong>platform-wide coupons</strong> (issued by LetItRip).</p><p><strong>Coupons stack.</strong> You can apply <strong>one coupon per store</strong> — so a cart with items from three stores can carry all three of those stores' coupons at once — <strong>plus one platform-wide coupon</strong> on top. A second coupon for the same store, or a second platform-wide coupon, is declined; remove the first one to swap it.</p><p>A store coupon only discounts that store's items. A platform-wide coupon is spread proportionally across every store in your cart. Because orders are placed per store, each store's order shows its own share of the discount.</p><p>Coupons may also have a minimum order value (measured against the items the coupon actually covers, not your whole cart), an expiry date, a per-user limit, or a total limit across all buyers. Coupons are re-checked when you place the order — if one expired or ran out while it sat in your cart, it is removed and your total is recalculated before payment.</p>`),
548
- category: "orders_payment",
549
- showOnHomepage: false,
550
- showInFooter: false,
551
- isPinned: false,
552
- order: 26,
553
- priority: 6,
554
- tags: ["coupons", "discount", "promo-code"],
555
- relatedFAQs: ["faq-free-shipping-available"],
556
- stats: makeStats(2200, 110),
557
- seo: { slug: "faq-coupons-and-discounts", metaTitle: "Using Coupons on LetItRip", metaDescription: "How to apply coupons and discount codes on LetItRip." },
558
- isActive: true,
559
- createdBy: "user-admin-letitrip",
560
- createdAt: daysAgo(75),
561
- updatedAt: daysAgo(12),
562
- },
563
- {
564
- id: "faq-order-cancellation",
565
- question: "Can I cancel an order after placing it?",
566
- answer: html(`<p>You can cancel an order if the seller hasn't shipped yet. Go to Account → My Orders → Cancel Order. Once the seller marks the order as shipped, cancellation is no longer available — you'll need to wait for delivery and then request a return if needed.</p>`),
567
- category: "orders_payment",
568
- showOnHomepage: false,
569
- showInFooter: false,
570
- isPinned: false,
571
- order: 27,
572
- priority: 7,
573
- tags: ["cancel", "order", "pre-shipment"],
574
- relatedFAQs: ["faq-how-to-request-refund"],
575
- stats: makeStats(2800, 140),
576
- seo: { slug: "faq-order-cancellation", metaTitle: "Cancel an Order on LetItRip", metaDescription: "How to cancel an order before it ships." },
577
- isActive: true,
578
- createdBy: "user-admin-letitrip",
579
- createdAt: daysAgo(85),
580
- updatedAt: daysAgo(10),
581
- },
582
- {
583
- id: "faq-seller-fees",
584
- question: "What fees does LetItRip charge sellers?",
585
- answer: html(`<p>LetItRip charges a platform commission on each sale (percentage varies by category). There are no listing fees or monthly subscription charges. Payout processing fees depend on your payout method (UPI is free, bank transfer has a small fee). Check the Seller Dashboard for current fee schedules.</p>`),
586
- category: "orders_payment",
587
- showOnHomepage: false,
588
- showInFooter: false,
589
- isPinned: false,
590
- order: 28,
591
- priority: 6,
592
- tags: ["fees", "seller", "commission"],
593
- relatedFAQs: ["faq-seller-payout-schedule"],
594
- stats: makeStats(1600, 80),
595
- seo: { slug: "faq-seller-fees", metaTitle: "Seller Fees on LetItRip", metaDescription: "Platform commission and fee structure for sellers on LetItRip." },
596
- isActive: true,
597
- createdBy: "user-admin-letitrip",
598
- createdAt: daysAgo(70),
599
- updatedAt: daysAgo(15),
600
- },
601
- {
602
- id: "faq-seller-payout-schedule",
603
- question: "When do sellers get paid?",
604
- answer: html(`<p>Payouts are released after the buyer confirms delivery (or after 7 days with no dispute). Payout batches are processed weekly. You can view payout status and history in your Seller Dashboard → Payouts. The payout amount reflects the sale price minus platform commission and any refund deductions.</p>`),
605
- category: "orders_payment",
606
- showOnHomepage: false,
607
- showInFooter: false,
608
- isPinned: false,
609
- order: 29,
610
- priority: 6,
611
- tags: ["payout", "seller", "payment-schedule"],
612
- relatedFAQs: ["faq-seller-fees"],
613
- stats: makeStats(1300, 65),
614
- seo: { slug: "faq-seller-payout-schedule", metaTitle: "Seller Payout Schedule", metaDescription: "When and how sellers receive payouts on LetItRip." },
615
- isActive: true,
616
- createdBy: "user-admin-letitrip",
617
- createdAt: daysAgo(65),
618
- updatedAt: daysAgo(12),
619
- },
620
- {
621
- id: "faq-payment-failed",
622
- question: "My payment failed but money was deducted — what do I do?",
623
- answer: html(`<p>If your payment fails but the amount is deducted, it's usually a temporary hold by your bank. The amount is auto-reversed within 24–48 hours. If it doesn't reverse after 48 hours, contact your bank with the transaction ID (available in your PhonePe receipt email) or reach out to LetItRip support.</p>`),
624
- category: "orders_payment",
625
- showOnHomepage: false,
626
- showInFooter: false,
627
- isPinned: false,
628
- order: 30,
629
- priority: 8,
630
- tags: ["payment-failed", "bank-hold", "phonepe"],
631
- relatedFAQs: ["faq-payment-methods"],
632
- stats: makeStats(3200, 160),
633
- seo: { slug: "faq-payment-failed", metaTitle: "Payment Failed but Money Deducted", metaDescription: "What to do when payment fails but bank deducts the amount." },
634
- isActive: true,
635
- createdBy: "user-admin-letitrip",
636
- createdAt: daysAgo(55),
637
- updatedAt: daysAgo(5),
638
- },
639
- {
640
- id: "faq-gst-invoice",
641
- question: "Do I get a GST invoice for my purchase?",
642
- answer: html(`<p>Yes — invoices are auto-generated for every order. Go to Account → My Orders → click the order → Download Invoice. Sellers who are GST-registered include GST details on the invoice. For bulk/business purchases, contact the seller directly to arrange GST billing.</p>`),
643
- category: "orders_payment",
644
- showOnHomepage: false,
645
- showInFooter: false,
646
- isPinned: false,
647
- order: 31,
648
- priority: 5,
649
- tags: ["gst", "invoice", "tax"],
650
- relatedFAQs: [],
651
- stats: makeStats(900, 45),
652
- seo: { slug: "faq-gst-invoice", metaTitle: "GST Invoice on LetItRip", metaDescription: "How to get a GST invoice for your LetItRip purchase." },
653
- isActive: true,
654
- createdBy: "user-admin-letitrip",
655
- createdAt: daysAgo(40),
656
- updatedAt: daysAgo(10),
657
- },
658
- // ── PRODUCT INFORMATION (8) ───────────────────────────────────────────────
659
- {
660
- id: "faq-how-to-verify-authenticity",
661
- question: "How can I verify if a collectible is authentic?",
662
- answer: html(`<p>Look for these trust signals on LetItRip: <strong>Verified Seller</strong> badge (store has passed manual review), <strong>Graded</strong> badge (PSA/BGS/CGC certified with certificate number), <strong>Sealed</strong> badge (factory-sealed product). For ungraded items, check the seller's photo quality and description detail. If in doubt, message the seller before purchasing.</p><p>For <strong>Beyblades specifically</strong>, the <a href="/tools/authenticity">authenticity checker</a> takes a model name, a box code or the brand on the packaging and tells you which checks apply to that generation — and the <a href="/spot-a-fake">spot-a-fake guide</a> walks the same signals by hand, with no account needed.</p>`),
663
- category: "product_information",
664
- showOnHomepage: true,
665
- showInFooter: false,
666
- isPinned: false,
667
- order: 32,
668
- priority: 8,
669
- tags: ["authentication", "verification", "trust"],
670
- relatedFAQs: ["faq-counterfeit-guarantee", "faq-psa-vs-bgs-vs-cgc", "faq-check-if-my-beyblade-is-original"],
671
- stats: makeStats(3800, 190),
672
- seo: { slug: "faq-how-to-verify-authenticity", metaTitle: "Verify Collectible Authenticity", metaDescription: "How to verify if a collectible is authentic on LetItRip." },
673
- isActive: true,
674
- createdBy: "user-admin-letitrip",
675
- createdAt: daysAgo(90),
676
- updatedAt: daysAgo(15),
677
- },
678
- {
679
- id: "faq-psa-vs-bgs-vs-cgc",
680
- question: "What's the difference between PSA, BGS, and CGC grading?",
681
- answer: html(`<p><strong>PSA</strong> (Professional Sports Authenticator) uses a 1–10 scale and is the most widely recognized for trading cards. <strong>BGS</strong> (Beckett Grading Services) uses sub-grades for centering, surface, edges, and corners — a BGS 10 "Pristine" or "Black Label" is the highest standard. <strong>CGC</strong> (Certified Guaranty Company) is newer to cards but growing in popularity, also uses sub-grades. All three are trusted; PSA tends to command the highest resale premiums.</p>`),
682
- category: "product_information",
683
- showOnHomepage: false,
684
- showInFooter: false,
685
- isPinned: false,
686
- order: 33,
687
- priority: 7,
688
- tags: ["grading", "psa", "bgs", "cgc", "trading-cards"],
689
- relatedFAQs: ["faq-how-to-verify-authenticity"],
690
- stats: makeStats(4600, 230),
691
- seo: { slug: "faq-psa-vs-bgs-vs-cgc", metaTitle: "PSA vs BGS vs CGC Grading", metaDescription: "Compare PSA, BGS, and CGC grading services for trading cards." },
692
- isActive: true,
693
- createdBy: "user-admin-letitrip",
694
- createdAt: daysAgo(85),
695
- updatedAt: daysAgo(10),
696
- },
697
- {
698
- id: "faq-how-to-verify-1st-edition",
699
- question: "How do I know if a Yu-Gi-Oh! card is 1st Edition?",
700
- answer: html(`<p>1st Edition cards have a gold "1st Edition" stamp below the card artwork on the left side. On older cards (LOB, MRD era), the stamp is more prominent. Unlimited prints lack this stamp. For graded cards, the PSA/BGS/CGC label will indicate "1ST EDITION" in the certification details.</p>`),
701
- category: "product_information",
702
- showOnHomepage: false,
703
- showInFooter: false,
704
- isPinned: false,
705
- order: 34,
706
- priority: 6,
707
- tags: ["authentication", "1st-edition", "ygo", "grading"],
708
- relatedFAQs: ["faq-psa-vs-bgs-vs-cgc"],
709
- stats: makeStats(3800, 190),
710
- seo: { slug: "faq-how-to-verify-1st-edition", metaTitle: "Identify 1st Edition YGO Cards", metaDescription: "How to verify if your Yu-Gi-Oh! card is a genuine 1st Edition." },
711
- isActive: true,
712
- createdBy: "user-admin-letitrip",
713
- createdAt: daysAgo(90),
714
- updatedAt: daysAgo(15),
715
- },
716
- {
717
- id: "faq-condition-grading-guide",
718
- question: "What do condition grades like NM, LP, MP mean?",
719
- answer: html(`<p>Sellers use standard condition grades for ungraded items: <strong>NM</strong> (Near Mint) — virtually perfect, minimal handling wear. <strong>LP</strong> (Lightly Played) — minor edge wear, small scratches. <strong>MP</strong> (Moderately Played) — visible wear, light creasing. <strong>HP</strong> (Heavily Played) — significant wear, creases, whitening. <strong>Sealed</strong> — factory sealed, never opened. Always check the seller's photos for the actual condition.</p>`),
720
- category: "product_information",
721
- showOnHomepage: true,
722
- showInFooter: false,
723
- isPinned: false,
724
- order: 35,
725
- priority: 7,
726
- tags: ["condition", "grading", "nm", "lp", "mp"],
727
- relatedFAQs: ["faq-how-to-verify-authenticity"],
728
- stats: makeStats(2900, 145),
729
- seo: { slug: "faq-condition-grading-guide", metaTitle: "Condition Grading Guide", metaDescription: "What NM, LP, MP condition grades mean for collectibles on LetItRip." },
730
- isActive: true,
731
- createdBy: "user-admin-letitrip",
732
- createdAt: daysAgo(70),
733
- updatedAt: daysAgo(12),
734
- },
735
- {
736
- id: "faq-beyblade-compatibility",
737
- question: "Are Beyblade parts compatible across different series?",
738
- answer: html(`<p><strong>Beyblade X</strong> parts are NOT compatible with Burst or older systems — different launcher and layer design. <strong>Burst</strong> layers, discs, and drivers are cross-compatible within the Burst line (standard, superking, dynamite battle, BU). <strong>Metal Saga</strong> (Metal Fusion/Masters/Fury) parts interchange within that line. Always check the listing's "Compatible System" tag before purchasing.</p>`),
739
- category: "product_information",
740
- showOnHomepage: false,
741
- showInFooter: false,
742
- isPinned: false,
743
- order: 36,
744
- priority: 6,
745
- tags: ["beyblade", "compatibility", "parts", "spinning-tops"],
746
- relatedFAQs: ["faq-what-categories-available"],
747
- stats: makeStats(1600, 80),
748
- seo: { slug: "faq-beyblade-compatibility", metaTitle: "Beyblade Part Compatibility", metaDescription: "Which Beyblade parts are compatible across series — X, Burst, and Metal Saga." },
749
- isActive: true,
750
- createdBy: "user-admin-letitrip",
751
- createdAt: daysAgo(50),
752
- updatedAt: daysAgo(8),
753
- },
754
- {
755
- id: "faq-hot-wheels-treasure-hunt",
756
- question: "How do I identify Hot Wheels Treasure Hunts and Supers?",
757
- answer: html(`<p><strong>Regular Treasure Hunts</strong> have a small flame logo on the card. <strong>Super Treasure Hunts (STH)</strong> have Spectraflame paint (metallic/candy-colored), Real Riders rubber tires, and a "TH" logo somewhere on the car. STHs are rare (1 in ~15 cases) and command premium prices. Sellers on LetItRip mark STHs with a "Super Treasure Hunt" badge.</p>`),
758
- category: "product_information",
759
- showOnHomepage: false,
760
- showInFooter: false,
761
- isPinned: false,
762
- order: 37,
763
- priority: 6,
764
- tags: ["hot-wheels", "treasure-hunt", "sth", "diecast"],
765
- relatedFAQs: ["faq-what-categories-available"],
766
- stats: makeStats(2100, 105),
767
- seo: { slug: "faq-hot-wheels-treasure-hunt", metaTitle: "Hot Wheels Treasure Hunt Guide", metaDescription: "How to identify regular and Super Treasure Hunt Hot Wheels." },
768
- isActive: true,
769
- createdBy: "user-admin-letitrip",
770
- createdAt: daysAgo(45),
771
- updatedAt: daysAgo(10),
772
- },
773
- {
774
- id: "faq-funko-pop-exclusives",
775
- question: "Are Funko Pop exclusives available on LetItRip?",
776
- answer: html(`<p>Yes — verified sellers list convention exclusives (SDCC, NYCC, Funko Fair), store exclusives (Amazon, Hot Topic, BoxLunch), and chase variants. Look for the "Exclusive" or "Chase" badge on listings. All Funko Pops include the pop number and series in the listing title for easy search.</p>`),
777
- category: "product_information",
778
- showOnHomepage: false,
779
- showInFooter: false,
780
- isPinned: false,
781
- order: 38,
782
- priority: 5,
783
- tags: ["funko", "pop", "exclusive", "chase", "action-figures"],
784
- relatedFAQs: ["faq-what-categories-available"],
785
- stats: makeStats(1300, 65),
786
- seo: { slug: "faq-funko-pop-exclusives", metaTitle: "Funko Pop Exclusives on LetItRip", metaDescription: "Find convention and store exclusive Funko Pops on LetItRip." },
787
- isActive: true,
788
- createdBy: "user-admin-letitrip",
789
- createdAt: daysAgo(35),
790
- updatedAt: daysAgo(7),
791
- },
792
- {
793
- id: "faq-gundam-grade-differences",
794
- question: "What's the difference between HG, MG, RG, and PG Gundam kits?",
795
- answer: html(`<p><strong>HG</strong> (High Grade, 1/144) — beginner-friendly, ~100 parts. <strong>RG</strong> (Real Grade, 1/144) — high detail at small scale, ~200 parts. <strong>MG</strong> (Master Grade, 1/100) — detailed inner frame, ~400 parts, intermediate. <strong>PG</strong> (Perfect Grade, 1/60) — premium, ~800+ parts, LED-ready. All Bandai kits on LetItRip list the grade, scale, and part count in the product details.</p>`),
796
- category: "product_information",
797
- showOnHomepage: false,
798
- showInFooter: false,
799
- isPinned: false,
800
- order: 39,
801
- priority: 5,
802
- tags: ["gundam", "model-kits", "bandai", "hg", "mg", "rg", "pg"],
803
- relatedFAQs: ["faq-what-categories-available"],
804
- stats: makeStats(1700, 85),
805
- seo: { slug: "faq-gundam-grade-differences", metaTitle: "Gundam Kit Grades Explained", metaDescription: "HG vs MG vs RG vs PG — understand Gundam model kit grades on LetItRip." },
806
- isActive: true,
807
- createdBy: "user-admin-letitrip",
808
- createdAt: daysAgo(40),
809
- updatedAt: daysAgo(8),
810
- },
811
- // ── AUCTIONS (5) ──────────────────────────────────────────────────────────
812
- {
813
- id: "faq-how-does-bidding-work",
814
- question: "How does bidding work on LetItRip?",
815
- answer: html(`<p>Place a bid on any active auction listing. You'll be notified if you're outbid. When the auction ends, the highest bidder wins. Some auctions have a Buy It Now (BIN) price — you can skip bidding and purchase immediately at the BIN price. Auctions auto-extend by 2 minutes if a bid is placed in the final 2 minutes to prevent sniping.</p>`),
816
- category: "general",
817
- showOnHomepage: true,
818
- showInFooter: true,
819
- isPinned: false,
820
- order: 40,
821
- priority: 8,
822
- tags: ["auction", "bidding", "bin", "auto-extend"],
823
- relatedFAQs: ["faq-auction-ending-rules", "faq-can-i-cancel-bid"],
824
- stats: makeStats(4200, 210),
825
- seo: { slug: "faq-how-does-bidding-work", metaTitle: "How Bidding Works", metaDescription: "Learn how to bid on collectibles auctions on LetItRip." },
826
- isActive: true,
827
- createdBy: "user-admin-letitrip",
828
- createdAt: daysAgo(105),
829
- updatedAt: daysAgo(8),
830
- },
831
- {
832
- id: "faq-auction-ending-rules",
833
- question: "What happens when an auction ends?",
834
- answer: html(`<p>The highest bidder wins. You'll receive a notification and the item is added to your checkout. You have 48 hours to complete payment. If you don't pay within 48 hours, the auction may be offered to the next highest bidder.</p>`),
835
- category: "general",
836
- showOnHomepage: false,
837
- showInFooter: false,
838
- isPinned: false,
839
- order: 41,
840
- priority: 7,
841
- tags: ["auction", "winning", "payment"],
842
- relatedFAQs: ["faq-how-does-bidding-work"],
843
- stats: makeStats(3100, 155),
844
- seo: { slug: "faq-auction-ending-rules", metaTitle: "Auction Ending Rules", metaDescription: "What happens when you win a collectibles auction on LetItRip." },
845
- isActive: true,
846
- createdBy: "user-admin-letitrip",
847
- createdAt: daysAgo(100),
848
- updatedAt: daysAgo(12),
849
- },
850
- {
851
- id: "faq-can-i-cancel-bid",
852
- question: "Can I cancel a bid?",
853
- answer: html(`<p>Bids are binding. Once placed, a bid cannot be cancelled except in exceptional circumstances (e.g., the seller significantly changed the listing description after your bid). Contact support if you believe your case qualifies.</p>`),
854
- category: "general",
855
- showOnHomepage: false,
856
- showInFooter: false,
857
- isPinned: false,
858
- order: 42,
859
- priority: 6,
860
- tags: ["auction", "cancel-bid"],
861
- relatedFAQs: ["faq-how-does-bidding-work"],
862
- stats: makeStats(2400, 120),
863
- seo: { slug: "faq-can-i-cancel-bid", metaTitle: "Can I Cancel a Bid?", metaDescription: "Understanding bid cancellation on LetItRip auctions." },
864
- isActive: true,
865
- createdBy: "user-admin-letitrip",
866
- createdAt: daysAgo(95),
867
- updatedAt: daysAgo(20),
868
- },
869
- {
870
- id: "faq-auction-reserve-price",
871
- question: "What is a reserve price on auctions?",
872
- answer: html(`<p>Some sellers set a hidden reserve price — the minimum they'll accept. If bidding doesn't reach the reserve, the auction ends without a winner. You'll see "Reserve not met" during the auction. There's no way to see the reserve price, but you can ask the seller via messages if they're willing to share a hint.</p>`),
873
- category: "general",
874
- showOnHomepage: false,
875
- showInFooter: false,
876
- isPinned: false,
877
- order: 43,
878
- priority: 5,
879
- tags: ["auction", "reserve-price"],
880
- relatedFAQs: ["faq-how-does-bidding-work"],
881
- stats: makeStats(1200, 60),
882
- seo: { slug: "faq-auction-reserve-price", metaTitle: "Auction Reserve Price", metaDescription: "What reserve prices mean on LetItRip auctions." },
883
- isActive: true,
884
- createdBy: "user-admin-letitrip",
885
- createdAt: daysAgo(50),
886
- updatedAt: daysAgo(10),
887
- },
888
- {
889
- id: "faq-auction-bid-increment",
890
- question: "What are the minimum bid increments?",
891
- answer: html(`<p>Bid increments are automatic and scale with the current price: ₹10 increments up to ₹500, ₹25 up to ₹2,000, ₹50 up to ₹5,000, ₹100 up to ₹20,000, and ₹500 above ₹20,000. You can always bid more than the minimum increment.</p>`),
892
- category: "general",
893
- showOnHomepage: false,
894
- showInFooter: false,
895
- isPinned: false,
896
- order: 44,
897
- priority: 5,
898
- tags: ["auction", "bid-increment", "pricing"],
899
- relatedFAQs: ["faq-how-does-bidding-work"],
900
- stats: makeStats(1000, 50),
901
- seo: { slug: "faq-auction-bid-increment", metaTitle: "Auction Bid Increments", metaDescription: "Minimum bid increment rules on LetItRip auctions." },
902
- isActive: true,
903
- createdBy: "user-admin-letitrip",
904
- createdAt: daysAgo(45),
905
- updatedAt: daysAgo(8),
906
- },
907
- // ── PRE-ORDERS (3) ────────────────────────────────────────────────────────
908
- {
909
- id: "faq-pre-orders-how-they-work",
910
- question: "How do pre-orders work?",
911
- answer: html(`<p>Pre-orders let you reserve upcoming products with a deposit (typically 20–30% of the retail price). When the product releases and ships, you pay the remaining balance. If the seller cancels the pre-order, you receive a full refund of your deposit. Pre-orders are available for upcoming trading card sets, action figure releases, and model kit drops.</p>`),
912
- category: "general",
913
- showOnHomepage: true,
914
- showInFooter: false,
915
- isPinned: false,
916
- order: 45,
917
- priority: 7,
918
- tags: ["pre-order", "deposit", "reservation"],
919
- relatedFAQs: ["faq-pre-order-release-delay"],
920
- stats: makeStats(2200, 110),
921
- seo: { slug: "faq-pre-orders-how-they-work", metaTitle: "Pre-Orders on LetItRip", metaDescription: "Reserve upcoming collectibles with a deposit on LetItRip." },
922
- isActive: true,
923
- createdBy: "user-admin-letitrip",
924
- createdAt: daysAgo(82),
925
- updatedAt: daysAgo(16),
926
- },
927
- {
928
- id: "faq-pre-order-release-delay",
929
- question: "What happens if a pre-order product is delayed?",
930
- answer: html(`<p>Manufacturers sometimes delay release dates. The seller will update the expected ship date on the listing and you'll receive a notification. If the delay is more than 60 days past the original date, you can cancel for a full deposit refund. You are never charged the remaining balance until the product actually ships.</p>`),
931
- category: "general",
932
- showOnHomepage: false,
933
- showInFooter: false,
934
- isPinned: false,
935
- order: 46,
936
- priority: 6,
937
- tags: ["pre-order", "delay", "refund"],
938
- relatedFAQs: ["faq-pre-orders-how-they-work"],
939
- stats: makeStats(1100, 55),
940
- seo: { slug: "faq-pre-order-release-delay", metaTitle: "Pre-Order Delay Policy", metaDescription: "What happens when a pre-order is delayed on LetItRip." },
941
- isActive: true,
942
- createdBy: "user-admin-letitrip",
943
- createdAt: daysAgo(60),
944
- updatedAt: daysAgo(12),
945
- },
946
- {
947
- id: "faq-pre-order-cancel",
948
- question: "Can I cancel a pre-order?",
949
- answer: html(`<p>You can cancel a pre-order any time before the seller marks it as shipped. Your deposit is refunded within 3–5 business days. Once the product ships and the remaining balance is charged, standard return policies apply.</p>`),
950
- category: "general",
951
- showOnHomepage: false,
952
- showInFooter: false,
953
- isPinned: false,
954
- order: 47,
955
- priority: 5,
956
- tags: ["pre-order", "cancel", "deposit-refund"],
957
- relatedFAQs: ["faq-pre-orders-how-they-work"],
958
- stats: makeStats(800, 40),
959
- seo: { slug: "faq-pre-order-cancel", metaTitle: "Cancel a Pre-Order", metaDescription: "How to cancel a pre-order and get your deposit back on LetItRip." },
960
- isActive: true,
961
- createdBy: "user-admin-letitrip",
962
- createdAt: daysAgo(55),
963
- updatedAt: daysAgo(10),
964
- },
965
- // ── ACCOUNT & SECURITY (4) ────────────────────────────────────────────────
966
- {
967
- id: "faq-how-to-create-account",
968
- question: "How do I create a LetItRip account?",
969
- answer: html(`<p>Sign up with your Google account (one-tap) or email. Google sign-up is recommended — it's faster and more secure. After sign-up, complete your profile with a display name and optional avatar. You can start browsing and buying immediately.</p>`),
970
- category: "account_security",
971
- showOnHomepage: false,
972
- showInFooter: false,
973
- isPinned: false,
974
- order: 48,
975
- priority: 7,
976
- tags: ["account", "sign-up", "google", "registration"],
977
- relatedFAQs: ["faq-how-to-sell-on-letitrip"],
978
- stats: makeStats(2600, 130),
979
- seo: { slug: "faq-how-to-create-account", metaTitle: "Create a LetItRip Account", metaDescription: "How to sign up for a LetItRip account with Google or email." },
980
- isActive: true,
981
- createdBy: "user-admin-letitrip",
982
- createdAt: daysAgo(100),
983
- updatedAt: daysAgo(15),
984
- },
985
- {
986
- id: "faq-account-security-tips",
987
- question: "How do I keep my account secure?",
988
- answer: html(`<p>Use Google sign-in for the strongest security. Never share your login credentials. If you signed up with email, use a strong unique password. LetItRip will never ask for your password via email or chat. If you notice suspicious activity, go to Account → Sessions to see active devices and revoke any you don't recognize.</p>`),
989
- category: "account_security",
990
- showOnHomepage: false,
991
- showInFooter: false,
992
- isPinned: false,
993
- order: 49,
994
- priority: 8,
995
- tags: ["security", "password", "sessions", "account"],
996
- relatedFAQs: ["faq-how-to-create-account"],
997
- stats: makeStats(1500, 75),
998
- seo: { slug: "faq-account-security-tips", metaTitle: "Account Security on LetItRip", metaDescription: "Tips to keep your LetItRip account secure." },
999
- isActive: true,
1000
- createdBy: "user-admin-letitrip",
1001
- createdAt: daysAgo(80),
1002
- updatedAt: daysAgo(10),
1003
- },
1004
- {
1005
- id: "faq-delete-my-account",
1006
- question: "Can I delete my LetItRip account?",
1007
- answer: html(`<p>Yes — go to Account → Settings → Delete Account. This permanently removes your profile, addresses, and browsing history. Open orders will still be fulfilled. If you're a seller with active listings, you must close your store first. Account deletion is irreversible.</p>`),
1008
- category: "account_security",
1009
- showOnHomepage: false,
1010
- showInFooter: false,
1011
- isPinned: false,
1012
- order: 50,
1013
- priority: 5,
1014
- tags: ["delete-account", "privacy", "data"],
1015
- relatedFAQs: ["faq-account-security-tips"],
1016
- stats: makeStats(600, 30),
1017
- seo: { slug: "faq-delete-my-account", metaTitle: "Delete Your LetItRip Account", metaDescription: "How to permanently delete your LetItRip account." },
1018
- isActive: true,
1019
- createdBy: "user-admin-letitrip",
1020
- createdAt: daysAgo(50),
1021
- updatedAt: daysAgo(20),
1022
- },
1023
- {
1024
- id: "faq-notification-preferences",
1025
- question: "How do I manage my notifications?",
1026
- answer: html(`<p>Go to Account → Settings → Notification Preferences. You can toggle each notification type (order updates, auction alerts, price drops, community events) per channel — in-app and email. High-priority notifications (order shipped, auction won) are always sent in-app and cannot be fully disabled.</p>`),
1027
- category: "account_security",
1028
- showOnHomepage: false,
1029
- showInFooter: false,
1030
- isPinned: false,
1031
- order: 51,
1032
- priority: 5,
1033
- tags: ["notifications", "settings", "preferences", "email"],
1034
- relatedFAQs: [],
1035
- stats: makeStats(700, 35),
1036
- seo: { slug: "faq-notification-preferences", metaTitle: "Notification Preferences", metaDescription: "Manage your notification preferences on LetItRip." },
1037
- isActive: true,
1038
- createdBy: "user-admin-letitrip",
1039
- createdAt: daysAgo(30),
1040
- updatedAt: daysAgo(5),
1041
- },
1042
- // ── SCAM AWARENESS (4) ────────────────────────────────────────────────────
1043
- {
1044
- id: "faq-spot-a-scam-listing",
1045
- question: "How do I spot a scam listing?",
1046
- answer: html(`<p>Red flags: price too good to be true, stock photos instead of actual product photos, brand-new account with no reviews, pressure to pay outside LetItRip ("DM me on WhatsApp for discount"), and vague descriptions. LetItRip's verified seller program eliminates most scams, but always check the seller's reviews and store age before high-value purchases.</p>`),
1047
- category: "scam_awareness",
1048
- showOnHomepage: false,
1049
- showInFooter: true,
1050
- isPinned: false,
1051
- order: 52,
1052
- priority: 8,
1053
- tags: ["scam", "fraud", "red-flags", "safety"],
1054
- relatedFAQs: ["faq-report-a-scammer", "faq-counterfeit-guarantee"],
1055
- stats: makeStats(2800, 140),
1056
- seo: { slug: "faq-spot-a-scam-listing", metaTitle: "Spot a Scam Listing", metaDescription: "How to identify scam listings on collectibles marketplaces." },
1057
- isActive: true,
1058
- createdBy: "user-admin-letitrip",
1059
- createdAt: daysAgo(70),
1060
- updatedAt: daysAgo(8),
1061
- },
1062
- {
1063
- id: "faq-report-a-scammer",
1064
- question: "How do I report a scammer?",
1065
- answer: html(`<p>Click the "Report" button on any listing or store page. Select the issue type (counterfeit, misleading description, off-platform payment request, etc.) and provide evidence. Our moderation team reviews reports within 24 hours. Confirmed scammers are permanently banned and added to our public scam registry.</p>`),
1066
- category: "scam_awareness",
1067
- showOnHomepage: false,
1068
- showInFooter: false,
1069
- isPinned: false,
1070
- order: 53,
1071
- priority: 7,
1072
- tags: ["report", "scammer", "moderation"],
1073
- relatedFAQs: ["faq-spot-a-scam-listing"],
1074
- stats: makeStats(1800, 90),
1075
- seo: { slug: "faq-report-a-scammer", metaTitle: "Report a Scammer", metaDescription: "How to report a scammer on LetItRip." },
1076
- isActive: true,
1077
- createdBy: "user-admin-letitrip",
1078
- createdAt: daysAgo(65),
1079
- updatedAt: daysAgo(10),
1080
- },
1081
- {
1082
- id: "faq-off-platform-payment-warning",
1083
- question: "Should I ever pay outside of LetItRip?",
1084
- answer: html(`<p><strong>Never.</strong> Any seller asking you to pay via UPI, bank transfer, or any method outside of LetItRip checkout is violating our terms. Off-platform payments have zero buyer protection — no escrow, no dispute mediation, no refund guarantee. Report the seller immediately.</p>`),
1085
- category: "scam_awareness",
1086
- showOnHomepage: false,
1087
- showInFooter: false,
1088
- isPinned: true,
1089
- order: 54,
1090
- priority: 10,
1091
- tags: ["off-platform", "payment", "safety", "warning"],
1092
- relatedFAQs: ["faq-spot-a-scam-listing", "faq-what-is-escrow"],
1093
- stats: makeStats(3200, 160),
1094
- seo: { slug: "faq-off-platform-payment-warning", metaTitle: "Never Pay Off-Platform", metaDescription: "Why you should never pay outside of LetItRip's secure checkout." },
1095
- isActive: true,
1096
- createdBy: "user-admin-letitrip",
1097
- createdAt: daysAgo(60),
1098
- updatedAt: daysAgo(5),
1099
- },
1100
- {
1101
- id: "faq-community-events",
1102
- question: "What community events does LetItRip run?",
1103
- answer: html(`<p>LetItRip runs regular community events: <strong>Polls</strong> (vote on upcoming features), <strong>Sales</strong> (platform-wide discount events), <strong>Raffles</strong> (win rare collectibles), <strong>Spin Wheels</strong> (instant coupon prizes), and <strong>Surveys</strong> (share feedback, earn rewards). Check the Events page for current and upcoming events.</p>`),
1104
- category: "general",
1105
- showOnHomepage: false,
1106
- showInFooter: false,
1107
- isPinned: false,
1108
- order: 55,
1109
- priority: 6,
1110
- tags: ["events", "community", "raffle", "poll", "spin-wheel"],
1111
- relatedFAQs: ["faq-prize-draws-how-they-work"],
1112
- stats: makeStats(1400, 70),
1113
- seo: { slug: "faq-community-events", metaTitle: "Community Events on LetItRip", metaDescription: "Polls, raffles, spin wheels, and sales events on LetItRip." },
1114
- isActive: true,
1115
- createdBy: "user-admin-letitrip",
1116
- createdAt: daysAgo(40),
1117
- updatedAt: daysAgo(6),
1118
- },
1119
- {
1120
- id: "faq-what-is-verified-badge",
1121
- question: "What does the verified seller badge mean?",
1122
- answer: html(`<p>A verified badge means LetItRip has manually confirmed the seller's identity and store details before they were allowed to list. Verified sellers have passed our onboarding review — it doesn't guarantee every listing is accurate, but it does mean the seller is a real, accountable business we can act on if something goes wrong. Look for the badge on the store page next to the seller's name.</p>`),
1123
- category: "account_security",
1124
- showOnHomepage: false,
1125
- showInFooter: false,
1126
- isPinned: false,
1127
- order: 56,
1128
- priority: 6,
1129
- tags: ["verified", "badge", "trust", "seller"],
1130
- relatedFAQs: ["faq-spot-a-scam-listing", "faq-report-a-scammer"],
1131
- stats: makeStats(900, 45),
1132
- seo: { slug: "faq-what-is-verified-badge", metaTitle: "What Is the Verified Seller Badge?", metaDescription: "How LetItRip's seller verification works and what the badge means." },
1133
- isActive: true,
1134
- createdBy: "user-admin-letitrip",
1135
- createdAt: daysAgo(20),
1136
- updatedAt: daysAgo(2),
1137
- },
1138
- {
1139
- id: "faq-what-are-classifieds",
1140
- question: "What are Classified listings?",
1141
- answer: html(`<p>Classifieds are listings for items that don't ship — local meetups, trades, or collections too large/fragile to post. A classified listing shows the seller's general area (not their exact address) and lets buyers message to arrange an in-person exchange or local pickup. LetItRip's escrow payment protection does not apply to classifieds — agree on payment terms directly with the seller and meet in a safe, public location.</p>`),
1142
- category: "product_information",
1143
- showOnHomepage: false,
1144
- showInFooter: false,
1145
- isPinned: false,
1146
- order: 57,
1147
- priority: 5,
1148
- tags: ["classifieds", "local", "meetup", "listing-type"],
1149
- relatedFAQs: ["faq-off-platform-payment-warning"],
1150
- stats: makeStats(650, 30),
1151
- seo: { slug: "faq-what-are-classifieds", metaTitle: "What Are Classified Listings?", metaDescription: "How local, no-shipping classified listings work on LetItRip." },
1152
- isActive: true,
1153
- createdBy: "user-admin-letitrip",
1154
- createdAt: daysAgo(18),
1155
- updatedAt: daysAgo(2),
1156
- },
1157
- {
1158
- id: "faq-what-are-digital-codes",
1159
- question: "How do digital code listings work?",
1160
- answer: html(`<p>Digital code listings sell redeemable codes — game keys, gift cards, DLC unlocks — with no physical shipping. After payment, the code is revealed to you directly in your order. Because codes can't be "returned" once revealed, digital code purchases are final once you've viewed the code; make sure you're buying from a seller with a strong review history.</p>`),
1161
- category: "product_information",
1162
- showOnHomepage: false,
1163
- showInFooter: false,
1164
- isPinned: false,
1165
- order: 58,
1166
- priority: 5,
1167
- tags: ["digital-codes", "game-keys", "listing-type"],
1168
- relatedFAQs: ["faq-what-are-classifieds"],
1169
- stats: makeStats(700, 35),
1170
- seo: { slug: "faq-what-are-digital-codes", metaTitle: "How Digital Code Listings Work", metaDescription: "Buying and redeeming digital code listings on LetItRip." },
1171
- isActive: true,
1172
- createdBy: "user-admin-letitrip",
1173
- createdAt: daysAgo(18),
1174
- updatedAt: daysAgo(2),
1175
- },
1176
- {
1177
- id: "faq-what-are-live-items",
1178
- question: "What are Live listings?",
1179
- answer: html(`<p>Live listings are for living animals sold by verified exotic-pet and breeder sellers — axolotls, reptiles, and similar. Every live listing requires the seller to specify safe-handling and shipping/pickup instructions, and buyers should confirm care requirements before purchasing. Live-animal sales follow the same escrow protection as physical goods, but delivery timing is coordinated directly with the seller due to live-animal shipping constraints.</p>`),
1180
- category: "product_information",
1181
- showOnHomepage: false,
1182
- showInFooter: false,
1183
- isPinned: false,
1184
- order: 59,
1185
- priority: 4,
1186
- tags: ["live-items", "live-animals", "listing-type"],
1187
- relatedFAQs: [],
1188
- stats: makeStats(420, 20),
1189
- seo: { slug: "faq-what-are-live-items", metaTitle: "What Are Live Listings?", metaDescription: "Buying live-animal listings safely on LetItRip." },
1190
- isActive: true,
1191
- createdBy: "user-admin-letitrip",
1192
- createdAt: daysAgo(15),
1193
- updatedAt: daysAgo(2),
1194
- },
1195
- {
1196
- id: "faq-what-is-personal-catalogue",
1197
- question: "What is My Catalogue?",
1198
- answer: html(`<p>My Catalogue is a private space to track your own collection — items you own, whether or not they're for sale. Add items with photos and notes, and optionally submit any of them for review to convert into a real listing without re-entering the details. It's a personal inventory tool first, a fast path to listing second.</p>`),
1199
- category: "product_information",
1200
- showOnHomepage: false,
1201
- showInFooter: false,
1202
- isPinned: false,
1203
- order: 60,
1204
- priority: 4,
1205
- tags: ["catalogue", "collection", "personal", "inventory"],
1206
- relatedFAQs: [],
1207
- stats: makeStats(380, 18),
1208
- seo: { slug: "faq-what-is-personal-catalogue", metaTitle: "What Is My Catalogue?", metaDescription: "Track your personal collectibles collection with My Catalogue on LetItRip." },
1209
- isActive: true,
1210
- createdBy: "user-admin-letitrip",
1211
- createdAt: daysAgo(12),
1212
- updatedAt: daysAgo(1),
1213
- },
1214
- {
1215
- id: "faq-what-are-procurement-shipments",
1216
- question: "What is the Procurement / Shipments tool for sellers?",
1217
- answer: html(`<p>Procurement Shipments is a seller-side tool for bulk-buying and processing inventory lots. Log a shipment (what you bought, the labor hours spent sorting/categorizing/listing it), and LetItRip computes the labor cost and estimated processing time automatically from your Payout Settings' hourly rate. It's for sellers who buy collections in bulk and turn them into individual listings, not a buyer-facing feature.</p>`),
1218
- category: "general",
1219
- showOnHomepage: false,
1220
- showInFooter: false,
1221
- isPinned: false,
1222
- order: 61,
1223
- priority: 3,
1224
- tags: ["procurement", "shipments", "seller", "bulk"],
1225
- relatedFAQs: [],
1226
- stats: makeStats(210, 10),
1227
- seo: { slug: "faq-what-are-procurement-shipments", metaTitle: "Procurement Shipments for Sellers", metaDescription: "How LetItRip's seller procurement shipment tracking tool works." },
1228
- // Deliberately isActive:false — every other FAQ in this file (and all 63
1229
- // previously seeded) was isActive:true, so the admin FAQs dashboard's
1230
- // isActive toggle (backed by the faqs(isActive, priority ASC) composite
1231
- // index) had nothing to show when toggled to the inactive branch.
1232
- isActive: false,
1233
- createdBy: "user-admin-letitrip",
1234
- createdAt: daysAgo(10),
1235
- updatedAt: daysAgo(1),
1236
- },
1237
- // ── §6 / D6b: +23 permanent FAQs, seeded 2026-10-12 ──────────────────────
1238
- //
1239
- // 🛑 Every answer states a REAL number from the shipped code where it has
1240
- // one — the ₹10 platform-fee cap, 5% GST on HSN 9503, the 48-hour damage
1241
- // window, the ~140% landed cost of an import. An FAQ with a placeholder is
1242
- // worse than no FAQ: it reads as authoritative and is wrong the first time
1243
- // anybody checks it.
1244
- //
1245
- // 🛑 The `fees_and_taxes` rows could not have been written before C0/C0c
1246
- // settled what is actually charged (tax-INCLUSIVE prices, the capped fee,
1247
- // the payout base being taxable value rather than the grand total). Seeding
1248
- // them earlier would have seeded a guess — which is why the plan deliberately
1249
- // held them back.
1250
- {
1251
- id: "faq-how-long-does-dispatch-take",
1252
- question: "How long until my order is dispatched?",
1253
- answer: html("<p>Sellers dispatch within <strong>1–2 business days</strong> of payment clearing. You will get a tracking number as soon as the parcel is handed to the courier.</p><p>Pre-orders are different by design: they ship when the item is released, and the listing shows the expected date. A pre-order's dispatch clock starts at release, not at payment.</p>"),
1254
- category: "shipping_delivery",
1255
- showOnHomepage: false,
1256
- showInFooter: false,
1257
- isPinned: false,
1258
- order: 200,
1259
- priority: 8,
1260
- tags: ["dispatch", "shipping", "handling time", "tracking"],
1261
- relatedFAQs: [],
1262
- stats: makeStats(300, 20),
1263
- seo: {
1264
- slug: "faq-how-long-does-dispatch-take",
1265
- metaTitle: "How long until my order is dispatched?",
1266
- metaDescription: "Sellers dispatch within 1–2 business days of payment clearing. You will get a tracking number as soon as the parcel is handed to the courier. Pre-orders ar",
1267
- },
1268
- isActive: true,
1269
- createdBy: "user-admin-letitrip",
1270
- createdAt: daysAgo(30),
1271
- updatedAt: daysAgo(2),
1272
- },
1273
- {
1274
- id: "faq-how-long-is-delivery",
1275
- question: "How long does delivery take once dispatched?",
1276
- answer: html("<p><strong>2–4 business days</strong> to metros, up to <strong>7</strong> to remote pincodes. That is the courier's transit time and sits on top of the seller's 1–2 day dispatch window.</p><p>If tracking has not moved for 48 hours, contact us — we will chase the courier so you do not have to.</p>"),
1277
- category: "shipping_delivery",
1278
- showOnHomepage: false,
1279
- showInFooter: false,
1280
- isPinned: false,
1281
- order: 201,
1282
- priority: 8,
1283
- tags: ["delivery", "transit", "metro", "remote pincode"],
1284
- relatedFAQs: [],
1285
- stats: makeStats(337, 23),
1286
- seo: {
1287
- slug: "faq-how-long-is-delivery",
1288
- metaTitle: "How long does delivery take once dispatched?",
1289
- metaDescription: "2–4 business days to metros, up to 7 to remote pincodes. That is the courier's transit time and sits on top of the seller's 1–2 day dispatch window. If tra",
1290
- },
1291
- isActive: true,
1292
- createdBy: "user-admin-letitrip",
1293
- createdAt: daysAgo(30),
1294
- updatedAt: daysAgo(2),
1295
- },
1296
- {
1297
- id: "faq-which-couriers-do-you-use",
1298
- question: "Which couriers do you ship with?",
1299
- answer: html("<p><strong>Delhivery, Blue Dart, DTDC</strong> and <strong>India Post</strong>, depending on the pincode and the parcel. Remote pincodes are often India Post, which is slower but reaches more places.</p><p>You do not choose the courier — the cheapest serviceable option is selected for your address, and the tracking number tells you which one is carrying it.</p>"),
1300
- category: "shipping_delivery",
1301
- showOnHomepage: false,
1302
- showInFooter: false,
1303
- isPinned: false,
1304
- order: 202,
1305
- priority: 6,
1306
- tags: ["couriers", "delhivery", "blue dart", "dtdc", "india post"],
1307
- relatedFAQs: [],
1308
- stats: makeStats(374, 26),
1309
- seo: {
1310
- slug: "faq-which-couriers-do-you-use",
1311
- metaTitle: "Which couriers do you ship with?",
1312
- metaDescription: "Delhivery, Blue Dart, DTDC and India Post , depending on the pincode and the parcel. Remote pincodes are often India Post, which is slower but reaches more",
1313
- },
1314
- isActive: true,
1315
- createdBy: "user-admin-letitrip",
1316
- createdAt: daysAgo(30),
1317
- updatedAt: daysAgo(2),
1318
- },
1319
- /*
1320
- * 🛑 `faq-damaged-in-transit` is NOT here. §6's +4 for shipping_delivery
1321
- * listed "the 48-hour damage window", and a row with that id already existed
1322
- * under `returns_refunds` — so the window and the shipment-protection branch
1323
- * were folded into THAT row rather than added as a second one. §6's own rule:
1324
- * "Never duplicate across both — two copies of one answer means the one that
1325
- * gets fixed is never the one being read." A duplicate id is also a
1326
- * merge-write, so the second row would silently overwrite the first and the
1327
- * document count would still look correct.
1328
- */
1329
- {
1330
- id: "faq-do-you-ship-internationally",
1331
- question: "Do you ship outside India?",
1332
- answer: html("<p><strong>Not at the moment.</strong> We deliver across India only.</p><p>We would rather say so plainly than take an international order we cannot fulfil: customs on collectibles into most countries is unpredictable, and a parcel held at a border is a worse outcome than a sale we did not make.</p>"),
1333
- category: "shipping_delivery",
1334
- showOnHomepage: false,
1335
- showInFooter: false,
1336
- isPinned: false,
1337
- order: 204,
1338
- priority: 5,
1339
- tags: ["international", "overseas", "shipping"],
1340
- relatedFAQs: [],
1341
- stats: makeStats(448, 32),
1342
- seo: {
1343
- slug: "faq-do-you-ship-internationally",
1344
- metaTitle: "Do you ship outside India?",
1345
- metaDescription: "Not at the moment. We deliver across India only. We would rather say so plainly than take an international order we cannot fulfil: customs on collectibles ",
1346
- },
1347
- isActive: true,
1348
- createdBy: "user-admin-letitrip",
1349
- createdAt: daysAgo(30),
1350
- updatedAt: daysAgo(2),
1351
- },
1352
- {
1353
- id: "faq-is-cod-available",
1354
- question: "Can I pay cash on delivery?",
1355
- answer: html("<p>COD is available to <strong>verified customers</strong> — it is not the default. If you do not see it at checkout, your account is not COD-eligible yet; completing a prepaid order or two is the usual route.</p><p>COD carries a handling fee and a <strong>10% token</strong> taken upfront, both shown before you confirm. The token is what makes COD viable on collectibles, where a refused delivery costs the seller both legs of the shipping.</p>"),
1356
- category: "orders_payment",
1357
- showOnHomepage: false,
1358
- showInFooter: false,
1359
- isPinned: false,
1360
- order: 205,
1361
- priority: 8,
1362
- tags: ["cod", "cash on delivery", "verified", "token"],
1363
- relatedFAQs: [],
1364
- stats: makeStats(485, 35),
1365
- seo: {
1366
- slug: "faq-is-cod-available",
1367
- metaTitle: "Can I pay cash on delivery?",
1368
- metaDescription: "COD is available to verified customers — it is not the default. If you do not see it at checkout, your account is not COD-eligible yet; completing a prepai",
1369
- },
1370
- isActive: true,
1371
- createdBy: "user-admin-letitrip",
1372
- createdAt: daysAgo(30),
1373
- updatedAt: daysAgo(2),
1374
- },
1375
- {
1376
- id: "faq-can-i-order-on-whatsapp",
1377
- question: "Can I order over WhatsApp?",
1378
- answer: html("<p>You can <strong>ask</strong> over WhatsApp, but the order itself is placed on the site. That is not bureaucracy: an on-site order is what gives you escrow, a dispute path, a tracking number and a record of what you were promised. A WhatsApp agreement gives you a chat log.</p><p>Sellers who negotiate on chat should send you a <strong>Make an Offer</strong> link — that way the agreed price is locked into checkout and you are protected by exactly the same guarantees as any other order.</p>"),
1379
- category: "orders_payment",
1380
- showOnHomepage: false,
1381
- showInFooter: false,
1382
- isPinned: false,
1383
- order: 206,
1384
- priority: 6,
1385
- tags: ["whatsapp", "chat", "offer", "escrow"],
1386
- relatedFAQs: [],
1387
- stats: makeStats(522, 38),
1388
- seo: {
1389
- slug: "faq-can-i-order-on-whatsapp",
1390
- metaTitle: "Can I order over WhatsApp?",
1391
- metaDescription: "You can ask over WhatsApp, but the order itself is placed on the site. That is not bureaucracy: an on-site order is what gives you escrow, a dispute path, ",
1392
- },
1393
- isActive: true,
1394
- createdBy: "user-admin-letitrip",
1395
- createdAt: daysAgo(30),
1396
- updatedAt: daysAgo(2),
1397
- },
1398
- {
1399
- id: "faq-is-gst-charged",
1400
- question: "Is GST charged on my order?",
1401
- answer: html("<p>Yes, and <strong>it is already included in the price you see</strong>. A ₹999 listing costs ₹999 — of which about ₹47.57 is GST at the 5% rate that applies to most collectibles (HSN 9503).</p><p>Your invoice breaks it out line by line with the HSN code and rate, and splits it into CGST + SGST or IGST depending on where you are. Nothing is added at the last step.</p>"),
1402
- category: "fees_and_taxes",
1403
- showOnHomepage: true,
1404
- showInFooter: false,
1405
- isPinned: false,
1406
- order: 207,
1407
- priority: 10,
1408
- tags: ["gst", "tax", "inclusive", "invoice", "hsn"],
1409
- relatedFAQs: [],
1410
- stats: makeStats(559, 41),
1411
- seo: {
1412
- slug: "faq-is-gst-charged",
1413
- metaTitle: "Is GST charged on my order?",
1414
- metaDescription: "Yes, and it is already included in the price you see . A ₹999 listing costs ₹999 — of which about ₹47.57 is GST at the 5% rate that applies to most collect",
1415
- },
1416
- isActive: true,
1417
- createdBy: "user-admin-letitrip",
1418
- createdAt: daysAgo(30),
1419
- updatedAt: daysAgo(2),
1420
- },
1421
- {
1422
- id: "faq-why-are-imports-expensive",
1423
- question: "Why do imported collectibles cost so much more?",
1424
- answer: html("<p>Because of duty, not markup. Toys and collectibles carry <strong>70% basic customs duty</strong>, and once you add GST and clearing charges the landed cost of an import is roughly <strong>140% of its assessed value</strong> — before anyone's margin.</p><p>That is why a figure listed at ¥8,000 in Japan is not ₹4,800 here. A seller importing it legitimately has already paid that duty; a price far below the landed cost usually means the item was not declared, was not imported at all, or is not what it claims to be.</p>"),
1425
- category: "fees_and_taxes",
1426
- showOnHomepage: false,
1427
- showInFooter: false,
1428
- isPinned: false,
1429
- order: 208,
1430
- priority: 7,
1431
- tags: ["import", "customs", "duty", "landed cost", "pricing"],
1432
- relatedFAQs: [],
1433
- stats: makeStats(596, 44),
1434
- seo: {
1435
- slug: "faq-why-are-imports-expensive",
1436
- metaTitle: "Why do imported collectibles cost so much more?",
1437
- metaDescription: "Because of duty, not markup. Toys and collectibles carry 70% basic customs duty , and once you add GST and clearing charges the landed cost of an import is",
1438
- },
1439
- isActive: true,
1440
- createdBy: "user-admin-letitrip",
1441
- createdAt: daysAgo(30),
1442
- updatedAt: daysAgo(2),
1443
- },
1444
- {
1445
- id: "faq-returns-on-preowned-and-parts",
1446
- question: "Can I return a pre-owned item, a loose part, or a reproduction?",
1447
- answer: html("<p>Yes — the same return window applies, with one honest caveat: <strong>\"not as described\" means not as described, not \"not as new\"</strong>. A pre-owned Beyblade with the wear its photos showed is as described; the same item with a crack the photos hid is not.</p><p>Loose parts and reproductions are returnable on the same basis. A listing marked <strong>Final Sale</strong> is not returnable at all, and that is shown on the listing before you buy — but a final-sale item lost or damaged <em>in transit</em> is still covered, because you never received what you accepted as non-returnable.</p>"),
1448
- category: "returns_refunds",
1449
- showOnHomepage: false,
1450
- showInFooter: false,
1451
- isPinned: false,
1452
- order: 209,
1453
- priority: 8,
1454
- tags: ["returns", "pre-owned", "loose parts", "reproduction", "final sale"],
1455
- relatedFAQs: [],
1456
- stats: makeStats(633, 47),
1457
- seo: {
1458
- slug: "faq-returns-on-preowned-and-parts",
1459
- metaTitle: "Can I return a pre-owned item, a loose part, or a reprodu…",
1460
- metaDescription: "Yes — the same return window applies, with one honest caveat: \"not as described\" means not as described, not \"not as new\" . A pre-owned Beyblade with the w",
1461
- },
1462
- isActive: true,
1463
- createdBy: "user-admin-letitrip",
1464
- createdAt: daysAgo(30),
1465
- updatedAt: daysAgo(2),
1466
- },
1467
- {
1468
- id: "faq-check-if-my-beyblade-is-original",
1469
- question: "How do I check whether my Beyblade is original?",
1470
- answer: html("<p>Start with the <a href=\"/tools/authenticity\">authenticity checker</a>. Give it a model name, the code printed on the box, or the brand on the packaging, and it tells you which checks apply to that generation, what the recorded box codes say, and what is still unsettled. The reference half of that page — the generation table, the box-code explanation, the checks that apply regardless — is free and needs no account; only the per-item lookup asks you to sign in.</p><p>🛑 <strong>It grades, it does not rule.</strong> The strongest thing it will say is that something matches a batch collectors record as a reduced-quality run — a statement about a production batch, never an accusation against your seller. Authenticity is settled by physical checks, and the tool lists the conclusive ones first for your generation: a fully die-cast performance tip on a Metal Fight bey, Phillips screws where tri-wing belong on Burst, a Gear Chip missing the <em>Beyblade X</em> logo, or moulded Takara copyright text absent from a plastic-generation part.</p><p>The longer buying guide is at <a href=\"/spot-a-fake\">how to spot a fake</a>. If the problem is a specific seller rather than a specific item, the <a href=\"/scams\">scam registry</a> takes reports.</p>"),
1471
- category: "product_information",
1472
- showOnHomepage: true,
1473
- showInFooter: false,
1474
- isPinned: false,
1475
- order: 208,
1476
- priority: 10,
1477
- tags: ["authenticity", "fake", "original", "beyblade", "checker", "takara tomy"],
1478
- relatedFAQs: ["faq-beyblade-box-code-meaning", "faq-what-is-a-reproduction", "faq-is-funskool-beyblade-fake"],
1479
- stats: makeStats(0, 0),
1480
- seo: {
1481
- slug: "faq-check-if-my-beyblade-is-original",
1482
- metaTitle: "How do I check whether my Beyblade is original?",
1483
- metaDescription: "Use the authenticity checker: a model name, a box code or the brand on the packaging, and it shows which checks apply to that generation and what is still unsettled.",
1484
- },
1485
- isActive: true,
1486
- createdBy: "user-admin-letitrip",
1487
- createdAt: daysAgo(1),
1488
- updatedAt: daysAgo(1),
1489
- },
1490
- {
1491
- id: "faq-beyblade-box-code-meaning",
1492
- question: "What does the code on the bottom of the box mean?",
1493
- answer: html("<p>Two different things are both called “the code”, and they answer different questions.</p><p>A <strong>product code</strong> — <code>BB-105</code>, <code>B-174</code>, <code>BX-34</code>, <code>MA-09</code> — identifies the release, and its letter prefix identifies the generation. Read the whole letter group before the digits: <code>BB-</code> is Metal Fight while <code>B-</code> is Burst, so they are easy to confuse. 🛑 <strong>A product code existing proves nothing about authenticity.</strong> One counterfeit catalogue we measured carried more than 900 genuine Takara Tomy codes across 1,277 unlicensed products. What carries information is whether the code and the model name <em>agree</em> — which is what the <a href=\"/tools/authenticity\">authenticity checker</a> compares.</p><p>A <strong>date code</strong> is a letter followed by four digits, like <code>A0813</code>, and it is a production stamp. Collectors have compiled which of these appear on boxes known to be genuine and which belong to reduced-quality batches, and the checker holds both lists for the Metal Fight era. 🛑 <strong>How it decodes is disputed.</strong> One reading takes the letter as the month and the next two digits as the day (8 January 2013); another takes the letter as the factory and the digits as the week of the year. Takara Tomy has published neither, so treat any date as indicative. No decoding has been established at all for Burst or Beyblade X boxes.</p><p>A code that is in neither list means <em>not recorded</em>, not <em>fake</em> — the lists were compiled from boxes collectors personally held, and new genuine codes still surface.</p>"),
1494
- category: "product_information",
1495
- showOnHomepage: false,
1496
- showInFooter: false,
1497
- isPinned: false,
1498
- order: 209,
1499
- priority: 9,
1500
- tags: ["box code", "date code", "product code", "authenticity", "takara tomy", "midfake"],
1501
- relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
1502
- stats: makeStats(0, 0),
1503
- seo: {
1504
- slug: "faq-beyblade-box-code-meaning",
1505
- metaTitle: "What does the code on the bottom of a Beyblade box mean?",
1506
- metaDescription: "Product codes identify the release and the generation; date codes are production stamps with two disputed readings. Neither proves a bey is genuine on its own.",
1507
- },
1508
- isActive: true,
1509
- createdBy: "user-admin-letitrip",
1510
- createdAt: daysAgo(1),
1511
- updatedAt: daysAgo(1),
1512
- },
1513
- {
1514
- id: "faq-is-funskool-beyblade-fake",
1515
- question: "Is a Funskool Beyblade fake? What about Sonokong?",
1516
- answer: html("<p><strong>No. Both are legitimate.</strong> Funskool is a licensed Indian importer and Sonokong is the licensed South Korean producer — their names on a box are a <em>positive</em> signal, not a warning. The same goes for the other regional importers: Mani (Hong Kong), Funbox (Taiwan), Sheng Tai (Singapore), NewBoy (Middle East), Bankee (Philippines) and PT Emway (Indonesia). An importer’s holographic sticker or certificate inside the packaging is a sign of a properly imported product.</p><p>🛑 A guide that tells you anything other than “Takara Tomy” or “Hasbro” is a fake is simply wrong, and that mistake is costly in India specifically, where Funskool product is common.</p><p>What <em>should</em> worry you is a box whose most prominent branding is a name nobody licenses — or no manufacturer name at all. Sellers of unlicensed tops here rarely claim to be originals; they sell under their own brand as “aftermarket”, “custom” or “upgraded”. That framing is not a grey area. You can check a brand name against the known lists in the <a href=\"/tools/authenticity\">authenticity checker</a>.</p>"),
1517
- category: "product_information",
1518
- showOnHomepage: false,
1519
- showInFooter: false,
1520
- isPinned: false,
1521
- order: 211,
1522
- priority: 8,
1523
- tags: ["funskool", "sonokong", "importer", "authenticity", "india", "licensed"],
1524
- relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-what-is-a-reproduction"],
1525
- stats: makeStats(0, 0),
1526
- seo: {
1527
- slug: "faq-is-funskool-beyblade-fake",
1528
- metaTitle: "Is a Funskool Beyblade fake?",
1529
- metaDescription: "No — Funskool is a licensed Indian importer and Sonokong the licensed Korean producer. Both marques are a positive signal, not a warning.",
1530
- },
1531
- isActive: true,
1532
- createdBy: "user-admin-letitrip",
1533
- createdAt: daysAgo(1),
1534
- updatedAt: daysAgo(1),
1535
- },
1536
- {
1537
- id: "faq-what-is-a-reproduction",
1538
- question: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
1539
- answer: html("<p><strong>“Midfake” is used two ways</strong>, and the difference matters. In the Metal Fight community it means a specific thing: a <em>Takara Tomy</em> batch of reduced quality, built on Takara Tomy blueprints in Taiwan, with different alloys and TT-style box codes — so it may well carry the real marque. Collectors identify those batches by the code on the bottom of the box. Used more loosely — and this is the commoner sense in India — it means any 1st-copy of an original design, mostly Chinese-made, carrying no manufacturer's marque at all. Quality is often genuinely good, and some tournament formats permit certain reproduction parts.</p><p>🛑 There is <strong>no official Takara Tomy statement</strong> acknowledging the reduced-quality batches, so everything known about them comes from collectors comparing boxes.</p><p>It is <strong>not</strong> the same as a cheap counterfeit. A counterfeit is poor-quality and can contain lead or cadmium in its metal parts, which is a safety matter — we do not allow those listed at all. A reproduction is a legitimate thing to sell <em>when it is labelled</em>, and every listing on LetItRip states its authenticity as Original, Reproduction, or Unverified.</p><p>🛑 If a seller calls something \"aftermarket\", \"custom\" or \"upgraded\" without naming a manufacturer, they are describing a reproduction. Ask.</p>"),
1540
- category: "product_information",
1541
- showOnHomepage: true,
1542
- showInFooter: false,
1543
- isPinned: false,
1544
- order: 210,
1545
- priority: 10,
1546
- tags: ["reproduction", "midfake", "authenticity", "fake", "aftermarket"],
1547
- relatedFAQs: ["faq-check-if-my-beyblade-is-original", "faq-beyblade-box-code-meaning", "faq-counterfeit-guarantee"],
1548
- stats: makeStats(670, 50),
1549
- seo: {
1550
- slug: "faq-what-is-a-reproduction",
1551
- metaTitle: "What is a \"reproduction\" or \"midfake\"? Is it a fake?",
1552
- metaDescription: "“Midfake” means two different things — a reduced-quality Takara Tomy batch, or any unbranded 1st-copy. Both differ from a counterfeit.",
1553
- },
1554
- isActive: true,
1555
- createdBy: "user-admin-letitrip",
1556
- createdAt: daysAgo(30),
1557
- updatedAt: daysAgo(2),
1558
- },
1559
- {
1560
- id: "faq-how-to-spot-a-fake",
1561
- question: "How do I spot a fake Beyblade?",
1562
- answer: html("<p>Five things, cheapest check first:</p><ul><li><strong>Price.</strong> A ₹400 Beyblade X where the market is ₹1,500 is not a bargain. The single most reliable signal.</li><li><strong>Spelling.</strong> Counterfeiters alter the name to dodge trademarks — <em>Pegasis</em> for Pegasus, <em>Jupitar</em> for Jupiter, trailing apostrophes, digits for letters.</li><li><strong>No marque.</strong> Genuine parts carry Takara Tomy or Hasbro moulding. \"No brand\" means reproduction at best.</li><li><strong>Invented product codes.</strong> Takara Tomy does not issue <code>-00</code> retail SKUs or colour suffixes like <code>BB108gold</code>.</li><li><strong>Screws and finish.</strong> Originals use consistent tri-wing or Phillips screws and clean paint edges; fakes mix them and bleed.</li></ul><p>If a listing bundles a \"free storage box\" and leads with the seller's own brand name rather than the marque, treat it as a reproduction regardless of what it says.</p>"),
1563
- category: "product_information",
1564
- showOnHomepage: true,
1565
- showInFooter: false,
1566
- isPinned: false,
1567
- order: 211,
1568
- priority: 10,
1569
- tags: ["fake", "counterfeit", "spotting", "authenticity", "takara tomy"],
1570
- relatedFAQs: [],
1571
- stats: makeStats(707, 53),
1572
- seo: {
1573
- slug: "faq-how-to-spot-a-fake",
1574
- metaTitle: "How do I spot a fake Beyblade?",
1575
- metaDescription: "Five things, cheapest check first: Price. A ₹400 Beyblade X where the market is ₹1,500 is not a bargain. The single most reliable signal. Spelling. Counter",
1576
- },
1577
- isActive: true,
1578
- createdBy: "user-admin-letitrip",
1579
- createdAt: daysAgo(30),
1580
- updatedAt: daysAgo(2),
1581
- },
1582
- {
1583
- id: "faq-is-it-tournament-legal",
1584
- question: "Is this part tournament-legal?",
1585
- answer: html("<p>It depends on the format, and the listing tells you. WBO play runs several formats — Standard, Limited, Classic and others — and a part legal in one is not automatically legal in another.</p><p>Reproduction parts are permitted in some formats and banned in others, which is a second reason authenticity is labelled on every listing rather than left to inference. If you are buying specifically for organised play, check the format you play before the part.</p>"),
1586
- category: "product_information",
1587
- showOnHomepage: false,
1588
- showInFooter: false,
1589
- isPinned: false,
1590
- order: 212,
1591
- priority: 6,
1592
- tags: ["tournament", "wbo", "legal", "format", "competitive"],
1593
- relatedFAQs: [],
1594
- stats: makeStats(744, 56),
1595
- seo: {
1596
- slug: "faq-is-it-tournament-legal",
1597
- metaTitle: "Is this part tournament-legal?",
1598
- metaDescription: "It depends on the format, and the listing tells you. WBO play runs several formats — Standard, Limited, Classic and others — and a part legal in one is not",
1599
- },
1600
- isActive: true,
1601
- createdBy: "user-admin-letitrip",
1602
- createdAt: daysAgo(30),
1603
- updatedAt: daysAgo(2),
1604
- },
1605
- {
1606
- id: "faq-what-do-nib-nip-rlc-mean",
1607
- question: "What do NIB, NIP, RLC and Random Booster mean?",
1608
- answer: html("<p><strong>NIB</strong> — New In Box: unopened, original packaging intact. <strong>NIP</strong> — New In Packet: unopened but in a sealed bag or blister rather than a box.</p><p><strong>RLC</strong> is Random Layer Collection and similar <strong>Random Booster</strong> products: sealed assortments where the specific item inside is not disclosed before purchase. You are buying the assortment, not a chosen bey — so a Random Booster cannot be returned for containing the \"wrong\" one.</p><p>A listing that says <em>loose</em> or <em>no box</em> has been opened and is sold as the photos show it.</p>"),
1609
- category: "product_information",
1610
- showOnHomepage: false,
1611
- showInFooter: false,
1612
- isPinned: false,
1613
- order: 213,
1614
- priority: 7,
1615
- tags: ["nib", "nip", "rlc", "random booster", "condition"],
1616
- relatedFAQs: [],
1617
- stats: makeStats(781, 59),
1618
- seo: {
1619
- slug: "faq-what-do-nib-nip-rlc-mean",
1620
- metaTitle: "What do NIB, NIP, RLC and Random Booster mean?",
1621
- metaDescription: "NIB — New In Box: unopened, original packaging intact. NIP — New In Packet: unopened but in a sealed bag or blister rather than a box. RLC is Random Layer ",
1622
- },
1623
- isActive: true,
1624
- createdBy: "user-admin-letitrip",
1625
- createdAt: daysAgo(30),
1626
- updatedAt: daysAgo(2),
1627
- },
1628
- {
1629
- id: "faq-launcher-wont-lock",
1630
- question: "My launcher will not lock onto the bey, or the ripcord slips",
1631
- answer: html("<p>Three causes, in the order they usually turn out to be:</p><ul><li><strong>Wrong generation.</strong> A Burst launcher does not lock a Metal Fight bey and vice versa — the prongs differ. Check the generation before the launcher.</li><li><strong>Worn ripcord teeth.</strong> If the cord pulls with no resistance, the internal gear teeth are rounded. Ripcords are consumable; replacements are cheap and listed under launchers.</li><li><strong>Debris in the prongs.</strong> Dust and plastic shavings pack into the launcher head. A dry toothbrush fixes it more often than you would expect.</li></ul><p>If a launcher arrived faulty rather than wore out, that is a \"not as described\" return, not a repair.</p>"),
1632
- category: "technical_support",
1633
- showOnHomepage: false,
1634
- showInFooter: false,
1635
- isPinned: false,
1636
- order: 214,
1637
- priority: 7,
1638
- tags: ["launcher", "ripcord", "troubleshooting", "slips", "lock"],
1639
- relatedFAQs: [],
1640
- stats: makeStats(818, 62),
1641
- seo: {
1642
- slug: "faq-launcher-wont-lock",
1643
- metaTitle: "My launcher will not lock onto the bey, or the ripcord slips",
1644
- metaDescription: "Three causes, in the order they usually turn out to be: Wrong generation. A Burst launcher does not lock a Metal Fight bey and vice versa — the prongs diff",
1645
- },
1646
- isActive: true,
1647
- createdBy: "user-admin-letitrip",
1648
- createdAt: daysAgo(30),
1649
- updatedAt: daysAgo(2),
1650
- },
1651
- {
1652
- id: "faq-burst-top-wont-click-together",
1653
- question: "My Burst top will not click together",
1654
- answer: html("<p>The layer, disc and driver have to be rotated into alignment, not pressed. Line the driver's notches up with the disc, then turn clockwise until it clicks — if you are pushing hard, it is misaligned rather than stiff.</p><p>If it still will not seat: a <strong>Cho-Z or GT layer will not fit a single-layer driver</strong>, and a DB/BU part will not fit older discs. Mixing generations is the most common cause and it is not a defect.</p><p>A top that clicks together but bursts on the first launch usually has a worn driver spring, which is wear rather than a fault.</p>"),
1655
- category: "technical_support",
1656
- showOnHomepage: false,
1657
- showInFooter: false,
1658
- isPinned: false,
1659
- order: 215,
1660
- priority: 6,
1661
- tags: ["burst", "assembly", "layer", "driver", "disc"],
1662
- relatedFAQs: [],
1663
- stats: makeStats(855, 65),
1664
- seo: {
1665
- slug: "faq-burst-top-wont-click-together",
1666
- metaTitle: "My Burst top will not click together",
1667
- metaDescription: "The layer, disc and driver have to be rotated into alignment, not pressed. Line the driver's notches up with the disc, then turn clockwise until it clicks ",
1668
- },
1669
- isActive: true,
1670
- createdBy: "user-admin-letitrip",
1671
- createdAt: daysAgo(30),
1672
- updatedAt: daysAgo(2),
1673
- },
1674
- {
1675
- id: "faq-are-parts-cross-compatible",
1676
- question: "Can I mix parts across Beyblade generations?",
1677
- answer: html("<p>Mostly no, and the boundaries are hard ones. <strong>Plastic Gen, HMS, Metal Fight, Burst and Beyblade X use incompatible mounting systems</strong> — a Burst driver does not thread into a Metal Fight track, and an X ratchet does not fit a Burst disc.</p><p>Within a generation, mixing is the whole point: Burst layers, discs and drivers interchange across Burst series, and Metal Fight energy rings, fusion wheels, tracks and tips interchange across MFB.</p><p>The one common cross-era exception is launchers for the same generation family. When in doubt, match the generation shown on the listing — a part that \"nearly fits\" will damage both pieces.</p>"),
1678
- category: "technical_support",
1679
- showOnHomepage: false,
1680
- showInFooter: false,
1681
- isPinned: false,
1682
- order: 216,
1683
- priority: 7,
1684
- tags: ["compatibility", "generations", "parts", "burst", "metal fight"],
1685
- relatedFAQs: [],
1686
- stats: makeStats(892, 68),
1687
- seo: {
1688
- slug: "faq-are-parts-cross-compatible",
1689
- metaTitle: "Can I mix parts across Beyblade generations?",
1690
- metaDescription: "Mostly no, and the boundaries are hard ones. Plastic Gen, HMS, Metal Fight, Burst and Beyblade X use incompatible mounting systems — a Burst driver does no",
1691
- },
1692
- isActive: true,
1693
- createdBy: "user-admin-letitrip",
1694
- createdAt: daysAgo(30),
1695
- updatedAt: daysAgo(2),
1696
- },
1697
- {
1698
- id: "faq-which-stadium-do-i-need",
1699
- question: "Which stadium do I need?",
1700
- answer: html("<p>Match the stadium to the generation you play. A <strong>BX-10 Xtreme Stadium</strong> is for Beyblade X; a <strong>BB-10 Attack Type</strong> is Metal Fight; a Burst Beystadium suits Burst. They are not interchangeable in any meaningful way — X relies on the Xtreme Dash rail that older stadiums do not have, and a Metal Fight bey in an X stadium behaves nothing like it should.</p><p>For casual play any stadium of the right size works. For organised play the format specifies the stadium, so check that first.</p>"),
1701
- category: "technical_support",
1702
- showOnHomepage: false,
1703
- showInFooter: false,
1704
- isPinned: false,
1705
- order: 217,
1706
- priority: 6,
1707
- tags: ["stadium", "beystadium", "compatibility", "xtreme", "generation"],
1708
- relatedFAQs: [],
1709
- stats: makeStats(929, 71),
1710
- seo: {
1711
- slug: "faq-which-stadium-do-i-need",
1712
- metaTitle: "Which stadium do I need?",
1713
- metaDescription: "Match the stadium to the generation you play. A BX-10 Xtreme Stadium is for Beyblade X; a BB-10 Attack Type is Metal Fight; a Burst Beystadium suits Burst.",
1714
- },
1715
- isActive: true,
1716
- createdBy: "user-admin-letitrip",
1717
- createdAt: daysAgo(30),
1718
- updatedAt: daysAgo(2),
1719
- },
1720
- {
1721
- id: "faq-legitimate-seller-vs-replica-reseller",
1722
- question: "How do I tell a legitimate seller from someone reselling unlabelled replicas?",
1723
- answer: html("<p>Look at what they <em>say</em>, not only at what they sell. A legitimate seller of reproductions <strong>says so</strong> — the listing's authenticity field reads Reproduction, and the description does not claim a marque.</p><p>The pattern to distrust is a seller who avoids the question entirely: no brand named anywhere, their own name leading every title, prices far below the landed cost of a genuine import, and language like \"aftermarket\", \"custom parts\" or \"upgraded components\" in place of a manufacturer. One real seller we studied had <strong>zero</strong> mentions of Takara Tomy, authentic, genuine, replica <em>or</em> fake across 1,277 listings — the silence was the strategy.</p><p>Every listing here must state its authenticity. If one is marked Unverified, that is the seller telling you they do not know — which is honest, and a reason to ask before you buy.</p>"),
1724
- category: "scam_awareness",
1725
- showOnHomepage: false,
1726
- showInFooter: false,
1727
- isPinned: false,
1728
- order: 218,
1729
- priority: 8,
1730
- tags: ["scam", "replica", "unlabelled", "seller", "authenticity"],
1731
- relatedFAQs: [],
1732
- stats: makeStats(966, 74),
1733
- seo: {
1734
- slug: "faq-legitimate-seller-vs-replica-reseller",
1735
- metaTitle: "How do I tell a legitimate seller from someone reselling …",
1736
- metaDescription: "Look at what they say , not only at what they sell. A legitimate seller of reproductions says so — the listing's authenticity field reads Reproduction, and",
1737
- },
1738
- isActive: true,
1739
- createdBy: "user-admin-letitrip",
1740
- createdAt: daysAgo(30),
1741
- updatedAt: daysAgo(2),
1742
- },
1743
- {
1744
- id: "faq-why-is-my-total-more-than-the-price",
1745
- question: "Why is my total more than the listed price?",
1746
- answer: html("<p>The item price already includes GST, so the difference is the things you chose plus one small platform fee:</p><ul><li><strong>Shipping</strong>, set by the seller — free, a flat rate, or a live courier quote for your address.</li><li><strong>Platform fee</strong> — capped at <strong>₹10</strong> per checkout, plus 18% GST on that fee. It is charged once for the whole order, not per seller or per item.</li><li><strong>Anything you ticked</strong>: COD handling, gift wrap, WhatsApp updates, shipment or sale protection.</li></ul><p>Every line is itemised before you pay. If a figure appears you did not choose, that is a bug worth reporting rather than a policy.</p>"),
1747
- category: "fees_and_taxes",
1748
- showOnHomepage: true,
1749
- showInFooter: false,
1750
- isPinned: false,
1751
- order: 219,
1752
- priority: 9,
1753
- tags: ["total", "fees", "platform fee", "shipping", "checkout"],
1754
- relatedFAQs: [],
1755
- stats: makeStats(1003, 77),
1756
- seo: {
1757
- slug: "faq-why-is-my-total-more-than-the-price",
1758
- metaTitle: "Why is my total more than the listed price?",
1759
- metaDescription: "The item price already includes GST, so the difference is the things you chose plus one small platform fee: Shipping , set by the seller — free, a flat rat",
1760
- },
1761
- isActive: true,
1762
- createdBy: "user-admin-letitrip",
1763
- createdAt: daysAgo(30),
1764
- updatedAt: daysAgo(2),
1765
- },
1766
- {
1767
- id: "faq-what-is-the-platform-fee",
1768
- question: "What is the platform fee and who pays it?",
1769
- answer: html("<p><strong>You do, and it is capped at ₹10</strong> per checkout plus 18% GST on that ₹10. It is charged once per order regardless of how many items or sellers are involved.</p><p>The seller pays a separate commission out of their own proceeds — you are not charged twice for the same thing, and the seller's commission never appears on your bill.</p>"),
1770
- category: "fees_and_taxes",
1771
- showOnHomepage: false,
1772
- showInFooter: false,
1773
- isPinned: false,
1774
- order: 220,
1775
- priority: 8,
1776
- tags: ["platform fee", "commission", "cap", "checkout"],
1777
- relatedFAQs: [],
1778
- stats: makeStats(1040, 80),
1779
- seo: {
1780
- slug: "faq-what-is-the-platform-fee",
1781
- metaTitle: "What is the platform fee and who pays it?",
1782
- metaDescription: "You do, and it is capped at ₹10 per checkout plus 18% GST on that ₹10. It is charged once per order regardless of how many items or sellers are involved. T",
1783
- },
1784
- isActive: true,
1785
- createdBy: "user-admin-letitrip",
1786
- createdAt: daysAgo(30),
1787
- updatedAt: daysAgo(2),
1788
- },
1789
- {
1790
- id: "faq-what-does-the-seller-receive",
1791
- question: "What does the seller actually receive from my order?",
1792
- answer: html("<p>The <strong>taxable value of the goods</strong>, minus our commission, the GST on that commission, and the payment-gateway cost.</p><p>🛑 <strong>GST on the goods is never paid to the seller.</strong> On a ₹999 order at 5%, ₹47.57 is tax we collect and remit — the seller's figure is based on the ₹951.43 that remains, not on the ₹999 you paid. Shipping you paid goes to the shipping, not to their margin.</p><p>We publish this because the alternative is sellers discovering it on their first payout.</p>"),
1793
- category: "fees_and_taxes",
1794
- showOnHomepage: false,
1795
- showInFooter: false,
1796
- isPinned: false,
1797
- order: 221,
1798
- priority: 7,
1799
- tags: ["payout", "seller", "gst", "commission", "taxable value"],
1800
- relatedFAQs: [],
1801
- stats: makeStats(1077, 83),
1802
- seo: {
1803
- slug: "faq-what-does-the-seller-receive",
1804
- metaTitle: "What does the seller actually receive from my order?",
1805
- metaDescription: "The taxable value of the goods , minus our commission, the GST on that commission, and the payment-gateway cost. 🛑 GST on the goods is never paid to the s",
1806
- },
1807
- isActive: true,
1808
- createdBy: "user-admin-letitrip",
1809
- createdAt: daysAgo(30),
1810
- updatedAt: daysAgo(2),
1811
- },
1812
- {
1813
- id: "faq-what-does-protection-cover",
1814
- question: "What do shipment protection and sale protection cover?",
1815
- answer: html("<p>They are two separate covers because they fail separately, and each is optional at checkout.</p><p><strong>Shipment protection</strong> — the parcel was lost or damaged <em>in transit</em>. We pursue the courier and refund you; you never deal with them directly.</p><p><strong>Sale protection</strong> — the <em>item</em> is not what was described, or the wrong item arrived. Refunded no questions asked.</p><p>What is <strong>not</strong> covered: sale protection is not offered on <strong>Final Sale</strong> listings, because \"no returns\" and \"no questions asked\" cannot both be true — though shipment protection still applies there, since a parcel lost in transit was never delivered at all. And a seller who has not opted in cannot offer either; the listing says so <em>before</em> you buy rather than after you claim.</p>"),
1816
- category: "fees_and_taxes",
1817
- showOnHomepage: false,
1818
- showInFooter: false,
1819
- isPinned: false,
1820
- order: 222,
1821
- priority: 8,
1822
- tags: ["protection", "shipment protection", "sale protection", "claim", "final sale"],
1823
- relatedFAQs: [],
1824
- stats: makeStats(1114, 86),
1825
- seo: {
1826
- slug: "faq-what-does-protection-cover",
1827
- metaTitle: "What do shipment protection and sale protection cover?",
1828
- metaDescription: "They are two separate covers because they fail separately, and each is optional at checkout. Shipment protection — the parcel was lost or damaged in transi",
1829
- },
1830
- isActive: true,
1831
- createdBy: "user-admin-letitrip",
1832
- createdAt: daysAgo(30),
1833
- updatedAt: daysAgo(2),
1834
- },
1835
- // ── STICKER SHEETS (3) ──────────────────────────────────────────────────────
1836
- //
1837
- // 🛑 FILED UNDER `product_information`, NOT A NEW `stickers` CATEGORY.
1838
- // The plan called for one, on the premise that the seeded set was
1839
- // Shipping/Returns/Payments/Auctions/Pre-orders — that list came from a stale
1840
- // paragraph in CLAUDE.md. The real union already carries `product_information`
1841
- // (FAQ_CATEGORY_LABELS), which is exactly what these are. Adding a tenth
1842
- // category for three entries would mean extending a compile-checked union,
1843
- // the admin option list and every chip derived from it, to say something an
1844
- // existing value already says.
1845
- //
1846
- // 🛑 THREE, NOT SIX. The plan drafted six questions and said plainly that the
1847
- // answers to half of them need product facts nobody has yet. Those three are
1848
- // listed below as questions ONLY, and are deliberately NOT seeded — `faqs` is
1849
- // a public, indexed collection with its own seo.slug, so a placeholder answer
1850
- // there is a confident lie on a page Google will read.
1851
- //
1852
- // · "What size are the stickers?" needs: real sheet + part dimensions
1853
- // · "Are they weatherproof / dishwasher-safe?" needs: material + laminate spec
1854
- // · "Can I buy a single sticker rather than a whole sheet?"
1855
- // needs: the per-part listings from Part Two. Today the honest answer is
1856
- // "no", and seeding that now would have to be rewritten the week the
1857
- // grouped parent+parts listings ship.
1858
- //
1859
- // The three below need no product facts — they explain what a kiss cut IS,
1860
- // which is true of every kiss-cut sticker ever made.
1861
- {
1862
- id: "faq-what-is-a-kiss-cut-sticker",
1863
- question: "What is a kiss-cut sticker?",
1864
- answer: html(`<p>A <strong>kiss cut</strong> goes through the sticker's vinyl but <em>not</em> through the paper backing behind it. The sheet stays in one piece, and each sticker peels off individually when you want it.</p><p>A <strong>die cut</strong> goes all the way through both layers, so every sticker is already a separate loose piece.</p><p>Kiss-cut sheets are what vintage Beyblade stickers were originally made as: one sheet, many stickers, each outlined along its own shape.</p>`),
1865
- category: "product_information",
1866
- showOnHomepage: false,
1867
- showInFooter: false,
1868
- isPinned: false,
1869
- order: 1,
1870
- priority: 5,
1871
- tags: ["stickers", "kiss-cut", "die-cut", "sheets"],
1872
- relatedFAQs: ["faq-sticker-white-border", "faq-how-to-apply-a-sticker"],
1873
- useSiteSettings: true,
1874
- variables: {},
1875
- stats: makeStats(0, 0),
1876
- seo: {
1877
- slug: "faq-what-is-a-kiss-cut-sticker",
1878
- metaTitle: "What is a kiss-cut sticker? | LetItRip",
1879
- metaDescription: "A kiss cut goes through the vinyl but not the backing, so the sheet stays whole and each sticker peels off on its own.",
1880
- },
1881
- isActive: true,
1882
- createdBy: "user-admin-letitrip",
1883
- createdAt: daysAgo(1),
1884
- updatedAt: daysAgo(1),
1885
- },
1886
- {
1887
- id: "faq-sticker-white-border",
1888
- question: "Why do some stickers have a white border around them?",
1889
- answer: html(`<p>That border is part of the cut, not a printing mistake. A cutter cannot follow fine detail perfectly, so the cut line is placed slightly <em>outside</em> the artwork — the small margin that leaves is what stops a sliver of artwork being shaved off if the blade drifts by a fraction of a millimetre.</p><p>Where the original sticker was designed with a border, we keep it. Where it was cut tight to the art, we cut tight to the art.</p>`),
1890
- category: "product_information",
1891
- showOnHomepage: false,
1892
- showInFooter: false,
1893
- isPinned: false,
1894
- order: 2,
1895
- priority: 4,
1896
- tags: ["stickers", "border", "cutting", "bleed"],
1897
- relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
1898
- useSiteSettings: true,
1899
- variables: {},
1900
- stats: makeStats(0, 0),
1901
- seo: {
1902
- slug: "faq-sticker-white-border",
1903
- metaTitle: "Why do stickers have a white border? | LetItRip",
1904
- metaDescription: "The margin around a sticker is part of the cut — it stops the blade shaving artwork if it drifts a fraction of a millimetre.",
1905
- },
1906
- isActive: true,
1907
- createdBy: "user-admin-letitrip",
1908
- createdAt: daysAgo(1),
1909
- updatedAt: daysAgo(1),
1910
- },
1911
- {
1912
- id: "faq-how-to-apply-a-sticker",
1913
- question: "How do I apply a sticker so it does not lift at the edges?",
1914
- answer: html(`<p>Clean the surface first and let it dry completely — most lifting is a dusty or slightly greasy surface rather than the adhesive.</p><p>Peel the sticker from one corner rather than lifting it flat, lay that edge down first, then press across the sticker in one direction so the air pushes out ahead of your finger instead of being trapped under it.</p><p>Press firmly for a few seconds once it is down, and leave it a day before getting it wet.</p>`),
1915
- category: "product_information",
1916
- showOnHomepage: false,
1917
- showInFooter: false,
1918
- isPinned: false,
1919
- order: 3,
1920
- priority: 3,
1921
- tags: ["stickers", "application", "how-to"],
1922
- relatedFAQs: ["faq-what-is-a-kiss-cut-sticker"],
1923
- useSiteSettings: true,
1924
- variables: {},
1925
- stats: makeStats(0, 0),
1926
- seo: {
1927
- slug: "faq-how-to-apply-a-sticker",
1928
- metaTitle: "How to apply a sticker without lifting edges | LetItRip",
1929
- metaDescription: "Clean the surface, lay one edge first, and press across in one direction so air pushes out ahead of your finger.",
1930
- },
1931
- isActive: true,
1932
- createdBy: "user-admin-letitrip",
1933
- createdAt: daysAgo(1),
1934
- updatedAt: daysAgo(1),
1935
- },
1936
- ];
1937
- /**
1938
- * Derive `searchTxt` for every record from its own content.
1939
- *
1940
- * This is why FAQ search returned nothing: the seed writes documents raw via
1941
- * `batch.set()` (both `seed/runner.ts` and `seed-cli.mjs`), bypassing
1942
- * `FirebaseFAQsRepository.create()` — the only thing that built tokens. So all
1943
- * 63 seeded FAQs had no `searchTokens` field at all and `array-contains`
1944
- * matched zero documents, for every query, forever.
1945
- *
1946
- * Derived here rather than hand-written per record so a new FAQ cannot be added
1947
- * without tokens, and computed with the SAME `buildFaqSearchTxt` the repository
1948
- * uses so seeded and admin-created FAQs are byte-identical.
1949
- *
1950
- * Pure function of the record's own content — deterministic, so this does not
1951
- * reintroduce the `appkit-seed` idempotency problem of Root Cause #25.
1952
- */
1953
- export const faqSeedData = faqSeedRecords.map((faq) => ({
1954
- ...faq,
1955
- searchTxt: buildFaqSearchTxt(faq),
1956
- }));