@mohasinac/appkit 4.55.0 → 4.57.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 (86) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/server/features/checkout/actions.d.ts +53 -0
  3. package/dist/_internal/server/features/checkout/actions.js +156 -8
  4. package/dist/_internal/server/features/orders/actions.d.ts +30 -0
  5. package/dist/_internal/server/features/orders/actions.js +103 -0
  6. package/dist/_internal/server/features/orders/adapters.js +7 -0
  7. package/dist/_internal/server/features/shipping/reconcile.d.ts +28 -0
  8. package/dist/_internal/server/features/shipping/reconcile.js +93 -0
  9. package/dist/_internal/shared/actions/action-registry.js +53 -0
  10. package/dist/_internal/shared/config/schema.d.ts +6 -0
  11. package/dist/_internal/shared/listing-types/route-gating.d.ts +56 -0
  12. package/dist/_internal/shared/listing-types/route-gating.js +114 -0
  13. package/dist/_internal/shared/shipping/quote.d.ts +153 -0
  14. package/dist/_internal/shared/shipping/quote.js +123 -0
  15. package/dist/client.d.ts +22 -0
  16. package/dist/client.js +10 -0
  17. package/dist/features/about/components/PublicProfileView.js +2 -1
  18. package/dist/features/account/components/UserOrdersView.js +25 -3
  19. package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
  20. package/dist/features/admin/components/OwnerQuickActions.js +53 -6
  21. package/dist/features/auctions/components/AuctionDetailPageView.js +2 -1
  22. package/dist/features/auth/schemas/firestore.d.ts +15 -0
  23. package/dist/features/blog/components/BlogPostView.js +2 -1
  24. package/dist/features/cart/components/CartPriceBreakdown.d.ts +2 -0
  25. package/dist/features/cart/components/CartPriceBreakdown.js +1 -1
  26. package/dist/features/categories/components/FranchiseDetailPageView.js +3 -1
  27. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +2 -1
  28. package/dist/features/faq/components/FAQPageContent.js +17 -4
  29. package/dist/features/faq/constants/help-guides.d.ts +36 -0
  30. package/dist/features/faq/constants/help-guides.js +64 -0
  31. package/dist/features/homepage/components/HeroCarousel.js +7 -3
  32. package/dist/features/homepage/components/MarketplaceHomepageView.js +16 -1
  33. package/dist/features/homepage/components/WelcomeSection.d.ts +16 -3
  34. package/dist/features/homepage/components/WelcomeSection.js +3 -3
  35. package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
  36. package/dist/features/homepage/lib/section-renderer.js +24 -6
  37. package/dist/features/homepage/lib/slide-gating.d.ts +52 -0
  38. package/dist/features/homepage/lib/slide-gating.js +98 -0
  39. package/dist/features/live/components/LiveItemDetailPageView.js +2 -1
  40. package/dist/features/media/MediaAvatar.js +1 -1
  41. package/dist/features/media/MediaImage.d.ts +18 -1
  42. package/dist/features/media/MediaImage.js +1 -1
  43. package/dist/features/orders/components/EmiInstallmentsPanel.d.ts +19 -0
  44. package/dist/features/orders/components/EmiInstallmentsPanel.js +57 -0
  45. package/dist/features/orders/components/index.d.ts +1 -0
  46. package/dist/features/orders/components/index.js +1 -0
  47. package/dist/features/orders/schemas/firestore.d.ts +38 -0
  48. package/dist/features/orders/schemas/index.d.ts +2 -2
  49. package/dist/features/orders/types/index.d.ts +15 -0
  50. package/dist/features/points/repository/points.repository.d.ts +81 -0
  51. package/dist/features/points/repository/points.repository.js +155 -0
  52. package/dist/features/points/schemas/firestore.d.ts +118 -0
  53. package/dist/features/points/schemas/firestore.js +116 -0
  54. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -1
  55. package/dist/features/products/components/PrizeDrawDetailPageView.js +2 -1
  56. package/dist/features/products/components/ProductDetailPageView.js +3 -1
  57. package/dist/features/reviews/components/ReviewDetailPageView.js +3 -2
  58. package/dist/features/seller/actions/seller-actions.d.ts +17 -0
  59. package/dist/features/seller/actions/seller-actions.js +33 -0
  60. package/dist/features/stores/components/StoreHeader.js +3 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.js +8 -0
  63. package/dist/next/routing/route-map.d.ts +4 -0
  64. package/dist/next/routing/route-map.js +2 -0
  65. package/dist/schemas/registry.d.ts +2 -2
  66. package/dist/seed/_helpers/category-models/chunk0.d.ts +2 -0
  67. package/dist/seed/_helpers/category-models/chunk0.js +2648 -0
  68. package/dist/seed/_helpers/category-models/chunk1.d.ts +2 -0
  69. package/dist/seed/_helpers/category-models/chunk1.js +2318 -0
  70. package/dist/seed/_helpers/category-models/chunk2.d.ts +2 -0
  71. package/dist/seed/_helpers/category-models/chunk2.js +2560 -0
  72. package/dist/seed/_helpers/category-models/chunk3.d.ts +2 -0
  73. package/dist/seed/_helpers/category-models/chunk3.js +2196 -0
  74. package/dist/seed/_helpers/category-models/chunk4.d.ts +2 -0
  75. package/dist/seed/_helpers/category-models/chunk4.js +1732 -0
  76. package/dist/seed/_helpers/category-models.d.ts +9 -2
  77. package/dist/seed/_helpers/category-models.js +19 -1368
  78. package/dist/seed/carousel-slides-seed-data.js +48 -7
  79. package/dist/server.d.ts +3 -1
  80. package/dist/server.js +11 -0
  81. package/dist/styles.css +38 -6
  82. package/dist/tailwind-utilities.css +1 -1
  83. package/dist/ui/components/ImageMosaic.d.ts +17 -1
  84. package/dist/ui/components/ImageMosaic.js +28 -5
  85. package/dist/ui/components/ImageMosaic.style.css +37 -5
  86. package/package.json +1 -1
@@ -1,8 +1,15 @@
1
1
  /*
2
2
  * WHY: Seeds 6 carousel slides for the marketplace homepage promo carousel.
3
- * WHAT: 5 active + 1 inactive. Deterministic Picsum backgrounds with a dim
3
+ * WHAT: 4 active + 2 inactive. Deterministic Picsum backgrounds with a dim
4
4
  * overlay, plus a headline / supporting line / CTA on each.
5
5
  *
6
+ * 🛑 FOUR ACTIVE, NOT FIVE, SINCE 2026-10-20. `MAX_ACTIVE_SLIDES` is a
7
+ * ceiling, not a quota — `slide-beyblade-auction` went inactive with
8
+ * `listings.listingTypes.auction: false` and nothing was promoted to backfill
9
+ * it. Do NOT activate `slide-upcoming-promo` to get back to five: that one is
10
+ * the fixture `getActiveSlides()`' own filter is tested against, and it says
11
+ * "A draft slide kept unpublished so admins have a starting point to copy."
12
+ *
6
13
  * 🛑 EVERY ACTIVE SLIDE MUST CARRY AN `overlay` OR `cards`, OR IT RENDERS BLANK.
7
14
  * `HeroCarousel` gates all slide copy on `slide.overlay` (line ~412) and the
8
15
  * card grid on `slide.cards.length` (line ~451). Before this pass every seeded
@@ -107,16 +114,34 @@ const _rawSlides = [
107
114
  hover: { effect: "scale" },
108
115
  },
109
116
  {
110
- id: "card-hero-bid",
117
+ /*
118
+ * 🛑 THIS WAS THE AUCTIONS CARD ("Bid / Live auctions / Place a bid
119
+ * before the timer runs out" → `/auctions`), and it was still on the
120
+ * first screen of the site weeks after `listings.listingTypes.auction`
121
+ * went `false`. The section-level gate in `MarketplaceHomepageView` is
122
+ * keyed on `SectionType` and a carousel is type `carousel` whatever it
123
+ * contains, so nothing could see it. `gateCarouselSlides` now can — but
124
+ * a filter that leaves a hole in a `repeat(3, 1fr)` row is a fallback,
125
+ * not a fix, so the slot gets real content instead.
126
+ *
127
+ * 🛑 NOT `/spares` and NOT `/art`, which were the obvious swaps: both
128
+ * types are ENABLED, both have a working browse page, and both held
129
+ * ZERO published products when this was written (measured against
130
+ * production, 2026-10-20). Replacing a dead-end card with a different
131
+ * dead-end card is not a fix. `/categories` is populated — six roots,
132
+ * 28 brands, 8 franchises — and browsing the tree is genuinely the
133
+ * third way to shop here.
134
+ */
135
+ id: "card-hero-browse",
111
136
  zone: 2,
112
137
  mobileZone: 2,
113
138
  background: { type: "image", url: MEDIA.lDrago, dimOverlay: { enabled: true, opacity: 0.45 } },
114
139
  content: {
115
- eyebrow: "Bid",
116
- title: "Live auctions",
117
- description: "Place a bid before the timer runs out.",
140
+ eyebrow: "Explore",
141
+ title: "Shop by category",
142
+ description: "Walk the tree from generation down to a single part.",
118
143
  },
119
- buttons: [{ id: "card-hero-bid-cta", text: "Browse auctions", href: String(ROUTES.PUBLIC.AUCTIONS), variant: "primary" }],
144
+ buttons: [{ id: "card-hero-browse-cta", text: "Browse categories", href: String(ROUTES.PUBLIC.CATEGORIES), variant: "primary" }],
120
145
  hover: { effect: "scale" },
121
146
  },
122
147
  {
@@ -139,10 +164,26 @@ const _rawSlides = [
139
164
  updatedAt: daysAgo(3),
140
165
  },
141
166
  {
167
+ /*
168
+ * 🛑 DISABLED, NOT DELETED — the same arrangement the auctions RAIL uses in
169
+ * `homepage-sections-seed-data.ts`, and for the same reason. Every word of
170
+ * the copy, the video background and the CTA stay exactly as they were, so
171
+ * flipping `listings.listingTypes.auction` back to `true` and this flag
172
+ * with it restores the slide intact.
173
+ *
174
+ * Two locks, deliberately. `gateCarouselSlides` already drops this at
175
+ * render because `overlay.button.link` and `link.url` both resolve to
176
+ * `/auctions` — but that one is invisible, and a slide listed as active in
177
+ * the carousel admin while never appearing on the page reads as a bug in
178
+ * the admin. `active: false` is the lock a human sees.
179
+ *
180
+ * 🛑 The copy names no listing type — "Win it at your price" — which is
181
+ * exactly why the gate matches on the LINK and not on the words.
182
+ */
142
183
  id: "slide-beyblade-auction",
143
184
  title: "Live auctions",
144
185
  order: 2,
145
- active: true,
186
+ active: false,
146
187
  background: {
147
188
  type: "video",
148
189
  // Direct MP4 URL, deliberately NOT wrapped in seedExtMedia() — that
package/dist/server.d.ts CHANGED
@@ -21,7 +21,7 @@ export { wrapAction, isOk, unwrap, } from "./_internal/shared/types/action-resul
21
21
  export type { ActionResult } from "./_internal/shared/types/action-result";
22
22
  export { setActionErrorReporter, hasActionErrorReporter, } from "./_internal/shared/types/action-error-reporter";
23
23
  export type { ActionErrorReport, ActionErrorReporter, } from "./_internal/shared/types/action-error-reporter";
24
- export { attachPaymentProofAction, adminVerifyPaymentAction, adminRequestProofReuploadAction, adminRejectPaymentAsFraudAction, raiseOrderDisputeAction, requestReturnAction, } from "./_internal/server/features/orders/actions";
24
+ export { attachPaymentProofAction, adminVerifyPaymentAction, adminRequestProofReuploadAction, adminRejectPaymentAsFraudAction, raiseOrderDisputeAction, submitEmiInstallmentPaymentAction, requestReturnAction, } from "./_internal/server/features/orders/actions";
25
25
  export { wrapJobHandler, wrapScheduleHandler, wrapTriggerHandler, wrapCallableHandler, } from "./_internal/server/jobs/core/wrapJobHandler";
26
26
  export { analyzeLogs } from "./_internal/server/features/maintenance/analyze";
27
27
  export type { AnalyzeOptions, AnalyzeReport, } from "./_internal/server/features/maintenance/analyze";
@@ -258,6 +258,8 @@ export { listTopLevelCategories } from "./features/categories/server";
258
258
  export { updateCategory } from "./features/categories/server";
259
259
  export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server";
260
260
  export { FailedCheckoutRepository, failedCheckoutRepository } from "./features/checkout/server";
261
+ export { reconcileOrderShipping } from "./_internal/server/features/shipping/reconcile";
262
+ export { pointsRepository, PointsRepository } from "./features/points/repository/points.repository";
261
263
  export type { FailedCheckoutMeta, FailedPaymentMeta } from "./features/checkout/server";
262
264
  export { EmailButton, EmailColumn, EmailContainer, EmailDivider, EmailDoc, EmailFooter, EmailHeader, EmailImage, EmailLink, EmailRow, } from "./features/email";
263
265
  export type { EmailButtonProps, EmailColumnProps, EmailContainerProps, EmailDividerProps, EmailDocProps, EmailFooterProps, EmailHeaderProps, EmailImageProps, EmailLinkProps, EmailRowProps, EmailTone, } from "./features/email";
package/dist/server.js CHANGED
@@ -53,6 +53,9 @@ export { wrapAction, isOk, unwrap, } from "./_internal/shared/types/action-resul
53
53
  export { setActionErrorReporter, hasActionErrorReporter, } from "./_internal/shared/types/action-error-reporter.js";
54
54
  // [SERVER-ONLY] P-1 manual payment proof server actions.
55
55
  export { attachPaymentProofAction, adminVerifyPaymentAction, adminRequestProofReuploadAction, adminRejectPaymentAsFraudAction, raiseOrderDisputeAction,
56
+ // Buyer pays one of their own EMI instalments — the counterpart to the
57
+ // seller's markEmiInstallmentPaid, which was the only writer before.
58
+ submitEmiInstallmentPaymentAction,
56
59
  // Buyer return request. Was reachable only through `server-entry.ts`, which
57
60
  // is the bare `@mohasinac/appkit` specifier — not `/server`, where every
58
61
  // other order action lives and where a consumer would look for it.
@@ -738,6 +741,14 @@ export { updateCategory } from "./features/categories/server.js";
738
741
  // [SERVER-ONLY] Tier PP — high-value checkout OTP gate.
739
742
  export { sendCheckoutValueOtp, verifyCheckoutValueOtp, isCheckoutValueOtpVerified, } from "./features/checkout/server.js";
740
743
  export { FailedCheckoutRepository, failedCheckoutRepository } from "./features/checkout/server.js";
744
+ /*
745
+ * Shipping reconciliation. Public on the SERVER entry only: it writes a points
746
+ * ledger entry and an order, so it must never be reachable from a client
747
+ * bundle. The consumer owns the seller's dispatch route, which is the second
748
+ * place a parcel is marked shipped.
749
+ */
750
+ export { reconcileOrderShipping } from "./_internal/server/features/shipping/reconcile.js";
751
+ export { pointsRepository, PointsRepository } from "./features/points/repository/points.repository.js";
741
752
  // [SERVER-ONLY] Email primitives — table-based, inline-styled components
742
753
  // that render email-client-compatible HTML via renderToStaticMarkup. Use
743
754
  // these instead of authoring raw <table>/<tr>/<td> in email templates.