@mohasinac/appkit 2.8.6 → 2.8.8

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 (62) hide show
  1. package/dist/_internal/server/features/checkout/actions.js +9 -9
  2. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +1 -1
  3. package/dist/_internal/shared/listing-types/action-tracker.js +1 -1
  4. package/dist/client.d.ts +2 -0
  5. package/dist/client.js +1 -0
  6. package/dist/constants/api-endpoints.d.ts +3 -0
  7. package/dist/constants/api-endpoints.js +1 -0
  8. package/dist/core/hooks/useSyncManager.js +4 -4
  9. package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
  10. package/dist/features/admin/components/AdminSupportTicketDetailView.js +4 -4
  11. package/dist/features/blog/api/[slug]/route.js +1 -1
  12. package/dist/features/categories/components/CategoryDetailPageView.js +3 -1
  13. package/dist/features/layout/TitleBarLayout.js +2 -4
  14. package/dist/features/media/MediaImage.js +7 -5
  15. package/dist/features/media/MediaVideo.js +5 -2
  16. package/dist/features/media/upload/MediaUploadField.js +3 -1
  17. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +3 -1
  18. package/dist/features/products/components/ShareButton.js +1 -1
  19. package/dist/features/products/components/ShowGroupSection.js +1 -1
  20. package/dist/features/products/components/SublistingCarouselSection.js +1 -1
  21. package/dist/features/promotions/components/CouponCard.js +1 -1
  22. package/dist/features/scams/actions/scam-actions.js +1 -1
  23. package/dist/features/seller/components/PhysicalLocationModal.js +5 -1
  24. package/dist/features/seller/components/SellerFeaturesView.js +2 -2
  25. package/dist/features/seller/components/SellerGoogleReviewsView.js +1 -1
  26. package/dist/features/seller/components/SellerPayoutRequestView.js +1 -1
  27. package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
  28. package/dist/features/seller/components/SellerProductShell.js +1 -1
  29. package/dist/features/seller/components/SellerShippingView.js +1 -1
  30. package/dist/features/wishlist/hooks/useWishlistCount.js +1 -1
  31. package/dist/monitoring/server-logger.js +3 -3
  32. package/dist/providers/db-firebase/browser-stub.d.ts +1 -0
  33. package/dist/providers/db-firebase/browser-stub.js +1 -0
  34. package/dist/providers/db-firebase/rtdb-paths.d.ts +1 -0
  35. package/dist/providers/db-firebase/rtdb-paths.js +1 -0
  36. package/dist/seed/_helpers/media.d.ts +1 -0
  37. package/dist/seed/_helpers/media.js +26 -0
  38. package/dist/seed/blog-posts-seed-data.js +12 -11
  39. package/dist/seed/carousel-slides-seed-data.js +7 -6
  40. package/dist/seed/cart-seed-data.js +13 -12
  41. package/dist/seed/categories-seed-data.js +95 -94
  42. package/dist/seed/events-seed-data.js +9 -8
  43. package/dist/seed/factories/product.factory.js +4 -3
  44. package/dist/seed/factories/store.factory.js +3 -2
  45. package/dist/seed/factories/user.factory.js +2 -1
  46. package/dist/seed/grouped-listings-seed-data.js +4 -3
  47. package/dist/seed/homepage-sections-seed-data.js +2 -1
  48. package/dist/seed/products-auctions-seed-data.js +57 -56
  49. package/dist/seed/products-classifieds-seed-data.js +12 -11
  50. package/dist/seed/products-digital-codes-seed-data.js +11 -10
  51. package/dist/seed/products-live-items-seed-data.js +9 -8
  52. package/dist/seed/products-preorders-seed-data.js +6 -5
  53. package/dist/seed/products-prize-draws-seed-data.js +25 -24
  54. package/dist/seed/products-standard-seed-data.js +125 -124
  55. package/dist/seed/scammers-seed-data.js +2 -1
  56. package/dist/seed/site-settings-seed-data.js +6 -5
  57. package/dist/seed/store-extensions-seed-data.js +10 -9
  58. package/dist/seed/stores-seed-data.js +17 -16
  59. package/dist/seed/users-seed-data.js +22 -21
  60. package/dist/ui/components/BackgroundRenderer.js +6 -4
  61. package/dist/ui/rich-text/RichText.js +1 -1
  62. package/package.json +1 -1
@@ -13,6 +13,7 @@
13
13
  * @tag sideEffects:none
14
14
  */
15
15
  import { SCAMMER_FIELDS } from "../constants/field-names";
16
+ import { seedExtMedia } from "./_helpers/media";
16
17
  const NOW = new Date("2026-05-10T00:00:00.000Z");
17
18
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
18
19
  export const scammersSeedData = [
@@ -33,7 +34,7 @@ export const scammersSeedData = [
33
34
  description: "Seller listed a Blue-Eyes White Dragon LOB 1st Edition PSA 9 on a Facebook group for ₹25,000 — significantly below market. When I messaged, he asked for ₹5,000 advance to 'hold' the card before shipping. After I paid via UPI (9876543210@paytm), he went silent. The account name on UPI matched 'YGO King'. Later found 2 more people in the same group who had the same experience with the same UPI ID.",
34
35
  amountLost: 500000,
35
36
  itemInvolved: "Blue-Eyes White Dragon LOB 1st Edition PSA 9 (Yu-Gi-Oh!)",
36
- evidence: ["/media/scammer-evidence-ygoking-chat-screenshot-20260402.jpg"],
37
+ evidence: [seedExtMedia("https://picsum.photos/seed/scammer-evidence-ygoking-chat-screenshot-20260402/800/600")],
37
38
  reportedBy: "user-yugi-muto",
38
39
  reportedByAnon: false,
39
40
  status: SCAMMER_FIELDS.STATUS_VALUES.VERIFIED,
@@ -15,6 +15,7 @@
15
15
  import { getDefaultPhonePrefix, getSeedLocale } from "./seed-market-config";
16
16
  const _phonePrefix = getDefaultPhonePrefix();
17
17
  const _locale = getSeedLocale();
18
+ import { seedExtMedia } from "./_helpers/media";
18
19
  const NOW = new Date();
19
20
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
20
21
  const adPlacementsSeed = [
@@ -123,7 +124,7 @@ export const siteSettingsSeedData = {
123
124
  "pre-order konami",
124
125
  "duel monsters cards",
125
126
  ],
126
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
127
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
127
128
  },
128
129
  features: [
129
130
  {
@@ -287,7 +288,7 @@ export const siteSettingsSeedData = {
287
288
  placements: adPlacementsSeed,
288
289
  providerCredentials: {
289
290
  adsenseClientId: "ca-pub-0000000000000000",
290
- thirdPartyScriptUrl: "https://cdn.example-ads.com/ad-runtime.js",
291
+ thirdPartyScriptUrl: seedExtMedia("https://cdn.example-ads.com/ad-runtime.js"),
291
292
  },
292
293
  inventory: [
293
294
  {
@@ -304,7 +305,7 @@ export const siteSettingsSeedData = {
304
305
  creative: {
305
306
  title: "LOB 1st Edition Mega Drop",
306
307
  body: "Limited Legend of Blue Eyes singles and sealed packs — this weekend only.",
307
- imageUrl: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
308
+ imageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
308
309
  ctaLabel: "Explore Deals",
309
310
  ctaHref: "/promotions/deals",
310
311
  },
@@ -323,7 +324,7 @@ export const siteSettingsSeedData = {
323
324
  creative: {
324
325
  title: "Graded Slab Auctions",
325
326
  body: "PSA 10 Blue-Eyes and Dark Magician auctions ending this week.",
326
- imageUrl: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
327
+ imageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
327
328
  ctaLabel: "View Auctions",
328
329
  ctaHref: "/auctions",
329
330
  },
@@ -344,7 +345,7 @@ export const siteSettingsSeedData = {
344
345
  creative: {
345
346
  title: "Complete Your Exodia",
346
347
  body: "All 5 Forbidden One pieces available — LOB to modern reprints.",
347
- imageUrl: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
348
+ imageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
348
349
  ctaLabel: "Browse Exodia",
349
350
  ctaHref: "/products?q=exodia",
350
351
  },
@@ -16,6 +16,7 @@
16
16
  * @tag consumers:seed/index.ts,seed/runner.ts,SeedPanel
17
17
  * @tag sideEffects:none
18
18
  */
19
+ import { seedExtMedia } from "./_helpers/media";
19
20
  const NOW = new Date();
20
21
  // ───── payoutMethods (4 records) ──────────────────────────────────────────
21
22
  export const payoutMethodsSeedData = [
@@ -131,10 +132,10 @@ export const analyticsAlertsSeedData = [
131
132
  ];
132
133
  // ───── storeCategories (4 records) ────────────────────────────────────────
133
134
  export const storeCategoriesSeedData = [
134
- { id: "scat-kaiba-lob-singles", storeId: "store-kaiba-corp-cards", label: "LOB Singles", slug: "lob-singles", displayOrder: 0, productIds: [], isActive: true, description: "Legend of Blue Eyes White Dragon singles.", coverImageUrl: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg" },
135
- { id: "scat-kaiba-graded-slabs", storeId: "store-kaiba-corp-cards", label: "Graded Slabs", slug: "graded-slabs", displayOrder: 1, productIds: [], isActive: true, description: "PSA, BGS, and CGC graded Yu-Gi-Oh! slabs.", coverImageUrl: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg" },
136
- { id: "scat-letitrip-sealed", storeId: "store-letitrip-official", label: "Sealed Products", slug: "sealed-products", displayOrder: 0, productIds: [], isActive: true, description: "Factory-sealed booster boxes, tins, and structure decks.", coverImageUrl: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg" },
137
- { id: "scat-letitrip-accessories", storeId: "store-letitrip-official", label: "Accessories", slug: "accessories", displayOrder: 1, productIds: [], isActive: true, description: "Deck boxes, sleeves, playmats, and binders.", coverImageUrl: "https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg" },
135
+ { id: "scat-kaiba-lob-singles", storeId: "store-kaiba-corp-cards", label: "LOB Singles", slug: "lob-singles", displayOrder: 0, productIds: [], isActive: true, description: "Legend of Blue Eyes White Dragon singles.", coverImageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg") },
136
+ { id: "scat-kaiba-graded-slabs", storeId: "store-kaiba-corp-cards", label: "Graded Slabs", slug: "graded-slabs", displayOrder: 1, productIds: [], isActive: true, description: "PSA, BGS, and CGC graded Yu-Gi-Oh! slabs.", coverImageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg") },
137
+ { id: "scat-letitrip-sealed", storeId: "store-letitrip-official", label: "Sealed Products", slug: "sealed-products", displayOrder: 0, productIds: [], isActive: true, description: "Factory-sealed booster boxes, tins, and structure decks.", coverImageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg") },
138
+ { id: "scat-letitrip-accessories", storeId: "store-letitrip-official", label: "Accessories", slug: "accessories", displayOrder: 1, productIds: [], isActive: true, description: "Deck boxes, sleeves, playmats, and binders.", coverImageUrl: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg") },
138
139
  ];
139
140
  // ───── listingTemplates (4 records) ───────────────────────────────────────
140
141
  export const listingTemplatesSeedData = [
@@ -189,9 +190,9 @@ export const moderationQueueSeedData = [
189
190
  { id: "mod-video-blue-eyes-auction", mediaType: "video", mediaUrl: "/media/product-video-blue-eyes-lob-psa10-20260518.mp4", entityType: "product", entityId: "auction-blue-eyes-lob-1st-psa10", ownerId: "user-seto-kaiba", storeId: "store-kaiba-corp-cards", status: "pending", submittedAt: new Date(NOW.getTime() - 3600000) },
190
191
  { id: "mod-video-dark-magician-unbox", mediaType: "video", mediaUrl: "/media/product-video-dark-magician-lob-20260518.mp4", entityType: "product", entityId: "product-dark-magician-lob-nm", ownerId: "user-seto-kaiba", storeId: "store-kaiba-corp-cards", status: "pending", submittedAt: new Date(NOW.getTime() - 7200000) },
191
192
  { id: "mod-review-exodia", mediaType: "rich-text", entityType: "review", entityId: "review-exodia-head-yugi-20260510", ownerId: "user-yugi-muto", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
192
- { id: "mod-image-kaiba-banner", mediaType: "image", mediaUrl: "/media/store-banner-kaiba-corp-cards-20260518.jpg", entityType: "storefront", entityId: "store-kaiba-corp-cards", ownerId: "user-seto-kaiba", storeId: "store-kaiba-corp-cards", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 172800000) },
193
+ { id: "mod-image-kaiba-banner", mediaType: "image", mediaUrl: seedExtMedia("https://picsum.photos/seed/store-banner-kaiba-corp-cards-20260518/1600/400"), entityType: "storefront", entityId: "store-kaiba-corp-cards", ownerId: "user-seto-kaiba", storeId: "store-kaiba-corp-cards", status: "auto-approved", submittedAt: new Date(NOW.getTime() - 172800000) },
193
194
  { id: "mod-blog-grading-guide", mediaType: "rich-text", entityType: "blog", entityId: "blog-how-to-grade-yugioh-cards", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 432000000), submittedAt: new Date(NOW.getTime() - 438000000) },
194
- { id: "mod-event-cover-tournament", mediaType: "image", mediaUrl: "/media/event-cover-ygo-duel-championship-20260518.jpg", entityType: "event", entityId: "event-ygo-duel-championship-june-2026", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
195
+ { id: "mod-event-cover-tournament", mediaType: "image", mediaUrl: seedExtMedia("https://picsum.photos/seed/event-cover-ygo-duel-championship-20260518/1200/600"), entityType: "event", entityId: "event-ygo-duel-championship-june-2026", ownerId: "user-admin-letitrip", status: "approved", reviewerId: "user-admin-letitrip", reviewedAt: new Date(NOW.getTime() - 86400000), submittedAt: new Date(NOW.getTime() - 90000000) },
195
196
  ];
196
197
  // ───── reports (5 records) ────────────────────────────────────────────────
197
198
  export const reportsSeedData = [
@@ -212,7 +213,7 @@ export const itemRequestsSeedData = [
212
213
  category: "trading-cards",
213
214
  brand: "konami",
214
215
  maxBudgetInPaise: 25000000,
215
- imageUrls: ["https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"],
216
+ imageUrls: [seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg")],
216
217
  status: "open",
217
218
  replyCount: 2,
218
219
  replies: [],
@@ -228,7 +229,7 @@ export const itemRequestsSeedData = [
228
229
  category: "trading-cards",
229
230
  brand: "konami",
230
231
  maxBudgetInPaise: 15000000,
231
- imageUrls: ["https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"],
232
+ imageUrls: [seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg")],
232
233
  status: "open",
233
234
  replyCount: 0,
234
235
  replies: [],
@@ -244,7 +245,7 @@ export const itemRequestsSeedData = [
244
245
  category: "trading-cards",
245
246
  brand: "konami",
246
247
  maxBudgetInPaise: 1500000,
247
- imageUrls: ["https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"],
248
+ imageUrls: [seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg")],
248
249
  status: "fulfilled",
249
250
  replyCount: 4,
250
251
  replies: [],
@@ -15,6 +15,7 @@
15
15
  * @tag sideEffects:none
16
16
  */
17
17
  import { STORE_FIELDS } from "../constants/field-names";
18
+ import { seedExtMedia } from "./_helpers/media";
18
19
  const NOW = new Date();
19
20
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
20
21
  export const storesSeedData = [
@@ -26,8 +27,8 @@ export const storesSeedData = [
26
27
  storeName: "LetItRip Official",
27
28
  storeDescription: "The official LetItRip curated store. Hand-picked premium Yu-Gi-Oh! collectibles — authenticated graded slabs, Egyptian God cards, sealed vintage product, and rare 1st Edition singles. Every item personally inspected.",
28
29
  storeCategory: "category-singles",
29
- storeLogoURL: "https://images.ygoprodeck.com/images/cards/small/10000015.jpg",
30
- storeBannerURL: "https://images.ygoprodeck.com/images/cards/cropped/10000015.jpg",
30
+ storeLogoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/10000015.jpg"),
31
+ storeBannerURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/10000015.jpg"),
31
32
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
32
33
  bio: "Curated by the LetItRip team. All cards authenticated and graded by PSA/BGS/CGC before listing. Fast dispatch, collector-grade packaging.",
33
34
  location: "Mumbai, Maharashtra, India",
@@ -104,8 +105,8 @@ export const storesSeedData = [
104
105
  storeName: "Kaiba Corp Card Vault",
105
106
  storeDescription: "The definitive Yu-Gi-Oh! card store by Seto Kaiba. Massive inventory of Duel Monsters era singles, GX era cards, graded slabs, sealed booster boxes, accessories, and rare collectibles. Authenticated and documented.",
106
107
  storeCategory: "category-singles",
107
- storeLogoURL: "https://images.ygoprodeck.com/images/cards/small/23995346.jpg",
108
- storeBannerURL: "https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg",
108
+ storeLogoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/23995346.jpg"),
109
+ storeBannerURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg"),
109
110
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
110
111
  bio: "CEO of Kaiba Corp. My vault contains the finest YGO cards in the world. Every card authenticated, graded, and catalogued. Blue-Eyes White Dragon specialist.",
111
112
  location: "Domino City, Japan",
@@ -177,8 +178,8 @@ export const storesSeedData = [
177
178
  storeName: "Pokémon Palace",
178
179
  storeDescription: "India's top Pokémon TCG store. Booster packs, Elite Trainer Boxes, singles, graded slabs, and Japanese exclusives. Base Set to Scarlet & Violet — if it's Pokémon, we've got it.",
179
180
  storeCategory: "category-pokemon-tcg",
180
- storeLogoURL: "/media/store-logo-pokemon-palace-20260101.jpg",
181
- storeBannerURL: "/media/store-banner-pokemon-palace-20260101.jpg",
181
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-pokemon-palace-20260101/400/400"),
182
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-pokemon-palace-20260101/1600/400"),
182
183
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
183
184
  bio: "Pokémon Master turned seller. Building the largest Pokémon TCG collection marketplace in India.",
184
185
  location: "Bengaluru, Karnataka, India",
@@ -207,8 +208,8 @@ export const storesSeedData = [
207
208
  storeName: "CardGame Hub",
208
209
  storeDescription: "Multi-TCG collectibles store. Yu-Gi-Oh!, Pokémon, One Piece, Dragon Ball Super, and Cardfight!! Vanguard. Singles, sealed product, and tournament accessories.",
209
210
  storeCategory: "category-trading-cards",
210
- storeLogoURL: "/media/store-logo-cardgame-hub-20260101.jpg",
211
- storeBannerURL: "/media/store-banner-cardgame-hub-20260101.jpg",
211
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-cardgame-hub-20260101/400/400"),
212
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-cardgame-hub-20260101/1600/400"),
212
213
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
213
214
  bio: "TCG enthusiast since 2010. Running local tournaments and selling authentic cards from my personal collection and distributor stock.",
214
215
  location: "Hyderabad, Telangana, India",
@@ -236,8 +237,8 @@ export const storesSeedData = [
236
237
  storeName: "Diecast Depot",
237
238
  storeDescription: "India's premier diecast collectibles store. Hot Wheels mainline, Premium, Treasure Hunts, Super TH, Tomica, Matchbox, and Maisto. New arrivals every week.",
238
239
  storeCategory: "category-diecast-vehicles",
239
- storeLogoURL: "/media/store-logo-diecast-depot-20260101.jpg",
240
- storeBannerURL: "/media/store-banner-diecast-depot-20260101.jpg",
240
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-diecast-depot-20260101/400/400"),
241
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-diecast-depot-20260101/1600/400"),
241
242
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
242
243
  bio: "Collecting diecast since 1998. Over 5,000 Hot Wheels in my personal collection. Now sharing the hobby with collectors across India.",
243
244
  location: "Delhi, NCR, India",
@@ -265,8 +266,8 @@ export const storesSeedData = [
265
266
  storeName: "Beyblade Arena",
266
267
  storeDescription: "Everything Beyblade — X, Burst, Metal Fight, and vintage original series. Takara-Tomy authentic stock, tournament-grade stadiums, launchers, and rare limited editions.",
267
268
  storeCategory: "category-spinning-tops",
268
- storeLogoURL: "/media/store-logo-beyblade-arena-20260101.jpg",
269
- storeBannerURL: "/media/store-banner-beyblade-arena-20260101.jpg",
269
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-beyblade-arena-20260101/400/400"),
270
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-beyblade-arena-20260101/1600/400"),
270
271
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
271
272
  bio: "Beyblade champion turned seller. Importing authentic Takara-Tomy Beyblades directly from Japan. Let It Rip!",
272
273
  location: "Chennai, Tamil Nadu, India",
@@ -294,8 +295,8 @@ export const storesSeedData = [
294
295
  storeName: "Tokyo Toys India",
295
296
  storeDescription: "Anime figures and model kits imported from Japan. Nendoroid, S.H.Figuarts, figma, Funko Pop, and scale figures. Plus Gunpla and 30 Minutes Missions kits.",
296
297
  storeCategory: "category-action-figures",
297
- storeLogoURL: "/media/store-logo-tokyo-toys-india-20260101.jpg",
298
- storeBannerURL: "/media/store-banner-tokyo-toys-india-20260101.jpg",
298
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-tokyo-toys-india-20260101/400/400"),
299
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-tokyo-toys-india-20260101/1600/400"),
299
300
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
300
301
  bio: "Direct imports from Akihabara and Nipponbashi. Authentic figures with original Japanese packaging. No bootlegs, ever.",
301
302
  location: "Pune, Maharashtra, India",
@@ -325,8 +326,8 @@ export const storesSeedData = [
325
326
  storeName: "Gundam Galaxy",
326
327
  storeDescription: "Gunpla and mecha model kits — HG, RG, MG, PG, SD grades by Bandai, plus Frame Arms by Kotobukiya and 30 Minutes Missions. Tools, paints, and accessories.",
327
328
  storeCategory: "category-model-kits",
328
- storeLogoURL: "/media/store-logo-gundam-galaxy-20260101.jpg",
329
- storeBannerURL: "/media/store-banner-gundam-galaxy-20260101.jpg",
329
+ storeLogoURL: seedExtMedia("https://picsum.photos/seed/store-logo-gundam-galaxy-20260101/400/400"),
330
+ storeBannerURL: seedExtMedia("https://picsum.photos/seed/store-banner-gundam-galaxy-20260101/1600/400"),
330
331
  status: STORE_FIELDS.STATUS_VALUES.ACTIVE,
331
332
  bio: "Building Gunpla since 2005. Over 200 kits built. Importing directly from Bandai Hobby distributors in Japan and Hong Kong.",
332
333
  location: "Kolkata, West Bengal, India",
@@ -15,6 +15,7 @@
15
15
  */
16
16
  import { getDefaultPhonePrefix } from "./seed-market-config";
17
17
  import { USER_FIELDS } from "../constants/field-names";
18
+ import { seedExtMedia } from "./_helpers/media";
18
19
  const _ph = getDefaultPhonePrefix();
19
20
  const NOW = new Date();
20
21
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
@@ -26,9 +27,9 @@ export const usersSeedData = [
26
27
  phoneNumber: `${_ph}9999900000`,
27
28
  phoneVerified: true,
28
29
  displayName: "LetItRip Admin",
29
- photoURL: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
30
+ photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
30
31
  avatarMetadata: {
31
- url: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
32
+ url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
32
33
  position: { x: 50, y: 50 },
33
34
  zoom: 1.0,
34
35
  },
@@ -65,9 +66,9 @@ export const usersSeedData = [
65
66
  phoneNumber: `${_ph}9999900001`,
66
67
  phoneVerified: true,
67
68
  displayName: "Seto Kaiba",
68
- photoURL: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
69
+ photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
69
70
  avatarMetadata: {
70
- url: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
71
+ url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
71
72
  position: { x: 50, y: 50 },
72
73
  zoom: 1.0,
73
74
  },
@@ -105,9 +106,9 @@ export const usersSeedData = [
105
106
  phoneNumber: `${_ph}9999900002`,
106
107
  phoneVerified: true,
107
108
  displayName: "Yugi Muto",
108
- photoURL: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
109
+ photoURL: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
109
110
  avatarMetadata: {
110
- url: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
111
+ url: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
111
112
  position: { x: 50, y: 50 },
112
113
  zoom: 1.0,
113
114
  },
@@ -140,7 +141,7 @@ export const usersSeedData = [
140
141
  phoneNumber: `${_ph}9999900003`,
141
142
  phoneVerified: true,
142
143
  displayName: "Ash Ketchum",
143
- photoURL: "/media/user-avatar-ash-ketchum-20260101.jpg",
144
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ash-ketchum-20260101/400/400"),
144
145
  role: USER_FIELDS.ROLE_VALUES.SELLER,
145
146
  emailVerified: true,
146
147
  disabled: false,
@@ -170,7 +171,7 @@ export const usersSeedData = [
170
171
  phoneNumber: `${_ph}9999900004`,
171
172
  phoneVerified: true,
172
173
  displayName: "Priya Sharma",
173
- photoURL: "/media/user-avatar-priya-sharma-20260101.jpg",
174
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-priya-sharma-20260101/400/400"),
174
175
  role: USER_FIELDS.ROLE_VALUES.SELLER,
175
176
  emailVerified: true,
176
177
  disabled: false,
@@ -200,7 +201,7 @@ export const usersSeedData = [
200
201
  phoneNumber: `${_ph}9999900005`,
201
202
  phoneVerified: true,
202
203
  displayName: "Ravi Kumar",
203
- photoURL: "/media/user-avatar-ravi-kumar-20260101.jpg",
204
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ravi-kumar-20260101/400/400"),
204
205
  role: USER_FIELDS.ROLE_VALUES.SELLER,
205
206
  emailVerified: true,
206
207
  disabled: false,
@@ -230,7 +231,7 @@ export const usersSeedData = [
230
231
  phoneNumber: `${_ph}9999900006`,
231
232
  phoneVerified: true,
232
233
  displayName: "Tyson Granger",
233
- photoURL: "/media/user-avatar-tyson-granger-20260101.jpg",
234
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-tyson-granger-20260101/400/400"),
234
235
  role: USER_FIELDS.ROLE_VALUES.SELLER,
235
236
  emailVerified: true,
236
237
  disabled: false,
@@ -260,7 +261,7 @@ export const usersSeedData = [
260
261
  phoneNumber: `${_ph}9999900007`,
261
262
  phoneVerified: true,
262
263
  displayName: "Megumi Tanaka",
263
- photoURL: "/media/user-avatar-megumi-tanaka-20260101.jpg",
264
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-megumi-tanaka-20260101/400/400"),
264
265
  role: USER_FIELDS.ROLE_VALUES.SELLER,
265
266
  emailVerified: true,
266
267
  disabled: false,
@@ -290,7 +291,7 @@ export const usersSeedData = [
290
291
  phoneNumber: `${_ph}9999900008`,
291
292
  phoneVerified: true,
292
293
  displayName: "Amuro Ray",
293
- photoURL: "/media/user-avatar-amuro-ray-20260101.jpg",
294
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-amuro-ray-20260101/400/400"),
294
295
  role: USER_FIELDS.ROLE_VALUES.SELLER,
295
296
  emailVerified: true,
296
297
  disabled: false,
@@ -320,7 +321,7 @@ export const usersSeedData = [
320
321
  phoneNumber: `${_ph}9999900009`,
321
322
  phoneVerified: true,
322
323
  displayName: "Ananya Patel",
323
- photoURL: "/media/user-avatar-ananya-patel-20260101.jpg",
324
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-ananya-patel-20260101/400/400"),
324
325
  role: USER_FIELDS.ROLE_VALUES.USER,
325
326
  emailVerified: true,
326
327
  disabled: false,
@@ -345,7 +346,7 @@ export const usersSeedData = [
345
346
  phoneNumber: `${_ph}9999900010`,
346
347
  phoneVerified: true,
347
348
  displayName: "Vikram Singh",
348
- photoURL: "/media/user-avatar-vikram-singh-20260101.jpg",
349
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-vikram-singh-20260101/400/400"),
349
350
  role: USER_FIELDS.ROLE_VALUES.USER,
350
351
  emailVerified: true,
351
352
  disabled: false,
@@ -370,7 +371,7 @@ export const usersSeedData = [
370
371
  phoneNumber: `${_ph}9999900011`,
371
372
  phoneVerified: true,
372
373
  displayName: "Meera Nair",
373
- photoURL: "/media/user-avatar-meera-nair-20260101.jpg",
374
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-meera-nair-20260101/400/400"),
374
375
  role: USER_FIELDS.ROLE_VALUES.USER,
375
376
  emailVerified: true,
376
377
  disabled: false,
@@ -395,7 +396,7 @@ export const usersSeedData = [
395
396
  phoneNumber: `${_ph}9999900012`,
396
397
  phoneVerified: true,
397
398
  displayName: "Arjun Reddy",
398
- photoURL: "/media/user-avatar-arjun-reddy-20260101.jpg",
399
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-arjun-reddy-20260101/400/400"),
399
400
  role: USER_FIELDS.ROLE_VALUES.USER,
400
401
  emailVerified: true,
401
402
  disabled: false,
@@ -420,7 +421,7 @@ export const usersSeedData = [
420
421
  phoneNumber: `${_ph}9999900013`,
421
422
  phoneVerified: true,
422
423
  displayName: "Sneha Gupta",
423
- photoURL: "/media/user-avatar-sneha-gupta-20260101.jpg",
424
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-sneha-gupta-20260101/400/400"),
424
425
  role: USER_FIELDS.ROLE_VALUES.USER,
425
426
  emailVerified: true,
426
427
  disabled: false,
@@ -445,7 +446,7 @@ export const usersSeedData = [
445
446
  phoneNumber: `${_ph}9999900014`,
446
447
  phoneVerified: true,
447
448
  displayName: "Rohit Agarwal",
448
- photoURL: "/media/user-avatar-rohit-agarwal-20260101.jpg",
449
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-rohit-agarwal-20260101/400/400"),
449
450
  role: USER_FIELDS.ROLE_VALUES.USER,
450
451
  emailVerified: true,
451
452
  disabled: false,
@@ -470,7 +471,7 @@ export const usersSeedData = [
470
471
  phoneNumber: `${_ph}9999900015`,
471
472
  phoneVerified: true,
472
473
  displayName: "Divya Menon",
473
- photoURL: "/media/user-avatar-divya-menon-20260101.jpg",
474
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-divya-menon-20260101/400/400"),
474
475
  role: USER_FIELDS.ROLE_VALUES.USER,
475
476
  emailVerified: true,
476
477
  disabled: false,
@@ -495,7 +496,7 @@ export const usersSeedData = [
495
496
  phoneNumber: `${_ph}9999900016`,
496
497
  phoneVerified: false,
497
498
  displayName: "Karthik Iyer",
498
- photoURL: "/media/user-avatar-karthik-iyer-20260101.jpg",
499
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-karthik-iyer-20260101/400/400"),
499
500
  role: USER_FIELDS.ROLE_VALUES.USER,
500
501
  emailVerified: true,
501
502
  disabled: false,
@@ -520,7 +521,7 @@ export const usersSeedData = [
520
521
  phoneNumber: `${_ph}9999900017`,
521
522
  phoneVerified: true,
522
523
  displayName: "Neha Joshi",
523
- photoURL: "/media/user-avatar-neha-joshi-20260101.jpg",
524
+ photoURL: seedExtMedia("https://picsum.photos/seed/user-avatar-neha-joshi-20260101/400/400"),
524
525
  role: USER_FIELDS.ROLE_VALUES.USER,
525
526
  emailVerified: true,
526
527
  disabled: false,
@@ -36,9 +36,11 @@ export function BackgroundRenderer({ mode, lightMode, darkMode, }) {
36
36
  opacity: config.overlay.opacity,
37
37
  }
38
38
  : { display: "none" };
39
- return (_jsxs(_Fragment, { children: ["// audit-inline-style-ok: computed style fn", _jsx("div", { className: "appkit-bg-renderer", style: getBackgroundStyle(), "data-section": "backgroundrenderer-div-456", children: config.type === "video" && (_jsxs("video", { ref: videoRef, autoPlay: true, loop: true, muted: true, playsInline: true, onLoadedData: () => setIsVideoLoaded(true), className: `appkit-bg-renderer__video ${isVideoLoaded
39
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "appkit-bg-renderer",
40
+ // audit-inline-style-ok: computed style fn
41
+ style: getBackgroundStyle(), "data-section": "backgroundrenderer-div-456", children: config.type === "video" && (_jsxs("video", { ref: videoRef, autoPlay: true, loop: true, muted: true, playsInline: true, onLoadedData: () => setIsVideoLoaded(true), className: `appkit-bg-renderer__video ${isVideoLoaded
40
42
  ? "appkit-bg-renderer__video--loaded"
41
- : "appkit-bg-renderer__video--loading"}`, children: [_jsx("source", { src: config.value, type: "video/mp4" }), "Your browser does not support the video tag."] })) })
42
- // audit-inline-style-ok: pass-through style prop
43
- , "// audit-inline-style-ok: pass-through style prop", _jsx("div", { className: "appkit-bg-renderer__overlay", style: overlayStyle })] }));
43
+ : "appkit-bg-renderer__video--loading"}`, children: [_jsx("source", { src: config.value, type: "video/mp4" }), "Your browser does not support the video tag."] })) }), _jsx("div", { className: "appkit-bg-renderer__overlay",
44
+ // audit-inline-style-ok: pass-through style prop
45
+ style: overlayStyle })] }));
44
46
  }
@@ -150,7 +150,7 @@ function attachCopyButtons(container) {
150
150
  btn.textContent = "Copy";
151
151
  }, 1800);
152
152
  })
153
- .catch(() => { });
153
+ .catch(() => { }); // audit-silent-catch-ok: clipboard denial is non-fatal; "Copied!" label simply won't toggle
154
154
  });
155
155
  pre.appendChild(btn);
156
156
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mohasinac/appkit",
3
- "version": "2.8.6",
3
+ "version": "2.8.8",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"