@mohasinac/appkit 4.43.0 → 4.45.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 +8 -0
- package/dist/_internal/client/features/digital-code/CodeRevealPanel.js +3 -3
- package/dist/_internal/client/features/digital-code/DigitalContentPoolManager.js +5 -5
- package/dist/_internal/client/features/filters/filter-load-options.js +3 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +16 -16
- package/dist/_internal/client/features/layout/RoleGuard.js +4 -4
- package/dist/_internal/client/features/layout/SidebarCollapseToggle.js +1 -1
- package/dist/_internal/client/features/layout/index.js +3 -3
- package/dist/_internal/client/features/layout/useSidebarSearch.js +1 -1
- package/dist/_internal/client/features/lottery/LotteryAdminEditView.js +8 -8
- package/dist/_internal/client/features/lottery/LotteryAdminSlotView.js +1 -1
- package/dist/_internal/client/features/lottery/LotteryDetailView.js +8 -8
- package/dist/_internal/client/features/lottery/LotteryEntriesView.js +3 -3
- package/dist/_internal/client/features/lottery/LotteryListView.js +3 -3
- package/dist/_internal/client/features/lottery/LotteryPullForm.js +9 -9
- package/dist/_internal/client/features/lottery/LotterySlotGrid.js +1 -1
- package/dist/_internal/client/features/lottery/PrizeDrawLotteryDetailView.js +7 -7
- package/dist/_internal/client/features/maintenance/index.js +5 -5
- package/dist/_internal/client/features/maintenance/views/AnalysisRunnerView.js +3 -3
- package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +3 -3
- package/dist/_internal/client/features/products/index.js +1 -1
- package/dist/_internal/client/hand-mode/HandModeProvider.js +1 -1
- package/dist/_internal/client/hand-mode/index.js +1 -1
- package/dist/_internal/client/scaffolds/AppShell.js +1 -1
- package/dist/_internal/client/scaffolds/index.js +1 -1
- package/dist/_internal/client/theme/ThemeProvider.js +2 -2
- package/dist/_internal/client/theme/buildRegistry.js +1 -1
- package/dist/_internal/client/theme/index.js +2 -2
- package/dist/_internal/server/features/account/actions.js +1 -1
- package/dist/_internal/server/features/account/data.js +1 -1
- package/dist/_internal/server/features/account/index.js +2 -2
- package/dist/_internal/server/features/admin/daily-digest-actions.js +3 -3
- package/dist/_internal/server/features/auctions/actions.js +6 -6
- package/dist/_internal/server/features/auctions/data.js +1 -1
- package/dist/_internal/server/features/auctions/index.js +5 -5
- package/dist/_internal/server/features/auctions/og.js +2 -2
- package/dist/_internal/server/features/auctions/service.js +4 -4
- package/dist/_internal/server/features/audit-log/actions.js +3 -3
- package/dist/_internal/server/features/auth/actions.js +1 -1
- package/dist/_internal/server/features/auth/capabilities.js +2 -2
- package/dist/_internal/server/features/auth/firebase-identity.js +1 -1
- package/dist/_internal/server/features/auth/index.js +3 -3
- package/dist/_internal/server/features/auth/permissions.js +4 -4
- package/dist/_internal/server/features/blog/actions.js +5 -5
- package/dist/_internal/server/features/blog/data.js +1 -1
- package/dist/_internal/server/features/blog/index.js +5 -5
- package/dist/_internal/server/features/blog/og.js +2 -2
- package/dist/_internal/server/features/blog/service.js +2 -2
- package/dist/_internal/server/features/brands/actions.js +5 -5
- package/dist/_internal/server/features/brands/data.js +1 -1
- package/dist/_internal/server/features/brands/index.js +5 -5
- package/dist/_internal/server/features/brands/og.js +1 -1
- package/dist/_internal/server/features/brands/service.js +2 -2
- package/dist/_internal/server/features/bundles/actions.js +8 -8
- package/dist/_internal/server/features/bundles/data.js +4 -4
- package/dist/_internal/server/features/bundles/index.js +4 -4
- package/dist/_internal/server/features/bundles/og.js +1 -1
- package/dist/_internal/server/features/cart/actions.js +5 -5
- package/dist/_internal/server/features/cart/data.js +1 -1
- package/dist/_internal/server/features/cart/index.js +4 -4
- package/dist/_internal/server/features/cart/service.js +5 -5
- package/dist/_internal/server/features/catalogue/og.js +2 -2
- package/dist/_internal/server/features/categories/adapters.d.ts +47 -0
- package/dist/_internal/server/features/categories/adapters.js +235 -0
- package/dist/_internal/server/features/categories/data.js +4 -4
- package/dist/_internal/server/features/categories/index.js +2 -2
- package/dist/_internal/server/features/categories/og.js +1 -1
- package/dist/_internal/server/features/checkout/actions.d.ts +50 -0
- package/dist/_internal/server/features/checkout/actions.js +343 -70
- package/dist/_internal/server/features/checkout/bundle-expansion.js +3 -3
- package/dist/_internal/server/features/checkout/expand-order-items.js +40 -2
- package/dist/_internal/server/features/checkout/index.js +3 -3
- package/dist/_internal/server/features/checkout/locked-lines.js +14 -14
- package/dist/_internal/server/features/checkout/prize-bundle-gates.js +2 -2
- package/dist/_internal/server/features/checkout/source-context.js +4 -4
- package/dist/_internal/server/features/checkout/stock-restore.js +4 -4
- package/dist/_internal/server/features/checkout/upi-resolution.js +2 -2
- package/dist/_internal/server/features/classified/adapters.js +1 -1
- package/dist/_internal/server/features/classified/data.js +1 -1
- package/dist/_internal/server/features/classified/index.js +4 -4
- package/dist/_internal/server/features/classified/og.js +2 -2
- package/dist/_internal/server/features/digital-code/adapters.js +1 -1
- package/dist/_internal/server/features/digital-code/data.js +1 -1
- package/dist/_internal/server/features/digital-code/download.js +5 -5
- package/dist/_internal/server/features/digital-code/index.js +4 -4
- package/dist/_internal/server/features/digital-code/og.js +2 -2
- package/dist/_internal/server/features/digital-code/pool.js +7 -7
- package/dist/_internal/server/features/digital-code/upload.js +6 -6
- package/dist/_internal/server/features/events/actions.js +8 -8
- package/dist/_internal/server/features/events/adapters.js +1 -1
- package/dist/_internal/server/features/events/data.js +1 -1
- package/dist/_internal/server/features/events/index.js +5 -5
- package/dist/_internal/server/features/events/og.js +2 -2
- package/dist/_internal/server/features/events/service.js +2 -2
- package/dist/_internal/server/features/faqs/index.js +1 -1
- package/dist/_internal/server/features/faqs/og.js +1 -1
- package/dist/_internal/server/features/grouped/data.js +8 -8
- package/dist/_internal/server/features/grouped/index.js +4 -4
- package/dist/_internal/server/features/grouped/og.js +2 -2
- package/dist/_internal/server/features/history/actions.js +2 -2
- package/dist/_internal/server/features/history/data.js +1 -1
- package/dist/_internal/server/features/history/index.js +3 -3
- package/dist/_internal/server/features/homepage/index.js +1 -1
- package/dist/_internal/server/features/item-requests/data.js +1 -1
- package/dist/_internal/server/features/item-requests/index.js +2 -2
- package/dist/_internal/server/features/item-requests/og.js +1 -1
- package/dist/_internal/server/features/live/adapters.js +1 -1
- package/dist/_internal/server/features/live/data.js +1 -1
- package/dist/_internal/server/features/live/index.js +4 -4
- package/dist/_internal/server/features/live/og.js +2 -2
- package/dist/_internal/server/features/lottery/actions.js +8 -8
- package/dist/_internal/server/features/lottery/data.js +3 -3
- package/dist/_internal/server/features/maintenance/analyze.js +3 -3
- package/dist/_internal/server/features/maintenance/cloud-logs-data.js +1 -1
- package/dist/_internal/server/features/maintenance/data.js +2 -2
- package/dist/_internal/server/features/media/contextGuards.js +3 -3
- package/dist/_internal/server/features/offers/adapters.js +1 -1
- package/dist/_internal/server/features/offers/index.js +1 -1
- package/dist/_internal/server/features/orders/actions.js +17 -17
- package/dist/_internal/server/features/orders/adapters.js +23 -0
- package/dist/_internal/server/features/orders/data.js +2 -2
- package/dist/_internal/server/features/orders/index.js +5 -5
- package/dist/_internal/server/features/orders/service.js +3 -3
- package/dist/_internal/server/features/payouts/actions.js +3 -3
- package/dist/_internal/server/features/pre-orders/actions.js +5 -5
- package/dist/_internal/server/features/pre-orders/data.js +1 -1
- package/dist/_internal/server/features/pre-orders/index.js +5 -5
- package/dist/_internal/server/features/pre-orders/og.js +2 -2
- package/dist/_internal/server/features/pre-orders/service.js +4 -4
- package/dist/_internal/server/features/price-index/search.d.ts +119 -0
- package/dist/_internal/server/features/price-index/search.js +188 -0
- package/dist/_internal/server/features/prize-draws/actions.js +3 -3
- package/dist/_internal/server/features/prize-draws/data.js +1 -1
- package/dist/_internal/server/features/prize-draws/index.js +4 -4
- package/dist/_internal/server/features/prize-draws/og.js +2 -2
- package/dist/_internal/server/features/prize-draws/service.js +1 -1
- package/dist/_internal/server/features/products/actions.js +8 -8
- package/dist/_internal/server/features/products/data.js +15 -15
- package/dist/_internal/server/features/products/group-members.js +1 -1
- package/dist/_internal/server/features/products/index.js +6 -6
- package/dist/_internal/server/features/products/list-public.js +11 -11
- package/dist/_internal/server/features/products/listing-tab-counts.js +3 -3
- package/dist/_internal/server/features/products/og.js +2 -2
- package/dist/_internal/server/features/products/service.js +4 -4
- package/dist/_internal/server/features/profile/index.js +1 -1
- package/dist/_internal/server/features/promotions/actions.js +6 -6
- package/dist/_internal/server/features/promotions/data.js +1 -1
- package/dist/_internal/server/features/promotions/index.js +4 -4
- package/dist/_internal/server/features/promotions/service.js +3 -3
- package/dist/_internal/server/features/raffle/actions.js +3 -3
- package/dist/_internal/server/features/refunds/actions.js +12 -12
- package/dist/_internal/server/features/reviews/actions.js +6 -6
- package/dist/_internal/server/features/reviews/data.js +3 -3
- package/dist/_internal/server/features/reviews/index.js +5 -5
- package/dist/_internal/server/features/reviews/og-data.js +1 -1
- package/dist/_internal/server/features/reviews/og.js +1 -1
- package/dist/_internal/server/features/reviews/service.js +2 -2
- package/dist/_internal/server/features/scams/data.js +1 -1
- package/dist/_internal/server/features/scams/index.js +2 -2
- package/dist/_internal/server/features/search/actions.js +1 -1
- package/dist/_internal/server/features/search/data.js +1 -1
- package/dist/_internal/server/features/search/index.js +2 -2
- package/dist/_internal/server/features/seo/index.js +4 -4
- package/dist/_internal/server/features/seo/manifest.js +2 -2
- package/dist/_internal/server/features/seo/og.js +2 -2
- package/dist/_internal/server/features/seo/sitemap.js +65 -26
- package/dist/_internal/server/features/shared/listing-data-factory.js +4 -4
- package/dist/_internal/server/features/site-settings/actions.js +1 -1
- package/dist/_internal/server/features/site-settings/index.js +1 -1
- package/dist/_internal/server/features/site-settings/safe-settings.js +3 -3
- package/dist/_internal/server/features/stores/adapters.d.ts +2 -2
- package/dist/_internal/server/features/stores/adapters.js +50 -0
- package/dist/_internal/server/features/stores/data.js +5 -5
- package/dist/_internal/server/features/stores/denormalize.js +2 -2
- package/dist/_internal/server/features/stores/index.js +5 -5
- package/dist/_internal/server/features/stores/og.js +2 -2
- package/dist/_internal/server/features/sublisting-categories/data.js +1 -1
- package/dist/_internal/server/features/sublisting-categories/index.js +2 -2
- package/dist/_internal/server/features/sublisting-categories/og.js +2 -2
- package/dist/_internal/server/features/tester/visibility.js +1 -1
- package/dist/_internal/server/features/wishlist/actions.js +5 -5
- package/dist/_internal/server/features/wishlist/data.js +1 -1
- package/dist/_internal/server/features/wishlist/index.js +4 -4
- package/dist/_internal/server/functions/bind-all.d.ts +25 -0
- package/dist/_internal/server/functions/bind-all.js +41 -6
- package/dist/_internal/server/functions/firestore.js +2 -2
- package/dist/_internal/server/functions/https.js +2 -2
- package/dist/_internal/server/functions/index.js +4 -4
- package/dist/_internal/server/functions/manifest.js +3 -3
- package/dist/_internal/server/functions/scheduled.d.ts +4 -2
- package/dist/_internal/server/functions/scheduled.js +65 -7
- package/dist/_internal/server/jobs/core/adminAnalytics.d.ts +0 -1
- package/dist/_internal/server/jobs/core/adminAnalytics.js +12 -4
- package/dist/_internal/server/jobs/core/analyticsAlertEvaluate.d.ts +47 -0
- package/dist/_internal/server/jobs/core/analyticsAlertEvaluate.js +468 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.js +2 -2
- package/dist/_internal/server/jobs/core/auctionSettlement.js +7 -7
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +18 -5
- package/dist/_internal/server/jobs/core/bundleStockSync.js +1 -1
- package/dist/_internal/server/jobs/core/cartPrune.js +3 -3
- package/dist/_internal/server/jobs/core/catalogueImageStalenessReminder.js +4 -4
- package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +5 -5
- package/dist/_internal/server/jobs/core/countersReconcile.js +31 -15
- package/dist/_internal/server/jobs/core/couponExpiry.js +1 -1
- package/dist/_internal/server/jobs/core/dailyDataCleanup.js +2 -2
- package/dist/_internal/server/jobs/core/dailyStatusDigest.js +14 -14
- package/dist/_internal/server/jobs/core/draftPrune.js +2 -2
- package/dist/_internal/server/jobs/core/emiInstallmentReminder.js +3 -3
- package/dist/_internal/server/jobs/core/hardBanCascade.js +7 -7
- package/dist/_internal/server/jobs/core/hardBanReinstatement.js +4 -4
- package/dist/_internal/server/jobs/core/index.js +37 -37
- package/dist/_internal/server/jobs/core/jobRunners.js +7 -7
- package/dist/_internal/server/jobs/core/listingProcessor.js +2 -2
- package/dist/_internal/server/jobs/core/mediaTmpCleanup.js +2 -2
- package/dist/_internal/server/jobs/core/newsletterExport.js +3 -3
- package/dist/_internal/server/jobs/core/notificationPrune.js +3 -3
- package/dist/_internal/server/jobs/core/offerExpiry.js +4 -4
- package/dist/_internal/server/jobs/core/onCategoryWrite.js +57 -3
- package/dist/_internal/server/jobs/core/onJobCreated.js +5 -5
- package/dist/_internal/server/jobs/core/onOrderCreate.js +6 -6
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +3 -3
- package/dist/_internal/server/jobs/core/onPrizeDrawPaymentConfirmed.js +2 -2
- package/dist/_internal/server/jobs/core/onProductStockChange.js +2 -2
- package/dist/_internal/server/jobs/core/onProductWrite.js +6 -6
- package/dist/_internal/server/jobs/core/onReviewWrite.js +4 -4
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +4 -4
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +3 -3
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +3 -3
- package/dist/_internal/server/jobs/core/onStoreWrite.js +1 -1
- package/dist/_internal/server/jobs/core/onSupportTicketCreate.js +2 -2
- package/dist/_internal/server/jobs/core/onSupportTicketUpdate.js +2 -2
- package/dist/_internal/server/jobs/core/onUserBanChange.js +1 -1
- package/dist/_internal/server/jobs/core/pageViewPrune.js +2 -2
- package/dist/_internal/server/jobs/core/pageViewRollup.js +2 -2
- package/dist/_internal/server/jobs/core/paymentReviewAutoApprove.js +4 -4
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +7 -7
- package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +6 -6
- package/dist/_internal/server/jobs/core/positionsReconcile.js +1 -1
- package/dist/_internal/server/jobs/core/priceIndexRollup.d.ts +47 -0
- package/dist/_internal/server/jobs/core/priceIndexRollup.js +304 -0
- package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +2 -2
- package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +3 -3
- package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +3 -3
- package/dist/_internal/server/jobs/core/productStatsSync.js +1 -1
- package/dist/_internal/server/jobs/core/promotions.js +2 -2
- package/dist/_internal/server/jobs/core/resetOtpVerification.js +3 -3
- package/dist/_internal/server/jobs/core/revalidateNotify.js +1 -1
- package/dist/_internal/server/jobs/core/revenueRollup.js +2 -2
- package/dist/_internal/server/jobs/core/storeAnalytics.js +3 -3
- package/dist/_internal/server/jobs/core/storeNameBackfill.js +3 -3
- package/dist/_internal/server/jobs/core/{testerSandboxCleanup.d.ts → testDataCleanup.d.ts} +3 -3
- package/dist/_internal/server/jobs/core/{testerSandboxCleanup.js → testDataCleanup.js} +5 -5
- package/dist/_internal/server/jobs/core/triggerEventRaffle.js +1 -1
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +9 -5
- package/dist/_internal/server/jobs/core/whatsappCatalogImport.js +3 -3
- package/dist/_internal/server/jobs/core/whatsappNotify.js +5 -5
- package/dist/_internal/server/jobs/core/wrapJobHandler.js +3 -3
- package/dist/_internal/server/jobs/handlers/_helpers.js +3 -3
- package/dist/_internal/server/jobs/handlers/adminAnalytics.js +1 -1
- package/dist/_internal/server/jobs/handlers/analyticsAlertEvaluate.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/analyticsAlertEvaluate.js +2 -0
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +1 -1
- package/dist/_internal/server/jobs/handlers/auctionSettlement.js +1 -1
- package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +1 -1
- package/dist/_internal/server/jobs/handlers/bundleStockSync.js +1 -1
- package/dist/_internal/server/jobs/handlers/cartPrune.js +1 -1
- package/dist/_internal/server/jobs/handlers/catalogueImageStalenessReminder.js +1 -1
- package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +1 -1
- package/dist/_internal/server/jobs/handlers/countersReconcile.js +1 -1
- package/dist/_internal/server/jobs/handlers/couponExpiry.js +1 -1
- package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +1 -1
- package/dist/_internal/server/jobs/handlers/dailyStatusDigest.js +1 -1
- package/dist/_internal/server/jobs/handlers/draftPrune.js +1 -1
- package/dist/_internal/server/jobs/handlers/emiInstallmentReminder.js +1 -1
- package/dist/_internal/server/jobs/handlers/hardBanReinstatement.js +1 -1
- package/dist/_internal/server/jobs/handlers/index.d.ts +3 -1
- package/dist/_internal/server/jobs/handlers/index.js +54 -52
- package/dist/_internal/server/jobs/handlers/listingProcessor.js +1 -1
- package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +1 -1
- package/dist/_internal/server/jobs/handlers/messages.d.ts +5 -2
- package/dist/_internal/server/jobs/handlers/messages.js +5 -2
- package/dist/_internal/server/jobs/handlers/notificationPrune.js +1 -1
- package/dist/_internal/server/jobs/handlers/offerExpiry.js +1 -1
- package/dist/_internal/server/jobs/handlers/onCatalogueSubmittedForApproval.js +1 -1
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +1 -1
- package/dist/_internal/server/jobs/handlers/onJobCreated.js +1 -1
- package/dist/_internal/server/jobs/handlers/onOrderCreate.js +1 -1
- package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +1 -1
- package/dist/_internal/server/jobs/handlers/onPrizeDrawPaymentConfirmed.js +1 -1
- package/dist/_internal/server/jobs/handlers/onProductStockChange.js +1 -1
- package/dist/_internal/server/jobs/handlers/onProductWrite.js +1 -1
- package/dist/_internal/server/jobs/handlers/onReviewWrite.js +1 -1
- package/dist/_internal/server/jobs/handlers/onScamReportCreate.js +1 -1
- package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +2 -2
- package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +1 -1
- package/dist/_internal/server/jobs/handlers/onStoreWrite.js +1 -1
- package/dist/_internal/server/jobs/handlers/onSupportTicketCreate.js +1 -1
- package/dist/_internal/server/jobs/handlers/onSupportTicketUpdate.js +1 -1
- package/dist/_internal/server/jobs/handlers/onUserBanChange.js +1 -1
- package/dist/_internal/server/jobs/handlers/pageViewPrune.js +1 -1
- package/dist/_internal/server/jobs/handlers/pageViewRollup.js +1 -1
- package/dist/_internal/server/jobs/handlers/paymentReviewAutoApprove.js +1 -1
- package/dist/_internal/server/jobs/handlers/paymentWindowTimeout.js +1 -1
- package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +1 -1
- package/dist/_internal/server/jobs/handlers/positionsReconcile.js +1 -1
- package/dist/_internal/server/jobs/handlers/priceIndexRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/priceIndexRollup.js +2 -0
- package/dist/_internal/server/jobs/handlers/prizeDrawExpiryReveal.js +1 -1
- package/dist/_internal/server/jobs/handlers/prizeDrawSoldOutReveal.js +1 -1
- package/dist/_internal/server/jobs/handlers/productStatsSync.js +1 -1
- package/dist/_internal/server/jobs/handlers/promotions.js +1 -1
- package/dist/_internal/server/jobs/handlers/revenueRollup.js +1 -1
- package/dist/_internal/server/jobs/handlers/storeAnalytics.js +1 -1
- package/dist/_internal/server/jobs/handlers/testDataCleanup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/testDataCleanup.js +2 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +1 -1
- package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +1 -1
- package/dist/_internal/server/jobs/index.js +4 -4
- package/dist/_internal/server/jobs/runtime/adapters/firebase.js +3 -3
- package/dist/_internal/server/notifications/channel-health.js +3 -3
- package/dist/_internal/server/notifications/send-guard.js +5 -5
- package/dist/_internal/server/notifications/send-recorder.js +5 -5
- package/dist/_internal/shared/actions/action-registry.js +43 -0
- package/dist/_internal/shared/checkout/lanes.js +1 -1
- package/dist/_internal/shared/checkout/order-math.d.ts +113 -3
- package/dist/_internal/shared/checkout/order-math.js +195 -8
- package/dist/_internal/shared/checkout/rules/_defaults.js +1 -1
- package/dist/_internal/shared/checkout/rules/_limits.js +1 -1
- package/dist/_internal/shared/checkout/rules/_registry.js +12 -12
- package/dist/_internal/shared/checkout/rules/art.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/auction.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/classified.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/digital-code.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/index.js +13 -13
- package/dist/_internal/shared/checkout/rules/live.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/offer.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/preorder.rule.js +2 -2
- package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +3 -3
- package/dist/_internal/shared/checkout/rules/standard.rule.js +1 -1
- package/dist/_internal/shared/checkout/rules/stickers.rule.js +1 -1
- package/dist/_internal/shared/features/auctions/errors.js +1 -1
- package/dist/_internal/shared/features/blog/errors.js +1 -1
- package/dist/_internal/shared/features/blog/schema.js +2 -2
- package/dist/_internal/shared/features/brands/errors.js +1 -1
- package/dist/_internal/shared/features/brands/schema.js +2 -2
- package/dist/_internal/shared/features/cart/config.js +1 -1
- package/dist/_internal/shared/features/cart/errors.js +1 -1
- package/dist/_internal/shared/features/categories/bundle-schemas.js +2 -2
- package/dist/_internal/shared/features/categories/price-guidance.d.ts +110 -0
- package/dist/_internal/shared/features/categories/price-guidance.js +136 -0
- package/dist/_internal/shared/features/checkout/config.d.ts +3 -0
- package/dist/_internal/shared/features/checkout/config.js +4 -1
- package/dist/_internal/shared/features/emi/schedule.js +1 -1
- package/dist/_internal/shared/features/events/errors.js +1 -1
- package/dist/_internal/shared/features/events/schema.js +2 -2
- package/dist/_internal/shared/features/layout/index.js +1 -1
- package/dist/_internal/shared/features/notifications/action-url.js +1 -1
- package/dist/_internal/shared/features/offers/config.js +1 -1
- package/dist/_internal/shared/features/orders/errors.js +1 -1
- package/dist/_internal/shared/features/orders/schema.js +3 -3
- package/dist/_internal/shared/features/pre-orders/errors.js +1 -1
- package/dist/_internal/shared/features/products/errors.js +1 -1
- package/dist/_internal/shared/features/products/schema.js +3 -3
- package/dist/_internal/shared/features/promotions/errors.js +1 -1
- package/dist/_internal/shared/features/promotions/schema.d.ts +4 -4
- package/dist/_internal/shared/features/promotions/schema.js +1 -1
- package/dist/_internal/shared/features/returns/custody.d.ts +99 -0
- package/dist/_internal/shared/features/returns/custody.js +172 -0
- package/dist/_internal/shared/features/returns/destination.d.ts +172 -0
- package/dist/_internal/shared/features/returns/destination.js +158 -0
- package/dist/_internal/shared/features/reviews/errors.js +1 -1
- package/dist/_internal/shared/features/reviews/schema.js +2 -2
- package/dist/_internal/shared/features/shipping/courier-rating.d.ts +145 -0
- package/dist/_internal/shared/features/shipping/courier-rating.js +114 -0
- package/dist/_internal/shared/features/shipping/mode.d.ts +112 -0
- package/dist/_internal/shared/features/shipping/mode.js +108 -0
- package/dist/_internal/shared/features/shipping/parcel.d.ts +115 -0
- package/dist/_internal/shared/features/shipping/parcel.js +120 -0
- package/dist/_internal/shared/features/shipping/protections.d.ts +221 -0
- package/dist/_internal/shared/features/shipping/protections.js +213 -0
- package/dist/_internal/shared/features/site-settings/fees.d.ts +3 -0
- package/dist/_internal/shared/features/site-settings/fees.js +3 -0
- package/dist/_internal/shared/features/site-settings/gst-registration.d.ts +90 -0
- package/dist/_internal/shared/features/site-settings/gst-registration.js +126 -0
- package/dist/_internal/shared/features/wishlist/errors.js +1 -1
- package/dist/_internal/shared/fees/calculator.d.ts +129 -0
- package/dist/_internal/shared/fees/calculator.js +155 -1
- package/dist/_internal/shared/history/history.js +2 -2
- package/dist/_internal/shared/history/index.js +2 -2
- package/dist/_internal/shared/index.js +2 -2
- package/dist/_internal/shared/listing-types/_registry.js +12 -12
- package/dist/_internal/shared/listing-types/action-tracker.js +1 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/art/config.js +4 -4
- package/dist/_internal/shared/listing-types/auction/config.js +6 -6
- package/dist/_internal/shared/listing-types/availability.js +1 -1
- package/dist/_internal/shared/listing-types/cart-shipping.js +1 -1
- package/dist/_internal/shared/listing-types/classified/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/classified/config.js +5 -5
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/digital-code/config.js +6 -6
- package/dist/_internal/shared/listing-types/live/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/live/config.js +5 -5
- package/dist/_internal/shared/listing-types/pre-order/config.js +6 -6
- package/dist/_internal/shared/listing-types/prize-draw/config.js +5 -5
- package/dist/_internal/shared/listing-types/standard/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/standard/config.js +4 -4
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +0 -6
- package/dist/_internal/shared/listing-types/stickers/config.js +4 -4
- package/dist/_internal/shared/search/alias-variants.d.ts +58 -0
- package/dist/_internal/shared/search/alias-variants.js +141 -0
- package/dist/_internal/shared/templating/placeholders.d.ts +70 -0
- package/dist/_internal/shared/templating/placeholders.js +73 -0
- package/dist/_internal/shared/tokens/index.js +2 -2
- package/dist/_internal/shared/types/action-error-reporter.js +1 -1
- package/dist/_internal/shared/types/action-result.js +4 -4
- package/dist/_internal/shared/types/base-document.d.ts +19 -0
- package/dist/cli/index.js +1 -1
- package/dist/client/api/surface-error.js +7 -7
- package/dist/client/api/useApiMutation.js +2 -2
- package/dist/client/api/useApiQuery.js +4 -4
- package/dist/client/observability/installClientErrorReporter.js +1 -1
- package/dist/client/observability/reportClientError.js +2 -2
- package/dist/client-entry.js +5 -5
- package/dist/client.d.ts +6 -0
- package/dist/client.js +336 -331
- package/dist/constants/api-endpoints.d.ts +58 -0
- package/dist/constants/api-endpoints.js +31 -0
- package/dist/constants/cache-invalidation.js +1 -1
- package/dist/constants/field-names.d.ts +2 -0
- package/dist/constants/field-names.js +10 -0
- package/dist/constants/index.js +10 -10
- package/dist/constants/notification-types.js +1 -1
- package/dist/contracts/index.js +12 -12
- package/dist/contracts/realtime-session.js +2 -2
- package/dist/core/EventBus.js +2 -2
- package/dist/core/Logger.js +2 -2
- package/dist/core/Queue.js +1 -1
- package/dist/core/StorageManager.js +2 -2
- package/dist/core/browser.js +9 -9
- package/dist/core/components/SyncManagerMount.js +2 -2
- package/dist/core/contact-submissions.repository.js +1 -1
- package/dist/core/copilot-log.repository.js +1 -1
- package/dist/core/hooks/useSiteSettings.js +2 -2
- package/dist/core/hooks/useSyncManager.js +3 -3
- package/dist/core/index.js +17 -17
- package/dist/core/integration-keys.js +2 -2
- package/dist/core/mutation-events.js +1 -1
- package/dist/core/newsletter-actions.js +2 -2
- package/dist/core/newsletter.repository.js +2 -2
- package/dist/core/server-action.js +5 -5
- package/dist/core/site-config.js +1 -1
- package/dist/core/unit-of-work.js +20 -20
- package/dist/errors/api-error.js +1 -1
- package/dist/errors/authentication-error.js +1 -1
- package/dist/errors/authorization-error.js +1 -1
- package/dist/errors/conflict-error.js +1 -1
- package/dist/errors/database-error.js +2 -2
- package/dist/errors/describe-cause.js +1 -1
- package/dist/errors/error-display-map.js +3 -3
- package/dist/errors/error-envelope.js +1 -1
- package/dist/errors/error-handler.js +3 -3
- package/dist/errors/error-mapping.js +7 -7
- package/dist/errors/index.js +18 -18
- package/dist/errors/normalize.js +2 -2
- package/dist/errors/not-found-error.js +1 -1
- package/dist/errors/payment-provider-unreachable.js +1 -1
- package/dist/errors/safe-read.js +2 -2
- package/dist/errors/validation-error.js +1 -1
- package/dist/features/about/components/AboutView.js +2 -2
- package/dist/features/about/components/DeveloperView.js +6 -6
- package/dist/features/about/components/FAQPageView.js +5 -5
- package/dist/features/about/components/FeesView.js +4 -4
- package/dist/features/about/components/HelpPageView.js +5 -5
- package/dist/features/about/components/HowAuctionsWorkView.js +4 -4
- package/dist/features/about/components/HowCheckoutWorksView.js +4 -4
- package/dist/features/about/components/HowEmiWorksView.js +5 -5
- package/dist/features/about/components/HowOffersWorkView.js +4 -4
- package/dist/features/about/components/HowOrdersWorkView.js +4 -4
- package/dist/features/about/components/HowPayoutsWorkView.js +4 -4
- package/dist/features/about/components/HowPreOrdersWorkView.js +4 -4
- package/dist/features/about/components/HowReviewsWorkView.js +4 -4
- package/dist/features/about/components/PolicyPageView.js +7 -7
- package/dist/features/about/components/PublicProfileView.js +15 -15
- package/dist/features/about/components/SecurityPrivacyView.js +4 -4
- package/dist/features/about/components/ShippingPolicyView.js +4 -4
- package/dist/features/about/components/TrackOrderView.js +5 -5
- package/dist/features/about/components/UnauthorizedView.js +4 -4
- package/dist/features/about/index.js +19 -19
- package/dist/features/about/schemas/index.js +1 -1
- package/dist/features/account/actions/address-actions.js +2 -2
- package/dist/features/account/actions/index.js +1 -1
- package/dist/features/account/api/[userId]/addresses/route.js +2 -2
- package/dist/features/account/api/[userId]/route.js +2 -2
- package/dist/features/account/columns/index.js +1 -1
- package/dist/features/account/components/AddressBook.js +1 -1
- package/dist/features/account/components/AddressFilters.js +3 -3
- package/dist/features/account/components/AddressForm.js +9 -9
- package/dist/features/account/components/AddressInlineSelect.js +4 -4
- package/dist/features/account/components/AddressSelectorCreate.js +2 -2
- package/dist/features/account/components/AddressesIndexListing.js +6 -6
- package/dist/features/account/components/BecomeSellerView.js +1 -1
- package/dist/features/account/components/BuyerAccountGuideView.js +3 -3
- package/dist/features/account/components/BuyerAuctionsGuideView.js +2 -2
- package/dist/features/account/components/BuyerOrdersGuideView.js +2 -2
- package/dist/features/account/components/BuyerShoppingGuideView.js +2 -2
- package/dist/features/account/components/LinkedAccountsSection.js +1 -1
- package/dist/features/account/components/NotificationBell.js +6 -6
- package/dist/features/account/components/NotificationPreferencesPanel.js +4 -4
- package/dist/features/account/components/OrderDetailView.js +1 -1
- package/dist/features/account/components/ProfileView.js +1 -1
- package/dist/features/account/components/UserAccountHubView.js +1 -1
- package/dist/features/account/components/UserAddressesView.js +1 -1
- package/dist/features/account/components/UserBidsView.js +8 -8
- package/dist/features/account/components/UserNotificationsView.js +1 -1
- package/dist/features/account/components/UserOffersPanel.js +5 -5
- package/dist/features/account/components/UserOrderTrackView.js +1 -1
- package/dist/features/account/components/UserOrdersView.js +10 -10
- package/dist/features/account/components/UserReturnsView.js +7 -7
- package/dist/features/account/components/UserSettingsView.js +1 -1
- package/dist/features/account/components/UserSidebar.js +9 -9
- package/dist/features/account/components/UserSupportView.js +11 -11
- package/dist/features/account/components/index.js +20 -20
- package/dist/features/account/hooks/useAccount.js +2 -2
- package/dist/features/account/hooks/useAddressSelector.js +2 -2
- package/dist/features/account/hooks/useAddresses.js +2 -2
- package/dist/features/account/hooks/useCollapsedSections.js +2 -2
- package/dist/features/account/hooks/useDataViewMode.js +1 -1
- package/dist/features/account/hooks/useNotifications.js +2 -2
- package/dist/features/account/hooks/useProfile.js +3 -3
- package/dist/features/account/hooks/useProfileStats.js +2 -2
- package/dist/features/account/hooks/usePublicProfile.d.ts +1 -1
- package/dist/features/account/hooks/usePublicProfile.js +3 -3
- package/dist/features/account/index.js +13 -13
- package/dist/features/account/schemas/firestore.js +1 -1
- package/dist/features/account/schemas/index.js +2 -2
- package/dist/features/account/server.js +3 -3
- package/dist/features/addresses/components/AddressLocationFields.js +5 -5
- package/dist/features/addresses/hooks/usePostalLookup.js +2 -2
- package/dist/features/addresses/index.js +2 -2
- package/dist/features/addresses/repository/addresses.repository.js +6 -6
- package/dist/features/addresses/schemas/address-form.js +2 -2
- package/dist/features/addresses/schemas/index.js +3 -3
- package/dist/features/addresses/server.js +2 -2
- package/dist/features/admin/actions/admin-actions.d.ts +2 -2
- package/dist/features/admin/actions/admin-actions.js +18 -18
- package/dist/features/admin/actions/admin-coupon-actions.js +5 -5
- package/dist/features/admin/actions/admin-read-actions.d.ts +4 -4
- package/dist/features/admin/actions/admin-read-actions.js +12 -12
- package/dist/features/admin/actions/index.js +5 -5
- package/dist/features/admin/actions/notification-actions.js +13 -13
- package/dist/features/admin/actions/site-settings-actions.js +2 -2
- package/dist/features/admin/api/bids/route.js +2 -2
- package/dist/features/admin/api/coupons/route.js +2 -2
- package/dist/features/admin/api/products/route.js +2 -2
- package/dist/features/admin/api/reviews/route.js +2 -2
- package/dist/features/admin/components/AdminActionIndexView.js +4 -4
- package/dist/features/admin/components/AdminAdEditorView.js +9 -9
- package/dist/features/admin/components/AdminAddressBookView.js +4 -4
- package/dist/features/admin/components/AdminAddressClustersView.js +3 -3
- package/dist/features/admin/components/AdminAddressEditorView.js +13 -13
- package/dist/features/admin/components/AdminAddressesView.js +9 -9
- package/dist/features/admin/components/AdminAdsView.js +8 -8
- package/dist/features/admin/components/AdminAllEventEntriesView.js +7 -7
- package/dist/features/admin/components/AdminAnalyticsGuideView.js +2 -2
- package/dist/features/admin/components/AdminAnalyticsView.js +7 -7
- package/dist/features/admin/components/AdminArtView.js +4 -4
- package/dist/features/admin/components/AdminAuditLogView.js +6 -6
- package/dist/features/admin/components/AdminBidsView.js +12 -12
- package/dist/features/admin/components/AdminBlogEditorView.js +8 -8
- package/dist/features/admin/components/AdminBlogView.js +7 -7
- package/dist/features/admin/components/AdminBrandEditorView.js +11 -11
- package/dist/features/admin/components/AdminBrandsView.js +7 -7
- package/dist/features/admin/components/AdminBundleEditorView.js +13 -13
- package/dist/features/admin/components/AdminBundlesView.js +8 -8
- package/dist/features/admin/components/AdminCarouselEditorView.js +8 -8
- package/dist/features/admin/components/AdminCarouselGroupEditorView.js +6 -6
- package/dist/features/admin/components/AdminCarouselView.js +11 -11
- package/dist/features/admin/components/AdminCartsView.js +5 -5
- package/dist/features/admin/components/AdminCatalogGuideView.js +2 -2
- package/dist/features/admin/components/AdminCategoriesView.js +6 -6
- package/dist/features/admin/components/AdminCategoryEditorView.js +274 -8
- package/dist/features/admin/components/AdminClassifiedView.js +4 -4
- package/dist/features/admin/components/AdminContactEditorView.js +3 -3
- package/dist/features/admin/components/AdminContactView.js +10 -10
- package/dist/features/admin/components/AdminContentGuideView.js +2 -2
- package/dist/features/admin/components/AdminCouponEditorView.js +12 -12
- package/dist/features/admin/components/AdminCouponsView.js +10 -10
- package/dist/features/admin/components/AdminDashboardView.js +5 -5
- package/dist/features/admin/components/AdminDigitalCodesView.js +4 -4
- package/dist/features/admin/components/AdminEmployeeEditorView.js +10 -10
- package/dist/features/admin/components/AdminFaqEditorView.js +6 -6
- package/dist/features/admin/components/AdminFaqsView.js +6 -6
- package/dist/features/admin/components/AdminFeatureEditorView.js +9 -9
- package/dist/features/admin/components/AdminFeaturesView.js +8 -8
- package/dist/features/admin/components/AdminFulfillmentView.js +9 -9
- package/dist/features/admin/components/AdminGroupedListingsView.js +9 -9
- package/dist/features/admin/components/AdminGuideHubView.js +2 -2
- package/dist/features/admin/components/AdminHistoryView.js +6 -6
- package/dist/features/admin/components/AdminLiveView.js +4 -4
- package/dist/features/admin/components/AdminMediaView.js +5 -5
- package/dist/features/admin/components/AdminNavEditorView.js +7 -7
- package/dist/features/admin/components/AdminNavigationView.js +5 -5
- package/dist/features/admin/components/AdminNewsletterView.js +9 -9
- package/dist/features/admin/components/AdminNotificationsView.js +10 -10
- package/dist/features/admin/components/AdminOffersView.js +13 -13
- package/dist/features/admin/components/AdminOrderEditorView.js +15 -15
- package/dist/features/admin/components/AdminOrdersGuideView.js +2 -2
- package/dist/features/admin/components/AdminOrdersView.js +13 -13
- package/dist/features/admin/components/AdminPaymentClustersView.js +3 -3
- package/dist/features/admin/components/AdminPaymentMethodsView.js +8 -8
- package/dist/features/admin/components/AdminPaymentsGuideView.js +2 -2
- package/dist/features/admin/components/AdminPayoutMarkPaidModal.js +7 -7
- package/dist/features/admin/components/AdminPayoutsView.js +12 -12
- package/dist/features/admin/components/AdminPrizeDrawsView.js +9 -9
- package/dist/features/admin/components/AdminProductEditorView.js +21 -14
- package/dist/features/admin/components/AdminProductsView.js +93 -22
- package/dist/features/admin/components/AdminReturnRequestsView.js +7 -7
- package/dist/features/admin/components/AdminReviewsView.js +9 -9
- package/dist/features/admin/components/AdminScammerEditorView.js +6 -6
- package/dist/features/admin/components/AdminScammersView.js +10 -10
- package/dist/features/admin/components/AdminSectionsView.js +15 -15
- package/dist/features/admin/components/AdminSessionsManager.js +1 -1
- package/dist/features/admin/components/AdminSessionsView.js +6 -6
- package/dist/features/admin/components/AdminSidebar.js +8 -8
- package/dist/features/admin/components/AdminSiteConfigGuideView.js +2 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +36 -17
- package/dist/features/admin/components/AdminStickersView.js +4 -4
- package/dist/features/admin/components/AdminStoreAddressesView.js +4 -4
- package/dist/features/admin/components/AdminStoreEditorView.js +7 -7
- package/dist/features/admin/components/AdminStoresGuideView.js +2 -2
- package/dist/features/admin/components/AdminStoresView.js +11 -11
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +6 -6
- package/dist/features/admin/components/AdminSublistingCategoryEditorView.js +7 -7
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +9 -9
- package/dist/features/admin/components/AdminSupportTicketsView.js +9 -9
- package/dist/features/admin/components/AdminTaxCodeEditorView.d.ts +10 -0
- package/dist/features/admin/components/AdminTaxCodeEditorView.js +160 -0
- package/dist/features/admin/components/AdminTaxCodesView.d.ts +13 -0
- package/dist/features/admin/components/AdminTaxCodesView.js +86 -0
- package/dist/features/admin/components/AdminTeamGuideView.js +1 -1
- package/dist/features/admin/components/AdminTeamView.js +8 -8
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +10 -10
- package/dist/features/admin/components/AdminTesterChecklistView.js +9 -9
- package/dist/features/admin/components/AdminTopBar.js +1 -1
- package/dist/features/admin/components/AdminTrustGuideView.js +2 -2
- package/dist/features/admin/components/AdminUserEditorView.js +8 -8
- package/dist/features/admin/components/AdminUsersGuideView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +15 -15
- package/dist/features/admin/components/AdminViewCards.js +3 -3
- package/dist/features/admin/components/AdminWhatsAppGuideView.js +2 -2
- package/dist/features/admin/components/AdminWishlistsView.js +6 -6
- package/dist/features/admin/components/BrandQuickCreateForm.js +8 -8
- package/dist/features/admin/components/CategoryQuickCreateForm.js +8 -8
- package/dist/features/admin/components/DashboardStats.js +4 -4
- package/dist/features/admin/components/DataListingView.js +7 -7
- package/dist/features/admin/components/DataTable.js +5 -5
- package/dist/features/admin/components/DemoSeedView.js +1 -1
- package/dist/features/admin/components/DrawerFormFooter.js +1 -1
- package/dist/features/admin/components/QuickEditMenu.js +4 -4
- package/dist/features/admin/components/ViewAuditLogEntryModal.js +1 -1
- package/dist/features/admin/components/ViewNotificationModal.js +2 -2
- package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +2 -2
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +4 -4
- package/dist/features/admin/components/analytics/AdminStatCard.js +2 -2
- package/dist/features/admin/components/analytics/AdminTopProductsTable.js +2 -2
- package/dist/features/admin/components/analytics/index.js +3 -3
- package/dist/features/admin/components/index.js +94 -94
- package/dist/features/admin/components/sections/adminSectionsBuildParse.js +1 -1
- package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +50 -1
- package/dist/features/admin/components/sections/adminSectionsTypes.js +30 -11
- package/dist/features/admin/hooks/useAdmin.js +2 -2
- package/dist/features/admin/hooks/useAdminListing.js +5 -5
- package/dist/features/admin/hooks/useAdminListingData.js +2 -2
- package/dist/features/admin/hooks/useAdminSectionsListing.js +2 -2
- package/dist/features/admin/index.js +7 -7
- package/dist/features/admin/repository/analytics-rollup.repository.js +1 -1
- package/dist/features/admin/repository/notification.repository.js +5 -5
- package/dist/features/admin/repository/site-settings.repository.js +7 -7
- package/dist/features/admin/schemas/admin-editor-forms.js +3 -3
- package/dist/features/admin/schemas/admin-ops-forms.js +3 -3
- package/dist/features/admin/schemas/admin-user-form.d.ts +4 -4
- package/dist/features/admin/schemas/admin-user-form.js +1 -1
- package/dist/features/admin/schemas/firestore.d.ts +29 -0
- package/dist/features/admin/schemas/firestore.js +8 -2
- package/dist/features/admin/schemas/homepage-section-form.js +2 -2
- package/dist/features/admin/schemas/index.js +1 -1
- package/dist/features/admin/schemas/nav-item-form.js +1 -1
- package/dist/features/admin/schemas/small-forms.js +1 -1
- package/dist/features/admin/server.js +8 -8
- package/dist/features/admin/types/index.js +1 -1
- package/dist/features/admin/utils/checkActionAllowed.js +4 -4
- package/dist/features/admin/utils/getDisabledRoutes.js +1 -1
- package/dist/features/admin/utils/getSiteSettingsGlobal.js +1 -1
- package/dist/features/analytics/components/PageViewTracker.js +3 -3
- package/dist/features/analytics/repository/page-views.repository.js +3 -3
- package/dist/features/auctions/actions/bid-actions.js +23 -23
- package/dist/features/auctions/actions/index.js +1 -1
- package/dist/features/auctions/api/route.js +2 -2
- package/dist/features/auctions/columns/index.js +1 -1
- package/dist/features/auctions/components/AuctionBidsTable.js +4 -4
- package/dist/features/auctions/components/AuctionBottomActions.js +9 -9
- package/dist/features/auctions/components/AuctionDetailPageView.js +35 -35
- package/dist/features/auctions/components/AuctionFilters.js +4 -4
- package/dist/features/auctions/components/AuctionLiveStatusBadge.js +2 -2
- package/dist/features/auctions/components/AuctionsListView.js +4 -4
- package/dist/features/auctions/components/CollapsibleBidHistory.js +4 -4
- package/dist/features/auctions/components/LiveBidPrice.js +3 -3
- package/dist/features/auctions/components/LiveMinIncrement.js +5 -5
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +13 -13
- package/dist/features/auctions/components/MarketplaceAuctionGrid.js +2 -2
- package/dist/features/auctions/components/PlaceBidFormClient.js +17 -17
- package/dist/features/auctions/components/index.js +5 -5
- package/dist/features/auctions/hooks/useAuctions.js +3 -3
- package/dist/features/auctions/hooks/useBids.js +2 -2
- package/dist/features/auctions/hooks/useLiveAuctionBid.js +1 -1
- package/dist/features/auctions/hooks/usePlaceBid.js +2 -2
- package/dist/features/auctions/hooks/useRealtimeBids.js +3 -3
- package/dist/features/auctions/index.js +8 -8
- package/dist/features/auctions/repository/bid.repository.js +7 -7
- package/dist/features/auctions/schemas/firestore.js +1 -1
- package/dist/features/auctions/schemas/index.js +2 -2
- package/dist/features/auctions/server.js +3 -3
- package/dist/features/audit-log/repository/audit-log.repository.js +2 -2
- package/dist/features/auth/actions/index.js +1 -1
- package/dist/features/auth/actions/profile-actions.js +8 -8
- package/dist/features/auth/actions/user-slug.js +4 -4
- package/dist/features/auth/api/route.js +2 -2
- package/dist/features/auth/auth-helpers.js +2 -2
- package/dist/features/auth/checkout-value-otp.js +3 -3
- package/dist/features/auth/components/AuthStatusPanel.js +2 -2
- package/dist/features/auth/components/ForgotPasswordView.js +7 -7
- package/dist/features/auth/components/Guards.js +2 -2
- package/dist/features/auth/components/LoginForm.js +8 -8
- package/dist/features/auth/components/OAuthLoadingView.js +1 -1
- package/dist/features/auth/components/RegisterForm.js +9 -9
- package/dist/features/auth/components/ResetPasswordView.js +6 -6
- package/dist/features/auth/components/SocialAuthButtons.js +1 -1
- package/dist/features/auth/components/VerifyEmailView.js +2 -2
- package/dist/features/auth/components/index.js +9 -9
- package/dist/features/auth/hooks/useAuth.js +7 -7
- package/dist/features/auth/hooks/useAuthEvent.js +2 -2
- package/dist/features/auth/hooks/useLogout.js +2 -2
- package/dist/features/auth/hooks/useRBAC.js +3 -3
- package/dist/features/auth/index.js +11 -11
- package/dist/features/auth/repository/index.js +4 -4
- package/dist/features/auth/repository/session.repository.js +7 -7
- package/dist/features/auth/repository/sms-counter.repository.js +2 -2
- package/dist/features/auth/repository/token.repository.js +6 -6
- package/dist/features/auth/repository/user.repository.js +5 -5
- package/dist/features/auth/schemas/firestore.d.ts +0 -1
- package/dist/features/auth/schemas/index.js +3 -3
- package/dist/features/auth/server/checkSoftBan.js +1 -1
- package/dist/features/auth/server.js +5 -5
- package/dist/features/auth/token-store.js +3 -3
- package/dist/features/before-after/api/[id]/route.js +2 -2
- package/dist/features/before-after/api/route.js +2 -2
- package/dist/features/before-after/columns/index.js +1 -1
- package/dist/features/before-after/components/BeforeAfterGallery.js +2 -2
- package/dist/features/before-after/components/BeforeAfterSlider.js +1 -1
- package/dist/features/before-after/components/index.js +2 -2
- package/dist/features/before-after/hooks/useBeforeAfter.js +2 -2
- package/dist/features/before-after/index.js +6 -6
- package/dist/features/blog/actions/blog-actions.js +6 -6
- package/dist/features/blog/actions/index.js +1 -1
- package/dist/features/blog/api/[slug]/route.js +3 -3
- package/dist/features/blog/api/route.js +3 -3
- package/dist/features/blog/columns/index.js +1 -1
- package/dist/features/blog/components/BlogFeaturedCard.js +6 -6
- package/dist/features/blog/components/BlogFilters.js +7 -7
- package/dist/features/blog/components/BlogIndexListing.js +9 -9
- package/dist/features/blog/components/BlogIndexPageView.js +6 -6
- package/dist/features/blog/components/BlogListView.js +6 -6
- package/dist/features/blog/components/BlogPostForm.js +6 -6
- package/dist/features/blog/components/BlogPostView.js +10 -10
- package/dist/features/blog/components/index.js +6 -6
- package/dist/features/blog/hooks/useBlog.js +2 -2
- package/dist/features/blog/index.js +6 -6
- package/dist/features/blog/repository/blog.repository.js +8 -8
- package/dist/features/blog/schemas/blog-form.js +2 -2
- package/dist/features/blog/schemas/firestore.d.ts +2 -2
- package/dist/features/blog/schemas/firestore.js +1 -1
- package/dist/features/blog/schemas/index.js +4 -4
- package/dist/features/blog/server.js +4 -4
- package/dist/features/cart/actions/cart-actions.js +16 -16
- package/dist/features/cart/actions/index.js +1 -1
- package/dist/features/cart/api/[id]/route.js +2 -2
- package/dist/features/cart/api/route.js +2 -2
- package/dist/features/cart/columns/index.js +2 -2
- package/dist/features/cart/components/CartDrawer.js +6 -6
- package/dist/features/cart/components/CartGroupLineRow.js +5 -5
- package/dist/features/cart/components/CartPriceBreakdown.d.ts +6 -0
- package/dist/features/cart/components/CartPriceBreakdown.js +3 -3
- package/dist/features/cart/components/CartSummary.js +1 -1
- package/dist/features/cart/components/CartView.js +2 -2
- package/dist/features/cart/components/CheckoutAddressStep.js +1 -1
- package/dist/features/cart/components/CheckoutSuccessView.js +1 -1
- package/dist/features/cart/components/CheckoutView.js +2 -2
- package/dist/features/cart/components/ShippingPicker.js +3 -3
- package/dist/features/cart/components/StoreAddonsPicker.d.ts +35 -1
- package/dist/features/cart/components/StoreAddonsPicker.js +39 -11
- package/dist/features/cart/components/index.js +10 -10
- package/dist/features/cart/hooks/useAddToCart.js +8 -8
- package/dist/features/cart/hooks/useCart.js +3 -3
- package/dist/features/cart/hooks/useCartCount.js +4 -4
- package/dist/features/cart/hooks/useCartQuery.js +1 -1
- package/dist/features/cart/hooks/useCheckoutReadQueries.js +1 -1
- package/dist/features/cart/hooks/useGuestCart.js +1 -1
- package/dist/features/cart/hooks/useGuestCartMerge.js +4 -4
- package/dist/features/cart/hooks/useOrder.js +2 -2
- package/dist/features/cart/index.js +15 -15
- package/dist/features/cart/repository/cart.repository.js +7 -6
- package/dist/features/cart/schemas/firestore.d.ts +10 -0
- package/dist/features/cart/schemas/index.d.ts +2 -2
- package/dist/features/cart/schemas/index.js +2 -2
- package/dist/features/cart/server.js +2 -2
- package/dist/features/cart/utils/guest-cart.js +2 -2
- package/dist/features/cart/utils/line-total.js +1 -1
- package/dist/features/cart/utils/pending-ops.js +1 -1
- package/dist/features/catalogue/actions/approve-catalogue-listing.js +5 -5
- package/dist/features/catalogue/actions/list-from-catalogue.js +6 -6
- package/dist/features/catalogue/actions/submit-for-approval.js +4 -4
- package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +7 -7
- package/dist/features/catalogue/components/CatalogueItemEditorView.js +26 -15
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +7 -7
- package/dist/features/catalogue/components/PublicCatalogueView.js +6 -6
- package/dist/features/catalogue/components/UserCatalogueView.js +5 -5
- package/dist/features/catalogue/index.js +10 -10
- package/dist/features/catalogue/repository/catalogue.repository.js +4 -4
- package/dist/features/catalogue/schemas/firestore.js +1 -1
- package/dist/features/catalogue/schemas/index.js +2 -2
- package/dist/features/catalogue/schemas/validation.js +1 -1
- package/dist/features/catalogue/utils/freshness.js +2 -2
- package/dist/features/catalogue/utils/product-from-item.js +1 -1
- package/dist/features/categories/actions/category-actions.js +3 -3
- package/dist/features/categories/actions/index.js +1 -1
- package/dist/features/categories/api/[id]/description-template/route.d.ts +45 -0
- package/dist/features/categories/api/[id]/description-template/route.js +252 -0
- package/dist/features/categories/api/[id]/route.js +4 -4
- package/dist/features/categories/api/route.js +160 -15
- package/dist/features/categories/columns/index.js +1 -1
- package/dist/features/categories/components/BrandDetailPageView.js +60 -18
- package/dist/features/categories/components/BrandDetailTabs.js +9 -9
- package/dist/features/categories/components/BreadcrumbTrail.js +2 -2
- package/dist/features/categories/components/BundleBuyNowCta.js +7 -7
- package/dist/features/categories/components/BundleCollage.js +7 -7
- package/dist/features/categories/components/BundleDetailView.js +10 -10
- package/dist/features/categories/components/BundleDynamicRuleEditor.js +5 -5
- package/dist/features/categories/components/BundleItemsPicker.js +4 -4
- package/dist/features/categories/components/BundlesListView.js +6 -6
- package/dist/features/categories/components/CategoriesIndexListing.js +9 -9
- package/dist/features/categories/components/CategoriesIndexPageView.js +3 -3
- package/dist/features/categories/components/CategoryBundlesListing.js +6 -6
- package/dist/features/categories/components/CategoryDetailPageView.js +160 -27
- package/dist/features/categories/components/CategoryDetailTabs.js +10 -10
- package/dist/features/categories/components/CategoryFilters.js +4 -4
- package/dist/features/categories/components/CategoryForm.js +6 -6
- package/dist/features/categories/components/CategoryGrid.js +4 -4
- package/dist/features/categories/components/CategoryHighlightsAndFaqSection.js +2 -2
- package/dist/features/categories/components/CategoryProductsListing.js +17 -17
- package/dist/features/categories/components/CategoryProductsView.js +3 -3
- package/dist/features/categories/components/CategorySelectorCreate.js +7 -7
- package/dist/features/categories/components/CategorySortSelect.js +2 -2
- package/dist/features/categories/components/CategoryStoresListing.js +3 -3
- package/dist/features/categories/components/CategoryTableColumns.js +3 -3
- package/dist/features/categories/components/CategoryTemplatePicker.d.ts +65 -0
- package/dist/features/categories/components/CategoryTemplatePicker.js +170 -0
- package/dist/features/categories/components/CategoryTree.js +1 -1
- package/dist/features/categories/components/ConcernCard.js +2 -2
- package/dist/features/categories/components/ConcernGrid.js +2 -2
- package/dist/features/categories/components/index.js +20 -20
- package/dist/features/categories/constants/listing-categories.d.ts +17 -0
- package/dist/features/categories/constants/listing-categories.js +53 -0
- package/dist/features/categories/hooks/useCategories.js +3 -3
- package/dist/features/categories/hooks/useCategorySelector.js +2 -2
- package/dist/features/categories/hooks/useCategoryTree.js +30 -4
- package/dist/features/categories/index.js +7 -7
- package/dist/features/categories/repository/categories.repository.d.ts +62 -11
- package/dist/features/categories/repository/categories.repository.js +183 -40
- package/dist/features/categories/repository/price-index.repository.d.ts +184 -0
- package/dist/features/categories/repository/price-index.repository.js +115 -0
- package/dist/features/categories/schemas/bundle-form.js +3 -3
- package/dist/features/categories/schemas/category-content.d.ts +206 -0
- package/dist/features/categories/schemas/category-content.js +28 -0
- package/dist/features/categories/schemas/firestore.d.ts +74 -5
- package/dist/features/categories/schemas/firestore.js +76 -5
- package/dist/features/categories/schemas/index.d.ts +1047 -0
- package/dist/features/categories/schemas/index.js +98 -2
- package/dist/features/categories/server.d.ts +1 -0
- package/dist/features/categories/server.js +11 -4
- package/dist/features/categories/types/index.d.ts +9 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +13 -13
- package/dist/features/checkout/actions/index.js +1 -1
- package/dist/features/checkout/components/CheckoutStepper.js +1 -1
- package/dist/features/checkout/components/index.js +1 -1
- package/dist/features/checkout/index.js +4 -4
- package/dist/features/checkout/repository/failed-checkout.repository.js +2 -2
- package/dist/features/checkout/schemas/index.js +1 -1
- package/dist/features/checkout/server.js +2 -2
- package/dist/features/classified/components/ClassifiedDetailPageView.js +22 -22
- package/dist/features/classified/components/ClassifiedFilters.js +4 -4
- package/dist/features/classified/components/index.js +1 -1
- package/dist/features/collections/api/[slug]/route.js +2 -2
- package/dist/features/collections/api/route.js +2 -2
- package/dist/features/collections/columns/index.js +1 -1
- package/dist/features/collections/components/CollectionCard.js +3 -3
- package/dist/features/collections/components/index.js +1 -1
- package/dist/features/collections/hooks/useCollections.js +2 -2
- package/dist/features/collections/index.js +6 -6
- package/dist/features/consultation/api/[id]/route.js +2 -2
- package/dist/features/consultation/api/route.js +2 -2
- package/dist/features/consultation/columns/index.js +1 -1
- package/dist/features/consultation/components/ConsultationForm.js +6 -6
- package/dist/features/consultation/components/index.js +1 -1
- package/dist/features/consultation/hooks/useBookConsultation.js +2 -2
- package/dist/features/consultation/index.js +6 -6
- package/dist/features/consultation/schemas/index.d.ts +2 -2
- package/dist/features/consultation/schemas/index.js +1 -1
- package/dist/features/consultation/server.js +1 -1
- package/dist/features/contact/components/ContactForm.js +4 -4
- package/dist/features/contact/components/ContactInfoSidebar.js +1 -1
- package/dist/features/contact/components/ContactPageView.js +6 -6
- package/dist/features/contact/components/index.js +3 -3
- package/dist/features/contact/email.js +9 -9
- package/dist/features/contact/index.js +2 -2
- package/dist/features/contact/schemas/inquiry-forms.js +1 -1
- package/dist/features/contact/server.js +1 -1
- package/dist/features/copilot/components/AdminCopilotView.js +4 -4
- package/dist/features/copilot/components/index.js +1 -1
- package/dist/features/copilot/hooks/useCopilotChat.js +2 -2
- package/dist/features/copilot/hooks/useCopilotFeedback.js +2 -2
- package/dist/features/copilot/index.js +3 -3
- package/dist/features/corporate/api/[id]/route.js +2 -2
- package/dist/features/corporate/api/route.js +2 -2
- package/dist/features/corporate/columns/index.js +1 -1
- package/dist/features/corporate/components/CorporateInquiryForm.js +7 -7
- package/dist/features/corporate/components/index.js +1 -1
- package/dist/features/corporate/hooks/useSubmitCorporateInquiry.js +2 -2
- package/dist/features/corporate/index.js +6 -6
- package/dist/features/corporate/schemas/index.js +1 -1
- package/dist/features/corporate/server.js +1 -1
- package/dist/features/cron/index.js +4 -4
- package/dist/features/cron/jobs/auction-expiry.job.js +3 -3
- package/dist/features/cron/jobs/preorder-reminder.job.js +3 -3
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +20 -20
- package/dist/features/digital-codes/components/DigitalCodeFilters.js +4 -4
- package/dist/features/digital-codes/components/index.js +1 -1
- package/dist/features/email/index.js +1 -1
- package/dist/features/email/notification-templates.js +1 -1
- package/dist/features/events/actions/event-actions.js +10 -10
- package/dist/features/events/actions/index.js +1 -1
- package/dist/features/events/api/[id]/route.js +4 -4
- package/dist/features/events/columns/index.js +1 -1
- package/dist/features/events/components/AdminEventEditorView.js +10 -10
- package/dist/features/events/components/AdminEventEntriesView.js +9 -9
- package/dist/features/events/components/AdminEventsView.js +8 -8
- package/dist/features/events/components/EventBanner.js +4 -4
- package/dist/features/events/components/EventCard.js +8 -8
- package/dist/features/events/components/EventDetailView.js +1 -1
- package/dist/features/events/components/EventFilters.js +8 -8
- package/dist/features/events/components/EventFormDrawer.js +1 -1
- package/dist/features/events/components/EventLeaderboard.js +1 -1
- package/dist/features/events/components/EventOfferCard.js +5 -5
- package/dist/features/events/components/EventParticipateView.js +2 -2
- package/dist/features/events/components/EventPollWidget.js +5 -5
- package/dist/features/events/components/EventRaffleEntryForm.js +7 -7
- package/dist/features/events/components/EventRaffleWinnerView.js +1 -1
- package/dist/features/events/components/EventRafflesSection.js +8 -8
- package/dist/features/events/components/EventSaleBanner.js +4 -4
- package/dist/features/events/components/EventStatusBadge.js +1 -1
- package/dist/features/events/components/EventsIndexListing.js +9 -9
- package/dist/features/events/components/EventsListPageView.js +9 -9
- package/dist/features/events/components/EventsListView.js +2 -2
- package/dist/features/events/components/RelatedEventsCarousel.js +6 -6
- package/dist/features/events/components/SpinWheelView.js +4 -4
- package/dist/features/events/components/index.js +21 -21
- package/dist/features/events/hooks/useBulkEvent.js +1 -1
- package/dist/features/events/hooks/useEvent.js +2 -2
- package/dist/features/events/hooks/useEvents.js +2 -2
- package/dist/features/events/index.js +8 -8
- package/dist/features/events/repository/event-entry.repository.js +6 -6
- package/dist/features/events/repository/events.repository.js +10 -10
- package/dist/features/events/schemas/event-form.js +1 -1
- package/dist/features/events/schemas/firestore.d.ts +2 -2
- package/dist/features/events/schemas/index.js +3 -3
- package/dist/features/events/server.js +4 -4
- package/dist/features/faq/actions/faq-actions.js +3 -3
- package/dist/features/faq/actions/index.js +1 -1
- package/dist/features/faq/columns/index.js +1 -1
- package/dist/features/faq/components/ContactCTA.js +1 -1
- package/dist/features/faq/components/FAQAccordion.js +1 -1
- package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
- package/dist/features/faq/components/FAQHelpfulButtons.js +2 -2
- package/dist/features/faq/components/FAQPageContent.js +7 -7
- package/dist/features/faq/components/FAQSearchableList.js +2 -2
- package/dist/features/faq/components/FAQSortDropdown.js +1 -1
- package/dist/features/faq/components/RelatedFAQs.js +1 -1
- package/dist/features/faq/components/index.js +7 -7
- package/dist/features/faq/hooks/useFaqList.js +2 -2
- package/dist/features/faq/hooks/useFaqVote.js +2 -2
- package/dist/features/faq/index.js +7 -7
- package/dist/features/faq/repository/faqs.repository.js +6 -6
- package/dist/features/faq/schemas/firestore.d.ts +2 -1
- package/dist/features/faq/schemas/firestore.js +22 -9
- package/dist/features/faq/schemas/index.js +2 -2
- package/dist/features/faq/server.js +2 -2
- package/dist/features/faq/types/index.d.ts +9 -1
- package/dist/features/faq/utils/getHomepageFaqsCached.js +1 -1
- package/dist/features/filters/AsyncFacetSection.js +2 -2
- package/dist/features/filters/FilterFacetSection.js +2 -2
- package/dist/features/filters/FilterPanel.js +5 -5
- package/dist/features/filters/RangeFilter.js +2 -2
- package/dist/features/filters/SwitchFilter.js +2 -2
- package/dist/features/filters/index.js +8 -8
- package/dist/features/forms/Checkbox.js +3 -3
- package/dist/features/forms/Input.js +3 -3
- package/dist/features/forms/Radio.js +2 -2
- package/dist/features/forms/Select.js +3 -3
- package/dist/features/forms/Slider.js +3 -3
- package/dist/features/forms/Textarea.js +3 -3
- package/dist/features/forms/Toggle.js +2 -2
- package/dist/features/forms/index.js +8 -8
- package/dist/features/grouped/components/GroupedListingDetailView.js +3 -3
- package/dist/features/grouped/components/GroupedListingEditorView.js +12 -12
- package/dist/features/grouped/components/GroupedListingsCarousel.js +7 -7
- package/dist/features/grouped/repository/grouped-listings.repository.js +3 -3
- package/dist/features/grouped/schemas/grouped-listing-form.js +1 -1
- package/dist/features/grouped/schemas/index.d.ts +2 -2
- package/dist/features/grouped/schemas/index.js +2 -2
- package/dist/features/history/actions/history-actions.js +2 -2
- package/dist/features/history/actions/index.js +1 -1
- package/dist/features/history/components/HistoryTracker.js +2 -2
- package/dist/features/history/hooks/useHistory.js +4 -4
- package/dist/features/history/hooks/useHistoryMergeOnLogin.js +2 -2
- package/dist/features/history/index.js +4 -4
- package/dist/features/history/repository/user-history.repository.js +3 -3
- package/dist/features/history/server.js +2 -2
- package/dist/features/history/utils/guest-history.js +2 -2
- package/dist/features/homepage/actions/carousel-actions.js +3 -3
- package/dist/features/homepage/actions/homepage-section-actions.js +5 -5
- package/dist/features/homepage/actions/index.js +2 -2
- package/dist/features/homepage/api/[id]/route.js +3 -3
- package/dist/features/homepage/api/carousel/[id]/route.js +4 -4
- package/dist/features/homepage/api/carousel/route.js +4 -4
- package/dist/features/homepage/api/route.js +4 -4
- package/dist/features/homepage/api/sections/[id]/route.js +2 -2
- package/dist/features/homepage/api/sections/route.js +2 -2
- package/dist/features/homepage/components/AdSlot.js +5 -5
- package/dist/features/homepage/components/AdvertisementBanner.js +4 -4
- package/dist/features/homepage/components/AnnouncementBar.js +3 -3
- package/dist/features/homepage/components/BeforeAfterCard.js +3 -3
- package/dist/features/homepage/components/BlogArticlesSection.js +6 -6
- package/dist/features/homepage/components/BrandsSection.js +8 -8
- package/dist/features/homepage/components/CTABannerSection.js +5 -5
- package/dist/features/homepage/components/CharacterHotspot.js +7 -7
- package/dist/features/homepage/components/CharacterHotspotForm.js +7 -7
- package/dist/features/homepage/components/CollectionCardsSection.js +2 -2
- package/dist/features/homepage/components/CustomCardsSection.js +5 -5
- package/dist/features/homepage/components/CustomerReviewsSection.js +4 -4
- package/dist/features/homepage/components/EventsSection.js +4 -4
- package/dist/features/homepage/components/FAQSection.js +3 -3
- package/dist/features/homepage/components/FeaturedAuctionsSection.js +5 -5
- package/dist/features/homepage/components/FeaturedBundlesSection.js +9 -9
- package/dist/features/homepage/components/FeaturedPreOrdersSection.js +5 -5
- package/dist/features/homepage/components/FeaturedProductsSection.js +6 -6
- package/dist/features/homepage/components/FeaturedResultsSection.js +3 -3
- package/dist/features/homepage/components/FeaturedStoresSection.js +5 -5
- package/dist/features/homepage/components/GoogleReviewsSection.js +6 -6
- package/dist/features/homepage/components/HeroBanner.js +4 -4
- package/dist/features/homepage/components/HeroCarousel.js +7 -7
- package/dist/features/homepage/components/HeroSection.js +1 -1
- package/dist/features/homepage/components/HomepageCustomerReviewsSection.js +4 -4
- package/dist/features/homepage/components/HomepageSectionBoundary.js +1 -1
- package/dist/features/homepage/components/HomepageSkeleton.js +3 -3
- package/dist/features/homepage/components/HomepageView.js +1 -1
- package/dist/features/homepage/components/HowItWorksInfoView.js +3 -3
- package/dist/features/homepage/components/HowItWorksSection.js +2 -2
- package/dist/features/homepage/components/MarketplaceHomepageView.js +17 -17
- package/dist/features/homepage/components/NewsletterBanner.js +7 -7
- package/dist/features/homepage/components/NewsletterSection.js +1 -1
- package/dist/features/homepage/components/PromoGrid.js +4 -4
- package/dist/features/homepage/components/SectionCarousel.js +6 -6
- package/dist/features/homepage/components/SecurityHighlightsSection.js +2 -2
- package/dist/features/homepage/components/ShopByCategorySection.js +8 -8
- package/dist/features/homepage/components/SiteFeaturesSection.js +2 -2
- package/dist/features/homepage/components/SocialFeedSection.js +6 -6
- package/dist/features/homepage/components/SocialPostCard.js +2 -2
- package/dist/features/homepage/components/StatsCounterSection.js +1 -1
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/TrustBadges.js +1 -1
- package/dist/features/homepage/components/TrustFeaturesSection.js +1 -1
- package/dist/features/homepage/components/TrustIndicatorsSection.js +2 -2
- package/dist/features/homepage/components/WelcomeSection.js +2 -2
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +3 -3
- package/dist/features/homepage/components/index.js +39 -39
- package/dist/features/homepage/constants/faq-category-labels.d.ts +0 -14
- package/dist/features/homepage/constants/faq-category-labels.js +22 -14
- package/dist/features/homepage/hooks/homepage-query.js +1 -1
- package/dist/features/homepage/hooks/useActiveAd.js +2 -2
- package/dist/features/homepage/hooks/useBlogArticles.js +2 -2
- package/dist/features/homepage/hooks/useFeaturedAuctions.js +5 -5
- package/dist/features/homepage/hooks/useFeaturedPreOrders.js +5 -5
- package/dist/features/homepage/hooks/useFeaturedProducts.js +5 -5
- package/dist/features/homepage/hooks/useFeaturedStores.js +2 -2
- package/dist/features/homepage/hooks/useHeroCarousel.js +2 -2
- package/dist/features/homepage/hooks/useHomepage.js +2 -2
- package/dist/features/homepage/hooks/useHomepageEvents.js +2 -2
- package/dist/features/homepage/hooks/useHomepageReviews.d.ts +1 -1
- package/dist/features/homepage/hooks/useHomepageReviews.js +2 -2
- package/dist/features/homepage/hooks/useHomepageSections.js +2 -2
- package/dist/features/homepage/hooks/useNewsletter.js +2 -2
- package/dist/features/homepage/hooks/useTopBrands.js +2 -2
- package/dist/features/homepage/hooks/useTopCategories.js +2 -2
- package/dist/features/homepage/index.js +17 -17
- package/dist/features/homepage/lib/live-stats.js +5 -5
- package/dist/features/homepage/lib/section-helpers.js +1 -1
- package/dist/features/homepage/lib/section-renderer.js +32 -32
- package/dist/features/homepage/repository/carousel.repository.js +6 -6
- package/dist/features/homepage/repository/carousels.repository.js +6 -6
- package/dist/features/homepage/repository/homepage-sections.repository.js +5 -5
- package/dist/features/homepage/schemas/firestore.d.ts +26 -1
- package/dist/features/homepage/schemas/firestore.js +1 -1
- package/dist/features/homepage/schemas/index.js +2 -2
- package/dist/features/homepage/server.js +9 -9
- package/dist/features/jobs/actions/enqueue-job.js +6 -6
- package/dist/features/jobs/repository/jobs.repository.js +2 -2
- package/dist/features/layout/AppLayoutShell.js +18 -18
- package/dist/features/layout/AutoBreadcrumbs.js +3 -3
- package/dist/features/layout/BackToTop.js +4 -4
- package/dist/features/layout/BottomActions.js +3 -3
- package/dist/features/layout/BottomChrome.js +2 -2
- package/dist/features/layout/BottomNavItem.js +1 -1
- package/dist/features/layout/BottomNavLayout.js +2 -2
- package/dist/features/layout/BottomNavbar.js +6 -6
- package/dist/features/layout/BottomSheet.js +1 -1
- package/dist/features/layout/Breadcrumbs.js +2 -2
- package/dist/features/layout/FooterLayout.js +2 -2
- package/dist/features/layout/LocaleSwitcher.js +1 -1
- package/dist/features/layout/MainNavbar.d.ts +6 -0
- package/dist/features/layout/MainNavbar.js +3 -2
- package/dist/features/layout/NavItem.js +2 -2
- package/dist/features/layout/NavbarLayout.d.ts +19 -0
- package/dist/features/layout/NavbarLayout.js +24 -5
- package/dist/features/layout/NavbarWithSettings.js +3 -3
- package/dist/features/layout/PageTabs.js +2 -2
- package/dist/features/layout/SidebarLayout.js +2 -2
- package/dist/features/layout/TitleBar.js +6 -6
- package/dist/features/layout/TitleBarLayout.js +2 -2
- package/dist/features/layout/hooks/useBottomActions.js +1 -1
- package/dist/features/layout/hooks/useFormBottomActions.js +4 -4
- package/dist/features/layout/index.js +23 -23
- package/dist/features/live/components/LiveItemDetailPageView.js +20 -20
- package/dist/features/live/components/LiveItemFilters.js +4 -4
- package/dist/features/live/components/index.js +1 -1
- package/dist/features/lottery/repository/lottery-entry.repository.js +6 -6
- package/dist/features/lottery/schemas/config-write.js +1 -1
- package/dist/features/lottery/schemas/zod.d.ts +8 -8
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +2 -2
- package/dist/features/loyalty/api/balance/route.js +2 -2
- package/dist/features/loyalty/api/earn/route.js +2 -2
- package/dist/features/loyalty/api/history/route.js +2 -2
- package/dist/features/loyalty/api/redeem/route.js +2 -2
- package/dist/features/loyalty/columns/index.js +1 -1
- package/dist/features/loyalty/components/CoinsDisplay.js +1 -1
- package/dist/features/loyalty/components/index.js +1 -1
- package/dist/features/loyalty/hooks/useLoyaltyBalance.js +3 -3
- package/dist/features/loyalty/index.js +6 -6
- package/dist/features/loyalty/server.js +1 -1
- package/dist/features/loyalty/types/index.js +1 -1
- package/dist/features/media/AvatarUpload.js +6 -6
- package/dist/features/media/MediaAudio.js +2 -2
- package/dist/features/media/MediaAvatar.js +2 -2
- package/dist/features/media/MediaImage.js +4 -4
- package/dist/features/media/MediaLightbox.js +2 -2
- package/dist/features/media/MediaPickerModal.js +7 -7
- package/dist/features/media/MediaVideo.js +3 -3
- package/dist/features/media/finalize.js +3 -3
- package/dist/features/media/hooks/useMedia.js +3 -3
- package/dist/features/media/index.js +17 -17
- package/dist/features/media/modals/ImageCropModal.js +2 -2
- package/dist/features/media/modals/ImageEditor.d.ts +0 -1
- package/dist/features/media/modals/ImageEditor.js +18 -3
- package/dist/features/media/modals/VideoThumbnailSelector.js +3 -3
- package/dist/features/media/modals/VideoTrimModal.js +5 -5
- package/dist/features/media/repository/media-assets.repository.js +1 -1
- package/dist/features/media/server.js +1 -1
- package/dist/features/media/types/index.js +1 -1
- package/dist/features/media/upload/CameraCapture.js +2 -2
- package/dist/features/media/upload/ImageUpload.js +9 -9
- package/dist/features/media/upload/MediaUploadField.js +11 -11
- package/dist/features/media/upload/MediaUploadList.js +6 -6
- package/dist/features/media/upload/video-poster.js +1 -1
- package/dist/features/messaging/repository/message-budget.repository.js +2 -2
- package/dist/features/orders/actions/index.js +2 -2
- package/dist/features/orders/actions/order-actions.js +5 -5
- package/dist/features/orders/actions/refund-actions.js +6 -6
- package/dist/features/orders/api/track/[trackingId]/route.js +2 -2
- package/dist/features/orders/columns/index.js +1 -1
- package/dist/features/orders/components/MarketplaceOrderCard.js +4 -4
- package/dist/features/orders/components/OrderAddonBadges.d.ts +4 -2
- package/dist/features/orders/components/OrderAddonBadges.js +5 -4
- package/dist/features/orders/components/OrderFilters.js +6 -6
- package/dist/features/orders/components/OrderPaymentSummary.js +2 -2
- package/dist/features/orders/components/OrderScopeTabs.js +4 -4
- package/dist/features/orders/components/OrderSiblingPayments.js +5 -5
- package/dist/features/orders/components/OrderStatusTimeline.js +2 -2
- package/dist/features/orders/components/OrdersList.js +5 -5
- package/dist/features/orders/components/RefundHistoryTable.js +3 -3
- package/dist/features/orders/components/RefundRequestView.js +8 -8
- package/dist/features/orders/components/index.js +9 -9
- package/dist/features/orders/constants/order-scope.js +1 -1
- package/dist/features/orders/hooks/useOrders.js +2 -2
- package/dist/features/orders/index.js +9 -9
- package/dist/features/orders/repository/orders.repository.d.ts +8 -0
- package/dist/features/orders/repository/orders.repository.js +13 -11
- package/dist/features/orders/schemas/buyer-forms.js +1 -1
- package/dist/features/orders/schemas/firestore.d.ts +165 -1
- package/dist/features/orders/schemas/firestore.js +1 -1
- package/dist/features/orders/schemas/index.d.ts +6 -6
- package/dist/features/orders/schemas/index.js +2 -2
- package/dist/features/orders/server.js +3 -3
- package/dist/features/orders/types/index.d.ts +58 -0
- package/dist/features/orders/utils/order-splitter.js +2 -2
- package/dist/features/payments/columns/index.js +1 -1
- package/dist/features/payments/hooks/usePaymentEvent.js +2 -2
- package/dist/features/payments/hooks/usePayments.js +2 -2
- package/dist/features/payments/index.js +6 -6
- package/dist/features/payments/repository/payout.repository.js +4 -4
- package/dist/features/payments/repository/saved-payment-methods.repository.js +6 -6
- package/dist/features/payments/schemas/firestore.js +1 -1
- package/dist/features/payments/schemas/index.d.ts +6 -6
- package/dist/features/payments/schemas/index.js +3 -3
- package/dist/features/payments/server.js +4 -4
- package/dist/features/pre-orders/api/[id]/route.js +2 -2
- package/dist/features/pre-orders/api/[slug]/route.js +2 -2
- package/dist/features/pre-orders/api/admin/[id]/route.js +2 -2
- package/dist/features/pre-orders/api/admin/route.js +2 -2
- package/dist/features/pre-orders/api/route.js +3 -3
- package/dist/features/pre-orders/columns/index.js +1 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +1 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +14 -14
- package/dist/features/pre-orders/components/PreOrderActionsClient.js +4 -4
- package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
- package/dist/features/pre-orders/components/PreOrderBottomActions.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +26 -26
- package/dist/features/pre-orders/components/PreOrderFilters.js +4 -4
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +23 -23
- package/dist/features/pre-orders/components/PreOrdersListView.js +4 -4
- package/dist/features/pre-orders/components/PreorderCard.js +2 -2
- package/dist/features/pre-orders/components/index.js +6 -6
- package/dist/features/pre-orders/hooks/usePreOrders.js +2 -2
- package/dist/features/pre-orders/index.js +6 -6
- package/dist/features/pre-orders/schemas/index.js +1 -1
- package/dist/features/pre-orders/server.js +1 -1
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +87 -0
- package/dist/features/price-index/components/PriceIndexToolView.js +140 -0
- package/dist/features/products/actions/index.js +1 -1
- package/dist/features/products/actions/product-actions.js +6 -6
- package/dist/features/products/api/[id]/route.js +8 -8
- package/dist/features/products/api/route.js +7 -7
- package/dist/features/products/columns/index.d.ts +0 -1
- package/dist/features/products/columns/index.js +7 -3
- package/dist/features/products/columns/productTableColumns.js +3 -3
- package/dist/features/products/components/ArtStickersListView.js +7 -7
- package/dist/features/products/components/AuctionDetailView.js +1 -1
- package/dist/features/products/components/AuctionsIndexListing.js +20 -20
- package/dist/features/products/components/AvailabilityTabs.js +5 -5
- package/dist/features/products/components/BidHistory.js +3 -3
- package/dist/features/products/components/CardStoreLine.js +2 -2
- package/dist/features/products/components/CompareOverlay.js +9 -9
- package/dist/features/products/components/CustomFieldsEditor.js +2 -2
- package/dist/features/products/components/CustomSectionTabContent.js +2 -2
- package/dist/features/products/components/CustomSectionsEditor.js +3 -3
- package/dist/features/products/components/FeatureBadge.js +2 -2
- package/dist/features/products/components/GroupMemberPicker.js +9 -9
- package/dist/features/products/components/GroupSettingsPanel.js +12 -12
- package/dist/features/products/components/InteractiveProductCard.js +2 -2
- package/dist/features/products/components/ListingBottomActions.js +4 -4
- package/dist/features/products/components/MakeOfferButton.js +13 -13
- package/dist/features/products/components/MarketplaceBundleCard.js +9 -9
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +9 -9
- package/dist/features/products/components/NonRefundableConsentModal.js +1 -1
- package/dist/features/products/components/PreOrderDetailView.js +1 -1
- package/dist/features/products/components/PrizeDrawBottomActions.js +1 -1
- package/dist/features/products/components/PrizeDrawCollage.js +4 -4
- package/dist/features/products/components/PrizeDrawDetailPageView.js +18 -18
- package/dist/features/products/components/PrizeDrawEntryActions.js +8 -8
- package/dist/features/products/components/PrizeDrawItemsEditor.js +2 -2
- package/dist/features/products/components/PrizeDrawWinnerMappingView.js +3 -3
- package/dist/features/products/components/PrizeDrawsIndexListing.js +14 -14
- package/dist/features/products/components/PrizeDrawsListingView.js +6 -6
- package/dist/features/products/components/PrizeDrawsSection.js +6 -6
- package/dist/features/products/components/PrizeRevealModal.js +3 -3
- package/dist/features/products/components/ProductCardMetadataSection.js +1 -1
- package/dist/features/products/components/ProductDetailActions.js +14 -14
- package/dist/features/products/components/ProductDetailPageView.js +28 -28
- package/dist/features/products/components/ProductDetailView.js +1 -1
- package/dist/features/products/components/ProductFeatureBadges.js +1 -1
- package/dist/features/products/components/ProductFeaturesSelector.js +5 -5
- package/dist/features/products/components/ProductFilters.d.ts +0 -9
- package/dist/features/products/components/ProductFilters.js +8 -8
- package/dist/features/products/components/ProductForm.d.ts +27 -1
- package/dist/features/products/components/ProductForm.js +41 -27
- package/dist/features/products/components/ProductGalleryClient.js +3 -3
- package/dist/features/products/components/ProductGradingTab.js +3 -3
- package/dist/features/products/components/ProductGrid.js +16 -16
- package/dist/features/products/components/ProductTabs.js +1 -1
- package/dist/features/products/components/ProductTabsShell.js +2 -2
- package/dist/features/products/components/ProductsIndexListing.js +33 -33
- package/dist/features/products/components/ProductsIndexPageView.js +12 -12
- package/dist/features/products/components/ProductsView.js +1 -1
- package/dist/features/products/components/RelatedItemsSection.js +2 -2
- package/dist/features/products/components/RelatedProducts.js +1 -1
- package/dist/features/products/components/RelatedProductsCarousel.js +4 -4
- package/dist/features/products/components/ShareButton.js +2 -2
- package/dist/features/products/components/ShowGroupSection.js +8 -8
- package/dist/features/products/components/SublistingCarouselSection.js +8 -8
- package/dist/features/products/components/SublistingCategorySelect.js +2 -2
- package/dist/features/products/components/index.js +42 -42
- package/dist/features/products/config/listing-type-listing-config.js +7 -7
- package/dist/features/products/constants/action-defs.js +1 -1
- package/dist/features/products/constants/listing-tabs.js +2 -2
- package/dist/features/products/constants/sieve.d.ts +0 -6
- package/dist/features/products/constants/sieve.js +37 -4
- package/dist/features/products/hooks/useAvailabilityScope.js +4 -4
- package/dist/features/products/hooks/useBrands.d.ts +1 -1
- package/dist/features/products/hooks/useBrands.js +2 -2
- package/dist/features/products/hooks/useProductDetail.js +2 -2
- package/dist/features/products/hooks/useProducts.js +5 -5
- package/dist/features/products/hooks/useRelatedProducts.js +4 -4
- package/dist/features/products/index.js +14 -14
- package/dist/features/products/repository/loadProductFeatures.js +2 -2
- package/dist/features/products/repository/product-features.repository.js +7 -7
- package/dist/features/products/repository/product-templates.repository.js +3 -3
- package/dist/features/products/repository/products.repository.d.ts +140 -1
- package/dist/features/products/repository/products.repository.js +616 -52
- package/dist/features/products/schemas/firestore.d.ts +91 -6
- package/dist/features/products/schemas/firestore.js +27 -1
- package/dist/features/products/schemas/index.d.ts +2 -2
- package/dist/features/products/schemas/index.js +3 -3
- package/dist/features/products/schemas/product-features.d.ts +140 -2
- package/dist/features/products/schemas/product-features.js +62 -1
- package/dist/features/products/schemas/product-features.validators.js +1 -1
- package/dist/features/products/server.js +4 -4
- package/dist/features/products/utils/listing-badge-variant.js +1 -1
- package/dist/features/products/utils/listing-type.js +1 -1
- package/dist/features/promotions/actions/coupon-actions.js +2 -2
- package/dist/features/promotions/actions/index.js +4 -4
- package/dist/features/promotions/actions/promotions-actions.js +3 -3
- package/dist/features/promotions/actions/seller-coupon-actions.js +5 -5
- package/dist/features/promotions/api/route.js +2 -2
- package/dist/features/promotions/columns/index.js +1 -1
- package/dist/features/promotions/components/CouponCard.js +4 -4
- package/dist/features/promotions/components/CouponHelpDetails.js +2 -2
- package/dist/features/promotions/components/CouponsIndexListing.js +8 -8
- package/dist/features/promotions/components/PromotionsView.js +1 -1
- package/dist/features/promotions/components/index.js +4 -4
- package/dist/features/promotions/hooks/useCouponValidate.js +2 -2
- package/dist/features/promotions/hooks/usePromotions.js +2 -2
- package/dist/features/promotions/index.js +7 -7
- package/dist/features/promotions/repository/claimed-coupons.repository.js +5 -5
- package/dist/features/promotions/repository/coupons.repository.js +15 -10
- package/dist/features/promotions/schemas/firestore.d.ts +44 -1
- package/dist/features/promotions/schemas/firestore.js +77 -3
- package/dist/features/promotions/schemas/index.d.ts +24 -24
- package/dist/features/promotions/schemas/index.js +2 -2
- package/dist/features/promotions/server.js +3 -3
- package/dist/features/reviews/actions/index.js +1 -1
- package/dist/features/reviews/actions/review-actions.js +9 -9
- package/dist/features/reviews/api/[id]/route.js +5 -5
- package/dist/features/reviews/columns/index.js +1 -1
- package/dist/features/reviews/components/ReviewDetailPageView.js +7 -7
- package/dist/features/reviews/components/ReviewDetailShell.js +11 -11
- package/dist/features/reviews/components/ReviewFilters.js +7 -7
- package/dist/features/reviews/components/ReviewModal.js +7 -7
- package/dist/features/reviews/components/ReviewSummary.js +3 -3
- package/dist/features/reviews/components/ReviewsIndexListing.js +1 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +5 -5
- package/dist/features/reviews/components/ReviewsList.js +9 -9
- package/dist/features/reviews/components/ReviewsListingPanel.js +10 -10
- package/dist/features/reviews/components/index.js +6 -6
- package/dist/features/reviews/hooks/useCreateReview.js +3 -3
- package/dist/features/reviews/hooks/useReviews.js +2 -2
- package/dist/features/reviews/index.js +7 -7
- package/dist/features/reviews/repository/reviews.repository.js +7 -7
- package/dist/features/reviews/schemas/firestore.js +1 -1
- package/dist/features/reviews/schemas/index.js +2 -2
- package/dist/features/reviews/server.js +3 -3
- package/dist/features/scams/actions/scam-actions.js +5 -5
- package/dist/features/scams/components/ScamAwarenessModal.js +5 -5
- package/dist/features/scams/components/ScamProfileView.js +8 -8
- package/dist/features/scams/components/ScamRegistryView.js +7 -7
- package/dist/features/scams/components/SellerTrustBadge.js +3 -3
- package/dist/features/scams/components/index.js +4 -4
- package/dist/features/scams/constants/scammer-status-display.js +1 -1
- package/dist/features/scams/repository/scammer.repository.js +10 -10
- package/dist/features/scams/schemas/index.d.ts +10 -10
- package/dist/features/scams/schemas/index.js +2 -2
- package/dist/features/scams/schemas/report-form.js +1 -1
- package/dist/features/search/action-index/repository.js +2 -2
- package/dist/features/search/actions/index.js +1 -1
- package/dist/features/search/actions/search-actions.js +2 -2
- package/dist/features/search/api/route.js +5 -5
- package/dist/features/search/columns/index.js +1 -1
- package/dist/features/search/components/Search.js +2 -2
- package/dist/features/search/components/SearchFiltersRow.js +1 -1
- package/dist/features/search/components/SearchResultsSection.js +1 -1
- package/dist/features/search/components/SearchView.js +1 -1
- package/dist/features/search/components/index.js +4 -4
- package/dist/features/search/hooks/useNavSuggestions.js +2 -2
- package/dist/features/search/hooks/useSearch.js +2 -2
- package/dist/features/search/index.js +7 -7
- package/dist/features/search/repository/search.repository.js +2 -2
- package/dist/features/search/server.js +4 -4
- package/dist/features/seller/actions/index.js +2 -2
- package/dist/features/seller/actions/offer-actions.js +14 -14
- package/dist/features/seller/actions/seller-actions.js +38 -23
- package/dist/features/seller/api/coupons/route.js +2 -2
- package/dist/features/seller/api/products/route.js +3 -3
- package/dist/features/seller/api/store/route.js +2 -2
- package/dist/features/seller/columns/index.js +1 -1
- package/dist/features/seller/components/BarcodeField.js +3 -3
- package/dist/features/seller/components/BrandInlineSelect.js +4 -4
- package/dist/features/seller/components/BulkStockModal.d.ts +16 -0
- package/dist/features/seller/components/BulkStockModal.js +46 -0
- package/dist/features/seller/components/CategoryChipPicker.js +2 -2
- package/dist/features/seller/components/CategoryInlineSelect.js +4 -4
- package/dist/features/seller/components/CouponInlineSelect.js +3 -3
- package/dist/features/seller/components/FulfillmentView.js +9 -9
- package/dist/features/seller/components/GroupInlineSelect.js +4 -4
- package/dist/features/seller/components/OfferPhaseTimeline.js +1 -1
- package/dist/features/seller/components/PhysicalLocationModal.js +22 -7
- package/dist/features/seller/components/PrintCenterView.d.ts +3 -2
- package/dist/features/seller/components/PrintCenterView.js +8 -7
- package/dist/features/seller/components/ProductInlineSelect.js +3 -3
- package/dist/features/seller/components/QuickProductForm.js +2 -2
- package/dist/features/seller/components/SellerAddressesView.js +9 -9
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +31 -21
- package/dist/features/seller/components/SellerAnalyticsView.js +1 -1
- package/dist/features/seller/components/SellerArtView.js +1 -1
- package/dist/features/seller/components/SellerBidsView.js +14 -14
- package/dist/features/seller/components/SellerBundlesView.js +7 -7
- package/dist/features/seller/components/SellerClassifiedView.js +1 -1
- package/dist/features/seller/components/SellerCouponEditorView.js +10 -10
- package/dist/features/seller/components/SellerCouponsView.js +7 -7
- package/dist/features/seller/components/SellerCreateProductView.js +1 -1
- package/dist/features/seller/components/SellerDashboardView.js +1 -1
- package/dist/features/seller/components/SellerDigitalCodesView.js +1 -1
- package/dist/features/seller/components/SellerEditProductView.js +1 -1
- package/dist/features/seller/components/SellerFeaturesView.js +8 -8
- package/dist/features/seller/components/SellerGoogleReviewsView.js +8 -8
- package/dist/features/seller/components/SellerGroupedListingsView.js +6 -6
- package/dist/features/seller/components/SellerGuideView.js +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +13 -13
- package/dist/features/seller/components/SellerLiveView.js +1 -1
- package/dist/features/seller/components/SellerOffersView.js +9 -9
- package/dist/features/seller/components/SellerOrdersView.js +28 -23
- package/dist/features/seller/components/SellerPayoutHistoryTable.js +1 -1
- package/dist/features/seller/components/SellerPayoutMethodsView.js +7 -7
- package/dist/features/seller/components/SellerPayoutRequestView.js +3 -3
- package/dist/features/seller/components/SellerPayoutSettingsView.js +46 -8
- package/dist/features/seller/components/SellerPayoutStats.js +1 -1
- package/dist/features/seller/components/SellerPayoutsView.js +11 -11
- package/dist/features/seller/components/SellerProductShell.d.ts +50 -2
- package/dist/features/seller/components/SellerProductShell.js +114 -22
- package/dist/features/seller/components/SellerProductsCards.js +5 -5
- package/dist/features/seller/components/SellerProductsFilterDrawer.d.ts +13 -1
- package/dist/features/seller/components/SellerProductsFilterDrawer.js +6 -6
- package/dist/features/seller/components/SellerProductsView.js +212 -33
- package/dist/features/seller/components/SellerReviewsView.js +12 -12
- package/dist/features/seller/components/SellerShippingConfigsView.js +9 -9
- package/dist/features/seller/components/SellerShippingView.js +7 -7
- package/dist/features/seller/components/SellerSidebar.js +9 -9
- package/dist/features/seller/components/SellerStickersView.js +1 -1
- package/dist/features/seller/components/SellerStoreCategoriesView.js +10 -10
- package/dist/features/seller/components/SellerStoreSetupView.js +1 -1
- package/dist/features/seller/components/SellerStoreView.js +1 -1
- package/dist/features/seller/components/SellerStorefrontView.js +5 -5
- package/dist/features/seller/components/SellerSupportView.js +6 -6
- package/dist/features/seller/components/SellersListView.js +1 -1
- package/dist/features/seller/components/SublistingInlineSelect.js +3 -3
- package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +2 -2
- package/dist/features/seller/components/analytics/SellerRevenueChart.js +2 -2
- package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
- package/dist/features/seller/components/analytics/index.js +3 -3
- package/dist/features/seller/components/index.js +67 -67
- package/dist/features/seller/hooks/useBecomeSeller.js +3 -3
- package/dist/features/seller/hooks/useSellerListingData.js +1 -1
- package/dist/features/seller/hooks/useSellerPayouts.js +2 -2
- package/dist/features/seller/hooks/useSellerStore.js +2 -2
- package/dist/features/seller/hooks/useSellerStorefront.js +2 -2
- package/dist/features/seller/index.js +11 -11
- package/dist/features/seller/repository/offer.repository.js +6 -6
- package/dist/features/seller/schemas/coupon-form.d.ts +20 -20
- package/dist/features/seller/schemas/coupon-form.js +1 -1
- package/dist/features/seller/schemas/firestore.js +1 -1
- package/dist/features/seller/schemas/index.js +1 -1
- package/dist/features/seller/schemas/order-forms.js +2 -2
- package/dist/features/seller/schemas/product-form.js +1 -1
- package/dist/features/seller/schemas/review-forms.js +1 -1
- package/dist/features/seller/server.js +5 -5
- package/dist/features/seller/types/index.d.ts +17 -0
- package/dist/features/seller/utils/product-draft-mapping.d.ts +13 -0
- package/dist/features/seller/utils/product-draft-mapping.js +17 -0
- package/dist/features/server-errors/repository/server-errors.repository.js +4 -4
- package/dist/features/server-errors/schemas/index.js +1 -1
- package/dist/features/shell/CommandPalette.js +2 -2
- package/dist/features/shell/FormShell.js +5 -5
- package/dist/features/shell/QuickFormDrawer.js +7 -7
- package/dist/features/shell/SectionForm.js +9 -9
- package/dist/features/shell/build-sections.js +11 -11
- package/dist/features/shell/field-groups/ImageFieldGroup.js +1 -1
- package/dist/features/shell/field-groups/SeoFieldGroup.js +3 -3
- package/dist/features/shell/field-groups/StatusFieldGroup.js +2 -2
- package/dist/features/shell/field-groups/TitleDescriptionGroup.js +3 -3
- package/dist/features/shell/field-groups/index.js +4 -4
- package/dist/features/shell/index.js +8 -8
- package/dist/features/shipments/components/AdminShipmentEditorView.js +13 -13
- package/dist/features/shipments/components/AdminShipmentLotItemsView.js +12 -12
- package/dist/features/shipments/components/AdminShipmentProjectionsView.js +5 -5
- package/dist/features/shipments/components/AdminShipmentsView.js +7 -7
- package/dist/features/shipments/components/ShipmentItemLinkModal.js +4 -4
- package/dist/features/shipments/hooks/useShipments.js +2 -2
- package/dist/features/shipments/index.js +7 -7
- package/dist/features/shipments/repository/shipment-items.repository.js +4 -4
- package/dist/features/shipments/repository/shipment-lots.repository.js +2 -2
- package/dist/features/shipments/repository/shipments.repository.js +4 -4
- package/dist/features/shipments/schemas/firestore.js +1 -1
- package/dist/features/shipments/schemas/index.js +2 -2
- package/dist/features/shipments/schemas/validation.d.ts +4 -4
- package/dist/features/shipments/schemas/validation.js +3 -3
- package/dist/features/shipments/utils/cost-allocation.js +1 -1
- package/dist/features/site-settings/components/ActionPermissionsManager.js +4 -4
- package/dist/features/site-settings/components/NavPermissionsManager.js +3 -3
- package/dist/features/site-settings/components/ThemeManagerView.js +2 -2
- package/dist/features/status-history/components/RecordStatusTimeline.js +1 -1
- package/dist/features/status-history/components/StatusTimeline.js +1 -1
- package/dist/features/status-history/index.js +2 -2
- package/dist/features/store-extensions/components/ReviewDecisionModal.js +10 -10
- package/dist/features/store-extensions/constants/alert-metrics.d.ts +86 -0
- package/dist/features/store-extensions/constants/alert-metrics.js +142 -0
- package/dist/features/store-extensions/index.js +16 -16
- package/dist/features/store-extensions/repository/rbac.repositories.js +2 -2
- package/dist/features/store-extensions/repository/store-extensions.repositories.js +3 -3
- package/dist/features/store-extensions/schemas/admin-notification-form.js +1 -1
- package/dist/features/store-extensions/schemas/analytics-forms.js +2 -2
- package/dist/features/store-extensions/schemas/custom-role-form.js +2 -2
- package/dist/features/store-extensions/schemas/firestore.d.ts +19 -1
- package/dist/features/store-extensions/schemas/google-config-form.d.ts +6 -6
- package/dist/features/store-extensions/schemas/google-config-form.js +1 -1
- package/dist/features/store-extensions/schemas/item-request-create-form.js +1 -1
- package/dist/features/store-extensions/schemas/listing-template-form.js +3 -3
- package/dist/features/store-extensions/schemas/moderation-review-form.js +1 -1
- package/dist/features/store-extensions/schemas/payout-method-form.js +1 -1
- package/dist/features/store-extensions/schemas/report-create-form.js +2 -2
- package/dist/features/store-extensions/schemas/report-review-form.js +1 -1
- package/dist/features/store-extensions/schemas/shipping-config-form.d.ts +10 -10
- package/dist/features/store-extensions/schemas/shipping-config-form.js +1 -1
- package/dist/features/store-extensions/schemas/store-category-form.js +1 -1
- package/dist/features/store-extensions/schemas/sublisting-category-form.js +1 -1
- package/dist/features/stores/actions/index.js +2 -2
- package/dist/features/stores/actions/store-address-actions.js +4 -4
- package/dist/features/stores/actions/store-query-actions.js +9 -9
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +5 -5
- package/dist/features/stores/api/[storeSlug]/products/route.js +5 -5
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +4 -4
- package/dist/features/stores/api/[storeSlug]/route.js +3 -3
- package/dist/features/stores/columns/index.js +1 -1
- package/dist/features/stores/components/InteractiveStoreCard.js +5 -5
- package/dist/features/stores/components/StoreAboutView.js +3 -3
- package/dist/features/stores/components/StoreAddressSelectorCreate.js +2 -2
- package/dist/features/stores/components/StoreArtStickersPageView.js +6 -6
- package/dist/features/stores/components/StoreAuctionsListing.js +15 -15
- package/dist/features/stores/components/StoreAuctionsPageView.js +5 -5
- package/dist/features/stores/components/StoreAuctionsView.js +1 -1
- package/dist/features/stores/components/StoreBundlesPageView.js +5 -5
- package/dist/features/stores/components/StoreCapabilitiesGuideView.js +2 -2
- package/dist/features/stores/components/StoreClassifiedsListing.js +12 -12
- package/dist/features/stores/components/StoreClassifiedsPageView.js +5 -5
- package/dist/features/stores/components/StoreDetailLayoutView.js +12 -12
- package/dist/features/stores/components/StoreDigitalCodesListing.js +12 -12
- package/dist/features/stores/components/StoreDigitalCodesPageView.js +5 -5
- package/dist/features/stores/components/StoreFilters.js +4 -4
- package/dist/features/stores/components/StoreFinanceGuideView.js +2 -2
- package/dist/features/stores/components/StoreGuideHubView.js +2 -2
- package/dist/features/stores/components/StoreHeader.js +6 -6
- package/dist/features/stores/components/StoreListingsGuideView.js +2 -2
- package/dist/features/stores/components/StoreLiveItemsListing.js +12 -12
- package/dist/features/stores/components/StoreLiveItemsPageView.js +5 -5
- package/dist/features/stores/components/StoreNavTabs.js +2 -2
- package/dist/features/stores/components/StoreOrdersGuideView.js +2 -2
- package/dist/features/stores/components/StorePreOrdersListing.js +11 -11
- package/dist/features/stores/components/StorePreOrdersPageView.js +5 -5
- package/dist/features/stores/components/StorePrizeDrawsPageView.js +5 -5
- package/dist/features/stores/components/StoreProductsListing.js +15 -15
- package/dist/features/stores/components/StoreProductsPageView.js +5 -5
- package/dist/features/stores/components/StoreProductsView.js +1 -1
- package/dist/features/stores/components/StoreReviewsListing.js +1 -1
- package/dist/features/stores/components/StoreReviewsPageView.js +1 -1
- package/dist/features/stores/components/StoreReviewsView.js +1 -1
- package/dist/features/stores/components/StoreScopedSearch.js +3 -3
- package/dist/features/stores/components/StoreSettingsGuideView.js +2 -2
- package/dist/features/stores/components/StoreWhatsAppGuideView.js +2 -2
- package/dist/features/stores/components/StoresIndexListing.js +12 -12
- package/dist/features/stores/components/StoresIndexPageView.js +7 -7
- package/dist/features/stores/components/index.js +23 -23
- package/dist/features/stores/hooks/useStoreAddressSelector.js +2 -2
- package/dist/features/stores/hooks/useStores.js +2 -2
- package/dist/features/stores/index.js +7 -7
- package/dist/features/stores/repository/store.repository.js +9 -9
- package/dist/features/stores/schemas/firestore.d.ts +117 -2
- package/dist/features/stores/schemas/firestore.js +2 -2
- package/dist/features/stores/schemas/index.d.ts +30 -30
- package/dist/features/stores/schemas/index.js +3 -3
- package/dist/features/stores/server.js +6 -6
- package/dist/features/stores/types/index.d.ts +10 -0
- package/dist/features/support/repository/support.repository.js +11 -11
- package/dist/features/support/schemas/index.d.ts +2 -2
- package/dist/features/support/schemas/index.js +2 -2
- package/dist/features/support/schemas/ticket-create-form.js +2 -2
- package/dist/features/tax-codes/repository/tax-codes.repository.d.ts +55 -0
- package/dist/features/tax-codes/repository/tax-codes.repository.js +131 -0
- package/dist/features/tax-codes/schemas/firestore.d.ts +125 -0
- package/dist/features/tax-codes/schemas/firestore.js +82 -0
- package/dist/features/tax-codes/schemas/tax-code-form.d.ts +63 -0
- package/dist/features/tax-codes/schemas/tax-code-form.js +152 -0
- package/dist/features/tax-codes/schemas/tax-codes.validators.d.ts +107 -0
- package/dist/features/tax-codes/schemas/tax-codes.validators.js +85 -0
- package/dist/features/tester/actions/checklist-item-actions.d.ts +8 -8
- package/dist/features/tester/actions/checklist-item-actions.js +2 -2
- package/dist/features/tester/actions/index.d.ts +0 -1
- package/dist/features/tester/actions/index.js +1 -2
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +6 -6
- package/dist/features/tester/components/AdminTesterFeedbackListView.js +10 -10
- package/dist/features/tester/components/AdminTesterFeedbackReportView.js +4 -4
- package/dist/features/tester/components/AdminTesterFeedbackView.js +8 -8
- package/dist/features/tester/components/TesterChecklistStepRow.js +4 -4
- package/dist/features/tester/components/TesterFeedbackChart.js +2 -2
- package/dist/features/tester/components/index.d.ts +0 -4
- package/dist/features/tester/components/index.js +6 -8
- package/dist/features/tester/index.js +2 -2
- package/dist/features/tester/repository/index.js +2 -2
- package/dist/features/tester/repository/tester-checklist-item.repository.d.ts +1 -20
- package/dist/features/tester/repository/tester-checklist-item.repository.js +4 -56
- package/dist/features/tester/repository/tester-checklist-response.repository.js +3 -3
- package/dist/features/tester/schemas/checklist-item-form.d.ts +4 -4
- package/dist/features/tester/schemas/checklist-item-form.js +1 -1
- package/dist/features/tester/schemas/firestore.d.ts +0 -6
- package/dist/features/tester/schemas/firestore.js +1 -1
- package/dist/features/tester/schemas/index.js +1 -1
- package/dist/features/tester/seed-data/authored/admin__admin-detail-round-trips.js +3 -3
- package/dist/features/tester/seed-data/authored/admin__site-system.js +4 -5
- package/dist/features/tester/seed-data/authored/content-discovery__category-counts-and-rollup.js +2 -2
- package/dist/features/tester/seed-data/authored/index.js +118 -120
- package/dist/features/tester/seed-data/authored/page-wiring__reachability.js +0 -19
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +1 -1
- package/dist/features/tester/seed-data/index.js +2 -2
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +12 -31
- package/dist/features/tester/server.js +3 -3
- package/dist/features/whatsapp-bot/api/send-status/route.js +2 -2
- package/dist/features/whatsapp-bot/api/webhook/route.js +2 -2
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +12 -12
- package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +1 -1
- package/dist/features/whatsapp-bot/components/index.js +2 -2
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +3 -3
- package/dist/features/whatsapp-bot/index.js +3 -3
- package/dist/features/whatsapp-bot/server.js +2 -2
- package/dist/features/wishlist/actions/index.js +1 -1
- package/dist/features/wishlist/actions/wishlist-actions.js +4 -4
- package/dist/features/wishlist/columns/index.js +1 -1
- package/dist/features/wishlist/components/WishlistCapWatcher.js +2 -2
- package/dist/features/wishlist/components/WishlistHeartButton.js +2 -2
- package/dist/features/wishlist/components/WishlistPage.js +3 -3
- package/dist/features/wishlist/components/WishlistView.js +3 -3
- package/dist/features/wishlist/components/index.js +4 -4
- package/dist/features/wishlist/hooks/useGuestWishlist.js +1 -1
- package/dist/features/wishlist/hooks/useUserWishlist.js +2 -2
- package/dist/features/wishlist/hooks/useWishlist.js +2 -2
- package/dist/features/wishlist/hooks/useWishlistCount.js +8 -8
- package/dist/features/wishlist/hooks/useWishlistToggle.js +3 -3
- package/dist/features/wishlist/hooks/useWishlistWithGuest.js +2 -2
- package/dist/features/wishlist/index.js +12 -12
- package/dist/features/wishlist/repository/user-wishlist.repository.js +4 -4
- package/dist/features/wishlist/server.js +2 -2
- package/dist/features/wishlist/utils/guest-wishlist.js +1 -1
- package/dist/hand-mode/index.js +1 -1
- package/dist/http/api-handler.js +8 -8
- package/dist/http/index.js +2 -2
- package/dist/http/retry.js +1 -1
- package/dist/index.d.ts +41 -10
- package/dist/index.js +2047 -1964
- package/dist/monitoring/browser.js +5 -5
- package/dist/monitoring/cache-metrics.js +1 -1
- package/dist/monitoring/client-logger.js +3 -3
- package/dist/monitoring/index.js +6 -6
- package/dist/monitoring/runtime.js +1 -1
- package/dist/monitoring/server-logger.js +3 -3
- package/dist/next/ErrorBoundary.js +3 -3
- package/dist/next/api/api-response.js +2 -2
- package/dist/next/api/apiHandler.js +3 -3
- package/dist/next/api/parseJsonBody.js +1 -1
- package/dist/next/api/routeHandler.js +9 -9
- package/dist/next/cache-middleware.js +1 -1
- package/dist/next/components/ErrorView.js +3 -3
- package/dist/next/components/GlobalError.js +23 -2
- package/dist/next/components/NotFoundView.js +4 -4
- package/dist/next/components/UnauthorizedView.js +4 -4
- package/dist/next/index.js +21 -21
- package/dist/next/middleware/chain.js +3 -3
- package/dist/next/middleware/index.js +2 -2
- package/dist/next/middleware/pii-scrubber.js +3 -3
- package/dist/next/request-helpers.js +1 -1
- package/dist/next/routing/route-map.d.ts +6 -4
- package/dist/next/routing/route-map.js +10 -2
- package/dist/providers/auth-firebase/helpers.js +5 -5
- package/dist/providers/auth-firebase/index.js +3 -3
- package/dist/providers/auth-firebase/provider.js +2 -2
- package/dist/providers/auth-firebase/session.js +2 -2
- package/dist/providers/db-firebase/admin-app-lite.js +1 -1
- package/dist/providers/db-firebase/admin-auth-lite.js +1 -1
- package/dist/providers/db-firebase/admin-storage-lite.js +1 -1
- package/dist/providers/db-firebase/admin.js +2 -2
- package/dist/providers/db-firebase/base.js +2 -2
- package/dist/providers/db-firebase/base.repository.d.ts +54 -0
- package/dist/providers/db-firebase/base.repository.js +119 -7
- package/dist/providers/db-firebase/browser-stub.js +2 -2
- package/dist/providers/db-firebase/index.js +12 -12
- package/dist/providers/db-firebase/sieve.js +4 -4
- package/dist/providers/email-resend/index.js +1 -1
- package/dist/providers/firebase-client/index.js +2 -2
- package/dist/providers/firebase-client/realtime.js +1 -1
- package/dist/providers/payment-manual/index.js +1 -1
- package/dist/providers/payment-phonepe/index.js +3 -3
- package/dist/providers/shipping-manual/index.js +1 -1
- package/dist/providers/storage-firebase/client.js +2 -2
- package/dist/providers/storage-firebase/index.js +1 -1
- package/dist/providers/storage-firebase/provider.js +4 -4
- package/dist/providers.js +12 -12
- package/dist/react/ErrorBoundary.js +3 -3
- package/dist/react/contexts/SessionContext.js +6 -6
- package/dist/react/contexts/index.js +1 -1
- package/dist/react/hooks/use-action-dispatch.js +5 -5
- package/dist/react/hooks/use-panel-url-sync.js +1 -1
- package/dist/react/hooks/useAuthGate.js +3 -3
- package/dist/react/hooks/useBreakpoint.js +1 -1
- package/dist/react/hooks/useBulkAction.js +1 -1
- package/dist/react/hooks/useCamera.js +1 -1
- package/dist/react/hooks/useCanSeePrices.js +1 -1
- package/dist/react/hooks/useEntityDelete.js +2 -2
- package/dist/react/hooks/useFormStatePreservation.js +1 -1
- package/dist/react/hooks/useInlineRowEdit.js +1 -1
- package/dist/react/hooks/useListingTypeFlags.js +2 -2
- package/dist/react/hooks/useMessage.js +1 -1
- package/dist/react/hooks/usePendingFilters.js +1 -1
- package/dist/react/hooks/usePendingTable.js +2 -2
- package/dist/react/hooks/useRealtimeEvent.js +4 -4
- package/dist/react/hooks/useTabParam.js +2 -2
- package/dist/react/hooks/useUnsavedChanges.js +1 -1
- package/dist/react/hooks/useUrlTable.js +2 -2
- package/dist/react/index.js +28 -28
- package/dist/repositories/index.d.ts +2 -1
- package/dist/repositories/index.js +55 -50
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/registry.d.ts +568 -62
- package/dist/schemas/registry.js +44 -44
- package/dist/security/authorization.js +3 -3
- package/dist/security/browser.js +4 -4
- package/dist/security/index.js +8 -8
- package/dist/security/pii-encrypt.js +3 -3
- package/dist/security/pii-redact.js +1 -1
- package/dist/security/rate-limit.js +1 -1
- package/dist/security/settings-encryption.js +1 -1
- package/dist/seed/_helpers/brand-rows.d.ts +35 -0
- package/dist/seed/_helpers/brand-rows.js +576 -0
- package/dist/seed/_helpers/category-content.d.ts +39 -0
- package/dist/seed/_helpers/category-content.js +634 -0
- package/dist/seed/_helpers/category-forest.d.ts +2 -0
- package/dist/seed/_helpers/category-forest.js +585 -243
- package/dist/seed/_helpers/category-models.d.ts +5 -0
- package/dist/seed/_helpers/category-models.js +1364 -0
- package/dist/seed/_helpers/category-tree.js +17 -1
- package/dist/seed/_helpers/character-features.d.ts +10 -0
- package/dist/seed/_helpers/character-features.js +118 -0
- package/dist/seed/_helpers/media.js +1 -1
- package/dist/seed/_helpers/product-search-txt.js +1 -1
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +10 -0
- package/dist/seed/_helpers/search-txt-wrappers.js +12 -1
- package/dist/seed/blog-posts-seed-data.js +2 -2
- package/dist/seed/carousel-slides-seed-data.js +2 -2
- package/dist/seed/cart-seed-data.js +2 -2
- package/dist/seed/categories-seed-data.js +151 -173
- package/dist/seed/claimed-coupons-seed-data.js +1 -1
- package/dist/seed/coupons-seed-data.js +2 -2
- package/dist/seed/defaults/categories.js +1 -1
- package/dist/seed/defaults/faqs.js +2 -2
- package/dist/seed/defaults/homepage-sections.js +2 -2
- package/dist/seed/events-seed-data.js +3 -3
- package/dist/seed/factories/address.factory.js +1 -1
- package/dist/seed/factories/carousel.factory.js +1 -1
- package/dist/seed/factories/order.factory.js +1 -1
- package/dist/seed/factories/product.factory.js +2 -2
- package/dist/seed/factories/store.factory.js +1 -1
- package/dist/seed/factories/user.factory.js +2 -2
- package/dist/seed/faq-seed-data.js +532 -3
- package/dist/seed/grouped-listings-seed-data.js +1 -1
- package/dist/seed/homepage-sections-seed-data.js +2 -2
- package/dist/seed/index.d.ts +2 -0
- package/dist/seed/index.js +75 -67
- package/dist/seed/manifest.d.ts +1 -1
- package/dist/seed/manifest.js +47 -42
- package/dist/seed/notifications-seed-data.js +3 -3
- package/dist/seed/offers-seed-data.js +2 -2
- package/dist/seed/orders-seed-data.js +2 -2
- package/dist/seed/payouts-seed-data.js +2 -2
- package/dist/seed/product-features-seed-data.d.ts +1 -8
- package/dist/seed/product-features-seed-data.js +358 -154
- package/dist/seed/products-art-seed-data.js +20 -8
- package/dist/seed/products-auctions-seed-data.js +10 -10
- package/dist/seed/products-classifieds-seed-data.js +22 -12
- package/dist/seed/products-digital-codes-seed-data.js +17 -17
- package/dist/seed/products-live-items-seed-data.js +5 -5
- package/dist/seed/products-preorders-seed-data.js +12 -12
- package/dist/seed/products-prize-draws-seed-data.js +30 -13
- package/dist/seed/products-standard-seed-data.js +14 -64
- package/dist/seed/products-stickers-seed-data.js +10 -10
- package/dist/seed/reviews-seed-data.js +2 -2
- package/dist/seed/runner.js +2 -2
- package/dist/seed/scammers-seed-data.js +3 -3
- package/dist/seed/seed-market-config.js +2 -2
- package/dist/seed/seed-purpose.d.ts +200 -0
- package/dist/seed/seed-purpose.js +265 -0
- package/dist/seed/sessions-seed-data.js +2 -2
- package/dist/seed/shipments-seed-data.js +1 -1
- package/dist/seed/site-settings-seed-data.js +33 -3
- package/dist/seed/store-addresses-seed-data.js +1 -1
- package/dist/seed/store-extensions-seed-data.js +11 -5
- package/dist/seed/stores-seed-data.js +3 -3
- package/dist/seed/support-tickets-seed-data.js +2 -2
- package/dist/seed/tax-codes-seed-data.d.ts +34 -0
- package/dist/seed/tax-codes-seed-data.js +100 -0
- package/dist/seed/test-data-ttl.d.ts +29 -0
- package/dist/seed/test-data-ttl.js +31 -0
- package/dist/seed/test-utils.js +8 -8
- package/dist/seed/users-seed-data.js +4 -4
- package/dist/seo/index.js +2 -2
- package/dist/seo/json-ld.d.ts +62 -0
- package/dist/seo/json-ld.js +78 -2
- package/dist/seo/metadata.js +1 -1
- package/dist/server-entry.d.ts +1 -1
- package/dist/server-entry.js +83 -78
- package/dist/server.d.ts +14 -3
- package/dist/server.js +563 -544
- package/dist/styles.css +807 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/theme/index.js +2 -2
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/themes/cobalt-night.js +1 -1
- package/dist/tokens/themes/index.js +5 -5
- package/dist/tokens/themes/sunset.js +1 -1
- package/dist/ui/DataTable.js +12 -12
- package/dist/ui/columns/cell-renderers.js +7 -7
- package/dist/ui/columns/column-renderers.js +2 -2
- package/dist/ui/columns/index.js +3 -3
- package/dist/ui/components/Accordion.js +4 -4
- package/dist/ui/components/ActionRow.js +1 -1
- package/dist/ui/components/ActiveFilterChips.js +2 -2
- package/dist/ui/components/Alert.js +2 -2
- package/dist/ui/components/Anchor.js +1 -1
- package/dist/ui/components/Avatar.js +1 -1
- package/dist/ui/components/AvatarDisplay.js +1 -1
- package/dist/ui/components/Badge.js +1 -1
- package/dist/ui/components/BaseListingCard.js +2 -2
- package/dist/ui/components/Breadcrumb.js +3 -3
- package/dist/ui/components/BulkActionBar.js +2 -2
- package/dist/ui/components/Button.js +4 -4
- package/dist/ui/components/Card.js +2 -2
- package/dist/ui/components/Checkbox.js +1 -1
- package/dist/ui/components/ClaimCouponButton.js +6 -6
- package/dist/ui/components/CollapsibleSection.js +5 -5
- package/dist/ui/components/ConfirmDeleteModal.js +3 -3
- package/dist/ui/components/CountdownDisplay.js +2 -2
- package/dist/ui/components/DateInput.js +1 -1
- package/dist/ui/components/DetailPageGallery.js +2 -2
- package/dist/ui/components/DetailPageHero.js +3 -3
- package/dist/ui/components/DetailPageTabs.js +2 -2
- package/dist/ui/components/DetailViewShell.js +2 -2
- package/dist/ui/components/Details.js +1 -1
- package/dist/ui/components/Div.js +1 -1
- package/dist/ui/components/Divider.js +1 -1
- package/dist/ui/components/Drawer.js +4 -4
- package/dist/ui/components/EmptyState.js +4 -4
- package/dist/ui/components/FilePickerButton.js +1 -1
- package/dist/ui/components/FilterChipGroup.js +2 -2
- package/dist/ui/components/FilterDrawer.js +4 -4
- package/dist/ui/components/FlowDiagram.js +2 -2
- package/dist/ui/components/Form.js +4 -4
- package/dist/ui/components/FormActionBar.js +3 -3
- package/dist/ui/components/FormField.js +24 -6
- package/dist/ui/components/GatedPrice.js +6 -6
- package/dist/ui/components/HandModeRow.js +2 -2
- package/dist/ui/components/Icon.js +1 -1
- package/dist/ui/components/IconButton.js +1 -1
- package/dist/ui/components/ImageGallery.js +6 -6
- package/dist/ui/components/ImageLightbox.js +5 -5
- package/dist/ui/components/Input.js +2 -2
- package/dist/ui/components/ItemRow.js +3 -3
- package/dist/ui/components/Layout.js +1 -1
- package/dist/ui/components/ListingFilterDrawer.js +4 -4
- package/dist/ui/components/ListingLayout.js +9 -9
- package/dist/ui/components/ListingToolbar.js +5 -5
- package/dist/ui/components/LoginRequiredModal.js +5 -5
- package/dist/ui/components/Menu.js +1 -1
- package/dist/ui/components/Modal.js +6 -6
- package/dist/ui/components/Motion.js +1 -1
- package/dist/ui/components/NavigationLoader.js +3 -3
- package/dist/ui/components/OtpInput.js +1 -1
- package/dist/ui/components/PageLoader.js +4 -4
- package/dist/ui/components/PaginatedSelect.d.ts +14 -0
- package/dist/ui/components/PaginatedSelect.js +0 -0
- package/dist/ui/components/PaginatedSelect.style.css +40 -0
- package/dist/ui/components/Pagination.js +2 -2
- package/dist/ui/components/PasswordStrengthIndicator.js +3 -3
- package/dist/ui/components/PriceDisplay.js +1 -1
- package/dist/ui/components/Progress.js +1 -1
- package/dist/ui/components/QuantityStepper.js +3 -3
- package/dist/ui/components/QuickCreateModal.js +5 -5
- package/dist/ui/components/Radio.js +1 -1
- package/dist/ui/components/RatingDisplay.js +2 -2
- package/dist/ui/components/RecordDetailModal.js +2 -2
- package/dist/ui/components/RoleBadge.js +1 -1
- package/dist/ui/components/RowActionMenu.js +3 -3
- package/dist/ui/components/Select.js +2 -2
- package/dist/ui/components/Semantic.js +1 -1
- package/dist/ui/components/SettingsSection.js +2 -2
- package/dist/ui/components/SideDrawer.js +9 -9
- package/dist/ui/components/SideModal.js +4 -4
- package/dist/ui/components/SiteLogo.js +1 -1
- package/dist/ui/components/SiteMark.js +1 -1
- package/dist/ui/components/SkipToMain.js +1 -1
- package/dist/ui/components/Slider.js +1 -1
- package/dist/ui/components/SlottedListingView.js +2 -2
- package/dist/ui/components/SortDropdown.js +3 -3
- package/dist/ui/components/StackedViewShell.js +2 -2
- package/dist/ui/components/StarRating.js +1 -1
- package/dist/ui/components/StatsGrid.js +3 -3
- package/dist/ui/components/StatusBadge.js +1 -1
- package/dist/ui/components/StepperNav.js +3 -3
- package/dist/ui/components/StickyToolbar.js +1 -1
- package/dist/ui/components/SummaryCard.js +4 -4
- package/dist/ui/components/TabBarShell.js +3 -3
- package/dist/ui/components/TablePagination.js +4 -4
- package/dist/ui/components/Tabs.js +1 -1
- package/dist/ui/components/TagInput.js +1 -1
- package/dist/ui/components/TextLink.js +2 -2
- package/dist/ui/components/Textarea.js +1 -1
- package/dist/ui/components/Toast.js +3 -3
- package/dist/ui/components/Toggle.js +1 -1
- package/dist/ui/components/Typography.js +2 -2
- package/dist/ui/components/UnsavedChangesModal.js +5 -5
- package/dist/ui/components/VacationBanner.js +3 -3
- package/dist/ui/components/ViewToggle.js +2 -2
- package/dist/ui/components/index.style.css +4 -0
- package/dist/ui/components/surface-tokens.js +1 -1
- package/dist/ui/components/toolbar-collapse.js +1 -1
- package/dist/ui/forms/ColorPickerField.js +2 -2
- package/dist/ui/forms/FieldCheckbox.js +3 -3
- package/dist/ui/forms/FieldInput.js +3 -3
- package/dist/ui/forms/FieldSelect.js +3 -3
- package/dist/ui/forms/FieldTextarea.js +3 -3
- package/dist/ui/forms/FormErrorList.js +2 -2
- package/dist/ui/forms/FormErrorSummary.js +2 -2
- package/dist/ui/forms/FormShell.js +1 -1
- package/dist/ui/forms/index.js +9 -9
- package/dist/ui/index.d.ts +0 -2
- package/dist/ui/index.js +147 -127
- package/dist/ui/rich-text/RichText.js +2 -2
- package/dist/ui/rich-text/index.js +1 -1
- package/dist/utils/action-response.js +2 -2
- package/dist/utils/action-result.js +1 -1
- package/dist/utils/auth-error.js +1 -1
- package/dist/utils/client.js +1 -1
- package/dist/utils/date.formatter.js +1 -1
- package/dist/utils/id-generators.js +2 -2
- package/dist/utils/index.js +19 -19
- package/dist/utils/media-field.js +1 -1
- package/dist/utils/media-url.js +2 -2
- package/dist/utils/number.formatter.js +1 -1
- package/dist/utils/physical-location.d.ts +91 -0
- package/dist/utils/physical-location.js +134 -0
- package/dist/utils/safe-fire-forget.js +2 -2
- package/dist/utils/search-txt-builders.d.ts +20 -0
- package/dist/utils/search-txt-builders.js +97 -1
- package/dist/utils/search-txt-query.d.ts +54 -6
- package/dist/utils/search-txt-query.js +79 -11
- package/dist/utils/sieve-builder.js +1 -1
- package/dist/utils/string.formatter.js +1 -1
- package/dist/validation/ZodSetup.js +1 -1
- package/dist/validation/index.js +8 -8
- package/dist/validation/phone.validator.js +1 -1
- package/dist/validation/schemas.d.ts +12 -12
- package/dist/validation/schemas.js +1 -1
- package/dist/validation/url.validator.js +1 -1
- package/dist/values/index.js +1 -1
- package/dist/vendor/react-advanced-cropper.css +406 -0
- package/package.json +80 -4
- package/scripts/copy-assets.mjs +53 -1
- package/scripts/seed-cli.mjs +172 -8
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.d.ts +0 -2
- package/dist/_internal/server/jobs/handlers/testerSandboxCleanup.js +0 -2
- package/dist/features/tester/actions/leaderboard-actions.d.ts +0 -3
- package/dist/features/tester/actions/leaderboard-actions.js +0 -5
- package/dist/features/tester/components/BugHunterLeaderboardView.d.ts +0 -23
- package/dist/features/tester/components/BugHunterLeaderboardView.js +0 -18
- package/dist/features/tester/components/TesterHubView.d.ts +0 -5
- package/dist/features/tester/components/TesterHubView.js +0 -110
- package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.d.ts +0 -2
- package/dist/features/tester/seed-data/authored/public-pages__bug-hunters.js +0 -78
- package/dist/features/tester/seed-data/tester-ttl.d.ts +0 -4
- package/dist/features/tester/seed-data/tester-ttl.js +0 -6
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two buyer protections — C5e.
|
|
3
|
+
*
|
|
4
|
+
* ## 🛑 What was wrong, and why the fix is a claim path rather than a deletion
|
|
5
|
+
*
|
|
6
|
+
* `computeShipmentProtectionFee` is real: `max(₹30, 2%)`, opt-in per store,
|
|
7
|
+
* written to the order as `shipmentProtectionAddon` / `shipmentProtectionFee`,
|
|
8
|
+
* rendered as a "Protected" chip. And `OrderAddonBadges.tsx` claims the flag
|
|
9
|
+
* *"changes how a loss claim is handled"* — while **no refund, dispute or RMA
|
|
10
|
+
* code reads it anywhere**. A buyer paid 2% for a promise the system could not
|
|
11
|
+
* keep.
|
|
12
|
+
*
|
|
13
|
+
* An earlier revision of the plan concluded "delete it". That was wrong. The
|
|
14
|
+
* diagnosis was right — the fee was real and the claim path did not exist —
|
|
15
|
+
* but the missing half is the claim, and **escrow is the pot it pays from**.
|
|
16
|
+
* Holding the buyer's funds until delivery is what turns the badge from a
|
|
17
|
+
* promise into a mechanism.
|
|
18
|
+
*
|
|
19
|
+
* ## TWO protections, because they fail independently
|
|
20
|
+
*
|
|
21
|
+
* SHIPPING loss or damage IN TRANSIT. We are the carrier's counterparty
|
|
22
|
+
* under escrow, so the carrier claim is ours to pursue and the
|
|
23
|
+
* buyer never argues with a courier.
|
|
24
|
+
* SALE the item itself — not as described, wrong item, item issues.
|
|
25
|
+
* Branches the return flow, skipping the seller-fault
|
|
26
|
+
* determination.
|
|
27
|
+
*
|
|
28
|
+
* A parcel that arrives intact containing the wrong bey is a SALE problem, not
|
|
29
|
+
* a shipping one. A single blended "protection" would charge once and have to
|
|
30
|
+
* answer both — and, worse, would have to be wholly offered or wholly withheld
|
|
31
|
+
* on a final-sale item, where the right answers differ (see below).
|
|
32
|
+
*/
|
|
33
|
+
/** Which protection. Deliberately not a boolean pair in the signatures. */
|
|
34
|
+
export type ProtectionKind = "shipping" | "sale";
|
|
35
|
+
export declare const PROTECTION_KINDS: readonly ProtectionKind[];
|
|
36
|
+
/** Why a protection is not on offer. Rendered to the buyer, so it is copy. */
|
|
37
|
+
export type ProtectionUnavailableReason = "platform-disabled" | "seller-not-supported" | "final-sale";
|
|
38
|
+
export type ProtectionAvailability = {
|
|
39
|
+
available: true;
|
|
40
|
+
} | {
|
|
41
|
+
available: false;
|
|
42
|
+
reason: ProtectionUnavailableReason;
|
|
43
|
+
};
|
|
44
|
+
export interface ProtectionTierInput {
|
|
45
|
+
/** TIER 1 — admin, platform-wide. `commissions.*FeeEnabled`. Default TRUE. */
|
|
46
|
+
platformEnabled: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* TIER 2 — the seller, for their own orders. Default FALSE.
|
|
49
|
+
*
|
|
50
|
+
* 🛑 The two defaults are opposite ON PURPOSE and it is not an
|
|
51
|
+
* inconsistency. The admin flag answers "do we offer this product at all" —
|
|
52
|
+
* we built it, so `true`. The seller flag answers "has this seller agreed to
|
|
53
|
+
* be held to it" — they have not been asked, so `false`. Defaulting the
|
|
54
|
+
* seller flag to `true` would enrol every existing seller in a liability
|
|
55
|
+
* they never accepted, which is a worse failure than a day-one page full of
|
|
56
|
+
* risk notices.
|
|
57
|
+
*/
|
|
58
|
+
sellerSupports: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* TIER 3 — the item. `finalSale` from the ORDER ITEM's snapshot at claim
|
|
61
|
+
* time, or the product at purchase time.
|
|
62
|
+
*/
|
|
63
|
+
finalSale: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Is this protection on offer, and if not, why.
|
|
67
|
+
*
|
|
68
|
+
* 🛑 `finalSale` is checked for SALE protection only, and the asymmetry is the
|
|
69
|
+
* strongest argument for keeping the two separate:
|
|
70
|
+
*
|
|
71
|
+
* final sale + sale protection INELIGIBLE. "No returns" and
|
|
72
|
+
* "no-questions-asked refund" are a plain
|
|
73
|
+
* contradiction, and `finalSale` exists
|
|
74
|
+
* precisely so a seller cannot be made to
|
|
75
|
+
* take an item back.
|
|
76
|
+
* final sale + shipping protection UNAFFECTED. A parcel lost in transit was
|
|
77
|
+
* never delivered, so there is nothing for
|
|
78
|
+
* "final" to be final about — the buyer
|
|
79
|
+
* did not receive the item they accepted
|
|
80
|
+
* as non-returnable.
|
|
81
|
+
*
|
|
82
|
+
* Order of checks is the order of ownership: platform, then seller, then item.
|
|
83
|
+
* That matters because the REASON is rendered, and "we do not offer this" is a
|
|
84
|
+
* different sentence from "this seller does not offer this".
|
|
85
|
+
*/
|
|
86
|
+
export declare function protectionAvailability(kind: ProtectionKind, input: ProtectionTierInput): ProtectionAvailability;
|
|
87
|
+
/**
|
|
88
|
+
* Whether to show the buyer a pre-purchase RISK NOTICE.
|
|
89
|
+
*
|
|
90
|
+
* 🛑 Absence must read as "not supported", never as "unknown". A tri-state
|
|
91
|
+
* where `undefined` renders neither a badge nor a notice is the worst of the
|
|
92
|
+
* three outcomes: the buyer gets no signal at all and cannot tell a seller who
|
|
93
|
+
* declined from one who has not been asked.
|
|
94
|
+
*
|
|
95
|
+
* `platform-disabled` is the one reason that shows NOTHING — if we do not
|
|
96
|
+
* offer the product, there is nothing to disclose about this seller, and a
|
|
97
|
+
* notice would be us advertising a gap we created.
|
|
98
|
+
*/
|
|
99
|
+
export declare function showsRiskNotice(a: ProtectionAvailability): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Whether to show the seller's safety BADGE.
|
|
102
|
+
*
|
|
103
|
+
* 🛑 Gated on the claim path existing, not merely on the flag. A badge for a
|
|
104
|
+
* promise the platform cannot keep is the dead `OrderAddonBadges` tooltip one
|
|
105
|
+
* level up — a seller opting into something we do not honour.
|
|
106
|
+
*/
|
|
107
|
+
export declare function showsSafetyBadge(a: ProtectionAvailability): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* 🛑 The two badges must never appear together on one card.
|
|
110
|
+
*
|
|
111
|
+
* "Final sale" beside "Sale protected" is incoherent to a buyer and they are
|
|
112
|
+
* right. A final-sale listing shows the final-sale badge and, when the seller
|
|
113
|
+
* supports it, the SHIPPING-protection badge only.
|
|
114
|
+
*/
|
|
115
|
+
export declare function badgesFor(input: ProtectionTierInput): {
|
|
116
|
+
finalSale: boolean;
|
|
117
|
+
shippingProtected: boolean;
|
|
118
|
+
saleProtected: boolean;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Both protection fees for one order group, with all three tiers applied.
|
|
122
|
+
*
|
|
123
|
+
* 🛑 This exists because there are THREE money sites that must agree — the
|
|
124
|
+
* pricing preview (what the buyer is shown), `createOrderForGroup` (what the
|
|
125
|
+
* order records) and `POST /api/payment/create-order` (what the gateway
|
|
126
|
+
* captures) — and a fee charged at one and refused at another is an overcharge
|
|
127
|
+
* with no record. Root Cause #75's shape: a rule reachable by copy-paste will
|
|
128
|
+
* be copied, and the copy made before a branch was added never learns about
|
|
129
|
+
* it. Exporting the whole computed pair rather than the predicate is what
|
|
130
|
+
* stops a caller re-deriving the `&&`.
|
|
131
|
+
*
|
|
132
|
+
* 🛑 The caller still supplies `finalSale` from the right source for its own
|
|
133
|
+
* moment: the live product at PREVIEW (no order exists yet), the order item's
|
|
134
|
+
* snapshot at CREATION and at CLAIM. That is deliberately not hidden in here —
|
|
135
|
+
* which source is correct depends on when you are asking, and a helper that
|
|
136
|
+
* guessed would get the claim-time case wrong, which is the one that matters.
|
|
137
|
+
*/
|
|
138
|
+
export declare function computeProtectionFees(input: {
|
|
139
|
+
/** Order-group goods value the percentage applies to. */
|
|
140
|
+
subtotal: number;
|
|
141
|
+
selected: {
|
|
142
|
+
shipping: boolean;
|
|
143
|
+
sale: boolean;
|
|
144
|
+
};
|
|
145
|
+
tiers: {
|
|
146
|
+
platformShipping: boolean;
|
|
147
|
+
platformSale: boolean;
|
|
148
|
+
sellerShipping: boolean;
|
|
149
|
+
sellerSale: boolean;
|
|
150
|
+
finalSale: boolean;
|
|
151
|
+
};
|
|
152
|
+
/** `(subtotal, selected, rates)` — pass the matching `compute*Fee`. */
|
|
153
|
+
shippingFee: (subtotal: number, selected: boolean) => number;
|
|
154
|
+
saleFee: (subtotal: number, selected: boolean) => number;
|
|
155
|
+
}): {
|
|
156
|
+
shippingProtectionFee: number;
|
|
157
|
+
saleProtectionFee: number;
|
|
158
|
+
};
|
|
159
|
+
export type ClaimFinding = "genuine" | "change-of-mind";
|
|
160
|
+
export interface ClaimOutcome {
|
|
161
|
+
/** Is the buyer refunded? */
|
|
162
|
+
refundBuyer: boolean;
|
|
163
|
+
/** Who absorbs the cost. */
|
|
164
|
+
costBorneBy: "seller" | "platform" | "buyer";
|
|
165
|
+
/** Whether a scam-registry signal should be raised for review. */
|
|
166
|
+
raisesReport: boolean;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* 🛑 INSPECTION DECIDES WHO PAYS — NEVER WHETHER A PROTECTED BUYER IS
|
|
170
|
+
* REFUNDED.
|
|
171
|
+
*
|
|
172
|
+
* This is the part that must not be got wrong, because it is where the promise
|
|
173
|
+
* lives. Sale protection says *no questions asked*. If inspection could block
|
|
174
|
+
* a protected refund then "no questions asked" is false, and we would be
|
|
175
|
+
* rebuilding the dead-tooltip problem with extra steps.
|
|
176
|
+
*
|
|
177
|
+
* protected + genuine refunded · charged back to the SELLER
|
|
178
|
+
* protected + change-of-mind refunded · absorbed by the PLATFORM —
|
|
179
|
+
* this is what the fee prices
|
|
180
|
+
* unprotected + genuine refunded · the SELLER's fault, seller pays
|
|
181
|
+
* unprotected + change-of-mind per the return policy — the BUYER pays
|
|
182
|
+
*
|
|
183
|
+
* What inspection gates is the chargeback, and that is also what makes the
|
|
184
|
+
* seller-level opt-in meaningful: a seller supporting the cover accepts that
|
|
185
|
+
* genuine claims land on them, and the fee covers the rest.
|
|
186
|
+
*
|
|
187
|
+
* `raisesReport` is a SIGNAL, not a verdict. A threshold opens a
|
|
188
|
+
* `ReportDocument` for a human; an automatic exclusion on a count would punish
|
|
189
|
+
* an unlucky buyer who received two genuinely bad items, and the scam
|
|
190
|
+
* registry's entries are written as patterns to recognise rather than rules to
|
|
191
|
+
* fire.
|
|
192
|
+
*/
|
|
193
|
+
export declare function adjudicateClaim(protectedSale: boolean, finding: ClaimFinding): ClaimOutcome;
|
|
194
|
+
/**
|
|
195
|
+
* Where a RETURN ships to — C5g, stated here because it branches on the
|
|
196
|
+
* add-on and nothing else should re-derive that.
|
|
197
|
+
*
|
|
198
|
+
* 🛑 Warehouse routing applies ONLY to a sale-protection claim, not to returns
|
|
199
|
+
* in general. We take custody only where we are the ones underwriting the
|
|
200
|
+
* refund, which is also the only case where we need to know whether to charge
|
|
201
|
+
* the seller back. An ordinary return on an unprotected order stays between
|
|
202
|
+
* the buyer and the seller exactly as it does today.
|
|
203
|
+
*
|
|
204
|
+
* The admin trust flag sends even a protected claim to the seller.
|
|
205
|
+
*/
|
|
206
|
+
export declare function returnDestination(input: {
|
|
207
|
+
saleProtectedClaim: boolean;
|
|
208
|
+
/** `StoreDocument.returnsDirectToSeller` — ADMIN-granted, never seller-set. */
|
|
209
|
+
sellerTrustedByAdmin: boolean;
|
|
210
|
+
}): "warehouse" | "seller";
|
|
211
|
+
/**
|
|
212
|
+
* Where an RTO lands — C5h. Same rule, different trigger.
|
|
213
|
+
*
|
|
214
|
+
* An RTO is not buyer-initiated: the carrier is sending a parcel back because
|
|
215
|
+
* it could not be delivered. Nobody asked for it, so no claim exists — but the
|
|
216
|
+
* destination still follows who underwrote the order, because that is who has
|
|
217
|
+
* to inspect and account for it.
|
|
218
|
+
*/
|
|
219
|
+
export declare function rtoDestination(input: {
|
|
220
|
+
saleProtectedOrder: boolean;
|
|
221
|
+
}): "warehouse" | "seller";
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two buyer protections — C5e.
|
|
3
|
+
*
|
|
4
|
+
* ## 🛑 What was wrong, and why the fix is a claim path rather than a deletion
|
|
5
|
+
*
|
|
6
|
+
* `computeShipmentProtectionFee` is real: `max(₹30, 2%)`, opt-in per store,
|
|
7
|
+
* written to the order as `shipmentProtectionAddon` / `shipmentProtectionFee`,
|
|
8
|
+
* rendered as a "Protected" chip. And `OrderAddonBadges.tsx` claims the flag
|
|
9
|
+
* *"changes how a loss claim is handled"* — while **no refund, dispute or RMA
|
|
10
|
+
* code reads it anywhere**. A buyer paid 2% for a promise the system could not
|
|
11
|
+
* keep.
|
|
12
|
+
*
|
|
13
|
+
* An earlier revision of the plan concluded "delete it". That was wrong. The
|
|
14
|
+
* diagnosis was right — the fee was real and the claim path did not exist —
|
|
15
|
+
* but the missing half is the claim, and **escrow is the pot it pays from**.
|
|
16
|
+
* Holding the buyer's funds until delivery is what turns the badge from a
|
|
17
|
+
* promise into a mechanism.
|
|
18
|
+
*
|
|
19
|
+
* ## TWO protections, because they fail independently
|
|
20
|
+
*
|
|
21
|
+
* SHIPPING loss or damage IN TRANSIT. We are the carrier's counterparty
|
|
22
|
+
* under escrow, so the carrier claim is ours to pursue and the
|
|
23
|
+
* buyer never argues with a courier.
|
|
24
|
+
* SALE the item itself — not as described, wrong item, item issues.
|
|
25
|
+
* Branches the return flow, skipping the seller-fault
|
|
26
|
+
* determination.
|
|
27
|
+
*
|
|
28
|
+
* A parcel that arrives intact containing the wrong bey is a SALE problem, not
|
|
29
|
+
* a shipping one. A single blended "protection" would charge once and have to
|
|
30
|
+
* answer both — and, worse, would have to be wholly offered or wholly withheld
|
|
31
|
+
* on a final-sale item, where the right answers differ (see below).
|
|
32
|
+
*/
|
|
33
|
+
export const PROTECTION_KINDS = ["shipping", "sale"];
|
|
34
|
+
/**
|
|
35
|
+
* Is this protection on offer, and if not, why.
|
|
36
|
+
*
|
|
37
|
+
* 🛑 `finalSale` is checked for SALE protection only, and the asymmetry is the
|
|
38
|
+
* strongest argument for keeping the two separate:
|
|
39
|
+
*
|
|
40
|
+
* final sale + sale protection INELIGIBLE. "No returns" and
|
|
41
|
+
* "no-questions-asked refund" are a plain
|
|
42
|
+
* contradiction, and `finalSale` exists
|
|
43
|
+
* precisely so a seller cannot be made to
|
|
44
|
+
* take an item back.
|
|
45
|
+
* final sale + shipping protection UNAFFECTED. A parcel lost in transit was
|
|
46
|
+
* never delivered, so there is nothing for
|
|
47
|
+
* "final" to be final about — the buyer
|
|
48
|
+
* did not receive the item they accepted
|
|
49
|
+
* as non-returnable.
|
|
50
|
+
*
|
|
51
|
+
* Order of checks is the order of ownership: platform, then seller, then item.
|
|
52
|
+
* That matters because the REASON is rendered, and "we do not offer this" is a
|
|
53
|
+
* different sentence from "this seller does not offer this".
|
|
54
|
+
*/
|
|
55
|
+
export function protectionAvailability(kind, input) {
|
|
56
|
+
if (!input.platformEnabled) {
|
|
57
|
+
return { available: false, reason: "platform-disabled" };
|
|
58
|
+
}
|
|
59
|
+
if (!input.sellerSupports) {
|
|
60
|
+
return { available: false, reason: "seller-not-supported" };
|
|
61
|
+
}
|
|
62
|
+
if (kind === "sale" && input.finalSale) {
|
|
63
|
+
return { available: false, reason: "final-sale" };
|
|
64
|
+
}
|
|
65
|
+
return { available: true };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Whether to show the buyer a pre-purchase RISK NOTICE.
|
|
69
|
+
*
|
|
70
|
+
* 🛑 Absence must read as "not supported", never as "unknown". A tri-state
|
|
71
|
+
* where `undefined` renders neither a badge nor a notice is the worst of the
|
|
72
|
+
* three outcomes: the buyer gets no signal at all and cannot tell a seller who
|
|
73
|
+
* declined from one who has not been asked.
|
|
74
|
+
*
|
|
75
|
+
* `platform-disabled` is the one reason that shows NOTHING — if we do not
|
|
76
|
+
* offer the product, there is nothing to disclose about this seller, and a
|
|
77
|
+
* notice would be us advertising a gap we created.
|
|
78
|
+
*/
|
|
79
|
+
export function showsRiskNotice(a) {
|
|
80
|
+
return !a.available && a.reason === "seller-not-supported";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Whether to show the seller's safety BADGE.
|
|
84
|
+
*
|
|
85
|
+
* 🛑 Gated on the claim path existing, not merely on the flag. A badge for a
|
|
86
|
+
* promise the platform cannot keep is the dead `OrderAddonBadges` tooltip one
|
|
87
|
+
* level up — a seller opting into something we do not honour.
|
|
88
|
+
*/
|
|
89
|
+
export function showsSafetyBadge(a) {
|
|
90
|
+
return a.available;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 🛑 The two badges must never appear together on one card.
|
|
94
|
+
*
|
|
95
|
+
* "Final sale" beside "Sale protected" is incoherent to a buyer and they are
|
|
96
|
+
* right. A final-sale listing shows the final-sale badge and, when the seller
|
|
97
|
+
* supports it, the SHIPPING-protection badge only.
|
|
98
|
+
*/
|
|
99
|
+
export function badgesFor(input) {
|
|
100
|
+
const shipping = protectionAvailability("shipping", input);
|
|
101
|
+
const sale = protectionAvailability("sale", input);
|
|
102
|
+
return {
|
|
103
|
+
finalSale: input.finalSale,
|
|
104
|
+
shippingProtected: showsSafetyBadge(shipping),
|
|
105
|
+
saleProtected: showsSafetyBadge(sale),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// ── What to charge ──────────────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* Both protection fees for one order group, with all three tiers applied.
|
|
111
|
+
*
|
|
112
|
+
* 🛑 This exists because there are THREE money sites that must agree — the
|
|
113
|
+
* pricing preview (what the buyer is shown), `createOrderForGroup` (what the
|
|
114
|
+
* order records) and `POST /api/payment/create-order` (what the gateway
|
|
115
|
+
* captures) — and a fee charged at one and refused at another is an overcharge
|
|
116
|
+
* with no record. Root Cause #75's shape: a rule reachable by copy-paste will
|
|
117
|
+
* be copied, and the copy made before a branch was added never learns about
|
|
118
|
+
* it. Exporting the whole computed pair rather than the predicate is what
|
|
119
|
+
* stops a caller re-deriving the `&&`.
|
|
120
|
+
*
|
|
121
|
+
* 🛑 The caller still supplies `finalSale` from the right source for its own
|
|
122
|
+
* moment: the live product at PREVIEW (no order exists yet), the order item's
|
|
123
|
+
* snapshot at CREATION and at CLAIM. That is deliberately not hidden in here —
|
|
124
|
+
* which source is correct depends on when you are asking, and a helper that
|
|
125
|
+
* guessed would get the claim-time case wrong, which is the one that matters.
|
|
126
|
+
*/
|
|
127
|
+
export function computeProtectionFees(input) {
|
|
128
|
+
const { subtotal, selected, tiers } = input;
|
|
129
|
+
const shippingOk = protectionAvailability("shipping", {
|
|
130
|
+
platformEnabled: tiers.platformShipping,
|
|
131
|
+
sellerSupports: tiers.sellerShipping,
|
|
132
|
+
finalSale: tiers.finalSale,
|
|
133
|
+
}).available;
|
|
134
|
+
const saleOk = protectionAvailability("sale", {
|
|
135
|
+
platformEnabled: tiers.platformSale,
|
|
136
|
+
sellerSupports: tiers.sellerSale,
|
|
137
|
+
finalSale: tiers.finalSale,
|
|
138
|
+
}).available;
|
|
139
|
+
return {
|
|
140
|
+
shippingProtectionFee: input.shippingFee(subtotal, selected.shipping && shippingOk),
|
|
141
|
+
saleProtectionFee: input.saleFee(subtotal, selected.sale && saleOk),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 🛑 INSPECTION DECIDES WHO PAYS — NEVER WHETHER A PROTECTED BUYER IS
|
|
146
|
+
* REFUNDED.
|
|
147
|
+
*
|
|
148
|
+
* This is the part that must not be got wrong, because it is where the promise
|
|
149
|
+
* lives. Sale protection says *no questions asked*. If inspection could block
|
|
150
|
+
* a protected refund then "no questions asked" is false, and we would be
|
|
151
|
+
* rebuilding the dead-tooltip problem with extra steps.
|
|
152
|
+
*
|
|
153
|
+
* protected + genuine refunded · charged back to the SELLER
|
|
154
|
+
* protected + change-of-mind refunded · absorbed by the PLATFORM —
|
|
155
|
+
* this is what the fee prices
|
|
156
|
+
* unprotected + genuine refunded · the SELLER's fault, seller pays
|
|
157
|
+
* unprotected + change-of-mind per the return policy — the BUYER pays
|
|
158
|
+
*
|
|
159
|
+
* What inspection gates is the chargeback, and that is also what makes the
|
|
160
|
+
* seller-level opt-in meaningful: a seller supporting the cover accepts that
|
|
161
|
+
* genuine claims land on them, and the fee covers the rest.
|
|
162
|
+
*
|
|
163
|
+
* `raisesReport` is a SIGNAL, not a verdict. A threshold opens a
|
|
164
|
+
* `ReportDocument` for a human; an automatic exclusion on a count would punish
|
|
165
|
+
* an unlucky buyer who received two genuinely bad items, and the scam
|
|
166
|
+
* registry's entries are written as patterns to recognise rather than rules to
|
|
167
|
+
* fire.
|
|
168
|
+
*/
|
|
169
|
+
export function adjudicateClaim(protectedSale, finding) {
|
|
170
|
+
if (protectedSale) {
|
|
171
|
+
return finding === "genuine"
|
|
172
|
+
? { refundBuyer: true, costBorneBy: "seller", raisesReport: false }
|
|
173
|
+
: /*
|
|
174
|
+
* Refunded anyway — the promise is unconditional. The report is
|
|
175
|
+
* raised because repeated change-of-mind claims on a
|
|
176
|
+
* no-questions-asked cover is exactly the `chargeback_fraud` pattern
|
|
177
|
+
* the registry already documents, and the only honest enforcement is
|
|
178
|
+
* withdrawing FUTURE eligibility, never denying this claim.
|
|
179
|
+
*/
|
|
180
|
+
{ refundBuyer: true, costBorneBy: "platform", raisesReport: true };
|
|
181
|
+
}
|
|
182
|
+
return finding === "genuine"
|
|
183
|
+
? { refundBuyer: true, costBorneBy: "seller", raisesReport: false }
|
|
184
|
+
: { refundBuyer: false, costBorneBy: "buyer", raisesReport: false };
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Where a RETURN ships to — C5g, stated here because it branches on the
|
|
188
|
+
* add-on and nothing else should re-derive that.
|
|
189
|
+
*
|
|
190
|
+
* 🛑 Warehouse routing applies ONLY to a sale-protection claim, not to returns
|
|
191
|
+
* in general. We take custody only where we are the ones underwriting the
|
|
192
|
+
* refund, which is also the only case where we need to know whether to charge
|
|
193
|
+
* the seller back. An ordinary return on an unprotected order stays between
|
|
194
|
+
* the buyer and the seller exactly as it does today.
|
|
195
|
+
*
|
|
196
|
+
* The admin trust flag sends even a protected claim to the seller.
|
|
197
|
+
*/
|
|
198
|
+
export function returnDestination(input) {
|
|
199
|
+
if (!input.saleProtectedClaim)
|
|
200
|
+
return "seller";
|
|
201
|
+
return input.sellerTrustedByAdmin ? "seller" : "warehouse";
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Where an RTO lands — C5h. Same rule, different trigger.
|
|
205
|
+
*
|
|
206
|
+
* An RTO is not buyer-initiated: the carrier is sending a parcel back because
|
|
207
|
+
* it could not be delivered. Nobody asked for it, so no claim exists — but the
|
|
208
|
+
* destination still follows who underwrote the order, because that is who has
|
|
209
|
+
* to inspect and account for it.
|
|
210
|
+
*/
|
|
211
|
+
export function rtoDestination(input) {
|
|
212
|
+
return input.saleProtectedOrder ? "warehouse" : "seller";
|
|
213
|
+
}
|
|
@@ -34,6 +34,9 @@ export interface BuyerFacingFees {
|
|
|
34
34
|
shipmentProtectionFeeEnabled?: boolean;
|
|
35
35
|
shipmentProtectionFeePercent?: number;
|
|
36
36
|
shipmentProtectionFeeMin?: number;
|
|
37
|
+
saleProtectionFeeEnabled?: boolean;
|
|
38
|
+
saleProtectionFeePercent?: number;
|
|
39
|
+
saleProtectionFeeMin?: number;
|
|
37
40
|
codHandlingFeeMin?: number;
|
|
38
41
|
codHandlingFeePercent?: number;
|
|
39
42
|
codDepositPercent?: number;
|
|
@@ -20,6 +20,9 @@ export function toBuyerFacingFees(commissions) {
|
|
|
20
20
|
shipmentProtectionFeeEnabled: commissions.shipmentProtectionFeeEnabled,
|
|
21
21
|
shipmentProtectionFeePercent: commissions.shipmentProtectionFeePercent,
|
|
22
22
|
shipmentProtectionFeeMin: commissions.shipmentProtectionFeeMin,
|
|
23
|
+
saleProtectionFeeEnabled: commissions.saleProtectionFeeEnabled,
|
|
24
|
+
saleProtectionFeePercent: commissions.saleProtectionFeePercent,
|
|
25
|
+
saleProtectionFeeMin: commissions.saleProtectionFeeMin,
|
|
23
26
|
codHandlingFeeMin: commissions.codHandlingFeeMin,
|
|
24
27
|
codHandlingFeePercent: commissions.codHandlingFeePercent,
|
|
25
28
|
codDepositPercent: commissions.codDepositPercent,
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GST registration validity — the gate on turning product GST ON.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* `siteSettings.gst.enabled` decides whether product GST is charged at all
|
|
7
|
+
* (`createOrderForGroup` computes a breakdown only when `gstSettings?.enabled`
|
|
8
|
+
* and a buyer state are both present). Until now the admin form sent
|
|
9
|
+
* `{ enabled, gstin: gstin.trim().toUpperCase(), legalName, address }` with
|
|
10
|
+
* **no validation of any kind**, and `/api/admin/site` types every group as
|
|
11
|
+
* `z.unknown()` — so GST collection could be switched on with an **empty or
|
|
12
|
+
* malformed GSTIN**, after which every invoice charges tax under no valid
|
|
13
|
+
* registration and prints whatever string was typed.
|
|
14
|
+
*
|
|
15
|
+
* That is the same class as C0c defect 4 (`SETTINGS_ENCRYPTION_KEY` unset must
|
|
16
|
+
* fail LOUDLY rather than storing plaintext): a compliance precondition has to
|
|
17
|
+
* be refused at the write, not discovered on an invoice.
|
|
18
|
+
*
|
|
19
|
+
* ## Shape
|
|
20
|
+
*
|
|
21
|
+
* 15 characters: `99AAAAA9999A9Z9`
|
|
22
|
+
*
|
|
23
|
+
* `[0-9]{2}` state code
|
|
24
|
+
* `[A-Z]{5}` first five of the holder's PAN
|
|
25
|
+
* `[0-9]{4}` PAN digits
|
|
26
|
+
* `[A-Z]` PAN entity letter
|
|
27
|
+
* `[0-9A-Z]` registration number within the state
|
|
28
|
+
* `Z` fixed
|
|
29
|
+
* `[0-9A-Z]` checksum
|
|
30
|
+
*
|
|
31
|
+
* ## Why the checksum is BLOCKING and not advisory
|
|
32
|
+
*
|
|
33
|
+
* It was verified against the GSTIN that India's own GST material uses as its
|
|
34
|
+
* worked example (`27AAPFU0939F1ZV`) plus five more real-format registrations,
|
|
35
|
+
* and against every single-character mutation of them. A regex alone accepts a
|
|
36
|
+
* transposed digit, which is the realistic typo on a 15-character code copied
|
|
37
|
+
* off a certificate.
|
|
38
|
+
*
|
|
39
|
+
* 🛑 The risk runs the other way too, and it is why this was measured rather
|
|
40
|
+
* than assumed: a wrong checksum implementation would refuse a LEGITIMATE
|
|
41
|
+
* registration and leave a real business unable to invoice at all — strictly
|
|
42
|
+
* worse than accepting a typo. Do not change the algorithm without re-running
|
|
43
|
+
* the assertions.
|
|
44
|
+
*
|
|
45
|
+
* Pure. No React, no Firestore, no env.
|
|
46
|
+
*/
|
|
47
|
+
/** `99AAAAA9999A9Z9` — shape only; see `isValidGstin` for the checksum. */
|
|
48
|
+
export declare const GSTIN_PATTERN: RegExp;
|
|
49
|
+
/**
|
|
50
|
+
* The published GSTIN check character for the first 14 characters.
|
|
51
|
+
*
|
|
52
|
+
* Base-36 positional weights alternate 1, 2 from the left. For each character:
|
|
53
|
+
* multiply its value by its weight, then add the quotient and the remainder of
|
|
54
|
+
* that product divided by 36. The check value is `(36 - sum % 36) % 36`.
|
|
55
|
+
*
|
|
56
|
+
* Returns `null` when the prefix is not 14 characters of the alphabet — a
|
|
57
|
+
* caller must not treat that as "checksum failed", because it is a different
|
|
58
|
+
* fault with a different message.
|
|
59
|
+
*/
|
|
60
|
+
export declare function gstinCheckCharacter(first14: string): string | null;
|
|
61
|
+
/** Shape AND checksum. Whitespace and case are the caller's to normalise. */
|
|
62
|
+
export declare function isValidGstin(raw: string | undefined | null): boolean;
|
|
63
|
+
export interface GstEnablementInput {
|
|
64
|
+
enabled?: boolean;
|
|
65
|
+
gstin?: string;
|
|
66
|
+
legalName?: string;
|
|
67
|
+
address?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* One problem per field, keyed by the field that owns it, so a caller can pipe
|
|
71
|
+
* each straight into `setFieldError(key, message)` per Rule #9 — rather than a
|
|
72
|
+
* single banner the admin has to map back onto four inputs themselves.
|
|
73
|
+
*/
|
|
74
|
+
export type GstEnablementProblems = Partial<Record<"gstin" | "legalName" | "address", string>>;
|
|
75
|
+
/**
|
|
76
|
+
* What must be true before product GST may be charged.
|
|
77
|
+
*
|
|
78
|
+
* 🛑 Only checked when `enabled` is being set to `true`. Turning GST **off**
|
|
79
|
+
* must never be blocked by the state of the fields it is turning off — that
|
|
80
|
+
* would trap an admin who enabled it with bad data in exactly the state they
|
|
81
|
+
* are trying to leave.
|
|
82
|
+
*
|
|
83
|
+
* `legalName` and `address` are required alongside the number because a tax
|
|
84
|
+
* invoice carries all three, and the invoice renderer snapshots all three onto
|
|
85
|
+
* the order. Enabling with two of them produces an invoice with a blank
|
|
86
|
+
* supplier block, which is not a lesser version of compliance.
|
|
87
|
+
*/
|
|
88
|
+
export declare function validateGstEnablement(input: GstEnablementInput): GstEnablementProblems;
|
|
89
|
+
/** `true` when GST may be enabled with this input. */
|
|
90
|
+
export declare function canEnableGst(input: GstEnablementInput): boolean;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GST registration validity — the gate on turning product GST ON.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* `siteSettings.gst.enabled` decides whether product GST is charged at all
|
|
7
|
+
* (`createOrderForGroup` computes a breakdown only when `gstSettings?.enabled`
|
|
8
|
+
* and a buyer state are both present). Until now the admin form sent
|
|
9
|
+
* `{ enabled, gstin: gstin.trim().toUpperCase(), legalName, address }` with
|
|
10
|
+
* **no validation of any kind**, and `/api/admin/site` types every group as
|
|
11
|
+
* `z.unknown()` — so GST collection could be switched on with an **empty or
|
|
12
|
+
* malformed GSTIN**, after which every invoice charges tax under no valid
|
|
13
|
+
* registration and prints whatever string was typed.
|
|
14
|
+
*
|
|
15
|
+
* That is the same class as C0c defect 4 (`SETTINGS_ENCRYPTION_KEY` unset must
|
|
16
|
+
* fail LOUDLY rather than storing plaintext): a compliance precondition has to
|
|
17
|
+
* be refused at the write, not discovered on an invoice.
|
|
18
|
+
*
|
|
19
|
+
* ## Shape
|
|
20
|
+
*
|
|
21
|
+
* 15 characters: `99AAAAA9999A9Z9`
|
|
22
|
+
*
|
|
23
|
+
* `[0-9]{2}` state code
|
|
24
|
+
* `[A-Z]{5}` first five of the holder's PAN
|
|
25
|
+
* `[0-9]{4}` PAN digits
|
|
26
|
+
* `[A-Z]` PAN entity letter
|
|
27
|
+
* `[0-9A-Z]` registration number within the state
|
|
28
|
+
* `Z` fixed
|
|
29
|
+
* `[0-9A-Z]` checksum
|
|
30
|
+
*
|
|
31
|
+
* ## Why the checksum is BLOCKING and not advisory
|
|
32
|
+
*
|
|
33
|
+
* It was verified against the GSTIN that India's own GST material uses as its
|
|
34
|
+
* worked example (`27AAPFU0939F1ZV`) plus five more real-format registrations,
|
|
35
|
+
* and against every single-character mutation of them. A regex alone accepts a
|
|
36
|
+
* transposed digit, which is the realistic typo on a 15-character code copied
|
|
37
|
+
* off a certificate.
|
|
38
|
+
*
|
|
39
|
+
* 🛑 The risk runs the other way too, and it is why this was measured rather
|
|
40
|
+
* than assumed: a wrong checksum implementation would refuse a LEGITIMATE
|
|
41
|
+
* registration and leave a real business unable to invoice at all — strictly
|
|
42
|
+
* worse than accepting a typo. Do not change the algorithm without re-running
|
|
43
|
+
* the assertions.
|
|
44
|
+
*
|
|
45
|
+
* Pure. No React, no Firestore, no env.
|
|
46
|
+
*/
|
|
47
|
+
/** `99AAAAA9999A9Z9` — shape only; see `isValidGstin` for the checksum. */
|
|
48
|
+
export const GSTIN_PATTERN = /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z]Z[0-9A-Z]$/;
|
|
49
|
+
/** The 36 symbols GSTIN checksum arithmetic runs in, in value order. */
|
|
50
|
+
const GSTIN_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
51
|
+
/**
|
|
52
|
+
* The published GSTIN check character for the first 14 characters.
|
|
53
|
+
*
|
|
54
|
+
* Base-36 positional weights alternate 1, 2 from the left. For each character:
|
|
55
|
+
* multiply its value by its weight, then add the quotient and the remainder of
|
|
56
|
+
* that product divided by 36. The check value is `(36 - sum % 36) % 36`.
|
|
57
|
+
*
|
|
58
|
+
* Returns `null` when the prefix is not 14 characters of the alphabet — a
|
|
59
|
+
* caller must not treat that as "checksum failed", because it is a different
|
|
60
|
+
* fault with a different message.
|
|
61
|
+
*/
|
|
62
|
+
export function gstinCheckCharacter(first14) {
|
|
63
|
+
if (first14.length !== 14)
|
|
64
|
+
return null;
|
|
65
|
+
let sum = 0;
|
|
66
|
+
for (let i = 0; i < 14; i += 1) {
|
|
67
|
+
const value = GSTIN_ALPHABET.indexOf(first14[i]);
|
|
68
|
+
if (value < 0)
|
|
69
|
+
return null;
|
|
70
|
+
const product = value * (i % 2 === 0 ? 1 : 2);
|
|
71
|
+
sum += Math.floor(product / 36) + (product % 36);
|
|
72
|
+
}
|
|
73
|
+
return GSTIN_ALPHABET[(36 - (sum % 36)) % 36];
|
|
74
|
+
}
|
|
75
|
+
/** Shape AND checksum. Whitespace and case are the caller's to normalise. */
|
|
76
|
+
export function isValidGstin(raw) {
|
|
77
|
+
if (!raw)
|
|
78
|
+
return false;
|
|
79
|
+
const value = raw.trim().toUpperCase();
|
|
80
|
+
if (!GSTIN_PATTERN.test(value))
|
|
81
|
+
return false;
|
|
82
|
+
return gstinCheckCharacter(value.slice(0, 14)) === value[14];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* What must be true before product GST may be charged.
|
|
86
|
+
*
|
|
87
|
+
* 🛑 Only checked when `enabled` is being set to `true`. Turning GST **off**
|
|
88
|
+
* must never be blocked by the state of the fields it is turning off — that
|
|
89
|
+
* would trap an admin who enabled it with bad data in exactly the state they
|
|
90
|
+
* are trying to leave.
|
|
91
|
+
*
|
|
92
|
+
* `legalName` and `address` are required alongside the number because a tax
|
|
93
|
+
* invoice carries all three, and the invoice renderer snapshots all three onto
|
|
94
|
+
* the order. Enabling with two of them produces an invoice with a blank
|
|
95
|
+
* supplier block, which is not a lesser version of compliance.
|
|
96
|
+
*/
|
|
97
|
+
export function validateGstEnablement(input) {
|
|
98
|
+
if (input.enabled !== true)
|
|
99
|
+
return {};
|
|
100
|
+
const problems = {};
|
|
101
|
+
const gstin = (input.gstin ?? "").trim().toUpperCase();
|
|
102
|
+
if (gstin.length === 0) {
|
|
103
|
+
problems.gstin = "A GSTIN is required before GST can be charged.";
|
|
104
|
+
}
|
|
105
|
+
else if (!GSTIN_PATTERN.test(gstin)) {
|
|
106
|
+
problems.gstin =
|
|
107
|
+
"A GSTIN is 15 characters in the form 99AAAAA9999A9Z9 — check it against your registration certificate.";
|
|
108
|
+
}
|
|
109
|
+
else if (gstinCheckCharacter(gstin.slice(0, 14)) !== gstin[14]) {
|
|
110
|
+
problems.gstin =
|
|
111
|
+
"That GSTIN fails its own check digit, so it contains a typo. Compare it character by character with your certificate.";
|
|
112
|
+
}
|
|
113
|
+
if ((input.legalName ?? "").trim().length === 0) {
|
|
114
|
+
problems.legalName =
|
|
115
|
+
"The registered legal name is required — it is printed on every tax invoice.";
|
|
116
|
+
}
|
|
117
|
+
if ((input.address ?? "").trim().length === 0) {
|
|
118
|
+
problems.address =
|
|
119
|
+
"The registered address is required — it is printed on every tax invoice.";
|
|
120
|
+
}
|
|
121
|
+
return problems;
|
|
122
|
+
}
|
|
123
|
+
/** `true` when GST may be enabled with this input. */
|
|
124
|
+
export function canEnableGst(input) {
|
|
125
|
+
return Object.keys(validateGstEnablement(input)).length === 0;
|
|
126
|
+
}
|