@mohasinac/appkit 4.59.0 → 4.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +62 -5
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -2
- package/dist/_internal/server/features/brands/actions.js +78 -4
- package/dist/_internal/server/features/checkout/actions.d.ts +36 -13
- package/dist/_internal/server/features/checkout/actions.js +668 -183
- package/dist/_internal/server/features/checkout/supplier-identity.js +18 -1
- package/dist/_internal/server/features/gateway-events/index.d.ts +10 -0
- package/dist/_internal/server/features/gateway-events/index.js +10 -0
- package/dist/_internal/server/features/gateway-events/ingest.d.ts +127 -0
- package/dist/_internal/server/features/gateway-events/ingest.js +188 -0
- package/dist/_internal/server/features/gateway-events/redact.d.ts +66 -0
- package/dist/_internal/server/features/gateway-events/redact.js +151 -0
- package/dist/_internal/server/features/grievance/actions.d.ts +63 -0
- package/dist/_internal/server/features/grievance/actions.js +173 -0
- package/dist/_internal/server/features/grievance/index.d.ts +8 -0
- package/dist/_internal/server/features/grievance/index.js +8 -0
- package/dist/_internal/server/features/grouped/data.js +28 -3
- package/dist/_internal/server/features/lottery/actions.js +99 -4
- package/dist/_internal/server/features/order-completion/actions.d.ts +92 -0
- package/dist/_internal/server/features/order-completion/actions.js +336 -0
- package/dist/_internal/server/features/order-completion/index.d.ts +7 -0
- package/dist/_internal/server/features/order-completion/index.js +7 -0
- package/dist/_internal/server/features/orders/actions.d.ts +13 -0
- package/dist/_internal/server/features/orders/actions.js +56 -2
- package/dist/_internal/server/features/orders/adapters.js +26 -0
- package/dist/_internal/server/features/orders/cancellation-refund.d.ts +116 -0
- package/dist/_internal/server/features/orders/cancellation-refund.js +466 -0
- package/dist/_internal/server/features/orders/index.d.ts +2 -1
- package/dist/_internal/server/features/orders/index.js +1 -1
- package/dist/_internal/server/features/orders/service.d.ts +60 -0
- package/dist/_internal/server/features/orders/service.js +74 -0
- package/dist/_internal/server/features/payment-cases/disputes.d.ts +76 -0
- package/dist/_internal/server/features/payment-cases/disputes.js +241 -0
- package/dist/_internal/server/features/payment-cases/index.d.ts +9 -0
- package/dist/_internal/server/features/payment-cases/index.js +9 -0
- package/dist/_internal/server/features/payouts/actions.d.ts +28 -3
- package/dist/_internal/server/features/payouts/actions.js +84 -10
- package/dist/_internal/server/features/points/adjust.d.ts +61 -0
- package/dist/_internal/server/features/points/adjust.js +121 -0
- package/dist/_internal/server/features/points/award.d.ts +65 -0
- package/dist/_internal/server/features/points/award.js +145 -0
- package/dist/_internal/server/features/price-index/market.d.ts +33 -0
- package/dist/_internal/server/features/price-index/market.js +54 -1
- package/dist/_internal/server/features/products/data.js +40 -22
- package/dist/_internal/server/features/protection-claims/actions.d.ts +72 -0
- package/dist/_internal/server/features/protection-claims/actions.js +228 -0
- package/dist/_internal/server/features/protection-claims/index.d.ts +8 -0
- package/dist/_internal/server/features/protection-claims/index.js +8 -0
- package/dist/_internal/server/features/refunds/actions.d.ts +20 -0
- package/dist/_internal/server/features/refunds/actions.js +259 -17
- package/dist/_internal/server/features/refunds/capacity.d.ts +29 -0
- package/dist/_internal/server/features/refunds/capacity.js +37 -0
- package/dist/_internal/server/features/reviews/actions.js +3 -2
- package/dist/_internal/server/features/search/index-build/sources.js +20 -1
- package/dist/_internal/server/features/shipping/reconcile.d.ts +10 -1
- package/dist/_internal/server/features/shipping/reconcile.js +34 -3
- package/dist/_internal/server/features/shipping/reimbursement.d.ts +117 -0
- package/dist/_internal/server/features/shipping/reimbursement.js +223 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +19 -4
- package/dist/_internal/server/features/stores/tabs.js +24 -4
- package/dist/_internal/server/functions/https.d.ts +31 -1
- package/dist/_internal/server/functions/https.js +52 -1
- package/dist/_internal/server/functions/scheduled.d.ts +72 -1
- package/dist/_internal/server/functions/scheduled.js +124 -1
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +62 -16
- package/dist/_internal/server/jobs/core/boxRollupReconcile.d.ts +46 -0
- package/dist/_internal/server/jobs/core/boxRollupReconcile.js +142 -0
- package/dist/_internal/server/jobs/core/dailyDataCleanup.js +149 -1
- package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +14 -0
- package/dist/_internal/server/jobs/core/dailyStatusDigest.js +79 -1
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.d.ts +64 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.js +153 -0
- package/dist/_internal/server/jobs/core/obligationSweep.d.ts +36 -0
- package/dist/_internal/server/jobs/core/obligationSweep.js +503 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.d.ts +79 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.js +614 -0
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +34 -0
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +35 -4
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.js +15 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.d.ts +65 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.js +89 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +5 -0
- package/dist/_internal/server/jobs/handlers/index.js +5 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.js +2 -0
- package/dist/_internal/server/jobs/handlers/obligationSweep.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/obligationSweep.js +15 -0
- package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +30 -1
- package/dist/_internal/server/jobs/handlers/paymentReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/paymentReconcile.js +6 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +71 -0
- package/dist/_internal/shared/checkout/coupon-discount.d.ts +73 -0
- package/dist/_internal/shared/checkout/coupon-discount.js +103 -0
- package/dist/_internal/shared/checkout/lanes.d.ts +42 -0
- package/dist/_internal/shared/checkout/lanes.js +46 -0
- package/dist/_internal/shared/checkout/order-math.d.ts +149 -1
- package/dist/_internal/shared/checkout/order-math.js +251 -3
- package/dist/_internal/shared/checkout/refundable-base.d.ts +116 -0
- package/dist/_internal/shared/checkout/refundable-base.js +122 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +14 -1
- package/dist/_internal/shared/features/auctions/config.js +30 -1
- package/dist/_internal/shared/features/brands/schema.d.ts +42 -0
- package/dist/_internal/shared/features/brands/schema.js +18 -0
- package/dist/_internal/shared/features/orders/refund-copy.d.ts +22 -0
- package/dist/_internal/shared/features/orders/refund-copy.js +34 -0
- package/dist/_internal/shared/features/print/label-profiles.d.ts +198 -0
- package/dist/_internal/shared/features/print/label-profiles.js +350 -0
- package/dist/_internal/shared/features/products/to-product-item.js +33 -5
- package/dist/_internal/shared/fees/calculator.d.ts +31 -2
- package/dist/_internal/shared/fees/calculator.js +103 -5
- package/dist/_internal/shared/fees/india-states.d.ts +195 -0
- package/dist/_internal/shared/fees/india-states.js +190 -0
- package/dist/_internal/shared/fees/payout-hold.d.ts +80 -0
- package/dist/_internal/shared/fees/payout-hold.js +74 -0
- package/dist/_internal/shared/obligations/deadlines.d.ts +94 -0
- package/dist/_internal/shared/obligations/deadlines.js +155 -0
- package/dist/_internal/shared/shipping/quote.d.ts +96 -0
- package/dist/_internal/shared/shipping/quote.js +67 -0
- package/dist/_internal/shared/time/business-days.d.ts +91 -0
- package/dist/_internal/shared/time/business-days.js +185 -0
- package/dist/cli/index.js +0 -2
- package/dist/client.d.ts +9 -4
- package/dist/client.js +26 -3
- package/dist/configs/tailwind.d.ts +0 -12
- package/dist/configs/tailwind.js +28 -15
- package/dist/constants/api-endpoints.d.ts +51 -9
- package/dist/constants/api-endpoints.js +23 -7
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/payment.d.ts +131 -0
- package/dist/features/about/components/AboutView.js +1 -1
- package/dist/features/about/components/DeveloperView.js +5 -2
- package/dist/features/about/components/FAQPageView.js +2 -1
- package/dist/features/about/components/FeesView.js +2 -1
- package/dist/features/about/components/HelpPageView.js +2 -1
- package/dist/features/about/components/HowAuctionsWorkView.js +2 -1
- package/dist/features/about/components/HowCheckoutWorksView.js +2 -1
- package/dist/features/about/components/HowEmiWorksView.js +2 -1
- package/dist/features/about/components/HowOffersWorkView.js +2 -1
- package/dist/features/about/components/HowOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowPayoutsWorkView.js +2 -1
- package/dist/features/about/components/HowPreOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowReviewsWorkView.js +2 -1
- package/dist/features/about/components/PolicyPageView.js +2 -1
- package/dist/features/about/components/ProseHero.d.ts +73 -0
- package/dist/features/about/components/ProseHero.js +18 -0
- package/dist/features/about/components/SecurityPrivacyView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +2 -1
- package/dist/features/about/components/TrackOrderView.js +2 -1
- package/dist/features/about/components/UnauthorizedView.js +1 -1
- package/dist/features/about/index.d.ts +2 -0
- package/dist/features/about/index.js +5 -0
- package/dist/features/account/actions/address-actions.d.ts +26 -2
- package/dist/features/account/actions/address-actions.js +25 -1
- package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
- package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
- package/dist/features/account/components/UserOrdersView.js +17 -0
- package/dist/features/account/components/UserSidebar.js +1 -1
- package/dist/features/account/hooks/useNotifications.js +29 -0
- package/dist/features/admin/actions/admin-coupon-actions.js +36 -0
- package/dist/features/admin/components/AdminBeysView.js +2 -2
- package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
- package/dist/features/admin/components/AdminBrandEditorView.js +32 -2
- package/dist/features/admin/components/AdminBundleEditorView.js +1 -1
- package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
- package/dist/features/admin/components/AdminCategoriesView.js +1 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +73 -17
- package/dist/features/admin/components/AdminContactEditorView.js +1 -1
- package/dist/features/admin/components/AdminCouponEditorView.js +26 -1
- package/dist/features/admin/components/AdminFaqEditorView.js +1 -1
- package/dist/features/admin/components/AdminFaqsView.js +2 -2
- package/dist/features/admin/components/AdminGatewayEventsView.d.ts +54 -0
- package/dist/features/admin/components/AdminGatewayEventsView.js +209 -0
- package/dist/features/admin/components/AdminGuideHubView.js +1 -1
- package/dist/features/admin/components/AdminMoneyCasesView.d.ts +60 -0
- package/dist/features/admin/components/AdminMoneyCasesView.js +287 -0
- package/dist/features/admin/components/AdminPartsView.js +2 -2
- package/dist/features/admin/components/AdminProductsView.js +75 -4
- package/dist/features/admin/components/AdminSidebar.js +2 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +65 -7
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
- package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
- package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +72 -1
- package/dist/features/admin/components/AdminViewCards.d.ts +3 -1
- package/dist/features/admin/components/AdminViewCards.js +4 -4
- package/dist/features/admin/components/DataListingView.d.ts +28 -0
- package/dist/features/admin/components/DataListingView.js +175 -14
- package/dist/features/admin/components/DataTable.d.ts +12 -1
- package/dist/features/admin/components/DataTable.js +3 -3
- package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/OwnerQuickActions.js +60 -2
- package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/RecordOwnerQuickActions.js +61 -14
- package/dist/features/admin/components/analytics/AdminStatCard.d.ts +35 -1
- package/dist/features/admin/components/analytics/AdminStatCard.js +77 -2
- package/dist/features/admin/components/index.d.ts +4 -0
- package/dist/features/admin/components/index.js +6 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +156 -0
- package/dist/features/admin/constants/filter-tabs.js +106 -0
- package/dist/features/admin/repository/site-settings.repository.d.ts +22 -0
- package/dist/features/admin/repository/site-settings.repository.js +82 -1
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +21 -0
- package/dist/features/admin/schemas/admin-editor-forms.js +44 -0
- package/dist/features/admin/schemas/firestore.js +5 -1
- package/dist/features/admin/schemas/site-settings-form.js +30 -1
- package/dist/features/auctions/actions/bid-actions.js +13 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +2 -2
- package/dist/features/auctions/components/AuctionDetailPageView.js +3 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +5 -3
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +8 -1
- package/dist/features/auctions/components/PlaceBidFormClient.js +2 -2
- package/dist/features/audit-log/schemas/firestore.d.ts +28 -0
- package/dist/features/audit-log/schemas/firestore.js +14 -0
- package/dist/features/auth/permissions/constants.d.ts +17 -1
- package/dist/features/auth/permissions/constants.js +18 -0
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
- package/dist/features/categories/api/[id]/description-template/route.js +107 -1
- package/dist/features/categories/components/BrandDetailPageView.js +2 -2
- package/dist/features/categories/components/BreadcrumbTrail.js +7 -1
- package/dist/features/categories/components/BundleDetailView.js +1 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
- package/dist/features/categories/components/CategoryForm.js +12 -1
- package/dist/features/categories/components/CategoryTemplatePicker.js +38 -5
- package/dist/features/categories/repository/market-price-index.repository.d.ts +123 -0
- package/dist/features/categories/repository/market-price-index.repository.js +105 -0
- package/dist/features/categories/repository/price-observation.repository.d.ts +166 -0
- package/dist/features/categories/repository/price-observation.repository.js +132 -0
- package/dist/features/events/components/EventSaleBanner.js +1 -1
- package/dist/features/events/components/EventStatusBadge.js +1 -1
- package/dist/features/faq/components/FAQAccordion.js +2 -1
- package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
- package/dist/features/faq/components/FAQHelpfulButtons.js +4 -4
- package/dist/features/faq/components/RelatedFAQs.js +1 -1
- package/dist/features/filters/FilterFacetSection.js +1 -1
- package/dist/features/filters/SwitchFilter.js +1 -1
- package/dist/features/gateway-events/repository/gateway-events.repository.d.ts +117 -0
- package/dist/features/gateway-events/repository/gateway-events.repository.js +274 -0
- package/dist/features/gateway-events/schemas/firestore.d.ts +217 -0
- package/dist/features/gateway-events/schemas/firestore.js +125 -0
- package/dist/features/gateway-events/schemas/index.d.ts +81 -0
- package/dist/features/gateway-events/schemas/index.js +79 -0
- package/dist/features/grouped/components/GroupedListingDetailView.js +1 -1
- package/dist/features/homepage/components/AnnouncementBar.js +37 -1
- package/dist/features/homepage/components/AnnouncementBar.style.css +30 -0
- package/dist/features/homepage/components/BrandsSection.js +1 -1
- package/dist/features/homepage/components/CTABannerSection.js +1 -1
- package/dist/features/homepage/components/FeaturedBundlesSection.js +14 -24
- package/dist/features/homepage/components/HeroCarousel.js +2 -2
- package/dist/features/homepage/components/SocialPostCard.js +1 -1
- package/dist/features/inventory/components/AdminMoveLedgerView.d.ts +7 -0
- package/dist/features/inventory/components/AdminMoveLedgerView.js +157 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.d.ts +11 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.js +168 -0
- package/dist/features/inventory/components/ReceiveStationView.d.ts +39 -0
- package/dist/features/inventory/components/ReceiveStationView.js +413 -0
- package/dist/features/inventory/components/operator-message.d.ts +29 -0
- package/dist/features/inventory/components/operator-message.js +41 -0
- package/dist/features/inventory/index.d.ts +13 -0
- package/dist/features/inventory/index.js +28 -0
- package/dist/features/inventory/repository/inventory-movements.repository.d.ts +97 -0
- package/dist/features/inventory/repository/inventory-movements.repository.js +186 -0
- package/dist/features/inventory/repository/inventory-placements.repository.d.ts +179 -0
- package/dist/features/inventory/repository/inventory-placements.repository.js +345 -0
- package/dist/features/inventory/repository/storage-boxes.repository.d.ts +83 -0
- package/dist/features/inventory/repository/storage-boxes.repository.js +127 -0
- package/dist/features/inventory/schemas/firestore.d.ts +197 -0
- package/dist/features/inventory/schemas/firestore.js +159 -0
- package/dist/features/layout/AppLayoutShell.d.ts +12 -1
- package/dist/features/layout/AppLayoutShell.js +25 -12
- package/dist/features/layout/AutoBreadcrumbs.js +162 -3
- package/dist/features/layout/AutoBreadcrumbs.style.css +45 -0
- package/dist/features/layout/BottomNavbar.d.ts +1 -1
- package/dist/features/layout/BottomNavbar.js +2 -2
- package/dist/features/media/MediaAvatar.js +1 -1
- package/dist/features/media/MediaImage.d.ts +24 -4
- package/dist/features/media/MediaImage.js +44 -4
- package/dist/features/media/MediaLightbox.js +1 -1
- package/dist/features/media/modals/ImageCropModal.js +1 -1
- package/dist/features/media/modals/ImageEditor.js +1 -1
- package/dist/features/media/upload/MediaUploadField.js +91 -3
- package/dist/features/obligations/constants/policies.d.ts +92 -0
- package/dist/features/obligations/constants/policies.js +378 -0
- package/dist/features/obligations/repository/obligations.repository.d.ts +68 -0
- package/dist/features/obligations/repository/obligations.repository.js +158 -0
- package/dist/features/obligations/schemas/firestore.d.ts +160 -0
- package/dist/features/obligations/schemas/firestore.js +87 -0
- package/dist/features/orders/actions/order-actions.d.ts +43 -4
- package/dist/features/orders/actions/order-actions.js +60 -3
- package/dist/features/orders/actions/refund-actions.js +70 -10
- package/dist/features/orders/components/OrderCompletionPanel.d.ts +27 -0
- package/dist/features/orders/components/OrderCompletionPanel.js +192 -0
- package/dist/features/orders/components/OrdersList.js +2 -2
- package/dist/features/orders/components/RefundHistoryTable.js +3 -1
- package/dist/features/orders/components/index.d.ts +2 -0
- package/dist/features/orders/components/index.js +6 -0
- package/dist/features/orders/constants/transitions.d.ts +59 -0
- package/dist/features/orders/constants/transitions.js +104 -0
- package/dist/features/orders/repository/orders.repository.d.ts +109 -6
- package/dist/features/orders/repository/orders.repository.js +464 -21
- package/dist/features/orders/schemas/firestore.d.ts +270 -0
- package/dist/features/orders/schemas/firestore.js +24 -0
- package/dist/features/orders/schemas/index.d.ts +61 -0
- package/dist/features/orders/schemas/index.js +22 -0
- package/dist/features/orders/types/index.d.ts +79 -0
- package/dist/features/parts/components/PartsIndexPageView.js +8 -1
- package/dist/features/payment-cases/repository/payment-cases.repository.d.ts +170 -0
- package/dist/features/payment-cases/repository/payment-cases.repository.js +342 -0
- package/dist/features/payment-cases/schemas/firestore.d.ts +229 -0
- package/dist/features/payment-cases/schemas/firestore.js +105 -0
- package/dist/features/payment-cases/schemas/resolve-form.d.ts +97 -0
- package/dist/features/payment-cases/schemas/resolve-form.js +114 -0
- package/dist/features/payments/repository/payout.repository.d.ts +0 -1
- package/dist/features/payments/repository/payout.repository.js +0 -1
- package/dist/features/points/repository/points.repository.d.ts +122 -0
- package/dist/features/points/repository/points.repository.js +304 -1
- package/dist/features/points/schemas/adjust-form.d.ts +58 -0
- package/dist/features/points/schemas/adjust-form.js +63 -0
- package/dist/features/points/schemas/firestore.d.ts +108 -1
- package/dist/features/points/schemas/firestore.js +84 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -3
- package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +23 -4
- package/dist/features/price-index/components/PriceIndexToolView.js +71 -6
- package/dist/features/price-index/market-stats.d.ts +82 -0
- package/dist/features/price-index/market-stats.js +230 -0
- package/dist/features/print/components/BoxLabelPrintView.d.ts +25 -0
- package/dist/features/print/components/BoxLabelPrintView.js +66 -0
- package/dist/features/print/components/LabelProfilePicker.d.ts +13 -0
- package/dist/features/print/components/LabelProfilePicker.js +38 -0
- package/dist/features/print/components/labels.d.ts +117 -0
- package/dist/features/print/components/labels.js +258 -0
- package/dist/features/print/components/labels.style.css +46 -0
- package/dist/features/print/index.d.ts +6 -0
- package/dist/features/print/index.js +16 -0
- package/dist/features/products/columns/productTableColumns.js +5 -4
- package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +6 -6
- package/dist/features/products/components/PrizeDrawCollage.js +1 -1
- package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
- package/dist/features/products/components/PrizeRevealModal.js +2 -2
- package/dist/features/products/components/ProductDetailPageView.js +18 -4
- package/dist/features/products/components/ProductForm.js +34 -23
- package/dist/features/products/components/ProductGrid.js +86 -62
- package/dist/features/products/constants/card-badges.d.ts +97 -0
- package/dist/features/products/constants/card-badges.js +100 -0
- package/dist/features/products/repository/products.repository.js +34 -1
- package/dist/features/products/schemas/firestore.d.ts +46 -3
- package/dist/features/products/schemas/firestore.js +21 -0
- package/dist/features/promotions/components/PromotionsView.js +1 -1
- package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +32 -0
- package/dist/features/promotions/repository/claimed-coupons.repository.js +58 -0
- package/dist/features/promotions/schemas/firestore.js +30 -3
- package/dist/features/promotions/schemas/index.d.ts +6 -6
- package/dist/features/protection-claims/repository/protection-claims.repository.d.ts +54 -0
- package/dist/features/protection-claims/repository/protection-claims.repository.js +174 -0
- package/dist/features/protection-claims/schemas/firestore.d.ts +168 -0
- package/dist/features/protection-claims/schemas/firestore.js +130 -0
- package/dist/features/reviews/actions/review-actions.js +3 -2
- package/dist/features/reviews/components/ReviewModal.js +1 -1
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/reviews/schemas/firestore.d.ts +20 -1
- package/dist/features/scams/constants/scam-types.d.ts +2 -0
- package/dist/features/scams/constants/scam-types.js +18 -0
- package/dist/features/scams/schemas/report-form.d.ts +3 -3
- package/dist/features/scams/schemas/report-form.js +26 -1
- package/dist/features/search/components/Search.js +9 -9
- package/dist/features/search/components/SearchResultsClient.js +18 -3
- package/dist/features/search/components/SearchResultsPageView.d.ts +1 -6
- package/dist/features/search/components/SearchResultsPageView.js +2 -2
- package/dist/features/seller/actions/offer-actions.js +16 -1
- package/dist/features/seller/actions/seller-actions.js +14 -3
- package/dist/features/seller/components/CategoryInlineSelect.js +75 -11
- package/dist/features/seller/components/PrintCenterView.d.ts +5 -0
- package/dist/features/seller/components/PrintCenterView.js +41 -30
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutRequestView.js +16 -5
- package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +16 -0
- package/dist/features/seller/components/SellerProductShell.js +123 -13
- package/dist/features/seller/components/SellerReviewsView.js +4 -2
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +26 -0
- package/dist/features/seller/schemas/coupon-form.js +27 -0
- package/dist/features/seller/schemas/product-form.d.ts +3 -0
- package/dist/features/seller/schemas/product-form.js +5 -0
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +14 -0
- package/dist/features/shell/SectionForm.d.ts +19 -0
- package/dist/features/shell/SectionForm.js +133 -9
- package/dist/features/shell/SectionForm.style.css +54 -0
- package/dist/features/shipments/components/AdminShipmentsView.js +16 -1
- package/dist/features/shipments/repository/shipment-items.repository.d.ts +9 -0
- package/dist/features/shipments/repository/shipment-items.repository.js +14 -0
- package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +1 -1
- package/dist/features/store-extensions/schemas/report-review-form.d.ts +8 -8
- package/dist/features/stores/components/StoreGuideHubView.js +1 -1
- package/dist/features/stores/components/StoreHeader.js +1 -1
- package/dist/features/support/schemas/firestore.d.ts +73 -2
- package/dist/features/support/schemas/firestore.js +59 -0
- package/dist/index.d.ts +16 -24
- package/dist/index.js +38 -47
- package/dist/next/ErrorBoundary.js +1 -1
- package/dist/next/routing/route-map.d.ts +24 -0
- package/dist/next/routing/route-map.js +40 -0
- package/dist/providers/payment-manual/index.d.ts +15 -1
- package/dist/providers/payment-manual/index.js +37 -0
- package/dist/providers/payment-phonepe/index.d.ts +14 -1
- package/dist/providers/payment-phonepe/index.js +36 -0
- package/dist/providers/payment-razorpay/index.d.ts +44 -1
- package/dist/providers/payment-razorpay/index.js +99 -0
- package/dist/providers/shipping-shiprocket/index.d.ts +18 -0
- package/dist/providers/shipping-shiprocket/index.js +18 -0
- package/dist/schemas/registry.d.ts +44 -11
- package/dist/server-entry.d.ts +2 -0
- package/dist/server-entry.js +27 -0
- package/dist/server.d.ts +42 -0
- package/dist/server.js +93 -0
- package/dist/styles.css +418 -149
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +15 -12
- package/dist/tokens/themes/default-light.js +14 -11
- package/dist/tokens/tokens.css +106 -23
- package/dist/ui/DataTable.style.css +4 -4
- package/dist/ui/columns/cell-renderers.d.ts +20 -0
- package/dist/ui/columns/cell-renderers.js +26 -1
- package/dist/ui/columns/index.d.ts +1 -1
- package/dist/ui/columns/index.js +4 -1
- package/dist/ui/components/Badge.style.css +1 -1
- package/dist/ui/components/Breadcrumb.js +19 -1
- package/dist/ui/components/BulkActionBar.style.css +4 -4
- package/dist/ui/components/Button.style.css +1 -1
- package/dist/ui/components/Checkbox.style.css +1 -1
- package/dist/ui/components/FallbackShell.js +1 -1
- package/dist/ui/components/Form.d.ts +14 -1
- package/dist/ui/components/Form.js +2 -2
- package/dist/ui/components/FormField.js +18 -4
- package/dist/ui/components/FormField.style.css +43 -3
- package/dist/ui/components/GatedPrice.style.css +1 -1
- package/dist/ui/components/IconButton.style.css +1 -1
- package/dist/ui/components/Input.js +22 -1
- package/dist/ui/components/Input.style.css +38 -22
- package/dist/ui/components/ListingFilterDrawer.js +1 -1
- package/dist/ui/components/ListingToolbar.js +1 -1
- package/dist/ui/components/PaginatedSelect.js +0 -0
- package/dist/ui/components/Radio.style.css +1 -1
- package/dist/ui/components/Repeater.d.ts +53 -0
- package/dist/ui/components/Repeater.js +7 -0
- package/dist/ui/components/RichTextEditor.d.ts +20 -1
- package/dist/ui/components/RichTextEditor.js +23 -2
- package/dist/ui/components/Select.style.css +7 -21
- package/dist/ui/components/Semantic.js +27 -3
- package/dist/ui/components/TagInput.style.css +4 -9
- package/dist/ui/components/Textarea.style.css +4 -18
- package/dist/ui/components/Toggle.style.css +1 -1
- package/dist/ui/components/Typography.d.ts +3 -3
- package/dist/ui/components/Typography.js +15 -15
- package/dist/ui/components/ViewToggle.style.css +4 -4
- package/dist/ui/forms/AddAnotherToggle.d.ts +16 -0
- package/dist/ui/forms/AddAnotherToggle.js +56 -0
- package/dist/ui/forms/ColorPickerField.js +15 -2
- package/dist/ui/forms/FieldCheckbox.js +15 -2
- package/dist/ui/forms/FieldInput.d.ts +22 -1
- package/dist/ui/forms/FieldInput.js +19 -5
- package/dist/ui/forms/FieldLabel.d.ts +35 -0
- package/dist/ui/forms/FieldLabel.js +70 -0
- package/dist/ui/forms/FieldSelect.d.ts +4 -1
- package/dist/ui/forms/FieldSelect.js +27 -5
- package/dist/ui/forms/FieldTextarea.d.ts +4 -1
- package/dist/ui/forms/FieldTextarea.js +22 -5
- package/dist/ui/forms/FormShell.d.ts +17 -1
- package/dist/ui/forms/FormShell.js +36 -2
- package/dist/ui/forms/FormShell.style.css +41 -33
- package/dist/ui/forms/index.d.ts +5 -1
- package/dist/ui/forms/index.js +2 -0
- package/dist/ui/icons/icon-registry.d.ts +1 -0
- package/dist/ui/icons/icon-registry.js +17 -1
- package/dist/utils/id-generators.d.ts +80 -0
- package/dist/utils/id-generators.js +93 -0
- package/dist/utils/search-txt-builders.d.ts +12 -0
- package/dist/utils/search-txt-builders.js +17 -0
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +106 -5
- package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +0 -12
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +0 -38
- package/dist/features/loyalty/api/balance/route.d.ts +0 -12
- package/dist/features/loyalty/api/balance/route.js +0 -41
- package/dist/features/loyalty/api/earn/route.d.ts +0 -12
- package/dist/features/loyalty/api/earn/route.js +0 -38
- package/dist/features/loyalty/api/history/route.d.ts +0 -12
- package/dist/features/loyalty/api/history/route.js +0 -58
- package/dist/features/loyalty/api/redeem/route.d.ts +0 -12
- package/dist/features/loyalty/api/redeem/route.js +0 -38
- package/dist/features/loyalty/columns/index.d.ts +0 -17
- package/dist/features/loyalty/columns/index.js +0 -40
- package/dist/features/loyalty/components/CoinsDisplay.d.ts +0 -12
- package/dist/features/loyalty/components/CoinsDisplay.js +0 -10
- package/dist/features/loyalty/components/index.d.ts +0 -1
- package/dist/features/loyalty/components/index.js +0 -1
- package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +0 -4
- package/dist/features/loyalty/hooks/useLoyaltyBalance.js +0 -25
- package/dist/features/loyalty/index.d.ts +0 -6
- package/dist/features/loyalty/index.js +0 -6
- package/dist/features/loyalty/manifest.d.ts +0 -2
- package/dist/features/loyalty/manifest.js +0 -16
- package/dist/features/loyalty/messages/en.json +0 -19
- package/dist/features/loyalty/repository/loyalty.repository.d.ts +0 -8
- package/dist/features/loyalty/repository/loyalty.repository.js +0 -22
- package/dist/features/loyalty/schemas/index.d.ts +0 -85
- package/dist/features/loyalty/schemas/index.js +0 -40
- package/dist/features/loyalty/server.d.ts +0 -6
- package/dist/features/loyalty/server.js +0 -6
- package/dist/features/loyalty/types/index.d.ts +0 -31
- package/dist/features/loyalty/types/index.js +0 -1
- package/dist/features/loyalty/types/loyalty-config.d.ts +0 -7
- package/dist/features/loyalty/types/loyalty-config.js +0 -1
- package/dist/features/loyalty/types/loyalty-math.d.ts +0 -9
- package/dist/features/loyalty/types/loyalty-math.js +0 -27
- package/dist/features/products/components/ProductOwnerQuickActions.d.ts +0 -11
- package/dist/features/products/components/ProductOwnerQuickActions.js +0 -120
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — POST /api/admin/loyalty/grant
|
|
3
|
-
*
|
|
4
|
-
* Admin endpoint to grant loyalty points.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { adminLoyaltyGrantPOST as POST } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
import { getProviders } from "../../../../../../contracts/index.js";
|
|
13
|
-
import { normalizeError } from "../../../../../../errors/normalize.js";
|
|
14
|
-
export async function POST(request) {
|
|
15
|
-
try {
|
|
16
|
-
const body = await request.json();
|
|
17
|
-
const { db } = getProviders();
|
|
18
|
-
if (!db)
|
|
19
|
-
return NextResponse.json({ success: false, error: "DB not configured" }, { status: 503 });
|
|
20
|
-
const repo = db.getRepository("loyalty_transactions");
|
|
21
|
-
const created = await repo.create({
|
|
22
|
-
...body,
|
|
23
|
-
type: "admin_grant",
|
|
24
|
-
createdAt: new Date(),
|
|
25
|
-
});
|
|
26
|
-
return NextResponse.json({
|
|
27
|
-
success: true,
|
|
28
|
-
data: created,
|
|
29
|
-
}, { status: 201 });
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
void normalizeError(error);
|
|
33
|
-
return NextResponse.json({
|
|
34
|
-
success: false,
|
|
35
|
-
error: error instanceof Error ? error.message : "Internal server error",
|
|
36
|
-
}, { status: 500 });
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — GET /api/loyalty/balance
|
|
3
|
-
*
|
|
4
|
-
* User loyalty points balance.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyBalanceGET as GET } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
export declare function GET(request: Request): Promise<NextResponse>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — GET /api/loyalty/balance
|
|
3
|
-
*
|
|
4
|
-
* User loyalty points balance.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyBalanceGET as GET } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
import { getProviders } from "../../../../contracts/index.js";
|
|
13
|
-
import { normalizeError } from "../../../../errors/normalize.js";
|
|
14
|
-
export async function GET(request) {
|
|
15
|
-
try {
|
|
16
|
-
const url = new URL(request.url);
|
|
17
|
-
const userId = url.searchParams.get("userId");
|
|
18
|
-
if (!userId) {
|
|
19
|
-
return NextResponse.json({ success: false, error: "User ID required" }, { status: 400 });
|
|
20
|
-
}
|
|
21
|
-
const { db } = getProviders();
|
|
22
|
-
if (!db)
|
|
23
|
-
return NextResponse.json({ success: false, error: "DB not configured" }, { status: 503 });
|
|
24
|
-
const repo = db.getRepository("loyalty_balance");
|
|
25
|
-
const result = await repo.findAll({
|
|
26
|
-
filters: `userId==${userId}`,
|
|
27
|
-
pageSize: 1,
|
|
28
|
-
});
|
|
29
|
-
return NextResponse.json({
|
|
30
|
-
success: true,
|
|
31
|
-
data: result.data[0] ?? { userId, balance: 0 },
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
void normalizeError(error);
|
|
36
|
-
return NextResponse.json({
|
|
37
|
-
success: false,
|
|
38
|
-
error: error instanceof Error ? error.message : "Internal server error",
|
|
39
|
-
}, { status: 500 });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — POST /api/loyalty/earn
|
|
3
|
-
*
|
|
4
|
-
* Record loyalty points earned on transactions.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyEarnPOST as POST } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
export declare function POST(request: Request): Promise<NextResponse>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — POST /api/loyalty/earn
|
|
3
|
-
*
|
|
4
|
-
* Record loyalty points earned on transactions.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyEarnPOST as POST } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
import { getProviders } from "../../../../contracts/index.js";
|
|
13
|
-
import { normalizeError } from "../../../../errors/normalize.js";
|
|
14
|
-
export async function POST(request) {
|
|
15
|
-
try {
|
|
16
|
-
const body = await request.json();
|
|
17
|
-
const { db } = getProviders();
|
|
18
|
-
if (!db)
|
|
19
|
-
return NextResponse.json({ success: false, error: "DB not configured" }, { status: 503 });
|
|
20
|
-
const repo = db.getRepository("loyalty_transactions");
|
|
21
|
-
const created = await repo.create({
|
|
22
|
-
...body,
|
|
23
|
-
type: "earn",
|
|
24
|
-
createdAt: new Date(),
|
|
25
|
-
});
|
|
26
|
-
return NextResponse.json({
|
|
27
|
-
success: true,
|
|
28
|
-
data: created,
|
|
29
|
-
}, { status: 201 });
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
void normalizeError(error);
|
|
33
|
-
return NextResponse.json({
|
|
34
|
-
success: false,
|
|
35
|
-
error: error instanceof Error ? error.message : "Internal server error",
|
|
36
|
-
}, { status: 500 });
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — GET /api/loyalty/history
|
|
3
|
-
*
|
|
4
|
-
* User loyalty transaction history.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyHistoryGET as GET } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
export declare function GET(request: Request): Promise<NextResponse>;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — GET /api/loyalty/history
|
|
3
|
-
*
|
|
4
|
-
* User loyalty transaction history.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyHistoryGET as GET } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
import { getProviders } from "../../../../contracts/index.js";
|
|
13
|
-
import { normalizeError } from "../../../../errors/normalize.js";
|
|
14
|
-
function numParam(url, key, fallback) {
|
|
15
|
-
const v = url.searchParams.get(key);
|
|
16
|
-
const n = v !== null ? Number(v) : NaN;
|
|
17
|
-
return Number.isFinite(n) ? n : fallback;
|
|
18
|
-
}
|
|
19
|
-
export async function GET(request) {
|
|
20
|
-
try {
|
|
21
|
-
const url = new URL(request.url);
|
|
22
|
-
const userId = url.searchParams.get("userId");
|
|
23
|
-
const page = Math.max(1, numParam(url, "page", 1));
|
|
24
|
-
const pageSize = Math.min(100, Math.max(1, numParam(url, "pageSize", 20)));
|
|
25
|
-
if (!userId) {
|
|
26
|
-
return NextResponse.json({ success: false, error: "User ID required" }, { status: 400 });
|
|
27
|
-
}
|
|
28
|
-
const { db } = getProviders();
|
|
29
|
-
if (!db)
|
|
30
|
-
return NextResponse.json({ success: false, error: "DB not configured" }, { status: 503 });
|
|
31
|
-
const repo = db.getRepository("loyalty_transactions");
|
|
32
|
-
const result = await repo.findAll({
|
|
33
|
-
filters: `userId==${userId}`,
|
|
34
|
-
sort: "-createdAt",
|
|
35
|
-
page,
|
|
36
|
-
pageSize: pageSize,
|
|
37
|
-
});
|
|
38
|
-
const totalPages = Math.max(1, Math.ceil(result.total / pageSize));
|
|
39
|
-
return NextResponse.json({
|
|
40
|
-
success: true,
|
|
41
|
-
data: {
|
|
42
|
-
items: result.data,
|
|
43
|
-
total: result.total,
|
|
44
|
-
page,
|
|
45
|
-
pageSize,
|
|
46
|
-
totalPages,
|
|
47
|
-
hasMore: page < totalPages,
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
void normalizeError(error);
|
|
53
|
-
return NextResponse.json({
|
|
54
|
-
success: false,
|
|
55
|
-
error: error instanceof Error ? error.message : "Internal server error",
|
|
56
|
-
}, { status: 500 });
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — POST /api/loyalty/redeem
|
|
3
|
-
*
|
|
4
|
-
* Redeem loyalty points for rewards.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyRedeemPOST as POST } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
export declare function POST(request: Request): Promise<NextResponse>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* feat-loyalty — POST /api/loyalty/redeem
|
|
3
|
-
*
|
|
4
|
-
* Redeem loyalty points for rewards.
|
|
5
|
-
*
|
|
6
|
-
* Consumer stub:
|
|
7
|
-
* ```ts
|
|
8
|
-
* export { loyaltyRedeemPOST as POST } from "@mohasinac/feat-loyalty";
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
import { NextResponse } from "next/server.js";
|
|
12
|
-
import { getProviders } from "../../../../contracts/index.js";
|
|
13
|
-
import { normalizeError } from "../../../../errors/normalize.js";
|
|
14
|
-
export async function POST(request) {
|
|
15
|
-
try {
|
|
16
|
-
const body = await request.json();
|
|
17
|
-
const { db } = getProviders();
|
|
18
|
-
if (!db)
|
|
19
|
-
return NextResponse.json({ success: false, error: "DB not configured" }, { status: 503 });
|
|
20
|
-
const repo = db.getRepository("loyalty_transactions");
|
|
21
|
-
const created = await repo.create({
|
|
22
|
-
...body,
|
|
23
|
-
type: "redeem",
|
|
24
|
-
createdAt: new Date(),
|
|
25
|
-
});
|
|
26
|
-
return NextResponse.json({
|
|
27
|
-
success: true,
|
|
28
|
-
data: created,
|
|
29
|
-
}, { status: 201 });
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
void normalizeError(error);
|
|
33
|
-
return NextResponse.json({
|
|
34
|
-
success: false,
|
|
35
|
-
error: error instanceof Error ? error.message : "Internal server error",
|
|
36
|
-
}, { status: 500 });
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { TableColumn, ColumnExtensionOpts } from "../../../contracts";
|
|
2
|
-
import type { LoyaltyBalance } from "../types";
|
|
3
|
-
/**
|
|
4
|
-
* Default admin columns for loyalty balance records.
|
|
5
|
-
* Use `buildLoyaltyColumns()` to customise via overrides / extras / omit.
|
|
6
|
-
*/
|
|
7
|
-
export declare const loyaltyAdminColumns: TableColumn<LoyaltyBalance>[];
|
|
8
|
-
/**
|
|
9
|
-
* Factory that returns columns for the loyalty admin table.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* const cols = buildLoyaltyColumns<MyLoyaltyBalance>({
|
|
13
|
-
* extras: [{ key: "tier", header: "Tier", render: (l) => l.tier }],
|
|
14
|
-
* omit: ["coinHistory"],
|
|
15
|
-
* });
|
|
16
|
-
*/
|
|
17
|
-
export declare function buildLoyaltyColumns<T extends LoyaltyBalance = LoyaltyBalance>(opts?: ColumnExtensionOpts<T>): TableColumn<T>[];
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { buildColumns } from "../../../ui/columns/index.js";
|
|
2
|
-
/**
|
|
3
|
-
* Default admin columns for loyalty balance records.
|
|
4
|
-
* Use `buildLoyaltyColumns()` to customise via overrides / extras / omit.
|
|
5
|
-
*/
|
|
6
|
-
export const loyaltyAdminColumns = [
|
|
7
|
-
{
|
|
8
|
-
key: "uid",
|
|
9
|
-
header: "User ID",
|
|
10
|
-
sortable: false,
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
key: "hcCoins",
|
|
14
|
-
header: "Coins",
|
|
15
|
-
sortable: true,
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
key: "coinHistory",
|
|
19
|
-
header: "Last Transaction",
|
|
20
|
-
sortable: false,
|
|
21
|
-
render: (item) => {
|
|
22
|
-
if (!item.coinHistory?.length)
|
|
23
|
-
return "—";
|
|
24
|
-
const last = item.coinHistory[item.coinHistory.length - 1];
|
|
25
|
-
return last?.timestamp ?? "—";
|
|
26
|
-
},
|
|
27
|
-
},
|
|
28
|
-
];
|
|
29
|
-
/**
|
|
30
|
-
* Factory that returns columns for the loyalty admin table.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* const cols = buildLoyaltyColumns<MyLoyaltyBalance>({
|
|
34
|
-
* extras: [{ key: "tier", header: "Tier", render: (l) => l.tier }],
|
|
35
|
-
* omit: ["coinHistory"],
|
|
36
|
-
* });
|
|
37
|
-
*/
|
|
38
|
-
export function buildLoyaltyColumns(opts) {
|
|
39
|
-
return buildColumns(loyaltyAdminColumns, opts);
|
|
40
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface CoinsBadgeProps {
|
|
3
|
-
coins: number;
|
|
4
|
-
className?: string;
|
|
5
|
-
}
|
|
6
|
-
export declare function CoinsBadge({ coins, className }: CoinsBadgeProps): React.JSX.Element;
|
|
7
|
-
interface CoinsDisplayProps {
|
|
8
|
-
coins: number;
|
|
9
|
-
label?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function CoinsDisplay({ coins, label }: CoinsDisplayProps): React.JSX.Element;
|
|
12
|
-
export {};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Span, Stack, Text } from "../../../ui/index.js";
|
|
3
|
-
const CLS_COIN_PILL = "inline-flex items-center gap-[var(--appkit-space-1)] rounded-full bg-warning-surface px-[var(--appkit-space-2)] py-[var(--appkit-space-0-5)] text-[length:var(--appkit-text-xs)] font-semibold text-warning";
|
|
4
|
-
const CLS_COIN_TOTAL = "text-[length:var(--appkit-text-3xl)] font-bold text-warning";
|
|
5
|
-
export function CoinsBadge({ coins, className }) {
|
|
6
|
-
return (_jsxs(Span, { className: `${CLS_COIN_PILL} ${className ?? ""}`, children: [_jsx(Span, { "aria-hidden": "true", children: "\uD83E\uDE99" }), coins.toLocaleString()] }));
|
|
7
|
-
}
|
|
8
|
-
export function CoinsDisplay({ coins, label = "HC Coins" }) {
|
|
9
|
-
return (_jsxs(Stack, { align: "center", gap: "xs", children: [_jsx(Text, { className: CLS_COIN_TOTAL, children: coins.toLocaleString() }), _jsx(Text, { className: "text-[var(--appkit-color-text-muted)]", size: "sm", children: label })] }));
|
|
10
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { CoinsBadge, CoinsDisplay } from "./CoinsDisplay";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { CoinsBadge, CoinsDisplay } from "./CoinsDisplay.js";
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { apiClient } from "../../../http/ApiClient.js";
|
|
4
|
-
import { normalizeError } from "../../../errors/normalize.js";
|
|
5
|
-
import { LOYALTY_ENDPOINTS } from "../../../constants/api-endpoints.js";
|
|
6
|
-
export function useLoyaltyBalance(uid, opts) {
|
|
7
|
-
return useQuery({
|
|
8
|
-
queryKey: ["loyalty", "balance", uid],
|
|
9
|
-
queryFn: async () => {
|
|
10
|
-
if (!uid)
|
|
11
|
-
return null;
|
|
12
|
-
const endpoint = opts?.endpoint ?? LOYALTY_ENDPOINTS.BALANCE(uid);
|
|
13
|
-
try {
|
|
14
|
-
return await apiClient.get(endpoint);
|
|
15
|
-
}
|
|
16
|
-
catch (err) {
|
|
17
|
-
// loyalty balance is a display feature — treat any fetch failure as null
|
|
18
|
-
// so the loyalty section degrades gracefully without blocking the page
|
|
19
|
-
void normalizeError(err);
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
enabled: !!uid,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const manifest = {
|
|
2
|
-
name: "loyalty",
|
|
3
|
-
i18nNamespace: "loyalty",
|
|
4
|
-
envKeys: [],
|
|
5
|
-
routes: [
|
|
6
|
-
{ segment: "[locale]/account/coins", exports: { default: "LoyaltyPageView" } },
|
|
7
|
-
{ segment: "[locale]/admin/loyalty", exports: { default: "AdminLoyaltyView" }, adminOnly: true },
|
|
8
|
-
],
|
|
9
|
-
apiRoutes: [
|
|
10
|
-
{ segment: "api/loyalty/balance", methods: ["GET"] },
|
|
11
|
-
{ segment: "api/loyalty/earn", methods: ["POST"] },
|
|
12
|
-
{ segment: "api/loyalty/redeem", methods: ["POST"] },
|
|
13
|
-
{ segment: "api/loyalty/history", methods: ["GET"] },
|
|
14
|
-
{ segment: "api/admin/loyalty/grant", methods: ["POST"] },
|
|
15
|
-
],
|
|
16
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"loyalty": {
|
|
3
|
-
"title": "HC Coins",
|
|
4
|
-
"balance": "Your Coin Balance",
|
|
5
|
-
"earn": "Earn Coins",
|
|
6
|
-
"redeem": "Redeem Coins",
|
|
7
|
-
"history": "Coin History",
|
|
8
|
-
"noHistory": "No coin transactions yet.",
|
|
9
|
-
"earnedFor": "Earned for order",
|
|
10
|
-
"redeemedFor": "Redeemed on order",
|
|
11
|
-
"adminGrant": "Admin grant",
|
|
12
|
-
"refund": "Refund",
|
|
13
|
-
"coinsEarned": "{coins} coins earned",
|
|
14
|
-
"coinsRedeemed": "{coins} coins redeemed",
|
|
15
|
-
"worthRupees": "Worth ₹{amount}",
|
|
16
|
-
"minRequired": "Minimum {min} coins required to redeem",
|
|
17
|
-
"notActive": "Loyalty program is currently inactive"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { IRepository } from "../../../contracts";
|
|
2
|
-
import type { LoyaltyBalance, CoinHistoryEntry } from "../types";
|
|
3
|
-
export declare class LoyaltyRepository {
|
|
4
|
-
private readonly repo;
|
|
5
|
-
constructor(repo: IRepository<LoyaltyBalance>);
|
|
6
|
-
getBalance(uid: string): Promise<LoyaltyBalance | null>;
|
|
7
|
-
addCoins(uid: string, delta: number, entry: Omit<CoinHistoryEntry, "timestamp">): Promise<void>;
|
|
8
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export class LoyaltyRepository {
|
|
2
|
-
constructor(repo) {
|
|
3
|
-
this.repo = repo;
|
|
4
|
-
}
|
|
5
|
-
async getBalance(uid) {
|
|
6
|
-
return this.repo.findById(uid);
|
|
7
|
-
}
|
|
8
|
-
async addCoins(uid, delta, entry) {
|
|
9
|
-
const user = await this.repo.findById(uid);
|
|
10
|
-
if (!user)
|
|
11
|
-
return;
|
|
12
|
-
const current = user.hcCoins ?? 0;
|
|
13
|
-
const history = user.coinHistory ?? [];
|
|
14
|
-
await this.repo.update(uid, {
|
|
15
|
-
hcCoins: current + delta,
|
|
16
|
-
coinHistory: [
|
|
17
|
-
...history,
|
|
18
|
-
{ ...entry, delta, timestamp: new Date().toISOString() },
|
|
19
|
-
],
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/**
|
|
3
|
-
* Reason categories for loyalty coin transactions.
|
|
4
|
-
*/
|
|
5
|
-
export declare const coinReasonSchema: z.ZodEnum<["order_reward", "referral", "review_reward", "manual_credit", "manual_debit", "redemption", "expiry"]>;
|
|
6
|
-
export declare const coinHistoryEntrySchema: z.ZodObject<{
|
|
7
|
-
delta: z.ZodNumber;
|
|
8
|
-
reason: z.ZodEnum<["order_reward", "referral", "review_reward", "manual_credit", "manual_debit", "redemption", "expiry"]>;
|
|
9
|
-
orderId: z.ZodOptional<z.ZodString>;
|
|
10
|
-
timestamp: z.ZodOptional<z.ZodString>;
|
|
11
|
-
}, "strip", z.ZodTypeAny, {
|
|
12
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
13
|
-
delta: number;
|
|
14
|
-
timestamp?: string | undefined;
|
|
15
|
-
orderId?: string | undefined;
|
|
16
|
-
}, {
|
|
17
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
18
|
-
delta: number;
|
|
19
|
-
timestamp?: string | undefined;
|
|
20
|
-
orderId?: string | undefined;
|
|
21
|
-
}>;
|
|
22
|
-
/**
|
|
23
|
-
* Base Zod schema for a loyalty balance record.
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* import { loyaltyBalanceSchema } from "@mohasinac/feat-loyalty";
|
|
27
|
-
*
|
|
28
|
-
* const mySchema = loyaltyBalanceSchema.extend({
|
|
29
|
-
* tier: z.enum(["bronze", "silver", "gold"]),
|
|
30
|
-
* });
|
|
31
|
-
*/
|
|
32
|
-
export declare const loyaltyBalanceSchema: z.ZodObject<{
|
|
33
|
-
uid: z.ZodString;
|
|
34
|
-
hcCoins: z.ZodDefault<z.ZodNumber>;
|
|
35
|
-
coinHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
36
|
-
delta: z.ZodNumber;
|
|
37
|
-
reason: z.ZodEnum<["order_reward", "referral", "review_reward", "manual_credit", "manual_debit", "redemption", "expiry"]>;
|
|
38
|
-
orderId: z.ZodOptional<z.ZodString>;
|
|
39
|
-
timestamp: z.ZodOptional<z.ZodString>;
|
|
40
|
-
}, "strip", z.ZodTypeAny, {
|
|
41
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
42
|
-
delta: number;
|
|
43
|
-
timestamp?: string | undefined;
|
|
44
|
-
orderId?: string | undefined;
|
|
45
|
-
}, {
|
|
46
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
47
|
-
delta: number;
|
|
48
|
-
timestamp?: string | undefined;
|
|
49
|
-
orderId?: string | undefined;
|
|
50
|
-
}>, "many">>;
|
|
51
|
-
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
uid: string;
|
|
53
|
-
hcCoins: number;
|
|
54
|
-
coinHistory?: {
|
|
55
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
56
|
-
delta: number;
|
|
57
|
-
timestamp?: string | undefined;
|
|
58
|
-
orderId?: string | undefined;
|
|
59
|
-
}[] | undefined;
|
|
60
|
-
}, {
|
|
61
|
-
uid: string;
|
|
62
|
-
hcCoins?: number | undefined;
|
|
63
|
-
coinHistory?: {
|
|
64
|
-
reason: "redemption" | "order_reward" | "referral" | "review_reward" | "manual_credit" | "manual_debit" | "expiry";
|
|
65
|
-
delta: number;
|
|
66
|
-
timestamp?: string | undefined;
|
|
67
|
-
orderId?: string | undefined;
|
|
68
|
-
}[] | undefined;
|
|
69
|
-
}>;
|
|
70
|
-
export declare const loyaltyConfigSchema: z.ZodObject<{
|
|
71
|
-
coinsPerOrderUnit: z.ZodNumber;
|
|
72
|
-
minRedeemableCoins: z.ZodNumber;
|
|
73
|
-
maxRedemptionPercentPerOrder: z.ZodNumber;
|
|
74
|
-
coinExpiryDays: z.ZodOptional<z.ZodNumber>;
|
|
75
|
-
}, "strip", z.ZodTypeAny, {
|
|
76
|
-
coinsPerOrderUnit: number;
|
|
77
|
-
minRedeemableCoins: number;
|
|
78
|
-
maxRedemptionPercentPerOrder: number;
|
|
79
|
-
coinExpiryDays?: number | undefined;
|
|
80
|
-
}, {
|
|
81
|
-
coinsPerOrderUnit: number;
|
|
82
|
-
minRedeemableCoins: number;
|
|
83
|
-
maxRedemptionPercentPerOrder: number;
|
|
84
|
-
coinExpiryDays?: number | undefined;
|
|
85
|
-
}>;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/**
|
|
3
|
-
* Reason categories for loyalty coin transactions.
|
|
4
|
-
*/
|
|
5
|
-
export const coinReasonSchema = z.enum([
|
|
6
|
-
"order_reward",
|
|
7
|
-
"referral",
|
|
8
|
-
"review_reward",
|
|
9
|
-
"manual_credit",
|
|
10
|
-
"manual_debit",
|
|
11
|
-
"redemption",
|
|
12
|
-
"expiry",
|
|
13
|
-
]);
|
|
14
|
-
export const coinHistoryEntrySchema = z.object({
|
|
15
|
-
delta: z.number(),
|
|
16
|
-
reason: coinReasonSchema,
|
|
17
|
-
orderId: z.string().optional(),
|
|
18
|
-
timestamp: z.string().optional(),
|
|
19
|
-
});
|
|
20
|
-
/**
|
|
21
|
-
* Base Zod schema for a loyalty balance record.
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* import { loyaltyBalanceSchema } from "@mohasinac/feat-loyalty";
|
|
25
|
-
*
|
|
26
|
-
* const mySchema = loyaltyBalanceSchema.extend({
|
|
27
|
-
* tier: z.enum(["bronze", "silver", "gold"]),
|
|
28
|
-
* });
|
|
29
|
-
*/
|
|
30
|
-
export const loyaltyBalanceSchema = z.object({
|
|
31
|
-
uid: z.string(),
|
|
32
|
-
hcCoins: z.number().default(0),
|
|
33
|
-
coinHistory: z.array(coinHistoryEntrySchema).optional(),
|
|
34
|
-
});
|
|
35
|
-
export const loyaltyConfigSchema = z.object({
|
|
36
|
-
coinsPerOrderUnit: z.number(),
|
|
37
|
-
minRedeemableCoins: z.number(),
|
|
38
|
-
maxRedemptionPercentPerOrder: z.number(),
|
|
39
|
-
coinExpiryDays: z.number().optional(),
|
|
40
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { LoyaltyConfig } from "./loyalty-config";
|
|
2
|
-
export type { LoyaltyConfig } from "./loyalty-config";
|
|
3
|
-
export type CoinReason = "purchase" | "redemption" | "admin-grant" | "refund";
|
|
4
|
-
export interface CoinHistoryEntry {
|
|
5
|
-
delta: number;
|
|
6
|
-
reason: CoinReason;
|
|
7
|
-
orderId?: string;
|
|
8
|
-
timestamp: string;
|
|
9
|
-
}
|
|
10
|
-
export interface LoyaltyBalance {
|
|
11
|
-
uid: string;
|
|
12
|
-
hcCoins: number;
|
|
13
|
-
coinHistory: CoinHistoryEntry[];
|
|
14
|
-
}
|
|
15
|
-
export interface EarnCoinsInput {
|
|
16
|
-
uid: string;
|
|
17
|
-
orderTotal: number;
|
|
18
|
-
orderId: string;
|
|
19
|
-
config: LoyaltyConfig;
|
|
20
|
-
}
|
|
21
|
-
export interface RedeemCoinsInput {
|
|
22
|
-
uid: string;
|
|
23
|
-
coinsToRedeem: number;
|
|
24
|
-
orderId: string;
|
|
25
|
-
config: LoyaltyConfig;
|
|
26
|
-
}
|
|
27
|
-
export interface RedeemCoinsResult {
|
|
28
|
-
coinsRedeemed: number;
|
|
29
|
-
discountAmount: number;
|
|
30
|
-
}
|
|
31
|
-
export { calculateCoinsEarned, calculateMaxRedeemable, coinsToRupees, applyCoinsToOrder, } from "./loyalty-math";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { calculateCoinsEarned, calculateMaxRedeemable, coinsToRupees, applyCoinsToOrder, } from "./loyalty-math.js";
|