@mohasinac/appkit 4.14.0 → 4.16.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 (206) hide show
  1. package/dist/_internal/server/features/auctions/actions.js +2 -2
  2. package/dist/_internal/server/features/cart/service.d.ts +3 -3
  3. package/dist/_internal/server/features/checkout/actions.js +19 -0
  4. package/dist/_internal/server/features/checkout/source-context.d.ts +5 -0
  5. package/dist/_internal/server/features/checkout/source-context.js +157 -0
  6. package/dist/_internal/server/features/offers/adapters.d.ts +103 -0
  7. package/dist/_internal/server/features/offers/adapters.js +88 -0
  8. package/dist/_internal/server/features/offers/index.d.ts +2 -0
  9. package/dist/_internal/server/features/offers/index.js +1 -0
  10. package/dist/_internal/server/features/orders/adapters.js +24 -0
  11. package/dist/_internal/server/jobs/core/offerExpiry.js +10 -10
  12. package/dist/_internal/shared/actions/action-registry.d.ts +9 -2
  13. package/dist/_internal/shared/actions/action-registry.js +458 -7
  14. package/dist/_internal/shared/features/auctions/schema.d.ts +14 -2
  15. package/dist/_internal/shared/features/auctions/schema.js +13 -1
  16. package/dist/_internal/shared/features/blog/schema.d.ts +4 -4
  17. package/dist/_internal/shared/features/cart/schema.d.ts +25 -20
  18. package/dist/_internal/shared/features/cart/schema.js +15 -0
  19. package/dist/_internal/shared/features/categories/bundle-schemas.d.ts +22 -22
  20. package/dist/_internal/shared/features/orders/schema.d.ts +4 -4
  21. package/dist/_internal/shared/features/products/schema.d.ts +27 -27
  22. package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
  23. package/dist/_internal/shared/features/reviews/schema.d.ts +2 -2
  24. package/dist/_internal/shared/history/history.d.ts +22 -0
  25. package/dist/_internal/shared/history/history.js +41 -1
  26. package/dist/client.d.ts +13 -2
  27. package/dist/client.js +20 -2
  28. package/dist/constants/field-names.d.ts +8 -6
  29. package/dist/constants/field-names.js +48 -6
  30. package/dist/contracts/extend.d.ts +29 -0
  31. package/dist/contracts/extend.js +20 -0
  32. package/dist/contracts/index.d.ts +2 -1
  33. package/dist/contracts/index.js +2 -0
  34. package/dist/features/account/components/UserBidsView.js +12 -4
  35. package/dist/features/account/components/UserReturnsView.d.ts +3 -0
  36. package/dist/features/account/components/UserReturnsView.js +17 -1
  37. package/dist/features/admin/components/AdminAuditLogView.js +1 -0
  38. package/dist/features/admin/components/AdminBidsView.js +15 -2
  39. package/dist/features/admin/components/AdminBlogEditorView.js +65 -33
  40. package/dist/features/admin/components/AdminFeatureEditorView.js +35 -6
  41. package/dist/features/admin/components/AdminNavEditorView.js +15 -5
  42. package/dist/features/admin/components/AdminNewsletterView.js +18 -2
  43. package/dist/features/admin/components/AdminOffersView.js +62 -18
  44. package/dist/features/admin/components/AdminPaymentMethodsView.js +24 -4
  45. package/dist/features/admin/components/AdminScammerEditorView.d.ts +2 -1
  46. package/dist/features/admin/components/AdminScammerEditorView.js +3 -13
  47. package/dist/features/admin/components/AdminScammersView.js +3 -8
  48. package/dist/features/admin/components/AdminSectionsView.js +32 -23
  49. package/dist/features/admin/components/AdminSessionsView.js +17 -2
  50. package/dist/features/admin/components/AdminViewCards.js +24 -17
  51. package/dist/features/admin/components/DataListingView.js +15 -1
  52. package/dist/features/admin/components/DataTable.js +7 -17
  53. package/dist/features/admin/components/ViewAuditLogEntryModal.js +1 -0
  54. package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +4 -2
  55. package/dist/features/admin/components/sections/adminSectionsTypes.js +45 -27
  56. package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
  57. package/dist/features/admin/constants/filter-tabs.js +1 -0
  58. package/dist/features/admin/schemas/homepage-section-form.d.ts +22 -0
  59. package/dist/features/admin/schemas/homepage-section-form.js +68 -0
  60. package/dist/features/admin/schemas/nav-item-form.d.ts +74 -0
  61. package/dist/features/admin/schemas/nav-item-form.js +72 -0
  62. package/dist/features/auctions/components/AuctionBidsTable.d.ts +10 -1
  63. package/dist/features/auctions/components/AuctionBidsTable.js +22 -4
  64. package/dist/features/auctions/components/bid-detail-fields.d.ts +29 -0
  65. package/dist/features/auctions/components/bid-detail-fields.js +103 -0
  66. package/dist/features/auctions/schemas/index.d.ts +14 -14
  67. package/dist/features/audit-log/schemas/firestore.d.ts +14 -0
  68. package/dist/features/audit-log/schemas/firestore.js +7 -0
  69. package/dist/features/auth/schemas/index.d.ts +2 -2
  70. package/dist/features/blog/actions/blog-actions.d.ts +7 -7
  71. package/dist/features/blog/schemas/blog-form.d.ts +80 -0
  72. package/dist/features/blog/schemas/blog-form.js +100 -0
  73. package/dist/features/blog/schemas/index.d.ts +10 -10
  74. package/dist/features/cart/schemas/index.d.ts +3 -3
  75. package/dist/features/catalogue/schemas/validation.d.ts +12 -12
  76. package/dist/features/categories/schemas/index.d.ts +16 -16
  77. package/dist/features/collections/schemas/index.d.ts +8 -8
  78. package/dist/features/events/components/AdminEventEditorView.js +32 -54
  79. package/dist/features/events/components/AdminEventEntriesView.js +22 -3
  80. package/dist/features/events/schemas/event-form.d.ts +113 -0
  81. package/dist/features/events/schemas/event-form.js +82 -0
  82. package/dist/features/events/schemas/index.d.ts +2 -2
  83. package/dist/features/faq/actions/faq-actions.d.ts +6 -6
  84. package/dist/features/faq/schemas/index.d.ts +6 -6
  85. package/dist/features/grouped/schemas/grouped-listing-form.d.ts +101 -0
  86. package/dist/features/grouped/schemas/grouped-listing-form.js +89 -0
  87. package/dist/features/grouped/schemas/index.d.ts +4 -4
  88. package/dist/features/homepage/actions/homepage-section-actions.d.ts +11 -3
  89. package/dist/features/homepage/actions/homepage-section-actions.js +33 -1
  90. package/dist/features/homepage/schemas/index.d.ts +71 -40
  91. package/dist/features/homepage/schemas/index.js +24 -0
  92. package/dist/features/messages/schemas/index.d.ts +2 -2
  93. package/dist/features/orders/components/OrderStatusTimeline.d.ts +5 -1
  94. package/dist/features/orders/components/OrderStatusTimeline.js +39 -20
  95. package/dist/features/orders/repository/orders.repository.js +5 -0
  96. package/dist/features/orders/schemas/firestore.d.ts +36 -1
  97. package/dist/features/orders/schemas/index.d.ts +24 -24
  98. package/dist/features/orders/types/index.d.ts +35 -7
  99. package/dist/features/pre-orders/schemas/index.d.ts +4 -4
  100. package/dist/features/products/components/GroupSettingsPanel.js +5 -1
  101. package/dist/features/products/schemas/index.d.ts +38 -38
  102. package/dist/features/products/schemas/product-features.validators.d.ts +75 -2
  103. package/dist/features/products/schemas/product-features.validators.js +63 -0
  104. package/dist/features/promotions/schemas/index.d.ts +14 -14
  105. package/dist/features/reviews/schemas/index.d.ts +14 -14
  106. package/dist/features/scams/constants/scammer-status-display.d.ts +28 -0
  107. package/dist/features/scams/constants/scammer-status-display.js +79 -0
  108. package/dist/features/scams/schemas/index.d.ts +2 -2
  109. package/dist/features/search/schemas/index.d.ts +2 -2
  110. package/dist/features/seller/actions/offer-actions.js +32 -2
  111. package/dist/features/seller/components/OfferPhaseTimeline.d.ts +59 -0
  112. package/dist/features/seller/components/OfferPhaseTimeline.js +107 -0
  113. package/dist/features/seller/components/SellerBidsView.js +11 -4
  114. package/dist/features/seller/components/SellerCouponEditorView.js +17 -17
  115. package/dist/features/seller/components/SellerOffersView.js +2 -1
  116. package/dist/features/seller/components/SellerPayoutSettingsView.js +38 -14
  117. package/dist/features/seller/repository/offer.repository.d.ts +69 -8
  118. package/dist/features/seller/repository/offer.repository.js +127 -23
  119. package/dist/features/seller/schemas/coupon-form.d.ts +72 -0
  120. package/dist/features/seller/schemas/coupon-form.js +116 -0
  121. package/dist/features/seller/schemas/firestore.d.ts +56 -2
  122. package/dist/features/seller/schemas/firestore.js +27 -0
  123. package/dist/features/seller/schemas/index.d.ts +2 -2
  124. package/dist/features/seller/schemas/offer-forms.d.ts +21 -0
  125. package/dist/features/seller/schemas/offer-forms.js +21 -0
  126. package/dist/features/shell/build-sections.d.ts +63 -0
  127. package/dist/features/shell/build-sections.js +207 -0
  128. package/dist/features/shell/field-ui-meta.d.ts +115 -0
  129. package/dist/features/shell/field-ui-meta.js +324 -0
  130. package/dist/features/shell/index.d.ts +4 -0
  131. package/dist/features/shell/index.js +2 -0
  132. package/dist/features/shipments/schemas/validation.d.ts +22 -22
  133. package/dist/features/status-history/components/StatusTimeline.d.ts +74 -0
  134. package/dist/features/status-history/components/StatusTimeline.js +46 -0
  135. package/dist/features/status-history/index.d.ts +11 -0
  136. package/dist/features/status-history/index.js +10 -0
  137. package/dist/features/store-extensions/components/ReviewDecisionModal.d.ts +27 -0
  138. package/dist/features/store-extensions/components/ReviewDecisionModal.js +82 -0
  139. package/dist/features/store-extensions/index.d.ts +12 -0
  140. package/dist/features/store-extensions/index.js +12 -0
  141. package/dist/features/store-extensions/schemas/admin-notification-form.d.ts +36 -0
  142. package/dist/features/store-extensions/schemas/admin-notification-form.js +114 -0
  143. package/dist/features/store-extensions/schemas/analytics-forms.d.ts +57 -0
  144. package/dist/features/store-extensions/schemas/analytics-forms.js +158 -0
  145. package/dist/features/store-extensions/schemas/custom-role-form.d.ts +85 -0
  146. package/dist/features/store-extensions/schemas/custom-role-form.js +118 -0
  147. package/dist/features/store-extensions/schemas/firestore.d.ts +21 -1
  148. package/dist/features/store-extensions/schemas/firestore.js +60 -0
  149. package/dist/features/store-extensions/schemas/google-config-form.d.ts +53 -0
  150. package/dist/features/store-extensions/schemas/google-config-form.js +105 -0
  151. package/dist/features/store-extensions/schemas/item-request-create-form.d.ts +28 -0
  152. package/dist/features/store-extensions/schemas/item-request-create-form.js +80 -0
  153. package/dist/features/store-extensions/schemas/listing-template-form.d.ts +78 -0
  154. package/dist/features/store-extensions/schemas/listing-template-form.js +87 -0
  155. package/dist/features/store-extensions/schemas/moderation-review-form.d.ts +49 -0
  156. package/dist/features/store-extensions/schemas/moderation-review-form.js +101 -0
  157. package/dist/features/store-extensions/schemas/payout-method-form.d.ts +153 -0
  158. package/dist/features/store-extensions/schemas/payout-method-form.js +155 -0
  159. package/dist/features/store-extensions/schemas/report-create-form.d.ts +25 -0
  160. package/dist/features/store-extensions/schemas/report-create-form.js +79 -0
  161. package/dist/features/store-extensions/schemas/report-review-form.d.ts +47 -0
  162. package/dist/features/store-extensions/schemas/report-review-form.js +111 -0
  163. package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +148 -0
  164. package/dist/features/store-extensions/schemas/shipping-config-form.js +104 -0
  165. package/dist/features/store-extensions/schemas/store-category-form.d.ts +54 -0
  166. package/dist/features/store-extensions/schemas/store-category-form.js +73 -0
  167. package/dist/features/stores/schemas/index.d.ts +4 -4
  168. package/dist/features/support/schemas/index.d.ts +4 -4
  169. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +350 -0
  170. package/dist/features/wishlist/hooks/useWishlistWithGuest.d.ts +1 -1
  171. package/dist/index.d.ts +12 -2
  172. package/dist/index.js +12 -2
  173. package/dist/next/routing/route-map.d.ts +16 -2
  174. package/dist/next/routing/route-map.js +9 -2
  175. package/dist/schemas/firestore-value.d.ts +8 -0
  176. package/dist/schemas/firestore-value.js +44 -0
  177. package/dist/schemas/index.d.ts +1 -1
  178. package/dist/schemas/index.js +1 -1
  179. package/dist/schemas/registry.d.ts +734 -101
  180. package/dist/schemas/registry.js +64 -1
  181. package/dist/seed/bids-seed-data.js +30 -0
  182. package/dist/seed/offers-seed-data.js +212 -7
  183. package/dist/seed/orders-seed-data.js +336 -1
  184. package/dist/seed/products-auctions-seed-data.js +41 -0
  185. package/dist/server.d.ts +2 -0
  186. package/dist/server.js +5 -0
  187. package/dist/styles.css +1 -1
  188. package/dist/tailwind-utilities.css +1 -1
  189. package/dist/ui/DataTable.js +4 -2
  190. package/dist/ui/columns/build-columns.d.ts +6 -1
  191. package/dist/ui/columns/build-columns.js +53 -0
  192. package/dist/ui/columns/cell-renderers.d.ts +68 -0
  193. package/dist/ui/columns/cell-renderers.js +111 -0
  194. package/dist/ui/columns/column-renderers.d.ts +6 -1
  195. package/dist/ui/columns/column-renderers.js +6 -1
  196. package/dist/ui/columns/index.d.ts +2 -1
  197. package/dist/ui/columns/index.js +5 -1
  198. package/dist/ui/components/Button.js +27 -2
  199. package/dist/ui/components/RecordDetailModal.d.ts +10 -1
  200. package/dist/ui/components/RecordDetailModal.js +2 -2
  201. package/dist/ui/icons/icon-registry.d.ts +65 -0
  202. package/dist/ui/icons/icon-registry.js +115 -0
  203. package/package.json +2 -1
  204. package/scripts/node-esm-loader.mjs +65 -0
  205. package/scripts/seed-cli-loader.mjs +6 -49
  206. package/scripts/seed-cli.mjs +1 -1
@@ -1,5 +1,17 @@
1
1
  import { z } from "zod";
2
- export declare const placeBidSchema: z.ZodObject<{
2
+ /**
3
+ * Server-action input for placing a bid.
4
+ *
5
+ * Renamed from `placeBidSchema` 2026-08-24 (W3): a DIFFERENT `placeBidSchema`
6
+ * exists at `features/auctions/schemas/bid-input.ts`, and the two are not
7
+ * variants of one thing — that one is a client FORM factory taking the minimum
8
+ * bid and returning `{ bidAmount }`, this one is the action payload
9
+ * `{ auctionId, amount }`. Same name, different layer, different field names,
10
+ * incompatible shapes. Two same-named exports in one package is a defect even
11
+ * when both are correct, because the choice between them is invisible at the
12
+ * call site (Root Cause #36, one union over).
13
+ */
14
+ export declare const placeBidActionSchema: z.ZodObject<{
3
15
  auctionId: z.ZodString;
4
16
  amount: z.ZodNumber;
5
17
  }, "strip", z.ZodTypeAny, {
@@ -26,5 +38,5 @@ export declare const buyNowSchema: z.ZodObject<{
26
38
  }, {
27
39
  auctionId: string;
28
40
  }>;
29
- export type PlaceBidInput = z.infer<typeof placeBidSchema>;
41
+ export type PlaceBidActionInput = z.infer<typeof placeBidActionSchema>;
30
42
  export type CancelBidInput = z.infer<typeof cancelBidSchema>;
@@ -1,5 +1,17 @@
1
1
  import { z } from "zod";
2
- export const placeBidSchema = z.object({
2
+ /**
3
+ * Server-action input for placing a bid.
4
+ *
5
+ * Renamed from `placeBidSchema` 2026-08-24 (W3): a DIFFERENT `placeBidSchema`
6
+ * exists at `features/auctions/schemas/bid-input.ts`, and the two are not
7
+ * variants of one thing — that one is a client FORM factory taking the minimum
8
+ * bid and returning `{ bidAmount }`, this one is the action payload
9
+ * `{ auctionId, amount }`. Same name, different layer, different field names,
10
+ * incompatible shapes. Two same-named exports in one package is a defect even
11
+ * when both are correct, because the choice between them is invisible at the
12
+ * call site (Root Cause #36, one union over).
13
+ */
14
+ export const placeBidActionSchema = z.object({
3
15
  auctionId: z.string().min(1),
4
16
  amount: z.number().positive("Bid amount must be a positive number"),
5
17
  });
@@ -16,8 +16,8 @@ export declare const blogPostInputSchema: z.ZodObject<{
16
16
  status: "draft" | "published";
17
17
  title: string;
18
18
  content: string;
19
- slug: string;
20
19
  category: string;
20
+ slug: string;
21
21
  tags: string[];
22
22
  isFeatured: boolean;
23
23
  youtubeId?: string | undefined;
@@ -28,8 +28,8 @@ export declare const blogPostInputSchema: z.ZodObject<{
28
28
  }, {
29
29
  title: string;
30
30
  content: string;
31
- slug: string;
32
31
  category: string;
32
+ slug: string;
33
33
  status?: "draft" | "published" | undefined;
34
34
  youtubeId?: string | undefined;
35
35
  tags?: string[] | undefined;
@@ -56,8 +56,8 @@ export declare const blogPostUpdateSchema: z.ZodObject<Omit<{
56
56
  status?: "draft" | "published" | undefined;
57
57
  title?: string | undefined;
58
58
  content?: string | undefined;
59
- youtubeId?: string | undefined;
60
59
  category?: string | undefined;
60
+ youtubeId?: string | undefined;
61
61
  tags?: string[] | undefined;
62
62
  isFeatured?: boolean | undefined;
63
63
  excerpt?: string | undefined;
@@ -68,8 +68,8 @@ export declare const blogPostUpdateSchema: z.ZodObject<Omit<{
68
68
  status?: "draft" | "published" | undefined;
69
69
  title?: string | undefined;
70
70
  content?: string | undefined;
71
- youtubeId?: string | undefined;
72
71
  category?: string | undefined;
72
+ youtubeId?: string | undefined;
73
73
  tags?: string[] | undefined;
74
74
  isFeatured?: boolean | undefined;
75
75
  excerpt?: string | undefined;
@@ -8,7 +8,7 @@ export declare const addToCartSchema: z.ZodObject<{
8
8
  storeId: z.ZodString;
9
9
  storeName: z.ZodDefault<z.ZodString>;
10
10
  quantity: z.ZodDefault<z.ZodNumber>;
11
- listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live"]>;
11
+ listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live", "art", "stickers"]>;
12
12
  isOffer: z.ZodOptional<z.ZodBoolean>;
13
13
  offerId: z.ZodOptional<z.ZodString>;
14
14
  lockedPrice: z.ZodOptional<z.ZodNumber>;
@@ -16,11 +16,11 @@ export declare const addToCartSchema: z.ZodObject<{
16
16
  currency: string;
17
17
  storeId: string;
18
18
  price: number;
19
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
19
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
20
+ storeName: string;
21
+ quantity: number;
20
22
  productId: string;
21
23
  productTitle: string;
22
- quantity: number;
23
- storeName: string;
24
24
  productImage: string;
25
25
  offerId?: string | undefined;
26
26
  lockedPrice?: number | undefined;
@@ -28,12 +28,12 @@ export declare const addToCartSchema: z.ZodObject<{
28
28
  }, {
29
29
  storeId: string;
30
30
  price: number;
31
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
31
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
32
32
  productId: string;
33
33
  productTitle: string;
34
34
  currency?: string | undefined;
35
- quantity?: number | undefined;
36
35
  storeName?: string | undefined;
36
+ quantity?: number | undefined;
37
37
  productImage?: string | undefined;
38
38
  offerId?: string | undefined;
39
39
  lockedPrice?: number | undefined;
@@ -43,11 +43,11 @@ export declare const updateCartItemSchema: z.ZodObject<{
43
43
  productId: z.ZodString;
44
44
  quantity: z.ZodNumber;
45
45
  }, "strip", z.ZodTypeAny, {
46
- productId: string;
47
46
  quantity: number;
48
- }, {
49
47
  productId: string;
48
+ }, {
50
49
  quantity: number;
50
+ productId: string;
51
51
  }>;
52
52
  export declare const removeFromCartSchema: z.ZodObject<{
53
53
  productId: z.ZodString;
@@ -66,7 +66,7 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
66
66
  storeId: z.ZodString;
67
67
  storeName: z.ZodDefault<z.ZodString>;
68
68
  quantity: z.ZodDefault<z.ZodNumber>;
69
- listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live"]>;
69
+ listingType: z.ZodEnum<["standard", "auction", "pre-order", "prize-draw", "classified", "digital-code", "live", "art", "stickers"]>;
70
70
  isOffer: z.ZodOptional<z.ZodBoolean>;
71
71
  offerId: z.ZodOptional<z.ZodString>;
72
72
  lockedPrice: z.ZodOptional<z.ZodNumber>;
@@ -74,11 +74,11 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
74
74
  currency: string;
75
75
  storeId: string;
76
76
  price: number;
77
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
77
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
78
+ storeName: string;
79
+ quantity: number;
78
80
  productId: string;
79
81
  productTitle: string;
80
- quantity: number;
81
- storeName: string;
82
82
  productImage: string;
83
83
  offerId?: string | undefined;
84
84
  lockedPrice?: number | undefined;
@@ -86,12 +86,12 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
86
86
  }, {
87
87
  storeId: string;
88
88
  price: number;
89
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
89
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
90
90
  productId: string;
91
91
  productTitle: string;
92
92
  currency?: string | undefined;
93
- quantity?: number | undefined;
94
93
  storeName?: string | undefined;
94
+ quantity?: number | undefined;
95
95
  productImage?: string | undefined;
96
96
  offerId?: string | undefined;
97
97
  lockedPrice?: number | undefined;
@@ -102,11 +102,11 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
102
102
  currency: string;
103
103
  storeId: string;
104
104
  price: number;
105
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
105
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
106
+ storeName: string;
107
+ quantity: number;
106
108
  productId: string;
107
109
  productTitle: string;
108
- quantity: number;
109
- storeName: string;
110
110
  productImage: string;
111
111
  offerId?: string | undefined;
112
112
  lockedPrice?: number | undefined;
@@ -116,17 +116,22 @@ export declare const mergeGuestCartSchema: z.ZodObject<{
116
116
  guestItems: {
117
117
  storeId: string;
118
118
  price: number;
119
- listingType: "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
119
+ listingType: "art" | "stickers" | "classified" | "standard" | "auction" | "pre-order" | "prize-draw" | "digital-code" | "live";
120
120
  productId: string;
121
121
  productTitle: string;
122
122
  currency?: string | undefined;
123
- quantity?: number | undefined;
124
123
  storeName?: string | undefined;
124
+ quantity?: number | undefined;
125
125
  productImage?: string | undefined;
126
126
  offerId?: string | undefined;
127
127
  lockedPrice?: number | undefined;
128
128
  isOffer?: boolean | undefined;
129
129
  }[];
130
130
  }>;
131
- export type AddToCartInput = z.infer<typeof addToCartSchema>;
131
+ /**
132
+ * Renamed from `AddToCartInput` 2026-08-24 (W3) — `features/cart/schemas/
133
+ * firestore.ts` declares its own hand-written `AddToCartInput`, and a consumer
134
+ * importing the name had no way to tell which one it got.
135
+ */
136
+ export type AddToCartActionInput = z.infer<typeof addToCartSchema>;
132
137
  export type MergeGuestCartInput = z.infer<typeof mergeGuestCartSchema>;
@@ -10,6 +10,19 @@ const cartItemBaseSchema = z.object({
10
10
  quantity: z.number().int().min(1).max(99).default(1),
11
11
  // SB1-G Phase 4 — canonical listing-kind snapshot.
12
12
  // SB-UNI-D — "bundle" removed from the listing-kind enum.
13
+ /*
14
+ * All NINE listing types. `art` and `stickers` were missing until
15
+ * 2026-08-24 (W3) — added to the union, the plugin registry, the capability
16
+ * map and the Sieve alias map, but not here.
17
+ *
18
+ * Not a live bug today, and verified rather than assumed (Rule #4): the real
19
+ * add-to-cart path is `POST /api/cart`, which takes only {productId,
20
+ * quantity} and derives the type server-side via `normalizeListingType`,
21
+ * never validating it against an enum. This enum sits on paths an art or
22
+ * sticker listing cannot currently reach. It was a trap waiting for the
23
+ * first caller that did — the third instalment of Root Cause #58, where a
24
+ * union member is added everywhere except the one allowlist that gates it.
25
+ */
13
26
  listingType: z.enum([
14
27
  "standard",
15
28
  "auction",
@@ -18,6 +31,8 @@ const cartItemBaseSchema = z.object({
18
31
  "classified",
19
32
  "digital-code",
20
33
  "live",
34
+ "art",
35
+ "stickers",
21
36
  ]),
22
37
  isOffer: z.boolean().optional(),
23
38
  offerId: z.string().optional(),
@@ -26,35 +26,35 @@ export declare const bundleQueryRuleSchema: z.ZodDiscriminatedUnion<"type", [z.Z
26
26
  /** Eligible listing types for a dynamic bundle rule. */
27
27
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
28
28
  }, "strip", z.ZodTypeAny, {
29
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
29
30
  categorySlug?: string | undefined;
30
31
  brandSlug?: string | undefined;
31
32
  tags?: string[] | undefined;
32
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
33
33
  }, {
34
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
34
35
  categorySlug?: string | undefined;
35
36
  brandSlug?: string | undefined;
36
37
  tags?: string[] | undefined;
37
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
38
38
  }>;
39
39
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
40
40
  limit: z.ZodNumber;
41
41
  }, "strip", z.ZodTypeAny, {
42
42
  type: "dynamic";
43
43
  filter: {
44
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
44
45
  categorySlug?: string | undefined;
45
46
  brandSlug?: string | undefined;
46
47
  tags?: string[] | undefined;
47
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
48
48
  };
49
49
  limit: number;
50
50
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
51
51
  }, {
52
52
  type: "dynamic";
53
53
  filter: {
54
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
54
55
  categorySlug?: string | undefined;
55
56
  brandSlug?: string | undefined;
56
57
  tags?: string[] | undefined;
57
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
58
58
  };
59
59
  limit: number;
60
60
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -102,35 +102,35 @@ export declare const bundleCreateSchema: z.ZodObject<{
102
102
  /** Eligible listing types for a dynamic bundle rule. */
103
103
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
104
104
  }, "strip", z.ZodTypeAny, {
105
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
105
106
  categorySlug?: string | undefined;
106
107
  brandSlug?: string | undefined;
107
108
  tags?: string[] | undefined;
108
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
109
109
  }, {
110
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
110
111
  categorySlug?: string | undefined;
111
112
  brandSlug?: string | undefined;
112
113
  tags?: string[] | undefined;
113
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
114
114
  }>;
115
115
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
116
116
  limit: z.ZodNumber;
117
117
  }, "strip", z.ZodTypeAny, {
118
118
  type: "dynamic";
119
119
  filter: {
120
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
120
121
  categorySlug?: string | undefined;
121
122
  brandSlug?: string | undefined;
122
123
  tags?: string[] | undefined;
123
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
124
124
  };
125
125
  limit: number;
126
126
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
127
127
  }, {
128
128
  type: "dynamic";
129
129
  filter: {
130
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
130
131
  categorySlug?: string | undefined;
131
132
  brandSlug?: string | undefined;
132
133
  tags?: string[] | undefined;
133
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
134
134
  };
135
135
  limit: number;
136
136
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -172,10 +172,10 @@ export declare const bundleCreateSchema: z.ZodObject<{
172
172
  } | {
173
173
  type: "dynamic";
174
174
  filter: {
175
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
175
176
  categorySlug?: string | undefined;
176
177
  brandSlug?: string | undefined;
177
178
  tags?: string[] | undefined;
178
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
179
179
  };
180
180
  limit: number;
181
181
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -185,9 +185,9 @@ export declare const bundleCreateSchema: z.ZodObject<{
185
185
  icon?: string | undefined;
186
186
  coverImage?: string | undefined;
187
187
  } | undefined;
188
- description?: string | undefined;
189
- slug?: string | undefined;
190
188
  brandSlug?: string | undefined;
189
+ slug?: string | undefined;
190
+ description?: string | undefined;
191
191
  isActive?: boolean | undefined;
192
192
  bundleItemDetails?: {
193
193
  productId: string;
@@ -204,10 +204,10 @@ export declare const bundleCreateSchema: z.ZodObject<{
204
204
  } | {
205
205
  type: "dynamic";
206
206
  filter: {
207
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
207
208
  categorySlug?: string | undefined;
208
209
  brandSlug?: string | undefined;
209
210
  tags?: string[] | undefined;
210
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
211
211
  };
212
212
  limit: number;
213
213
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -217,9 +217,9 @@ export declare const bundleCreateSchema: z.ZodObject<{
217
217
  icon?: string | undefined;
218
218
  coverImage?: string | undefined;
219
219
  } | undefined;
220
- description?: string | undefined;
221
- slug?: string | undefined;
222
220
  brandSlug?: string | undefined;
221
+ slug?: string | undefined;
222
+ description?: string | undefined;
223
223
  isActive?: boolean | undefined;
224
224
  bundleItemDetails?: {
225
225
  productId: string;
@@ -250,35 +250,35 @@ export declare const bundleUpdateSchema: z.ZodObject<{
250
250
  /** Eligible listing types for a dynamic bundle rule. */
251
251
  listingType: z.ZodOptional<z.ZodEnum<["standard", "pre-order", "prize-draw"]>>;
252
252
  }, "strip", z.ZodTypeAny, {
253
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
253
254
  categorySlug?: string | undefined;
254
255
  brandSlug?: string | undefined;
255
256
  tags?: string[] | undefined;
256
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
257
257
  }, {
258
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
258
259
  categorySlug?: string | undefined;
259
260
  brandSlug?: string | undefined;
260
261
  tags?: string[] | undefined;
261
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
262
262
  }>;
263
263
  orderBy: z.ZodOptional<z.ZodEnum<["price-asc", "price-desc", "createdAt-desc"]>>;
264
264
  limit: z.ZodNumber;
265
265
  }, "strip", z.ZodTypeAny, {
266
266
  type: "dynamic";
267
267
  filter: {
268
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
268
269
  categorySlug?: string | undefined;
269
270
  brandSlug?: string | undefined;
270
271
  tags?: string[] | undefined;
271
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
272
272
  };
273
273
  limit: number;
274
274
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
275
275
  }, {
276
276
  type: "dynamic";
277
277
  filter: {
278
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
278
279
  categorySlug?: string | undefined;
279
280
  brandSlug?: string | undefined;
280
281
  tags?: string[] | undefined;
281
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
282
282
  };
283
283
  limit: number;
284
284
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -315,8 +315,8 @@ export declare const bundleUpdateSchema: z.ZodObject<{
315
315
  coverImage?: string | undefined;
316
316
  } | undefined;
317
317
  name?: string | undefined;
318
- description?: string | undefined;
319
318
  brandSlug?: string | undefined;
319
+ description?: string | undefined;
320
320
  isActive?: boolean | undefined;
321
321
  bundleKind?: "brand" | "special" | undefined;
322
322
  bundleProductIds?: string[] | undefined;
@@ -331,10 +331,10 @@ export declare const bundleUpdateSchema: z.ZodObject<{
331
331
  } | {
332
332
  type: "dynamic";
333
333
  filter: {
334
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
334
335
  categorySlug?: string | undefined;
335
336
  brandSlug?: string | undefined;
336
337
  tags?: string[] | undefined;
337
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
338
338
  };
339
339
  limit: number;
340
340
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -346,8 +346,8 @@ export declare const bundleUpdateSchema: z.ZodObject<{
346
346
  coverImage?: string | undefined;
347
347
  } | undefined;
348
348
  name?: string | undefined;
349
- description?: string | undefined;
350
349
  brandSlug?: string | undefined;
350
+ description?: string | undefined;
351
351
  isActive?: boolean | undefined;
352
352
  bundleKind?: "brand" | "special" | undefined;
353
353
  bundleProductIds?: string[] | undefined;
@@ -362,10 +362,10 @@ export declare const bundleUpdateSchema: z.ZodObject<{
362
362
  } | {
363
363
  type: "dynamic";
364
364
  filter: {
365
+ listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
365
366
  categorySlug?: string | undefined;
366
367
  brandSlug?: string | undefined;
367
368
  tags?: string[] | undefined;
368
- listingType?: "standard" | "pre-order" | "prize-draw" | undefined;
369
369
  };
370
370
  limit: number;
371
371
  orderBy?: "price-asc" | "price-desc" | "createdAt-desc" | undefined;
@@ -6,12 +6,12 @@ export declare const createOrderSchema: z.ZodObject<{
6
6
  price: z.ZodNumber;
7
7
  }, "strip", z.ZodTypeAny, {
8
8
  price: number;
9
- productId: string;
10
9
  quantity: number;
10
+ productId: string;
11
11
  }, {
12
12
  price: number;
13
- productId: string;
14
13
  quantity: number;
14
+ productId: string;
15
15
  }>, "many">;
16
16
  shippingAddress: z.ZodObject<{
17
17
  fullName: z.ZodString;
@@ -57,8 +57,8 @@ export declare const createOrderSchema: z.ZodObject<{
57
57
  };
58
58
  items: {
59
59
  price: number;
60
- productId: string;
61
60
  quantity: number;
61
+ productId: string;
62
62
  }[];
63
63
  couponCode?: string | undefined;
64
64
  }, {
@@ -75,8 +75,8 @@ export declare const createOrderSchema: z.ZodObject<{
75
75
  };
76
76
  items: {
77
77
  price: number;
78
- productId: string;
79
78
  quantity: number;
79
+ productId: string;
80
80
  }[];
81
81
  couponCode?: string | undefined;
82
82
  }>;
@@ -26,16 +26,16 @@ export declare const productInputSchema: z.ZodObject<{
26
26
  }, "strip", z.ZodTypeAny, {
27
27
  currency: string;
28
28
  title: string;
29
- category: string;
30
29
  price: number;
30
+ category: string;
31
31
  stockQuantity: number;
32
32
  availableQuantity: number;
33
33
  mainImage: string;
34
34
  images: string[];
35
35
  tags: string[];
36
+ brandSlug?: string | undefined;
36
37
  features?: string[] | undefined;
37
38
  description?: string | undefined;
38
- brandSlug?: string | undefined;
39
39
  shippingInfo?: string | undefined;
40
40
  returnPolicy?: string | undefined;
41
41
  condition?: "new" | "used" | "refurbished" | "like_new" | "good" | "fair" | "poor" | "broken" | undefined;
@@ -49,14 +49,14 @@ export declare const productInputSchema: z.ZodObject<{
49
49
  minOfferPercent?: number | undefined;
50
50
  }, {
51
51
  title: string;
52
- category: string;
53
52
  price: number;
53
+ category: string;
54
54
  mainImage: string;
55
55
  currency?: string | undefined;
56
- features?: string[] | undefined;
57
- description?: string | undefined;
58
56
  brandSlug?: string | undefined;
59
57
  stockQuantity?: number | undefined;
58
+ features?: string[] | undefined;
59
+ description?: string | undefined;
60
60
  availableQuantity?: number | undefined;
61
61
  images?: string[] | undefined;
62
62
  tags?: string[] | undefined;
@@ -99,12 +99,12 @@ export declare const productUpdateSchema: z.ZodObject<{
99
99
  }, "strip", z.ZodTypeAny, {
100
100
  currency?: string | undefined;
101
101
  title?: string | undefined;
102
- features?: string[] | undefined;
103
- description?: string | undefined;
102
+ price?: number | undefined;
104
103
  category?: string | undefined;
105
104
  brandSlug?: string | undefined;
106
- price?: number | undefined;
107
105
  stockQuantity?: number | undefined;
106
+ features?: string[] | undefined;
107
+ description?: string | undefined;
108
108
  availableQuantity?: number | undefined;
109
109
  mainImage?: string | undefined;
110
110
  images?: string[] | undefined;
@@ -123,12 +123,12 @@ export declare const productUpdateSchema: z.ZodObject<{
123
123
  }, {
124
124
  currency?: string | undefined;
125
125
  title?: string | undefined;
126
- features?: string[] | undefined;
127
- description?: string | undefined;
126
+ price?: number | undefined;
128
127
  category?: string | undefined;
129
128
  brandSlug?: string | undefined;
130
- price?: number | undefined;
131
129
  stockQuantity?: number | undefined;
130
+ features?: string[] | undefined;
131
+ description?: string | undefined;
132
132
  availableQuantity?: number | undefined;
133
133
  mainImage?: string | undefined;
134
134
  images?: string[] | undefined;
@@ -182,20 +182,20 @@ export declare const auctionInputSchema: z.ZodObject<{
182
182
  }, "strip", z.ZodTypeAny, {
183
183
  currency: string;
184
184
  title: string;
185
- category: string;
186
185
  price: number;
186
+ listingType: "auction";
187
+ category: string;
187
188
  stockQuantity: number;
188
189
  availableQuantity: number;
189
190
  mainImage: string;
190
191
  images: string[];
191
192
  tags: string[];
192
- listingType: "auction";
193
193
  auctionEndDate: string;
194
194
  startingBid: number;
195
195
  autoExtendable: boolean;
196
+ brandSlug?: string | undefined;
196
197
  features?: string[] | undefined;
197
198
  description?: string | undefined;
198
- brandSlug?: string | undefined;
199
199
  shippingInfo?: string | undefined;
200
200
  returnPolicy?: string | undefined;
201
201
  condition?: "new" | "used" | "refurbished" | "like_new" | "good" | "fair" | "poor" | "broken" | undefined;
@@ -214,17 +214,17 @@ export declare const auctionInputSchema: z.ZodObject<{
214
214
  minOfferPercent?: number | undefined;
215
215
  }, {
216
216
  title: string;
217
- category: string;
218
217
  price: number;
219
- mainImage: string;
220
218
  listingType: "auction";
219
+ category: string;
220
+ mainImage: string;
221
221
  auctionEndDate: string;
222
222
  startingBid: number;
223
223
  currency?: string | undefined;
224
- features?: string[] | undefined;
225
- description?: string | undefined;
226
224
  brandSlug?: string | undefined;
227
225
  stockQuantity?: number | undefined;
226
+ features?: string[] | undefined;
227
+ description?: string | undefined;
228
228
  availableQuantity?: number | undefined;
229
229
  images?: string[] | undefined;
230
230
  tags?: string[] | undefined;
@@ -280,20 +280,20 @@ export declare const preOrderInputSchema: z.ZodObject<{
280
280
  }, "strip", z.ZodTypeAny, {
281
281
  currency: string;
282
282
  title: string;
283
- category: string;
284
283
  price: number;
284
+ listingType: "pre-order";
285
+ category: string;
285
286
  stockQuantity: number;
286
287
  availableQuantity: number;
287
288
  mainImage: string;
288
289
  images: string[];
289
290
  tags: string[];
290
- listingType: "pre-order";
291
291
  preOrderDeliveryDate: string;
292
- preOrderProductionStatus: "in_production" | "upcoming" | "ready_to_ship";
292
+ preOrderProductionStatus: "upcoming" | "in_production" | "ready_to_ship";
293
293
  preOrderCancellable: boolean;
294
+ brandSlug?: string | undefined;
294
295
  features?: string[] | undefined;
295
296
  description?: string | undefined;
296
- brandSlug?: string | undefined;
297
297
  shippingInfo?: string | undefined;
298
298
  returnPolicy?: string | undefined;
299
299
  condition?: "new" | "used" | "refurbished" | "like_new" | "good" | "fair" | "poor" | "broken" | undefined;
@@ -309,16 +309,16 @@ export declare const preOrderInputSchema: z.ZodObject<{
309
309
  minOfferPercent?: number | undefined;
310
310
  }, {
311
311
  title: string;
312
- category: string;
313
312
  price: number;
314
- mainImage: string;
315
313
  listingType: "pre-order";
314
+ category: string;
315
+ mainImage: string;
316
316
  preOrderDeliveryDate: string;
317
317
  currency?: string | undefined;
318
- features?: string[] | undefined;
319
- description?: string | undefined;
320
318
  brandSlug?: string | undefined;
321
319
  stockQuantity?: number | undefined;
320
+ features?: string[] | undefined;
321
+ description?: string | undefined;
322
322
  availableQuantity?: number | undefined;
323
323
  images?: string[] | undefined;
324
324
  tags?: string[] | undefined;
@@ -330,7 +330,7 @@ export declare const preOrderInputSchema: z.ZodObject<{
330
330
  shippingPaidBy?: "seller" | "buyer" | undefined;
331
331
  preOrderDepositPercent?: number | undefined;
332
332
  preOrderMaxQuantity?: number | undefined;
333
- preOrderProductionStatus?: "in_production" | "upcoming" | "ready_to_ship" | undefined;
333
+ preOrderProductionStatus?: "upcoming" | "in_production" | "ready_to_ship" | undefined;
334
334
  preOrderCancellable?: boolean | undefined;
335
335
  seoTitle?: string | undefined;
336
336
  seoDescription?: string | undefined;