@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
@@ -16,6 +16,7 @@
16
16
  * @tag sideEffects:none
17
17
  */
18
18
  import { CATEGORY_FIELDS } from "../constants/field-names";
19
+ import { seedExtMedia } from "./_helpers/media";
19
20
  const NOW = new Date();
20
21
  const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
21
22
  const emptyMetrics = {
@@ -70,11 +71,11 @@ const rawCategories = [
70
71
  title: "Yu-Gi-Oh! Singles | LetItRip",
71
72
  description: "Buy and sell individual Yu-Gi-Oh! cards — monsters, spells, traps, and extra deck cards. 1st Edition, unlimited, and graded slabs.",
72
73
  keywords: ["yugioh singles", "ygo cards", "duel monsters", "trading cards india"],
73
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
74
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
74
75
  },
75
76
  display: {
76
77
  icon: "🃏",
77
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
78
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
78
79
  color: "#7c3aed",
79
80
  showInMenu: true,
80
81
  showInFooter: true,
@@ -107,11 +108,11 @@ const rawCategories = [
107
108
  title: "Monster Cards | Yu-Gi-Oh! Singles | LetItRip",
108
109
  description: "Shop Yu-Gi-Oh! monster cards — Dark Magician, Blue-Eyes White Dragon, Jinzo, Gate Guardian, and more.",
109
110
  keywords: ["monster cards", "dark magician", "blue-eyes white dragon", "yugioh monsters"],
110
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
111
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
111
112
  },
112
113
  display: {
113
114
  icon: "⚔️",
114
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
115
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
115
116
  color: "#dc2626",
116
117
  showInMenu: true,
117
118
  showInFooter: false,
@@ -144,11 +145,11 @@ const rawCategories = [
144
145
  title: "Spell Cards | Yu-Gi-Oh! Singles | LetItRip",
145
146
  description: "Shop Yu-Gi-Oh! spell cards — Pot of Greed, Raigeki, Monster Reborn, Dark Hole, Change of Heart.",
146
147
  keywords: ["spell cards", "magic cards", "pot of greed", "raigeki", "yugioh spells"],
147
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg",
148
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg"),
148
149
  },
149
150
  display: {
150
151
  icon: "✨",
151
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg",
152
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg"),
152
153
  color: "#059669",
153
154
  showInMenu: true,
154
155
  showInFooter: false,
@@ -181,11 +182,11 @@ const rawCategories = [
181
182
  title: "Trap Cards | Yu-Gi-Oh! Singles | LetItRip",
182
183
  description: "Shop Yu-Gi-Oh! trap cards — Mirror Force, Torrential Tribute, Call of the Haunted.",
183
184
  keywords: ["trap cards", "mirror force", "torrential tribute", "yugioh traps"],
184
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg",
185
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg"),
185
186
  },
186
187
  display: {
187
188
  icon: "🪤",
188
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg",
189
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg"),
189
190
  color: "#9333ea",
190
191
  showInMenu: true,
191
192
  showInFooter: false,
@@ -218,11 +219,11 @@ const rawCategories = [
218
219
  title: "Extra Deck Cards | Yu-Gi-Oh! Singles | LetItRip",
219
220
  description: "Shop Yu-Gi-Oh! fusion monsters — Blue-Eyes Ultimate Dragon, Elemental HERO Flame Wingman, Five-Headed Dragon.",
220
221
  keywords: ["fusion monsters", "extra deck", "blue-eyes ultimate dragon", "yugioh fusion"],
221
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg",
222
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg"),
222
223
  },
223
224
  display: {
224
225
  icon: "🔀",
225
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg",
226
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/23995346.jpg"),
226
227
  color: "#ea580c",
227
228
  showInMenu: true,
228
229
  showInFooter: false,
@@ -262,11 +263,11 @@ const rawCategories = [
262
263
  title: "Sealed YGO Products | LetItRip",
263
264
  description: "Buy factory-sealed Yu-Gi-Oh! booster packs, boxes, tins, and decks. Authentic, unweighed, unopened.",
264
265
  keywords: ["sealed yugioh", "booster box", "starter deck", "collector tin", "yugioh sealed"],
265
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
266
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
266
267
  },
267
268
  display: {
268
269
  icon: "📦",
269
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
270
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
270
271
  color: "#2563eb",
271
272
  showInMenu: true,
272
273
  showInFooter: true,
@@ -296,7 +297,7 @@ const rawCategories = [
296
297
  isFeatured: false,
297
298
  isBrand: false,
298
299
  seo: { title: "Booster Packs | LetItRip", description: "Buy individual YGO booster packs.", keywords: ["booster pack", "yugioh pack"] },
299
- display: { icon: "🎴", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", color: "#1d4ed8", showInMenu: true, showInFooter: false },
300
+ display: { icon: "🎴", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), color: "#1d4ed8", showInMenu: true, showInFooter: false },
300
301
  isActive: true,
301
302
  isSearchable: true,
302
303
  showOnHomepage: false,
@@ -322,7 +323,7 @@ const rawCategories = [
322
323
  isFeatured: false,
323
324
  isBrand: false,
324
325
  seo: { title: "Booster Boxes | LetItRip", description: "Buy full YGO booster boxes (24 packs).", keywords: ["booster box", "yugioh box"] },
325
- display: { icon: "📫", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", color: "#1e40af", showInMenu: true, showInFooter: false },
326
+ display: { icon: "📫", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), color: "#1e40af", showInMenu: true, showInFooter: false },
326
327
  isActive: true,
327
328
  isSearchable: true,
328
329
  showOnHomepage: false,
@@ -348,7 +349,7 @@ const rawCategories = [
348
349
  isFeatured: false,
349
350
  isBrand: false,
350
351
  seo: { title: "Collector Tins | LetItRip", description: "Buy YGO collector tins with promo cards.", keywords: ["collector tin", "yugioh tin"] },
351
- display: { icon: "🗳️", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", color: "#1e3a8a", showInMenu: true, showInFooter: false },
352
+ display: { icon: "🗳️", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), color: "#1e3a8a", showInMenu: true, showInFooter: false },
352
353
  isActive: true,
353
354
  isSearchable: true,
354
355
  showOnHomepage: false,
@@ -374,7 +375,7 @@ const rawCategories = [
374
375
  isFeatured: false,
375
376
  isBrand: false,
376
377
  seo: { title: "Starter & Structure Decks | LetItRip", description: "Buy YGO starter and structure decks.", keywords: ["starter deck", "structure deck", "yugioh deck"] },
377
- display: { icon: "🗂️", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg", color: "#312e81", showInMenu: true, showInFooter: false },
378
+ display: { icon: "🗂️", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"), color: "#312e81", showInMenu: true, showInFooter: false },
378
379
  isActive: true,
379
380
  isSearchable: true,
380
381
  showOnHomepage: false,
@@ -410,11 +411,11 @@ const rawCategories = [
410
411
  title: "Graded YGO Cards | LetItRip",
411
412
  description: "Buy and sell professionally graded Yu-Gi-Oh! cards in PSA, BGS, and CGC slabs.",
412
413
  keywords: ["graded yugioh", "psa yugioh", "bgs yugioh", "cgc yugioh", "graded slab"],
413
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
414
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
414
415
  },
415
416
  display: {
416
417
  icon: "🏆",
417
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg",
418
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/33396948.jpg"),
418
419
  color: "#ca8a04",
419
420
  showInMenu: true,
420
421
  showInFooter: true,
@@ -444,7 +445,7 @@ const rawCategories = [
444
445
  isFeatured: false,
445
446
  isBrand: false,
446
447
  seo: { title: "PSA Graded YGO | LetItRip", description: "Shop PSA graded Yu-Gi-Oh! cards.", keywords: ["psa graded", "psa yugioh", "psa slab"] },
447
- display: { icon: "🔵", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", color: "#b45309", showInMenu: true, showInFooter: false },
448
+ display: { icon: "🔵", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), color: "#b45309", showInMenu: true, showInFooter: false },
448
449
  isActive: true,
449
450
  isSearchable: true,
450
451
  showOnHomepage: false,
@@ -470,7 +471,7 @@ const rawCategories = [
470
471
  isFeatured: false,
471
472
  isBrand: false,
472
473
  seo: { title: "BGS Graded YGO | LetItRip", description: "Shop BGS / Beckett graded Yu-Gi-Oh! cards.", keywords: ["bgs graded", "beckett yugioh", "bgs slab"] },
473
- display: { icon: "🟡", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg", color: "#92400e", showInMenu: true, showInFooter: false },
474
+ display: { icon: "🟡", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg"), color: "#92400e", showInMenu: true, showInFooter: false },
474
475
  isActive: true,
475
476
  isSearchable: true,
476
477
  showOnHomepage: false,
@@ -496,7 +497,7 @@ const rawCategories = [
496
497
  isFeatured: false,
497
498
  isBrand: false,
498
499
  seo: { title: "CGC Graded YGO | LetItRip", description: "Shop CGC graded Yu-Gi-Oh! cards.", keywords: ["cgc graded", "cgc yugioh", "cgc slab"] },
499
- display: { icon: "🟢", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/12580477.jpg", color: "#78350f", showInMenu: true, showInFooter: false },
500
+ display: { icon: "🟢", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/12580477.jpg"), color: "#78350f", showInMenu: true, showInFooter: false },
500
501
  isActive: true,
501
502
  isSearchable: true,
502
503
  showOnHomepage: false,
@@ -522,7 +523,7 @@ const rawCategories = [
522
523
  isFeatured: false,
523
524
  isBrand: false,
524
525
  seo: { title: "Raw NM YGO Cards | LetItRip", description: "Shop ungraded Near Mint Yu-Gi-Oh! cards.", keywords: ["raw nm", "near mint yugioh", "ungraded yugioh"] },
525
- display: { icon: "📋", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg", color: "#451a03", showInMenu: true, showInFooter: false },
526
+ display: { icon: "📋", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"), color: "#451a03", showInMenu: true, showInFooter: false },
526
527
  isActive: true,
527
528
  isSearchable: true,
528
529
  showOnHomepage: false,
@@ -558,11 +559,11 @@ const rawCategories = [
558
559
  title: "Duel Monsters Era YGO | LetItRip",
559
560
  description: "Shop Duel Monsters era (Season 1) Yu-Gi-Oh! cards — LOB, MRD, PSV, LON sets.",
560
561
  keywords: ["duel monsters era", "lob yugioh", "legend of blue eyes", "original yugioh"],
561
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
562
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
562
563
  },
563
564
  display: {
564
565
  icon: "⚡",
565
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
566
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
566
567
  color: "#1d4ed8",
567
568
  showInMenu: true,
568
569
  showInFooter: true,
@@ -592,7 +593,7 @@ const rawCategories = [
592
593
  isFeatured: false,
593
594
  isBrand: false,
594
595
  seo: { title: "LOB Cards | LetItRip", description: "Shop Legend of Blue Eyes White Dragon set cards.", keywords: ["lob", "legend of blue eyes", "lob 1st edition"] },
595
- display: { icon: "👁️", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", color: "#1e40af", showInMenu: true, showInFooter: false },
596
+ display: { icon: "👁️", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"), color: "#1e40af", showInMenu: true, showInFooter: false },
596
597
  isActive: true,
597
598
  isSearchable: true,
598
599
  showOnHomepage: false,
@@ -618,7 +619,7 @@ const rawCategories = [
618
619
  isFeatured: false,
619
620
  isBrand: false,
620
621
  seo: { title: "MRD Cards | LetItRip", description: "Shop Metal Raiders set cards.", keywords: ["mrd", "metal raiders", "mirror force"] },
621
- display: { icon: "🔩", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg", color: "#1e3a8a", showInMenu: true, showInFooter: false },
622
+ display: { icon: "🔩", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/44095762.jpg"), color: "#1e3a8a", showInMenu: true, showInFooter: false },
622
623
  isActive: true,
623
624
  isSearchable: true,
624
625
  showOnHomepage: false,
@@ -644,7 +645,7 @@ const rawCategories = [
644
645
  isFeatured: false,
645
646
  isBrand: false,
646
647
  seo: { title: "PSV Cards | LetItRip", description: "Shop Pharaoh's Servant set cards.", keywords: ["psv", "pharaoh servant", "jinzo"] },
647
- display: { icon: "🪄", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/77585513.jpg", color: "#312e81", showInMenu: true, showInFooter: false },
648
+ display: { icon: "🪄", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/77585513.jpg"), color: "#312e81", showInMenu: true, showInFooter: false },
648
649
  isActive: true,
649
650
  isSearchable: true,
650
651
  showOnHomepage: false,
@@ -670,7 +671,7 @@ const rawCategories = [
670
671
  isFeatured: false,
671
672
  isBrand: false,
672
673
  seo: { title: "LON Cards | LetItRip", description: "Shop Labyrinth of Nightmare set cards.", keywords: ["lon", "labyrinth of nightmare", "chaos emperor dragon"] },
673
- display: { icon: "🌀", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/82301904.jpg", color: "#4c1d95", showInMenu: true, showInFooter: false },
674
+ display: { icon: "🌀", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/82301904.jpg"), color: "#4c1d95", showInMenu: true, showInFooter: false },
674
675
  isActive: true,
675
676
  isSearchable: true,
676
677
  showOnHomepage: false,
@@ -706,11 +707,11 @@ const rawCategories = [
706
707
  title: "GX Era YGO | LetItRip",
707
708
  description: "Shop Yu-Gi-Oh! GX era cards — Elemental HEROes, Destiny HEROes, Cyber Dragon, Rainbow Dragon.",
708
709
  keywords: ["yugioh gx", "elemental hero", "cyber dragon", "shadow of infinity", "potd"],
709
- ogImage: "https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg",
710
+ ogImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg"),
710
711
  },
711
712
  display: {
712
713
  icon: "🌈",
713
- coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg",
714
+ coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg"),
714
715
  color: "#16a34a",
715
716
  showInMenu: true,
716
717
  showInFooter: true,
@@ -740,7 +741,7 @@ const rawCategories = [
740
741
  isFeatured: false,
741
742
  isBrand: false,
742
743
  seo: { title: "SOI Cards | LetItRip", description: "Shop Shadow of Infinity set cards.", keywords: ["soi", "shadow of infinity", "elemental hero"] },
743
- display: { icon: "🌑", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg", color: "#15803d", showInMenu: true, showInFooter: false },
744
+ display: { icon: "🌑", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg"), color: "#15803d", showInMenu: true, showInFooter: false },
744
745
  isActive: true,
745
746
  isSearchable: true,
746
747
  showOnHomepage: false,
@@ -766,7 +767,7 @@ const rawCategories = [
766
767
  isFeatured: false,
767
768
  isBrand: false,
768
769
  seo: { title: "EEN Cards | LetItRip", description: "Shop Elemental Energy set cards.", keywords: ["een", "elemental energy", "flame wingman"] },
769
- display: { icon: "⚡", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/35809262.jpg", color: "#166534", showInMenu: true, showInFooter: false },
770
+ display: { icon: "⚡", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/35809262.jpg"), color: "#166534", showInMenu: true, showInFooter: false },
770
771
  isActive: true,
771
772
  isSearchable: true,
772
773
  showOnHomepage: false,
@@ -792,7 +793,7 @@ const rawCategories = [
792
793
  isFeatured: false,
793
794
  isBrand: false,
794
795
  seo: { title: "POTD Cards | LetItRip", description: "Shop Power of the Duelist set cards.", keywords: ["potd", "power of the duelist", "elemental hero neos", "rainbow dragon"] },
795
- display: { icon: "✊", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg", color: "#14532d", showInMenu: true, showInFooter: false },
796
+ display: { icon: "✊", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg"), color: "#14532d", showInMenu: true, showInFooter: false },
796
797
  isActive: true,
797
798
  isSearchable: true,
798
799
  showOnHomepage: false,
@@ -818,7 +819,7 @@ const rawCategories = [
818
819
  isFeatured: false,
819
820
  isBrand: false,
820
821
  seo: { title: "CDIP Cards | LetItRip", description: "Shop Cyberdark Impact set cards.", keywords: ["cdip", "cyberdark impact", "cyber dragon", "destiny hero"] },
821
- display: { icon: "🤖", coverImage: "https://images.ygoprodeck.com/images/cards/cropped/70095154.jpg", color: "#052e16", showInMenu: true, showInFooter: false },
822
+ display: { icon: "🤖", coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/70095154.jpg"), color: "#052e16", showInMenu: true, showInFooter: false },
822
823
  isActive: true,
823
824
  isSearchable: true,
824
825
  showOnHomepage: false,
@@ -846,7 +847,7 @@ const rawCategories = [
846
847
  featuredPriority: 6,
847
848
  isBrand: false,
848
849
  seo: { title: "Trading Cards | LetItRip", description: "Buy and sell collectible trading cards — Pokémon, Yu-Gi-Oh!, One Piece TCG and more.", keywords: ["trading cards", "tcg", "collectible cards", "pokemon cards", "yugioh cards"] },
849
- display: { icon: "🃏", coverImage: "/media/category-image-trading-cards-20260101.jpg", color: "#7c3aed", showInMenu: true, showInFooter: true },
850
+ display: { icon: "🃏", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-trading-cards-20260101/1200/600"), color: "#7c3aed", showInMenu: true, showInFooter: true },
850
851
  isActive: true,
851
852
  isSearchable: true,
852
853
  showOnHomepage: true,
@@ -872,7 +873,7 @@ const rawCategories = [
872
873
  isFeatured: true,
873
874
  isBrand: false,
874
875
  seo: { title: "Pokémon TCG | LetItRip", description: "Buy Pokémon cards — booster packs, ETBs, singles, graded slabs.", keywords: ["pokemon tcg", "pokemon cards", "charizard", "pikachu card"] },
875
- display: { icon: "⚡", coverImage: "/media/category-image-pokemon-tcg-20260101.jpg", color: "#eab308", showInMenu: true, showInFooter: false },
876
+ display: { icon: "⚡", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-pokemon-tcg-20260101/1200/600"), color: "#eab308", showInMenu: true, showInFooter: false },
876
877
  isActive: true,
877
878
  isSearchable: true,
878
879
  showOnHomepage: false,
@@ -898,7 +899,7 @@ const rawCategories = [
898
899
  isFeatured: false,
899
900
  isBrand: false,
900
901
  seo: { title: "One Piece TCG | LetItRip", description: "Buy One Piece trading cards — booster packs, starter decks, special art.", keywords: ["one piece tcg", "one piece cards", "bandai card game"] },
901
- display: { icon: "🏴‍☠️", coverImage: "/media/category-image-one-piece-tcg-20260101.jpg", color: "#dc2626", showInMenu: true, showInFooter: false },
902
+ display: { icon: "🏴‍☠️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-one-piece-tcg-20260101/1200/600"), color: "#dc2626", showInMenu: true, showInFooter: false },
902
903
  isActive: true,
903
904
  isSearchable: true,
904
905
  showOnHomepage: false,
@@ -924,7 +925,7 @@ const rawCategories = [
924
925
  isFeatured: false,
925
926
  isBrand: false,
926
927
  seo: { title: "Dragon Ball Super TCG | LetItRip", description: "Buy Dragon Ball Super trading cards.", keywords: ["dragon ball tcg", "dbs card game", "bandai dragon ball"] },
927
- display: { icon: "🐉", coverImage: "/media/category-image-dragon-ball-tcg-20260101.jpg", color: "#f97316", showInMenu: true, showInFooter: false },
928
+ display: { icon: "🐉", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-dragon-ball-tcg-20260101/1200/600"), color: "#f97316", showInMenu: true, showInFooter: false },
928
929
  isActive: true,
929
930
  isSearchable: true,
930
931
  showOnHomepage: false,
@@ -950,7 +951,7 @@ const rawCategories = [
950
951
  isFeatured: false,
951
952
  isBrand: false,
952
953
  seo: { title: "Cardfight!! Vanguard | LetItRip", description: "Buy Cardfight!! Vanguard cards by Bushiroad.", keywords: ["cardfight vanguard", "bushiroad tcg", "vanguard cards"] },
953
- display: { icon: "⚔️", coverImage: "/media/category-image-cardfight-vanguard-20260101.jpg", color: "#2563eb", showInMenu: true, showInFooter: false },
954
+ display: { icon: "⚔️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-cardfight-vanguard-20260101/1200/600"), color: "#2563eb", showInMenu: true, showInFooter: false },
954
955
  isActive: true,
955
956
  isSearchable: true,
956
957
  showOnHomepage: false,
@@ -978,7 +979,7 @@ const rawCategories = [
978
979
  featuredPriority: 7,
979
980
  isBrand: false,
980
981
  seo: { title: "Action Figures | LetItRip", description: "Buy collectible action figures — anime, Marvel, DC, and more.", keywords: ["action figures", "collectible figures", "anime figures", "funko pop"] },
981
- display: { icon: "🦸", coverImage: "/media/category-image-action-figures-20260101.jpg", color: "#dc2626", showInMenu: true, showInFooter: true },
982
+ display: { icon: "🦸", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-action-figures-20260101/1200/600"), color: "#dc2626", showInMenu: true, showInFooter: true },
982
983
  isActive: true,
983
984
  isSearchable: true,
984
985
  showOnHomepage: true,
@@ -1004,7 +1005,7 @@ const rawCategories = [
1004
1005
  isFeatured: false,
1005
1006
  isBrand: false,
1006
1007
  seo: { title: "Gundam Figures | LetItRip", description: "Buy Gundam action figures — Robot Spirits, Metal Build.", keywords: ["gundam figures", "robot spirits", "metal build gundam"] },
1007
- display: { icon: "🤖", coverImage: "/media/category-image-gundam-figures-20260101.jpg", color: "#1d4ed8", showInMenu: true, showInFooter: false },
1008
+ display: { icon: "🤖", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-gundam-figures-20260101/1200/600"), color: "#1d4ed8", showInMenu: true, showInFooter: false },
1008
1009
  isActive: true,
1009
1010
  isSearchable: true,
1010
1011
  showOnHomepage: false,
@@ -1030,7 +1031,7 @@ const rawCategories = [
1030
1031
  isFeatured: true,
1031
1032
  isBrand: false,
1032
1033
  seo: { title: "Funko Pop! | LetItRip", description: "Buy Funko Pop! vinyl figures — anime, Marvel, DC, exclusive chases.", keywords: ["funko pop", "pop vinyl", "funko chase", "funko exclusive"] },
1033
- display: { icon: "🎭", coverImage: "/media/category-image-funko-pop-20260101.jpg", color: "#7c3aed", showInMenu: true, showInFooter: false },
1034
+ display: { icon: "🎭", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-funko-pop-20260101/1200/600"), color: "#7c3aed", showInMenu: true, showInFooter: false },
1034
1035
  isActive: true,
1035
1036
  isSearchable: true,
1036
1037
  showOnHomepage: false,
@@ -1056,7 +1057,7 @@ const rawCategories = [
1056
1057
  isFeatured: false,
1057
1058
  isBrand: false,
1058
1059
  seo: { title: "S.H.Figuarts | LetItRip", description: "Buy S.H.Figuarts figures by Tamashii Nations.", keywords: ["sh figuarts", "tamashii nations", "dragon ball figures", "naruto figures"] },
1059
- display: { icon: "💪", coverImage: "/media/category-image-shf-figuarts-20260101.jpg", color: "#0891b2", showInMenu: true, showInFooter: false },
1060
+ display: { icon: "💪", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-shf-figuarts-20260101/1200/600"), color: "#0891b2", showInMenu: true, showInFooter: false },
1060
1061
  isActive: true,
1061
1062
  isSearchable: true,
1062
1063
  showOnHomepage: false,
@@ -1082,7 +1083,7 @@ const rawCategories = [
1082
1083
  isFeatured: false,
1083
1084
  isBrand: false,
1084
1085
  seo: { title: "Nendoroid | LetItRip", description: "Buy Nendoroid figures by Good Smile Company.", keywords: ["nendoroid", "good smile company", "chibi figure", "nendoroid anime"] },
1085
- display: { icon: "😊", coverImage: "/media/category-image-nendoroid-20260101.jpg", color: "#ec4899", showInMenu: true, showInFooter: false },
1086
+ display: { icon: "😊", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-nendoroid-20260101/1200/600"), color: "#ec4899", showInMenu: true, showInFooter: false },
1086
1087
  isActive: true,
1087
1088
  isSearchable: true,
1088
1089
  showOnHomepage: false,
@@ -1108,7 +1109,7 @@ const rawCategories = [
1108
1109
  isFeatured: false,
1109
1110
  isBrand: false,
1110
1111
  seo: { title: "Marvel Legends | LetItRip", description: "Buy Marvel Legends 6-inch figures by Hasbro.", keywords: ["marvel legends", "hasbro marvel", "build a figure", "marvel action figures"] },
1111
- display: { icon: "🦸‍♂️", coverImage: "/media/category-image-marvel-legends-20260101.jpg", color: "#b91c1c", showInMenu: true, showInFooter: false },
1112
+ display: { icon: "🦸‍♂️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-marvel-legends-20260101/1200/600"), color: "#b91c1c", showInMenu: true, showInFooter: false },
1112
1113
  isActive: true,
1113
1114
  isSearchable: true,
1114
1115
  showOnHomepage: false,
@@ -1136,7 +1137,7 @@ const rawCategories = [
1136
1137
  featuredPriority: 8,
1137
1138
  isBrand: false,
1138
1139
  seo: { title: "Diecast Vehicles | LetItRip", description: "Buy collectible diecast cars — Hot Wheels, Tomica, Matchbox, Maisto.", keywords: ["diecast vehicles", "hot wheels", "tomica", "diecast cars", "collectible cars"] },
1139
- display: { icon: "🏎️", coverImage: "/media/category-image-diecast-vehicles-20260101.jpg", color: "#ea580c", showInMenu: true, showInFooter: true },
1140
+ display: { icon: "🏎️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-diecast-vehicles-20260101/1200/600"), color: "#ea580c", showInMenu: true, showInFooter: true },
1140
1141
  isActive: true,
1141
1142
  isSearchable: true,
1142
1143
  showOnHomepage: true,
@@ -1162,7 +1163,7 @@ const rawCategories = [
1162
1163
  isFeatured: true,
1163
1164
  isBrand: false,
1164
1165
  seo: { title: "Hot Wheels | LetItRip", description: "Buy Hot Wheels — mainline, premium, Treasure Hunts, vintage Redlines.", keywords: ["hot wheels", "treasure hunt", "super treasure hunt", "hot wheels redline"] },
1165
- display: { icon: "🔥", coverImage: "/media/category-image-hot-wheels-20260101.jpg", color: "#dc2626", showInMenu: true, showInFooter: false },
1166
+ display: { icon: "🔥", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-hot-wheels-20260101/1200/600"), color: "#dc2626", showInMenu: true, showInFooter: false },
1166
1167
  isActive: true,
1167
1168
  isSearchable: true,
1168
1169
  showOnHomepage: false,
@@ -1188,7 +1189,7 @@ const rawCategories = [
1188
1189
  isFeatured: false,
1189
1190
  isBrand: false,
1190
1191
  seo: { title: "Tomica | LetItRip", description: "Buy Tomica diecast cars by Takara-Tomy.", keywords: ["tomica", "takara tomy cars", "tomica premium", "japanese diecast"] },
1191
- display: { icon: "🚗", coverImage: "/media/category-image-tomica-20260101.jpg", color: "#0284c7", showInMenu: true, showInFooter: false },
1192
+ display: { icon: "🚗", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-tomica-20260101/1200/600"), color: "#0284c7", showInMenu: true, showInFooter: false },
1192
1193
  isActive: true,
1193
1194
  isSearchable: true,
1194
1195
  showOnHomepage: false,
@@ -1214,7 +1215,7 @@ const rawCategories = [
1214
1215
  isFeatured: false,
1215
1216
  isBrand: false,
1216
1217
  seo: { title: "Matchbox | LetItRip", description: "Buy Matchbox diecast cars and vintage Lesney models.", keywords: ["matchbox", "matchbox cars", "lesney", "vintage matchbox"] },
1217
- display: { icon: "📦", coverImage: "/media/category-image-matchbox-20260101.jpg", color: "#16a34a", showInMenu: true, showInFooter: false },
1218
+ display: { icon: "📦", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-matchbox-20260101/1200/600"), color: "#16a34a", showInMenu: true, showInFooter: false },
1218
1219
  isActive: true,
1219
1220
  isSearchable: true,
1220
1221
  showOnHomepage: false,
@@ -1240,7 +1241,7 @@ const rawCategories = [
1240
1241
  isFeatured: false,
1241
1242
  isBrand: false,
1242
1243
  seo: { title: "Maisto | LetItRip", description: "Buy Maisto diecast models — 1:18 and 1:24 scale replicas.", keywords: ["maisto", "maisto 1 18", "diecast model cars"] },
1243
- display: { icon: "🏁", coverImage: "/media/category-image-maisto-20260101.jpg", color: "#4338ca", showInMenu: true, showInFooter: false },
1244
+ display: { icon: "🏁", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-maisto-20260101/1200/600"), color: "#4338ca", showInMenu: true, showInFooter: false },
1244
1245
  isActive: true,
1245
1246
  isSearchable: true,
1246
1247
  showOnHomepage: false,
@@ -1268,7 +1269,7 @@ const rawCategories = [
1268
1269
  featuredPriority: 9,
1269
1270
  isBrand: false,
1270
1271
  seo: { title: "Spinning Tops | LetItRip", description: "Buy Beyblade and spinning tops — X, Burst, Metal Fight, and accessories.", keywords: ["beyblade", "spinning tops", "beyblade x", "beyblade burst"] },
1271
- display: { icon: "🌀", coverImage: "/media/category-image-spinning-tops-20260101.jpg", color: "#0891b2", showInMenu: true, showInFooter: true },
1272
+ display: { icon: "🌀", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-spinning-tops-20260101/1200/600"), color: "#0891b2", showInMenu: true, showInFooter: true },
1272
1273
  isActive: true,
1273
1274
  isSearchable: true,
1274
1275
  showOnHomepage: true,
@@ -1294,7 +1295,7 @@ const rawCategories = [
1294
1295
  isFeatured: true,
1295
1296
  isBrand: false,
1296
1297
  seo: { title: "Beyblade X | LetItRip", description: "Buy Beyblade X tops and stadiums by Takara-Tomy.", keywords: ["beyblade x", "xtreme gear", "beyblade x starter", "takara tomy beyblade"] },
1297
- display: { icon: "💫", coverImage: "/media/category-image-beyblade-x-20260101.jpg", color: "#0d9488", showInMenu: true, showInFooter: false },
1298
+ display: { icon: "💫", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-beyblade-x-20260101/1200/600"), color: "#0d9488", showInMenu: true, showInFooter: false },
1298
1299
  isActive: true,
1299
1300
  isSearchable: true,
1300
1301
  showOnHomepage: false,
@@ -1320,7 +1321,7 @@ const rawCategories = [
1320
1321
  isFeatured: false,
1321
1322
  isBrand: false,
1322
1323
  seo: { title: "Beyblade Burst | LetItRip", description: "Buy Beyblade Burst tops, launchers, and stadiums.", keywords: ["beyblade burst", "burst system", "beyblade burst pro"] },
1323
- display: { icon: "💥", coverImage: "/media/category-image-beyblade-burst-20260101.jpg", color: "#059669", showInMenu: true, showInFooter: false },
1324
+ display: { icon: "💥", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-beyblade-burst-20260101/1200/600"), color: "#059669", showInMenu: true, showInFooter: false },
1324
1325
  isActive: true,
1325
1326
  isSearchable: true,
1326
1327
  showOnHomepage: false,
@@ -1346,7 +1347,7 @@ const rawCategories = [
1346
1347
  isFeatured: false,
1347
1348
  isBrand: false,
1348
1349
  seo: { title: "Beyblade Metal Fight | LetItRip", description: "Buy vintage Beyblade Metal Fight tops — Fusion, Masters, Fury.", keywords: ["beyblade metal fight", "metal fusion", "metal masters", "vintage beyblade"] },
1349
- display: { icon: "⚙️", coverImage: "/media/category-image-beyblade-metal-20260101.jpg", color: "#64748b", showInMenu: true, showInFooter: false },
1350
+ display: { icon: "⚙️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-beyblade-metal-20260101/1200/600"), color: "#64748b", showInMenu: true, showInFooter: false },
1350
1351
  isActive: true,
1351
1352
  isSearchable: true,
1352
1353
  showOnHomepage: false,
@@ -1374,7 +1375,7 @@ const rawCategories = [
1374
1375
  featuredPriority: 10,
1375
1376
  isBrand: false,
1376
1377
  seo: { title: "Model Kits | LetItRip", description: "Buy model kits — Gunpla, Frame Arms, 30 Minutes Missions, and more.", keywords: ["model kits", "gunpla", "plastic model", "bandai model kit"] },
1377
- display: { icon: "🔧", coverImage: "/media/category-image-model-kits-20260101.jpg", color: "#1e40af", showInMenu: true, showInFooter: true },
1378
+ display: { icon: "🔧", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-model-kits-20260101/1200/600"), color: "#1e40af", showInMenu: true, showInFooter: true },
1378
1379
  isActive: true,
1379
1380
  isSearchable: true,
1380
1381
  showOnHomepage: true,
@@ -1400,7 +1401,7 @@ const rawCategories = [
1400
1401
  isFeatured: true,
1401
1402
  isBrand: false,
1402
1403
  seo: { title: "Gunpla | LetItRip", description: "Buy Gundam model kits — HG, RG, MG, PG grades by Bandai.", keywords: ["gunpla", "gundam model kit", "master grade", "perfect grade", "bandai gunpla"] },
1403
- display: { icon: "🤖", coverImage: "/media/category-image-gunpla-20260101.jpg", color: "#1d4ed8", showInMenu: true, showInFooter: false },
1404
+ display: { icon: "🤖", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-gunpla-20260101/1200/600"), color: "#1d4ed8", showInMenu: true, showInFooter: false },
1404
1405
  isActive: true,
1405
1406
  isSearchable: true,
1406
1407
  showOnHomepage: false,
@@ -1426,7 +1427,7 @@ const rawCategories = [
1426
1427
  isFeatured: false,
1427
1428
  isBrand: false,
1428
1429
  seo: { title: "Frame Arms | LetItRip", description: "Buy Frame Arms and Frame Arms Girl kits by Kotobukiya.", keywords: ["frame arms", "kotobukiya model kit", "frame arms girl"] },
1429
- display: { icon: "🛡️", coverImage: "/media/category-image-frame-arms-20260101.jpg", color: "#4338ca", showInMenu: true, showInFooter: false },
1430
+ display: { icon: "🛡️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-frame-arms-20260101/1200/600"), color: "#4338ca", showInMenu: true, showInFooter: false },
1430
1431
  isActive: true,
1431
1432
  isSearchable: true,
1432
1433
  showOnHomepage: false,
@@ -1452,7 +1453,7 @@ const rawCategories = [
1452
1453
  isFeatured: false,
1453
1454
  isBrand: false,
1454
1455
  seo: { title: "30 Minutes Missions | LetItRip", description: "Buy 30MM model kits by Bandai — beginner-friendly mecha builds.", keywords: ["30 minutes missions", "30mm", "bandai 30mm", "beginner model kit"] },
1455
- display: { icon: "⏱️", coverImage: "/media/category-image-30mm-20260101.jpg", color: "#0f766e", showInMenu: true, showInFooter: false },
1456
+ display: { icon: "⏱️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-30mm-20260101/1200/600"), color: "#0f766e", showInMenu: true, showInFooter: false },
1456
1457
  isActive: true,
1457
1458
  isSearchable: true,
1458
1459
  showOnHomepage: false,
@@ -1480,7 +1481,7 @@ const rawCategories = [
1480
1481
  featuredPriority: 11,
1481
1482
  isBrand: false,
1482
1483
  seo: { title: "Vintage & Rare | LetItRip", description: "Buy vintage and rare collectibles — retro toys, first-edition cards, discontinued items.", keywords: ["vintage collectibles", "rare toys", "retro toys", "vintage cards", "antique collectibles"] },
1483
- display: { icon: "🏺", coverImage: "/media/category-image-vintage-rare-20260101.jpg", color: "#92400e", showInMenu: true, showInFooter: true },
1484
+ display: { icon: "🏺", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-vintage-rare-20260101/1200/600"), color: "#92400e", showInMenu: true, showInFooter: true },
1484
1485
  isActive: true,
1485
1486
  isSearchable: true,
1486
1487
  showOnHomepage: true,
@@ -1506,7 +1507,7 @@ const rawCategories = [
1506
1507
  isFeatured: false,
1507
1508
  isBrand: false,
1508
1509
  seo: { title: "Retro Toys | LetItRip", description: "Buy vintage 80s/90s action figures and toys.", keywords: ["retro toys", "vintage action figures", "80s toys", "90s toys"] },
1509
- display: { icon: "🕹️", coverImage: "/media/category-image-retro-toys-20260101.jpg", color: "#78350f", showInMenu: true, showInFooter: false },
1510
+ display: { icon: "🕹️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-retro-toys-20260101/1200/600"), color: "#78350f", showInMenu: true, showInFooter: false },
1510
1511
  isActive: true,
1511
1512
  isSearchable: true,
1512
1513
  showOnHomepage: false,
@@ -1532,7 +1533,7 @@ const rawCategories = [
1532
1533
  isFeatured: false,
1533
1534
  isBrand: false,
1534
1535
  seo: { title: "Vintage Cards | LetItRip", description: "Buy vintage trading cards — 1st Edition Pokémon, early Yu-Gi-Oh!, classic MTG.", keywords: ["vintage cards", "1st edition pokemon", "alpha beta mtg", "vintage yugioh"] },
1535
- display: { icon: "📜", coverImage: "/media/category-image-vintage-cards-20260101.jpg", color: "#451a03", showInMenu: true, showInFooter: false },
1536
+ display: { icon: "📜", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-vintage-cards-20260101/1200/600"), color: "#451a03", showInMenu: true, showInFooter: false },
1536
1537
  isActive: true,
1537
1538
  isSearchable: true,
1538
1539
  showOnHomepage: false,
@@ -1558,7 +1559,7 @@ const rawCategories = [
1558
1559
  isFeatured: false,
1559
1560
  isBrand: false,
1560
1561
  seo: { title: "Antique Memorabilia | LetItRip", description: "Buy rare memorabilia — signed items, prototypes, production proofs.", keywords: ["antique memorabilia", "signed collectibles", "prototype toys", "rare memorabilia"] },
1561
- display: { icon: "🖼️", coverImage: "/media/category-image-antique-memorabilia-20260101.jpg", color: "#292524", showInMenu: true, showInFooter: false },
1562
+ display: { icon: "🖼️", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-antique-memorabilia-20260101/1200/600"), color: "#292524", showInMenu: true, showInFooter: false },
1562
1563
  isActive: true,
1563
1564
  isSearchable: true,
1564
1565
  showOnHomepage: false,
@@ -1585,7 +1586,7 @@ const rawCategories = [
1585
1586
  isFeatured: false,
1586
1587
  isBrand: false,
1587
1588
  seo: { title: "Digital Codes | LetItRip", description: "Buy Yu-Gi-Oh! digital codes — Master Duel gems, Duel Links gems, battle passes.", keywords: ["digital codes", "master duel gems", "duel links", "yugioh codes"] },
1588
- display: { icon: "🔑", coverImage: "/media/category-image-digital-codes-20260101.jpg", color: "#1e40af", showInMenu: true, showInFooter: false },
1589
+ display: { icon: "🔑", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-digital-codes-20260101/1200/600"), color: "#1e40af", showInMenu: true, showInFooter: false },
1589
1590
  isActive: true,
1590
1591
  isSearchable: true,
1591
1592
  showOnHomepage: false,
@@ -1612,7 +1613,7 @@ const rawCategories = [
1612
1613
  isFeatured: false,
1613
1614
  isBrand: false,
1614
1615
  seo: { title: "Live Aquatics | LetItRip", description: "Buy collectible live aquatics — koi, bettas, axolotls. Verified vendors, specialist shipping.", keywords: ["live aquatics", "koi", "betta", "axolotl", "live fish"] },
1615
- display: { icon: "🐟", coverImage: "/media/category-image-live-aquatics-20260101.jpg", color: "#0891b2", showInMenu: true, showInFooter: false },
1616
+ display: { icon: "🐟", coverImage: seedExtMedia("https://picsum.photos/seed/category-image-live-aquatics-20260101/1200/600"), color: "#0891b2", showInMenu: true, showInFooter: false },
1616
1617
  isActive: true,
1617
1618
  isSearchable: true,
1618
1619
  showOnHomepage: false,
@@ -1634,14 +1635,14 @@ const brandRows = [
1634
1635
  brandWebsite: "https://www.konami.com/yugioh",
1635
1636
  brandCountry: "Japan",
1636
1637
  brandFounded: 1969,
1637
- brandBannerImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
1638
+ brandBannerImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
1638
1639
  rootId: "brand-konami",
1639
1640
  parentIds: [],
1640
1641
  tier: 0,
1641
1642
  path: "brand-konami",
1642
1643
  isLeaf: true,
1643
1644
  order: 1,
1644
- display: { coverImage: "https://images.ygoprodeck.com/images/cards/small/46986414.jpg", showInMenu: false, showInFooter: true },
1645
+ display: { coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/46986414.jpg"), showInMenu: false, showInFooter: true },
1645
1646
  isFeatured: true,
1646
1647
  isBrand: true,
1647
1648
  isActive: true,
@@ -1660,14 +1661,14 @@ const brandRows = [
1660
1661
  brandWebsite: "https://www.upperdeck.com",
1661
1662
  brandCountry: "USA",
1662
1663
  brandFounded: 1988,
1663
- brandBannerImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
1664
+ brandBannerImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
1664
1665
  rootId: "brand-upper-deck",
1665
1666
  parentIds: [],
1666
1667
  tier: 0,
1667
1668
  path: "brand-upper-deck",
1668
1669
  isLeaf: true,
1669
1670
  order: 2,
1670
- display: { coverImage: "https://images.ygoprodeck.com/images/cards/small/89631139.jpg", showInMenu: false, showInFooter: true },
1671
+ display: { coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/89631139.jpg"), showInMenu: false, showInFooter: true },
1671
1672
  isFeatured: false,
1672
1673
  isBrand: true,
1673
1674
  isActive: true,
@@ -1686,14 +1687,14 @@ const brandRows = [
1686
1687
  brandWebsite: "https://www.bandai.co.jp",
1687
1688
  brandCountry: "Japan",
1688
1689
  brandFounded: 1950,
1689
- brandBannerImage: "https://images.ygoprodeck.com/images/cards/cropped/40640057.jpg",
1690
+ brandBannerImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/40640057.jpg"),
1690
1691
  rootId: "brand-bandai",
1691
1692
  parentIds: [],
1692
1693
  tier: 0,
1693
1694
  path: "brand-bandai",
1694
1695
  isLeaf: true,
1695
1696
  order: 3,
1696
- display: { coverImage: "https://images.ygoprodeck.com/images/cards/small/40640057.jpg", showInMenu: false, showInFooter: false },
1697
+ display: { coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/40640057.jpg"), showInMenu: false, showInFooter: false },
1697
1698
  isFeatured: false,
1698
1699
  isBrand: true,
1699
1700
  isActive: true,
@@ -1712,14 +1713,14 @@ const brandRows = [
1712
1713
  brandWebsite: "https://www.toei-animation.co.jp",
1713
1714
  brandCountry: "Japan",
1714
1715
  brandFounded: 1956,
1715
- brandBannerImage: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg",
1716
+ brandBannerImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg"),
1716
1717
  rootId: "brand-toei-animation",
1717
1718
  parentIds: [],
1718
1719
  tier: 0,
1719
1720
  path: "brand-toei-animation",
1720
1721
  isLeaf: true,
1721
1722
  order: 4,
1722
- display: { coverImage: "https://images.ygoprodeck.com/images/cards/small/46986414.jpg", showInMenu: false, showInFooter: false },
1723
+ display: { coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/46986414.jpg"), showInMenu: false, showInFooter: false },
1723
1724
  isFeatured: false,
1724
1725
  isBrand: true,
1725
1726
  isActive: true,
@@ -1738,14 +1739,14 @@ const brandRows = [
1738
1739
  brandWebsite: "https://www.score-entertainment.com",
1739
1740
  brandCountry: "USA",
1740
1741
  brandFounded: 1992,
1741
- brandBannerImage: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg",
1742
+ brandBannerImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg"),
1742
1743
  rootId: "brand-score-entertainment",
1743
1744
  parentIds: [],
1744
1745
  tier: 0,
1745
1746
  path: "brand-score-entertainment",
1746
1747
  isLeaf: true,
1747
1748
  order: 5,
1748
- display: { coverImage: "https://images.ygoprodeck.com/images/cards/small/89631139.jpg", showInMenu: false, showInFooter: false },
1749
+ display: { coverImage: seedExtMedia("https://images.ygoprodeck.com/images/cards/small/89631139.jpg"), showInMenu: false, showInFooter: false },
1749
1750
  isFeatured: false,
1750
1751
  isBrand: true,
1751
1752
  isActive: true,
@@ -1771,7 +1772,7 @@ const brandRows = [
1771
1772
  path: "brand-hasbro",
1772
1773
  isLeaf: true,
1773
1774
  order: 6,
1774
- display: { coverImage: "/media/brand-logo-hasbro-20260101.jpg", showInMenu: false, showInFooter: true },
1775
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-hasbro-20260101/800/800"), showInMenu: false, showInFooter: true },
1775
1776
  isFeatured: true,
1776
1777
  isBrand: true,
1777
1778
  isActive: true,
@@ -1796,7 +1797,7 @@ const brandRows = [
1796
1797
  path: "brand-takara-tomy",
1797
1798
  isLeaf: true,
1798
1799
  order: 7,
1799
- display: { coverImage: "/media/brand-logo-takara-tomy-20260101.jpg", showInMenu: false, showInFooter: true },
1800
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-takara-tomy-20260101/800/800"), showInMenu: false, showInFooter: true },
1800
1801
  isFeatured: true,
1801
1802
  isBrand: true,
1802
1803
  isActive: true,
@@ -1821,7 +1822,7 @@ const brandRows = [
1821
1822
  path: "brand-mattel",
1822
1823
  isLeaf: true,
1823
1824
  order: 8,
1824
- display: { coverImage: "/media/brand-logo-mattel-20260101.jpg", showInMenu: false, showInFooter: true },
1825
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-mattel-20260101/800/800"), showInMenu: false, showInFooter: true },
1825
1826
  isFeatured: true,
1826
1827
  isBrand: true,
1827
1828
  isActive: true,
@@ -1846,7 +1847,7 @@ const brandRows = [
1846
1847
  path: "brand-pokemon-company",
1847
1848
  isLeaf: true,
1848
1849
  order: 9,
1849
- display: { coverImage: "/media/brand-logo-pokemon-company-20260101.jpg", showInMenu: false, showInFooter: true },
1850
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-pokemon-company-20260101/800/800"), showInMenu: false, showInFooter: true },
1850
1851
  isFeatured: true,
1851
1852
  isBrand: true,
1852
1853
  isActive: true,
@@ -1871,7 +1872,7 @@ const brandRows = [
1871
1872
  path: "brand-funko",
1872
1873
  isLeaf: true,
1873
1874
  order: 10,
1874
- display: { coverImage: "/media/brand-logo-funko-20260101.jpg", showInMenu: false, showInFooter: true },
1875
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-funko-20260101/800/800"), showInMenu: false, showInFooter: true },
1875
1876
  isFeatured: true,
1876
1877
  isBrand: true,
1877
1878
  isActive: true,
@@ -1896,7 +1897,7 @@ const brandRows = [
1896
1897
  path: "brand-neca",
1897
1898
  isLeaf: true,
1898
1899
  order: 11,
1899
- display: { coverImage: "/media/brand-logo-neca-20260101.jpg", showInMenu: false, showInFooter: false },
1900
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-neca-20260101/800/800"), showInMenu: false, showInFooter: false },
1900
1901
  isFeatured: false,
1901
1902
  isBrand: true,
1902
1903
  isActive: true,
@@ -1921,7 +1922,7 @@ const brandRows = [
1921
1922
  path: "brand-mcfarlane",
1922
1923
  isLeaf: true,
1923
1924
  order: 12,
1924
- display: { coverImage: "/media/brand-logo-mcfarlane-20260101.jpg", showInMenu: false, showInFooter: false },
1925
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-mcfarlane-20260101/800/800"), showInMenu: false, showInFooter: false },
1925
1926
  isFeatured: false,
1926
1927
  isBrand: true,
1927
1928
  isActive: true,
@@ -1946,7 +1947,7 @@ const brandRows = [
1946
1947
  path: "brand-good-smile",
1947
1948
  isLeaf: true,
1948
1949
  order: 13,
1949
- display: { coverImage: "/media/brand-logo-good-smile-20260101.jpg", showInMenu: false, showInFooter: true },
1950
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-good-smile-20260101/800/800"), showInMenu: false, showInFooter: true },
1950
1951
  isFeatured: true,
1951
1952
  isBrand: true,
1952
1953
  isActive: true,
@@ -1971,7 +1972,7 @@ const brandRows = [
1971
1972
  path: "brand-hot-wheels",
1972
1973
  isLeaf: true,
1973
1974
  order: 14,
1974
- display: { coverImage: "/media/brand-logo-hot-wheels-20260101.jpg", showInMenu: false, showInFooter: true },
1975
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-hot-wheels-20260101/800/800"), showInMenu: false, showInFooter: true },
1975
1976
  isFeatured: true,
1976
1977
  isBrand: true,
1977
1978
  isActive: true,
@@ -1996,7 +1997,7 @@ const brandRows = [
1996
1997
  path: "brand-tomica",
1997
1998
  isLeaf: true,
1998
1999
  order: 15,
1999
- display: { coverImage: "/media/brand-logo-tomica-20260101.jpg", showInMenu: false, showInFooter: false },
2000
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-tomica-20260101/800/800"), showInMenu: false, showInFooter: false },
2000
2001
  isFeatured: false,
2001
2002
  isBrand: true,
2002
2003
  isActive: true,
@@ -2021,7 +2022,7 @@ const brandRows = [
2021
2022
  path: "brand-beyblade",
2022
2023
  isLeaf: true,
2023
2024
  order: 16,
2024
- display: { coverImage: "/media/brand-logo-beyblade-20260101.jpg", showInMenu: false, showInFooter: true },
2025
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-beyblade-20260101/800/800"), showInMenu: false, showInFooter: true },
2025
2026
  isFeatured: true,
2026
2027
  isBrand: true,
2027
2028
  isActive: true,
@@ -2046,7 +2047,7 @@ const brandRows = [
2046
2047
  path: "brand-bushiroad",
2047
2048
  isLeaf: true,
2048
2049
  order: 17,
2049
- display: { coverImage: "/media/brand-logo-bushiroad-20260101.jpg", showInMenu: false, showInFooter: false },
2050
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-bushiroad-20260101/800/800"), showInMenu: false, showInFooter: false },
2050
2051
  isFeatured: false,
2051
2052
  isBrand: true,
2052
2053
  isActive: true,
@@ -2071,7 +2072,7 @@ const brandRows = [
2071
2072
  path: "brand-bandai-spirits",
2072
2073
  isLeaf: true,
2073
2074
  order: 18,
2074
- display: { coverImage: "/media/brand-logo-bandai-spirits-20260101.jpg", showInMenu: false, showInFooter: false },
2075
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-bandai-spirits-20260101/800/800"), showInMenu: false, showInFooter: false },
2075
2076
  isFeatured: false,
2076
2077
  isBrand: true,
2077
2078
  isActive: true,
@@ -2096,7 +2097,7 @@ const brandRows = [
2096
2097
  path: "brand-kotobukiya",
2097
2098
  isLeaf: true,
2098
2099
  order: 19,
2099
- display: { coverImage: "/media/brand-logo-kotobukiya-20260101.jpg", showInMenu: false, showInFooter: false },
2100
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-kotobukiya-20260101/800/800"), showInMenu: false, showInFooter: false },
2100
2101
  isFeatured: false,
2101
2102
  isBrand: true,
2102
2103
  isActive: true,
@@ -2121,7 +2122,7 @@ const brandRows = [
2121
2122
  path: "brand-megahouse",
2122
2123
  isLeaf: true,
2123
2124
  order: 20,
2124
- display: { coverImage: "/media/brand-logo-megahouse-20260101.jpg", showInMenu: false, showInFooter: false },
2125
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-megahouse-20260101/800/800"), showInMenu: false, showInFooter: false },
2125
2126
  isFeatured: false,
2126
2127
  isBrand: true,
2127
2128
  isActive: true,
@@ -2146,7 +2147,7 @@ const brandRows = [
2146
2147
  path: "brand-tamashii-nations",
2147
2148
  isLeaf: true,
2148
2149
  order: 21,
2149
- display: { coverImage: "/media/brand-logo-tamashii-nations-20260101.jpg", showInMenu: false, showInFooter: false },
2150
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-tamashii-nations-20260101/800/800"), showInMenu: false, showInFooter: false },
2150
2151
  isFeatured: false,
2151
2152
  isBrand: true,
2152
2153
  isActive: true,
@@ -2171,7 +2172,7 @@ const brandRows = [
2171
2172
  path: "brand-kaiyodo",
2172
2173
  isLeaf: true,
2173
2174
  order: 22,
2174
- display: { coverImage: "/media/brand-logo-kaiyodo-20260101.jpg", showInMenu: false, showInFooter: false },
2175
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-kaiyodo-20260101/800/800"), showInMenu: false, showInFooter: false },
2175
2176
  isFeatured: false,
2176
2177
  isBrand: true,
2177
2178
  isActive: true,
@@ -2196,7 +2197,7 @@ const brandRows = [
2196
2197
  path: "brand-medicom",
2197
2198
  isLeaf: true,
2198
2199
  order: 23,
2199
- display: { coverImage: "/media/brand-logo-medicom-20260101.jpg", showInMenu: false, showInFooter: false },
2200
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-medicom-20260101/800/800"), showInMenu: false, showInFooter: false },
2200
2201
  isFeatured: false,
2201
2202
  isBrand: true,
2202
2203
  isActive: true,
@@ -2221,7 +2222,7 @@ const brandRows = [
2221
2222
  path: "brand-spin-master",
2222
2223
  isLeaf: true,
2223
2224
  order: 24,
2224
- display: { coverImage: "/media/brand-logo-spin-master-20260101.jpg", showInMenu: false, showInFooter: false },
2225
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-spin-master-20260101/800/800"), showInMenu: false, showInFooter: false },
2225
2226
  isFeatured: false,
2226
2227
  isBrand: true,
2227
2228
  isActive: true,
@@ -2246,7 +2247,7 @@ const brandRows = [
2246
2247
  path: "brand-maisto",
2247
2248
  isLeaf: true,
2248
2249
  order: 25,
2249
- display: { coverImage: "/media/brand-logo-maisto-20260101.jpg", showInMenu: false, showInFooter: false },
2250
+ display: { coverImage: seedExtMedia("https://picsum.photos/seed/brand-logo-maisto-20260101/800/800"), showInMenu: false, showInFooter: false },
2250
2251
  isFeatured: false,
2251
2252
  isBrand: true,
2252
2253
  isActive: true,