@mohasinac/appkit 4.57.0 → 4.59.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 (574) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/server/features/beys/data.d.ts +44 -0
  3. package/dist/_internal/server/features/beys/data.js +107 -0
  4. package/dist/_internal/server/features/beys/og.d.ts +42 -0
  5. package/dist/_internal/server/features/beys/og.js +89 -0
  6. package/dist/_internal/server/features/parts/data.js +3 -2
  7. package/dist/_internal/server/jobs/handlers/messages.d.ts +1 -1
  8. package/dist/_internal/server/jobs/handlers/messages.js +1 -1
  9. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  10. package/dist/_internal/shared/actions/action-registry.js +86 -0
  11. package/dist/_internal/shared/types/base-document.d.ts +1 -1
  12. package/dist/client.d.ts +2 -0
  13. package/dist/client.js +1 -0
  14. package/dist/constants/api-endpoints.d.ts +12 -0
  15. package/dist/constants/api-endpoints.js +10 -0
  16. package/dist/constants/field-names.d.ts +46 -0
  17. package/dist/constants/field-names.js +46 -0
  18. package/dist/constants/seed-meta.d.ts +113 -0
  19. package/dist/constants/seed-meta.js +91 -0
  20. package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
  21. package/dist/features/admin/components/AdminBeysView.js +178 -0
  22. package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
  23. package/dist/features/admin/components/AdminPartsView.js +160 -0
  24. package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
  25. package/dist/features/admin/components/OwnerQuickActions.js +31 -3
  26. package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
  27. package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
  28. package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
  29. package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
  30. package/dist/features/admin/schemas/firestore.d.ts +1 -1
  31. package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
  32. package/dist/features/auth/permissions/constants.d.ts +1 -1
  33. package/dist/features/auth/permissions/constants.js +12 -1
  34. package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
  35. package/dist/features/beys/components/BeyDetailPageView.js +98 -0
  36. package/dist/features/beys/schemas/firestore.d.ts +417 -0
  37. package/dist/features/beys/schemas/firestore.js +65 -0
  38. package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
  39. package/dist/features/blog/components/BlogPostView.js +2 -2
  40. package/dist/features/categories/components/BrandDetailPageView.js +4 -2
  41. package/dist/features/categories/components/BundleDetailView.js +2 -2
  42. package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
  43. package/dist/features/categories/components/CategoryGrid.js +24 -2
  44. package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
  45. package/dist/features/events/components/EventCard.js +15 -2
  46. package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
  47. package/dist/features/homepage/components/CustomCardsSection.js +67 -50
  48. package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
  49. package/dist/features/homepage/schemas/index.d.ts +10 -10
  50. package/dist/features/parts/components/PartDetailPageView.js +5 -3
  51. package/dist/features/parts/components/PartsSearchBox.js +79 -4
  52. package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
  53. package/dist/features/parts/schemas/admin-edit.js +89 -0
  54. package/dist/features/parts/schemas/firestore.d.ts +2 -1
  55. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
  56. package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
  57. package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
  58. package/dist/features/products/components/ProductGrid.js +18 -2
  59. package/dist/features/products/schemas/firestore.d.ts +18 -0
  60. package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
  61. package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
  62. package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
  63. package/dist/features/seller/components/SellerProductShell.js +31 -3
  64. package/dist/index.d.ts +6 -129
  65. package/dist/index.js +61 -292
  66. package/dist/next/routing/route-map.d.ts +13 -1
  67. package/dist/next/routing/route-map.js +37 -0
  68. package/dist/schemas/registry.d.ts +6 -6
  69. package/dist/server.d.ts +2 -69
  70. package/dist/server.js +8 -69
  71. package/dist/styles.css +468 -1
  72. package/dist/tailwind-utilities.css +1 -1
  73. package/dist/ui/components/PosterCard.d.ts +99 -0
  74. package/dist/ui/components/PosterCard.js +109 -0
  75. package/dist/ui/components/PosterCard.style.css +466 -0
  76. package/dist/ui/components/index.style.css +1 -0
  77. package/dist/ui/index.d.ts +2 -0
  78. package/dist/ui/index.js +2 -0
  79. package/package.json +4 -2
  80. package/scripts/seed-cli.mjs +177 -2
  81. package/dist/features/tester/seed-data/_happy-path.d.ts +0 -23
  82. package/dist/features/tester/seed-data/_happy-path.js +0 -710
  83. package/dist/features/tester/seed-data/_money-flows.d.ts +0 -23
  84. package/dist/features/tester/seed-data/_money-flows.js +0 -610
  85. package/dist/features/tester/seed-data/authored/_types.d.ts +0 -57
  86. package/dist/features/tester/seed-data/authored/_types.js +0 -35
  87. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.d.ts +0 -2
  88. package/dist/features/tester/seed-data/authored/account-auth__profile-settings.js +0 -226
  89. package/dist/features/tester/seed-data/authored/account-auth__signup-login.d.ts +0 -2
  90. package/dist/features/tester/seed-data/authored/account-auth__signup-login.js +0 -329
  91. package/dist/features/tester/seed-data/authored/addresses__address-filters.d.ts +0 -2
  92. package/dist/features/tester/seed-data/authored/addresses__address-filters.js +0 -41
  93. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.d.ts +0 -2
  94. package/dist/features/tester/seed-data/authored/addresses__postal-lookup.js +0 -76
  95. package/dist/features/tester/seed-data/authored/addresses__postal-validation.d.ts +0 -2
  96. package/dist/features/tester/seed-data/authored/addresses__postal-validation.js +0 -78
  97. package/dist/features/tester/seed-data/authored/addresses__state-picker.d.ts +0 -2
  98. package/dist/features/tester/seed-data/authored/addresses__state-picker.js +0 -59
  99. package/dist/features/tester/seed-data/authored/addresses__unban-request.d.ts +0 -2
  100. package/dist/features/tester/seed-data/authored/addresses__unban-request.js +0 -77
  101. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.d.ts +0 -2
  102. package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +0 -151
  103. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.d.ts +0 -2
  104. package/dist/features/tester/seed-data/authored/admin__bans-and-trust.js +0 -265
  105. package/dist/features/tester/seed-data/authored/admin__blog-faqs.d.ts +0 -2
  106. package/dist/features/tester/seed-data/authored/admin__blog-faqs.js +0 -131
  107. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.d.ts +0 -2
  108. package/dist/features/tester/seed-data/authored/admin__bug-hunter-rewards.js +0 -143
  109. package/dist/features/tester/seed-data/authored/admin__bulk-actions.d.ts +0 -2
  110. package/dist/features/tester/seed-data/authored/admin__bulk-actions.js +0 -207
  111. package/dist/features/tester/seed-data/authored/admin__bundles.d.ts +0 -2
  112. package/dist/features/tester/seed-data/authored/admin__bundles.js +0 -144
  113. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.d.ts +0 -2
  114. package/dist/features/tester/seed-data/authored/admin__buyer-data-admin.js +0 -265
  115. package/dist/features/tester/seed-data/authored/admin__catalog-listings.d.ts +0 -2
  116. package/dist/features/tester/seed-data/authored/admin__catalog-listings.js +0 -318
  117. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.d.ts +0 -2
  118. package/dist/features/tester/seed-data/authored/admin__category-brand-authoring.js +0 -177
  119. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.d.ts +0 -2
  120. package/dist/features/tester/seed-data/authored/admin__classifieds-digitalcodes-live.js +0 -165
  121. package/dist/features/tester/seed-data/authored/admin__content-deletes.d.ts +0 -2
  122. package/dist/features/tester/seed-data/authored/admin__content-deletes.js +0 -267
  123. package/dist/features/tester/seed-data/authored/admin__content-marketing.d.ts +0 -2
  124. package/dist/features/tester/seed-data/authored/admin__content-marketing.js +0 -188
  125. package/dist/features/tester/seed-data/authored/admin__coupons.d.ts +0 -2
  126. package/dist/features/tester/seed-data/authored/admin__coupons.js +0 -215
  127. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.d.ts +0 -2
  128. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +0 -202
  129. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.d.ts +0 -2
  130. package/dist/features/tester/seed-data/authored/admin__firebase-function-effects.js +0 -249
  131. package/dist/features/tester/seed-data/authored/admin__media-watermark.d.ts +0 -2
  132. package/dist/features/tester/seed-data/authored/admin__media-watermark.js +0 -148
  133. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.d.ts +0 -2
  134. package/dist/features/tester/seed-data/authored/admin__orders-fulfillment.js +0 -350
  135. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.d.ts +0 -2
  136. package/dist/features/tester/seed-data/authored/admin__prize-draws-lotteries.js +0 -129
  137. package/dist/features/tester/seed-data/authored/admin__site-system.d.ts +0 -2
  138. package/dist/features/tester/seed-data/authored/admin__site-system.js +0 -586
  139. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.d.ts +0 -2
  140. package/dist/features/tester/seed-data/authored/admin__uncovered-admin-pages.js +0 -260
  141. package/dist/features/tester/seed-data/authored/admin__users-trust.d.ts +0 -2
  142. package/dist/features/tester/seed-data/authored/admin__users-trust.js +0 -569
  143. package/dist/features/tester/seed-data/authored/buying__bidding.d.ts +0 -2
  144. package/dist/features/tester/seed-data/authored/buying__bidding.js +0 -449
  145. package/dist/features/tester/seed-data/authored/buying__browsing-search.d.ts +0 -2
  146. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +0 -684
  147. package/dist/features/tester/seed-data/authored/buying__buying-checkout.d.ts +0 -2
  148. package/dist/features/tester/seed-data/authored/buying__buying-checkout.js +0 -546
  149. package/dist/features/tester/seed-data/authored/buying__buying-coupons.d.ts +0 -2
  150. package/dist/features/tester/seed-data/authored/buying__buying-coupons.js +0 -379
  151. package/dist/features/tester/seed-data/authored/buying__cart.d.ts +0 -2
  152. package/dist/features/tester/seed-data/authored/buying__cart.js +0 -1264
  153. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.d.ts +0 -2
  154. package/dist/features/tester/seed-data/authored/buying__image-tile-layout.js +0 -122
  155. package/dist/features/tester/seed-data/authored/buying__my-orders.d.ts +0 -2
  156. package/dist/features/tester/seed-data/authored/buying__my-orders.js +0 -279
  157. package/dist/features/tester/seed-data/authored/buying__offers.d.ts +0 -2
  158. package/dist/features/tester/seed-data/authored/buying__offers.js +0 -1127
  159. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.d.ts +0 -2
  160. package/dist/features/tester/seed-data/authored/buying__order-detail-actions.js +0 -153
  161. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.d.ts +0 -2
  162. package/dist/features/tester/seed-data/authored/buying__order-status-lifecycle.js +0 -252
  163. package/dist/features/tester/seed-data/authored/buying__product-detail.d.ts +0 -2
  164. package/dist/features/tester/seed-data/authored/buying__product-detail.js +0 -474
  165. package/dist/features/tester/seed-data/authored/buying__return-request.d.ts +0 -2
  166. package/dist/features/tester/seed-data/authored/buying__return-request.js +0 -165
  167. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.d.ts +0 -2
  168. package/dist/features/tester/seed-data/authored/buying__reviews-pagination.js +0 -260
  169. package/dist/features/tester/seed-data/authored/buying__reviews.d.ts +0 -2
  170. package/dist/features/tester/seed-data/authored/buying__reviews.js +0 -128
  171. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +0 -2
  172. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +0 -96
  173. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.d.ts +0 -2
  174. package/dist/features/tester/seed-data/authored/buying__user-dashboard-extras.js +0 -283
  175. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.d.ts +0 -2
  176. package/dist/features/tester/seed-data/authored/buying__user-dashboard-navigation.js +0 -169
  177. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.d.ts +0 -2
  178. package/dist/features/tester/seed-data/authored/buying__user-uncovered-pages.js +0 -105
  179. package/dist/features/tester/seed-data/authored/buying__wishlist-history.d.ts +0 -2
  180. package/dist/features/tester/seed-data/authored/buying__wishlist-history.js +0 -374
  181. package/dist/features/tester/seed-data/authored/community-support__messages.d.ts +0 -2
  182. package/dist/features/tester/seed-data/authored/community-support__messages.js +0 -200
  183. package/dist/features/tester/seed-data/authored/community-support__public-profile.d.ts +0 -2
  184. package/dist/features/tester/seed-data/authored/community-support__public-profile.js +0 -54
  185. package/dist/features/tester/seed-data/authored/community-support__support-tickets.d.ts +0 -2
  186. package/dist/features/tester/seed-data/authored/community-support__support-tickets.js +0 -76
  187. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +0 -4
  188. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +0 -590
  189. package/dist/features/tester/seed-data/authored/content-discovery__blog.d.ts +0 -2
  190. package/dist/features/tester/seed-data/authored/content-discovery__blog.js +0 -110
  191. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.d.ts +0 -2
  192. package/dist/features/tester/seed-data/authored/content-discovery__category-brand-relations.js +0 -149
  193. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.d.ts +0 -2
  194. package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +0 -145
  195. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.d.ts +0 -2
  196. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +0 -174
  197. package/dist/features/tester/seed-data/authored/content-discovery__coupons.d.ts +0 -2
  198. package/dist/features/tester/seed-data/authored/content-discovery__coupons.js +0 -169
  199. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.d.ts +0 -2
  200. package/dist/features/tester/seed-data/authored/content-discovery__event-detail-subroutes.js +0 -209
  201. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.d.ts +0 -2
  202. package/dist/features/tester/seed-data/authored/content-discovery__event-participation.js +0 -207
  203. package/dist/features/tester/seed-data/authored/content-discovery__events.d.ts +0 -2
  204. package/dist/features/tester/seed-data/authored/content-discovery__events.js +0 -377
  205. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.d.ts +0 -2
  206. package/dist/features/tester/seed-data/authored/content-discovery__faq-help.js +0 -87
  207. package/dist/features/tester/seed-data/authored/content-discovery__notifications.d.ts +0 -2
  208. package/dist/features/tester/seed-data/authored/content-discovery__notifications.js +0 -147
  209. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +0 -2
  210. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +0 -209
  211. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.d.ts +0 -2
  212. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +0 -167
  213. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +0 -2
  214. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +0 -73
  215. package/dist/features/tester/seed-data/authored/content-discovery__search.d.ts +0 -2
  216. package/dist/features/tester/seed-data/authored/content-discovery__search.js +0 -363
  217. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +0 -2
  218. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +0 -340
  219. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.d.ts +0 -2
  220. package/dist/features/tester/seed-data/authored/content-discovery__store-reviews-aggregate.js +0 -88
  221. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.d.ts +0 -2
  222. package/dist/features/tester/seed-data/authored/cta-layout__checkout-bottom-bar.js +0 -78
  223. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.d.ts +0 -2
  224. package/dist/features/tester/seed-data/authored/cta-layout__dialog-footers.js +0 -76
  225. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.d.ts +0 -2
  226. package/dist/features/tester/seed-data/authored/cta-layout__editor-action-bar.js +0 -62
  227. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.d.ts +0 -2
  228. package/dist/features/tester/seed-data/authored/cta-layout__navbar-ctas.js +0 -163
  229. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.d.ts +0 -2
  230. package/dist/features/tester/seed-data/authored/cta-layout__product-bottom-bar.js +0 -61
  231. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.d.ts +0 -2
  232. package/dist/features/tester/seed-data/authored/design-ux__action-bar-placement.js +0 -89
  233. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.d.ts +0 -2
  234. package/dist/features/tester/seed-data/authored/design-ux__back-to-top-button.js +0 -95
  235. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.d.ts +0 -2
  236. package/dist/features/tester/seed-data/authored/design-ux__carousel-arrow-bounds.js +0 -191
  237. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.d.ts +0 -2
  238. package/dist/features/tester/seed-data/authored/design-ux__dashboard-layout.js +0 -158
  239. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.d.ts +0 -2
  240. package/dist/features/tester/seed-data/authored/design-ux__feature-badge-picker.js +0 -82
  241. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.d.ts +0 -2
  242. package/dist/features/tester/seed-data/authored/design-ux__footer-theme.js +0 -106
  243. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.d.ts +0 -2
  244. package/dist/features/tester/seed-data/authored/design-ux__form-validation-errors.js +0 -88
  245. package/dist/features/tester/seed-data/authored/design-ux__general-design.d.ts +0 -2
  246. package/dist/features/tester/seed-data/authored/design-ux__general-design.js +0 -204
  247. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.d.ts +0 -2
  248. package/dist/features/tester/seed-data/authored/design-ux__hand-mode-layout.js +0 -301
  249. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +0 -2
  250. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +0 -90
  251. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.d.ts +0 -2
  252. package/dist/features/tester/seed-data/authored/design-ux__header-controls-and-messages.js +0 -85
  253. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.d.ts +0 -2
  254. package/dist/features/tester/seed-data/authored/design-ux__homepage-carousels.js +0 -407
  255. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.d.ts +0 -2
  256. package/dist/features/tester/seed-data/authored/design-ux__nav-reachability.js +0 -88
  257. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.d.ts +0 -2
  258. package/dist/features/tester/seed-data/authored/design-ux__rich-text-readability.js +0 -84
  259. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.d.ts +0 -2
  260. package/dist/features/tester/seed-data/authored/design-ux__status-badge-legibility.js +0 -214
  261. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.d.ts +0 -2
  262. package/dist/features/tester/seed-data/authored/design-ux__sticky-cta-bar.js +0 -275
  263. package/dist/features/tester/seed-data/authored/index.d.ts +0 -2
  264. package/dist/features/tester/seed-data/authored/index.js +0 -301
  265. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.d.ts +0 -2
  266. package/dist/features/tester/seed-data/authored/page-wiring__data-loss.js +0 -125
  267. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.d.ts +0 -2
  268. package/dist/features/tester/seed-data/authored/page-wiring__detail-pages.js +0 -85
  269. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.d.ts +0 -2
  270. package/dist/features/tester/seed-data/authored/page-wiring__drawer-pages.js +0 -92
  271. package/dist/features/tester/seed-data/authored/page-wiring__reachability.d.ts +0 -2
  272. package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -115
  273. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.d.ts +0 -2
  274. package/dist/features/tester/seed-data/authored/public-pages__auth-error-pages.js +0 -137
  275. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.d.ts +0 -2
  276. package/dist/features/tester/seed-data/authored/public-pages__core-listing-pages.js +0 -263
  277. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.d.ts +0 -2
  278. package/dist/features/tester/seed-data/authored/public-pages__help-how-it-works.js +0 -229
  279. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.d.ts +0 -2
  280. package/dist/features/tester/seed-data/authored/public-pages__help-scams-guides-subpages.js +0 -325
  281. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.d.ts +0 -2
  282. package/dist/features/tester/seed-data/authored/public-pages__legal-policy-pages.js +0 -126
  283. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.d.ts +0 -2
  284. package/dist/features/tester/seed-data/authored/public-pages__newly-wired-browse-indexes.js +0 -141
  285. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.d.ts +0 -2
  286. package/dist/features/tester/seed-data/authored/public-pages__store-tabs.js +0 -115
  287. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.d.ts +0 -2
  288. package/dist/features/tester/seed-data/authored/public-pages__stores-sellers-directories.js +0 -253
  289. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.d.ts +0 -2
  290. package/dist/features/tester/seed-data/authored/search-and-nav__employee-permissions.js +0 -93
  291. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +0 -3
  292. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +0 -185
  293. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.d.ts +0 -2
  294. package/dist/features/tester/seed-data/authored/search-and-nav__settings-deep-links.js +0 -82
  295. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.d.ts +0 -2
  296. package/dist/features/tester/seed-data/authored/search-and-nav__sidebar-search.js +0 -60
  297. package/dist/features/tester/seed-data/authored/selling__become-seller.d.ts +0 -2
  298. package/dist/features/tester/seed-data/authored/selling__become-seller.js +0 -117
  299. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.d.ts +0 -2
  300. package/dist/features/tester/seed-data/authored/selling__digital-content-delivery.js +0 -148
  301. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.d.ts +0 -2
  302. package/dist/features/tester/seed-data/authored/selling__final-sale-authoring.js +0 -108
  303. package/dist/features/tester/seed-data/authored/selling__listing-a-product.d.ts +0 -2
  304. package/dist/features/tester/seed-data/authored/selling__listing-a-product.js +0 -274
  305. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.d.ts +0 -2
  306. package/dist/features/tester/seed-data/authored/selling__listing-edit-roundtrip.js +0 -145
  307. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.d.ts +0 -2
  308. package/dist/features/tester/seed-data/authored/selling__listing-lifecycle.js +0 -336
  309. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.d.ts +0 -2
  310. package/dist/features/tester/seed-data/authored/selling__listing-type-fields-roundtrip.js +0 -136
  311. package/dist/features/tester/seed-data/authored/selling__media-limits.d.ts +0 -2
  312. package/dist/features/tester/seed-data/authored/selling__media-limits.js +0 -135
  313. package/dist/features/tester/seed-data/authored/selling__product-upload-details.d.ts +0 -2
  314. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +0 -155
  315. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.d.ts +0 -2
  316. package/dist/features/tester/seed-data/authored/selling__quick-add-minimum-details.js +0 -138
  317. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.d.ts +0 -2
  318. package/dist/features/tester/seed-data/authored/selling__sectionised-forms.js +0 -191
  319. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.d.ts +0 -2
  320. package/dist/features/tester/seed-data/authored/selling__seller-analytics-payouts.js +0 -138
  321. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.d.ts +0 -2
  322. package/dist/features/tester/seed-data/authored/selling__seller-bids-bundles-filters.js +0 -106
  323. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.d.ts +0 -2
  324. package/dist/features/tester/seed-data/authored/selling__seller-catalog-org.js +0 -192
  325. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.d.ts +0 -2
  326. package/dist/features/tester/seed-data/authored/selling__seller-custom-brands.js +0 -109
  327. package/dist/features/tester/seed-data/authored/selling__seller-guide.d.ts +0 -2
  328. package/dist/features/tester/seed-data/authored/selling__seller-guide.js +0 -34
  329. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.d.ts +0 -2
  330. package/dist/features/tester/seed-data/authored/selling__seller-listing-types.js +0 -348
  331. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.d.ts +0 -2
  332. package/dist/features/tester/seed-data/authored/selling__seller-marketing-extras.js +0 -87
  333. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.d.ts +0 -2
  334. package/dist/features/tester/seed-data/authored/selling__seller-ops-comms.js +0 -90
  335. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.d.ts +0 -2
  336. package/dist/features/tester/seed-data/authored/selling__seller-orders-at-scale.js +0 -85
  337. package/dist/features/tester/seed-data/authored/selling__seller-orders.d.ts +0 -2
  338. package/dist/features/tester/seed-data/authored/selling__seller-orders.js +0 -213
  339. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.d.ts +0 -2
  340. package/dist/features/tester/seed-data/authored/selling__seller-shipping-payouts-setup.js +0 -192
  341. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +0 -2
  342. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +0 -77
  343. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.d.ts +0 -2
  344. package/dist/features/tester/seed-data/authored/selling__store-dashboard-navigation.js +0 -165
  345. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.d.ts +0 -2
  346. package/dist/features/tester/seed-data/authored/selling__store-uncovered-pages.js +0 -116
  347. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.d.ts +0 -2
  348. package/dist/features/tester/seed-data/authored/seo__canonical-and-host.js +0 -127
  349. package/dist/features/tester/seed-data/authored/seo__og-images.d.ts +0 -2
  350. package/dist/features/tester/seed-data/authored/seo__og-images.js +0 -107
  351. package/dist/features/tester/seed-data/authored/seo__page-metadata.d.ts +0 -2
  352. package/dist/features/tester/seed-data/authored/seo__page-metadata.js +0 -120
  353. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.d.ts +0 -2
  354. package/dist/features/tester/seed-data/authored/seo__sitemap-and-robots.js +0 -105
  355. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +0 -2
  356. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +0 -58
  357. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +0 -2
  358. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +0 -284
  359. package/dist/features/tester/seed-data/index.d.ts +0 -2
  360. package/dist/features/tester/seed-data/index.js +0 -2
  361. package/dist/features/tester/seed-data/tester-checklist-seed-data.d.ts +0 -2
  362. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +0 -7601
  363. package/dist/features/tester/seed-data/tester-responses-seed-data.d.ts +0 -2
  364. package/dist/features/tester/seed-data/tester-responses-seed-data.js +0 -95
  365. package/dist/features/tester/seed-data/tester-window.d.ts +0 -25
  366. package/dist/features/tester/seed-data/tester-window.js +0 -66
  367. package/dist/seed/_helpers/brand-rows.d.ts +0 -35
  368. package/dist/seed/_helpers/brand-rows.js +0 -600
  369. package/dist/seed/_helpers/category-content-generated.d.ts +0 -24
  370. package/dist/seed/_helpers/category-content-generated.js +0 -1853
  371. package/dist/seed/_helpers/category-content.d.ts +0 -68
  372. package/dist/seed/_helpers/category-content.js +0 -731
  373. package/dist/seed/_helpers/category-forest.d.ts +0 -4
  374. package/dist/seed/_helpers/category-forest.js +0 -824
  375. package/dist/seed/_helpers/category-images-generated.d.ts +0 -57
  376. package/dist/seed/_helpers/category-images-generated.js +0 -618
  377. package/dist/seed/_helpers/category-models/chunk0.d.ts +0 -2
  378. package/dist/seed/_helpers/category-models/chunk0.js +0 -2648
  379. package/dist/seed/_helpers/category-models/chunk1.d.ts +0 -2
  380. package/dist/seed/_helpers/category-models/chunk1.js +0 -2318
  381. package/dist/seed/_helpers/category-models/chunk2.d.ts +0 -2
  382. package/dist/seed/_helpers/category-models/chunk2.js +0 -2560
  383. package/dist/seed/_helpers/category-models/chunk3.d.ts +0 -2
  384. package/dist/seed/_helpers/category-models/chunk3.js +0 -2196
  385. package/dist/seed/_helpers/category-models/chunk4.d.ts +0 -2
  386. package/dist/seed/_helpers/category-models/chunk4.js +0 -1732
  387. package/dist/seed/_helpers/category-models.d.ts +0 -12
  388. package/dist/seed/_helpers/category-models.js +0 -45
  389. package/dist/seed/_helpers/category-names.d.ts +0 -54
  390. package/dist/seed/_helpers/category-names.js +0 -118
  391. package/dist/seed/_helpers/category-parts-glossary-map.d.ts +0 -1
  392. package/dist/seed/_helpers/category-parts-glossary-map.js +0 -2499
  393. package/dist/seed/_helpers/category-parts.d.ts +0 -9
  394. package/dist/seed/_helpers/category-parts.js +0 -15022
  395. package/dist/seed/_helpers/category-tree.d.ts +0 -27
  396. package/dist/seed/_helpers/category-tree.js +0 -119
  397. package/dist/seed/_helpers/character-features.d.ts +0 -10
  398. package/dist/seed/_helpers/character-features.js +0 -120
  399. package/dist/seed/_helpers/final-sale-fixtures.d.ts +0 -35
  400. package/dist/seed/_helpers/final-sale-fixtures.js +0 -61
  401. package/dist/seed/_helpers/franchise-rows.d.ts +0 -43
  402. package/dist/seed/_helpers/franchise-rows.js +0 -189
  403. package/dist/seed/_helpers/media.d.ts +0 -67
  404. package/dist/seed/_helpers/media.js +0 -172
  405. package/dist/seed/_helpers/part-colours-generated.d.ts +0 -18
  406. package/dist/seed/_helpers/part-colours-generated.js +0 -273
  407. package/dist/seed/_helpers/product-search-txt.d.ts +0 -18
  408. package/dist/seed/_helpers/product-search-txt.js +0 -23
  409. package/dist/seed/_helpers/search-txt-wrappers.d.ts +0 -26
  410. package/dist/seed/_helpers/search-txt-wrappers.js +0 -58
  411. package/dist/seed/addresses-seed-data.d.ts +0 -2
  412. package/dist/seed/addresses-seed-data.js +0 -78
  413. package/dist/seed/authenticity-knowledge-seed-data.d.ts +0 -78
  414. package/dist/seed/authenticity-knowledge-seed-data.js +0 -10729
  415. package/dist/seed/bids-seed-data.d.ts +0 -2
  416. package/dist/seed/bids-seed-data.js +0 -206
  417. package/dist/seed/blog-posts-seed-data.d.ts +0 -6
  418. package/dist/seed/blog-posts-seed-data.js +0 -442
  419. package/dist/seed/carousel-slides-seed-data.d.ts +0 -2
  420. package/dist/seed/carousel-slides-seed-data.js +0 -411
  421. package/dist/seed/carousels-seed-data.d.ts +0 -2
  422. package/dist/seed/carousels-seed-data.js +0 -36
  423. package/dist/seed/cart-seed-data.d.ts +0 -2
  424. package/dist/seed/cart-seed-data.js +0 -241
  425. package/dist/seed/catalogue-seed-data.d.ts +0 -2
  426. package/dist/seed/catalogue-seed-data.js +0 -112
  427. package/dist/seed/categories-seed-data.d.ts +0 -3
  428. package/dist/seed/categories-seed-data.js +0 -816
  429. package/dist/seed/claimed-coupons-seed-data.d.ts +0 -2
  430. package/dist/seed/claimed-coupons-seed-data.js +0 -85
  431. package/dist/seed/coupon-usage-seed-data.d.ts +0 -9
  432. package/dist/seed/coupon-usage-seed-data.js +0 -55
  433. package/dist/seed/coupons-seed-data.d.ts +0 -2
  434. package/dist/seed/coupons-seed-data.js +0 -226
  435. package/dist/seed/defaults/categories.d.ts +0 -2
  436. package/dist/seed/defaults/categories.js +0 -12
  437. package/dist/seed/defaults/faqs.d.ts +0 -2
  438. package/dist/seed/defaults/faqs.js +0 -40
  439. package/dist/seed/events-seed-data.d.ts +0 -7
  440. package/dist/seed/events-seed-data.js +0 -482
  441. package/dist/seed/factories/address.factory.d.ts +0 -21
  442. package/dist/seed/factories/address.factory.js +0 -44
  443. package/dist/seed/factories/bid.factory.d.ts +0 -15
  444. package/dist/seed/factories/bid.factory.js +0 -33
  445. package/dist/seed/factories/blog-post.factory.d.ts +0 -15
  446. package/dist/seed/factories/blog-post.factory.js +0 -22
  447. package/dist/seed/factories/carousel.factory.d.ts +0 -11
  448. package/dist/seed/factories/carousel.factory.js +0 -17
  449. package/dist/seed/factories/cart.factory.d.ts +0 -25
  450. package/dist/seed/factories/cart.factory.js +0 -35
  451. package/dist/seed/factories/category.factory.d.ts +0 -11
  452. package/dist/seed/factories/category.factory.js +0 -16
  453. package/dist/seed/factories/coupon.factory.d.ts +0 -21
  454. package/dist/seed/factories/coupon.factory.js +0 -43
  455. package/dist/seed/factories/faq.factory.d.ts +0 -10
  456. package/dist/seed/factories/faq.factory.js +0 -15
  457. package/dist/seed/factories/notification.factory.d.ts +0 -18
  458. package/dist/seed/factories/notification.factory.js +0 -39
  459. package/dist/seed/factories/order.factory.d.ts +0 -20
  460. package/dist/seed/factories/order.factory.js +0 -20
  461. package/dist/seed/factories/payout.factory.d.ts +0 -21
  462. package/dist/seed/factories/payout.factory.js +0 -38
  463. package/dist/seed/factories/product.factory.d.ts +0 -27
  464. package/dist/seed/factories/product.factory.js +0 -80
  465. package/dist/seed/factories/review.factory.d.ts +0 -14
  466. package/dist/seed/factories/review.factory.js +0 -52
  467. package/dist/seed/factories/session.factory.d.ts +0 -15
  468. package/dist/seed/factories/session.factory.js +0 -31
  469. package/dist/seed/factories/store.factory.d.ts +0 -23
  470. package/dist/seed/factories/store.factory.js +0 -47
  471. package/dist/seed/factories/user.factory.d.ts +0 -19
  472. package/dist/seed/factories/user.factory.js +0 -56
  473. package/dist/seed/faq-seed-data.d.ts +0 -18
  474. package/dist/seed/faq-seed-data.js +0 -1956
  475. package/dist/seed/firestore-indexes.d.ts +0 -12
  476. package/dist/seed/firestore-indexes.js +0 -31
  477. package/dist/seed/grouped-listings-seed-data.d.ts +0 -2
  478. package/dist/seed/grouped-listings-seed-data.js +0 -283
  479. package/dist/seed/history-seed-data.d.ts +0 -12
  480. package/dist/seed/history-seed-data.js +0 -70
  481. package/dist/seed/homepage-sections-seed-data.d.ts +0 -2
  482. package/dist/seed/homepage-sections-seed-data.js +0 -1018
  483. package/dist/seed/index.d.ts +0 -98
  484. package/dist/seed/index.js +0 -112
  485. package/dist/seed/lottery-entries-seed-data.d.ts +0 -2
  486. package/dist/seed/lottery-entries-seed-data.js +0 -108
  487. package/dist/seed/manifest.d.ts +0 -16
  488. package/dist/seed/manifest.js +0 -235
  489. package/dist/seed/media-assets-seed-data.d.ts +0 -22
  490. package/dist/seed/media-assets-seed-data.js +0 -5593
  491. package/dist/seed/model-composition-seed-data.d.ts +0 -15
  492. package/dist/seed/model-composition-seed-data.js +0 -9032
  493. package/dist/seed/notifications-seed-data.d.ts +0 -2
  494. package/dist/seed/notifications-seed-data.js +0 -606
  495. package/dist/seed/offers-seed-data.d.ts +0 -2
  496. package/dist/seed/offers-seed-data.js +0 -398
  497. package/dist/seed/orders-seed-data.d.ts +0 -2
  498. package/dist/seed/orders-seed-data.js +0 -845
  499. package/dist/seed/part-glossary/chunk0.d.ts +0 -9
  500. package/dist/seed/part-glossary/chunk0.js +0 -35448
  501. package/dist/seed/part-glossary/chunk1.d.ts +0 -9
  502. package/dist/seed/part-glossary/chunk1.js +0 -40494
  503. package/dist/seed/part-glossary/chunk2.d.ts +0 -9
  504. package/dist/seed/part-glossary/chunk2.js +0 -51242
  505. package/dist/seed/part-glossary/chunk3.d.ts +0 -9
  506. package/dist/seed/part-glossary/chunk3.js +0 -53337
  507. package/dist/seed/part-glossary/chunk4.d.ts +0 -9
  508. package/dist/seed/part-glossary/chunk4.js +0 -51454
  509. package/dist/seed/part-glossary-seed-data.d.ts +0 -15
  510. package/dist/seed/part-glossary-seed-data.js +0 -25
  511. package/dist/seed/payouts-seed-data.d.ts +0 -2
  512. package/dist/seed/payouts-seed-data.js +0 -302
  513. package/dist/seed/product-features-seed-data.d.ts +0 -3
  514. package/dist/seed/product-features-seed-data.js +0 -366
  515. package/dist/seed/products-art-seed-data.d.ts +0 -2
  516. package/dist/seed/products-art-seed-data.js +0 -289
  517. package/dist/seed/products-auctions-seed-data.d.ts +0 -2
  518. package/dist/seed/products-auctions-seed-data.js +0 -475
  519. package/dist/seed/products-beyblade-x-seed-data.d.ts +0 -2
  520. package/dist/seed/products-beyblade-x-seed-data.js +0 -476
  521. package/dist/seed/products-catalogue-seed-data.d.ts +0 -22
  522. package/dist/seed/products-catalogue-seed-data.js +0 -86384
  523. package/dist/seed/products-classifieds-seed-data.d.ts +0 -7
  524. package/dist/seed/products-classifieds-seed-data.js +0 -435
  525. package/dist/seed/products-digital-codes-seed-data.d.ts +0 -7
  526. package/dist/seed/products-digital-codes-seed-data.js +0 -395
  527. package/dist/seed/products-live-items-seed-data.d.ts +0 -7
  528. package/dist/seed/products-live-items-seed-data.js +0 -269
  529. package/dist/seed/products-preorders-seed-data.d.ts +0 -2
  530. package/dist/seed/products-preorders-seed-data.js +0 -360
  531. package/dist/seed/products-prize-draws-seed-data.d.ts +0 -7
  532. package/dist/seed/products-prize-draws-seed-data.js +0 -427
  533. package/dist/seed/products-spares-seed-data.d.ts +0 -2
  534. package/dist/seed/products-spares-seed-data.js +0 -368
  535. package/dist/seed/products-standard-seed-data.d.ts +0 -2
  536. package/dist/seed/products-standard-seed-data.js +0 -632
  537. package/dist/seed/products-stickers-seed-data.d.ts +0 -2
  538. package/dist/seed/products-stickers-seed-data.js +0 -319
  539. package/dist/seed/reviews-seed-data.d.ts +0 -1
  540. package/dist/seed/reviews-seed-data.js +0 -185
  541. package/dist/seed/runner.d.ts +0 -2
  542. package/dist/seed/runner.js +0 -125
  543. package/dist/seed/scammers-seed-data.d.ts +0 -2
  544. package/dist/seed/scammers-seed-data.js +0 -235
  545. package/dist/seed/seed-market-config.d.ts +0 -48
  546. package/dist/seed/seed-market-config.js +0 -199
  547. package/dist/seed/seed-purpose.d.ts +0 -299
  548. package/dist/seed/seed-purpose.js +0 -431
  549. package/dist/seed/sessions-seed-data.d.ts +0 -3
  550. package/dist/seed/sessions-seed-data.js +0 -116
  551. package/dist/seed/shipments-seed-data.d.ts +0 -5
  552. package/dist/seed/shipments-seed-data.js +0 -185
  553. package/dist/seed/site-settings-seed-data.d.ts +0 -2
  554. package/dist/seed/site-settings-seed-data.js +0 -1069
  555. package/dist/seed/store-addresses-seed-data.d.ts +0 -18
  556. package/dist/seed/store-addresses-seed-data.js +0 -71
  557. package/dist/seed/store-extensions-seed-data.d.ts +0 -11
  558. package/dist/seed/store-extensions-seed-data.js +0 -292
  559. package/dist/seed/stores-seed-data.d.ts +0 -6
  560. package/dist/seed/stores-seed-data.js +0 -242
  561. package/dist/seed/support-tickets-seed-data.d.ts +0 -16
  562. package/dist/seed/support-tickets-seed-data.js +0 -239
  563. package/dist/seed/tax-codes-seed-data.d.ts +0 -34
  564. package/dist/seed/tax-codes-seed-data.js +0 -100
  565. package/dist/seed/test-data-ttl.d.ts +0 -29
  566. package/dist/seed/test-data-ttl.js +0 -31
  567. package/dist/seed/test-utils.d.ts +0 -49
  568. package/dist/seed/test-utils.js +0 -110
  569. package/dist/seed/types.d.ts +0 -89
  570. package/dist/seed/types.js +0 -15
  571. package/dist/seed/users-seed-data.d.ts +0 -2
  572. package/dist/seed/users-seed-data.js +0 -597
  573. package/dist/seed/wishlists-seed-data.d.ts +0 -12
  574. 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
- }));