@mohasinac/appkit 4.9.5 → 4.10.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.
- package/dist/_internal/server/features/auctions/actions.js +3 -2
- package/dist/_internal/server/features/auctions/service.d.ts +4 -3
- package/dist/_internal/server/features/auctions/service.js +6 -6
- package/dist/_internal/server/features/bundles/data.d.ts +9 -0
- package/dist/_internal/server/features/bundles/data.js +14 -0
- package/dist/_internal/server/features/bundles/index.d.ts +1 -1
- package/dist/_internal/server/features/bundles/index.js +1 -1
- package/dist/_internal/server/features/catalogue/og.d.ts +20 -0
- package/dist/_internal/server/features/catalogue/og.js +27 -0
- package/dist/_internal/server/features/grouped/data.d.ts +12 -0
- package/dist/_internal/server/features/grouped/data.js +26 -1
- package/dist/_internal/server/features/grouped/index.d.ts +1 -1
- package/dist/_internal/server/features/grouped/index.js +1 -1
- package/dist/_internal/server/features/products/data.d.ts +23 -0
- package/dist/_internal/server/features/products/data.js +159 -0
- package/dist/_internal/server/features/products/index.d.ts +1 -1
- package/dist/_internal/server/features/products/index.js +1 -1
- package/dist/_internal/shared/features/auctions/config.d.ts +20 -0
- package/dist/_internal/shared/features/auctions/config.js +31 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/art/config.js +1 -1
- package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/classified/config.js +1 -1
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/digital-code/config.js +1 -1
- package/dist/_internal/shared/listing-types/live/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/live/config.js +1 -1
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -1
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -1
- package/dist/_internal/shared/listing-types/stickers/config.js +1 -1
- package/dist/client.d.ts +0 -6
- package/dist/client.js +1 -4
- package/dist/constants/api-endpoints.d.ts +3 -0
- package/dist/constants/api-endpoints.js +1 -0
- package/dist/features/admin/components/AdminSiteSettingsView.js +12 -4
- package/dist/features/admin/schemas/firestore.d.ts +9 -0
- package/dist/features/admin/schemas/firestore.js +6 -0
- package/dist/features/auctions/actions/bid-actions.js +4 -1
- package/dist/features/auctions/components/AuctionBottomActions.d.ts +2 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +14 -1
- package/dist/features/auctions/components/AuctionDetailPageView.js +21 -9
- package/dist/features/auctions/components/LiveMinIncrement.d.ts +18 -0
- package/dist/features/auctions/components/LiveMinIncrement.js +17 -0
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +5 -2
- package/dist/features/auctions/components/PlaceBidFormClient.js +7 -3
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.d.ts +11 -0
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +33 -0
- package/dist/features/catalogue/components/PublicCatalogueView.js +2 -1
- package/dist/features/catalogue/index.d.ts +2 -0
- package/dist/features/catalogue/index.js +1 -0
- package/dist/features/categories/components/BundleDetailView.d.ts +3 -1
- package/dist/features/categories/components/BundleDetailView.js +3 -2
- package/dist/features/classified/components/ClassifiedContactSellerPanel.d.ts +12 -0
- package/dist/features/classified/components/ClassifiedContactSellerPanel.js +49 -0
- package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +7 -0
- package/dist/features/classified/components/ClassifiedDetailPageView.js +69 -0
- package/dist/features/contact/components/ContactPageView.js +8 -2
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.d.ts +19 -0
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +79 -0
- package/dist/features/grouped/components/GroupedListingsCarousel.d.ts +13 -0
- package/dist/features/grouped/components/GroupedListingsCarousel.js +31 -0
- package/dist/features/grouped/repository/grouped-listings.repository.d.ts +8 -0
- package/dist/features/grouped/repository/grouped-listings.repository.js +16 -0
- package/dist/features/layout/BottomActions.js +4 -3
- package/dist/features/layout/BottomActionsContext.d.ts +10 -0
- package/dist/features/layout/BottomActionsContext.js +5 -1
- package/dist/features/layout/hooks/useBottomActions.d.ts +2 -0
- package/dist/features/layout/hooks/useBottomActions.js +4 -1
- package/dist/features/live/components/LiveItemDetailPageView.d.ts +9 -0
- package/dist/features/live/components/LiveItemDetailPageView.js +74 -0
- package/dist/features/media/MediaVideo.js +17 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +9 -1
- package/dist/features/products/components/PrizeDrawDetailPageView.js +11 -1
- package/dist/features/products/components/ProductDetailPageView.js +11 -116
- package/dist/features/products/components/RelatedItemsSection.d.ts +16 -0
- package/dist/features/products/components/RelatedItemsSection.js +17 -0
- package/dist/features/seller/components/SellerProductShell.js +1 -1
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +83 -3
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/next/routing/route-map.d.ts +2 -0
- package/dist/next/routing/route-map.js +7 -0
- package/dist/seed/bids-seed-data.js +48 -3
- package/dist/seed/grouped-listings-seed-data.js +167 -0
- package/dist/seed/payouts-seed-data.js +4 -4
- package/dist/seed/products-art-seed-data.js +188 -5
- package/dist/seed/products-auctions-seed-data.js +215 -6
- package/dist/seed/products-classifieds-seed-data.js +255 -8
- package/dist/seed/products-digital-codes-seed-data.js +258 -19
- package/dist/seed/products-live-items-seed-data.js +143 -10
- package/dist/seed/products-preorders-seed-data.js +213 -8
- package/dist/seed/products-prize-draws-seed-data.js +198 -0
- package/dist/seed/products-standard-seed-data.js +141 -0
- package/dist/seed/products-stickers-seed-data.js +178 -5
- package/dist/seed/site-settings-seed-data.js +10 -29
- package/dist/seed/store-extensions-seed-data.js +1 -1
- package/dist/server-entry.d.ts +4 -1
- package/dist/server-entry.js +4 -1
- package/dist/server.d.ts +4 -2
- package/dist/server.js +4 -2
- package/dist/styles.css +29 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/ImageLightbox.js +37 -3
- package/dist/ui/components/ImageLightbox.style.css +28 -0
- package/dist/utils/media-url.d.ts +9 -0
- package/dist/utils/media-url.js +39 -0
- package/package.json +1 -1
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY:
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* WHY: `listingType: "art"` shares ProductPrintMeta (size/material/finish/editionSize)
|
|
3
|
+
* with "stickers" — both printed-only physical goods. Previously left as an empty
|
|
4
|
+
* stub with the note "out of scope for the minimal Beyblade-focused demo catalog,"
|
|
5
|
+
* but unlike "live," art prints fit the Beyblade theme naturally as fan-art (see
|
|
6
|
+
* CLAUDE.md seed-data blandness sweep, 2026-08-20 session).
|
|
7
|
+
* WHAT: Exports 5 Beyblade fan-art print listings on Beyblade Arena, varying size,
|
|
8
|
+
* material, finish, and edition size (including one open-edition, no editionSize).
|
|
5
9
|
*
|
|
6
10
|
* EXPORTS:
|
|
7
|
-
* productsArtSeedData —
|
|
11
|
+
* productsArtSeedData — Array of 5 Partial<ProductDocument> with listingType:"art"
|
|
8
12
|
*
|
|
9
13
|
* @tag domain:products,art
|
|
10
14
|
* @tag layer:seed
|
|
@@ -13,4 +17,183 @@
|
|
|
13
17
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
14
18
|
* @tag sideEffects:none
|
|
15
19
|
*/
|
|
16
|
-
|
|
20
|
+
import { PRODUCT_FIELDS } from "../constants/field-names";
|
|
21
|
+
import { buildSearchTokens } from "../utils/search-tokens";
|
|
22
|
+
import { seedExtMedia } from "./_helpers/media";
|
|
23
|
+
export const productsArtSeedData = [
|
|
24
|
+
{
|
|
25
|
+
id: "art-dranzer-phoenix-poster",
|
|
26
|
+
slug: "art-dranzer-phoenix-poster",
|
|
27
|
+
title: "Dranzer Phoenix Rising — Fan Art Poster",
|
|
28
|
+
description: "A vibrant fan-art poster of Dranzer erupting in phoenix flame, hand-illustrated and giclée-printed on matte photo paper.",
|
|
29
|
+
categorySlugs: ["category-spinning-tops"],
|
|
30
|
+
categoryNames: ["Spinning Tops"],
|
|
31
|
+
brandSlug: "brand-beyblade",
|
|
32
|
+
brand: "Beyblade",
|
|
33
|
+
price: 599,
|
|
34
|
+
currency: "INR",
|
|
35
|
+
stockQuantity: 20,
|
|
36
|
+
availableQuantity: 20,
|
|
37
|
+
isSold: false,
|
|
38
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-dranzer-phoenix-1-20260817/900/900"),
|
|
39
|
+
images: [
|
|
40
|
+
seedExtMedia("https://picsum.photos/seed/art-image-dranzer-phoenix-1-20260817/900/900"),
|
|
41
|
+
seedExtMedia("https://picsum.photos/seed/art-image-dranzer-phoenix-2-20260817/900/900"),
|
|
42
|
+
],
|
|
43
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
44
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
45
|
+
listingType: "art",
|
|
46
|
+
storeId: "store-beyblade-arena",
|
|
47
|
+
storeName: "Beyblade Arena",
|
|
48
|
+
printMeta: { size: "12x18 in", material: "Matte photo paper", finish: "Matte" },
|
|
49
|
+
customFields: [],
|
|
50
|
+
customSections: [],
|
|
51
|
+
featured: true,
|
|
52
|
+
isPromoted: false,
|
|
53
|
+
isOnSale: false,
|
|
54
|
+
tags: ["fan-art", "poster"],
|
|
55
|
+
createdAt: new Date("2026-08-17"),
|
|
56
|
+
updatedAt: new Date("2026-08-17"),
|
|
57
|
+
searchTokens: buildSearchTokens("Dranzer Phoenix Rising — Fan Art Poster", "Vibrant fan-art poster of Dranzer erupting in phoenix flame.", "Beyblade", "brand-beyblade", ["Spinning Tops"], ["fan-art", "poster"]),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "art-valkyrie-holographic-print",
|
|
61
|
+
slug: "art-valkyrie-holographic-print",
|
|
62
|
+
title: "Beyblade Burst Valkyrie — Holographic Art Print (Limited /100)",
|
|
63
|
+
description: "A limited-edition holographic art print of Valkyrie mid-battle, numbered out of 100. Ships in a rigid mailer to prevent bending.",
|
|
64
|
+
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
65
|
+
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
66
|
+
brandSlug: "brand-beyblade",
|
|
67
|
+
brand: "Beyblade",
|
|
68
|
+
price: 1299,
|
|
69
|
+
currency: "INR",
|
|
70
|
+
stockQuantity: 100,
|
|
71
|
+
availableQuantity: 37,
|
|
72
|
+
isSold: false,
|
|
73
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-valkyrie-holo-1-20260818/900/900"),
|
|
74
|
+
images: [
|
|
75
|
+
seedExtMedia("https://picsum.photos/seed/art-image-valkyrie-holo-1-20260818/900/900"),
|
|
76
|
+
seedExtMedia("https://picsum.photos/seed/art-image-valkyrie-holo-2-20260818/900/900"),
|
|
77
|
+
],
|
|
78
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
79
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
80
|
+
listingType: "art",
|
|
81
|
+
storeId: "store-beyblade-arena",
|
|
82
|
+
storeName: "Beyblade Arena",
|
|
83
|
+
printMeta: { size: "8x10 in", material: "Holographic cardstock", finish: "Holographic", editionSize: 100 },
|
|
84
|
+
customFields: [{ key: "Numbered Edition", type: "boolean", value: "true" }],
|
|
85
|
+
customSections: [],
|
|
86
|
+
featured: true,
|
|
87
|
+
isPromoted: true,
|
|
88
|
+
isOnSale: false,
|
|
89
|
+
tags: ["fan-art", "limited-run"],
|
|
90
|
+
createdAt: new Date("2026-08-18"),
|
|
91
|
+
updatedAt: new Date("2026-08-19"),
|
|
92
|
+
searchTokens: buildSearchTokens("Beyblade Burst Valkyrie — Holographic Art Print (Limited /100)", "Limited-edition holographic art print of Valkyrie, numbered out of 100.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["fan-art", "limited-run"]),
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "art-beyblade-x-lineup-canvas",
|
|
96
|
+
slug: "art-beyblade-x-lineup-canvas",
|
|
97
|
+
title: "Beyblade X Full Lineup — Canvas Print",
|
|
98
|
+
description: "A gallery-style canvas print featuring the full current Beyblade X roster in battle formation. Stretched and ready to hang.",
|
|
99
|
+
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
100
|
+
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
101
|
+
brandSlug: "brand-takara-tomy",
|
|
102
|
+
brand: "Takara-Tomy",
|
|
103
|
+
price: 2499,
|
|
104
|
+
currency: "INR",
|
|
105
|
+
stockQuantity: 15,
|
|
106
|
+
availableQuantity: 15,
|
|
107
|
+
isSold: false,
|
|
108
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-x-lineup-canvas-1-20260819/900/900"),
|
|
109
|
+
images: [seedExtMedia("https://picsum.photos/seed/art-image-x-lineup-canvas-1-20260819/900/900")],
|
|
110
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
111
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
112
|
+
listingType: "art",
|
|
113
|
+
storeId: "store-beyblade-arena",
|
|
114
|
+
storeName: "Beyblade Arena",
|
|
115
|
+
printMeta: { size: "16x20 in", material: "Canvas", finish: "Matte" },
|
|
116
|
+
customFields: [],
|
|
117
|
+
customSections: [
|
|
118
|
+
{
|
|
119
|
+
id: "care-instructions",
|
|
120
|
+
title: "Care Instructions",
|
|
121
|
+
text: "Wipe with a dry microfiber cloth only. Keep out of direct sunlight to preserve color vibrancy over time.",
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
featured: false,
|
|
125
|
+
isPromoted: false,
|
|
126
|
+
isOnSale: false,
|
|
127
|
+
tags: ["fan-art", "canvas"],
|
|
128
|
+
createdAt: new Date("2026-08-19"),
|
|
129
|
+
updatedAt: new Date("2026-08-19"),
|
|
130
|
+
searchTokens: buildSearchTokens("Beyblade X Full Lineup — Canvas Print", "Gallery-style canvas print featuring the full current Beyblade X roster.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["fan-art", "canvas"]),
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "art-metal-fight-vintage-poster",
|
|
134
|
+
slug: "art-metal-fight-vintage-poster",
|
|
135
|
+
title: "Metal Fight Beyblade — Vintage-Style Poster (Open Edition)",
|
|
136
|
+
description: "A retro-styled poster celebrating the Metal Fight era, printed on demand — open edition, no print run limit.",
|
|
137
|
+
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
138
|
+
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
139
|
+
brandSlug: "brand-takara-tomy",
|
|
140
|
+
brand: "Takara-Tomy",
|
|
141
|
+
price: 449,
|
|
142
|
+
currency: "INR",
|
|
143
|
+
stockQuantity: 999,
|
|
144
|
+
availableQuantity: 999,
|
|
145
|
+
isSold: false,
|
|
146
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-metal-vintage-1-20260819/900/900"),
|
|
147
|
+
images: [seedExtMedia("https://picsum.photos/seed/art-image-metal-vintage-1-20260819/900/900")],
|
|
148
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
149
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
150
|
+
listingType: "art",
|
|
151
|
+
storeId: "store-beyblade-arena",
|
|
152
|
+
storeName: "Beyblade Arena",
|
|
153
|
+
printMeta: { size: "11x17 in", material: "Matte photo paper", finish: "Matte" },
|
|
154
|
+
customFields: [{ key: "Print on Demand", type: "boolean", value: "true" }],
|
|
155
|
+
customSections: [],
|
|
156
|
+
featured: false,
|
|
157
|
+
isPromoted: false,
|
|
158
|
+
isOnSale: false,
|
|
159
|
+
tags: ["fan-art", "poster", "vintage-collectible"],
|
|
160
|
+
createdAt: new Date("2026-08-19"),
|
|
161
|
+
updatedAt: new Date("2026-08-19"),
|
|
162
|
+
searchTokens: buildSearchTokens("Metal Fight Beyblade — Vintage-Style Poster (Open Edition)", "Retro-styled poster celebrating the Metal Fight era, open edition.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade Metal Fight", "Spinning Tops"], ["fan-art", "poster", "vintage-collectible"]),
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: "art-original-series-anniversary-print",
|
|
166
|
+
slug: "art-original-series-anniversary-print",
|
|
167
|
+
title: "Original Series 25th Anniversary — Glossy Art Print",
|
|
168
|
+
description: "A commemorative glossy print marking 25 years of the original Beyblade series, featuring Dragoon, Dranzer, Driger, and Draciel together.",
|
|
169
|
+
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
170
|
+
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
171
|
+
brandSlug: "brand-beyblade",
|
|
172
|
+
brand: "Beyblade",
|
|
173
|
+
price: 899,
|
|
174
|
+
currency: "INR",
|
|
175
|
+
stockQuantity: 250,
|
|
176
|
+
availableQuantity: 180,
|
|
177
|
+
isSold: false,
|
|
178
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/art-image-original-anniversary-1-20260819/900/900"),
|
|
179
|
+
images: [
|
|
180
|
+
seedExtMedia("https://picsum.photos/seed/art-image-original-anniversary-1-20260819/900/900"),
|
|
181
|
+
seedExtMedia("https://picsum.photos/seed/art-image-original-anniversary-2-20260819/900/900"),
|
|
182
|
+
],
|
|
183
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
184
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
185
|
+
listingType: "art",
|
|
186
|
+
storeId: "store-beyblade-arena",
|
|
187
|
+
storeName: "Beyblade Arena",
|
|
188
|
+
printMeta: { size: "12x18 in", material: "Glossy photo paper", finish: "Glossy", editionSize: 250 },
|
|
189
|
+
customFields: [{ key: "Anniversary Edition", type: "boolean", value: "true" }],
|
|
190
|
+
customSections: [],
|
|
191
|
+
featured: true,
|
|
192
|
+
isPromoted: false,
|
|
193
|
+
isOnSale: false,
|
|
194
|
+
tags: ["fan-art", "vintage-collectible", "limited-run"],
|
|
195
|
+
createdAt: new Date("2026-08-19"),
|
|
196
|
+
updatedAt: new Date("2026-08-19"),
|
|
197
|
+
searchTokens: buildSearchTokens("Original Series 25th Anniversary — Glossy Art Print", "Commemorative glossy print marking 25 years of the original Beyblade series.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["fan-art", "vintage-collectible", "limited-run"]),
|
|
198
|
+
},
|
|
199
|
+
];
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds a
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* WHY: Seeds a Beyblade auction catalog with real state variety — the original 2-fixture
|
|
3
|
+
* file only ever exercised "active, bids already started" auctions, so features like
|
|
4
|
+
* Buy-Now-before-first-bid, reserve-not-met, and a closed/won auction with a real
|
|
5
|
+
* winner were structurally impossible to test against permanent data (see CLAUDE.md
|
|
6
|
+
* Recurrent Root Cause Pattern for seed-data blandness sweep, 2026-08-20 session).
|
|
7
|
+
* Also fixes a real field-name bug: the two original fixtures set `buyItNowPrice`
|
|
8
|
+
* (a distinct, no-bids-yet-only BIN field) but AuctionDetailPageView.tsx reads
|
|
9
|
+
* `buyNowPrice` — so neither auction's Buy Now button/price ever rendered.
|
|
10
|
+
* WHAT: Exports 8 auction products with listingType:"auction" — 2 original fixtures
|
|
11
|
+
* (field-bug fixed, specs/tags added) + 6 new: a Buy-Now-only auction (zero bids,
|
|
12
|
+
* bidsHaveStarted:false), a reserve-not-met auction, a closed/won auction with a
|
|
13
|
+
* winning bidder, and 3 more active auctions with varied end dates/bid activity.
|
|
5
14
|
*
|
|
6
15
|
* EXPORTS:
|
|
7
|
-
* productsAuctionsSeedData — Array of
|
|
16
|
+
* productsAuctionsSeedData — Array of 8 auction products with listingType:"auction"
|
|
8
17
|
*
|
|
9
18
|
* @tag domain:auctions,products
|
|
10
19
|
* @tag layer:seed
|
|
@@ -27,7 +36,13 @@ function withTokens(p) {
|
|
|
27
36
|
searchTokens: buildSearchTokens(p.title, p.description, p.brand, p.brandSlug, p.categoryNames, p.tags, p.features, p.condition, p.specifications?.map((s) => `${s.name} ${s.value}`)),
|
|
28
37
|
};
|
|
29
38
|
}
|
|
39
|
+
const DRANZER_SPECS = [
|
|
40
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
41
|
+
{ name: "Type", value: "Attack" },
|
|
42
|
+
{ name: "Weight", value: "32.9", unit: "g" },
|
|
43
|
+
];
|
|
30
44
|
const _rawProductsAuctionsSeedData = [
|
|
45
|
+
// --- Original 2 fixtures — buyNowPrice field-name bug fixed + specs/tags added ---
|
|
31
46
|
{
|
|
32
47
|
id: "auction-beyblade-original-dragoon-storm",
|
|
33
48
|
slug: "auction-beyblade-original-dragoon-storm",
|
|
@@ -38,7 +53,7 @@ const _rawProductsAuctionsSeedData = [
|
|
|
38
53
|
brandSlug: "brand-beyblade",
|
|
39
54
|
brand: "Beyblade",
|
|
40
55
|
startingBid: 2999,
|
|
41
|
-
|
|
56
|
+
buyNowPrice: 5999,
|
|
42
57
|
currentBid: 3499,
|
|
43
58
|
currency: "INR",
|
|
44
59
|
auctionEndDate: new Date(Date.now() + 4 * 24 * 60 * 60 * 1000),
|
|
@@ -53,6 +68,9 @@ const _rawProductsAuctionsSeedData = [
|
|
|
53
68
|
],
|
|
54
69
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
55
70
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
71
|
+
tags: ["vintage-collectible", "sealed"],
|
|
72
|
+
specifications: DRANZER_SPECS,
|
|
73
|
+
customFields: [{ key: "Sealed / Unopened", type: "boolean", value: "true" }],
|
|
56
74
|
storeId: "store-beyblade-arena",
|
|
57
75
|
storeName: "Beyblade Arena",
|
|
58
76
|
createdAt: new Date("2026-05-18"),
|
|
@@ -68,7 +86,7 @@ const _rawProductsAuctionsSeedData = [
|
|
|
68
86
|
brandSlug: "brand-takara-tomy",
|
|
69
87
|
brand: "Takara-Tomy",
|
|
70
88
|
startingBid: 1999,
|
|
71
|
-
|
|
89
|
+
buyNowPrice: 4499,
|
|
72
90
|
currentBid: 3199,
|
|
73
91
|
currency: "INR",
|
|
74
92
|
auctionEndDate: new Date(Date.now() + 6 * 24 * 60 * 60 * 1000),
|
|
@@ -83,11 +101,202 @@ const _rawProductsAuctionsSeedData = [
|
|
|
83
101
|
],
|
|
84
102
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
85
103
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
|
|
104
|
+
tags: ["attack-type", "tournament-grade"],
|
|
105
|
+
specifications: [
|
|
106
|
+
{ name: "Spin Direction", value: "Left (Left-Spin)" },
|
|
107
|
+
{ name: "Type", value: "Attack" },
|
|
108
|
+
{ name: "Weight", value: "54.3", unit: "g" },
|
|
109
|
+
{ name: "Track & Bottom", value: "100 / HF/S (Hole Flat/Spike)" },
|
|
110
|
+
],
|
|
86
111
|
storeId: "store-beyblade-arena",
|
|
87
112
|
storeName: "Beyblade Arena",
|
|
88
113
|
createdAt: new Date("2026-05-19"),
|
|
89
114
|
updatedAt: new Date("2026-05-22"),
|
|
90
115
|
},
|
|
116
|
+
// --- Buy-Now-only: zero bids yet, BIN eligible per bidsHaveStarted:false gate ---
|
|
117
|
+
{
|
|
118
|
+
id: "auction-beyblade-x-shark-edge",
|
|
119
|
+
slug: "auction-beyblade-x-shark-edge",
|
|
120
|
+
title: "Beyblade X BX-04 Shark Edge (Buy It Now Available)",
|
|
121
|
+
description: "Shark Edge 3-60GF straight from a fresh case pull. No bids yet — grab it instantly with Buy It Now before the clock runs, or start the bidding.",
|
|
122
|
+
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
123
|
+
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
124
|
+
brandSlug: "brand-takara-tomy",
|
|
125
|
+
brand: "Takara-Tomy",
|
|
126
|
+
startingBid: 799,
|
|
127
|
+
buyNowPrice: 1299,
|
|
128
|
+
currentBid: 799,
|
|
129
|
+
currency: "INR",
|
|
130
|
+
auctionEndDate: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000),
|
|
131
|
+
bidCount: 0,
|
|
132
|
+
bidsHaveStarted: false,
|
|
133
|
+
isSold: false,
|
|
134
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-1-20260814/900/900"),
|
|
135
|
+
images: [
|
|
136
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-1-20260814/900/900"),
|
|
137
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-shark-edge-2-20260814/900/900"),
|
|
138
|
+
],
|
|
139
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
140
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
141
|
+
tags: ["balance-type", "starter-set"],
|
|
142
|
+
specifications: [
|
|
143
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
144
|
+
{ name: "Type", value: "Balance" },
|
|
145
|
+
{ name: "Weight", value: "37.2", unit: "g" },
|
|
146
|
+
{ name: "Blade / Ratchet / Bit", value: "Shark Edge / 3-60 / Glide Flat" },
|
|
147
|
+
],
|
|
148
|
+
storeId: "store-beyblade-arena",
|
|
149
|
+
storeName: "Beyblade Arena",
|
|
150
|
+
createdAt: new Date("2026-08-14"),
|
|
151
|
+
updatedAt: new Date("2026-08-14"),
|
|
152
|
+
},
|
|
153
|
+
// --- Reserve not met: currentBid sits below reservePrice ---
|
|
154
|
+
{
|
|
155
|
+
id: "auction-beyblade-original-seaborg",
|
|
156
|
+
slug: "auction-beyblade-original-seaborg",
|
|
157
|
+
title: "Beyblade Original — Seaborg 2000 (Reserve Auction)",
|
|
158
|
+
description: "Rare Seaborg 2000 defense-type top from the original series. Reserve price set by the seller — current bids haven't met it yet.",
|
|
159
|
+
categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
|
|
160
|
+
categoryNames: ["Beyblade Original", "Spinning Tops"],
|
|
161
|
+
brandSlug: "brand-beyblade",
|
|
162
|
+
brand: "Beyblade",
|
|
163
|
+
startingBid: 1499,
|
|
164
|
+
reservePrice: 4000,
|
|
165
|
+
currentBid: 2200,
|
|
166
|
+
currency: "INR",
|
|
167
|
+
auctionEndDate: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
|
|
168
|
+
bidCount: 4,
|
|
169
|
+
bidsHaveStarted: true,
|
|
170
|
+
isSold: false,
|
|
171
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-1-20260814/900/900"),
|
|
172
|
+
images: [
|
|
173
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-1-20260814/900/900"),
|
|
174
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-original-seaborg-2-20260814/900/900"),
|
|
175
|
+
],
|
|
176
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
177
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
|
|
178
|
+
tags: ["defense-type", "vintage-collectible"],
|
|
179
|
+
specifications: [
|
|
180
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
181
|
+
{ name: "Type", value: "Defense" },
|
|
182
|
+
{ name: "Weight", value: "35.6", unit: "g" },
|
|
183
|
+
],
|
|
184
|
+
customFields: [{ key: "Reserve Disclosed", type: "boolean", value: "false" }],
|
|
185
|
+
storeId: "store-beyblade-arena",
|
|
186
|
+
storeName: "Beyblade Arena",
|
|
187
|
+
createdAt: new Date("2026-08-13"),
|
|
188
|
+
updatedAt: new Date("2026-08-19"),
|
|
189
|
+
},
|
|
190
|
+
// --- Closed/won: ended in the past, leadingBidderId set, isSold true ---
|
|
191
|
+
{
|
|
192
|
+
id: "auction-beyblade-metal-diablo-nemesis",
|
|
193
|
+
slug: "auction-beyblade-metal-diablo-nemesis",
|
|
194
|
+
title: "Metal Fight Beyblade BB-122 Diablo Nemesis (Ended — Sold)",
|
|
195
|
+
description: "Diablo Nemesis XF, the final boss top of Metal Fight Beyblade Zero-G. Auction closed with a winning bidder.",
|
|
196
|
+
categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
|
|
197
|
+
categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
|
|
198
|
+
brandSlug: "brand-takara-tomy",
|
|
199
|
+
brand: "Takara-Tomy",
|
|
200
|
+
startingBid: 3499,
|
|
201
|
+
currentBid: 6200,
|
|
202
|
+
currency: "INR",
|
|
203
|
+
auctionEndDate: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000),
|
|
204
|
+
bidCount: 6,
|
|
205
|
+
bidsHaveStarted: true,
|
|
206
|
+
leadingBidderId: "user-rohit-collector",
|
|
207
|
+
isSold: true,
|
|
208
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-1-20260810/900/900"),
|
|
209
|
+
images: [
|
|
210
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-1-20260810/900/900"),
|
|
211
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-2-20260810/900/900"),
|
|
212
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-metal-diablo-nemesis-3-20260810/900/900"),
|
|
213
|
+
],
|
|
214
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
215
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
|
|
216
|
+
tags: ["attack-type", "tournament-grade"],
|
|
217
|
+
specifications: [
|
|
218
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
219
|
+
{ name: "Type", value: "Attack" },
|
|
220
|
+
{ name: "Weight", value: "58.9", unit: "g" },
|
|
221
|
+
{ name: "Track & Bottom", value: "XF (Xtreme Fusion)" },
|
|
222
|
+
],
|
|
223
|
+
storeId: "store-beyblade-arena",
|
|
224
|
+
storeName: "Beyblade Arena",
|
|
225
|
+
createdAt: new Date("2026-08-01"),
|
|
226
|
+
updatedAt: new Date("2026-08-10"),
|
|
227
|
+
},
|
|
228
|
+
// --- Additional active auctions, varied end dates + bid activity ---
|
|
229
|
+
{
|
|
230
|
+
id: "auction-beyblade-burst-cho-z-achilles",
|
|
231
|
+
slug: "auction-beyblade-burst-cho-z-achilles",
|
|
232
|
+
title: "Beyblade Burst B-100 Cho-Z Achilles",
|
|
233
|
+
description: "Cho-Z Achilles.Ow.Zn', a Super Zeta stamina-type top from the Cho-Z generation, in excellent spinning condition.",
|
|
234
|
+
categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
|
|
235
|
+
categoryNames: ["Beyblade Burst", "Spinning Tops"],
|
|
236
|
+
brandSlug: "brand-beyblade",
|
|
237
|
+
brand: "Beyblade",
|
|
238
|
+
startingBid: 1199,
|
|
239
|
+
buyNowPrice: 2499,
|
|
240
|
+
currentBid: 1650,
|
|
241
|
+
currency: "INR",
|
|
242
|
+
auctionEndDate: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000),
|
|
243
|
+
bidCount: 2,
|
|
244
|
+
bidsHaveStarted: true,
|
|
245
|
+
isSold: false,
|
|
246
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-1-20260815/900/900"),
|
|
247
|
+
images: [
|
|
248
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-1-20260815/900/900"),
|
|
249
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-burst-cho-z-achilles-2-20260815/900/900"),
|
|
250
|
+
],
|
|
251
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
252
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
|
|
253
|
+
tags: ["stamina-type"],
|
|
254
|
+
specifications: [
|
|
255
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
256
|
+
{ name: "Type", value: "Stamina" },
|
|
257
|
+
{ name: "Weight", value: "29.8", unit: "g" },
|
|
258
|
+
{ name: "Layer / Disc / Driver", value: "Cho-Z Achilles / .Ow / Zn'" },
|
|
259
|
+
],
|
|
260
|
+
storeId: "store-beyblade-arena",
|
|
261
|
+
storeName: "Beyblade Arena",
|
|
262
|
+
createdAt: new Date("2026-08-15"),
|
|
263
|
+
updatedAt: new Date("2026-08-18"),
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: "auction-beyblade-x-wizard-fafnir",
|
|
267
|
+
slug: "auction-beyblade-x-wizard-fafnir",
|
|
268
|
+
title: "Beyblade X BX-06 Wizard Fafnir (Long-Running Auction)",
|
|
269
|
+
description: "Wizard Fafnir 4-60F, one week left on the clock — a rare Beyblade X chase top with active bidding.",
|
|
270
|
+
categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
|
|
271
|
+
categoryNames: ["Beyblade X", "Spinning Tops"],
|
|
272
|
+
brandSlug: "brand-takara-tomy",
|
|
273
|
+
brand: "Takara-Tomy",
|
|
274
|
+
startingBid: 999,
|
|
275
|
+
currentBid: 1450,
|
|
276
|
+
currency: "INR",
|
|
277
|
+
auctionEndDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000),
|
|
278
|
+
bidCount: 3,
|
|
279
|
+
bidsHaveStarted: true,
|
|
280
|
+
isSold: false,
|
|
281
|
+
mainImage: seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-1-20260816/900/900"),
|
|
282
|
+
images: [
|
|
283
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-1-20260816/900/900"),
|
|
284
|
+
seedExtMedia("https://picsum.photos/seed/auction-image-beyblade-x-wizard-fafnir-2-20260816/900/900"),
|
|
285
|
+
],
|
|
286
|
+
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
287
|
+
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
288
|
+
tags: ["balance-type"],
|
|
289
|
+
specifications: [
|
|
290
|
+
{ name: "Spin Direction", value: "Right (Right-Spin)" },
|
|
291
|
+
{ name: "Type", value: "Balance" },
|
|
292
|
+
{ name: "Weight", value: "38.4", unit: "g" },
|
|
293
|
+
{ name: "Blade / Ratchet / Bit", value: "Wizard Fafnir / 4-60 / Flat" },
|
|
294
|
+
],
|
|
295
|
+
storeId: "store-beyblade-arena",
|
|
296
|
+
storeName: "Beyblade Arena",
|
|
297
|
+
createdAt: new Date("2026-08-16"),
|
|
298
|
+
updatedAt: new Date("2026-08-19"),
|
|
299
|
+
},
|
|
91
300
|
];
|
|
92
301
|
export const productsAuctionsSeedData = [
|
|
93
302
|
..._rawProductsAuctionsSeedData.map((a) => withTokens({
|