@mohasinac/appkit 4.53.2 → 4.54.0-next.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 (179) hide show
  1. package/dist/.build-stamp.json +5 -5
  2. package/dist/_internal/server/features/auth/capabilities.js +7 -5
  3. package/dist/_internal/server/features/checkout/supplier-identity.js +28 -6
  4. package/dist/_internal/server/features/products/listing-tab-counts.js +81 -25
  5. package/dist/_internal/server/features/search/index-build/sources.js +43 -2
  6. package/dist/_internal/server/jobs/core/jobRunners.js +0 -10
  7. package/dist/_internal/server/jobs/core/onOrderCreate.js +10 -104
  8. package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
  9. package/dist/_internal/shared/actions/action-registry.js +128 -0
  10. package/dist/_internal/shared/features/categories/bundle-copy.d.ts +1 -1
  11. package/dist/_internal/shared/features/site-settings/supplier-of-record.d.ts +56 -0
  12. package/dist/_internal/shared/features/site-settings/supplier-of-record.js +57 -0
  13. package/dist/_internal/shared/listing-types/tiers.d.ts +94 -0
  14. package/dist/_internal/shared/listing-types/tiers.js +150 -0
  15. package/dist/cli/index.js +0 -2
  16. package/dist/client.d.ts +21 -2
  17. package/dist/client.js +23 -4
  18. package/dist/constants/api-endpoints.d.ts +21 -0
  19. package/dist/constants/api-endpoints.js +7 -0
  20. package/dist/features/account/components/UserOrdersView.js +26 -7
  21. package/dist/features/addresses/utils/postal-autofill.d.ts +39 -0
  22. package/dist/features/addresses/utils/postal-autofill.js +54 -0
  23. package/dist/features/admin/components/AdminStoreEditorView.js +73 -34
  24. package/dist/features/admin/components/OwnerQuickActions.d.ts +29 -0
  25. package/dist/features/admin/components/OwnerQuickActions.js +142 -0
  26. package/dist/features/admin/schemas/admin-editor-forms.d.ts +1 -1
  27. package/dist/features/admin/schemas/admin-editor-forms.js +4 -1
  28. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -1
  29. package/dist/features/auctions/components/MarketplaceAuctionCard.js +9 -2
  30. package/dist/features/auth/permissions/constants.d.ts +29 -2
  31. package/dist/features/auth/permissions/constants.js +68 -1
  32. package/dist/features/blog/components/BlogFeaturedCard.d.ts +11 -1
  33. package/dist/features/blog/components/BlogFeaturedCard.js +9 -2
  34. package/dist/features/cart/components/CartDrawer.js +3 -2
  35. package/dist/features/cart/components/CartGroupLineRow.js +2 -1
  36. package/dist/features/cart/hooks/useAddToCart.js +10 -5
  37. package/dist/features/cart/utils/pending-ops.d.ts +11 -1
  38. package/dist/features/cart/utils/pending-ops.js +14 -2
  39. package/dist/features/categories/components/BrandDetailPageView.js +2 -1
  40. package/dist/features/categories/components/CategoryDetailPageView.js +2 -1
  41. package/dist/features/categories/components/CategoryGrid.d.ts +11 -1
  42. package/dist/features/categories/components/CategoryGrid.js +9 -2
  43. package/dist/features/checkout/actions/checkout-value-otp-actions.d.ts +10 -5
  44. package/dist/features/checkout/actions/checkout-value-otp-actions.js +2 -88
  45. package/dist/features/events/components/EventCard.d.ts +11 -1
  46. package/dist/features/events/components/EventCard.js +9 -2
  47. package/dist/features/layout/AppLayoutShell.js +2 -1
  48. package/dist/features/layout/BottomActions.d.ts +1 -0
  49. package/dist/features/layout/BottomActions.js +330 -0
  50. package/dist/features/layout/BottomChrome.d.ts +45 -0
  51. package/dist/features/layout/BottomChrome.js +5 -17
  52. package/dist/features/layout/SideActionDock.js +36 -13
  53. package/dist/features/layout/index.d.ts +2 -7
  54. package/dist/features/layout/index.js +7 -7
  55. package/dist/features/layout/useIsDesktop.d.ts +36 -0
  56. package/dist/features/layout/useIsDesktop.js +48 -0
  57. package/dist/features/media/messages/en.json +67 -67
  58. package/dist/features/orders/components/YourPurchaseStrip.d.ts +24 -0
  59. package/dist/features/orders/components/YourPurchaseStrip.js +77 -0
  60. package/dist/features/orders/components/index.d.ts +2 -1
  61. package/dist/features/orders/components/index.js +1 -1
  62. package/dist/features/orders/utils/order-announcement-message.d.ts +18 -0
  63. package/dist/features/orders/utils/order-announcement-message.js +16 -0
  64. package/dist/features/orders/utils/payment-proof-message.d.ts +20 -0
  65. package/dist/features/orders/utils/payment-proof-message.js +17 -0
  66. package/dist/features/parts/schemas/firestore.d.ts +227 -0
  67. package/dist/features/parts/schemas/firestore.js +6 -6
  68. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +11 -1
  69. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +10 -3
  70. package/dist/features/products/api/[id]/route.js +8 -1
  71. package/dist/features/products/api/route.js +16 -4
  72. package/dist/features/products/components/AvailabilityScopeHint.js +1 -1
  73. package/dist/features/products/components/InteractiveProductCard.d.ts +7 -1
  74. package/dist/features/products/components/InteractiveProductCard.js +16 -4
  75. package/dist/features/products/components/MarketplaceBundleCard.d.ts +11 -1
  76. package/dist/features/products/components/MarketplaceBundleCard.js +9 -2
  77. package/dist/features/products/components/MarketplacePrizeDrawCard.d.ts +11 -1
  78. package/dist/features/products/components/MarketplacePrizeDrawCard.js +9 -2
  79. package/dist/features/products/components/ProductDetailPageView.js +27 -2
  80. package/dist/features/products/components/ProductGrid.d.ts +14 -1
  81. package/dist/features/products/components/ProductGrid.js +22 -5
  82. package/dist/features/products/components/ProductsIndexListing.js +2 -2
  83. package/dist/features/reviews/api/[id]/route.js +83 -23
  84. package/dist/features/reviews/components/PurchaseReviewAffordance.d.ts +6 -0
  85. package/dist/features/reviews/components/PurchaseReviewAffordance.js +42 -0
  86. package/dist/features/reviews/components/ReviewFormDrawer.d.ts +34 -0
  87. package/dist/features/reviews/components/ReviewFormDrawer.js +127 -0
  88. package/dist/features/reviews/components/index.d.ts +4 -0
  89. package/dist/features/reviews/components/index.js +2 -0
  90. package/dist/features/seller/actions/seller-actions.d.ts +1 -1
  91. package/dist/features/seller/actions/seller-actions.js +49 -3
  92. package/dist/features/seller/components/SellerPayoutSettingsView.js +30 -2
  93. package/dist/features/seller/components/SellerProductShell.d.ts +17 -1
  94. package/dist/features/seller/hooks/useStoreListingEntitlements.d.ts +8 -0
  95. package/dist/features/seller/hooks/useStoreListingEntitlements.js +70 -0
  96. package/dist/features/stores/components/InteractiveStoreCard.d.ts +11 -1
  97. package/dist/features/stores/components/InteractiveStoreCard.js +9 -2
  98. package/dist/features/stores/components/index.d.ts +0 -2
  99. package/dist/features/stores/components/index.js +0 -1
  100. package/dist/features/stores/schemas/index.d.ts +1 -1
  101. package/dist/features/stores/schemas/index.js +10 -1
  102. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +403 -0
  103. package/dist/index.d.ts +8 -27
  104. package/dist/index.js +14 -35
  105. package/dist/next/routing/route-map.d.ts +2 -0
  106. package/dist/next/routing/route-map.js +9 -0
  107. package/dist/providers/shipping-shiprocket/index.d.ts +98 -0
  108. package/dist/providers/shipping-shiprocket/index.js +353 -0
  109. package/dist/schemas/registry.d.ts +2 -2
  110. package/dist/security/csp.d.ts +16 -1
  111. package/dist/security/csp.js +5 -3
  112. package/dist/seed/_helpers/category-forest.js +27 -0
  113. package/dist/seed/_helpers/category-parts-glossary-map.js +1816 -86
  114. package/dist/seed/_helpers/category-parts.d.ts +1 -1
  115. package/dist/seed/_helpers/category-parts.js +13412 -3020
  116. package/dist/seed/categories-seed-data.js +48 -6
  117. package/dist/seed/homepage-sections-seed-data.js +41 -28
  118. package/dist/seed/model-composition-seed-data.js +6 -8
  119. package/dist/seed/part-glossary/chunk0.d.ts +9 -0
  120. package/dist/seed/part-glossary/chunk0.js +35044 -0
  121. package/dist/seed/part-glossary/chunk1.d.ts +9 -0
  122. package/dist/seed/part-glossary/chunk1.js +39955 -0
  123. package/dist/seed/part-glossary/chunk2.d.ts +9 -0
  124. package/dist/seed/part-glossary/chunk2.js +50335 -0
  125. package/dist/seed/part-glossary/chunk3.d.ts +9 -0
  126. package/dist/seed/part-glossary/chunk3.js +52386 -0
  127. package/dist/seed/part-glossary/chunk4.d.ts +9 -0
  128. package/dist/seed/part-glossary/chunk4.js +50549 -0
  129. package/dist/seed/part-glossary-seed-data.d.ts +1 -1
  130. package/dist/seed/part-glossary-seed-data.js +23 -47483
  131. package/dist/server.d.ts +4 -8
  132. package/dist/server.js +8 -20
  133. package/dist/styles.css +516 -358
  134. package/dist/tailwind-utilities.css +1 -1
  135. package/dist/tokens/themes/index.d.ts +3 -1
  136. package/dist/tokens/themes/index.js +11 -1
  137. package/dist/tokens/themes/technical-dark.d.ts +30 -0
  138. package/dist/tokens/themes/technical-dark.js +103 -0
  139. package/dist/tokens/themes/technical-light.d.ts +22 -0
  140. package/dist/tokens/themes/technical-light.js +89 -0
  141. package/dist/tokens/tokens.css +155 -0
  142. package/dist/ui/components/GatedPrice.js +30 -3
  143. package/dist/ui/components/GatedPrice.style.css +22 -19
  144. package/dist/ui/components/QuickCreateModal.style.css +78 -78
  145. package/dist/ui/forms/FormShell.style.css +260 -260
  146. package/package.json +1 -1
  147. package/dist/_internal/server/jobs/core/whatsappCatalogImport.d.ts +0 -27
  148. package/dist/_internal/server/jobs/core/whatsappCatalogImport.js +0 -172
  149. package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +0 -35
  150. package/dist/_internal/server/jobs/core/whatsappNotify.js +0 -140
  151. package/dist/features/admin/components/AdminWhatsAppGuideView.d.ts +0 -2
  152. package/dist/features/admin/components/AdminWhatsAppGuideView.js +0 -35
  153. package/dist/features/orders/components/MarketplaceOrderCard.d.ts +0 -36
  154. package/dist/features/orders/components/MarketplaceOrderCard.js +0 -57
  155. package/dist/features/stores/components/StoreWhatsAppGuideView.d.ts +0 -3
  156. package/dist/features/stores/components/StoreWhatsAppGuideView.js +0 -12
  157. package/dist/features/whatsapp-bot/api/send-status/route.d.ts +0 -12
  158. package/dist/features/whatsapp-bot/api/send-status/route.js +0 -38
  159. package/dist/features/whatsapp-bot/api/webhook/route.d.ts +0 -12
  160. package/dist/features/whatsapp-bot/api/webhook/route.js +0 -43
  161. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.d.ts +0 -6
  162. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +0 -270
  163. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.d.ts +0 -9
  164. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +0 -7
  165. package/dist/features/whatsapp-bot/components/index.d.ts +0 -3
  166. package/dist/features/whatsapp-bot/components/index.js +0 -2
  167. package/dist/features/whatsapp-bot/helpers/payment-proof-message.d.ts +0 -14
  168. package/dist/features/whatsapp-bot/helpers/payment-proof-message.js +0 -17
  169. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +0 -52
  170. package/dist/features/whatsapp-bot/helpers/whatsapp.js +0 -283
  171. package/dist/features/whatsapp-bot/index.d.ts +0 -3
  172. package/dist/features/whatsapp-bot/index.js +0 -3
  173. package/dist/features/whatsapp-bot/manifest.d.ts +0 -2
  174. package/dist/features/whatsapp-bot/manifest.js +0 -13
  175. package/dist/features/whatsapp-bot/messages/en.json +0 -7
  176. package/dist/features/whatsapp-bot/server.d.ts +0 -7
  177. package/dist/features/whatsapp-bot/server.js +0 -7
  178. package/dist/features/whatsapp-bot/types/index.d.ts +0 -126
  179. package/dist/features/whatsapp-bot/types/index.js +0 -1
@@ -57,8 +57,8 @@ import { withCategorySearchTxt } from "./_helpers/search-txt-wrappers.js";
57
57
  import { CATEGORY_FOREST } from "./_helpers/category-forest.js";
58
58
  import { BRAND_ROW_COUNT, buildBrandRows } from "./_helpers/brand-rows.js";
59
59
  import { FRANCHISE_ROW_COUNT, buildFranchiseRows } from "./_helpers/franchise-rows.js";
60
- import { MODEL_LEAF_COUNT } from "./_helpers/category-models.js";
61
- import { PART_LEAF_COUNT } from "./_helpers/category-parts.js";
60
+ import { MODEL_LEAF_COUNT, MODEL_LEAVES } from "./_helpers/category-models.js";
61
+ import { PART_LEAF_COUNT, PART_LEAVES } from "./_helpers/category-parts.js";
62
62
  import { MARKET_BAND_LEAF_IDS } from "./_helpers/category-content.js";
63
63
  import { GENERATED_CATEGORY_CONTENT, GENERATED_CATEGORY_CONTENT_COUNT, } from "./_helpers/category-content-generated.js";
64
64
  import { GENERATED_CATEGORY_IMAGES, GENERATED_CATEGORY_IMAGE_COUNT, GENERATED_CATEGORY_HASBRO_IMAGES, } from "./_helpers/category-images-generated.js";
@@ -743,11 +743,53 @@ if (allIds.length !== allCategoryRows.length) {
743
743
  const tier4Rows = rawCategories.filter((c) => c.tier === 4).length;
744
744
  const expectedTier4 = MODEL_LEAF_COUNT + PART_LEAF_COUNT;
745
745
  if (tier4Rows !== expectedTier4) {
746
+ /*
747
+ * 🛑 NAME THE DROPPED LEAVES. A count told us 2,626 of 2,711 arrived and
748
+ * nothing more, which is unactionable: the ids are all distinct and every
749
+ * parent key exists in the forest, so the difference is in WHICH parent each
750
+ * leaf hangs off and at what depth — and that is only visible per leaf.
751
+ *
752
+ * The expensive version of this was a session spent inferring the cause from
753
+ * indentation in the forest literal. The cheap version is the set
754
+ * difference, grouped by the parent that owns each missing leaf, which also
755
+ * says the tier it actually landed at. One run names the fix.
756
+ */
757
+ const reached = new Set(rawCategories.filter((c) => c.tier === 4).map((c) => String(c.id)));
758
+ const tierOf = new Map(rawCategories.map((c) => [String(c.id), c.tier]));
759
+ const declared = [];
760
+ for (const [parent, leaves] of Object.entries(MODEL_LEAVES)) {
761
+ for (const leaf of leaves)
762
+ declared.push({ id: leaf.id, parent });
763
+ }
764
+ for (const [parent, leaves] of Object.entries(PART_LEAVES)) {
765
+ for (const leaf of leaves)
766
+ declared.push({ id: leaf.id, parent });
767
+ }
768
+ const missing = declared.filter((d) => !reached.has(d.id));
769
+ const byParent = new Map();
770
+ for (const m of missing) {
771
+ if (!byParent.has(m.parent)) {
772
+ byParent.set(m.parent, { n: 0, landedAt: new Set(), sample: [] });
773
+ }
774
+ const g = byParent.get(m.parent);
775
+ g.n += 1;
776
+ g.landedAt.add(tierOf.has(m.id) ? `tier ${tierOf.get(m.id)}` : "absent");
777
+ if (g.sample.length < 3)
778
+ g.sample.push(m.id);
779
+ }
780
+ const detail = [...byParent.entries()]
781
+ .sort((a, b) => b[1].n - a[1].n)
782
+ .map(([parent, g]) => ` ${parent}: ${g.n} leaf/leaves landed at ${[...g.landedAt].join("+")} ` +
783
+ `(e.g. ${g.sample.join(", ")})`)
784
+ .join("\n");
746
785
  throw new Error(`category seed: ${tier4Rows} tier-4 leaves reached the tree but the generated ` +
747
- `maps declare ${expectedTier4} (${MODEL_LEAF_COUNT} models + ${PART_LEAF_COUNT} parts). ` +
748
- `A parent id in the forest no longer matches a key in MODEL_LEAVES or PART_LEAVES — ` +
749
- `re-run node scripts/gen-category-models.mjs and node scripts/gen-category-parts.mjs ` +
750
- `and check the parent ids.`);
786
+ `maps declare ${expectedTier4} (${MODEL_LEAF_COUNT} models + ${PART_LEAF_COUNT} parts).\n` +
787
+ ` ${missing.length} declared leaf/leaves did not arrive as tier 4, by parent:\n` +
788
+ `${detail}\n` +
789
+ ` A parent at the wrong DEPTH puts its leaves at the wrong tier (a leaf is ` +
790
+ `always parentDepth+1); a parent id the forest renamed makes them absent ` +
791
+ `entirely. Fix the forest, then re-run node scripts/gen-category-models.mjs ` +
792
+ `and node scripts/gen-category-parts.mjs.`);
751
793
  }
752
794
  if (brandRows.length !== BRAND_ROW_COUNT) {
753
795
  throw new Error(`category seed: ${brandRows.length} brand rows built, expected ${BRAND_ROW_COUNT}`);
@@ -21,24 +21,33 @@
21
21
  * section type with a renderer and zero seeded rows is the same class of gap,
22
22
  * just silent rather than colliding.
23
23
  *
24
- * ORDER follows current marketplace-homepage research rather than the previous
25
- * arbitrary arrangement: hero → trust → orient (categories, systems matrix) →
26
- * shop (products, auctions, pre-orders, bundles) → supply (stores) → social
27
- * proof (reviews) → engage (events, raffles, prize draws) → editorial (blog) →
28
- * convert (seller banner, newsletter) → reassure (stats, security, community,
29
- * FAQ, brands).
24
+ * ORDER: hero → SHOP (products, auctions, pre-orders) → carousel → trust →
25
+ * orient (categories, systems matrix) → shop cont. (bundles) → supply
26
+ * (stores) → social proof (reviews) → engage (events, raffles, prize draws) →
27
+ * editorial (blog) → convert (seller banner, newsletter) → reassure (stats,
28
+ * security, community, FAQ, brands).
30
29
  *
31
- * The systems matrix sits at 5, between the generation tiles and the first
32
- * product rail, because that is where the measured leader puts it: on
33
- * worldhobbyshop "Browse Beyblade Systems & Series" (25 text links) follows
34
- * "Shop Beyblades by Generation" (6 image tiles) and precedes the one product
35
- * rail — taxonomy routing before merchandising. See
30
+ * 🛑 Products (2), auctions (3) and pre-orders (4) were lifted above the
31
+ * carousel on 2026-10-20 at the owner's request — real merchandise directly
32
+ * under the hero, promotions below it. That OVERRIDES the research arrangement
33
+ * this header used to describe (trust → orient → shop), so do not "restore"
34
+ * the old order on the strength of the paragraphs below; they explain the
35
+ * reasoning for the sections that are still in a research-driven position,
36
+ * not a mandate for the three that were deliberately moved. Pre-orders came
37
+ * up from 8 in a second pass, which is why the carousel/trust/categories/
38
+ * matrix block reads 5 → 8 rather than 4 → 7.
39
+ *
40
+ * The systems matrix still sits immediately after the generation tiles (7 → 8)
41
+ * because that is where the measured leader puts it: on worldhobbyshop
42
+ * "Browse Beyblade Systems & Series" (25 text links) follows "Shop Beyblades
43
+ * by Generation" (6 image tiles) — taxonomy routing stays together. See
36
44
  * docs/research/competitor-crawl-2026-10/layout.md.
37
45
  *
38
- * Baymard's finding drives the top: a static hero outperforms a carousel, and
39
- * the one documented carousel win came from demoting it BELOW a static hero.
40
- * So `welcome` is first and owns the page's single <h1>; `carousel` sits under
41
- * it and its slide titles render as <h2>.
46
+ * Baymard's finding still drives the hero: a static hero outperforms a
47
+ * carousel, and the one documented carousel win came from demoting it BELOW a
48
+ * static hero. So `welcome` is first and owns the page's single <h1>; the
49
+ * `carousel` is now demoted further still, under the first three product
50
+ * rails, and its slide titles render as <h2>.
42
51
  *
43
52
  * COPY IS CATALOGUE-NEUTRAL on purpose. "Shop by Category" stays correct
44
53
  * however the catalogue changes; "Burst & X Series" goes stale the moment it
@@ -89,13 +98,13 @@ export const homepageSectionsSeedData = [
89
98
  createdAt: daysAgo(90),
90
99
  updatedAt: daysAgo(2),
91
100
  },
92
- // ---- 2. Promo carousel ---------------------------------------------------
101
+ // ---- 5. Promo carousel ---------------------------------------------------
93
102
  // "medium" rather than "tall": it now sits UNDER a full hero, so a
94
103
  // viewport-height band would push everything else below the fold.
95
104
  {
96
105
  id: "section-hero-carousel",
97
106
  type: "carousel",
98
- order: 2,
107
+ order: 5,
99
108
  enabled: true,
100
109
  config: {
101
110
  title: "Featured promotions",
@@ -108,13 +117,13 @@ export const homepageSectionsSeedData = [
108
117
  createdAt: daysAgo(90),
109
118
  updatedAt: daysAgo(5),
110
119
  },
111
- // ---- 3. Trust bar --------------------------------------------------------
112
- // Moved up from 4. Research: ~80% of attention is above the fold and the
113
- // first 3–4 trust elements carry nearly all of the lift.
120
+ // ---- 6. Trust bar --------------------------------------------------------
121
+ // Research: ~80% of attention is above the fold and the first 3–4 trust
122
+ // elements carry nearly all of the lift.
114
123
  {
115
124
  id: "section-trust-indicators",
116
125
  type: "trust-indicators",
117
- order: 3,
126
+ order: 6,
118
127
  enabled: true,
119
128
  config: {
120
129
  title: "Why buyers trust us",
@@ -148,12 +157,12 @@ export const homepageSectionsSeedData = [
148
157
  createdAt: daysAgo(90),
149
158
  updatedAt: daysAgo(20),
150
159
  },
151
- // ---- 4. Orient: categories ----------------------------------------------
160
+ // ---- 7. Orient: categories ----------------------------------------------
152
161
  // Baymard's top homepage guideline, and the main internal-linking surface.
153
162
  {
154
163
  id: "section-collectibles-categories",
155
164
  type: "categories",
156
- order: 4,
165
+ order: 7,
157
166
  enabled: true,
158
167
  config: {
159
168
  title: "Shop by Category",
@@ -173,13 +182,17 @@ export const homepageSectionsSeedData = [
173
182
  createdAt: daysAgo(90),
174
183
  updatedAt: daysAgo(10),
175
184
  },
176
- // ---- 5–8. Shop -----------------------------------------------------------
185
+ // ---- 2–4, 9. Shop --------------------------------------------------------
186
+ // Products (2), auctions (3) and pre-orders (4) sit directly under the hero,
187
+ // ABOVE the carousel — a merchandising-first top of page, asked for
188
+ // 2026-10-20. Bundles (9) stay below the orientation band.
189
+ //
177
190
  // maxItems stays <= 12 everywhere: SSR supplies exactly 12 via
178
191
  // getFeatured*(12), so a larger cap would promise rows that cannot fill.
179
192
  {
180
193
  id: "section-featured-products",
181
194
  type: "products",
182
- order: 6,
195
+ order: 2,
183
196
  enabled: true,
184
197
  config: {
185
198
  title: "Featured Products",
@@ -210,7 +223,7 @@ export const homepageSectionsSeedData = [
210
223
  {
211
224
  id: "section-live-auctions",
212
225
  type: "auctions",
213
- order: 7,
226
+ order: 3,
214
227
  enabled: true,
215
228
  config: {
216
229
  title: "Live Auctions",
@@ -228,7 +241,7 @@ export const homepageSectionsSeedData = [
228
241
  {
229
242
  id: "section-pre-orders",
230
243
  type: "pre-orders",
231
- order: 8,
244
+ order: 4,
232
245
  enabled: true,
233
246
  config: {
234
247
  title: "Reserve Before It Ships",
@@ -635,7 +648,7 @@ export const homepageSectionsSeedData = [
635
648
  {
636
649
  id: "section-systems-matrix",
637
650
  type: "custom-cards",
638
- order: 5,
651
+ order: 8,
639
652
  enabled: true,
640
653
  config: {
641
654
  title: "Every system, every part family",
@@ -2493,7 +2493,7 @@ export const modelCompositionSeedData = [
2493
2493
  "slotKey": "blade-base",
2494
2494
  "slotLabel": "BLADE BASE (BB)",
2495
2495
  "partName": "Metal Sharp Base",
2496
- "partId": "blade-base--metal-sharp-base"
2496
+ "partId": "blade-base--blade-base"
2497
2497
  }
2498
2498
  ],
2499
2499
  "source": "gen1/plastic/flash-leopard-2.md",
@@ -6587,14 +6587,12 @@ export const modelCompositionSeedData = [
6587
6587
  {
6588
6588
  "slotKey": "disc",
6589
6589
  "slotLabel": "FORGE DISC",
6590
- "partName": "variable per combo",
6591
- "partId": "disc--variable-per-combo"
6590
+ "partName": "variable per combo"
6592
6591
  },
6593
6592
  {
6594
6593
  "slotKey": "performance-tip",
6595
6594
  "slotLabel": "PERFORMANCE TIP",
6596
- "partName": "variable per combo",
6597
- "partId": "performance-tip--variable-per-combo"
6595
+ "partName": "variable per combo"
6598
6596
  }
6599
6597
  ],
6600
6598
  "source": "gen3/bu/draciel-fortress.md",
@@ -7415,7 +7413,7 @@ export const modelCompositionSeedData = [
7415
7413
  "slotKey": "driver",
7416
7414
  "slotLabel": "DRIVER",
7417
7415
  "partName": "Destroy'",
7418
- "partId": "driver--destroy-dash"
7416
+ "partId": "driver--destroy"
7419
7417
  }
7420
7418
  ],
7421
7419
  "source": "gen3/db/rage-longinus-s5.md"
@@ -7925,7 +7923,7 @@ export const modelCompositionSeedData = [
7925
7923
  "slotKey": "driver",
7926
7924
  "slotLabel": "PERFORMANCE DRIVER",
7927
7925
  "partName": "Evolution'",
7928
- "partId": "driver--evolution-dash"
7926
+ "partId": "driver--evolution"
7929
7927
  }
7930
7928
  ],
7931
7929
  "source": "gen3/superking/brave-valtryek.md"
@@ -7972,7 +7970,7 @@ export const modelCompositionSeedData = [
7972
7970
  "slotKey": "driver",
7973
7971
  "slotLabel": "DRIVER",
7974
7972
  "partName": "Destroy'",
7975
- "partId": "driver--destroy-dash"
7973
+ "partId": "driver--destroy"
7976
7974
  }
7977
7975
  ],
7978
7976
  "source": "gen3/superking/rage-longinus-d3a.md"
@@ -0,0 +1,9 @@
1
+ /**
2
+ * GENERATED by `scripts/generate-parts-seed.mjs` — do not hand-edit.
3
+ *
4
+ * Chunk 0 of the part glossary. See `../part-glossary-seed-data.ts` for
5
+ * provenance and for why the chunks are separate FILES rather than separate
6
+ * consts in one file.
7
+ */
8
+ import type { PartGlossaryDocument } from "../../features/parts/schemas/firestore";
9
+ export declare const glossaryChunk0: Partial<PartGlossaryDocument>[];