@mohasinac/appkit 2.4.10 → 2.5.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/_internal/client/features/products/index.d.ts +1 -0
- package/dist/_internal/client/features/products/index.js +3 -0
- package/dist/_internal/client/i18n/LabelsProvider.d.ts +13 -0
- package/dist/_internal/client/i18n/LabelsProvider.js +38 -0
- package/dist/_internal/client/index.d.ts +0 -0
- package/dist/_internal/client/index.js +4 -0
- package/dist/_internal/client/scaffolds/AppShell.d.ts +39 -0
- package/dist/_internal/client/scaffolds/AppShell.js +9 -0
- package/dist/_internal/client/scaffolds/DashboardScaffold.d.ts +34 -0
- package/dist/_internal/client/scaffolds/DashboardScaffold.js +23 -0
- package/dist/_internal/client/scaffolds/index.d.ts +4 -0
- package/dist/_internal/client/scaffolds/index.js +2 -0
- package/dist/_internal/server/features/account/actions.d.ts +7 -0
- package/dist/_internal/server/features/account/actions.js +7 -0
- package/dist/_internal/server/features/account/data.d.ts +17 -0
- package/dist/_internal/server/features/account/data.js +25 -0
- package/dist/_internal/server/features/account/index.d.ts +2 -0
- package/dist/_internal/server/features/account/index.js +2 -0
- package/dist/_internal/server/features/auctions/actions.d.ts +1 -0
- package/dist/_internal/server/features/auctions/actions.js +44 -0
- package/dist/_internal/server/features/auctions/data.d.ts +4 -0
- package/dist/_internal/server/features/auctions/data.js +9 -0
- package/dist/_internal/server/features/auctions/index.d.ts +5 -0
- package/dist/_internal/server/features/auctions/index.js +5 -0
- package/dist/_internal/server/features/auctions/og.d.ts +19 -0
- package/dist/_internal/server/features/auctions/og.js +51 -0
- package/dist/_internal/server/features/auctions/service.d.ts +13 -0
- package/dist/_internal/server/features/auctions/service.js +57 -0
- package/dist/_internal/server/features/auth/actions.d.ts +8 -0
- package/dist/_internal/server/features/auth/actions.js +8 -0
- package/dist/_internal/server/features/auth/index.d.ts +1 -0
- package/dist/_internal/server/features/auth/index.js +1 -0
- package/dist/_internal/server/features/blog/actions.d.ts +5 -0
- package/dist/_internal/server/features/blog/actions.js +51 -0
- package/dist/_internal/server/features/blog/data.d.ts +2 -0
- package/dist/_internal/server/features/blog/data.js +8 -0
- package/dist/_internal/server/features/blog/index.d.ts +5 -0
- package/dist/_internal/server/features/blog/index.js +5 -0
- package/dist/_internal/server/features/blog/og.d.ts +23 -0
- package/dist/_internal/server/features/blog/og.js +64 -0
- package/dist/_internal/server/features/blog/service.d.ts +3 -0
- package/dist/_internal/server/features/blog/service.js +18 -0
- package/dist/_internal/server/features/brands/actions.d.ts +4 -0
- package/dist/_internal/server/features/brands/actions.js +32 -0
- package/dist/_internal/server/features/brands/data.d.ts +12 -0
- package/dist/_internal/server/features/brands/data.js +16 -0
- package/dist/_internal/server/features/brands/index.d.ts +5 -0
- package/dist/_internal/server/features/brands/index.js +5 -0
- package/dist/_internal/server/features/brands/og.d.ts +17 -0
- package/dist/_internal/server/features/brands/og.js +37 -0
- package/dist/_internal/server/features/brands/service.d.ts +3 -0
- package/dist/_internal/server/features/brands/service.js +14 -0
- package/dist/_internal/server/features/bundles/data.d.ts +9 -0
- package/dist/_internal/server/features/bundles/data.js +9 -0
- package/dist/_internal/server/features/bundles/index.d.ts +2 -0
- package/dist/_internal/server/features/bundles/index.js +2 -0
- package/dist/_internal/server/features/cart/actions.d.ts +12 -0
- package/dist/_internal/server/features/cart/actions.js +35 -0
- package/dist/_internal/server/features/cart/data.d.ts +1 -0
- package/dist/_internal/server/features/cart/data.js +5 -0
- package/dist/_internal/server/features/cart/index.d.ts +4 -0
- package/dist/_internal/server/features/cart/index.js +4 -0
- package/dist/_internal/server/features/cart/service.d.ts +8 -0
- package/dist/_internal/server/features/cart/service.js +25 -0
- package/dist/_internal/server/features/categories/data.d.ts +13 -0
- package/dist/_internal/server/features/categories/data.js +40 -0
- package/dist/_internal/server/features/categories/index.d.ts +2 -0
- package/dist/_internal/server/features/categories/index.js +2 -0
- package/dist/_internal/server/features/checkout/actions.d.ts +35 -0
- package/dist/_internal/server/features/checkout/actions.js +327 -0
- package/dist/_internal/server/features/checkout/data.d.ts +13 -0
- package/dist/_internal/server/features/checkout/data.js +13 -0
- package/dist/_internal/server/features/checkout/index.d.ts +3 -0
- package/dist/_internal/server/features/checkout/index.js +3 -0
- package/dist/_internal/server/features/events/actions.d.ts +4 -0
- package/dist/_internal/server/features/events/actions.js +60 -0
- package/dist/_internal/server/features/events/data.d.ts +1 -0
- package/dist/_internal/server/features/events/data.js +5 -0
- package/dist/_internal/server/features/events/index.d.ts +5 -0
- package/dist/_internal/server/features/events/index.js +5 -0
- package/dist/_internal/server/features/events/og.d.ts +26 -0
- package/dist/_internal/server/features/events/og.js +87 -0
- package/dist/_internal/server/features/events/service.d.ts +2 -0
- package/dist/_internal/server/features/events/service.js +27 -0
- package/dist/_internal/server/features/grouped/data.d.ts +25 -0
- package/dist/_internal/server/features/grouped/data.js +116 -0
- package/dist/_internal/server/features/grouped/index.d.ts +2 -0
- package/dist/_internal/server/features/grouped/index.js +2 -0
- package/dist/_internal/server/features/history/actions.d.ts +8 -0
- package/dist/_internal/server/features/history/actions.js +15 -0
- package/dist/_internal/server/features/history/data.d.ts +7 -0
- package/dist/_internal/server/features/history/data.js +6 -0
- package/dist/_internal/server/features/history/index.d.ts +3 -0
- package/dist/_internal/server/features/history/index.js +3 -0
- package/dist/_internal/server/features/homepage/data.d.ts +18 -0
- package/dist/_internal/server/features/homepage/data.js +39 -0
- package/dist/_internal/server/features/homepage/index.d.ts +2 -0
- package/dist/_internal/server/features/homepage/index.js +2 -0
- package/dist/_internal/server/features/messages/actions.d.ts +6 -0
- package/dist/_internal/server/features/messages/actions.js +6 -0
- package/dist/_internal/server/features/messages/data.d.ts +10 -0
- package/dist/_internal/server/features/messages/data.js +24 -0
- package/dist/_internal/server/features/messages/index.d.ts +2 -0
- package/dist/_internal/server/features/messages/index.js +2 -0
- package/dist/_internal/server/features/orders/actions.d.ts +4 -0
- package/dist/_internal/server/features/orders/actions.js +50 -0
- package/dist/_internal/server/features/orders/adapters.d.ts +3 -0
- package/dist/_internal/server/features/orders/adapters.js +56 -0
- package/dist/_internal/server/features/orders/data.d.ts +10 -0
- package/dist/_internal/server/features/orders/data.js +18 -0
- package/dist/_internal/server/features/orders/index.d.ts +5 -0
- package/dist/_internal/server/features/orders/index.js +5 -0
- package/dist/_internal/server/features/orders/service.d.ts +4 -0
- package/dist/_internal/server/features/orders/service.js +30 -0
- package/dist/_internal/server/features/payments/actions.d.ts +30 -0
- package/dist/_internal/server/features/payments/actions.js +45 -0
- package/dist/_internal/server/features/payments/data.d.ts +11 -0
- package/dist/_internal/server/features/payments/data.js +14 -0
- package/dist/_internal/server/features/payments/index.d.ts +3 -0
- package/dist/_internal/server/features/payments/index.js +3 -0
- package/dist/_internal/server/features/pre-orders/actions.d.ts +7 -0
- package/dist/_internal/server/features/pre-orders/actions.js +26 -0
- package/dist/_internal/server/features/pre-orders/data.d.ts +4 -0
- package/dist/_internal/server/features/pre-orders/data.js +9 -0
- package/dist/_internal/server/features/pre-orders/index.d.ts +5 -0
- package/dist/_internal/server/features/pre-orders/index.js +5 -0
- package/dist/_internal/server/features/pre-orders/og.d.ts +19 -0
- package/dist/_internal/server/features/pre-orders/og.js +49 -0
- package/dist/_internal/server/features/pre-orders/service.d.ts +7 -0
- package/dist/_internal/server/features/pre-orders/service.js +30 -0
- package/dist/_internal/server/features/products/actions.d.ts +7 -0
- package/dist/_internal/server/features/products/actions.js +74 -0
- package/dist/_internal/server/features/products/data.d.ts +14 -0
- package/dist/_internal/server/features/products/data.js +48 -0
- package/dist/_internal/server/features/products/index.d.ts +5 -0
- package/dist/_internal/server/features/products/index.js +5 -0
- package/dist/_internal/server/features/products/og.d.ts +19 -0
- package/dist/_internal/server/features/products/og.js +43 -0
- package/dist/_internal/server/features/products/service.d.ts +11 -0
- package/dist/_internal/server/features/products/service.js +55 -0
- package/dist/_internal/server/features/profile/index.d.ts +1 -0
- package/dist/_internal/server/features/profile/index.js +1 -0
- package/dist/_internal/server/features/profile/og.d.ts +26 -0
- package/dist/_internal/server/features/profile/og.js +91 -0
- package/dist/_internal/server/features/promotions/actions.d.ts +9 -0
- package/dist/_internal/server/features/promotions/actions.js +38 -0
- package/dist/_internal/server/features/promotions/data.d.ts +1 -0
- package/dist/_internal/server/features/promotions/data.js +5 -0
- package/dist/_internal/server/features/promotions/index.d.ts +4 -0
- package/dist/_internal/server/features/promotions/index.js +4 -0
- package/dist/_internal/server/features/promotions/service.d.ts +3 -0
- package/dist/_internal/server/features/promotions/service.js +47 -0
- package/dist/_internal/server/features/reviews/actions.d.ts +4 -0
- package/dist/_internal/server/features/reviews/actions.js +66 -0
- package/dist/_internal/server/features/reviews/data.d.ts +10 -0
- package/dist/_internal/server/features/reviews/data.js +18 -0
- package/dist/_internal/server/features/reviews/index.d.ts +3 -0
- package/dist/_internal/server/features/reviews/index.js +3 -0
- package/dist/_internal/server/features/reviews/service.d.ts +5 -0
- package/dist/_internal/server/features/reviews/service.js +27 -0
- package/dist/_internal/server/features/scams/data.d.ts +10 -0
- package/dist/_internal/server/features/scams/data.js +22 -0
- package/dist/_internal/server/features/scams/index.d.ts +1 -0
- package/dist/_internal/server/features/scams/index.js +1 -0
- package/dist/_internal/server/features/search/actions.d.ts +15 -0
- package/dist/_internal/server/features/search/actions.js +18 -0
- package/dist/_internal/server/features/search/data.d.ts +15 -0
- package/dist/_internal/server/features/search/data.js +18 -0
- package/dist/_internal/server/features/search/index.d.ts +3 -0
- package/dist/_internal/server/features/search/index.js +2 -0
- package/dist/_internal/server/features/stores/data.d.ts +31 -0
- package/dist/_internal/server/features/stores/data.js +58 -0
- package/dist/_internal/server/features/stores/index.d.ts +3 -0
- package/dist/_internal/server/features/stores/index.js +3 -0
- package/dist/_internal/server/features/stores/og.d.ts +19 -0
- package/dist/_internal/server/features/stores/og.js +52 -0
- package/dist/_internal/server/features/sublisting-categories/data.d.ts +1 -0
- package/dist/_internal/server/features/sublisting-categories/data.js +5 -0
- package/dist/_internal/server/features/sublisting-categories/index.d.ts +2 -0
- package/dist/_internal/server/features/sublisting-categories/index.js +2 -0
- package/dist/_internal/server/features/sublisting-categories/og.d.ts +20 -0
- package/dist/_internal/server/features/sublisting-categories/og.js +56 -0
- package/dist/_internal/server/features/wishlist/actions.d.ts +13 -0
- package/dist/_internal/server/features/wishlist/actions.js +40 -0
- package/dist/_internal/server/features/wishlist/data.d.ts +8 -0
- package/dist/_internal/server/features/wishlist/data.js +9 -0
- package/dist/_internal/server/features/wishlist/index.d.ts +4 -0
- package/dist/_internal/server/features/wishlist/index.js +4 -0
- package/dist/_internal/server/index.d.ts +0 -0
- package/dist/_internal/server/index.js +4 -0
- package/dist/_internal/server/jobs/handlers/_helpers.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/_helpers.js +19 -0
- package/dist/_internal/server/jobs/handlers/adminAnalytics.d.ts +28 -0
- package/dist/_internal/server/jobs/handlers/adminAnalytics.js +98 -0
- package/dist/_internal/server/jobs/handlers/auctionSettlement.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/auctionSettlement.js +70 -0
- package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/autoPayoutEligibility.js +110 -0
- package/dist/_internal/server/jobs/handlers/cartPrune.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/cartPrune.js +13 -0
- package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/cleanupRtdbEvents.js +45 -0
- package/dist/_internal/server/jobs/handlers/countersReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/countersReconcile.js +109 -0
- package/dist/_internal/server/jobs/handlers/couponExpiry.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/couponExpiry.js +13 -0
- package/dist/_internal/server/jobs/handlers/dailyDataCleanup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/dailyDataCleanup.js +20 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +35 -0
- package/dist/_internal/server/jobs/handlers/index.js +35 -0
- package/dist/_internal/server/jobs/handlers/listingProcessor.d.ts +30 -0
- package/dist/_internal/server/jobs/handlers/listingProcessor.js +128 -0
- package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.d.ts +14 -0
- package/dist/_internal/server/jobs/handlers/mediaTmpCleanup.js +69 -0
- package/dist/_internal/server/jobs/handlers/messages.d.ts +45 -0
- package/dist/_internal/server/jobs/handlers/messages.js +45 -0
- package/dist/_internal/server/jobs/handlers/notificationPrune.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/notificationPrune.js +13 -0
- package/dist/_internal/server/jobs/handlers/offerExpiry.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/offerExpiry.js +50 -0
- package/dist/_internal/server/jobs/handlers/onBidPlaced.d.ts +12 -0
- package/dist/_internal/server/jobs/handlers/onBidPlaced.js +63 -0
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.d.ts +10 -0
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +136 -0
- package/dist/_internal/server/jobs/handlers/onOrderCreate.d.ts +14 -0
- package/dist/_internal/server/jobs/handlers/onOrderCreate.js +83 -0
- package/dist/_internal/server/jobs/handlers/onOrderStatusChange.d.ts +14 -0
- package/dist/_internal/server/jobs/handlers/onOrderStatusChange.js +141 -0
- package/dist/_internal/server/jobs/handlers/onProductWrite.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/onProductWrite.js +92 -0
- package/dist/_internal/server/jobs/handlers/onReviewWrite.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/onReviewWrite.js +51 -0
- package/dist/_internal/server/jobs/handlers/onStoreWrite.d.ts +10 -0
- package/dist/_internal/server/jobs/handlers/onStoreWrite.js +9 -0
- package/dist/_internal/server/jobs/handlers/payoutBatch.d.ts +11 -0
- package/dist/_internal/server/jobs/handlers/payoutBatch.js +104 -0
- package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/pendingOrderTimeout.js +33 -0
- package/dist/_internal/server/jobs/handlers/positionsReconcile.d.ts +7 -0
- package/dist/_internal/server/jobs/handlers/positionsReconcile.js +87 -0
- package/dist/_internal/server/jobs/handlers/productStatsSync.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/productStatsSync.js +36 -0
- package/dist/_internal/server/jobs/handlers/promotions.d.ts +12 -0
- package/dist/_internal/server/jobs/handlers/promotions.js +43 -0
- package/dist/_internal/server/jobs/handlers/storeAnalytics.d.ts +30 -0
- package/dist/_internal/server/jobs/handlers/storeAnalytics.js +109 -0
- package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/weeklyPayoutEligibility.js +87 -0
- package/dist/_internal/server/jobs/index.d.ts +4 -0
- package/dist/_internal/server/jobs/index.js +3 -0
- package/dist/_internal/server/jobs/runtime/adapters/firebase.d.ts +50 -0
- package/dist/_internal/server/jobs/runtime/adapters/firebase.js +156 -0
- package/dist/_internal/server/jobs/runtime/types.d.ts +52 -0
- package/dist/_internal/server/jobs/runtime/types.js +13 -0
- package/dist/_internal/shared/config/index.d.ts +1 -0
- package/dist/_internal/shared/config/index.js +1 -0
- package/dist/_internal/shared/config/schema.d.ts +82 -0
- package/dist/_internal/shared/config/schema.js +1 -0
- package/dist/_internal/shared/constants/index.d.ts +1 -0
- package/dist/_internal/shared/constants/index.js +1 -0
- package/dist/_internal/shared/errors/index.d.ts +24 -0
- package/dist/_internal/shared/errors/index.js +46 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +6 -0
- package/dist/_internal/shared/features/auctions/config.js +6 -0
- package/dist/_internal/shared/features/auctions/errors.d.ts +16 -0
- package/dist/_internal/shared/features/auctions/errors.js +31 -0
- package/dist/_internal/shared/features/auctions/schema.d.ts +30 -0
- package/dist/_internal/shared/features/auctions/schema.js +12 -0
- package/dist/_internal/shared/features/blog/config.d.ts +6 -0
- package/dist/_internal/shared/features/blog/config.js +6 -0
- package/dist/_internal/shared/features/blog/errors.d.ts +10 -0
- package/dist/_internal/shared/features/blog/errors.js +19 -0
- package/dist/_internal/shared/features/blog/schema.d.ts +81 -0
- package/dist/_internal/shared/features/blog/schema.js +17 -0
- package/dist/_internal/shared/features/brands/config.d.ts +4 -0
- package/dist/_internal/shared/features/brands/config.js +4 -0
- package/dist/_internal/shared/features/brands/errors.d.ts +7 -0
- package/dist/_internal/shared/features/brands/errors.js +13 -0
- package/dist/_internal/shared/features/brands/schema.d.ts +69 -0
- package/dist/_internal/shared/features/brands/schema.js +15 -0
- package/dist/_internal/shared/features/bundles/config.d.ts +6 -0
- package/dist/_internal/shared/features/bundles/config.js +6 -0
- package/dist/_internal/shared/features/cart/config.d.ts +3 -0
- package/dist/_internal/shared/features/cart/config.js +3 -0
- package/dist/_internal/shared/features/cart/errors.d.ts +10 -0
- package/dist/_internal/shared/features/cart/errors.js +19 -0
- package/dist/_internal/shared/features/cart/schema.d.ts +132 -0
- package/dist/_internal/shared/features/cart/schema.js +33 -0
- package/dist/_internal/shared/features/categories/config.d.ts +6 -0
- package/dist/_internal/shared/features/categories/config.js +6 -0
- package/dist/_internal/shared/features/checkout/config.d.ts +8 -0
- package/dist/_internal/shared/features/checkout/config.js +7 -0
- package/dist/_internal/shared/features/events/config.d.ts +5 -0
- package/dist/_internal/shared/features/events/config.js +5 -0
- package/dist/_internal/shared/features/events/errors.d.ts +16 -0
- package/dist/_internal/shared/features/events/errors.js +31 -0
- package/dist/_internal/shared/features/events/schema.d.ts +91 -0
- package/dist/_internal/shared/features/events/schema.js +21 -0
- package/dist/_internal/shared/features/grouped/config.d.ts +3 -0
- package/dist/_internal/shared/features/grouped/config.js +3 -0
- package/dist/_internal/shared/features/history/config.d.ts +2 -0
- package/dist/_internal/shared/features/history/config.js +2 -0
- package/dist/_internal/shared/features/homepage/config.d.ts +3 -0
- package/dist/_internal/shared/features/homepage/config.js +3 -0
- package/dist/_internal/shared/features/orders/config.d.ts +8 -0
- package/dist/_internal/shared/features/orders/config.js +8 -0
- package/dist/_internal/shared/features/orders/errors.d.ts +13 -0
- package/dist/_internal/shared/features/orders/errors.js +25 -0
- package/dist/_internal/shared/features/orders/schema.d.ts +114 -0
- package/dist/_internal/shared/features/orders/schema.js +33 -0
- package/dist/_internal/shared/features/payments/config.d.ts +2 -0
- package/dist/_internal/shared/features/payments/config.js +2 -0
- package/dist/_internal/shared/features/pre-orders/config.d.ts +4 -0
- package/dist/_internal/shared/features/pre-orders/config.js +4 -0
- package/dist/_internal/shared/features/pre-orders/errors.d.ts +13 -0
- package/dist/_internal/shared/features/pre-orders/errors.js +25 -0
- package/dist/_internal/shared/features/pre-orders/schema.d.ts +25 -0
- package/dist/_internal/shared/features/pre-orders/schema.js +10 -0
- package/dist/_internal/shared/features/products/config.d.ts +5 -0
- package/dist/_internal/shared/features/products/config.js +5 -0
- package/dist/_internal/shared/features/products/errors.d.ts +16 -0
- package/dist/_internal/shared/features/products/errors.js +31 -0
- package/dist/_internal/shared/features/products/schema.d.ts +364 -0
- package/dist/_internal/shared/features/products/schema.js +58 -0
- package/dist/_internal/shared/features/products/types.d.ts +46 -0
- package/dist/_internal/shared/features/products/types.js +1 -0
- package/dist/_internal/shared/features/promotions/config.d.ts +3 -0
- package/dist/_internal/shared/features/promotions/config.js +3 -0
- package/dist/_internal/shared/features/promotions/errors.d.ts +19 -0
- package/dist/_internal/shared/features/promotions/errors.js +37 -0
- package/dist/_internal/shared/features/promotions/schema.d.ts +242 -0
- package/dist/_internal/shared/features/promotions/schema.js +37 -0
- package/dist/_internal/shared/features/reviews/config.d.ts +8 -0
- package/dist/_internal/shared/features/reviews/config.js +8 -0
- package/dist/_internal/shared/features/reviews/errors.d.ts +13 -0
- package/dist/_internal/shared/features/reviews/errors.js +25 -0
- package/dist/_internal/shared/features/reviews/schema.d.ts +44 -0
- package/dist/_internal/shared/features/reviews/schema.js +18 -0
- package/dist/_internal/shared/features/stores/config.d.ts +4 -0
- package/dist/_internal/shared/features/stores/config.js +4 -0
- package/dist/_internal/shared/features/wishlist/config.d.ts +2 -0
- package/dist/_internal/shared/features/wishlist/config.js +2 -0
- package/dist/_internal/shared/features/wishlist/errors.d.ts +4 -0
- package/dist/_internal/shared/features/wishlist/errors.js +7 -0
- package/dist/_internal/shared/index.d.ts +2 -0
- package/dist/_internal/shared/index.js +4 -0
- package/dist/_internal/shared/serialization/index.d.ts +17 -0
- package/dist/_internal/shared/serialization/index.js +42 -0
- package/dist/_internal/shared/tokens/index.d.ts +137 -0
- package/dist/_internal/shared/tokens/index.js +159 -0
- package/dist/client-entry.d.ts +23 -0
- package/dist/client-entry.js +27 -0
- package/dist/client.d.ts +47 -5
- package/dist/client.js +68 -33
- package/dist/configs/eslint.d.ts +29 -0
- package/dist/configs/eslint.js +38 -0
- package/dist/configs/index.d.ts +14 -0
- package/dist/configs/index.js +14 -0
- package/dist/configs/next.d.ts +38 -0
- package/dist/configs/next.js +116 -0
- package/dist/configs/postcss.d.ts +22 -0
- package/dist/configs/postcss.js +22 -0
- package/dist/configs/tailwind.d.ts +59 -0
- package/dist/configs/tailwind.js +62 -0
- package/dist/constants/api-endpoints.d.ts +24 -0
- package/dist/constants/api-endpoints.js +8 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/limits.d.ts +15 -0
- package/dist/constants/limits.js +15 -0
- package/dist/contracts/client-auth.d.ts +2 -0
- package/dist/errors/messages.d.ts +23 -0
- package/dist/errors/messages.js +25 -0
- package/dist/features/about/components/PublicProfileView.js +16 -9
- package/dist/features/account/components/AddressBook.d.ts +2 -1
- package/dist/features/account/components/AddressBook.js +2 -2
- package/dist/features/account/components/UserReturnsView.d.ts +10 -0
- package/dist/features/account/components/UserReturnsView.js +5 -0
- package/dist/features/account/components/index.d.ts +2 -0
- package/dist/features/account/components/index.js +1 -0
- package/dist/features/account/hooks/useProfile.d.ts +2 -0
- package/dist/features/account/schemas/index.d.ts +18 -18
- package/dist/features/admin/actions/chat-actions.d.ts +1 -1
- package/dist/features/admin/actions/chat-actions.js +10 -10
- package/dist/features/admin/components/AdminBlogEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminBlogEditorView.js +16 -14
- package/dist/features/admin/components/AdminBlogView.js +6 -3
- package/dist/features/admin/components/AdminBrandEditorView.d.ts +3 -1
- package/dist/features/admin/components/AdminBrandEditorView.js +16 -14
- package/dist/features/admin/components/AdminBrandsView.js +6 -3
- package/dist/features/admin/components/AdminCategoriesView.js +6 -3
- package/dist/features/admin/components/AdminCategoryEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +16 -14
- package/dist/features/admin/components/AdminCouponEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminCouponEditorView.js +16 -14
- package/dist/features/admin/components/AdminCouponsView.js +6 -3
- package/dist/features/admin/components/AdminFaqEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminFaqEditorView.js +16 -14
- package/dist/features/admin/components/AdminFaqsView.js +6 -3
- package/dist/features/admin/components/AdminFeatureEditorView.d.ts +19 -0
- package/dist/features/admin/components/AdminFeatureEditorView.js +150 -0
- package/dist/features/admin/components/AdminFeaturesView.d.ts +4 -0
- package/dist/features/admin/components/AdminFeaturesView.js +95 -0
- package/dist/features/admin/components/AdminHistoryView.d.ts +4 -0
- package/dist/features/admin/components/AdminHistoryView.js +57 -0
- package/dist/features/admin/components/AdminMediaView.js +64 -2
- package/dist/features/admin/components/AdminOrdersView.js +31 -4
- package/dist/features/admin/components/AdminProductEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminProductEditorView.js +30 -19
- package/dist/features/admin/components/AdminProductsView.js +40 -3
- package/dist/features/admin/components/AdminSectionsView.js +138 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +22 -2
- package/dist/features/admin/components/AdminStoresView.js +5 -4
- package/dist/features/admin/components/AdminUserEditorView.d.ts +4 -1
- package/dist/features/admin/components/AdminUserEditorView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +1 -1
- package/dist/features/admin/components/AdminWishlistsView.js +17 -15
- package/dist/features/admin/components/DataTable.d.ts +2 -1
- package/dist/features/admin/components/DataTable.js +14 -12
- package/dist/features/admin/components/DrawerFormFooter.d.ts +9 -21
- package/dist/features/admin/components/DrawerFormFooter.js +10 -2
- package/dist/features/admin/components/QuickEditMenu.d.ts +20 -0
- package/dist/features/admin/components/QuickEditMenu.js +31 -0
- package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +11 -23
- package/dist/features/admin/components/index.d.ts +8 -0
- package/dist/features/admin/components/index.js +4 -0
- package/dist/features/admin/components/sections/adminSectionsBuildParse.d.ts +9 -1
- package/dist/features/admin/components/sections/adminSectionsBuildParse.js +169 -9
- package/dist/features/admin/components/sections/adminSectionsTypes.d.ts +62 -1
- package/dist/features/admin/components/sections/adminSectionsTypes.js +57 -4
- package/dist/features/admin/hooks/useChat.d.ts +1 -1
- package/dist/features/admin/repository/chat.repository.d.ts +2 -2
- package/dist/features/admin/repository/chat.repository.js +7 -7
- package/dist/features/admin/schemas/firestore.d.ts +42 -7
- package/dist/features/admin/schemas/firestore.js +7 -7
- package/dist/features/admin/types/product.types.d.ts +2 -2
- package/dist/features/auctions/actions/bid-actions.js +3 -2
- package/dist/features/auctions/components/AuctionDetailPageView.d.ts +11 -1
- package/dist/features/auctions/components/AuctionDetailPageView.js +80 -68
- package/dist/features/auctions/components/AuctionsListView.js +11 -6
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +2 -1
- package/dist/features/auctions/hooks/useAuctions.js +2 -1
- package/dist/features/auctions/repository/auctions.repository.js +4 -4
- package/dist/features/auctions/schemas/index.d.ts +24 -24
- package/dist/features/auctions/types/index.d.ts +2 -1
- package/dist/features/auth/hooks/useAuth.d.ts +8 -0
- package/dist/features/auth/hooks/useAuth.js +9 -0
- package/dist/features/auth/schemas/index.d.ts +2 -2
- package/dist/features/before-after/schemas/index.d.ts +2 -2
- package/dist/features/blog/actions/blog-actions.d.ts +63 -63
- package/dist/features/blog/components/BlogPostView.d.ts +3 -1
- package/dist/features/blog/components/BlogPostView.js +3 -2
- package/dist/features/blog/schemas/index.d.ts +41 -41
- package/dist/features/bundles/components/AdminBundleEditorView.d.ts +8 -0
- package/dist/features/bundles/components/AdminBundleEditorView.js +7 -0
- package/dist/features/bundles/components/BundleDetailPageView.d.ts +9 -0
- package/dist/features/bundles/components/BundleDetailPageView.js +45 -0
- package/dist/features/bundles/components/BundleForm.d.ts +12 -0
- package/dist/features/bundles/components/BundleForm.js +126 -0
- package/dist/features/bundles/components/BundleItemsPicker.d.ts +9 -0
- package/dist/features/bundles/components/BundleItemsPicker.js +77 -0
- package/dist/features/bundles/components/BundlesListingView.d.ts +17 -0
- package/dist/features/bundles/components/BundlesListingView.js +50 -0
- package/dist/features/bundles/components/FeaturedBundlesSection.d.ts +5 -0
- package/dist/features/bundles/components/FeaturedBundlesSection.js +55 -0
- package/dist/features/bundles/components/SellerBundleCreateView.d.ts +8 -0
- package/dist/features/bundles/components/SellerBundleCreateView.js +7 -0
- package/dist/features/bundles/components/SellerBundleEditView.d.ts +9 -0
- package/dist/features/bundles/components/SellerBundleEditView.js +7 -0
- package/dist/features/bundles/components/index.d.ts +16 -0
- package/dist/features/bundles/components/index.js +8 -0
- package/dist/features/bundles/constants/index.d.ts +32 -0
- package/dist/features/bundles/constants/index.js +35 -0
- package/dist/features/bundles/index.d.ts +2 -0
- package/dist/features/bundles/index.js +2 -0
- package/dist/features/bundles/repository/bundles.repository.d.ts +36 -0
- package/dist/features/bundles/repository/bundles.repository.js +148 -0
- package/dist/features/bundles/repository/index.d.ts +1 -0
- package/dist/features/bundles/repository/index.js +1 -0
- package/dist/features/bundles/schemas/firestore.d.ts +88 -0
- package/dist/features/bundles/schemas/firestore.js +29 -0
- package/dist/features/bundles/schemas/index.d.ts +1 -0
- package/dist/features/bundles/schemas/index.js +1 -0
- package/dist/features/cart/actions/cart-actions.js +2 -1
- package/dist/features/cart/repository/cart.repository.js +1 -2
- package/dist/features/cart/schemas/firestore.d.ts +9 -6
- package/dist/features/cart/schemas/firestore.js +1 -2
- package/dist/features/cart/schemas/index.d.ts +7 -7
- package/dist/features/cart/utils/guest-cart.d.ts +6 -0
- package/dist/features/cart/utils/guest-cart.js +14 -0
- package/dist/features/categories/components/BrandDetailPageView.d.ts +3 -1
- package/dist/features/categories/components/BrandDetailPageView.js +6 -6
- package/dist/features/categories/components/CategoryDetailPageView.js +3 -3
- package/dist/features/categories/components/CategoryProductsListing.js +1 -1
- package/dist/features/categories/schemas/index.d.ts +24 -24
- package/dist/features/collections/schemas/index.d.ts +3 -3
- package/dist/features/consultation/schemas/index.d.ts +7 -7
- package/dist/features/corporate/schemas/index.d.ts +1 -1
- package/dist/features/events/components/AdminEventEditorView.d.ts +2 -1
- package/dist/features/events/components/AdminEventEditorView.js +10 -8
- package/dist/features/events/components/AdminEventsView.js +6 -3
- package/dist/features/events/components/EventDetailView.d.ts +7 -1
- package/dist/features/events/components/EventDetailView.js +4 -1
- package/dist/features/events/components/EventRafflesSection.d.ts +12 -0
- package/dist/features/events/components/EventRafflesSection.js +17 -0
- package/dist/features/events/components/index.d.ts +2 -0
- package/dist/features/events/components/index.js +1 -0
- package/dist/features/events/schemas/index.d.ts +41 -41
- package/dist/features/faq/actions/faq-actions.d.ts +16 -16
- package/dist/features/faq/schemas/index.d.ts +12 -12
- package/dist/features/history/actions/history-actions.d.ts +24 -0
- package/dist/features/history/actions/history-actions.js +43 -0
- package/dist/features/history/actions/index.d.ts +1 -0
- package/dist/features/history/actions/index.js +1 -0
- package/dist/features/history/components/HistoryTracker.d.ts +8 -0
- package/dist/features/history/components/HistoryTracker.js +18 -0
- package/dist/features/history/hooks/useHistory.d.ts +16 -0
- package/dist/features/history/hooks/useHistory.js +148 -0
- package/dist/features/history/hooks/useHistoryMergeOnLogin.d.ts +1 -0
- package/dist/features/history/hooks/useHistoryMergeOnLogin.js +41 -0
- package/dist/features/history/index.d.ts +5 -0
- package/dist/features/history/index.js +4 -0
- package/dist/features/history/repository/user-history.repository.d.ts +59 -0
- package/dist/features/history/repository/user-history.repository.js +203 -0
- package/dist/features/history/server.d.ts +6 -0
- package/dist/features/history/server.js +6 -0
- package/dist/features/history/utils/guest-history.d.ts +24 -0
- package/dist/features/history/utils/guest-history.js +66 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +4 -4
- package/dist/features/homepage/components/BrandsSection.d.ts +7 -1
- package/dist/features/homepage/components/BrandsSection.js +26 -4
- package/dist/features/homepage/components/CollectionCardsSection.d.ts +13 -0
- package/dist/features/homepage/components/CollectionCardsSection.js +41 -0
- package/dist/features/homepage/components/FAQSection.d.ts +14 -4
- package/dist/features/homepage/components/FAQSection.js +63 -13
- package/dist/features/homepage/components/FeaturedProductsSection.d.ts +8 -1
- package/dist/features/homepage/components/FeaturedProductsSection.js +42 -2
- package/dist/features/homepage/components/MarketplaceHomepageView.js +17 -8
- package/dist/features/homepage/components/ShopByCategorySection.d.ts +8 -1
- package/dist/features/homepage/components/ShopByCategorySection.js +44 -4
- package/dist/features/homepage/components/SocialFeedSection.js +22 -2
- package/dist/features/homepage/components/SocialPostCard.js +20 -5
- package/dist/features/homepage/components/WelcomeSection.js +2 -2
- package/dist/features/homepage/components/WhatsAppCommunitySection.d.ts +0 -1
- package/dist/features/homepage/components/WhatsAppCommunitySection.js +4 -4
- package/dist/features/homepage/lib/live-stats.d.ts +18 -5
- package/dist/features/homepage/lib/live-stats.js +60 -29
- package/dist/features/homepage/lib/section-renderer.d.ts +2 -1
- package/dist/features/homepage/lib/section-renderer.js +50 -11
- package/dist/features/homepage/repository/carousels.repository.d.ts +38 -0
- package/dist/features/homepage/repository/carousels.repository.js +142 -0
- package/dist/features/homepage/schemas/firestore.d.ts +177 -21
- package/dist/features/homepage/schemas/firestore.js +24 -0
- package/dist/features/layout/AppLayoutShell.d.ts +3 -1
- package/dist/features/layout/AppLayoutShell.js +2 -2
- package/dist/features/layout/TitleBarLayout.d.ts +3 -1
- package/dist/features/layout/TitleBarLayout.js +5 -4
- package/dist/features/layout/index.d.ts +1 -1
- package/dist/features/media/MediaPickerModal.js +67 -3
- package/dist/features/media/types/index.d.ts +2 -2
- package/dist/features/media/upload/MediaUploadField.js +21 -5
- package/dist/features/messages/actions/index.d.ts +2 -0
- package/dist/features/messages/actions/index.js +2 -0
- package/dist/features/messages/actions/messages-actions.d.ts +15 -0
- package/dist/features/messages/actions/messages-actions.js +33 -0
- package/dist/features/messages/actions/ping-rtdb.d.ts +2 -0
- package/dist/features/messages/actions/ping-rtdb.js +24 -0
- package/dist/features/messages/hooks/useConversation.d.ts +22 -0
- package/dist/features/messages/hooks/useConversation.js +125 -0
- package/dist/features/messages/hooks/useConversations.d.ts +9 -0
- package/dist/features/messages/hooks/useConversations.js +62 -0
- package/dist/features/messages/index.d.ts +6 -0
- package/dist/features/messages/index.js +4 -0
- package/dist/features/messages/realtime.d.ts +32 -0
- package/dist/features/messages/realtime.js +39 -0
- package/dist/features/messages/repository/conversations.repository.d.ts +35 -0
- package/dist/features/messages/repository/conversations.repository.js +180 -0
- package/dist/features/messages/server.d.ts +6 -0
- package/dist/features/messages/server.js +6 -0
- package/dist/features/orders/schemas/firestore.d.ts +21 -0
- package/dist/features/orders/schemas/index.d.ts +28 -28
- package/dist/features/orders/utils/order-splitter.d.ts +12 -2
- package/dist/features/orders/utils/order-splitter.js +13 -2
- package/dist/features/payments/schemas/index.d.ts +6 -6
- package/dist/features/pre-orders/api/route.js +10 -11
- package/dist/features/pre-orders/components/PreOrderDetailPageView.d.ts +11 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +45 -35
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +24 -7
- package/dist/features/pre-orders/components/PreOrdersListView.js +10 -5
- package/dist/features/pre-orders/schemas/index.d.ts +6 -6
- package/dist/features/products/actions/product-actions.d.ts +2 -2
- package/dist/features/products/actions/product-actions.js +21 -16
- package/dist/features/products/api/[id]/route.js +4 -4
- package/dist/features/products/api/route.js +21 -6
- package/dist/features/products/components/AuctionsIndexListing.js +1 -1
- package/dist/features/products/components/CompareOverlay.d.ts +51 -0
- package/dist/features/products/components/CompareOverlay.js +154 -0
- package/dist/features/products/components/FeatureBadge.d.ts +28 -0
- package/dist/features/products/components/FeatureBadge.js +63 -0
- package/dist/features/products/components/GroupSettingsPanel.js +1 -1
- package/dist/features/products/components/NonRefundableConsentModal.d.ts +23 -0
- package/dist/features/products/components/NonRefundableConsentModal.js +55 -0
- package/dist/features/products/components/PrizeDrawsSection.d.ts +12 -0
- package/dist/features/products/components/PrizeDrawsSection.js +17 -0
- package/dist/features/products/components/ProductDetailPageView.d.ts +16 -1
- package/dist/features/products/components/ProductDetailPageView.js +65 -60
- package/dist/features/products/components/ProductFeaturesContext.d.ts +9 -0
- package/dist/features/products/components/ProductFeaturesContext.js +11 -0
- package/dist/features/products/components/ProductFeaturesSelector.d.ts +12 -0
- package/dist/features/products/components/ProductFeaturesSelector.js +72 -0
- package/dist/features/products/components/ProductForm.js +9 -3
- package/dist/features/products/components/ProductGrid.js +9 -3
- package/dist/features/products/components/ProductsIndexListing.js +24 -8
- package/dist/features/products/components/ProductsIndexPageView.js +12 -7
- package/dist/features/products/components/ShowGroupSection.js +2 -1
- package/dist/features/products/components/SublistingCarouselSection.js +3 -2
- package/dist/features/products/components/index.d.ts +12 -0
- package/dist/features/products/components/index.js +6 -0
- package/dist/features/products/constants/action-defs.d.ts +209 -0
- package/dist/features/products/constants/action-defs.js +270 -0
- package/dist/features/products/constants/product-features.constants.d.ts +23 -0
- package/dist/features/products/constants/product-features.constants.js +50 -0
- package/dist/features/products/hooks/useProducts.d.ts +1 -0
- package/dist/features/products/hooks/useProducts.js +15 -6
- package/dist/features/products/hooks/useRelatedProducts.d.ts +5 -0
- package/dist/features/products/hooks/useRelatedProducts.js +9 -1
- package/dist/features/products/index.d.ts +3 -1
- package/dist/features/products/index.js +3 -1
- package/dist/features/products/repository/loadProductFeatures.d.ts +2 -0
- package/dist/features/products/repository/loadProductFeatures.js +23 -0
- package/dist/features/products/repository/product-features.repository.d.ts +27 -0
- package/dist/features/products/repository/product-features.repository.js +141 -0
- package/dist/features/products/repository/product-templates.repository.d.ts +12 -0
- package/dist/features/products/repository/product-templates.repository.js +61 -0
- package/dist/features/products/repository/products.repository.d.ts +16 -1
- package/dist/features/products/repository/products.repository.js +126 -6
- package/dist/features/products/schemas/firestore.d.ts +43 -5
- package/dist/features/products/schemas/firestore.js +6 -7
- package/dist/features/products/schemas/index.d.ts +147 -51
- package/dist/features/products/schemas/index.js +32 -3
- package/dist/features/products/schemas/product-features.d.ts +84 -0
- package/dist/features/products/schemas/product-features.js +33 -0
- package/dist/features/products/schemas/product-features.validators.d.ts +107 -0
- package/dist/features/products/schemas/product-features.validators.js +64 -0
- package/dist/features/products/schemas/product-templates.d.ts +28 -0
- package/dist/features/products/schemas/product-templates.js +6 -0
- package/dist/features/products/types/index.d.ts +13 -5
- package/dist/features/products/utils/listing-type.d.ts +23 -2
- package/dist/features/products/utils/listing-type.js +14 -7
- package/dist/features/products/utils/sanitize.d.ts +2 -0
- package/dist/features/products/utils/sanitize.js +25 -0
- package/dist/features/promotions/actions/coupon-actions.d.ts +2 -2
- package/dist/features/promotions/components/CouponsIndexListing.d.ts +4 -4
- package/dist/features/promotions/components/CouponsIndexListing.js +3 -3
- package/dist/features/promotions/hooks/useCouponValidate.d.ts +2 -2
- package/dist/features/promotions/repository/coupons.repository.d.ts +2 -2
- package/dist/features/promotions/repository/coupons.repository.js +5 -5
- package/dist/features/promotions/schemas/index.d.ts +18 -18
- package/dist/features/reviews/schemas/index.d.ts +16 -16
- package/dist/features/search/actions/search-actions.js +4 -5
- package/dist/features/search/api/route.js +13 -10
- package/dist/features/search/columns/index.d.ts +1 -1
- package/dist/features/search/columns/index.js +4 -4
- package/dist/features/search/repository/search.repository.js +4 -6
- package/dist/features/search/schemas/index.d.ts +5 -5
- package/dist/features/search/types/index.d.ts +4 -3
- package/dist/features/seller/actions/offer-actions.js +1 -2
- package/dist/features/seller/components/BrandInlineSelect.d.ts +9 -0
- package/dist/features/seller/components/BrandInlineSelect.js +26 -0
- package/dist/features/seller/components/CategoryInlineSelect.d.ts +9 -0
- package/dist/features/seller/components/CategoryInlineSelect.js +26 -0
- package/dist/features/seller/components/SellerFeaturesView.d.ts +1 -0
- package/dist/features/seller/components/SellerFeaturesView.js +61 -0
- package/dist/features/seller/components/SellerProductShell.d.ts +15 -1
- package/dist/features/seller/components/SellerProductShell.js +7 -7
- package/dist/features/seller/components/SellerProductsView.js +17 -17
- package/dist/features/seller/components/SellerStorefrontView.d.ts +7 -0
- package/dist/features/seller/components/SellerStorefrontView.js +12 -2
- package/dist/features/seller/components/analytics/SellerRevenueChart.js +9 -17
- package/dist/features/seller/components/index.d.ts +6 -0
- package/dist/features/seller/components/index.js +4 -0
- package/dist/features/seller/schemas/index.d.ts +26 -26
- package/dist/features/shell/FormShell.d.ts +9 -1
- package/dist/features/shell/FormShell.js +5 -3
- package/dist/features/stores/actions/store-query-actions.js +2 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +11 -15
- package/dist/features/stores/api/[storeSlug]/products/route.js +11 -15
- package/dist/features/stores/api/route.js +12 -14
- package/dist/features/stores/components/StoreAuctionsListing.d.ts +2 -4
- package/dist/features/stores/components/StoreAuctionsListing.js +3 -4
- package/dist/features/stores/components/StoreAuctionsPageView.js +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +3 -3
- package/dist/features/stores/components/StorePreOrdersListing.d.ts +1 -3
- package/dist/features/stores/components/StorePreOrdersListing.js +2 -3
- package/dist/features/stores/components/StorePreOrdersPageView.js +1 -1
- package/dist/features/stores/components/StoreProductsListing.d.ts +2 -4
- package/dist/features/stores/components/StoreProductsListing.js +2 -3
- package/dist/features/stores/components/StoreProductsPageView.d.ts +4 -1
- package/dist/features/stores/components/StoreProductsPageView.js +17 -11
- package/dist/features/stores/repository/store.repository.d.ts +10 -0
- package/dist/features/stores/repository/store.repository.js +39 -0
- package/dist/features/stores/schemas/firestore.d.ts +7 -0
- package/dist/features/stores/schemas/index.d.ts +8 -8
- package/dist/features/stores/types/index.d.ts +4 -3
- package/dist/features/wishlist/actions/wishlist-actions.d.ts +8 -6
- package/dist/features/wishlist/actions/wishlist-actions.js +9 -7
- package/dist/features/wishlist/components/WishlistCapWatcher.d.ts +1 -0
- package/dist/features/wishlist/components/WishlistCapWatcher.js +24 -0
- package/dist/features/wishlist/components/index.d.ts +1 -0
- package/dist/features/wishlist/components/index.js +1 -0
- package/dist/features/wishlist/hooks/useWishlistCount.d.ts +17 -0
- package/dist/features/wishlist/hooks/useWishlistCount.js +36 -1
- package/dist/features/wishlist/index.d.ts +2 -0
- package/dist/features/wishlist/index.js +1 -0
- package/dist/features/wishlist/repository/user-wishlist.repository.d.ts +52 -7
- package/dist/features/wishlist/repository/user-wishlist.repository.js +154 -44
- package/dist/features/wishlist/schemas/index.d.ts +2 -2
- package/dist/features/wishlist/server.d.ts +1 -1
- package/dist/features/wishlist/server.js +1 -1
- package/dist/features/wishlist/types/index.d.ts +2 -2
- package/dist/index.d.ts +87 -5
- package/dist/index.js +101 -12
- package/dist/next/api/routeHandler.d.ts +7 -0
- package/dist/next/api/routeHandler.js +8 -0
- package/dist/next/routing/route-map.d.ts +68 -0
- package/dist/next/routing/route-map.js +32 -0
- package/dist/providers/db-firebase/filter-aliases.d.ts +20 -0
- package/dist/providers/db-firebase/filter-aliases.js +29 -0
- package/dist/providers/db-firebase/index.d.ts +2 -2
- package/dist/providers/db-firebase/index.js +1 -1
- package/dist/providers/db-firebase/sieve.d.ts +9 -0
- package/dist/providers/db-firebase/sieve.js +24 -6
- package/dist/providers/firebase-client/auth.d.ts +1 -0
- package/dist/providers/firebase-client/auth.js +9 -1
- package/dist/providers/shipping-shiprocket/index.d.ts +9 -0
- package/dist/providers/shipping-shiprocket/index.js +11 -0
- package/dist/react/hooks/use-action-dispatch.d.ts +25 -0
- package/dist/react/hooks/use-action-dispatch.js +30 -0
- package/dist/react/hooks/use-panel-url-sync.d.ts +15 -0
- package/dist/react/hooks/use-panel-url-sync.js +46 -0
- package/dist/react/hooks/useInfiniteScroll.d.ts +52 -0
- package/dist/react/hooks/useInfiniteScroll.js +45 -0
- package/dist/repositories/index.d.ts +9 -1
- package/dist/repositories/index.js +8 -1
- package/dist/seed/_bundle-constants.d.ts +14 -0
- package/dist/seed/_bundle-constants.js +14 -0
- package/dist/seed/actions/demo-seed-actions.d.ts +1 -1
- package/dist/seed/bids-seed-data.js +165 -0
- package/dist/seed/blog-posts-seed-data.js +393 -0
- package/dist/seed/bundles-seed-data.d.ts +13 -0
- package/dist/seed/bundles-seed-data.js +229 -0
- package/dist/seed/carousels-seed-data.d.ts +2 -0
- package/dist/seed/carousels-seed-data.js +16 -0
- package/dist/seed/cart-seed-data.js +161 -16
- package/dist/seed/categories-seed-data.js +168 -0
- package/dist/seed/coupons-seed-data.js +174 -0
- package/dist/seed/events-seed-data.js +161 -0
- package/dist/seed/history-seed-data.d.ts +19 -0
- package/dist/seed/history-seed-data.js +61 -0
- package/dist/seed/homepage-sections-seed-data.js +97 -1
- package/dist/seed/index.d.ts +4 -3
- package/dist/seed/index.js +9 -3
- package/dist/seed/manifest.js +23 -1
- package/dist/seed/notifications-seed-data.js +60 -0
- package/dist/seed/orders-seed-data.js +2 -2
- package/dist/seed/product-features-seed-data.d.ts +10 -0
- package/dist/seed/product-features-seed-data.js +162 -0
- package/dist/seed/products-auctions-seed-data.d.ts +6 -1
- package/dist/seed/products-auctions-seed-data.js +495 -24
- package/dist/seed/products-preorders-seed-data.d.ts +6 -1
- package/dist/seed/products-preorders-seed-data.js +27 -18
- package/dist/seed/products-standard-seed-data.d.ts +5 -0
- package/dist/seed/products-standard-seed-data.js +208 -297
- package/dist/seed/runner.js +95 -16
- package/dist/seed/server.d.ts +2 -0
- package/dist/seed/server.js +7 -0
- package/dist/seed/site-settings-seed-data.js +11 -1
- package/dist/seed/types.d.ts +58 -1
- package/dist/seed/types.js +14 -1
- package/dist/seed/wishlists-seed-data.d.ts +14 -7
- package/dist/seed/wishlists-seed-data.js +52 -109
- package/dist/seo/json-ld.d.ts +2 -1
- package/dist/server-entry.d.ts +60 -0
- package/dist/server-entry.js +93 -0
- package/dist/server.d.ts +26 -3
- package/dist/server.js +39 -7
- package/dist/stores/panel-store.d.ts +9 -0
- package/dist/stores/panel-store.js +8 -0
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/tokens.css +182 -12
- package/dist/ui/DataTable.style.css +192 -190
- package/dist/ui/components/Accordion.style.css +82 -82
- package/dist/ui/components/ActiveFilterChips.style.css +12 -12
- package/dist/ui/components/Alert.style.css +187 -187
- package/dist/ui/components/Avatar.style.css +71 -71
- package/dist/ui/components/AvatarDisplay.style.css +3 -3
- package/dist/ui/components/Badge.style.css +114 -114
- package/dist/ui/components/BaseListingCard.style.css +86 -86
- package/dist/ui/components/Breadcrumb.style.css +10 -10
- package/dist/ui/components/BulkActionBar.style.css +196 -196
- package/dist/ui/components/BulkActionsBar.d.ts +2 -0
- package/dist/ui/components/BulkActionsBar.js +5 -2
- package/dist/ui/components/Button.d.ts +3 -1
- package/dist/ui/components/Button.js +12 -2
- package/dist/ui/components/Button.style.css +160 -160
- package/dist/ui/components/Card.style.css +190 -190
- package/dist/ui/components/Checkbox.style.css +111 -111
- package/dist/ui/components/ConfirmDeleteModal.style.css +89 -89
- package/dist/ui/components/DashboardStatsCard.style.css +68 -68
- package/dist/ui/components/DescriptionField.style.css +36 -36
- package/dist/ui/components/DetailViewShell.js +1 -2
- package/dist/ui/components/Divider.style.css +39 -39
- package/dist/ui/components/Drawer.style.css +150 -150
- package/dist/ui/components/Dropdown.style.css +110 -110
- package/dist/ui/components/DynamicSelect.style.css +101 -101
- package/dist/ui/components/EmptyState.style.css +2 -2
- package/dist/ui/components/FilterDrawer.style.css +61 -61
- package/dist/ui/components/FlowDiagram.style.css +3 -3
- package/dist/ui/components/Form.style.css +27 -27
- package/dist/ui/components/FormActionBar.d.ts +22 -0
- package/dist/ui/components/FormActionBar.js +8 -0
- package/dist/ui/components/FormActionBar.style.css +77 -0
- package/dist/ui/components/FormField.style.css +30 -30
- package/dist/ui/components/HorizontalScroller.style.css +10 -10
- package/dist/ui/components/IconButton.style.css +103 -103
- package/dist/ui/components/ImageGallery.style.css +4 -4
- package/dist/ui/components/InlineCreateSelect.d.ts +13 -3
- package/dist/ui/components/InlineCreateSelect.js +9 -4
- package/dist/ui/components/Input.style.css +28 -28
- package/dist/ui/components/Layout.d.ts +2 -0
- package/dist/ui/components/Layout.js +2 -0
- package/dist/ui/components/Layout.style.css +22 -5
- package/dist/ui/components/ListingLayout.style.css +491 -491
- package/dist/ui/components/Modal.style.css +106 -106
- package/dist/ui/components/Pagination.style.css +76 -76
- package/dist/ui/components/PasswordStrengthIndicator.style.css +56 -56
- package/dist/ui/components/PriceDisplay.style.css +47 -47
- package/dist/ui/components/Progress.style.css +81 -81
- package/dist/ui/components/Radio.style.css +153 -153
- package/dist/ui/components/RatingDisplay.style.css +50 -50
- package/dist/ui/components/RowActionMenu.style.css +91 -91
- package/dist/ui/components/SectionTabs.style.css +18 -18
- package/dist/ui/components/Select.style.css +177 -177
- package/dist/ui/components/SideDrawer.style.css +206 -206
- package/dist/ui/components/SideModal.style.css +73 -73
- package/dist/ui/components/SiteLogo.d.ts +26 -0
- package/dist/ui/components/SiteLogo.js +18 -0
- package/dist/ui/components/Skeleton.style.css +55 -55
- package/dist/ui/components/SkipToMain.style.css +3 -3
- package/dist/ui/components/Slider.style.css +15 -15
- package/dist/ui/components/Spinner.style.css +84 -84
- package/dist/ui/components/StarRating.style.css +44 -44
- package/dist/ui/components/StatsGrid.style.css +96 -96
- package/dist/ui/components/StepperNav.style.css +110 -110
- package/dist/ui/components/SummaryCard.style.css +80 -82
- package/dist/ui/components/TabStrip.style.css +97 -97
- package/dist/ui/components/TablePagination.style.css +89 -89
- package/dist/ui/components/Tabs.style.css +44 -44
- package/dist/ui/components/TagInput.style.css +121 -121
- package/dist/ui/components/TextLink.style.css +94 -94
- package/dist/ui/components/Textarea.style.css +30 -30
- package/dist/ui/components/Toast.style.css +112 -112
- package/dist/ui/components/Toggle.style.css +105 -105
- package/dist/ui/components/Tooltip.style.css +114 -114
- package/dist/ui/components/Typography.style.css +178 -178
- package/dist/ui/components/UnsavedChangesModal.style.css +1 -1
- package/dist/ui/components/ViewToggle.style.css +8 -8
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.js +2 -0
- package/dist/ui/rich-text/RichText.style.css +40 -40
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/listing-params.d.ts +86 -0
- package/dist/utils/listing-params.js +121 -0
- package/dist/validation/schemas.d.ts +22 -22
- package/package.json +62 -10
- package/scripts/audit-violations.mjs +77 -0
- package/scripts/init-config.mjs +76 -0
- package/scripts/labels-extract.mjs +64 -0
- package/scripts/seed-cli-loader.mjs +37 -0
- package/scripts/seed-cli.mjs +660 -0
- package/scripts/sieve-audit.mjs +475 -0
- package/scripts/smoke-bundle.mjs +60 -0
- package/scripts/smoke-ssr.mjs +81 -0
- package/scripts/smoke-theme.mjs +105 -0
- package/scripts/verify-css-build.mjs +49 -0
- package/scripts/verify-entries.mjs +55 -0
- package/tsconfig.base.json +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ProductDetailView, ProductGrid, ProductCard, ProductForm, } from "../../../../features/products/components/index";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
/** Union of all feature label namespaces — extended as features migrate to _internal/ */
|
|
3
|
+
export type AppkitLabelSet = Record<string, Record<string, string>>;
|
|
4
|
+
export declare function LabelsProvider({ value, children, }: {
|
|
5
|
+
value: AppkitLabelSet;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the label map for a given namespace key.
|
|
10
|
+
* Falls back to an empty object when the namespace was not supplied,
|
|
11
|
+
* so components using DEFAULT_*_LABELS fallbacks remain functional.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useLabels<K extends string>(key: K): Record<string, string>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* LabelsProvider — zero-dependency i18n bridge for appkit components.
|
|
5
|
+
*
|
|
6
|
+
* appkit ships NO translation bundles and makes NO calls to next-intl,
|
|
7
|
+
* react-intl, or any other i18n library. Instead, every component that
|
|
8
|
+
* renders visible text accepts a `labels` prop typed as a feature-scoped
|
|
9
|
+
* record. Default values are English fallbacks for development only.
|
|
10
|
+
*
|
|
11
|
+
* For shells that render many descendant components, compose a single
|
|
12
|
+
* AppkitLabelSet and pass it once through LabelsProvider at layout level.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // layout.tsx
|
|
16
|
+
* const t = await getTranslations({ locale, namespace: "appkit" });
|
|
17
|
+
* const labels: AppkitLabelSet = {
|
|
18
|
+
* "products.detail": { addToCart: t("products.detail.addToCart"), ... },
|
|
19
|
+
* };
|
|
20
|
+
* return <LabelsProvider value={labels}>{children}</LabelsProvider>;
|
|
21
|
+
*
|
|
22
|
+
* // ProductDetailView.tsx (inside appkit)
|
|
23
|
+
* const t = useLabels("products.detail");
|
|
24
|
+
* // t.addToCart → consumer-supplied string (or DEFAULT fallback)
|
|
25
|
+
*/
|
|
26
|
+
import { createContext, useContext } from "react";
|
|
27
|
+
const LabelsContext = createContext({});
|
|
28
|
+
export function LabelsProvider({ value, children, }) {
|
|
29
|
+
return (_jsx(LabelsContext.Provider, { value: value, children: children }));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the label map for a given namespace key.
|
|
33
|
+
* Falls back to an empty object when the namespace was not supplied,
|
|
34
|
+
* so components using DEFAULT_*_LABELS fallbacks remain functional.
|
|
35
|
+
*/
|
|
36
|
+
export function useLabels(key) {
|
|
37
|
+
return useContext(LabelsContext)[key] ?? {};
|
|
38
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppShell — the topmost layout chrome for any consumer surface.
|
|
3
|
+
*
|
|
4
|
+
* Slot-driven by design. Every region accepts a `renderXxx` prop or a
|
|
5
|
+
* `slotXxx` ReactNode so consumers can swap individual pieces without
|
|
6
|
+
* forking the shell.
|
|
7
|
+
*
|
|
8
|
+
* Example:
|
|
9
|
+
* <AppShell
|
|
10
|
+
* slotHeader={<MyHeader />}
|
|
11
|
+
* slotFooter={<MyFooter />}
|
|
12
|
+
* renderSidebar={(ctx) => <MyNav active={ctx.path} />}
|
|
13
|
+
* >
|
|
14
|
+
* {children}
|
|
15
|
+
* </AppShell>
|
|
16
|
+
*/
|
|
17
|
+
import * as React from "react";
|
|
18
|
+
export interface AppShellRenderContext {
|
|
19
|
+
/** Current path (consumer-supplied; this scaffold is path-agnostic). */
|
|
20
|
+
path?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface AppShellProps {
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
/** Static header content. Use `renderHeader` if you need access to context. */
|
|
25
|
+
slotHeader?: React.ReactNode;
|
|
26
|
+
/** Static footer content. */
|
|
27
|
+
slotFooter?: React.ReactNode;
|
|
28
|
+
/** Static sidebar content. */
|
|
29
|
+
slotSidebar?: React.ReactNode;
|
|
30
|
+
/** Function header — wins over slotHeader if both are provided. */
|
|
31
|
+
renderHeader?: (ctx: AppShellRenderContext) => React.ReactNode;
|
|
32
|
+
renderFooter?: (ctx: AppShellRenderContext) => React.ReactNode;
|
|
33
|
+
renderSidebar?: (ctx: AppShellRenderContext) => React.ReactNode;
|
|
34
|
+
/** Path passed through to render functions. */
|
|
35
|
+
path?: string;
|
|
36
|
+
/** Extra className applied to the root <div>. */
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function AppShell({ children, slotHeader, slotFooter, slotSidebar, renderHeader, renderFooter, renderSidebar, path, className, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
export function AppShell({ children, slotHeader, slotFooter, slotSidebar, renderHeader, renderFooter, renderSidebar, path, className, }) {
|
|
4
|
+
const ctx = { path };
|
|
5
|
+
const header = renderHeader ? renderHeader(ctx) : slotHeader;
|
|
6
|
+
const footer = renderFooter ? renderFooter(ctx) : slotFooter;
|
|
7
|
+
const sidebar = renderSidebar ? renderSidebar(ctx) : slotSidebar;
|
|
8
|
+
return (_jsxs("div", { className: `appkit-app-shell flex min-h-screen flex-col ${className ?? ""}`, children: [header ? (_jsx("header", { className: "sticky top-0 z-30 w-full", "data-appshell-slot": "header", children: header })) : null, _jsxs("div", { className: "flex flex-1", children: [sidebar ? (_jsx("aside", { className: "hidden lg:block lg:w-64 lg:shrink-0", "data-appshell-slot": "sidebar", children: sidebar })) : null, _jsx("main", { className: "min-w-0 flex-1", "data-appshell-slot": "main", children: children })] }), footer ? (_jsx("footer", { className: "w-full", "data-appshell-slot": "footer", children: footer })) : null] }));
|
|
9
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashboardScaffold — admin / seller / user dashboard chrome.
|
|
3
|
+
*
|
|
4
|
+
* Responsive nav strategy (mobile-first):
|
|
5
|
+
* xs / sm — bottom nav bar (visible <lg)
|
|
6
|
+
* md — off-canvas drawer triggered by `slotMenuToggle`
|
|
7
|
+
* lg+ — sticky left sidebar (always visible)
|
|
8
|
+
*
|
|
9
|
+
* Drives nav rendering through `renderNav` so consumers can pipe in any
|
|
10
|
+
* nav config (admin/store/user groups). The scaffold owns the responsive
|
|
11
|
+
* placement; the consumer owns the items.
|
|
12
|
+
*/
|
|
13
|
+
import * as React from "react";
|
|
14
|
+
export interface DashboardScaffoldRenderContext {
|
|
15
|
+
/** Whether the off-canvas drawer is open. */
|
|
16
|
+
drawerOpen: boolean;
|
|
17
|
+
/** Imperatively toggle the drawer (consumer-supplied trigger calls this). */
|
|
18
|
+
toggleDrawer: () => void;
|
|
19
|
+
}
|
|
20
|
+
export interface DashboardScaffoldProps {
|
|
21
|
+
children: React.ReactNode;
|
|
22
|
+
/** Top breadcrumb / page-title strip. */
|
|
23
|
+
slotPageHeader?: React.ReactNode;
|
|
24
|
+
/** Navigation items — rendered into all three placements (sidebar, drawer, bottom). */
|
|
25
|
+
renderNav?: (ctx: DashboardScaffoldRenderContext) => React.ReactNode;
|
|
26
|
+
/** Compact bottom nav (mobile only). If omitted, falls back to renderNav. */
|
|
27
|
+
renderBottomNav?: (ctx: DashboardScaffoldRenderContext) => React.ReactNode;
|
|
28
|
+
/** Trigger element that toggles the off-canvas drawer (md only). */
|
|
29
|
+
slotMenuToggle?: React.ReactNode;
|
|
30
|
+
/** Initial drawer-open state. */
|
|
31
|
+
initialDrawerOpen?: boolean;
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function DashboardScaffold({ children, slotPageHeader, renderNav, renderBottomNav, slotMenuToggle, initialDrawerOpen, className, }: DashboardScaffoldProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* DashboardScaffold — admin / seller / user dashboard chrome.
|
|
5
|
+
*
|
|
6
|
+
* Responsive nav strategy (mobile-first):
|
|
7
|
+
* xs / sm — bottom nav bar (visible <lg)
|
|
8
|
+
* md — off-canvas drawer triggered by `slotMenuToggle`
|
|
9
|
+
* lg+ — sticky left sidebar (always visible)
|
|
10
|
+
*
|
|
11
|
+
* Drives nav rendering through `renderNav` so consumers can pipe in any
|
|
12
|
+
* nav config (admin/store/user groups). The scaffold owns the responsive
|
|
13
|
+
* placement; the consumer owns the items.
|
|
14
|
+
*/
|
|
15
|
+
import * as React from "react";
|
|
16
|
+
export function DashboardScaffold({ children, slotPageHeader, renderNav, renderBottomNav, slotMenuToggle, initialDrawerOpen = false, className, }) {
|
|
17
|
+
const [drawerOpen, setDrawerOpen] = React.useState(initialDrawerOpen);
|
|
18
|
+
const toggleDrawer = React.useCallback(() => setDrawerOpen((v) => !v), []);
|
|
19
|
+
const ctx = { drawerOpen, toggleDrawer };
|
|
20
|
+
const nav = renderNav ? renderNav(ctx) : null;
|
|
21
|
+
const bottomNav = renderBottomNav ? renderBottomNav(ctx) : nav;
|
|
22
|
+
return (_jsxs("div", { className: `appkit-dashboard-scaffold flex min-h-screen ${className ?? ""}`, children: [nav ? (_jsx("aside", { className: "sticky top-0 hidden h-screen w-64 shrink-0 overflow-y-auto border-r border-[var(--appkit-color-border,#e5e7eb)] lg:block", "data-dashboard-slot": "sidebar", children: nav })) : null, nav ? (_jsxs("div", { className: `fixed inset-0 z-40 transition-transform md:block lg:hidden ${drawerOpen ? "translate-x-0" : "-translate-x-full"}`, "data-dashboard-slot": "drawer", "aria-hidden": !drawerOpen, children: [_jsx("div", { className: "absolute inset-0 bg-black/40", onClick: () => setDrawerOpen(false), role: "presentation" }), _jsx("nav", { className: "relative h-full w-64 overflow-y-auto bg-[var(--appkit-color-surface,#ffffff)] shadow-xl", children: nav })] })) : null, _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [(slotPageHeader || slotMenuToggle) && (_jsxs("div", { className: "sticky top-0 z-20 flex items-center gap-3 border-b border-[var(--appkit-color-border,#e5e7eb)] bg-[var(--appkit-color-surface,#ffffff)] px-4 py-2", "data-dashboard-slot": "page-header", children: [slotMenuToggle ? (_jsx("span", { className: "lg:hidden", onClick: toggleDrawer, role: "presentation", children: slotMenuToggle })) : null, _jsx("div", { className: "min-w-0 flex-1", children: slotPageHeader })] })), _jsx("main", { className: "min-w-0 flex-1 pb-20 lg:pb-0", "data-dashboard-slot": "main", children: children }), bottomNav ? (_jsx("nav", { className: "fixed bottom-0 left-0 right-0 z-30 border-t border-[var(--appkit-color-border,#e5e7eb)] bg-[var(--appkit-color-surface,#ffffff)] lg:hidden", "data-dashboard-slot": "bottom-nav", children: bottomNav })) : null] })] }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account server actions — thin re-exports from `features/account/actions`.
|
|
3
|
+
* Consumers should import from this `_internal/server/features/account/`
|
|
4
|
+
* path so future refactors can rewire the source of truth without touching
|
|
5
|
+
* route shims.
|
|
6
|
+
*/
|
|
7
|
+
export { createAddressForUser as createAddressForUserAction, updateAddressForUser as updateAddressForUserAction, deleteAddressForUser as deleteAddressForUserAction, setDefaultAddressForUser as setDefaultAddressForUserAction, listAddressesForUser as listAddressesForUserAction, getAddressByIdForUser as getAddressByIdForUserAction, } from "../../../../features/account/actions/address-actions";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account server actions — thin re-exports from `features/account/actions`.
|
|
3
|
+
* Consumers should import from this `_internal/server/features/account/`
|
|
4
|
+
* path so future refactors can rewire the source of truth without touching
|
|
5
|
+
* route shims.
|
|
6
|
+
*/
|
|
7
|
+
export { createAddressForUser as createAddressForUserAction, updateAddressForUser as updateAddressForUserAction, deleteAddressForUser as deleteAddressForUserAction, setDefaultAddressForUser as setDefaultAddressForUserAction, listAddressesForUser as listAddressesForUserAction, getAddressByIdForUser as getAddressByIdForUserAction, } from "../../../../features/account/actions/address-actions";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account data layer — server-only fetchers with React.cache dedup so a
|
|
3
|
+
* page + its generateMetadata share one Firestore read per request.
|
|
4
|
+
*/
|
|
5
|
+
export interface AccountDataOptions {
|
|
6
|
+
/** Reserved for future overrides. */
|
|
7
|
+
_reserved?: never;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Fetch the full account profile for the given user UID. Returns `null` when
|
|
11
|
+
* the user document is missing.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getAccountForDetail: (uid: string, _opts?: AccountDataOptions) => Promise<import("../../../..").UserDocument | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch the full address book for the given user UID. Empty array on no UID.
|
|
16
|
+
*/
|
|
17
|
+
export declare const listAddressesForUser: (uid: string, _opts?: AccountDataOptions) => Promise<import("../../../..").AddressDocument[]>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account data layer — server-only fetchers with React.cache dedup so a
|
|
3
|
+
* page + its generateMetadata share one Firestore read per request.
|
|
4
|
+
*/
|
|
5
|
+
import { cache } from "react";
|
|
6
|
+
import { userRepository, addressRepository } from "../../../../repositories";
|
|
7
|
+
/**
|
|
8
|
+
* Fetch the full account profile for the given user UID. Returns `null` when
|
|
9
|
+
* the user document is missing.
|
|
10
|
+
*/
|
|
11
|
+
export const getAccountForDetail = cache(async (uid, _opts) => {
|
|
12
|
+
void _opts;
|
|
13
|
+
if (!uid)
|
|
14
|
+
return null;
|
|
15
|
+
return userRepository.findById(uid);
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Fetch the full address book for the given user UID. Empty array on no UID.
|
|
19
|
+
*/
|
|
20
|
+
export const listAddressesForUser = cache(async (uid, _opts) => {
|
|
21
|
+
void _opts;
|
|
22
|
+
if (!uid)
|
|
23
|
+
return [];
|
|
24
|
+
return addressRepository.findByUser(uid);
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function placeBidAction(input: unknown): Promise<import("../../../..").BidDocument>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { bidRepository, productRepository, userRepository } from "../../../../repositories";
|
|
3
|
+
import { requireRoleUser } from "../../../../providers/auth-firebase/helpers";
|
|
4
|
+
import { placeBidSchema } from "../../../shared/features/auctions/schema";
|
|
5
|
+
import { assertAuctionActive, assertBidAmount, assertNotAuctionOwner, shouldAutoExtend, computeExtendedEndDate, } from "./service";
|
|
6
|
+
import { ValidationError } from "../../../shared/errors/index";
|
|
7
|
+
export async function placeBidAction(input) {
|
|
8
|
+
const user = await requireRoleUser(["buyer", "seller", "admin"]);
|
|
9
|
+
const parsed = placeBidSchema.safeParse(input);
|
|
10
|
+
if (!parsed.success)
|
|
11
|
+
throw new ValidationError(parsed.error.errors[0]?.message ?? "Invalid bid input");
|
|
12
|
+
const { auctionId, amount } = parsed.data;
|
|
13
|
+
const product = await assertAuctionActive(auctionId);
|
|
14
|
+
assertNotAuctionOwner(product, user.uid);
|
|
15
|
+
assertBidAmount(product, amount);
|
|
16
|
+
const profile = await userRepository.findById(user.uid).catch(() => null);
|
|
17
|
+
const userName = profile?.displayName ?? user.name ?? "Anonymous";
|
|
18
|
+
// Mark all current bids for this auction as outbid, then set new winning bid
|
|
19
|
+
await bidRepository.setWinningBid("__placeholder__", auctionId).catch(() => null);
|
|
20
|
+
const bid = await bidRepository.create({
|
|
21
|
+
productId: auctionId,
|
|
22
|
+
productTitle: product.title ?? auctionId,
|
|
23
|
+
userId: user.uid,
|
|
24
|
+
userName,
|
|
25
|
+
userEmail: user.email ?? "",
|
|
26
|
+
bidAmount: amount,
|
|
27
|
+
currency: product.currency ?? "INR",
|
|
28
|
+
bidDate: new Date(),
|
|
29
|
+
});
|
|
30
|
+
// Now set this new bid as the winning bid
|
|
31
|
+
await bidRepository.setWinningBid(bid.id, auctionId);
|
|
32
|
+
const updates = {
|
|
33
|
+
currentBid: amount,
|
|
34
|
+
bidCount: (product.bidCount ?? 0) + 1,
|
|
35
|
+
};
|
|
36
|
+
if (shouldAutoExtend(product)) {
|
|
37
|
+
updates.auctionEndDate = computeExtendedEndDate(product);
|
|
38
|
+
if (!product.auctionOriginalEndDate) {
|
|
39
|
+
updates.auctionOriginalEndDate = product.auctionEndDate;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
await productRepository.update(auctionId, updates);
|
|
43
|
+
return bid;
|
|
44
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ProductDocument } from "../../../../features/products/schemas/firestore";
|
|
2
|
+
import type { ProductFeatureDocument } from "../../../../features/products/schemas/product-features";
|
|
3
|
+
export declare const getAuctionForDetail: (slugOrId: string) => Promise<ProductDocument | null>;
|
|
4
|
+
export declare const getProductFeaturesForAuction: (storeId: string | null) => Promise<ProductFeatureDocument[]>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { cache } from "react";
|
|
2
|
+
import { productRepository } from "../../../../repositories";
|
|
3
|
+
import { loadProductFeaturesForStore } from "../../../../features/products/repository/loadProductFeatures";
|
|
4
|
+
export const getAuctionForDetail = cache(async (slugOrId) => {
|
|
5
|
+
return (await productRepository.findByIdOrSlug(slugOrId).catch(() => undefined)) ?? null;
|
|
6
|
+
});
|
|
7
|
+
export const getProductFeaturesForAuction = cache(async (storeId) => {
|
|
8
|
+
return loadProductFeaturesForStore(storeId).catch(() => []);
|
|
9
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getAuctionForDetail, getProductFeaturesForAuction } from "./data";
|
|
2
|
+
export { assertAuctionActive, assertBidAmount, assertNotAuctionOwner, computeMinBid, shouldAutoExtend } from "./service";
|
|
3
|
+
export { placeBidAction } from "./actions";
|
|
4
|
+
export { AUCTIONS_PAGE_SIZE, AUCTIONS_ACTIVE_LIMIT, AUCTION_DEFAULT_EXTENSION_MINUTES, AUCTION_MIN_BID_INCREMENT_PAISE, AUCTION_SNIPING_WINDOW_SECONDS, } from "../../../shared/features/auctions/config";
|
|
5
|
+
export { renderAuctionOgImage, renderAuctionOg, type AuctionOgData } from "./og";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getAuctionForDetail, getProductFeaturesForAuction } from "./data";
|
|
2
|
+
export { assertAuctionActive, assertBidAmount, assertNotAuctionOwner, computeMinBid, shouldAutoExtend } from "./service";
|
|
3
|
+
export { placeBidAction } from "./actions";
|
|
4
|
+
export { AUCTIONS_PAGE_SIZE, AUCTIONS_ACTIVE_LIMIT, AUCTION_DEFAULT_EXTENSION_MINUTES, AUCTION_MIN_BID_INCREMENT_PAISE, AUCTION_SNIPING_WINDOW_SECONDS, } from "../../../shared/features/auctions/config";
|
|
5
|
+
export { renderAuctionOgImage, renderAuctionOg } from "./og";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
export interface AuctionOgData {
|
|
3
|
+
title: string;
|
|
4
|
+
endsLabel?: string | null;
|
|
5
|
+
imageUrl?: string | null;
|
|
6
|
+
}
|
|
7
|
+
interface AuctionDocLike {
|
|
8
|
+
title?: string | null;
|
|
9
|
+
auctionEndDate?: Date | string | null;
|
|
10
|
+
mainImage?: string | null;
|
|
11
|
+
images?: (string | null | undefined)[] | null;
|
|
12
|
+
}
|
|
13
|
+
/** High-level OG renderer — accepts the raw auction document from `getAuctionForDetail`. */
|
|
14
|
+
export declare function renderAuctionOg(doc: AuctionDocLike | null | undefined, opts: {
|
|
15
|
+
siteName: string;
|
|
16
|
+
locale?: string;
|
|
17
|
+
}): ReactElement;
|
|
18
|
+
export declare function renderAuctionOgImage(data: AuctionOgData, siteName: string): ReactElement;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** High-level OG renderer — accepts the raw auction document from `getAuctionForDetail`. */
|
|
3
|
+
export function renderAuctionOg(doc, opts) {
|
|
4
|
+
const locale = opts.locale ?? "en-IN";
|
|
5
|
+
const endDate = doc?.auctionEndDate
|
|
6
|
+
? doc.auctionEndDate instanceof Date
|
|
7
|
+
? doc.auctionEndDate
|
|
8
|
+
: new Date(doc.auctionEndDate)
|
|
9
|
+
: null;
|
|
10
|
+
const endsLabel = endDate
|
|
11
|
+
? `Ends ${endDate.toLocaleDateString(locale, { day: "numeric", month: "short", year: "numeric" })}`
|
|
12
|
+
: null;
|
|
13
|
+
return renderAuctionOgImage({
|
|
14
|
+
title: doc?.title ?? "Live Auction",
|
|
15
|
+
endsLabel,
|
|
16
|
+
imageUrl: doc?.mainImage || doc?.images?.[0] || null,
|
|
17
|
+
}, opts.siteName);
|
|
18
|
+
}
|
|
19
|
+
export function renderAuctionOgImage(data, siteName) {
|
|
20
|
+
const { title, endsLabel, imageUrl } = data;
|
|
21
|
+
return (_jsxs("div", { style: {
|
|
22
|
+
display: "flex",
|
|
23
|
+
width: "100%",
|
|
24
|
+
height: "100%",
|
|
25
|
+
background: "#0f172a",
|
|
26
|
+
fontFamily: "sans-serif",
|
|
27
|
+
position: "relative",
|
|
28
|
+
overflow: "hidden",
|
|
29
|
+
}, children: [imageUrl && (_jsx("img", { src: imageUrl, alt: "", style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover", opacity: 0.15 } })), _jsx("div", { style: {
|
|
30
|
+
position: "absolute",
|
|
31
|
+
inset: 0,
|
|
32
|
+
background: "linear-gradient(135deg, rgba(15,23,42,0.95) 0%, rgba(15,23,42,0.8) 100%)",
|
|
33
|
+
} }), _jsxs("div", { style: {
|
|
34
|
+
position: "relative",
|
|
35
|
+
display: "flex",
|
|
36
|
+
width: "100%",
|
|
37
|
+
height: "100%",
|
|
38
|
+
padding: "60px",
|
|
39
|
+
gap: "48px",
|
|
40
|
+
alignItems: "center",
|
|
41
|
+
}, children: [imageUrl && (_jsx("img", { src: imageUrl, alt: title, style: { width: 420, height: 420, objectFit: "contain", borderRadius: 16, flexShrink: 0 } })), _jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 24, flex: 1 }, children: [_jsxs("div", { style: { fontSize: 20, color: "#f59e0b", fontWeight: 600, letterSpacing: 2, textTransform: "uppercase" }, children: [siteName, " \u00B7 Live Auction"] }), _jsx("div", { style: {
|
|
42
|
+
fontSize: imageUrl ? 44 : 56,
|
|
43
|
+
fontWeight: 700,
|
|
44
|
+
color: "#f1f5f9",
|
|
45
|
+
lineHeight: 1.2,
|
|
46
|
+
display: "-webkit-box",
|
|
47
|
+
WebkitLineClamp: 3,
|
|
48
|
+
WebkitBoxOrient: "vertical",
|
|
49
|
+
overflow: "hidden",
|
|
50
|
+
}, children: title }), endsLabel && (_jsx("div", { style: { fontSize: 28, fontWeight: 600, color: "#f59e0b" }, children: endsLabel }))] })] })] }));
|
|
51
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ProductDocument } from "../../../shared/features/products/types";
|
|
2
|
+
/** Assert an auction exists, is published, and is still active. Returns the product. */
|
|
3
|
+
export declare function assertAuctionActive(auctionId: string): Promise<ProductDocument>;
|
|
4
|
+
/** Compute the minimum valid bid given the current state. */
|
|
5
|
+
export declare function computeMinBid(product: ProductDocument): number;
|
|
6
|
+
/** Assert a bid amount is valid against the current auction state. */
|
|
7
|
+
export declare function assertBidAmount(product: ProductDocument, amount: number): void;
|
|
8
|
+
/** Assert the bidder is not the auction owner. */
|
|
9
|
+
export declare function assertNotAuctionOwner(product: ProductDocument, bidderId: string): void;
|
|
10
|
+
/** Return true if the bid was placed within the sniping window and the auction should auto-extend. */
|
|
11
|
+
export declare function shouldAutoExtend(product: ProductDocument): boolean;
|
|
12
|
+
/** Compute the extended end date. */
|
|
13
|
+
export declare function computeExtendedEndDate(product: ProductDocument): Date;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { productRepository } from "../../../../repositories";
|
|
2
|
+
import { isAuctionListing } from "../../../../features/products/utils/listing-type";
|
|
3
|
+
import { AuctionNotFoundError, AuctionEndedError, BidTooLowError, BidOnOwnAuctionError, } from "../../../shared/features/auctions/errors";
|
|
4
|
+
import { AUCTION_MIN_BID_INCREMENT_PAISE, AUCTION_SNIPING_WINDOW_SECONDS, AUCTION_DEFAULT_EXTENSION_MINUTES, } from "../../../shared/features/auctions/config";
|
|
5
|
+
/** Assert an auction exists, is published, and is still active. Returns the product. */
|
|
6
|
+
export async function assertAuctionActive(auctionId) {
|
|
7
|
+
const product = await productRepository.findByIdOrSlug(auctionId).catch(() => null);
|
|
8
|
+
if (!product || !isAuctionListing(product))
|
|
9
|
+
throw new AuctionNotFoundError(auctionId);
|
|
10
|
+
const endDate = product.auctionEndDate instanceof Date
|
|
11
|
+
? product.auctionEndDate
|
|
12
|
+
: product.auctionEndDate
|
|
13
|
+
? new Date(product.auctionEndDate)
|
|
14
|
+
: null;
|
|
15
|
+
if (!endDate || endDate.getTime() <= Date.now())
|
|
16
|
+
throw new AuctionEndedError(auctionId);
|
|
17
|
+
return product;
|
|
18
|
+
}
|
|
19
|
+
/** Compute the minimum valid bid given the current state. */
|
|
20
|
+
export function computeMinBid(product) {
|
|
21
|
+
const current = product.currentBid ?? product.startingBid ?? 0;
|
|
22
|
+
const increment = product.minBidIncrement ?? AUCTION_MIN_BID_INCREMENT_PAISE;
|
|
23
|
+
return current + increment;
|
|
24
|
+
}
|
|
25
|
+
/** Assert a bid amount is valid against the current auction state. */
|
|
26
|
+
export function assertBidAmount(product, amount) {
|
|
27
|
+
const minBid = computeMinBid(product);
|
|
28
|
+
if (amount < minBid)
|
|
29
|
+
throw new BidTooLowError(minBid);
|
|
30
|
+
}
|
|
31
|
+
/** Assert the bidder is not the auction owner. */
|
|
32
|
+
export function assertNotAuctionOwner(product, bidderId) {
|
|
33
|
+
if (product.storeId === bidderId)
|
|
34
|
+
throw new BidOnOwnAuctionError();
|
|
35
|
+
}
|
|
36
|
+
/** Return true if the bid was placed within the sniping window and the auction should auto-extend. */
|
|
37
|
+
export function shouldAutoExtend(product) {
|
|
38
|
+
if (!product.autoExtendable)
|
|
39
|
+
return false;
|
|
40
|
+
const endDate = product.auctionEndDate instanceof Date
|
|
41
|
+
? product.auctionEndDate
|
|
42
|
+
: product.auctionEndDate
|
|
43
|
+
? new Date(product.auctionEndDate)
|
|
44
|
+
: null;
|
|
45
|
+
if (!endDate)
|
|
46
|
+
return false;
|
|
47
|
+
const secondsLeft = (endDate.getTime() - Date.now()) / 1000;
|
|
48
|
+
return secondsLeft <= AUCTION_SNIPING_WINDOW_SECONDS;
|
|
49
|
+
}
|
|
50
|
+
/** Compute the extended end date. */
|
|
51
|
+
export function computeExtendedEndDate(product) {
|
|
52
|
+
const current = product.auctionEndDate instanceof Date
|
|
53
|
+
? product.auctionEndDate
|
|
54
|
+
: new Date(product.auctionEndDate);
|
|
55
|
+
const extensionMs = (product.auctionExtensionMinutes ?? AUCTION_DEFAULT_EXTENSION_MINUTES) * 60 * 1000;
|
|
56
|
+
return new Date(current.getTime() + extensionMs);
|
|
57
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth server actions — thin re-exports. Session management stays client-side
|
|
3
|
+
* (next-auth-style cookie + client SDK); the server surface is limited to
|
|
4
|
+
* mutations (email verify / password reset / OTP issue) and the `/auth/me`
|
|
5
|
+
* route handler.
|
|
6
|
+
*/
|
|
7
|
+
export { authMeGET } from "../../../../features/auth/api/route";
|
|
8
|
+
export * from "../../../../features/auth/consent-otp";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth server actions — thin re-exports. Session management stays client-side
|
|
3
|
+
* (next-auth-style cookie + client SDK); the server surface is limited to
|
|
4
|
+
* mutations (email verify / password reset / OTP issue) and the `/auth/me`
|
|
5
|
+
* route handler.
|
|
6
|
+
*/
|
|
7
|
+
export { authMeGET } from "../../../../features/auth/api/route";
|
|
8
|
+
export * from "../../../../features/auth/consent-otp";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./actions";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./actions";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function createBlogPostAction(input: unknown): Promise<import("../../../..").BlogPostDocument>;
|
|
2
|
+
export declare function updateBlogPostAction(postId: string, input: unknown): Promise<import("../../../..").BlogPostDocument>;
|
|
3
|
+
export declare function deleteBlogPostAction(postId: string): Promise<void>;
|
|
4
|
+
export declare function publishBlogPostAction(postId: string): Promise<import("../../../..").BlogPostDocument>;
|
|
5
|
+
export declare function unpublishBlogPostAction(postId: string): Promise<import("../../../..").BlogPostDocument>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use server";
|
|
2
|
+
import { blogRepository } from "../../../../repositories";
|
|
3
|
+
import { requireRoleUser } from "../../../../providers/auth-firebase/helpers";
|
|
4
|
+
import { blogPostInputSchema, blogPostUpdateSchema } from "../../../shared/features/blog/schema";
|
|
5
|
+
import { assertBlogPostExists, assertBlogSlugUnique, computeReadTime } from "./service";
|
|
6
|
+
import { ValidationError } from "../../../shared/errors/index";
|
|
7
|
+
export async function createBlogPostAction(input) {
|
|
8
|
+
const user = await requireRoleUser(["admin", "moderator"]);
|
|
9
|
+
const parsed = blogPostInputSchema.safeParse(input);
|
|
10
|
+
if (!parsed.success)
|
|
11
|
+
throw new ValidationError(parsed.error.errors[0]?.message ?? "Invalid blog post input");
|
|
12
|
+
await assertBlogSlugUnique(parsed.data.slug);
|
|
13
|
+
const readTime = computeReadTime(parsed.data.content);
|
|
14
|
+
return blogRepository.createWithId(parsed.data.slug, {
|
|
15
|
+
...parsed.data,
|
|
16
|
+
authorId: user.uid,
|
|
17
|
+
authorName: user.name ?? "Editorial Team",
|
|
18
|
+
readTimeMinutes: readTime,
|
|
19
|
+
views: 0,
|
|
20
|
+
publishedAt: parsed.data.status === "published" ? new Date() : undefined,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export async function updateBlogPostAction(postId, input) {
|
|
24
|
+
await requireRoleUser(["admin", "moderator"]);
|
|
25
|
+
const post = await assertBlogPostExists(postId);
|
|
26
|
+
const parsed = blogPostUpdateSchema.safeParse(input);
|
|
27
|
+
if (!parsed.success)
|
|
28
|
+
throw new ValidationError(parsed.error.errors[0]?.message ?? "Invalid blog post input");
|
|
29
|
+
const updates = { ...parsed.data };
|
|
30
|
+
if (parsed.data.content)
|
|
31
|
+
updates.readTimeMinutes = computeReadTime(parsed.data.content);
|
|
32
|
+
if (parsed.data.status === "published" && post.status !== "published") {
|
|
33
|
+
updates.publishedAt = new Date();
|
|
34
|
+
}
|
|
35
|
+
return blogRepository.update(postId, updates);
|
|
36
|
+
}
|
|
37
|
+
export async function deleteBlogPostAction(postId) {
|
|
38
|
+
await requireRoleUser("admin");
|
|
39
|
+
await assertBlogPostExists(postId);
|
|
40
|
+
return blogRepository.delete(postId);
|
|
41
|
+
}
|
|
42
|
+
export async function publishBlogPostAction(postId) {
|
|
43
|
+
await requireRoleUser(["admin", "moderator"]);
|
|
44
|
+
await assertBlogPostExists(postId);
|
|
45
|
+
return blogRepository.update(postId, { status: "published", publishedAt: new Date() });
|
|
46
|
+
}
|
|
47
|
+
export async function unpublishBlogPostAction(postId) {
|
|
48
|
+
await requireRoleUser(["admin", "moderator"]);
|
|
49
|
+
await assertBlogPostExists(postId);
|
|
50
|
+
return blogRepository.update(postId, { status: "draft" });
|
|
51
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { cache } from "react";
|
|
2
|
+
import { blogRepository } from "../../../../repositories";
|
|
3
|
+
export const getBlogPostForDetail = cache(async (slug) => {
|
|
4
|
+
return (await blogRepository.findBySlug(slug).catch(() => undefined)) ?? null;
|
|
5
|
+
});
|
|
6
|
+
export const getBlogPostById = cache(async (id) => {
|
|
7
|
+
return (await blogRepository.findById(id).catch(() => undefined)) ?? null;
|
|
8
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getBlogPostForDetail, getBlogPostById } from "./data";
|
|
2
|
+
export { assertBlogPostExists, computeReadTime } from "./service";
|
|
3
|
+
export { createBlogPostAction, updateBlogPostAction, deleteBlogPostAction, publishBlogPostAction, unpublishBlogPostAction, } from "./actions";
|
|
4
|
+
export { BLOG_PAGE_SIZE, BLOG_FEATURED_LIMIT, BLOG_RELATED_LIMIT, BLOG_SITEMAP_LIMIT, } from "../../../shared/features/blog/config";
|
|
5
|
+
export { renderBlogOgImage, renderBlogOg, type BlogOgData } from "./og";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getBlogPostForDetail, getBlogPostById } from "./data";
|
|
2
|
+
export { assertBlogPostExists, computeReadTime } from "./service";
|
|
3
|
+
export { createBlogPostAction, updateBlogPostAction, deleteBlogPostAction, publishBlogPostAction, unpublishBlogPostAction, } from "./actions";
|
|
4
|
+
export { BLOG_PAGE_SIZE, BLOG_FEATURED_LIMIT, BLOG_RELATED_LIMIT, BLOG_SITEMAP_LIMIT, } from "../../../shared/features/blog/config";
|
|
5
|
+
export { renderBlogOgImage, renderBlogOg } from "./og";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
export interface BlogOgData {
|
|
3
|
+
title: string;
|
|
4
|
+
excerpt?: string | null;
|
|
5
|
+
authorName?: string | null;
|
|
6
|
+
category?: string | null;
|
|
7
|
+
coverImage?: string | null;
|
|
8
|
+
}
|
|
9
|
+
interface BlogDocLike {
|
|
10
|
+
title?: string | null;
|
|
11
|
+
excerpt?: string | null;
|
|
12
|
+
authorName?: string | null;
|
|
13
|
+
category?: string | null;
|
|
14
|
+
coverImage?: string | {
|
|
15
|
+
url?: string | null;
|
|
16
|
+
} | null;
|
|
17
|
+
}
|
|
18
|
+
/** High-level OG renderer — accepts the raw blog post document from `getBlogPostForDetail`. */
|
|
19
|
+
export declare function renderBlogOg(doc: BlogDocLike | null | undefined, opts: {
|
|
20
|
+
siteName: string;
|
|
21
|
+
}): ReactElement;
|
|
22
|
+
export declare function renderBlogOgImage(data: BlogOgData, siteName: string): ReactElement;
|
|
23
|
+
export {};
|