@mohasinac/appkit 4.62.1 → 4.63.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.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +8 -29
- package/dist/_internal/client/features/layout/filterNavItems.d.ts +28 -0
- package/dist/_internal/client/features/layout/filterNavItems.js +35 -0
- package/dist/_internal/server/features/ads/booking.d.ts +118 -0
- package/dist/_internal/server/features/ads/booking.js +326 -0
- package/dist/_internal/server/features/checkout/actions.d.ts +51 -11
- package/dist/_internal/server/features/checkout/actions.js +335 -80
- package/dist/_internal/server/features/checkout/expand-order-items.d.ts +1 -2
- package/dist/_internal/server/features/checkout/expand-order-items.js +32 -0
- package/dist/_internal/server/features/checkout/freeze-parts.d.ts +50 -0
- package/dist/_internal/server/features/checkout/freeze-parts.js +94 -0
- package/dist/_internal/server/features/checkout/value-otp-gate.d.ts +55 -0
- package/dist/_internal/server/features/checkout/value-otp-gate.js +60 -0
- package/dist/_internal/server/features/dashboard/attention.d.ts +128 -0
- package/dist/_internal/server/features/dashboard/attention.js +183 -0
- package/dist/_internal/server/features/dashboard/data.d.ts +47 -0
- package/dist/_internal/server/features/dashboard/data.js +82 -0
- package/dist/_internal/server/features/inventory/reservations.d.ts +99 -0
- package/dist/_internal/server/features/inventory/reservations.js +273 -0
- package/dist/_internal/server/features/offers/destinations.d.ts +40 -0
- package/dist/_internal/server/features/offers/destinations.js +65 -0
- package/dist/_internal/server/features/orders/adapters.js +21 -0
- package/dist/_internal/server/features/orders/amend-delivery.d.ts +56 -0
- package/dist/_internal/server/features/orders/amend-delivery.js +124 -0
- package/dist/_internal/server/features/orders/balance.d.ts +89 -0
- package/dist/_internal/server/features/orders/balance.js +256 -0
- package/dist/_internal/server/features/pricing/actions.d.ts +58 -0
- package/dist/_internal/server/features/pricing/actions.js +144 -0
- package/dist/_internal/server/features/shipping/book-split.d.ts +86 -0
- package/dist/_internal/server/features/shipping/book-split.js +130 -0
- package/dist/_internal/server/features/shipping/book.d.ts +61 -0
- package/dist/_internal/server/features/shipping/book.js +176 -0
- package/dist/_internal/server/features/shipping/courier-block.js +26 -1
- package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
- package/dist/_internal/server/features/site-settings/adapters.js +14 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +14 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +57 -1
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +2 -0
- package/dist/_internal/server/jobs/core/jobRunners.js +45 -0
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +4 -1
- package/dist/_internal/server/jobs/core/reservationExpiry.d.ts +17 -0
- package/dist/_internal/server/jobs/core/reservationExpiry.js +40 -0
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +15 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/reservationExpiry.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/reservationExpiry.js +2 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +268 -0
- package/dist/_internal/shared/checkout/order-math.d.ts +31 -2
- package/dist/_internal/shared/checkout/order-math.js +22 -36
- package/dist/_internal/shared/checkout/rules/index.d.ts +1 -1
- package/dist/_internal/shared/checkout/rules/index.js +1 -1
- package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +18 -0
- package/dist/_internal/shared/checkout/rules/payment-gate.js +25 -0
- package/dist/_internal/shared/checkout/split.d.ts +0 -12
- package/dist/_internal/shared/checkout/split.js +22 -2
- package/dist/_internal/shared/content/disclaimers.js +7 -7
- package/dist/_internal/shared/content/published-values.d.ts +6 -1
- package/dist/_internal/shared/content/published-values.js +8 -0
- package/dist/_internal/shared/features/admin/integrations.d.ts +32 -2
- package/dist/_internal/shared/features/admin/integrations.js +19 -9
- package/dist/_internal/shared/features/dashboard/hub-sections.d.ts +72 -0
- package/dist/_internal/shared/features/dashboard/hub-sections.js +75 -0
- package/dist/_internal/shared/features/emi/choice.d.ts +98 -0
- package/dist/_internal/shared/features/emi/choice.js +69 -0
- package/dist/_internal/shared/features/emi/group.d.ts +84 -0
- package/dist/_internal/shared/features/emi/group.js +126 -0
- package/dist/_internal/shared/features/ledger/posting.d.ts +107 -0
- package/dist/_internal/shared/features/ledger/posting.js +165 -0
- package/dist/_internal/shared/features/ledger/reports.d.ts +76 -0
- package/dist/_internal/shared/features/ledger/reports.js +127 -0
- package/dist/_internal/shared/features/ledger/rules.d.ts +170 -0
- package/dist/_internal/shared/features/ledger/rules.js +221 -0
- package/dist/_internal/shared/features/offers/coordination.d.ts +122 -0
- package/dist/_internal/shared/features/offers/coordination.js +80 -0
- package/dist/_internal/shared/features/orders/delivery-snapshot.d.ts +114 -0
- package/dist/_internal/shared/features/orders/delivery-snapshot.js +116 -0
- package/dist/_internal/shared/features/payouts/pay-period.d.ts +91 -0
- package/dist/_internal/shared/features/payouts/pay-period.js +104 -0
- package/dist/_internal/shared/features/points/accepts.d.ts +1 -8
- package/dist/_internal/shared/features/points/accepts.js +12 -6
- package/dist/_internal/shared/features/pricing/rate-registry.d.ts +150 -0
- package/dist/_internal/shared/features/pricing/rate-registry.js +246 -0
- package/dist/_internal/shared/features/shipping/parcel.d.ts +123 -0
- package/dist/_internal/shared/features/shipping/parcel.js +139 -0
- package/dist/_internal/shared/features/site-settings/fees.d.ts +16 -8
- package/dist/_internal/shared/features/site-settings/fees.js +12 -8
- package/dist/_internal/shared/fees/explain.d.ts +81 -0
- package/dist/_internal/shared/fees/explain.js +101 -0
- package/dist/_internal/shared/history/index.d.ts +1 -1
- package/dist/_internal/shared/history/index.js +1 -1
- package/dist/_internal/shared/history/types.d.ts +7 -1
- package/dist/_internal/shared/history/types.js +25 -0
- package/dist/client.d.ts +11 -1
- package/dist/client.js +13 -0
- package/dist/constants/api-endpoints.d.ts +72 -0
- package/dist/constants/api-endpoints.js +41 -0
- package/dist/constants/field-names.d.ts +41 -0
- package/dist/constants/field-names.js +47 -0
- package/dist/features/account/components/UserOrdersView.js +28 -2
- package/dist/features/admin/components/AdminIntegrationsView.d.ts +55 -0
- package/dist/features/admin/components/AdminIntegrationsView.js +74 -0
- package/dist/features/admin/components/AdminOrderEditorView.d.ts +16 -1
- package/dist/features/admin/components/AdminOrderEditorView.js +72 -3
- package/dist/features/admin/components/AdminOrdersView.js +20 -1
- package/dist/features/admin/schemas/firestore.d.ts +32 -0
- package/dist/features/ads/schemas/booking-write.d.ts +120 -0
- package/dist/features/ads/schemas/booking-write.js +75 -0
- package/dist/features/ads/schemas/creative-form.d.ts +18 -0
- package/dist/features/ads/schemas/creative-form.js +51 -0
- package/dist/features/ads/schemas/firestore.d.ts +140 -0
- package/dist/features/ads/schemas/firestore.js +109 -0
- package/dist/features/auctions/repository/bid.repository.js +3 -1
- package/dist/features/audit-log/schemas/firestore.d.ts +110 -0
- package/dist/features/audit-log/schemas/firestore.js +74 -0
- package/dist/features/auth/actions/profile-actions.d.ts +69 -1
- package/dist/features/auth/actions/profile-actions.js +62 -1
- package/dist/features/auth/schemas/firestore.d.ts +16 -2
- package/dist/features/auth/schemas/firestore.js +2 -1
- package/dist/features/blog/actions/blog-actions.d.ts +6 -0
- package/dist/features/blog/actions/blog-actions.js +17 -2
- package/dist/features/blog/api/route.js +4 -1
- package/dist/features/blog/columns/index.js +5 -0
- package/dist/features/blog/components/BlogIndexPageView.js +2 -1
- package/dist/features/blog/repository/blog.repository.d.ts +4 -0
- package/dist/features/blog/repository/blog.repository.js +5 -0
- package/dist/features/blog/schemas/blog-form.d.ts +3 -0
- package/dist/features/blog/schemas/blog-form.js +1 -0
- package/dist/features/blog/schemas/firestore.d.ts +38 -1
- package/dist/features/blog/schemas/firestore.js +23 -0
- package/dist/features/blog/schemas/index.d.ts +6 -0
- package/dist/features/blog/schemas/index.js +2 -0
- package/dist/features/blog/types/index.d.ts +2 -0
- package/dist/features/cart/components/CartPriceBreakdown.d.ts +12 -1
- package/dist/features/cart/components/CartPriceBreakdown.js +24 -5
- package/dist/features/cart/repository/cart.repository.d.ts +14 -0
- package/dist/features/cart/repository/cart.repository.js +20 -0
- package/dist/features/cart/schemas/firestore.d.ts +24 -0
- package/dist/features/dashboard/components/DashboardHubView.d.ts +83 -0
- package/dist/features/dashboard/components/DashboardHubView.js +56 -0
- package/dist/features/dashboard/components/DashboardSectionsClient.d.ts +23 -0
- package/dist/features/dashboard/components/DashboardSectionsClient.js +66 -0
- package/dist/features/dispute-reasons/components/AdminDisputeReasonsView.d.ts +55 -0
- package/dist/features/dispute-reasons/components/AdminDisputeReasonsView.js +175 -0
- package/dist/features/dispute-reasons/repository/dispute-reasons.repository.d.ts +24 -0
- package/dist/features/dispute-reasons/repository/dispute-reasons.repository.js +28 -0
- package/dist/features/dispute-reasons/schemas/firestore.d.ts +3 -5
- package/dist/features/events/components/EventSaleBanner.js +1 -1
- package/dist/features/faq/components/FAQPageContent.js +2 -2
- package/dist/features/gateway-events/schemas/index.d.ts +2 -2
- package/dist/features/homepage/schemas/index.d.ts +8 -8
- package/dist/features/inventory/schemas/stock-reservation.d.ts +114 -0
- package/dist/features/inventory/schemas/stock-reservation.js +103 -0
- package/dist/features/layout/AppLayoutShell.d.ts +9 -1
- package/dist/features/layout/AppLayoutShell.js +12 -4
- package/dist/features/layout/BottomActions.js +2 -1
- package/dist/features/layout/BottomNavbar.d.ts +10 -2
- package/dist/features/layout/SideActionDock.js +52 -2
- package/dist/features/layout/TitleBarLayout.js +13 -4
- package/dist/features/layout/TitleBarLayout.style.css +59 -0
- package/dist/features/layout/useCtaReveal.d.ts +16 -1
- package/dist/features/layout/useCtaReveal.js +17 -26
- package/dist/features/ledger/repository/journal.repository.d.ts +110 -0
- package/dist/features/ledger/repository/journal.repository.js +312 -0
- package/dist/features/ledger/schemas/expenses.d.ts +87 -0
- package/dist/features/ledger/schemas/expenses.js +27 -0
- package/dist/features/ledger/schemas/firestore.d.ts +183 -0
- package/dist/features/ledger/schemas/firestore.js +69 -0
- package/dist/features/orders/components/BalancePaymentPanel.d.ts +12 -0
- package/dist/features/orders/components/BalancePaymentPanel.js +94 -0
- package/dist/features/orders/components/RaiseDisputeForm.js +19 -11
- package/dist/features/orders/repository/orders.repository.d.ts +28 -1
- package/dist/features/orders/repository/orders.repository.js +60 -6
- package/dist/features/orders/schemas/balance.d.ts +40 -0
- package/dist/features/orders/schemas/balance.js +47 -0
- package/dist/features/orders/schemas/firestore.d.ts +202 -0
- package/dist/features/orders/schemas/firestore.js +43 -0
- package/dist/features/orders/schemas/index.d.ts +2 -2
- package/dist/features/orders/types/index.d.ts +21 -0
- package/dist/features/payments/repository/payout.repository.js +3 -2
- package/dist/features/payments/schemas/firestore.d.ts +92 -1
- package/dist/features/payments/schemas/firestore.js +23 -0
- package/dist/features/pricing/components/AdminPricingView.d.ts +13 -0
- package/dist/features/pricing/components/AdminPricingView.js +157 -0
- package/dist/features/products/schemas/firestore.d.ts +26 -1
- package/dist/features/products/schemas/firestore.js +2 -0
- package/dist/features/products/schemas/index.d.ts +2 -2
- package/dist/features/reviews/repository/reviews.repository.d.ts +14 -0
- package/dist/features/reviews/repository/reviews.repository.js +16 -0
- package/dist/features/scams/repository/scammer.repository.js +2 -1
- package/dist/features/scams/schemas/firestore.d.ts +2 -1
- package/dist/features/scams/schemas/firestore.js +2 -1
- package/dist/features/seller/actions/offer-actions.js +56 -0
- package/dist/features/seller/actions/seller-actions.d.ts +1 -1
- package/dist/features/seller/actions/seller-actions.js +4 -0
- package/dist/features/seller/components/DispatchForm.d.ts +11 -0
- package/dist/features/seller/components/DispatchForm.js +190 -0
- package/dist/features/seller/components/SellerOrdersView.js +94 -2
- package/dist/features/seller/components/index.d.ts +1 -0
- package/dist/features/seller/components/index.js +1 -0
- package/dist/features/seller/repository/offer.repository.js +4 -3
- package/dist/features/seller/schemas/firestore.d.ts +23 -2
- package/dist/features/seller/schemas/firestore.js +3 -2
- package/dist/features/seller/schemas/index.d.ts +4 -4
- package/dist/features/seller/schemas/order-forms.d.ts +61 -4
- package/dist/features/seller/schemas/order-forms.js +41 -8
- package/dist/features/shipments/schemas/firestore.d.ts +25 -0
- package/dist/features/shipping-boxes/repository/shipping-boxes.repository.d.ts +39 -0
- package/dist/features/shipping-boxes/repository/shipping-boxes.repository.js +55 -0
- package/dist/features/shipping-boxes/schemas/firestore.d.ts +2 -4
- package/dist/features/stores/repository/store.repository.d.ts +18 -0
- package/dist/features/stores/repository/store.repository.js +27 -1
- package/dist/features/stores/schemas/firestore.d.ts +41 -0
- package/dist/features/stores/schemas/firestore.js +20 -0
- package/dist/features/stores/schemas/index.d.ts +6 -6
- package/dist/features/support/repository/support.repository.js +72 -6
- package/dist/features/support/schemas/firestore.d.ts +17 -0
- package/dist/features/support/schemas/index.d.ts +2 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.js +19 -0
- package/dist/next/routing/route-map.d.ts +92 -0
- package/dist/next/routing/route-map.js +53 -0
- package/dist/react/contexts/SessionContext.d.ts +17 -1
- package/dist/schemas/registry.d.ts +22 -16
- package/dist/security/pii-schemas.d.ts +1 -1
- package/dist/security/pii-schemas.js +45 -0
- package/dist/server.d.ts +27 -1
- package/dist/server.js +144 -0
- package/dist/styles.css +349 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Button.d.ts +10 -1
- package/dist/ui/components/Button.js +25 -3
- package/dist/ui/components/Chart.d.ts +63 -0
- package/dist/ui/components/Chart.js +169 -0
- package/dist/ui/components/Chart.style.css +214 -0
- package/dist/ui/components/Disclaimer.js +10 -1
- package/dist/ui/components/OverflowRow.js +54 -2
- package/dist/ui/components/OverflowRow.style.css +38 -0
- package/dist/ui/components/RichTextEditor.js +99 -8
- package/dist/ui/components/chart-spec.d.ts +68 -0
- package/dist/ui/components/chart-spec.js +140 -0
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/components/surface-tokens.d.ts +1 -1
- package/dist/ui/components/surface-tokens.js +9 -0
- package/dist/ui/components/toolbar-collapse.d.ts +13 -0
- package/dist/ui/components/toolbar-collapse.js +10 -1
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/rich-text/RichText.d.ts +10 -1
- package/dist/ui/rich-text/RichText.js +33 -2
- package/dist/ui/rich-text/RichText.style.css +35 -0
- package/dist/ui/rich-text/RichTextRenderer.d.ts +30 -1
- package/dist/ui/rich-text/RichTextRenderer.js +34 -2
- package/dist/ui/rich-text/chart-blocks.d.ts +62 -0
- package/dist/ui/rich-text/chart-blocks.js +87 -0
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +3 -0
|
@@ -157,7 +157,7 @@ export declare const supportTicketFirestoreSchema: z.ZodObject<{
|
|
|
157
157
|
updatedAt: string | Date | z.objectOutputType<{
|
|
158
158
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
159
159
|
}, z.ZodTypeAny, "passthrough">;
|
|
160
|
-
category: "general" | "
|
|
160
|
+
category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
|
|
161
161
|
priority: "normal" | "high" | "low" | "urgent";
|
|
162
162
|
description: string;
|
|
163
163
|
userId: string;
|
|
@@ -200,7 +200,7 @@ export declare const supportTicketFirestoreSchema: z.ZodObject<{
|
|
|
200
200
|
updatedAt: string | Date | z.objectInputType<{
|
|
201
201
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
202
202
|
}, z.ZodTypeAny, "passthrough">;
|
|
203
|
-
category: "general" | "
|
|
203
|
+
category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
|
|
204
204
|
priority: "normal" | "high" | "low" | "urgent";
|
|
205
205
|
description: string;
|
|
206
206
|
userId: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -550,6 +550,8 @@ export { scammerRepository } from "./repositories/index";
|
|
|
550
550
|
export { supportRepository, SupportRepository } from "./repositories/index";
|
|
551
551
|
export type { SupportTicketDocument, SupportTicketCreateInput, SupportTicketUpdateInput, TicketMessage, TicketCategory, TicketStatus, TicketPriority, } from "./repositories/index";
|
|
552
552
|
export { ELIGIBLE_ORDER_STATUSES_FOR_TICKET, SUPPORT_TICKET_COLLECTION, ACTIVE_TICKET_STATUSES, SUPPORT_TICKET_FIELDS, TicketCategoryValues, TicketStatusValues, TicketPriorityValues, } from "./features/support/schemas/firestore";
|
|
553
|
+
export { AdminIntegrationsView } from "./features/admin/components/AdminIntegrationsView";
|
|
554
|
+
export type { AdminIntegrationsViewProps } from "./features/admin/components/AdminIntegrationsView";
|
|
553
555
|
export { AdminTaxCodesView } from "./features/admin/components/AdminTaxCodesView";
|
|
554
556
|
export type { AdminTaxCodesViewProps } from "./features/admin/components/AdminTaxCodesView";
|
|
555
557
|
export { AdminTaxCodeEditorView } from "./features/admin/components/AdminTaxCodeEditorView";
|
|
@@ -2201,6 +2203,9 @@ export type { ProtectionKind, ProtectionAvailability, ProtectionTierInput, Prote
|
|
|
2201
2203
|
export type { FeeCommissionRates, CheckoutFees, PayoutDeduction, CodHandlingFeeRates, GiftWrapFeeRates, ShipmentProtectionFeeRates, SaleProtectionFeeRates, GstBreakdown, } from "./_internal/shared/fees/calculator";
|
|
2202
2204
|
export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote } from "./_internal/shared/features/emi/schedule";
|
|
2203
2205
|
export type { BuyerEmiQuote } from "./_internal/shared/features/emi/schedule";
|
|
2206
|
+
export { amountDueNow, groupEmiGate, groupEmiQuote, groupEmiSchedule, emiOrderFields } from "./_internal/shared/features/emi/group";
|
|
2207
|
+
export { emiTenderFor, resolveEmiChoice, emiTenderBlockReason, isTenderCompatibleWithEmi } from "./_internal/shared/features/emi/choice";
|
|
2208
|
+
export type { EmiChoice, EmiTender } from "./_internal/shared/features/emi/choice";
|
|
2204
2209
|
export { toBuyerFacingFees, toBuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees";
|
|
2205
2210
|
export type { BuyerFacingFees, BuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees";
|
|
2206
2211
|
export { GSTIN_PATTERN, gstinCheckCharacter, isValidGstin, validateGstEnablement, canEnableGst, } from "./_internal/shared/features/site-settings/gst-registration";
|
package/dist/index.js
CHANGED
|
@@ -1090,6 +1090,15 @@ export { ELIGIBLE_ORDER_STATUSES_FOR_TICKET, SUPPORT_TICKET_COLLECTION, ACTIVE_T
|
|
|
1090
1090
|
// SB-UNI-B â€" sublistingCategoriesRepository + SublistingCategoryDocument deleted.
|
|
1091
1091
|
// Use categoriesRepository.findBySlugAndType(slug, "sublisting") and CategoryDocument with categoryType:"sublisting".
|
|
1092
1092
|
// [DB]-Database layer â€" uses firebase-admin; server-only.
|
|
1093
|
+
/*
|
|
1094
|
+
* AdminIntegrationsView (12b) — /admin/integrations.
|
|
1095
|
+
*
|
|
1096
|
+
* The caller `INTEGRATIONS` / `integrationPatch` / `allIntegrationsPatch` were
|
|
1097
|
+
* missing: the model landed with every route guard resolving through it and
|
|
1098
|
+
* nothing in the UI reading it, which made those three exports speculative
|
|
1099
|
+
* infra. This is what reads them.
|
|
1100
|
+
*/
|
|
1101
|
+
export { AdminIntegrationsView } from "./features/admin/components/AdminIntegrationsView.js";
|
|
1093
1102
|
// AdminTaxCodesView / AdminTaxCodeEditorView (B3) — /admin/tax-codes.
|
|
1094
1103
|
export { AdminTaxCodesView } from "./features/admin/components/AdminTaxCodesView.js";
|
|
1095
1104
|
export { AdminTaxCodeEditorView } from "./features/admin/components/AdminTaxCodeEditorView.js";
|
|
@@ -4097,6 +4106,16 @@ export { searchPriceIndex, PRICE_INDEX_SEARCH_LIMIT, PRICE_INDEX_MIN_QUERY_LENGT
|
|
|
4097
4106
|
export { protectionAvailability, computeProtectionFees, adjudicateClaim, badgesFor, showsRiskNotice, showsSafetyBadge, returnDestination, rtoDestination, PROTECTION_KINDS, } from "./_internal/shared/features/shipping/protections.js";
|
|
4098
4107
|
// EMI eligibility + schedule computation (pure, client-safe — used for checkout quotes).
|
|
4099
4108
|
export { checkEmiEligibility, computeEmiSchedule, computeBuyerEmiQuote } from "./_internal/shared/features/emi/schedule.js";
|
|
4109
|
+
/*
|
|
4110
|
+
* 0f — the per-group instalment helpers. Exported because the CAPTURE amount
|
|
4111
|
+
* is computed in a consumer route (`/api/payment/create-order`), and that
|
|
4112
|
+
* route is one of the four money paths that must agree about an EMI order.
|
|
4113
|
+
* There is no `./_internal/*` subpath, deliberately, so the barrel is how a
|
|
4114
|
+
* consumer reaches shared checkout maths — exactly as `lineTotalFor` and
|
|
4115
|
+
* `resolveShippingCost` already are.
|
|
4116
|
+
*/
|
|
4117
|
+
export { amountDueNow, groupEmiGate, groupEmiQuote, groupEmiSchedule, emiOrderFields } from "./_internal/shared/features/emi/group.js";
|
|
4118
|
+
export { emiTenderFor, resolveEmiChoice, emiTenderBlockReason, isTenderCompatibleWithEmi } from "./_internal/shared/features/emi/choice.js";
|
|
4100
4119
|
// Buyer-facing projections of siteSettings.commissions / .emi — the single
|
|
4101
4120
|
// definition of "safe to send to a browser" for fee data. See fees.ts header.
|
|
4102
4121
|
export { toBuyerFacingFees, toBuyerEmiSettings, } from "./_internal/shared/features/site-settings/fees.js";
|
|
@@ -21,6 +21,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
21
21
|
readonly AUCTIONS: "/auctions";
|
|
22
22
|
readonly AUCTION_DETAIL: (id: string) => string;
|
|
23
23
|
readonly PRE_ORDERS: "/pre-orders";
|
|
24
|
+
/** D56 — the public rate card + self-serve booking form. */
|
|
25
|
+
readonly ADVERTISE: "/advertise";
|
|
24
26
|
readonly PRE_ORDER_DETAIL: (id: string) => string;
|
|
25
27
|
readonly BUNDLES: "/bundles";
|
|
26
28
|
readonly BUNDLE_DETAIL: (slug: string) => string;
|
|
@@ -157,6 +159,16 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
157
159
|
};
|
|
158
160
|
readonly USER: {
|
|
159
161
|
readonly DASHBOARD: "/user";
|
|
162
|
+
/**
|
|
163
|
+
* A dashboard SECTION hub — the screens of one sidebar group, each with a
|
|
164
|
+
* sentence on what it is for.
|
|
165
|
+
*
|
|
166
|
+
* One parametric route serves every section of the portal; the slug is
|
|
167
|
+
* `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
|
|
168
|
+
* section keys here to drift from the nav. `audit-dashboard-hub-coverage`
|
|
169
|
+
* cross-checks the two.
|
|
170
|
+
*/
|
|
171
|
+
readonly SECTION: (slug: string) => string;
|
|
160
172
|
readonly PROFILE: "/user/profile";
|
|
161
173
|
readonly SETTINGS: "/user/settings";
|
|
162
174
|
readonly ORDERS: "/user/orders";
|
|
@@ -177,6 +189,17 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
177
189
|
readonly ORDER_CLAIM: (id: string) => string;
|
|
178
190
|
readonly ORDER_INVOICE: (id: string) => string;
|
|
179
191
|
readonly ORDER_PAYMENT: (id: string) => string;
|
|
192
|
+
/**
|
|
193
|
+
* Raise a dispute on one order.
|
|
194
|
+
*
|
|
195
|
+
* Deep-linkable on purpose: a notification `actionUrl` points here, and
|
|
196
|
+
* `/user/orders/view/{id}` carries a "Report a problem" button to the same
|
|
197
|
+
* place. One surface, two ways in — an email link that works only while
|
|
198
|
+
* the buyer still has the email is the shape Root Cause #57 records,
|
|
199
|
+
* where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
|
|
200
|
+
* away could not get back.
|
|
201
|
+
*/
|
|
202
|
+
readonly ORDER_DISPUTE: (id: string) => string;
|
|
180
203
|
readonly NOTIFICATIONS: "/user/notifications";
|
|
181
204
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
182
205
|
readonly CLAIMED_COUPONS: "/user/coupons";
|
|
@@ -198,6 +221,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
198
221
|
readonly SUPPORT_NEW: "/user/support/new";
|
|
199
222
|
readonly SUPPORT_TICKET: (id: string) => string;
|
|
200
223
|
readonly PRE_ORDERS: "/user/pre-orders";
|
|
224
|
+
/** D56 — the advertiser's own bookings and their moderation state. */
|
|
225
|
+
readonly AD_BOOKINGS: "/user/ad-bookings";
|
|
201
226
|
readonly DIGITAL_CODES: "/user/digital-codes";
|
|
202
227
|
readonly PRIZE_DRAWS: "/user/prize-draws";
|
|
203
228
|
readonly EVENTS: "/user/events";
|
|
@@ -210,6 +235,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
210
235
|
};
|
|
211
236
|
readonly STORE: {
|
|
212
237
|
readonly DASHBOARD: "/store";
|
|
238
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
239
|
+
readonly SECTION: (slug: string) => string;
|
|
213
240
|
readonly PRODUCTS: "/store/products";
|
|
214
241
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
215
242
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -300,6 +327,18 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
300
327
|
};
|
|
301
328
|
readonly ADMIN: {
|
|
302
329
|
readonly DASHBOARD: "/admin/dashboard";
|
|
330
|
+
/**
|
|
331
|
+
* The sectioned landing at `/admin` — what used to `redirect()` to
|
|
332
|
+
* `DASHBOARD`.
|
|
333
|
+
*
|
|
334
|
+
* 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
|
|
335
|
+
* metrics screen, and the sidebar's "Dashboard" entry points at it. This
|
|
336
|
+
* key is the index that lists the twelve sections. Collapsing the two would
|
|
337
|
+
* either bury the metrics or make the index unreachable.
|
|
338
|
+
*/
|
|
339
|
+
readonly HOME: "/admin";
|
|
340
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
341
|
+
readonly SECTION: (slug: string) => string;
|
|
303
342
|
readonly SHIPMENTS: "/admin/shipments";
|
|
304
343
|
readonly INVENTORY_BOXES: "/admin/inventory/boxes";
|
|
305
344
|
readonly INVENTORY_BOX_DETAIL: (id: string) => string;
|
|
@@ -315,6 +354,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
315
354
|
readonly USER_DETAIL: (id: string) => string;
|
|
316
355
|
readonly USER_EDIT: (id: string) => string;
|
|
317
356
|
readonly SITE: "/admin/site";
|
|
357
|
+
readonly INTEGRATIONS: "/admin/integrations";
|
|
318
358
|
readonly CAROUSEL: "/admin/carousel";
|
|
319
359
|
readonly CAROUSEL_NEW: "/admin/carousel/new";
|
|
320
360
|
readonly CAROUSEL_EDIT: (id: string) => string;
|
|
@@ -374,6 +414,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
374
414
|
readonly ANALYTICS: "/admin/analytics";
|
|
375
415
|
readonly PAYOUTS: "/admin/payouts";
|
|
376
416
|
readonly PAYOUT_DETAIL: (id: string) => string;
|
|
417
|
+
readonly PRICING: "/admin/pricing";
|
|
377
418
|
readonly AUDIT_LOG: "/admin/audit-log";
|
|
378
419
|
readonly MONEY_CASES: "/admin/money-cases";
|
|
379
420
|
readonly MONEY_CASE_DETAIL: (id: string) => string;
|
|
@@ -399,6 +440,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
399
440
|
readonly ADS: "/admin/ads";
|
|
400
441
|
readonly ADS_NEW: "/admin/ads/new";
|
|
401
442
|
readonly ADS_EDIT: (id: string) => string;
|
|
443
|
+
/** D56 — the self-serve creative moderation queue. */
|
|
444
|
+
readonly AD_BOOKINGS: "/admin/ads/bookings";
|
|
402
445
|
readonly NEWSLETTER: "/admin/newsletter";
|
|
403
446
|
readonly CONTACT: "/admin/contact";
|
|
404
447
|
readonly SESSIONS: "/admin/sessions";
|
|
@@ -433,6 +476,8 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
433
476
|
readonly TEAM_NEW: "/admin/team/new";
|
|
434
477
|
readonly TEAM_EDIT: (id: string) => string;
|
|
435
478
|
readonly SUPPORT_TICKETS: "/admin/support-tickets";
|
|
479
|
+
/** Staff curation of the reasons a buyer can pick when disputing. */
|
|
480
|
+
readonly DISPUTE_REASONS: "/admin/dispute-reasons";
|
|
436
481
|
readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
|
|
437
482
|
readonly SCAMMERS: "/admin/scammers";
|
|
438
483
|
readonly SCAMMER_BY_ID: (id: string) => string;
|
|
@@ -485,6 +530,8 @@ export declare const ROUTES: {
|
|
|
485
530
|
readonly AUCTIONS: "/auctions";
|
|
486
531
|
readonly AUCTION_DETAIL: (id: string) => string;
|
|
487
532
|
readonly PRE_ORDERS: "/pre-orders";
|
|
533
|
+
/** D56 — the public rate card + self-serve booking form. */
|
|
534
|
+
readonly ADVERTISE: "/advertise";
|
|
488
535
|
readonly PRE_ORDER_DETAIL: (id: string) => string;
|
|
489
536
|
readonly BUNDLES: "/bundles";
|
|
490
537
|
readonly BUNDLE_DETAIL: (slug: string) => string;
|
|
@@ -621,6 +668,16 @@ export declare const ROUTES: {
|
|
|
621
668
|
};
|
|
622
669
|
readonly USER: {
|
|
623
670
|
readonly DASHBOARD: "/user";
|
|
671
|
+
/**
|
|
672
|
+
* A dashboard SECTION hub — the screens of one sidebar group, each with a
|
|
673
|
+
* sentence on what it is for.
|
|
674
|
+
*
|
|
675
|
+
* One parametric route serves every section of the portal; the slug is
|
|
676
|
+
* `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
|
|
677
|
+
* section keys here to drift from the nav. `audit-dashboard-hub-coverage`
|
|
678
|
+
* cross-checks the two.
|
|
679
|
+
*/
|
|
680
|
+
readonly SECTION: (slug: string) => string;
|
|
624
681
|
readonly PROFILE: "/user/profile";
|
|
625
682
|
readonly SETTINGS: "/user/settings";
|
|
626
683
|
readonly ORDERS: "/user/orders";
|
|
@@ -641,6 +698,17 @@ export declare const ROUTES: {
|
|
|
641
698
|
readonly ORDER_CLAIM: (id: string) => string;
|
|
642
699
|
readonly ORDER_INVOICE: (id: string) => string;
|
|
643
700
|
readonly ORDER_PAYMENT: (id: string) => string;
|
|
701
|
+
/**
|
|
702
|
+
* Raise a dispute on one order.
|
|
703
|
+
*
|
|
704
|
+
* Deep-linkable on purpose: a notification `actionUrl` points here, and
|
|
705
|
+
* `/user/orders/view/{id}` carries a "Report a problem" button to the same
|
|
706
|
+
* place. One surface, two ways in — an email link that works only while
|
|
707
|
+
* the buyer still has the email is the shape Root Cause #57 records,
|
|
708
|
+
* where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
|
|
709
|
+
* away could not get back.
|
|
710
|
+
*/
|
|
711
|
+
readonly ORDER_DISPUTE: (id: string) => string;
|
|
644
712
|
readonly NOTIFICATIONS: "/user/notifications";
|
|
645
713
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
646
714
|
readonly CLAIMED_COUPONS: "/user/coupons";
|
|
@@ -662,6 +730,8 @@ export declare const ROUTES: {
|
|
|
662
730
|
readonly SUPPORT_NEW: "/user/support/new";
|
|
663
731
|
readonly SUPPORT_TICKET: (id: string) => string;
|
|
664
732
|
readonly PRE_ORDERS: "/user/pre-orders";
|
|
733
|
+
/** D56 — the advertiser's own bookings and their moderation state. */
|
|
734
|
+
readonly AD_BOOKINGS: "/user/ad-bookings";
|
|
665
735
|
readonly DIGITAL_CODES: "/user/digital-codes";
|
|
666
736
|
readonly PRIZE_DRAWS: "/user/prize-draws";
|
|
667
737
|
readonly EVENTS: "/user/events";
|
|
@@ -674,6 +744,8 @@ export declare const ROUTES: {
|
|
|
674
744
|
};
|
|
675
745
|
readonly STORE: {
|
|
676
746
|
readonly DASHBOARD: "/store";
|
|
747
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
748
|
+
readonly SECTION: (slug: string) => string;
|
|
677
749
|
readonly PRODUCTS: "/store/products";
|
|
678
750
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
679
751
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -764,6 +836,18 @@ export declare const ROUTES: {
|
|
|
764
836
|
};
|
|
765
837
|
readonly ADMIN: {
|
|
766
838
|
readonly DASHBOARD: "/admin/dashboard";
|
|
839
|
+
/**
|
|
840
|
+
* The sectioned landing at `/admin` — what used to `redirect()` to
|
|
841
|
+
* `DASHBOARD`.
|
|
842
|
+
*
|
|
843
|
+
* 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
|
|
844
|
+
* metrics screen, and the sidebar's "Dashboard" entry points at it. This
|
|
845
|
+
* key is the index that lists the twelve sections. Collapsing the two would
|
|
846
|
+
* either bury the metrics or make the index unreachable.
|
|
847
|
+
*/
|
|
848
|
+
readonly HOME: "/admin";
|
|
849
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
850
|
+
readonly SECTION: (slug: string) => string;
|
|
767
851
|
readonly SHIPMENTS: "/admin/shipments";
|
|
768
852
|
readonly INVENTORY_BOXES: "/admin/inventory/boxes";
|
|
769
853
|
readonly INVENTORY_BOX_DETAIL: (id: string) => string;
|
|
@@ -779,6 +863,7 @@ export declare const ROUTES: {
|
|
|
779
863
|
readonly USER_DETAIL: (id: string) => string;
|
|
780
864
|
readonly USER_EDIT: (id: string) => string;
|
|
781
865
|
readonly SITE: "/admin/site";
|
|
866
|
+
readonly INTEGRATIONS: "/admin/integrations";
|
|
782
867
|
readonly CAROUSEL: "/admin/carousel";
|
|
783
868
|
readonly CAROUSEL_NEW: "/admin/carousel/new";
|
|
784
869
|
readonly CAROUSEL_EDIT: (id: string) => string;
|
|
@@ -838,6 +923,7 @@ export declare const ROUTES: {
|
|
|
838
923
|
readonly ANALYTICS: "/admin/analytics";
|
|
839
924
|
readonly PAYOUTS: "/admin/payouts";
|
|
840
925
|
readonly PAYOUT_DETAIL: (id: string) => string;
|
|
926
|
+
readonly PRICING: "/admin/pricing";
|
|
841
927
|
readonly AUDIT_LOG: "/admin/audit-log";
|
|
842
928
|
readonly MONEY_CASES: "/admin/money-cases";
|
|
843
929
|
readonly MONEY_CASE_DETAIL: (id: string) => string;
|
|
@@ -863,6 +949,8 @@ export declare const ROUTES: {
|
|
|
863
949
|
readonly ADS: "/admin/ads";
|
|
864
950
|
readonly ADS_NEW: "/admin/ads/new";
|
|
865
951
|
readonly ADS_EDIT: (id: string) => string;
|
|
952
|
+
/** D56 — the self-serve creative moderation queue. */
|
|
953
|
+
readonly AD_BOOKINGS: "/admin/ads/bookings";
|
|
866
954
|
readonly NEWSLETTER: "/admin/newsletter";
|
|
867
955
|
readonly CONTACT: "/admin/contact";
|
|
868
956
|
readonly SESSIONS: "/admin/sessions";
|
|
@@ -897,6 +985,8 @@ export declare const ROUTES: {
|
|
|
897
985
|
readonly TEAM_NEW: "/admin/team/new";
|
|
898
986
|
readonly TEAM_EDIT: (id: string) => string;
|
|
899
987
|
readonly SUPPORT_TICKETS: "/admin/support-tickets";
|
|
988
|
+
/** Staff curation of the reasons a buyer can pick when disputing. */
|
|
989
|
+
readonly DISPUTE_REASONS: "/admin/dispute-reasons";
|
|
900
990
|
readonly SUPPORT_TICKET_BY_ID: (id: string) => string;
|
|
901
991
|
readonly SCAMMERS: "/admin/scammers";
|
|
902
992
|
readonly SCAMMER_BY_ID: (id: string) => string;
|
|
@@ -940,6 +1030,8 @@ export declare const ROUTES: {
|
|
|
940
1030
|
/** @deprecated Use ROUTES.STORE instead */
|
|
941
1031
|
export declare const SELLER_ROUTES: {
|
|
942
1032
|
readonly DASHBOARD: "/store";
|
|
1033
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
1034
|
+
readonly SECTION: (slug: string) => string;
|
|
943
1035
|
readonly PRODUCTS: "/store/products";
|
|
944
1036
|
readonly PRODUCTS_NEW: "/store/products/new";
|
|
945
1037
|
readonly PRODUCTS_EDIT: (id: string) => string;
|
|
@@ -9,6 +9,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
9
9
|
AUCTIONS: "/auctions",
|
|
10
10
|
AUCTION_DETAIL: (id) => `/auctions/${id}`,
|
|
11
11
|
PRE_ORDERS: "/pre-orders",
|
|
12
|
+
/** D56 — the public rate card + self-serve booking form. */
|
|
13
|
+
ADVERTISE: "/advertise",
|
|
12
14
|
PRE_ORDER_DETAIL: (id) => `/pre-orders/${id}`,
|
|
13
15
|
// SB1-J — bundles + prize draws (additive, pages not yet built)
|
|
14
16
|
BUNDLES: "/bundles",
|
|
@@ -261,6 +263,16 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
261
263
|
},
|
|
262
264
|
USER: {
|
|
263
265
|
DASHBOARD: "/user",
|
|
266
|
+
/**
|
|
267
|
+
* A dashboard SECTION hub — the screens of one sidebar group, each with a
|
|
268
|
+
* sentence on what it is for.
|
|
269
|
+
*
|
|
270
|
+
* One parametric route serves every section of the portal; the slug is
|
|
271
|
+
* `hubSectionSlug(group.title)` and is DERIVED, so there is no list of
|
|
272
|
+
* section keys here to drift from the nav. `audit-dashboard-hub-coverage`
|
|
273
|
+
* cross-checks the two.
|
|
274
|
+
*/
|
|
275
|
+
SECTION: (slug) => `/user/sections/${slug}`,
|
|
264
276
|
PROFILE: "/user/profile",
|
|
265
277
|
SETTINGS: "/user/settings",
|
|
266
278
|
ORDERS: "/user/orders",
|
|
@@ -297,6 +309,17 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
297
309
|
ORDER_CLAIM: (id) => `/user/orders/${id}/claim`,
|
|
298
310
|
ORDER_INVOICE: (id) => `/user/orders/${id}/invoice`,
|
|
299
311
|
ORDER_PAYMENT: (id) => `/user/orders/${id}/payment`,
|
|
312
|
+
/**
|
|
313
|
+
* Raise a dispute on one order.
|
|
314
|
+
*
|
|
315
|
+
* Deep-linkable on purpose: a notification `actionUrl` points here, and
|
|
316
|
+
* `/user/orders/view/{id}` carries a "Report a problem" button to the same
|
|
317
|
+
* place. One surface, two ways in — an email link that works only while
|
|
318
|
+
* the buyer still has the email is the shape Root Cause #57 records,
|
|
319
|
+
* where `ORDER_PAYMENT` had exactly ONE caller and a buyer who navigated
|
|
320
|
+
* away could not get back.
|
|
321
|
+
*/
|
|
322
|
+
ORDER_DISPUTE: (id) => `/user/orders/${id}/dispute`,
|
|
300
323
|
NOTIFICATIONS: "/user/notifications",
|
|
301
324
|
/** Plan §10 — claimed-coupons wallet (Active / Expired / Used tabs). */
|
|
302
325
|
CLAIMED_COUPONS: "/user/coupons",
|
|
@@ -333,6 +356,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
333
356
|
SUPPORT_NEW: "/user/support/new",
|
|
334
357
|
SUPPORT_TICKET: (id) => `/user/support/${id}`,
|
|
335
358
|
PRE_ORDERS: "/user/pre-orders",
|
|
359
|
+
/** D56 — the advertiser's own bookings and their moderation state. */
|
|
360
|
+
AD_BOOKINGS: "/user/ad-bookings",
|
|
336
361
|
DIGITAL_CODES: "/user/digital-codes",
|
|
337
362
|
PRIZE_DRAWS: "/user/prize-draws",
|
|
338
363
|
EVENTS: "/user/events",
|
|
@@ -345,6 +370,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
345
370
|
},
|
|
346
371
|
STORE: {
|
|
347
372
|
DASHBOARD: "/store",
|
|
373
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
374
|
+
SECTION: (slug) => `/store/sections/${slug}`,
|
|
348
375
|
PRODUCTS: "/store/products",
|
|
349
376
|
PRODUCTS_NEW: "/store/products/new",
|
|
350
377
|
PRODUCTS_EDIT: (id) => `/store/products/${id}/edit`,
|
|
@@ -441,6 +468,18 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
441
468
|
},
|
|
442
469
|
ADMIN: {
|
|
443
470
|
DASHBOARD: "/admin/dashboard",
|
|
471
|
+
/**
|
|
472
|
+
* The sectioned landing at `/admin` — what used to `redirect()` to
|
|
473
|
+
* `DASHBOARD`.
|
|
474
|
+
*
|
|
475
|
+
* 🛑 `DASHBOARD` is `/admin/dashboard` and stays a separate page: it is the
|
|
476
|
+
* metrics screen, and the sidebar's "Dashboard" entry points at it. This
|
|
477
|
+
* key is the index that lists the twelve sections. Collapsing the two would
|
|
478
|
+
* either bury the metrics or make the index unreachable.
|
|
479
|
+
*/
|
|
480
|
+
HOME: "/admin",
|
|
481
|
+
/** A dashboard SECTION hub — see `USER.SECTION` for the derivation. */
|
|
482
|
+
SECTION: (slug) => `/admin/sections/${slug}`,
|
|
444
483
|
SHIPMENTS: "/admin/shipments",
|
|
445
484
|
/*
|
|
446
485
|
* 🛑 There is deliberately NO `INVENTORY: "/admin/inventory"` key.
|
|
@@ -476,6 +515,15 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
476
515
|
USER_DETAIL: (id) => `/admin/users/${id}`,
|
|
477
516
|
USER_EDIT: (id) => `/admin/users/${id}/edit`,
|
|
478
517
|
SITE: "/admin/site",
|
|
518
|
+
/*
|
|
519
|
+
* The integration kill switches — its OWN page, not a Site Settings tab.
|
|
520
|
+
*
|
|
521
|
+
* A switch that stops money has to be findable without hunting a tab
|
|
522
|
+
* strip, and this is the one surface where all four are visible together
|
|
523
|
+
* (which matters, because their off-states are not comparable: three stop
|
|
524
|
+
* something and one selects a working alternative).
|
|
525
|
+
*/
|
|
526
|
+
INTEGRATIONS: "/admin/integrations",
|
|
479
527
|
CAROUSEL: "/admin/carousel",
|
|
480
528
|
CAROUSEL_NEW: "/admin/carousel/new",
|
|
481
529
|
CAROUSEL_EDIT: (id) => `/admin/carousel/${id}/edit`,
|
|
@@ -563,6 +611,7 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
563
611
|
ANALYTICS: "/admin/analytics",
|
|
564
612
|
PAYOUTS: "/admin/payouts",
|
|
565
613
|
PAYOUT_DETAIL: (id) => `/admin/payouts/${id}/view`,
|
|
614
|
+
PRICING: "/admin/pricing",
|
|
566
615
|
AUDIT_LOG: "/admin/audit-log",
|
|
567
616
|
/*
|
|
568
617
|
* 🛑 MONEY_CASES is deliberately NOT under `/admin/maintenance/`.
|
|
@@ -601,6 +650,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
601
650
|
ADS: "/admin/ads",
|
|
602
651
|
ADS_NEW: "/admin/ads/new",
|
|
603
652
|
ADS_EDIT: (id) => `/admin/ads/${id}/edit`,
|
|
653
|
+
/** D56 — the self-serve creative moderation queue. */
|
|
654
|
+
AD_BOOKINGS: "/admin/ads/bookings",
|
|
604
655
|
NEWSLETTER: "/admin/newsletter",
|
|
605
656
|
CONTACT: "/admin/contact",
|
|
606
657
|
SESSIONS: "/admin/sessions",
|
|
@@ -644,6 +695,8 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
644
695
|
TEAM_NEW: "/admin/team/new",
|
|
645
696
|
TEAM_EDIT: (id) => `/admin/team/${id}/edit`,
|
|
646
697
|
SUPPORT_TICKETS: "/admin/support-tickets",
|
|
698
|
+
/** Staff curation of the reasons a buyer can pick when disputing. */
|
|
699
|
+
DISPUTE_REASONS: "/admin/dispute-reasons",
|
|
647
700
|
SUPPORT_TICKET_BY_ID: (id) => `/admin/support-tickets/${id}`,
|
|
648
701
|
SCAMMERS: "/admin/scammers",
|
|
649
702
|
SCAMMER_BY_ID: (id) => `/admin/scammers/${id}`,
|
|
@@ -40,7 +40,23 @@ export interface SessionUser {
|
|
|
40
40
|
/** Orthogonal to isTester — unlocks admin-only checklist items and real /admin/** RBAC access. */
|
|
41
41
|
canTestAdmin?: boolean;
|
|
42
42
|
publicProfile?: FirestoreDocument;
|
|
43
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Buyer activity counts, DERIVED by `/api/user/profile` — orders placed,
|
|
45
|
+
* auctions won, reviews written. Each is optional and `undefined` means the
|
|
46
|
+
* count could not be taken, which is NOT the same as zero: render nothing.
|
|
47
|
+
*
|
|
48
|
+
* 🛑 Not the `users/{uid}.stats` document field, which has no writer at all
|
|
49
|
+
* and holds seed literals. Do not "restore" it by reading the profile
|
|
50
|
+
* document here; see `getBuyerActivityStats`.
|
|
51
|
+
*
|
|
52
|
+
* Seller numbers are deliberately absent. This is the account holder's own
|
|
53
|
+
* record; what their store has sold belongs to the store.
|
|
54
|
+
*/
|
|
55
|
+
stats?: {
|
|
56
|
+
totalOrders?: number;
|
|
57
|
+
auctionsWon?: number;
|
|
58
|
+
reviewsCount?: number;
|
|
59
|
+
};
|
|
44
60
|
metadata?: FirestoreDocument;
|
|
45
61
|
scamAwarenessAcknowledgedAt?: Date | null;
|
|
46
62
|
/** RBAC permission keys granted to this user (from their role's permission set). */
|
|
@@ -170,6 +170,7 @@ export declare const SCHEMAS: {
|
|
|
170
170
|
category: import("zod").ZodString;
|
|
171
171
|
tags: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
172
172
|
isFeatured: import("zod").ZodBoolean;
|
|
173
|
+
isPinned: import("zod").ZodBoolean;
|
|
173
174
|
status: import("zod").ZodEnum<["draft", "published", "archived"]>;
|
|
174
175
|
publishedAt: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodDate, import("zod").ZodString, import("zod").ZodObject<{
|
|
175
176
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
@@ -205,6 +206,7 @@ export declare const SCHEMAS: {
|
|
|
205
206
|
authorId: string;
|
|
206
207
|
authorName: string;
|
|
207
208
|
readTimeMinutes: number;
|
|
209
|
+
isPinned: boolean;
|
|
208
210
|
publishedAt?: string | Date | import("zod").objectOutputType<{
|
|
209
211
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
210
212
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -258,6 +260,7 @@ export declare const SCHEMAS: {
|
|
|
258
260
|
authorId: string;
|
|
259
261
|
authorName: string;
|
|
260
262
|
readTimeMinutes: number;
|
|
263
|
+
isPinned: boolean;
|
|
261
264
|
publishedAt?: string | Date | import("zod").objectInputType<{
|
|
262
265
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
263
266
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
@@ -816,16 +819,16 @@ export declare const SCHEMAS: {
|
|
|
816
819
|
opacity?: number | undefined;
|
|
817
820
|
subtitle?: string | undefined;
|
|
818
821
|
} | undefined;
|
|
822
|
+
settings?: {
|
|
823
|
+
height?: "medium" | "viewport" | "tall" | undefined;
|
|
824
|
+
autoplayDelayMs?: number | undefined;
|
|
825
|
+
} | undefined;
|
|
819
826
|
analytics?: {
|
|
820
827
|
views: number;
|
|
821
828
|
lastViewed?: string | Date | import("zod").objectOutputType<{
|
|
822
829
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
823
830
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
824
831
|
} | undefined;
|
|
825
|
-
settings?: {
|
|
826
|
-
height?: "medium" | "viewport" | "tall" | undefined;
|
|
827
|
-
autoplayDelayMs?: number | undefined;
|
|
828
|
-
} | undefined;
|
|
829
832
|
carouselId?: string | null | undefined;
|
|
830
833
|
}, {
|
|
831
834
|
id: string;
|
|
@@ -925,16 +928,16 @@ export declare const SCHEMAS: {
|
|
|
925
928
|
opacity?: number | undefined;
|
|
926
929
|
subtitle?: string | undefined;
|
|
927
930
|
} | undefined;
|
|
931
|
+
settings?: {
|
|
932
|
+
height?: "medium" | "viewport" | "tall" | undefined;
|
|
933
|
+
autoplayDelayMs?: number | undefined;
|
|
934
|
+
} | undefined;
|
|
928
935
|
analytics?: {
|
|
929
936
|
views: number;
|
|
930
937
|
lastViewed?: string | Date | import("zod").objectInputType<{
|
|
931
938
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
932
939
|
}, import("zod").ZodTypeAny, "passthrough"> | undefined;
|
|
933
940
|
} | undefined;
|
|
934
|
-
settings?: {
|
|
935
|
-
height?: "medium" | "viewport" | "tall" | undefined;
|
|
936
|
-
autoplayDelayMs?: number | undefined;
|
|
937
|
-
} | undefined;
|
|
938
941
|
carouselId?: string | null | undefined;
|
|
939
942
|
}>;
|
|
940
943
|
readonly categories: import("zod").ZodObject<{
|
|
@@ -3061,6 +3064,7 @@ export declare const SCHEMAS: {
|
|
|
3061
3064
|
prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
|
|
3062
3065
|
}[] | undefined;
|
|
3063
3066
|
bundleId?: string | undefined;
|
|
3067
|
+
orderType?: string | undefined;
|
|
3064
3068
|
prizeWon?: {
|
|
3065
3069
|
title: string;
|
|
3066
3070
|
images: string[];
|
|
@@ -3077,7 +3081,6 @@ export declare const SCHEMAS: {
|
|
|
3077
3081
|
bin: string;
|
|
3078
3082
|
} | undefined;
|
|
3079
3083
|
offerId?: string | undefined;
|
|
3080
|
-
orderType?: string | undefined;
|
|
3081
3084
|
isNonRefundable?: boolean | undefined;
|
|
3082
3085
|
imageUrls?: string[] | undefined;
|
|
3083
3086
|
refundFeeDeducted?: number | undefined;
|
|
@@ -3220,6 +3223,7 @@ export declare const SCHEMAS: {
|
|
|
3220
3223
|
prizeRevealStatus?: "closed" | "open" | "pending" | "revealed" | undefined;
|
|
3221
3224
|
}[] | undefined;
|
|
3222
3225
|
bundleId?: string | undefined;
|
|
3226
|
+
orderType?: string | undefined;
|
|
3223
3227
|
prizeWon?: {
|
|
3224
3228
|
title: string;
|
|
3225
3229
|
images: string[];
|
|
@@ -3236,7 +3240,6 @@ export declare const SCHEMAS: {
|
|
|
3236
3240
|
bin: string;
|
|
3237
3241
|
} | undefined;
|
|
3238
3242
|
offerId?: string | undefined;
|
|
3239
|
-
orderType?: string | undefined;
|
|
3240
3243
|
isNonRefundable?: boolean | undefined;
|
|
3241
3244
|
imageUrls?: string[] | undefined;
|
|
3242
3245
|
refundFeeDeducted?: number | undefined;
|
|
@@ -4151,13 +4154,13 @@ export declare const SCHEMAS: {
|
|
|
4151
4154
|
totalReviews: import("zod").ZodNumber;
|
|
4152
4155
|
averageRating: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
4153
4156
|
}, "strip", import("zod").ZodTypeAny, {
|
|
4154
|
-
itemsSold: number;
|
|
4155
4157
|
totalProducts: number;
|
|
4158
|
+
itemsSold: number;
|
|
4156
4159
|
totalReviews: number;
|
|
4157
4160
|
averageRating?: number | undefined;
|
|
4158
4161
|
}, {
|
|
4159
|
-
itemsSold: number;
|
|
4160
4162
|
totalProducts: number;
|
|
4163
|
+
itemsSold: number;
|
|
4161
4164
|
totalReviews: number;
|
|
4162
4165
|
averageRating?: number | undefined;
|
|
4163
4166
|
}>>;
|
|
@@ -4296,8 +4299,8 @@ export declare const SCHEMAS: {
|
|
|
4296
4299
|
location?: string | undefined;
|
|
4297
4300
|
returnPolicy?: string | undefined;
|
|
4298
4301
|
stats?: {
|
|
4299
|
-
itemsSold: number;
|
|
4300
4302
|
totalProducts: number;
|
|
4303
|
+
itemsSold: number;
|
|
4301
4304
|
totalReviews: number;
|
|
4302
4305
|
averageRating?: number | undefined;
|
|
4303
4306
|
} | undefined;
|
|
@@ -4365,8 +4368,8 @@ export declare const SCHEMAS: {
|
|
|
4365
4368
|
location?: string | undefined;
|
|
4366
4369
|
returnPolicy?: string | undefined;
|
|
4367
4370
|
stats?: {
|
|
4368
|
-
itemsSold: number;
|
|
4369
4371
|
totalProducts: number;
|
|
4372
|
+
itemsSold: number;
|
|
4370
4373
|
totalReviews: number;
|
|
4371
4374
|
averageRating?: number | undefined;
|
|
4372
4375
|
} | undefined;
|
|
@@ -4521,7 +4524,7 @@ export declare const SCHEMAS: {
|
|
|
4521
4524
|
updatedAt: string | Date | import("zod").objectOutputType<{
|
|
4522
4525
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
4523
4526
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
4524
|
-
category: "general" | "
|
|
4527
|
+
category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
|
|
4525
4528
|
priority: "normal" | "high" | "low" | "urgent";
|
|
4526
4529
|
description: string;
|
|
4527
4530
|
userId: string;
|
|
@@ -4564,7 +4567,7 @@ export declare const SCHEMAS: {
|
|
|
4564
4567
|
updatedAt: string | Date | import("zod").objectInputType<{
|
|
4565
4568
|
toDate: import("zod").ZodFunction<import("zod").ZodTuple<[], import("zod").ZodUnknown>, import("zod").ZodDate>;
|
|
4566
4569
|
}, import("zod").ZodTypeAny, "passthrough">;
|
|
4567
|
-
category: "general" | "
|
|
4570
|
+
category: "general" | "account" | "order_issue" | "billing_payment" | "listing_dispute" | "scam_report" | "refund_request" | "auction_dispute" | "store_change_request" | "order_modification_request" | "unban_request";
|
|
4568
4571
|
priority: "normal" | "high" | "low" | "urgent";
|
|
4569
4572
|
description: string;
|
|
4570
4573
|
userId: string;
|
|
@@ -4891,6 +4894,7 @@ export declare const SCHEMAS: {
|
|
|
4891
4894
|
publishedAt: import("zod").ZodString;
|
|
4892
4895
|
authorName: import("zod").ZodString;
|
|
4893
4896
|
isFeatured: import("zod").ZodBoolean;
|
|
4897
|
+
isPinned: import("zod").ZodBoolean;
|
|
4894
4898
|
}, "strip", import("zod").ZodTypeAny, {
|
|
4895
4899
|
status: "published" | "draft" | "archived";
|
|
4896
4900
|
title: string;
|
|
@@ -4904,6 +4908,7 @@ export declare const SCHEMAS: {
|
|
|
4904
4908
|
excerpt: string;
|
|
4905
4909
|
coverImage: string;
|
|
4906
4910
|
authorName: string;
|
|
4911
|
+
isPinned: boolean;
|
|
4907
4912
|
metaTitle: string;
|
|
4908
4913
|
metaDescription: string;
|
|
4909
4914
|
}, {
|
|
@@ -4919,6 +4924,7 @@ export declare const SCHEMAS: {
|
|
|
4919
4924
|
excerpt: string;
|
|
4920
4925
|
coverImage: string;
|
|
4921
4926
|
authorName: string;
|
|
4927
|
+
isPinned: boolean;
|
|
4922
4928
|
metaTitle: string;
|
|
4923
4929
|
metaDescription: string;
|
|
4924
4930
|
}>;
|
|
@@ -29,7 +29,7 @@ export declare const USER_PII_INDEX_MAP: Record<string, string>;
|
|
|
29
29
|
/** PII fields in the addresses subcollection */
|
|
30
30
|
export declare const ADDRESS_PII_FIELDS: readonly ["fullName", "phone", "addressLine1", "addressLine2"];
|
|
31
31
|
/** PII fields in orders (denormalized buyer/seller data) */
|
|
32
|
-
export declare const ORDER_PII_FIELDS: readonly ["userName", "userEmail", "sellerEmail"];
|
|
32
|
+
export declare const ORDER_PII_FIELDS: readonly ["userName", "userEmail", "sellerEmail", "deliveryFullName", "deliveryPhone", "deliveryAddressLine1", "deliveryAddressLine2", "deliveryLandmark", "deliveryAmendments[].fullName", "deliveryAmendments[].phone", "deliveryAmendments[].addressLine1", "deliveryAmendments[].addressLine2", "deliveryAmendments[].landmark"];
|
|
33
33
|
/** PII fields in payouts */
|
|
34
34
|
export declare const PAYOUT_PII_FIELDS: readonly ["sellerEmail", "upiId"];
|
|
35
35
|
/** Blind-index mapping for queryable payout PII */
|