@mohasinac/appkit 4.9.4 → 4.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +7 -2
  2. package/dist/_internal/client/features/layout/SidebarCollapseToggle.d.ts +5 -1
  3. package/dist/_internal/client/features/layout/SidebarCollapseToggle.js +8 -2
  4. package/dist/_internal/client/features/layout/sidebarPositionClasses.d.ts +20 -0
  5. package/dist/_internal/client/features/layout/sidebarPositionClasses.js +20 -0
  6. package/dist/_internal/client/hand-mode/HandModeProvider.d.ts +21 -0
  7. package/dist/_internal/client/hand-mode/HandModeProvider.js +81 -0
  8. package/dist/_internal/client/hand-mode/index.d.ts +2 -0
  9. package/dist/_internal/client/hand-mode/index.js +1 -0
  10. package/dist/_internal/server/features/auctions/actions.js +3 -2
  11. package/dist/_internal/server/features/auctions/service.d.ts +4 -3
  12. package/dist/_internal/server/features/auctions/service.js +6 -6
  13. package/dist/_internal/server/features/bundles/data.d.ts +9 -0
  14. package/dist/_internal/server/features/bundles/data.js +14 -0
  15. package/dist/_internal/server/features/bundles/index.d.ts +1 -1
  16. package/dist/_internal/server/features/bundles/index.js +1 -1
  17. package/dist/_internal/server/features/catalogue/og.d.ts +20 -0
  18. package/dist/_internal/server/features/catalogue/og.js +27 -0
  19. package/dist/_internal/server/features/checkout/actions.d.ts +43 -0
  20. package/dist/_internal/server/features/checkout/actions.js +172 -81
  21. package/dist/_internal/server/features/checkout/index.d.ts +1 -1
  22. package/dist/_internal/server/features/checkout/index.js +1 -1
  23. package/dist/_internal/server/features/grouped/data.d.ts +12 -0
  24. package/dist/_internal/server/features/grouped/data.js +26 -1
  25. package/dist/_internal/server/features/grouped/index.d.ts +1 -1
  26. package/dist/_internal/server/features/grouped/index.js +1 -1
  27. package/dist/_internal/server/features/products/data.d.ts +23 -0
  28. package/dist/_internal/server/features/products/data.js +159 -0
  29. package/dist/_internal/server/features/products/index.d.ts +1 -1
  30. package/dist/_internal/server/features/products/index.js +1 -1
  31. package/dist/_internal/server/features/seo/robots.js +3 -2
  32. package/dist/_internal/server/features/seo/sitemap.js +70 -5
  33. package/dist/_internal/shared/config/schema.d.ts +1 -0
  34. package/dist/_internal/shared/features/auctions/config.d.ts +20 -0
  35. package/dist/_internal/shared/features/auctions/config.js +31 -1
  36. package/dist/_internal/shared/listing-types/art/config.d.ts +1 -1
  37. package/dist/_internal/shared/listing-types/art/config.js +1 -1
  38. package/dist/_internal/shared/listing-types/classified/config.d.ts +1 -1
  39. package/dist/_internal/shared/listing-types/classified/config.js +2 -2
  40. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +1 -1
  41. package/dist/_internal/shared/listing-types/digital-code/config.js +2 -2
  42. package/dist/_internal/shared/listing-types/live/config.d.ts +1 -1
  43. package/dist/_internal/shared/listing-types/live/config.js +2 -2
  44. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +1 -1
  45. package/dist/_internal/shared/listing-types/prize-draw/config.js +1 -1
  46. package/dist/_internal/shared/listing-types/stickers/config.d.ts +1 -1
  47. package/dist/_internal/shared/listing-types/stickers/config.js +1 -1
  48. package/dist/client.d.ts +4 -6
  49. package/dist/client.js +10 -4
  50. package/dist/constants/api-endpoints.d.ts +6 -0
  51. package/dist/constants/api-endpoints.js +2 -0
  52. package/dist/features/about/components/AboutView.js +2 -2
  53. package/dist/features/about/components/DeveloperView.js +2 -2
  54. package/dist/features/about/schemas/firestore.d.ts +1 -0
  55. package/dist/features/account/components/UserSidebar.js +8 -2
  56. package/dist/features/account/hooks/useProfile.d.ts +2 -0
  57. package/dist/features/admin/components/AdminSidebar.js +8 -2
  58. package/dist/features/admin/components/AdminSiteSettingsView.js +12 -4
  59. package/dist/features/admin/schemas/firestore.d.ts +9 -0
  60. package/dist/features/admin/schemas/firestore.js +6 -0
  61. package/dist/features/auctions/actions/bid-actions.js +4 -1
  62. package/dist/features/auctions/components/AuctionBottomActions.d.ts +2 -1
  63. package/dist/features/auctions/components/AuctionBottomActions.js +14 -1
  64. package/dist/features/auctions/components/AuctionDetailPageView.js +21 -9
  65. package/dist/features/auctions/components/LiveMinIncrement.d.ts +18 -0
  66. package/dist/features/auctions/components/LiveMinIncrement.js +17 -0
  67. package/dist/features/auctions/components/PlaceBidFormClient.d.ts +5 -2
  68. package/dist/features/auctions/components/PlaceBidFormClient.js +7 -3
  69. package/dist/features/auth/schemas/firestore.d.ts +3 -0
  70. package/dist/features/cart/components/CartDrawer.js +4 -1
  71. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.d.ts +11 -0
  72. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +33 -0
  73. package/dist/features/catalogue/components/PublicCatalogueView.js +2 -1
  74. package/dist/features/catalogue/index.d.ts +2 -0
  75. package/dist/features/catalogue/index.js +1 -0
  76. package/dist/features/categories/components/BundleDetailView.d.ts +3 -1
  77. package/dist/features/categories/components/BundleDetailView.js +3 -2
  78. package/dist/features/classified/components/ClassifiedContactSellerPanel.d.ts +12 -0
  79. package/dist/features/classified/components/ClassifiedContactSellerPanel.js +49 -0
  80. package/dist/features/classified/components/ClassifiedDetailPageView.d.ts +7 -0
  81. package/dist/features/classified/components/ClassifiedDetailPageView.js +69 -0
  82. package/dist/features/contact/components/ContactPageView.js +8 -2
  83. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.d.ts +19 -0
  84. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +79 -0
  85. package/dist/features/grouped/components/GroupedListingsCarousel.d.ts +13 -0
  86. package/dist/features/grouped/components/GroupedListingsCarousel.js +31 -0
  87. package/dist/features/grouped/repository/grouped-listings.repository.d.ts +8 -0
  88. package/dist/features/grouped/repository/grouped-listings.repository.js +16 -0
  89. package/dist/features/homepage/components/BrandsSection.js +3 -1
  90. package/dist/features/homepage/components/FeaturedBundlesSection.js +12 -1
  91. package/dist/features/homepage/components/GoogleReviewsSection.js +2 -2
  92. package/dist/features/homepage/components/HeroCarousel.js +3 -1
  93. package/dist/features/homepage/components/SectionCarousel.js +5 -2
  94. package/dist/features/homepage/components/SocialFeedSection.js +2 -2
  95. package/dist/features/homepage/components/WhatsAppCommunitySection.js +3 -1
  96. package/dist/features/layout/BackToTop.js +3 -1
  97. package/dist/features/layout/BottomActions.js +4 -3
  98. package/dist/features/layout/BottomActionsContext.d.ts +10 -0
  99. package/dist/features/layout/BottomActionsContext.js +5 -1
  100. package/dist/features/layout/SidebarLayout.js +7 -1
  101. package/dist/features/layout/hooks/useBottomActions.d.ts +2 -0
  102. package/dist/features/layout/hooks/useBottomActions.js +4 -1
  103. package/dist/features/live/components/LiveItemDetailPageView.d.ts +9 -0
  104. package/dist/features/live/components/LiveItemDetailPageView.js +74 -0
  105. package/dist/features/media/MediaVideo.js +17 -1
  106. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +9 -1
  107. package/dist/features/products/components/PrizeDrawDetailPageView.js +11 -1
  108. package/dist/features/products/components/ProductDetailPageView.js +11 -116
  109. package/dist/features/products/components/RelatedItemsSection.d.ts +16 -0
  110. package/dist/features/products/components/RelatedItemsSection.js +17 -0
  111. package/dist/features/seller/components/SellerProductShell.js +1 -1
  112. package/dist/features/seller/components/SellerSidebar.js +8 -2
  113. package/dist/features/shell/QuickFormDrawer.js +3 -1
  114. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +114 -3
  115. package/dist/hand-mode/index.d.ts +12 -0
  116. package/dist/hand-mode/index.js +11 -0
  117. package/dist/index.d.ts +2 -0
  118. package/dist/index.js +1 -0
  119. package/dist/next/routing/route-map.d.ts +2 -0
  120. package/dist/next/routing/route-map.js +7 -0
  121. package/dist/react/contexts/SessionContext.d.ts +5 -0
  122. package/dist/react/contexts/SessionContext.js +2 -0
  123. package/dist/seed/bids-seed-data.js +48 -3
  124. package/dist/seed/grouped-listings-seed-data.js +167 -0
  125. package/dist/seed/payouts-seed-data.js +4 -4
  126. package/dist/seed/products-art-seed-data.js +188 -5
  127. package/dist/seed/products-auctions-seed-data.js +215 -6
  128. package/dist/seed/products-classifieds-seed-data.js +255 -8
  129. package/dist/seed/products-digital-codes-seed-data.js +258 -19
  130. package/dist/seed/products-live-items-seed-data.js +143 -10
  131. package/dist/seed/products-preorders-seed-data.js +213 -8
  132. package/dist/seed/products-prize-draws-seed-data.js +198 -0
  133. package/dist/seed/products-standard-seed-data.js +141 -0
  134. package/dist/seed/products-stickers-seed-data.js +178 -5
  135. package/dist/seed/site-settings-seed-data.js +13 -31
  136. package/dist/seed/store-extensions-seed-data.js +1 -1
  137. package/dist/server-entry.d.ts +5 -2
  138. package/dist/server-entry.js +5 -2
  139. package/dist/server.d.ts +4 -2
  140. package/dist/server.js +4 -2
  141. package/dist/styles.css +30 -1
  142. package/dist/tailwind-utilities.css +1 -1
  143. package/dist/ui/components/Drawer.js +7 -4
  144. package/dist/ui/components/FilterDrawer.js +1 -1
  145. package/dist/ui/components/HandModeRow.d.ts +12 -0
  146. package/dist/ui/components/HandModeRow.js +18 -0
  147. package/dist/ui/components/ImageLightbox.js +37 -3
  148. package/dist/ui/components/ImageLightbox.style.css +28 -0
  149. package/dist/ui/components/Layout.d.ts +5 -1
  150. package/dist/ui/components/Layout.js +2 -1
  151. package/dist/ui/components/Layout.style.css +1 -0
  152. package/dist/ui/components/ListingFilterDrawer.js +3 -1
  153. package/dist/ui/components/Modal.js +3 -1
  154. package/dist/ui/components/SideDrawer.js +8 -5
  155. package/dist/ui/components/SideModal.js +7 -4
  156. package/dist/ui/index.d.ts +1 -0
  157. package/dist/ui/index.js +1 -0
  158. package/dist/utils/media-url.d.ts +9 -0
  159. package/dist/utils/media-url.js +39 -0
  160. package/package.json +1 -1
@@ -1,10 +1,13 @@
1
1
  /*
2
- * WHY: Sticker listings are out of scope for the minimal Beyblade-focused demo catalog.
3
- * WHAT: Exports an empty array kept as a stub so seed/index.ts and the seed API route's
4
- * SEED_DATA_MAP.products concatenation keep working without a code change elsewhere.
2
+ * WHY: `listingType: "stickers"` shares ProductPrintMeta (size/material/finish/editionSize)
3
+ * with "art"both printed-only physical goods. Previously left as an empty stub,
4
+ * but sticker sheets fit the Beyblade theme naturally (see CLAUDE.md seed-data
5
+ * blandness sweep, 2026-08-20 session).
6
+ * WHAT: Exports 5 Beyblade sticker-sheet listings on Beyblade Arena, varying size,
7
+ * material, and finish (including a holographic variant and a die-cut vinyl set).
5
8
  *
6
9
  * EXPORTS:
7
- * productsStickersSeedData — empty array
10
+ * productsStickersSeedData — Array of 5 Partial<ProductDocument> with listingType:"stickers"
8
11
  *
9
12
  * @tag domain:products,stickers
10
13
  * @tag layer:seed
@@ -13,4 +16,174 @@
13
16
  * @tag consumers:seed/index.ts,seed/runner.ts
14
17
  * @tag sideEffects:none
15
18
  */
16
- export const productsStickersSeedData = [];
19
+ import { PRODUCT_FIELDS } from "../constants/field-names";
20
+ import { buildSearchTokens } from "../utils/search-tokens";
21
+ import { seedExtMedia } from "./_helpers/media";
22
+ export const productsStickersSeedData = [
23
+ {
24
+ id: "stickers-beyblade-original-classic-sheet",
25
+ slug: "stickers-beyblade-original-classic-sheet",
26
+ title: "Beyblade Original Classic — Sticker Sheet",
27
+ description: "A 5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon in classic original-series art style.",
28
+ categorySlugs: ["category-beyblade-original", "category-spinning-tops"],
29
+ categoryNames: ["Beyblade Original", "Spinning Tops"],
30
+ brandSlug: "brand-beyblade",
31
+ brand: "Beyblade",
32
+ price: 149,
33
+ currency: "INR",
34
+ stockQuantity: 100,
35
+ availableQuantity: 100,
36
+ isSold: false,
37
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-original-classic-1-20260817/900/900"),
38
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-original-classic-1-20260817/900/900")],
39
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
40
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
41
+ listingType: "stickers",
42
+ storeId: "store-beyblade-arena",
43
+ storeName: "Beyblade Arena",
44
+ printMeta: { size: "5x5 cm sheet", material: "Vinyl", finish: "Glossy" },
45
+ customFields: [],
46
+ customSections: [],
47
+ featured: false,
48
+ isPromoted: false,
49
+ isOnSale: false,
50
+ tags: ["stickers", "vintage-collectible"],
51
+ createdAt: new Date("2026-08-17"),
52
+ updatedAt: new Date("2026-08-17"),
53
+ searchTokens: buildSearchTokens("Beyblade Original Classic — Sticker Sheet", "5x5 cm sticker sheet featuring Dranzer, Driger, Draciel, and Dragoon.", "Beyblade", "brand-beyblade", ["Beyblade Original", "Spinning Tops"], ["stickers", "vintage-collectible"]),
54
+ },
55
+ {
56
+ id: "stickers-beyblade-x-holographic-pack",
57
+ slug: "stickers-beyblade-x-holographic-pack",
58
+ title: "Beyblade X Holographic Sticker Pack",
59
+ description: "A holographic-finish sticker pack featuring the current Beyblade X lineup — catches the light with a rainbow shimmer.",
60
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
61
+ categoryNames: ["Beyblade X", "Spinning Tops"],
62
+ brandSlug: "brand-takara-tomy",
63
+ brand: "Takara-Tomy",
64
+ price: 199,
65
+ currency: "INR",
66
+ stockQuantity: 80,
67
+ availableQuantity: 62,
68
+ isSold: false,
69
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-1-20260818/900/900"),
70
+ images: [
71
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-1-20260818/900/900"),
72
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-holo-2-20260818/900/900"),
73
+ ],
74
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
75
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
76
+ listingType: "stickers",
77
+ storeId: "store-beyblade-arena",
78
+ storeName: "Beyblade Arena",
79
+ printMeta: { size: "8x10 cm sheet", material: "Holographic vinyl", finish: "Holographic" },
80
+ customFields: [],
81
+ customSections: [],
82
+ featured: true,
83
+ isPromoted: false,
84
+ isOnSale: false,
85
+ tags: ["stickers"],
86
+ createdAt: new Date("2026-08-18"),
87
+ updatedAt: new Date("2026-08-19"),
88
+ searchTokens: buildSearchTokens("Beyblade X Holographic Sticker Pack", "Holographic-finish sticker pack featuring the current Beyblade X lineup.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
89
+ },
90
+ {
91
+ id: "stickers-beyblade-burst-diecut-set",
92
+ slug: "stickers-beyblade-burst-diecut-set",
93
+ title: "Beyblade Burst Die-Cut Sticker Set (6-Pack)",
94
+ description: "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops — no background, clean edges, weatherproof.",
95
+ categorySlugs: ["category-beyblade-burst", "category-spinning-tops"],
96
+ categoryNames: ["Beyblade Burst", "Spinning Tops"],
97
+ brandSlug: "brand-beyblade",
98
+ brand: "Beyblade",
99
+ price: 249,
100
+ currency: "INR",
101
+ stockQuantity: 60,
102
+ availableQuantity: 60,
103
+ isSold: false,
104
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-burst-diecut-1-20260819/900/900"),
105
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-burst-diecut-1-20260819/900/900")],
106
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
107
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
108
+ listingType: "stickers",
109
+ storeId: "store-beyblade-arena",
110
+ storeName: "Beyblade Arena",
111
+ printMeta: { size: "Individually die-cut, ~6x6 cm each", material: "Weatherproof vinyl", finish: "Matte" },
112
+ customFields: [{ key: "Pack Count", type: "number", value: "6" }],
113
+ customSections: [],
114
+ featured: false,
115
+ isPromoted: false,
116
+ isOnSale: false,
117
+ tags: ["stickers"],
118
+ createdAt: new Date("2026-08-19"),
119
+ updatedAt: new Date("2026-08-19"),
120
+ searchTokens: buildSearchTokens("Beyblade Burst Die-Cut Sticker Set (6-Pack)", "Individually die-cut vinyl stickers of 6 fan-favorite Burst tops.", "Beyblade", "brand-beyblade", ["Beyblade Burst", "Spinning Tops"], ["stickers"]),
121
+ },
122
+ {
123
+ id: "stickers-beyblade-metal-retro-sheet",
124
+ slug: "stickers-beyblade-metal-retro-sheet",
125
+ title: "Metal Fight Retro Sticker Sheet — Limited /500",
126
+ description: "A limited-edition retro-styled sticker sheet celebrating Metal Fight favorites, numbered out of 500.",
127
+ categorySlugs: ["category-beyblade-metal", "category-spinning-tops"],
128
+ categoryNames: ["Beyblade Metal Fight", "Spinning Tops"],
129
+ brandSlug: "brand-takara-tomy",
130
+ brand: "Takara-Tomy",
131
+ price: 179,
132
+ currency: "INR",
133
+ stockQuantity: 500,
134
+ availableQuantity: 214,
135
+ isSold: false,
136
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-metal-retro-1-20260819/900/900"),
137
+ images: [seedExtMedia("https://picsum.photos/seed/stickers-image-metal-retro-1-20260819/900/900")],
138
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
139
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
140
+ listingType: "stickers",
141
+ storeId: "store-beyblade-arena",
142
+ storeName: "Beyblade Arena",
143
+ printMeta: { size: "6x8 cm sheet", material: "Vinyl", finish: "Matte", editionSize: 500 },
144
+ customFields: [],
145
+ customSections: [],
146
+ featured: false,
147
+ isPromoted: false,
148
+ isOnSale: false,
149
+ tags: ["stickers", "vintage-collectible", "limited-run"],
150
+ createdAt: new Date("2026-08-19"),
151
+ updatedAt: new Date("2026-08-19"),
152
+ searchTokens: buildSearchTokens("Metal Fight Retro Sticker Sheet — Limited /500", "Limited-edition retro-styled sticker sheet, numbered out of 500.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade Metal Fight", "Spinning Tops"], ["stickers", "vintage-collectible", "limited-run"]),
153
+ },
154
+ {
155
+ id: "stickers-beyblade-x-glow-in-dark",
156
+ slug: "stickers-beyblade-x-glow-in-dark",
157
+ title: "Beyblade X Glow-in-the-Dark Sticker Pack",
158
+ description: "Charge these stickers under light and watch the Beyblade X logos glow in the dark. Great for stadium cases and water bottles.",
159
+ categorySlugs: ["category-beyblade-x", "category-spinning-tops"],
160
+ categoryNames: ["Beyblade X", "Spinning Tops"],
161
+ brandSlug: "brand-takara-tomy",
162
+ brand: "Takara-Tomy",
163
+ price: 229,
164
+ currency: "INR",
165
+ stockQuantity: 45,
166
+ availableQuantity: 45,
167
+ isSold: false,
168
+ mainImage: seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-1-20260819/900/900"),
169
+ images: [
170
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-1-20260819/900/900"),
171
+ seedExtMedia("https://picsum.photos/seed/stickers-image-x-glow-2-20260819/900/900"),
172
+ ],
173
+ status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
174
+ condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
175
+ listingType: "stickers",
176
+ storeId: "store-beyblade-arena",
177
+ storeName: "Beyblade Arena",
178
+ printMeta: { size: "7x9 cm sheet", material: "Glow-in-the-dark vinyl", finish: "Matte" },
179
+ customFields: [{ key: "Glow Duration", type: "text", value: "~3 hours after charging" }],
180
+ customSections: [],
181
+ featured: true,
182
+ isPromoted: true,
183
+ isOnSale: false,
184
+ tags: ["stickers"],
185
+ createdAt: new Date("2026-08-19"),
186
+ updatedAt: new Date("2026-08-19"),
187
+ searchTokens: buildSearchTokens("Beyblade X Glow-in-the-Dark Sticker Pack", "Charge under light and watch the Beyblade X logos glow in the dark.", "Takara-Tomy", "brand-takara-tomy", ["Beyblade X", "Spinning Tops"], ["stickers"]),
188
+ },
189
+ ];
@@ -12,9 +12,6 @@
12
12
  * @tag consumers:seed/index.ts,seed/runner.ts
13
13
  * @tag sideEffects:none
14
14
  */
15
- import { getDefaultPhonePrefix, getSeedLocale } from "./seed-market-config";
16
- const _phonePrefix = getDefaultPhonePrefix();
17
- const _locale = getSeedLocale();
18
15
  import { seedExtMedia } from "./_helpers/media";
19
16
  import { ROUTES } from "../next/routing/route-map";
20
17
  const NOW = new Date();
@@ -119,31 +116,16 @@ export const siteSettingsSeedData = {
119
116
  { year: "2026", text: "Pre-orders, events, raffles, and a mobile-first redesign — built for the community that showed up, bid, sold, and kept coming back." },
120
117
  ],
121
118
  teamTitle: "Who's Behind LetItRip",
122
- teamSubtitle: "A small team obsessed with the same thing you are — the hunt for the next piece of the collection.",
119
+ teamSubtitle: "One collector obsessed with the same thing you are — the hunt for the next piece of the collection.",
123
120
  teamMembers: [
124
121
  {
125
- name: "Arjun Verma",
122
+ name: "Mohasin Chinnapattan",
126
123
  role: "Founder & Developer",
127
124
  bio: "Started LetItRip after one too many afternoons hunting for a specific 1st-edition card across a dozen disconnected forums and marketplaces. Built the entire platform — Next.js front end, Firebase backend, the auction engine, the whole thing — the same way most great collections start: one late night at a time. Still personally answers the support inbox.",
128
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-arjun-verma-20260819/400/400"),
125
+ photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-mohasin-chinnapattan-20260820/400/400"),
129
126
  isFounder: true,
130
127
  isDeveloper: true,
131
- },
132
- {
133
- name: "Ananya Rao",
134
- role: "Community & Trust",
135
- bio: "Keeps the marketplace honest — seller verification, dispute resolution, and the reason LetItRip's escrow system actually works the way it's supposed to. Collects vintage diecast when she isn't reviewing seller applications.",
136
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-ananya-rao-20260819/400/400"),
137
- isFounder: false,
138
- isDeveloper: false,
139
- },
140
- {
141
- name: "Devansh Mehta",
142
- role: "Seller Success",
143
- bio: "Helps new stores go from zero listings to their first sale — onboarding, storefront setup, and the occasional 2 a.m. \"why isn't my auction showing up\" message. Runs a Beyblade collection that has outgrown two apartments.",
144
- photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-devansh-mehta-20260819/400/400"),
145
- isFounder: false,
146
- isDeveloper: false,
128
+ githubUrl: "https://github.com/mohasinac",
147
129
  },
148
130
  ],
149
131
  ctaTitle: "Ready to Let It Rip?",
@@ -172,10 +154,10 @@ export const siteSettingsSeedData = {
172
154
  },
173
155
  contact: {
174
156
  email: "support@letitrip.in",
175
- phone: `${_phonePrefix}-9876543210`,
176
- address: `123, Marketplace Street, ${_locale.cities[0][0]}, ${_locale.cities[0][1]} - ${_locale.cities[0][2]}, ${_locale.countryName}`,
177
- upiVpa: "letitrip@upi",
178
- whatsappNumber: `${_phonePrefix.replace(/[^+\d]/g, "")}9876543210`,
157
+ phone: "+91-8919665811",
158
+ address: "Siddeshwar Peth, Solapur, Maharashtra 413001",
159
+ upiVpa: "mohsin0502@okicici",
160
+ whatsappNumber: "918919665811",
179
161
  },
180
162
  payment: {
181
163
  razorpayEnabled: false,
@@ -193,10 +175,10 @@ export const siteSettingsSeedData = {
193
175
  surchargeSellerSharePercent: 50,
194
176
  },
195
177
  socialLinks: {
196
- facebook: "https://facebook.com/letitrip",
197
- twitter: "https://twitter.com/letitrip",
198
- instagram: "https://instagram.com/letitrip",
199
- linkedin: "https://linkedin.com/company/letitrip",
178
+ facebook: "",
179
+ twitter: "",
180
+ instagram: "",
181
+ linkedin: "",
200
182
  },
201
183
  emailSettings: {
202
184
  fromName: "LetItRip",
@@ -355,7 +337,7 @@ export const siteSettingsSeedData = {
355
337
  minOrderValue: 999,
356
338
  returnWindow: 7,
357
339
  supportEmail: "support@letitrip.in",
358
- supportPhone: `${_phonePrefix}-9876543210`,
340
+ supportPhone: "+91-8919665811",
359
341
  codDeposit: 0.1,
360
342
  },
361
343
  },
@@ -49,7 +49,7 @@ export const payoutMethodsSeedData = [
49
49
  storeId: "store-letitrip-official",
50
50
  type: "upi",
51
51
  label: "LetItRip UPI",
52
- upiVpa: "letitrip@upi",
52
+ upiVpa: "mohsin0502@okicici",
53
53
  isDefault: true,
54
54
  isActive: true,
55
55
  },
@@ -28,6 +28,9 @@ export { PrizeDrawsListingView } from "./features/products/components/PrizeDraws
28
28
  export { PrizeDrawDetailPageView } from "./features/products/components/PrizeDrawDetailPageView";
29
29
  export { ProductDetailPageView } from "./features/products/components/ProductDetailPageView";
30
30
  export { ProductsIndexPageView } from "./features/products/components/ProductsIndexPageView";
31
+ export { ClassifiedDetailPageView } from "./features/classified/components/ClassifiedDetailPageView";
32
+ export { DigitalCodeDetailPageView } from "./features/digital-codes/components/DigitalCodeDetailPageView";
33
+ export { LiveItemDetailPageView } from "./features/live/components/LiveItemDetailPageView";
31
34
  export { ArtStickersListView } from "./features/products/components/ArtStickersListView";
32
35
  export { ReviewsIndexPageView } from "./features/reviews/components/ReviewsIndexPageView";
33
36
  export { ReviewDetailPageView } from "./features/reviews/components/ReviewDetailPageView";
@@ -61,8 +64,8 @@ export { renderFaqOg, renderFaqOgImage, type FaqOgData, } from "./_internal/serv
61
64
  export { renderScamOg, renderScamOgImage, type ScamOgData, getScammerForDetail, getScammerProfilePageData as getScammerProfilePageDataCached, } from "./_internal/server/features/scams/index";
62
65
  export { getSearchResults, searchAction, type SearchQuery, } from "./_internal/server/features/search/index";
63
66
  export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
64
- export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
65
- export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type VerifyAndPlaceRazorpayOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, } from "./_internal/server/features/checkout/index";
67
+ export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, type GroupedListingWithItems, type ListGroupedListingsParams, type SitemapGroupedListing, } from "./_internal/server/features/grouped/index";
68
+ export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, previewCheckoutPricing, resolveShippingCost, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, type CreateCheckoutOrderInput, type VerifyAndPlaceRazorpayOrderInput, type CheckoutOrderResult, type CheckoutPaymentMethod, type CheckoutPricingPreviewInput, type CheckoutPricingPreview, } from "./_internal/server/features/checkout/index";
66
69
  export { processRefundAction, type ProcessRefundInput, } from "./_internal/server/features/refunds/actions";
67
70
  export { createPaymentIntentAction, verifyPaymentSignatureAction, resolvePaymentFee, PAYMENTS_DEFAULT_PLATFORM_FEE_PERCENT, PAYMENTS_DEFAULT_GST_PERCENT, PAYMENTS_RECEIPT_PREFIX, type CreatePaymentIntentInput, type CreatePaymentIntentResult, type VerifyPaymentSignatureInput, type ResolvedPaymentFee, } from "./_internal/server/features/payments/index";
68
71
  export { getSublistingCategoryForDetail } from "./_internal/server/features/sublisting-categories/index";
@@ -33,6 +33,9 @@ export { PrizeDrawsListingView } from "./features/products/components/PrizeDraws
33
33
  export { PrizeDrawDetailPageView } from "./features/products/components/PrizeDrawDetailPageView";
34
34
  export { ProductDetailPageView } from "./features/products/components/ProductDetailPageView";
35
35
  export { ProductsIndexPageView } from "./features/products/components/ProductsIndexPageView";
36
+ export { ClassifiedDetailPageView } from "./features/classified/components/ClassifiedDetailPageView";
37
+ export { DigitalCodeDetailPageView } from "./features/digital-codes/components/DigitalCodeDetailPageView";
38
+ export { LiveItemDetailPageView } from "./features/live/components/LiveItemDetailPageView";
36
39
  export { ArtStickersListView } from "./features/products/components/ArtStickersListView";
37
40
  export { ReviewsIndexPageView } from "./features/reviews/components/ReviewsIndexPageView";
38
41
  export { ReviewDetailPageView } from "./features/reviews/components/ReviewDetailPageView";
@@ -85,12 +88,12 @@ export { getSearchResults, searchAction, } from "./_internal/server/features/sea
85
88
  // S3: categories data layer
86
89
  export { getCategoryForDetail, listRootCategories, listFeaturedCategories, listMenuCategories, getCategoryTree, listSitemapCategories, CATEGORIES_PAGE_SIZE, CATEGORIES_ROOT_TIER, CATEGORIES_MAX_DEPTH, CATEGORIES_SITEMAP_LIMIT, CATEGORIES_FEATURED_LIMIT, CATEGORIES_MENU_LIMIT, } from "./_internal/server/features/categories/index";
87
90
  // S3: grouped listings data layer
88
- export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, } from "./_internal/server/features/grouped/index";
91
+ export { getGroupedListingForDetail, getGroupedListingWithItems, listGroupedListings, listFeaturedGroupedListings, listSitemapGroupedListings, getGroupsForProduct, getGroupsWithItemsForProduct, GROUPED_LISTINGS_PAGE_SIZE, GROUPED_LISTINGS_FEATURED_LIMIT, GROUPED_LISTINGS_SITEMAP_LIMIT, } from "./_internal/server/features/grouped/index";
89
92
  // SB-UNI-V — bundles data layer deleted; consumers should query
90
93
  // `categoriesRepository.findBySlugAndType(slug, "bundle")` /
91
94
  // `.listByType("bundle", opts)` / `.findById(id)` directly.
92
95
  // S4: checkout actions
93
- export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, } from "./_internal/server/features/checkout/index";
96
+ export { createCheckoutOrderAction, attachPaymentAction, verifyAndPlaceRazorpayOrderAction, previewCheckoutPricing, resolveShippingCost, formatShippingAddress, CHECKOUT_DEFAULT_COMMISSIONS, CHECKOUT_PAYMENT_METHODS, } from "./_internal/server/features/checkout/index";
94
97
  // S-SBUNI-RULES: refund action
95
98
  export { processRefundAction, } from "./_internal/server/features/refunds/actions";
96
99
  // S4: payments actions
package/dist/server.d.ts CHANGED
@@ -495,8 +495,9 @@ export { fetchGoogleReviews } from "./features/homepage/lib/google-reviews-fetch
495
495
  export type { GoogleReview, GoogleReviewsResult } from "./features/homepage/lib/google-reviews-fetcher";
496
496
  export { GoogleReviewsSection } from "./features/homepage/components/GoogleReviewsSection";
497
497
  export type { GoogleReviewsSectionProps } from "./features/homepage/components/GoogleReviewsSection";
498
- export { getProductForDetail, listSitemapProducts, type SitemapProduct } from "./_internal/server/features/products/index";
499
- export { getBundleForDetail, listBundleMembers, listFeaturedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
498
+ export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProductItem, type SitemapProduct, type RelatedItemsResult, } from "./_internal/server/features/products/index";
499
+ export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, type BundleDataOptions, type BundleMetadataOptions, type BundleOgData, } from "./_internal/server/features/bundles/index";
500
+ export { getGroupsForProduct, getGroupsWithItemsForProduct } from "./_internal/server/features/grouped/index";
500
501
  export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
501
502
  export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
502
503
  export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
@@ -548,6 +549,7 @@ export { getItemRequestForDetail, renderItemRequestOg, renderItemRequestOgImage,
548
549
  export { toClientClassified, type ClassifiedClientShape } from "./_internal/server/features/classified/adapters";
549
550
  export { buildClassifiedMetadata, type ClassifiedMetadataOptions } from "./_internal/server/features/classified/metadata";
550
551
  export { renderClassifiedOg, renderClassifiedOgImage, renderClassifiedOgFromDoc, type ClassifiedOgData } from "./_internal/server/features/classified/og";
552
+ export { renderCatalogueItemOg, renderCatalogueItemOgImage, type CatalogueItemOgData } from "./_internal/server/features/catalogue/og";
551
553
  export { getDigitalCodeForDetail } from "./_internal/server/features/digital-code/data";
552
554
  export { toClientDigitalCode, type DigitalCodeClientShape } from "./_internal/server/features/digital-code/adapters";
553
555
  export { buildDigitalCodeMetadata, type DigitalCodeMetadataOptions } from "./_internal/server/features/digital-code/metadata";
package/dist/server.js CHANGED
@@ -1347,9 +1347,10 @@ export { GoogleReviewsSection } from "./features/homepage/components/GoogleRevie
1347
1347
  // `@mohasinac/appkit/server` subpath (preferred for SSR route files).
1348
1348
  // ---------------------------------------------------------------------------
1349
1349
  // Data layers — each wrapped in React.cache for request-scoped dedup
1350
- export { getProductForDetail, listSitemapProducts } from "./_internal/server/features/products/index";
1350
+ export { getProductForDetail, listSitemapProducts, computeRelatedItems, toProductItem, } from "./_internal/server/features/products/index";
1351
1351
  // S-SBUNI-3/4 2026-05-13 — bundle data/metadata/og layer.
1352
- export { getBundleForDetail, listBundleMembers, listFeaturedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
1352
+ export { getBundleForDetail, listBundleMembers, listFeaturedBundles, getRelatedBundles, resolveBundleMemberIds, resolveBundleOriginalTotal, buildBundleMetadata, renderBundleOg, renderBundleOgImage, addBundleToCartAction, } from "./_internal/server/features/bundles/index";
1353
+ export { getGroupsForProduct, getGroupsWithItemsForProduct } from "./_internal/server/features/grouped/index";
1353
1354
  export { getAuctionForDetail, getProductFeaturesForAuction } from "./_internal/server/features/auctions/index";
1354
1355
  export { getPreOrderForDetail, getProductFeaturesForPreOrder } from "./_internal/server/features/pre-orders/index";
1355
1356
  export { getStoreForDetail, listStoreProductsInitial, listStoreAuctionsInitial, listStorePreOrdersInitial, listSitemapStores } from "./_internal/server/features/stores/index";
@@ -1409,6 +1410,7 @@ export { getItemRequestForDetail, renderItemRequestOg, renderItemRequestOgImage,
1409
1410
  export { toClientClassified } from "./_internal/server/features/classified/adapters";
1410
1411
  export { buildClassifiedMetadata } from "./_internal/server/features/classified/metadata";
1411
1412
  export { renderClassifiedOg, renderClassifiedOgImage, renderClassifiedOgFromDoc } from "./_internal/server/features/classified/og";
1413
+ export { renderCatalogueItemOg, renderCatalogueItemOgImage } from "./_internal/server/features/catalogue/og";
1412
1414
  // ── Digital-code listing — data + adapters + metadata + OG ───────────────────
1413
1415
  export { getDigitalCodeForDetail } from "./_internal/server/features/digital-code/data";
1414
1416
  export { toClientDigitalCode } from "./_internal/server/features/digital-code/adapters";