@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
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Seed/test PROVENANCE METADATA β€” the vocabulary, not the data.
3
+ *
4
+ * ── πŸ›‘ WHY THIS IS IN `constants/` AND NOT IN `seed/` ─────────────────────
5
+ *
6
+ * `appkit/src/seed/` is **61% of this package's source bytes and 60% of the
7
+ * published dist** β€” 540 files and 24.6 MB of pure fixture data that no
8
+ * runtime code reads. It is being extracted into its own package so a purge,
9
+ * a seed or a reseed stops requiring an appkit release, and so Turbopack stops
10
+ * tracing a graph through 24 MB of object literals.
11
+ *
12
+ * Two things stood in the way, and both were in `seed/` by accident of
13
+ * history rather than by nature:
14
+ *
15
+ * Β· `TEST_DATA_TTL_DAYS` / `testDataExpiresAt()` β€” a job handler re-exports
16
+ * them, so the SWEEP that reclaims expired fixtures depended on the
17
+ * fixture data shipping alongside it.
18
+ * Β· `SeedPurpose` β€” `BaseDocument` carries the field, so the base type of
19
+ * every document in the system pointed into the seed directory.
20
+ *
21
+ * Neither is data. A TTL and a three-value union are metadata ABOUT seeding
22
+ * that runtime code legitimately reads, so they live with the other shared
23
+ * constants and `seed/` keeps only rows.
24
+ *
25
+ * πŸ›‘ What deliberately did NOT move: `SEED_COLLECTION_PURPOSE`,
26
+ * `SEED_ROW_PURPOSE` and `SEED_PURPOSE_DERIVED_FROM`. Those name specific
27
+ * collections and specific seeded ids β€” they are registries over the data, so
28
+ * they belong with it, and only `appkit-seed` and `audit-seed-purpose` read
29
+ * them.
30
+ */
31
+ /**
32
+ * The TTL stamp every disposable test fixture must carry.
33
+ *
34
+ * πŸ›‘ `isTestData: true` WITHOUT `testDataExpiresAt` means PERMANENT β€” nothing
35
+ * ever reclaims it (see `jobs/handlers/_helpers.ts`, which documents the same
36
+ * rule from the sweep's side). That is not a theoretical hazard: until
37
+ * 2026-10-10 the only two `isTestData` rows in the whole seed,
38
+ * `product-tester-crossstore-a` / `-b`, were in exactly that state β€” live in
39
+ * the public catalogue of 72 products, never purged, and one of them was
40
+ * `store-letitrip-official`'s ONLY buyable standard product, so it was hidden
41
+ * from every real buyer by `hidePublicTestData` while being the only thing
42
+ * that store had to sell. Both are deleted.
43
+ *
44
+ * And the reason they were permanent is that **this module had zero callers**.
45
+ * The helper that enforces the rule existed, was documented as the rule that
46
+ * matters most, and no fixture used it. So: a fixture's three obligations are
47
+ * an id containing `-test-`, `isTestData: true`, and an expiry FROM HERE.
48
+ *
49
+ * Recomputed fresh on every seed run (seed files are re-imported per
50
+ * invocation), so re-seeding naturally refreshes the expiry rather than
51
+ * leaving a fixture that expired between runs.
52
+ *
53
+ * πŸ›‘ Do NOT re-declare the day count elsewhere. It used to be declared twice β€”
54
+ * in the seed directory and in `jobs/handlers/messages.ts` β€” with a comment as
55
+ * the only thing keeping them equal, which is the drift shape Root Cause #42
56
+ * describes. `messages.ts` re-exports this one.
57
+ */
58
+ export declare const TEST_DATA_TTL_DAYS = 7;
59
+ export declare function testDataExpiresAt(): Date;
60
+ /**
61
+ * Why a seeded row exists β€” i.e. what a purge is allowed to do with it.
62
+ *
63
+ * πŸ›‘ Not a severity scale. Two different answers to one question: never, and
64
+ * on request.
65
+ */
66
+ export type SeedPurpose =
67
+ /**
68
+ * Clearable test data. **The default**, and what almost everything is.
69
+ *
70
+ * Users, stores, listings, auctions, orders, bids, reviews, offers, carts,
71
+ * payouts β€” everything seeded to exercise a path rather than to be read as
72
+ * content. `appkit-seed purge` removes these and nothing else.
73
+ *
74
+ * πŸ›‘ `test` says nothing about PUBLIC VISIBILITY. A demo product is `test`
75
+ * and fully visible; that is what makes the demo a demo. Hiding a row from
76
+ * the public is `isTestData`, which is a separate decision.
77
+ */
78
+ "test"
79
+ /**
80
+ * Real content. **A purge must NEVER remove it**, because re-creating it is
81
+ * not a re-seed, it is authoring.
82
+ *
83
+ * The test to apply: *if clearing this means somebody has to WRITE it again
84
+ * rather than re-run a loader, it is permanent.*
85
+ *
86
+ * That is why the **tester checklist cases** are in here and not in some
87
+ * harness tier β€” they are the real catalogue of issues the testers test
88
+ * against and keep updating, which is authored content that happens to be
89
+ * about testing. Its 1,500-odd cases are no more disposable than the 85 FAQs.
90
+ */
91
+ | "permanent";
92
+ /**
93
+ * `Record<SeedPurpose, true>`, so a third value is a compile error in every map
94
+ * keyed on the union rather than a silent gap (Root Cause #61).
95
+ */
96
+ export declare const SEED_PURPOSE_VALUES: Record<SeedPurpose, true>;
97
+ export declare const ALL_SEED_PURPOSES: SeedPurpose[];
98
+ export declare function isSeedPurpose(value: unknown): value is SeedPurpose;
99
+ /**
100
+ * πŸ›‘ There is deliberately NO third `fixture` tier.
101
+ *
102
+ * An earlier draft had one, meaning "clearable but only by an explicit full
103
+ * purge", intended for the tester checklist. Once the cases were correctly
104
+ * classified as permanent content it had **nothing in it** β€” and a union member
105
+ * with no members is the dead-enum-value shape this codebase keeps paying for:
106
+ * a filter chip whose value no row carries returns zero rows forever and reads
107
+ * as a working control (Root Cause #33), and nine section types that exist in a
108
+ * dropdown and have never rendered.
109
+ *
110
+ * Two values answer the question that was actually asked. If a genuine third
111
+ * case appears, add it then β€” with a row that needs it.
112
+ */
113
+ export declare const PURGEABLE: Record<SeedPurpose, boolean>;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Seed/test PROVENANCE METADATA β€” the vocabulary, not the data.
3
+ *
4
+ * ── πŸ›‘ WHY THIS IS IN `constants/` AND NOT IN `seed/` ─────────────────────
5
+ *
6
+ * `appkit/src/seed/` is **61% of this package's source bytes and 60% of the
7
+ * published dist** β€” 540 files and 24.6 MB of pure fixture data that no
8
+ * runtime code reads. It is being extracted into its own package so a purge,
9
+ * a seed or a reseed stops requiring an appkit release, and so Turbopack stops
10
+ * tracing a graph through 24 MB of object literals.
11
+ *
12
+ * Two things stood in the way, and both were in `seed/` by accident of
13
+ * history rather than by nature:
14
+ *
15
+ * Β· `TEST_DATA_TTL_DAYS` / `testDataExpiresAt()` β€” a job handler re-exports
16
+ * them, so the SWEEP that reclaims expired fixtures depended on the
17
+ * fixture data shipping alongside it.
18
+ * Β· `SeedPurpose` β€” `BaseDocument` carries the field, so the base type of
19
+ * every document in the system pointed into the seed directory.
20
+ *
21
+ * Neither is data. A TTL and a three-value union are metadata ABOUT seeding
22
+ * that runtime code legitimately reads, so they live with the other shared
23
+ * constants and `seed/` keeps only rows.
24
+ *
25
+ * πŸ›‘ What deliberately did NOT move: `SEED_COLLECTION_PURPOSE`,
26
+ * `SEED_ROW_PURPOSE` and `SEED_PURPOSE_DERIVED_FROM`. Those name specific
27
+ * collections and specific seeded ids β€” they are registries over the data, so
28
+ * they belong with it, and only `appkit-seed` and `audit-seed-purpose` read
29
+ * them.
30
+ */
31
+ /**
32
+ * The TTL stamp every disposable test fixture must carry.
33
+ *
34
+ * πŸ›‘ `isTestData: true` WITHOUT `testDataExpiresAt` means PERMANENT β€” nothing
35
+ * ever reclaims it (see `jobs/handlers/_helpers.ts`, which documents the same
36
+ * rule from the sweep's side). That is not a theoretical hazard: until
37
+ * 2026-10-10 the only two `isTestData` rows in the whole seed,
38
+ * `product-tester-crossstore-a` / `-b`, were in exactly that state β€” live in
39
+ * the public catalogue of 72 products, never purged, and one of them was
40
+ * `store-letitrip-official`'s ONLY buyable standard product, so it was hidden
41
+ * from every real buyer by `hidePublicTestData` while being the only thing
42
+ * that store had to sell. Both are deleted.
43
+ *
44
+ * And the reason they were permanent is that **this module had zero callers**.
45
+ * The helper that enforces the rule existed, was documented as the rule that
46
+ * matters most, and no fixture used it. So: a fixture's three obligations are
47
+ * an id containing `-test-`, `isTestData: true`, and an expiry FROM HERE.
48
+ *
49
+ * Recomputed fresh on every seed run (seed files are re-imported per
50
+ * invocation), so re-seeding naturally refreshes the expiry rather than
51
+ * leaving a fixture that expired between runs.
52
+ *
53
+ * πŸ›‘ Do NOT re-declare the day count elsewhere. It used to be declared twice β€”
54
+ * in the seed directory and in `jobs/handlers/messages.ts` β€” with a comment as
55
+ * the only thing keeping them equal, which is the drift shape Root Cause #42
56
+ * describes. `messages.ts` re-exports this one.
57
+ */
58
+ export const TEST_DATA_TTL_DAYS = 7;
59
+ export function testDataExpiresAt() {
60
+ return new Date(Date.now() + TEST_DATA_TTL_DAYS * 24 * 60 * 60 * 1000);
61
+ }
62
+ /**
63
+ * `Record<SeedPurpose, true>`, so a third value is a compile error in every map
64
+ * keyed on the union rather than a silent gap (Root Cause #61).
65
+ */
66
+ export const SEED_PURPOSE_VALUES = {
67
+ test: true,
68
+ permanent: true,
69
+ };
70
+ export const ALL_SEED_PURPOSES = Object.keys(SEED_PURPOSE_VALUES);
71
+ export function isSeedPurpose(value) {
72
+ return typeof value === "string" && value in SEED_PURPOSE_VALUES;
73
+ }
74
+ /**
75
+ * πŸ›‘ There is deliberately NO third `fixture` tier.
76
+ *
77
+ * An earlier draft had one, meaning "clearable but only by an explicit full
78
+ * purge", intended for the tester checklist. Once the cases were correctly
79
+ * classified as permanent content it had **nothing in it** β€” and a union member
80
+ * with no members is the dead-enum-value shape this codebase keeps paying for:
81
+ * a filter chip whose value no row carries returns zero rows forever and reads
82
+ * as a working control (Root Cause #33), and nine section types that exist in a
83
+ * dropdown and have never rendered.
84
+ *
85
+ * Two values answer the question that was actually asked. If a genuine third
86
+ * case appears, add it then β€” with a row that needs it.
87
+ */
88
+ export const PURGEABLE = {
89
+ test: true,
90
+ permanent: false,
91
+ };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * AdminBeysView β€” browse and correct the generated Beyblade database.
3
+ *
4
+ * ── πŸ›‘ WHY THIS IS A CORRECTION SURFACE, NOT A CRUD SCREEN ────────────────
5
+ *
6
+ * `beys` is 1,988 rows built by committed generators from a crawled corpus. So
7
+ * there is no "Add Beyblade" button: a row authored here would have no source,
8
+ * would vanish on the next regeneration, and would make the claim "this dataset
9
+ * rebuilds from `appkit/src/seed/` alone" false. Adding one is a change to the
10
+ * generator.
11
+ *
12
+ * What this surface IS for is the thing the corpus demonstrably needs β€” fixing
13
+ * a wrong extraction. On mode data alone the source was wrong five times in one
14
+ * session: an inverted tip transition, a mechanism attributed to the wrong
15
+ * part, a part with no modes at all, and two misexpanded abbreviations. A
16
+ * correction made here survives the next reseed, field by field
17
+ * (`adminEditedFields`).
18
+ *
19
+ * @tag domain:beys
20
+ * @tag layer:feature
21
+ * @tag access:client
22
+ * @tag consumers:app/[locale]/admin/beys/page.tsx
23
+ */
24
+ import React from "react";
25
+ import type { ListingLayoutProps } from "../../../ui";
26
+ export type AdminBeysViewProps = ListingLayoutProps;
27
+ export declare function AdminBeysView({ children, ...props }: AdminBeysViewProps): React.JSX.Element;
@@ -0,0 +1,178 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * AdminBeysView β€” browse and correct the generated Beyblade database.
5
+ *
6
+ * ── πŸ›‘ WHY THIS IS A CORRECTION SURFACE, NOT A CRUD SCREEN ────────────────
7
+ *
8
+ * `beys` is 1,988 rows built by committed generators from a crawled corpus. So
9
+ * there is no "Add Beyblade" button: a row authored here would have no source,
10
+ * would vanish on the next regeneration, and would make the claim "this dataset
11
+ * rebuilds from `appkit/src/seed/` alone" false. Adding one is a change to the
12
+ * generator.
13
+ *
14
+ * What this surface IS for is the thing the corpus demonstrably needs β€” fixing
15
+ * a wrong extraction. On mode data alone the source was wrong five times in one
16
+ * session: an inverted tip transition, a mechanism attributed to the wrong
17
+ * part, a part with no modes at all, and two misexpanded abbreviations. A
18
+ * correction made here survives the next reseed, field by field
19
+ * (`adminEditedFields`).
20
+ *
21
+ * @tag domain:beys
22
+ * @tag layer:feature
23
+ * @tag access:client
24
+ * @tag consumers:app/[locale]/admin/beys/page.tsx
25
+ */
26
+ import React from "react";
27
+ import { Heading, ListingLayout, Stack, Text } from "../../../ui/index.js";
28
+ import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints.js";
29
+ import { BEY_FIELDS } from "../../../constants/field-names.js";
30
+ import { sortBy } from "../../../constants/sort.js";
31
+ import { ROUTES } from "../../../next/routing/route-map.js";
32
+ import { DataListingView } from "./DataListingView.js";
33
+ /**
34
+ * πŸ›‘ Rows are read from WHICHEVER envelope shape arrives.
35
+ *
36
+ * `apiClient.get()` unwraps `{success, data}` and returns `data` itself, so an
37
+ * endpoint that puts rows directly in `data` hands `mapRows` an ARRAY while one
38
+ * that nests them hands it an object. Reading `.data` off an array yields
39
+ * undefined β€” which is exactly how the categories listing rendered "No
40
+ * categories found" against a 200 carrying 58 rows. This route returns the
41
+ * object shape, and tolerating both is what keeps that from mattering.
42
+ */
43
+ function extractRows(response) {
44
+ if (Array.isArray(response))
45
+ return response;
46
+ if (!response || typeof response !== "object")
47
+ return [];
48
+ const obj = response;
49
+ if (Array.isArray(obj.data))
50
+ return obj.data;
51
+ return Array.isArray(obj.items) ? obj.items : [];
52
+ }
53
+ function extractTotal(response) {
54
+ if (Array.isArray(response) || !response || typeof response !== "object")
55
+ return undefined;
56
+ const total = response.total;
57
+ return typeof total === "number" ? total : undefined;
58
+ }
59
+ /*
60
+ * audit-create-affordance-ok: this listing is deliberately inbound-only.
61
+ * The 1,988 rows are produced by committed generators from a crawled
62
+ * corpus, so there is no POST endpoint and no create route key to point a
63
+ * button at β€” a Beyblade authored by hand would have no source, would vanish
64
+ * on the next regeneration, and would make "this dataset rebuilds from
65
+ * appkit/src/seed/ alone" false. Adding one is a change to the generator.
66
+ * The surface exists to CORRECT a wrong extraction and to REMOVE a row that
67
+ * should not exist, which are the two operations the data actually needs.
68
+ */
69
+ const COLUMNS = [
70
+ {
71
+ key: "primary",
72
+ header: "Beyblade",
73
+ sortable: true,
74
+ render: (row) => (_jsxs(Stack, { gap: "xs", children: [_jsx(Text, { weight: "semibold", color: "primary", children: row.primary }), _jsx(Text, { size: "xs", color: "muted", children: row.secondary })] })),
75
+ },
76
+ {
77
+ key: "weight",
78
+ header: "Mass",
79
+ className: "w-28",
80
+ render: (row) => (_jsx(Text, { size: "sm", color: "muted", children: row.weight })),
81
+ },
82
+ {
83
+ key: "edited",
84
+ header: "Corrected",
85
+ className: "w-28",
86
+ /*
87
+ * πŸ›‘ Shown as a COLUMN, because a hand-corrected row behaves differently
88
+ * from its neighbours β€” the generator no longer owns the fields somebody
89
+ * fixed. Leaving that invisible is how a later maintainer concludes the
90
+ * generator is producing a value it is actually being prevented from
91
+ * writing. Text, not a colour-only dot (colour is never the only signal).
92
+ */
93
+ render: (row) => row.edited ? (_jsx(Text, { size: "xs", weight: "medium", children: "By hand" })) : (_jsx(Text, { size: "xs", color: "faint", children: "Generated" })),
94
+ },
95
+ ];
96
+ const ADMIN_BEYS_CONFIG = {
97
+ portal: "admin",
98
+ title: "Beyblades",
99
+ subtitle: "The generated Beyblade database. Corrections made here are kept when the database is regenerated.",
100
+ searchPlaceholder: "Search Beyblades by name β€” Dranzer F, Variares…",
101
+ /*
102
+ * πŸ›‘ `searchCommit: "enter"`, not debounce. The route's search is an indexed
103
+ * PREFIX range, so a partial word is a different query rather than a
104
+ * narrowing one β€” debouncing would fire a range query per pause and show
105
+ * confusing intermediate results. Enter also makes the prefix-only behaviour
106
+ * legible: you typed a prefix and asked for it.
107
+ */
108
+ searchCommit: "enter",
109
+ /*
110
+ * πŸ›‘ DECLARED, so the placeholder can be CHECKED rather than trusted.
111
+ * The route matches exactly one field β€” an indexed prefix range on
112
+ * `name` β€” and the placeholder must not imply more. It is a prefix and
113
+ * it is case-sensitive; `mode` says so where a reader will see it.
114
+ */
115
+ search: {
116
+ placeholder: "Search Beyblades by name β€” a prefix, case-sensitive",
117
+ fields: ["name"],
118
+ },
119
+ emptyLabel: "No Beyblade matches that name",
120
+ filterKeys: [],
121
+ /*
122
+ * πŸ›‘ Through `sortBy`, not a bare "name". The route currently ALWAYS
123
+ * orders by name and ignores the `sorts` param, so this is the only
124
+ * option β€” but writing it as a literal is what lets a field rename
125
+ * leave a sort string that silently sorts nothing.
126
+ */
127
+ defaultSort: sortBy(BEY_FIELDS.NAME, "ASC"),
128
+ pageSize: 25,
129
+ queryKey: ["admin", "beys"],
130
+ endpoint: ADMIN_ENDPOINTS.BEYS,
131
+ sortOptions: [{ value: sortBy(BEY_FIELDS.NAME, "ASC"), label: "Name A-Z" }],
132
+ columns: COLUMNS,
133
+ buildFilters: () => undefined,
134
+ getTotal: (response, rows) => extractTotal(response) ?? rows.length,
135
+ mapRows: (response) => extractRows(response).map((raw) => {
136
+ const r = raw;
137
+ /*
138
+ * πŸ›‘ `β‰ˆ` when the mass was SUMMED from the parts rather than stated by
139
+ * the source. 93% of beys have a mass but only 248 state it, and a
140
+ * derived figure shown as an exact one is the easiest way for this
141
+ * dataset to start lying β€” the same marking the detail page and the OG
142
+ * card use.
143
+ */
144
+ const summed = typeof r.weightGFromParts === "number" ? r.weightGFromParts : null;
145
+ const weight = typeof r.weightG === "number"
146
+ ? `${r.weightG} g`
147
+ : summed !== null
148
+ ? `β‰ˆ ${Math.round(summed * 10) / 10} g`
149
+ : "β€”";
150
+ return {
151
+ id: String(r.id ?? ""),
152
+ primary: String(r.name ?? r.id ?? "Unnamed Beyblade"),
153
+ /*
154
+ * System first: it is the one line a collector uses to place a bey in
155
+ * time, and it is present on 94% of them. The product code follows
156
+ * because two vendor releases of one model differ by little else.
157
+ */
158
+ secondary: [r.system, Array.isArray(r.productCodes) ? r.productCodes[0] : null]
159
+ .filter(Boolean)
160
+ .join(" Β· ") || "β€”",
161
+ weight,
162
+ edited: r.adminEdited === true,
163
+ };
164
+ }),
165
+ /*
166
+ * πŸ›‘ `rowHrefTemplate`, not `rowHref`. Verified against the interface
167
+ * rather than guessed β€” there is no `rowHref` field, and an unknown key on
168
+ * an object literal typed by an interface is a compile error I could not
169
+ * have seen under this session's no-build cap.
170
+ */
171
+ rowHrefTemplate: (row) => String(ROUTES.ADMIN.BEYS_EDIT(row.id)),
172
+ };
173
+ export function AdminBeysView({ children, ...props }) {
174
+ if (React.Children.count(children) > 0) {
175
+ return (_jsxs(ListingLayout, { portal: "admin", ...props, children: [_jsx(Heading, { level: 1, className: "sr-only", children: "Beyblades" }), children] }));
176
+ }
177
+ return (_jsxs(_Fragment, { children: [_jsx(Heading, { level: 1, className: "sr-only", children: "Beyblades" }), _jsx(DataListingView, { config: ADMIN_BEYS_CONFIG })] }));
178
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * AdminPartsView β€” browse and correct the generated part glossary.
3
+ *
4
+ * ── πŸ›‘ WHY THIS IS A CORRECTION SURFACE, NOT A CRUD SCREEN ────────────────
5
+ *
6
+ * `partGlossary` is 2,488 rows built by committed generators from a crawled
7
+ * corpus. So there is no "Add part" button: a row authored here would have no
8
+ * source, would vanish on the next regeneration, and would make the claim
9
+ * "this dataset rebuilds from `appkit/src/seed/` alone" false. Adding a part is
10
+ * a change to the generator.
11
+ *
12
+ * What this surface IS for is the thing the corpus demonstrably needs β€” fixing
13
+ * a wrong extraction. On mode data alone the source was wrong five times in one
14
+ * session: an inverted tip transition, a mechanism attributed to the wrong
15
+ * part, a part with no modes at all, and two misexpanded abbreviations. A
16
+ * correction made here survives the next reseed, field by field
17
+ * (`adminEditedFields`).
18
+ *
19
+ * @tag domain:parts
20
+ * @tag layer:feature
21
+ * @tag access:client
22
+ * @tag consumers:app/[locale]/admin/parts/page.tsx
23
+ */
24
+ import React from "react";
25
+ import type { ListingLayoutProps } from "../../../ui";
26
+ export type AdminPartsViewProps = ListingLayoutProps;
27
+ export declare function AdminPartsView({ children, ...props }: AdminPartsViewProps): React.JSX.Element;
@@ -0,0 +1,160 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * AdminPartsView β€” browse and correct the generated part glossary.
5
+ *
6
+ * ── πŸ›‘ WHY THIS IS A CORRECTION SURFACE, NOT A CRUD SCREEN ────────────────
7
+ *
8
+ * `partGlossary` is 2,488 rows built by committed generators from a crawled
9
+ * corpus. So there is no "Add part" button: a row authored here would have no
10
+ * source, would vanish on the next regeneration, and would make the claim
11
+ * "this dataset rebuilds from `appkit/src/seed/` alone" false. Adding a part is
12
+ * a change to the generator.
13
+ *
14
+ * What this surface IS for is the thing the corpus demonstrably needs β€” fixing
15
+ * a wrong extraction. On mode data alone the source was wrong five times in one
16
+ * session: an inverted tip transition, a mechanism attributed to the wrong
17
+ * part, a part with no modes at all, and two misexpanded abbreviations. A
18
+ * correction made here survives the next reseed, field by field
19
+ * (`adminEditedFields`).
20
+ *
21
+ * @tag domain:parts
22
+ * @tag layer:feature
23
+ * @tag access:client
24
+ * @tag consumers:app/[locale]/admin/parts/page.tsx
25
+ */
26
+ import React from "react";
27
+ import { Heading, ListingLayout, Stack, Text } from "../../../ui/index.js";
28
+ import { ADMIN_ENDPOINTS } from "../../../constants/api-endpoints.js";
29
+ import { PART_GLOSSARY_FIELDS } from "../../../constants/field-names.js";
30
+ import { sortBy } from "../../../constants/sort.js";
31
+ import { ROUTES } from "../../../next/routing/route-map.js";
32
+ import { DataListingView } from "./DataListingView.js";
33
+ /**
34
+ * πŸ›‘ Rows are read from WHICHEVER envelope shape arrives.
35
+ *
36
+ * `apiClient.get()` unwraps `{success, data}` and returns `data` itself, so an
37
+ * endpoint that puts rows directly in `data` hands `mapRows` an ARRAY while one
38
+ * that nests them hands it an object. Reading `.data` off an array yields
39
+ * undefined β€” which is exactly how the categories listing rendered "No
40
+ * categories found" against a 200 carrying 58 rows. This route returns the
41
+ * object shape, and tolerating both is what keeps that from mattering.
42
+ */
43
+ function extractRows(response) {
44
+ if (Array.isArray(response))
45
+ return response;
46
+ if (!response || typeof response !== "object")
47
+ return [];
48
+ const obj = response;
49
+ if (Array.isArray(obj.data))
50
+ return obj.data;
51
+ return Array.isArray(obj.items) ? obj.items : [];
52
+ }
53
+ function extractTotal(response) {
54
+ if (Array.isArray(response) || !response || typeof response !== "object")
55
+ return undefined;
56
+ const total = response.total;
57
+ return typeof total === "number" ? total : undefined;
58
+ }
59
+ /*
60
+ * audit-create-affordance-ok: this listing is deliberately inbound-only.
61
+ * The 2,488 rows are produced by committed generators from a crawled
62
+ * corpus, so there is no POST endpoint and no create route key to point a
63
+ * button at β€” a part authored by hand would have no source, would vanish
64
+ * on the next regeneration, and would make "this dataset rebuilds from
65
+ * appkit/src/seed/ alone" false. Adding one is a change to the generator.
66
+ * The surface exists to CORRECT a wrong extraction and to REMOVE a row that
67
+ * should not exist, which are the two operations the data actually needs.
68
+ */
69
+ const COLUMNS = [
70
+ {
71
+ key: "primary",
72
+ header: "Part",
73
+ sortable: true,
74
+ render: (row) => (_jsxs(Stack, { gap: "xs", children: [_jsx(Text, { weight: "semibold", color: "primary", children: row.primary }), _jsx(Text, { size: "xs", color: "muted", children: row.secondary })] })),
75
+ },
76
+ {
77
+ key: "weight",
78
+ header: "Weight",
79
+ className: "w-24",
80
+ render: (row) => (_jsx(Text, { size: "sm", color: "muted", children: row.weight })),
81
+ },
82
+ {
83
+ key: "edited",
84
+ header: "Corrected",
85
+ className: "w-28",
86
+ /*
87
+ * πŸ›‘ Shown as a COLUMN, because a hand-corrected row behaves differently
88
+ * from its neighbours β€” the generator no longer owns the fields somebody
89
+ * fixed. Leaving that invisible is how a later maintainer concludes the
90
+ * generator is producing a value it is actually being prevented from
91
+ * writing. Text, not a colour-only dot (colour is never the only signal).
92
+ */
93
+ render: (row) => row.edited ? (_jsx(Text, { size: "xs", weight: "medium", children: "By hand" })) : (_jsx(Text, { size: "xs", color: "faint", children: "Generated" })),
94
+ },
95
+ ];
96
+ const ADMIN_PARTS_CONFIG = {
97
+ portal: "admin",
98
+ title: "Parts",
99
+ subtitle: "The generated part glossary. Corrections made here are kept when the database is regenerated.",
100
+ searchPlaceholder: "Search parts by name β€” Rubber Flat, Dranzer…",
101
+ /*
102
+ * πŸ›‘ `searchCommit: "enter"`, not debounce. The route's search is an indexed
103
+ * PREFIX range, so a partial word is a different query rather than a
104
+ * narrowing one β€” debouncing would fire a range query per pause and show
105
+ * confusing intermediate results. Enter also makes the prefix-only behaviour
106
+ * legible: you typed a prefix and asked for it.
107
+ */
108
+ searchCommit: "enter",
109
+ /*
110
+ * πŸ›‘ DECLARED, so the placeholder can be CHECKED rather than trusted.
111
+ * The route matches exactly one field β€” an indexed prefix range on
112
+ * `name` β€” and the placeholder must not imply more. It is a prefix and
113
+ * it is case-sensitive; `mode` says so where a reader will see it.
114
+ */
115
+ search: {
116
+ placeholder: "Search parts by name β€” a prefix, case-sensitive",
117
+ fields: ["name"],
118
+ },
119
+ emptyLabel: "No part matches that name",
120
+ filterKeys: [],
121
+ /*
122
+ * πŸ›‘ Through `sortBy`, not a bare "name". The route currently ALWAYS
123
+ * orders by name and ignores the `sorts` param, so this is the only
124
+ * option β€” but writing it as a literal is what lets a field rename
125
+ * leave a sort string that silently sorts nothing.
126
+ */
127
+ defaultSort: sortBy(PART_GLOSSARY_FIELDS.NAME, "ASC"),
128
+ pageSize: 25,
129
+ queryKey: ["admin", "parts"],
130
+ endpoint: ADMIN_ENDPOINTS.PARTS,
131
+ sortOptions: [{ value: sortBy(PART_GLOSSARY_FIELDS.NAME, "ASC"), label: "Name A-Z" }],
132
+ columns: COLUMNS,
133
+ buildFilters: () => undefined,
134
+ getTotal: (response, rows) => extractTotal(response) ?? rows.length,
135
+ mapRows: (response) => extractRows(response).map((raw) => {
136
+ const r = raw;
137
+ const weight = typeof r.weightG === "number" ? `${r.weightG} g` : "β€”";
138
+ return {
139
+ id: String(r.id ?? ""),
140
+ primary: String(r.name ?? r.id ?? "Unnamed part"),
141
+ /* The classification is what disambiguates a bare code like "105". */
142
+ secondary: [r.classification, r.code].filter(Boolean).join(" Β· ") || "β€”",
143
+ weight,
144
+ edited: r.adminEdited === true,
145
+ };
146
+ }),
147
+ /*
148
+ * πŸ›‘ `rowHrefTemplate`, not `rowHref`. Verified against the interface
149
+ * rather than guessed β€” there is no `rowHref` field, and an unknown key on
150
+ * an object literal typed by an interface is a compile error I could not
151
+ * have seen under this session's no-build cap.
152
+ */
153
+ rowHrefTemplate: (row) => String(ROUTES.ADMIN.PARTS_EDIT(row.id)),
154
+ };
155
+ export function AdminPartsView({ children, ...props }) {
156
+ if (React.Children.count(children) > 0) {
157
+ return (_jsxs(ListingLayout, { portal: "admin", ...props, children: [_jsx(Heading, { level: 1, className: "sr-only", children: "Parts" }), children] }));
158
+ }
159
+ return (_jsxs(_Fragment, { children: [_jsx(Heading, { level: 1, className: "sr-only", children: "Parts" }), _jsx(DataListingView, { config: ADMIN_PARTS_CONFIG })] }));
160
+ }
@@ -1,5 +1,5 @@
1
1
  /** Which registry bucket supplies the labels and the confirm copy. */
2
- export type OwnerQuickActionsResource = "PRODUCT" | "CATEGORY" | "BRAND" | "FRANCHISE" | "BUNDLE" | "GROUP" | "SUBLISTING" | "EVENT" | "BLOG" | "REVIEW" | "STORE" | "USER" | "CAROUSEL" | "SECTION";
2
+ export type OwnerQuickActionsResource = "PRODUCT" | "CATEGORY" | "BRAND" | "FRANCHISE" | "PART" | "BEY" | "BUNDLE" | "GROUP" | "SUBLISTING" | "EVENT" | "BLOG" | "REVIEW" | "STORE" | "USER" | "CAROUSEL" | "SECTION";
3
3
  export interface OwnerQuickActionsProps {
4
4
  resource: OwnerQuickActionsResource;
5
5
  /** Where the pencil goes β€” that record's dashboard editor. */
@@ -24,6 +24,23 @@ export interface OwnerQuickActionsProps {
24
24
  * `detail` sits in a header row beside the title.
25
25
  */
26
26
  placement?: "card" | "detail";
27
+ /**
28
+ * πŸ›‘ Set this whenever `placement="detail"` sits on a DARK cover hero.
29
+ *
30
+ * `detail` otherwise renders the `ghost` variant, which is
31
+ * `color: var(--appkit-color-zinc-600)` β€” a dark grey that is correct on a
32
+ * page-surface header row and invisible on a cover photo. Every detail view
33
+ * that has a hero already computes a `hasCover` flag and flips each of its
34
+ * siblings to `color="inverse"`; this toolbar was the one element in that
35
+ * block that did not, so the pencil rendered near-black on near-black and
36
+ * read as "admins get no edit button" (Root Cause #67 β€” a theme-relative ink
37
+ * on a theme-invariant dark surface).
38
+ *
39
+ * Pass the SAME flag the rest of the hero branches on, not a literal `true`:
40
+ * a coverless hero falls back to the page surface, where the scrim's white
41
+ * ink would be invisible in the mirror-image way.
42
+ */
43
+ onMedia?: boolean;
27
44
  className?: string;
28
45
  }
29
- export declare function OwnerQuickActions({ resource, editHref, onDelete, onClone, ownerId, storeId, recordLabel, placement, className, }: OwnerQuickActionsProps): import("react").JSX.Element | null;
46
+ export declare function OwnerQuickActions({ resource, editHref, onDelete, onClone, ownerId, storeId, recordLabel, placement, onMedia, className, }: OwnerQuickActionsProps): import("react").JSX.Element | null;