@mohasinac/appkit 4.52.5 → 4.53.1
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 +4 -4
- package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
- package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
- package/dist/_internal/client/scaffolds/AppShell.js +1 -1
- package/dist/_internal/server/features/auctions/actions.js +1 -1
- package/dist/_internal/server/features/auctions/og.d.ts +3 -1
- package/dist/_internal/server/features/auctions/og.js +3 -1
- package/dist/_internal/server/features/bundles/actions.js +1 -1
- package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
- package/dist/_internal/server/features/business-documents/download.js +91 -0
- package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
- package/dist/_internal/server/features/categories/adapters.js +10 -0
- package/dist/_internal/server/features/categories/data.js +23 -7
- package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
- package/dist/_internal/server/features/checkout/actions.js +116 -15
- package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
- package/dist/_internal/server/features/checkout/data.d.ts +37 -0
- package/dist/_internal/server/features/checkout/data.js +20 -3
- package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
- package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
- package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
- package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
- package/dist/_internal/server/features/classified/metadata.js +1 -1
- package/dist/_internal/server/features/classified/og.d.ts +3 -1
- package/dist/_internal/server/features/classified/og.js +3 -1
- package/dist/_internal/server/features/digital-code/metadata.js +1 -1
- package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
- package/dist/_internal/server/features/digital-code/og.js +3 -1
- package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
- package/dist/_internal/server/features/digital-code/pool.js +19 -4
- package/dist/_internal/server/features/live/metadata.js +1 -1
- package/dist/_internal/server/features/live/og.d.ts +3 -1
- package/dist/_internal/server/features/live/og.js +3 -1
- package/dist/_internal/server/features/lottery/actions.js +9 -1
- package/dist/_internal/server/features/lottery/og.d.ts +40 -0
- package/dist/_internal/server/features/lottery/og.js +79 -0
- package/dist/_internal/server/features/messages/actions.js +5 -1
- package/dist/_internal/server/features/offers/adapters.js +17 -3
- package/dist/_internal/server/features/orders/actions.js +7 -2
- package/dist/_internal/server/features/parts/og.js +1 -1
- package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
- package/dist/_internal/server/features/pre-orders/og.js +3 -1
- package/dist/_internal/server/features/price-index/search.d.ts +18 -0
- package/dist/_internal/server/features/price-index/search.js +47 -7
- package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
- package/dist/_internal/server/features/prize-draws/og.js +3 -1
- package/dist/_internal/server/features/products/group-members.d.ts +26 -0
- package/dist/_internal/server/features/products/group-members.js +7 -1
- package/dist/_internal/server/features/products/og.d.ts +3 -1
- package/dist/_internal/server/features/products/og.js +3 -1
- package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
- package/dist/_internal/server/features/raffle/actions.js +25 -0
- package/dist/_internal/server/features/reviews/actions.js +1 -1
- package/dist/_internal/server/features/reviews/data.d.ts +1 -1
- package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
- package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
- package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
- package/dist/_internal/server/features/search/index-build/build.js +285 -0
- package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
- package/dist/_internal/server/features/search/index-build/sources.js +385 -0
- package/dist/_internal/server/features/search/scoped-sources.d.ts +26 -0
- package/dist/_internal/server/features/search/scoped-sources.js +252 -0
- package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
- package/dist/_internal/server/features/search/search-everything.js +70 -20
- package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
- package/dist/_internal/server/features/search/search-sources.js +142 -7
- package/dist/_internal/server/features/seo/robots.js +21 -1
- package/dist/_internal/server/features/seo/sitemap.js +7 -1
- package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
- package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
- package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
- package/dist/_internal/server/features/site-settings/adapters.js +26 -0
- package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
- package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
- package/dist/_internal/server/features/sticker-trace/adapters.d.ts +91 -0
- package/dist/_internal/server/features/sticker-trace/adapters.js +175 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
- package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
- package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
- package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
- package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -0
- package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
- package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
- package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
- package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +143 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.js +311 -0
- package/dist/_internal/server/features/sticker-trace/storage.d.ts +154 -0
- package/dist/_internal/server/features/sticker-trace/storage.js +301 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +16 -0
- package/dist/_internal/server/features/stores/index.d.ts +1 -0
- package/dist/_internal/server/features/stores/index.js +1 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
- package/dist/_internal/server/features/stores/tabs.js +122 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +25 -1
- package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
- package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
- package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
- package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
- package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
- package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
- package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
- package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
- package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
- package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
- package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
- package/dist/_internal/server/jobs/core/promotions.js +7 -4
- package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
- package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
- package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
- package/dist/_internal/shared/actions/action-registry.js +29 -0
- package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
- package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
- package/dist/_internal/shared/checkout/rules/_defaults.js +0 -2
- package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
- package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
- package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
- package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
- package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
- package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
- package/dist/_internal/shared/checkout/rules/index.js +9 -0
- package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
- package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
- package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
- package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
- package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
- package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
- package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
- package/dist/_internal/shared/config/schema.d.ts +122 -0
- package/dist/_internal/shared/features/cart/schema.js +3 -2
- package/dist/_internal/shared/features/events/config.d.ts +14 -0
- package/dist/_internal/shared/features/events/config.js +14 -0
- package/dist/_internal/shared/features/notifications/action-url.js +8 -0
- package/dist/_internal/shared/features/products/group-rules.d.ts +75 -0
- package/dist/_internal/shared/features/products/group-rules.js +142 -0
- package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
- package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
- package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
- package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
- package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
- package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
- package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
- package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
- package/dist/_internal/shared/listing-types/_registry.d.ts +35 -0
- package/dist/_internal/shared/listing-types/_registry.js +39 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/art/config.js +3 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/auction/config.js +3 -0
- package/dist/_internal/shared/listing-types/availability.js +48 -0
- package/dist/_internal/shared/listing-types/capabilities.js +19 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/classified/config.js +3 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +3 -0
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
- package/dist/_internal/shared/listing-types/feature-flags.js +10 -0
- package/dist/_internal/shared/listing-types/live/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/live/config.js +3 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +3 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +3 -0
- package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
- package/dist/_internal/shared/listing-types/spares/config.js +60 -0
- package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
- package/dist/_internal/shared/listing-types/spares/og.js +1 -0
- package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
- package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/standard/config.js +3 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +3 -0
- package/dist/_internal/shared/media/limits.d.ts +12 -2
- package/dist/_internal/shared/media/limits.js +12 -2
- package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
- package/dist/_internal/shared/search/artifact-url.js +119 -0
- package/dist/_internal/shared/search/index-record.d.ts +68 -0
- package/dist/_internal/shared/search/index-record.js +96 -0
- package/dist/_internal/shared/search/match.d.ts +76 -0
- package/dist/_internal/shared/search/match.js +264 -0
- package/dist/_internal/shared/search/to-groups.d.ts +52 -0
- package/dist/_internal/shared/search/to-groups.js +141 -0
- package/dist/client.d.ts +16 -9
- package/dist/client.js +16 -6
- package/dist/configs/eslint.js +22 -2
- package/dist/constants/api-endpoints.d.ts +107 -15
- package/dist/constants/api-endpoints.js +60 -5
- package/dist/constants/cache-invalidation.js +3 -1
- package/dist/constants/field-names.d.ts +13 -1
- package/dist/constants/field-names.js +42 -1
- package/dist/contracts/repository.d.ts +8 -7
- package/dist/contracts/search.d.ts +2 -2
- package/dist/contracts/table.d.ts +3 -3
- package/dist/contracts/table.js +3 -3
- package/dist/core/contact-submissions.repository.js +2 -2
- package/dist/core/integration-keys.js +7 -1
- package/dist/core/newsletter.repository.js +2 -2
- package/dist/core/site-config.js +1 -1
- package/dist/errors/error-codes.d.ts +30 -0
- package/dist/errors/error-codes.js +30 -0
- package/dist/errors/error-display-map.js +40 -1
- package/dist/features/about/components/PolicyPageView.d.ts +22 -2
- package/dist/features/about/components/PolicyPageView.js +14 -2
- package/dist/features/about/components/PublicProfileView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +42 -2
- package/dist/features/account/api/[userId]/addresses/route.js +1 -1
- package/dist/features/account/components/NotificationBell.js +1 -1
- package/dist/features/account/components/UserBidsView.js +1 -1
- package/dist/features/account/components/index.d.ts +0 -8
- package/dist/features/account/components/index.js +0 -4
- package/dist/features/account/hooks/useProfileStats.js +5 -1
- package/dist/features/addresses/repository/addresses.repository.d.ts +33 -6
- package/dist/features/addresses/repository/addresses.repository.js +86 -9
- package/dist/features/addresses/schemas/firestore.d.ts +17 -6
- package/dist/features/admin/actions/admin-actions.js +16 -1
- package/dist/features/admin/actions/notification-actions.js +15 -6
- package/dist/features/admin/api/bids/route.js +1 -1
- package/dist/features/admin/api/coupons/route.js +1 -1
- package/dist/features/admin/api/products/route.js +1 -1
- package/dist/features/admin/api/reviews/route.js +1 -1
- package/dist/features/admin/components/AdminAdEditorView.js +19 -5
- package/dist/features/admin/components/AdminAuditLogView.js +1 -1
- package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
- package/dist/features/admin/components/AdminBlogView.js +1 -1
- package/dist/features/admin/components/AdminBrandsView.js +17 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +19 -3
- package/dist/features/admin/components/AdminContactView.js +1 -1
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
- package/dist/features/admin/components/AdminNavigationView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +1 -1
- package/dist/features/admin/components/AdminOrdersView.js +9 -2
- package/dist/features/admin/components/AdminPageHeader.js +1 -1
- package/dist/features/admin/components/AdminPayoutsView.js +1 -1
- package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
- package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
- package/dist/features/admin/components/AdminProductEditorView.js +41 -39
- package/dist/features/admin/components/AdminProductsView.js +10 -3
- package/dist/features/admin/components/AdminScammersView.js +1 -1
- package/dist/features/admin/components/AdminSectionsView.js +21 -5
- package/dist/features/admin/components/AdminSessionsView.js +1 -1
- package/dist/features/admin/components/AdminSidebar.js +1 -1
- package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
- package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
- package/dist/features/admin/components/AdminSparesView.js +30 -0
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
- package/dist/features/admin/components/AdminTeamView.js +1 -1
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
- package/dist/features/admin/components/AdminUsersView.js +10 -8
- package/dist/features/admin/components/DataListingView.d.ts +2 -1
- package/dist/features/admin/components/DataListingView.js +9 -4
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
- package/dist/features/admin/constants/filter-tabs.js +1 -0
- package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
- package/dist/features/admin/repository/site-settings.repository.js +8 -3
- package/dist/features/admin/schemas/firestore.d.ts +88 -3
- package/dist/features/admin/schemas/firestore.js +32 -0
- package/dist/features/admin/types/index.d.ts +1 -1
- package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
- package/dist/features/auctions/actions/bid-actions.js +16 -4
- package/dist/features/auctions/api/route.js +1 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
- package/dist/features/auctions/components/AuctionDetailPageView.js +4 -11
- package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
- package/dist/features/auctions/repository/bid.repository.js +114 -13
- package/dist/features/auctions/schemas/firestore.d.ts +24 -4
- package/dist/features/auctions/schemas/firestore.js +1 -0
- package/dist/features/auth/actions/profile-actions.js +30 -4
- package/dist/features/auth/components/index.d.ts +0 -1
- package/dist/features/auth/components/index.js +0 -1
- package/dist/features/auth/repository/session.repository.d.ts +17 -3
- package/dist/features/auth/repository/session.repository.js +46 -5
- package/dist/features/auth/repository/token.repository.d.ts +27 -4
- package/dist/features/auth/repository/token.repository.js +65 -11
- package/dist/features/auth/repository/user.repository.d.ts +46 -7
- package/dist/features/auth/repository/user.repository.js +128 -15
- package/dist/features/auth/schemas/firestore.d.ts +65 -12
- package/dist/features/auth/schemas/firestore.js +13 -0
- package/dist/features/before-after/api/route.js +1 -1
- package/dist/features/blog/components/BlogListView.js +16 -3
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/blog/schemas/index.d.ts +2 -2
- package/dist/features/business-documents/repository/business-documents.repository.d.ts +58 -0
- package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
- package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
- package/dist/features/business-documents/schemas/firestore.js +75 -0
- package/dist/features/cart/actions/cart-actions.js +83 -6
- package/dist/features/cart/api/route.js +1 -1
- package/dist/features/cart/repository/cart.repository.js +32 -4
- package/dist/features/cart/schemas/firestore.d.ts +20 -0
- package/dist/features/cart/schemas/index.d.ts +2 -2
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +1 -1
- package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
- package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
- package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
- package/dist/features/categories/api/[id]/price-guidance/route.d.ts +42 -0
- package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
- package/dist/features/categories/api/route.js +10 -10
- package/dist/features/categories/components/BrandDetailPageView.js +19 -3
- package/dist/features/categories/components/BrandDetailTabs.js +10 -0
- package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
- package/dist/features/categories/components/CategoryDetailPageView.js +170 -13
- package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
- package/dist/features/categories/components/CategoryGrid.js +10 -1
- package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
- package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
- package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
- package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
- package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
- package/dist/features/categories/components/index.d.ts +0 -2
- package/dist/features/categories/components/index.js +0 -1
- package/dist/features/categories/constants/category-tabs.d.ts +20 -25
- package/dist/features/categories/constants/category-tabs.js +22 -39
- package/dist/features/categories/repository/categories.repository.d.ts +13 -0
- package/dist/features/categories/repository/categories.repository.js +51 -1
- package/dist/features/categories/schemas/firestore.d.ts +22 -1
- package/dist/features/categories/schemas/firestore.js +10 -0
- package/dist/features/categories/schemas/index.d.ts +8 -2
- package/dist/features/categories/schemas/index.js +2 -0
- package/dist/features/categories/types/index.d.ts +8 -0
- package/dist/features/categories/utils/taxonomy-visual.d.ts +34 -0
- package/dist/features/categories/utils/taxonomy-visual.js +74 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
- package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
- package/dist/features/collections/api/[slug]/route.js +3 -3
- package/dist/features/collections/api/route.js +1 -1
- package/dist/features/consultation/api/route.js +1 -1
- package/dist/features/consultation/repository/consultations.repository.js +1 -1
- package/dist/features/consultation/types/index.d.ts +1 -1
- package/dist/features/contact/components/ContactForm.js +1 -3
- package/dist/features/contact/components/ContactPageView.d.ts +33 -1
- package/dist/features/contact/components/ContactPageView.js +58 -28
- package/dist/features/corporate/api/route.js +1 -1
- package/dist/features/corporate/repository/corporate.repository.js +1 -1
- package/dist/features/corporate/types/index.d.ts +1 -1
- package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
- package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
- package/dist/features/events/actions/event-actions.d.ts +14 -0
- package/dist/features/events/actions/event-actions.js +82 -3
- package/dist/features/events/api/[id]/route.js +2 -2
- package/dist/features/events/components/AdminEventEditorView.js +22 -3
- package/dist/features/events/components/AdminEventsView.js +32 -8
- package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
- package/dist/features/events/components/EventRafflesSection.js +52 -3
- package/dist/features/events/components/SpinWheelView.d.ts +2 -2
- package/dist/features/events/components/SpinWheelView.js +41 -4
- package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
- package/dist/features/events/repository/event-entry.repository.js +41 -7
- package/dist/features/events/schemas/firestore.d.ts +17 -4
- package/dist/features/events/types/index.d.ts +37 -0
- package/dist/features/faq/repository/faqs.repository.js +1 -1
- package/dist/features/faq/schemas/index.d.ts +5 -2
- package/dist/features/faq/schemas/index.js +6 -0
- package/dist/features/faq/types/index.d.ts +0 -1
- package/dist/features/grouped/components/GroupedListingDetailView.js +9 -1
- package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
- package/dist/features/grouped/schemas/firestore.d.ts +5 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
- package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
- package/dist/features/homepage/api/carousel/route.js +4 -4
- package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
- package/dist/features/homepage/components/AnnouncementBar.js +13 -19
- package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
- package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
- package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
- package/dist/features/homepage/components/HowItWorksSection.js +4 -4
- package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
- package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
- package/dist/features/homepage/components/PromoGrid.js +12 -3
- package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/index.d.ts +0 -22
- package/dist/features/homepage/components/index.js +0 -12
- package/dist/features/homepage/index.d.ts +0 -2
- package/dist/features/homepage/index.js +0 -2
- package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
- package/dist/features/homepage/lib/section-renderer.js +202 -58
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
- package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
- package/dist/features/homepage/schemas/firestore.d.ts +112 -3
- package/dist/features/homepage/schemas/firestore.js +32 -2
- package/dist/features/homepage/schemas/index.d.ts +46 -17
- package/dist/features/homepage/schemas/index.js +39 -27
- package/dist/features/homepage/server.d.ts +0 -3
- package/dist/features/homepage/server.js +0 -3
- package/dist/features/homepage/types/index.d.ts +0 -47
- package/dist/features/homepage/types/index.js +49 -0
- package/dist/features/layout/AppLayoutShell.d.ts +11 -0
- package/dist/features/layout/AppLayoutShell.js +65 -13
- package/dist/features/layout/BottomActionsContext.d.ts +16 -0
- package/dist/features/layout/BottomActionsContext.js +5 -0
- package/dist/features/layout/BottomChrome.js +48 -9
- package/dist/features/layout/BottomNavItem.js +1 -1
- package/dist/features/layout/BottomNavbar.d.ts +14 -0
- package/dist/features/layout/BottomNavbar.js +43 -3
- package/dist/features/layout/BottomSheet.js +1 -1
- package/dist/features/layout/MainNavbar.d.ts +11 -0
- package/dist/features/layout/NavbarLayout.d.ts +3 -0
- package/dist/features/layout/NavbarLayout.js +88 -11
- package/dist/features/layout/SideActionDock.d.ts +1 -0
- package/dist/features/layout/SideActionDock.js +219 -0
- package/dist/features/layout/TitleBarLayout.js +1 -1
- package/dist/features/layout/cta-anchor.d.ts +31 -0
- package/dist/features/layout/cta-anchor.js +31 -0
- package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
- package/dist/features/layout/hooks/useBottomActions.js +6 -1
- package/dist/features/layout/index.d.ts +9 -1
- package/dist/features/layout/index.js +9 -1
- package/dist/features/layout/useCtaReveal.d.ts +24 -0
- package/dist/features/layout/useCtaReveal.js +82 -0
- package/dist/features/layout/useHoldToOpen.d.ts +41 -0
- package/dist/features/layout/useHoldToOpen.js +84 -0
- package/dist/features/live/components/LiveItemDetailPageView.js +4 -9
- package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
- package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
- package/dist/features/lottery/schemas/firestore.d.ts +33 -5
- package/dist/features/loyalty/api/balance/route.js +1 -1
- package/dist/features/loyalty/api/history/route.js +1 -1
- package/dist/features/media/MediaImage.js +0 -1
- package/dist/features/media/MediaPickerModal.js +7 -1
- package/dist/features/media/hooks/useMedia.js +17 -0
- package/dist/features/media/modals/ImageEditor.js +5 -1
- package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
- package/dist/features/media/repository/media-assets.repository.d.ts +65 -0
- package/dist/features/media/repository/media-assets.repository.js +31 -0
- package/dist/features/media/trust-signals.d.ts +85 -0
- package/dist/features/media/trust-signals.js +126 -0
- package/dist/features/media/upload/CameraCapture.js +16 -1
- package/dist/features/media/upload/ImageUpload.js +42 -4
- package/dist/features/media/upload/MediaUploadField.js +69 -13
- package/dist/features/media/upload/downscale-image.d.ts +56 -0
- package/dist/features/media/upload/downscale-image.js +150 -0
- package/dist/features/messages/components/ConversationThreadView.js +45 -2
- package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
- package/dist/features/messages/components/MessageSellerButton.js +10 -2
- package/dist/features/messages/schemas/firestore.d.ts +15 -0
- package/dist/features/orders/hooks/useOrders.js +4 -2
- package/dist/features/orders/repository/orders.repository.d.ts +15 -4
- package/dist/features/orders/repository/orders.repository.js +52 -20
- package/dist/features/orders/schemas/firestore.d.ts +15 -4
- package/dist/features/orders/schemas/index.d.ts +8 -8
- package/dist/features/orders/types/index.d.ts +2 -2
- package/dist/features/parts/components/PartDetailPageView.d.ts +14 -1
- package/dist/features/parts/components/PartDetailPageView.js +2 -2
- package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
- package/dist/features/parts/components/PartsIndexPageView.js +2 -2
- package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
- package/dist/features/parts/components/PartsSearchBox.js +57 -0
- package/dist/features/parts/schemas/firestore.d.ts +149 -3
- package/dist/features/parts/schemas/firestore.js +184 -0
- package/dist/features/payments/repository/payments.repository.js +2 -2
- package/dist/features/payments/repository/payout.repository.d.ts +38 -6
- package/dist/features/payments/repository/payout.repository.js +84 -23
- package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
- package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
- package/dist/features/payments/schemas/firestore.d.ts +14 -3
- package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
- package/dist/features/pre-orders/api/[slug]/route.js +1 -1
- package/dist/features/pre-orders/api/admin/route.js +1 -1
- package/dist/features/pre-orders/api/route.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -11
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +1 -1
- package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
- package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +3 -1
- package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
- package/dist/features/products/api/[id]/route.js +1 -1
- package/dist/features/products/components/CompareOverlay.d.ts +18 -1
- package/dist/features/products/components/CompareOverlay.js +21 -2
- package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
- package/dist/features/products/components/CustomSectionTabContent.js +29 -3
- package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
- package/dist/features/products/components/GroupMemberPicker.js +46 -8
- package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
- package/dist/features/products/components/GroupSettingsPanel.js +91 -3
- package/dist/features/products/components/ListingBottomActions.js +4 -0
- package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
- package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
- package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
- package/dist/features/products/components/ProductDetailPageView.js +75 -15
- package/dist/features/products/components/ProductForm.d.ts +13 -1
- package/dist/features/products/components/ProductForm.js +16 -2
- package/dist/features/products/components/ProductGalleryClient.js +2 -2
- package/dist/features/products/components/ProductGrid.js +12 -1
- package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
- package/dist/features/products/components/ProductsIndexListing.js +3 -3
- package/dist/features/products/components/ShowGroupSection.js +15 -2
- package/dist/features/products/components/SparesListView.d.ts +7 -0
- package/dist/features/products/components/SparesListView.js +39 -0
- package/dist/features/products/components/index.d.ts +0 -2
- package/dist/features/products/components/index.js +0 -1
- package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
- package/dist/features/products/config/listing-type-listing-config.js +27 -2
- package/dist/features/products/constants/action-defs.d.ts +1 -0
- package/dist/features/products/constants/action-defs.js +1 -0
- package/dist/features/products/constants/listing-tabs.d.ts +9 -0
- package/dist/features/products/constants/listing-tabs.js +3 -2
- package/dist/features/products/hooks/useProducts.js +2 -2
- package/dist/features/products/repository/products.repository.d.ts +98 -0
- package/dist/features/products/repository/products.repository.js +248 -18
- package/dist/features/products/schemas/firestore.d.ts +97 -4
- package/dist/features/products/schemas/firestore.js +104 -0
- package/dist/features/products/schemas/index.d.ts +12 -21
- package/dist/features/products/schemas/index.js +23 -6
- package/dist/features/products/types/index.d.ts +46 -2
- package/dist/features/products/utils/group-member-image.d.ts +39 -0
- package/dist/features/products/utils/group-member-image.js +3 -0
- package/dist/features/products/utils/listing-badge-variant.js +4 -0
- package/dist/features/promotions/api/route.js +1 -1
- package/dist/features/reviews/actions/review-actions.d.ts +6 -6
- package/dist/features/reviews/actions/review-actions.js +22 -8
- package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
- package/dist/features/reviews/repository/reviews.repository.js +63 -12
- package/dist/features/reviews/schemas/firestore.d.ts +13 -2
- package/dist/features/reviews/schemas/index.d.ts +2 -2
- package/dist/features/scams/actions/scam-actions.js +16 -4
- package/dist/features/scams/components/ScamProfileView.js +1 -1
- package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
- package/dist/features/search/components/EntityTypeahead.js +92 -0
- package/dist/features/search/components/Search.d.ts +12 -1
- package/dist/features/search/components/Search.js +47 -3
- package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
- package/dist/features/search/components/SearchFacetRail.js +92 -0
- package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
- package/dist/features/search/components/SearchResultsClient.js +103 -0
- package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
- package/dist/features/search/components/SearchResultsPageView.js +3 -2
- package/dist/features/search/components/index.d.ts +0 -6
- package/dist/features/search/components/index.js +0 -3
- package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
- package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
- package/dist/features/search/hooks/useScopedSearch.js +114 -0
- package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
- package/dist/features/search/hooks/useSearchIndex.js +172 -0
- package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
- package/dist/features/search/hooks/useSiteSearch.js +149 -0
- package/dist/features/search/index.d.ts +0 -4
- package/dist/features/search/index.js +0 -4
- package/dist/features/search/manifest.d.ts +12 -0
- package/dist/features/search/manifest.js +17 -2
- package/dist/features/search/server.d.ts +0 -3
- package/dist/features/search/server.js +0 -3
- package/dist/features/seller/actions/offer-actions.d.ts +5 -5
- package/dist/features/seller/actions/offer-actions.js +38 -8
- package/dist/features/seller/actions/seller-actions.js +34 -7
- package/dist/features/seller/api/coupons/route.js +1 -1
- package/dist/features/seller/api/products/route.js +1 -1
- package/dist/features/seller/api/store/route.js +1 -1
- package/dist/features/seller/components/SellerBidsView.js +1 -1
- package/dist/features/seller/components/SellerCouponsView.js +1 -1
- package/dist/features/seller/components/SellerListingTypeView.d.ts +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +29 -1
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -15
- package/dist/features/seller/components/SellerPayoutsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductShell.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +1 -1
- package/dist/features/seller/components/SellerShippingView.js +0 -1
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
- package/dist/features/seller/components/SellerSparesView.js +6 -0
- package/dist/features/seller/components/SellerStorefrontView.js +0 -1
- package/dist/features/seller/components/index.d.ts +2 -4
- package/dist/features/seller/components/index.js +1 -2
- package/dist/features/seller/repository/offer.repository.d.ts +15 -3
- package/dist/features/seller/repository/offer.repository.js +43 -7
- package/dist/features/seller/schemas/firestore.d.ts +14 -3
- package/dist/features/seller/schemas/index.d.ts +4 -4
- package/dist/features/seller/schemas/order-forms.d.ts +39 -0
- package/dist/features/seller/schemas/order-forms.js +37 -0
- package/dist/features/shell/CommandPalette.js +1 -1
- package/dist/features/shell/FormShell.js +6 -2
- package/dist/features/shell/QuickFormDrawer.js +15 -1
- package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
- package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
- package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
- package/dist/features/sticker-trace/constants/help-content.js +172 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
- package/dist/features/sticker-trace/schemas/firestore.d.ts +267 -0
- package/dist/features/sticker-trace/schemas/firestore.js +79 -0
- package/dist/features/sticker-trace/server.d.ts +8 -0
- package/dist/features/sticker-trace/server.js +51 -0
- package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
- package/dist/features/stores/actions/store-query-actions.js +7 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
- package/dist/features/stores/api/[storeSlug]/route.js +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
- package/dist/features/stores/components/StoreHeader.js +1 -2
- package/dist/features/stores/components/StoreNavTabs.js +17 -2
- package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
- package/dist/features/stores/components/StoreSparesPageView.js +48 -0
- package/dist/features/stores/manifest.js +8 -4
- package/dist/features/stores/schemas/firestore.d.ts +19 -0
- package/dist/features/support/repository/support.repository.d.ts +14 -3
- package/dist/features/support/repository/support.repository.js +93 -13
- package/dist/features/support/schemas/firestore.d.ts +16 -5
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +4 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +478 -0
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +3 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
- package/dist/features/tester/seed-data/authored/index.js +24 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -0
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +284 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +558 -34
- package/dist/index.d.ts +27 -80
- package/dist/index.js +62 -115
- package/dist/next/api/routeHandler.js +9 -0
- package/dist/next/routing/require-record.d.ts +13 -0
- package/dist/next/routing/require-record.js +62 -0
- package/dist/next/routing/route-map.d.ts +46 -5
- package/dist/next/routing/route-map.js +70 -3
- package/dist/providers/db-firebase/base.d.ts +4 -2
- package/dist/providers/db-firebase/base.js +21 -5
- package/dist/providers/db-firebase/base.repository.d.ts +33 -9
- package/dist/providers/db-firebase/base.repository.js +55 -0
- package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
- package/dist/providers/db-firebase/rtdb-paths.js +12 -0
- package/dist/react/ErrorBoundary.js +6 -1
- package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
- package/dist/react/hooks/realtime-event-constants.js +8 -0
- package/dist/react/hooks/useEntityDelete.js +5 -1
- package/dist/react/hooks/useMessage.js +5 -1
- package/dist/repositories/index.d.ts +2 -2
- package/dist/repositories/index.js +6 -1
- package/dist/schemas/registry.d.ts +28 -26
- package/dist/schemas/registry.js +31 -14
- package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
- package/dist/security/blind-index-tokens.d.ts +54 -0
- package/dist/security/blind-index-tokens.js +152 -0
- package/dist/security/encrypted.d.ts +117 -0
- package/dist/security/encrypted.js +100 -0
- package/dist/security/index.d.ts +6 -3
- package/dist/security/index.js +17 -3
- package/dist/security/pii-accessors.d.ts +71 -0
- package/dist/security/pii-accessors.js +150 -0
- package/dist/security/pii-encrypt.d.ts +0 -8
- package/dist/security/pii-encrypt.js +22 -15
- package/dist/security/pii-mask.d.ts +18 -0
- package/dist/security/pii-mask.js +27 -0
- package/dist/security/settings-encryption.d.ts +35 -0
- package/dist/security/settings-encryption.js +91 -0
- package/dist/seed/_helpers/brand-rows.js +38 -14
- package/dist/seed/_helpers/category-forest.js +73 -7
- package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
- package/dist/seed/_helpers/category-images-generated.js +81 -6
- package/dist/seed/_helpers/category-models.d.ts +1 -1
- package/dist/seed/_helpers/category-models.js +7 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
- package/dist/seed/_helpers/category-parts.d.ts +1 -1
- package/dist/seed/_helpers/category-parts.js +50 -2
- package/dist/seed/_helpers/character-features.d.ts +1 -1
- package/dist/seed/_helpers/character-features.js +2 -1
- package/dist/seed/_helpers/franchise-rows.js +10 -2
- package/dist/seed/_helpers/media.d.ts +47 -0
- package/dist/seed/_helpers/media.js +34 -0
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
- package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
- package/dist/seed/addresses-seed-data.d.ts +2 -2
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +78 -0
- package/dist/seed/authenticity-knowledge-seed-data.js +10729 -0
- package/dist/seed/bids-seed-data.d.ts +2 -2
- package/dist/seed/bids-seed-data.js +23 -2
- package/dist/seed/categories-seed-data.js +124 -20
- package/dist/seed/events-seed-data.d.ts +2 -2
- package/dist/seed/events-seed-data.js +5 -0
- package/dist/seed/faq-seed-data.js +175 -5
- package/dist/seed/grouped-listings-seed-data.js +16 -0
- package/dist/seed/homepage-sections-seed-data.js +131 -26
- package/dist/seed/index.d.ts +3 -3
- package/dist/seed/index.js +3 -2
- package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
- package/dist/seed/manifest.js +3 -0
- package/dist/seed/media-assets-seed-data.d.ts +1 -1
- package/dist/seed/media-assets-seed-data.js +746 -196
- package/dist/seed/model-composition-seed-data.js +122 -6
- package/dist/seed/offers-seed-data.d.ts +2 -2
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.d.ts +2 -2
- package/dist/seed/part-glossary-seed-data.d.ts +1 -1
- package/dist/seed/part-glossary-seed-data.js +37219 -463
- package/dist/seed/payouts-seed-data.d.ts +2 -2
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +7 -18
- package/dist/seed/products-auctions-seed-data.js +56 -47
- package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
- package/dist/seed/products-beyblade-x-seed-data.js +441 -0
- package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
- package/dist/seed/products-catalogue-seed-data.js +1500 -1240
- package/dist/seed/products-classifieds-seed-data.js +9 -27
- package/dist/seed/products-digital-codes-seed-data.js +9 -18
- package/dist/seed/products-live-items-seed-data.js +5 -13
- package/dist/seed/products-preorders-seed-data.js +67 -33
- package/dist/seed/products-prize-draws-seed-data.js +8 -17
- package/dist/seed/products-spares-seed-data.d.ts +2 -0
- package/dist/seed/products-spares-seed-data.js +368 -0
- package/dist/seed/products-standard-seed-data.js +39 -126
- package/dist/seed/products-stickers-seed-data.js +59 -15
- package/dist/seed/reviews-seed-data.d.ts +1 -2
- package/dist/seed/seed-purpose.js +7 -0
- package/dist/seed/sessions-seed-data.d.ts +2 -2
- package/dist/seed/sessions-seed-data.js +5 -0
- package/dist/seed/site-settings-seed-data.js +9 -1
- package/dist/seed/support-tickets-seed-data.d.ts +2 -2
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/users-seed-data.d.ts +2 -2
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seo/json-ld.d.ts +25 -0
- package/dist/seo/json-ld.js +33 -1
- package/dist/server-entry.d.ts +3 -1
- package/dist/server-entry.js +2 -2
- package/dist/server.d.ts +27 -12
- package/dist/server.js +86 -28
- package/dist/styles.css +438 -1
- package/dist/tailwind-input.css +31 -17
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Accordion.js +1 -1
- package/dist/ui/components/Breadcrumb.js +1 -1
- package/dist/ui/components/Button.js +7 -1
- package/dist/ui/components/DetailPageGallery.js +0 -2
- package/dist/ui/components/DetailPageHero.js +0 -1
- package/dist/ui/components/DetailPageTabs.js +1 -1
- package/dist/ui/components/Divider.js +3 -3
- package/dist/ui/components/FilterChipGroup.d.ts +11 -0
- package/dist/ui/components/FilterChipGroup.js +1 -1
- package/dist/ui/components/GatedPrice.js +5 -1
- package/dist/ui/components/HorizontalScroller.js +1 -1
- package/dist/ui/components/ImageGallery.js +6 -1
- package/dist/ui/components/ListingLayout.js +17 -11
- package/dist/ui/components/MediaTabs.style.css +81 -0
- package/dist/ui/components/OverflowRow.d.ts +92 -0
- package/dist/ui/components/OverflowRow.js +203 -0
- package/dist/ui/components/OverflowRow.style.css +235 -0
- package/dist/ui/components/Pagination.js +1 -1
- package/dist/ui/components/PendingValue.d.ts +45 -0
- package/dist/ui/components/PendingValue.js +7 -0
- package/dist/ui/components/Radio.style.css +119 -0
- package/dist/ui/components/RatingDisplay.js +2 -2
- package/dist/ui/components/RecordDetailModal.js +14 -1
- package/dist/ui/components/RowActionMenu.js +5 -1
- package/dist/ui/components/SettingsSection.js +0 -2
- package/dist/ui/components/SideDrawer.js +5 -1
- package/dist/ui/components/SideModal.js +9 -1
- package/dist/ui/components/SiteLogo.js +3 -0
- package/dist/ui/components/SiteMark.js +3 -0
- package/dist/ui/components/SortDropdown.js +1 -1
- package/dist/ui/components/SpecTable.d.ts +58 -0
- package/dist/ui/components/SpecTable.js +8 -0
- package/dist/ui/components/StarRating.js +1 -3
- package/dist/ui/components/SummaryCard.js +1 -1
- package/dist/ui/components/TabBarShell.d.ts +12 -1
- package/dist/ui/components/TabBarShell.js +3 -2
- package/dist/ui/components/Tabs.js +36 -24
- package/dist/ui/components/Toast.d.ts +3 -24
- package/dist/ui/components/Toast.js +2 -19
- package/dist/ui/components/TopBannerPortal.d.ts +15 -0
- package/dist/ui/components/TopBannerPortal.js +19 -0
- package/dist/ui/components/UnsavedChangesModal.js +5 -1
- package/dist/ui/components/index.style.css +2 -0
- package/dist/ui/components/row-collapse.d.ts +15 -0
- package/dist/ui/components/row-collapse.js +127 -0
- package/dist/ui/components/toast-context.d.ts +63 -0
- package/dist/ui/components/toast-context.js +48 -0
- package/dist/ui/components/top-banner-slot.d.ts +37 -0
- package/dist/ui/components/top-banner-slot.js +45 -0
- package/dist/ui/icons/icon-registry.d.ts +7 -0
- package/dist/ui/icons/icon-registry.js +25 -1
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/utils/array.helper.d.ts +2 -2
- package/dist/utils/array.helper.js +5 -5
- package/dist/utils/id-generators.d.ts +6 -0
- package/dist/utils/id-generators.js +10 -0
- package/dist/utils/media-url.js +0 -2
- package/dist/utils/search-txt-builders.d.ts +28 -4
- package/dist/utils/search-txt-builders.js +41 -1
- package/dist/utils/search-txt-query.d.ts +12 -0
- package/dist/utils/search-txt-query.js +12 -0
- package/dist/validation/schemas.d.ts +8 -8
- package/package.json +6 -2
- package/scripts/dedupe-peer-deps.mjs +18 -0
- package/scripts/seed-cli.mjs +138 -26
- package/scripts/verify-css-build.mjs +118 -37
- package/dist/_internal/server/features/search/actions.d.ts +0 -7
- package/dist/_internal/server/features/search/actions.js +0 -21
- package/dist/_internal/server/features/search/data.d.ts +0 -15
- package/dist/_internal/server/features/search/data.js +0 -18
- package/dist/_internal/server/features/search/index.d.ts +0 -3
- package/dist/_internal/server/features/search/index.js +0 -2
- package/dist/features/account/components/UserAddressesView.d.ts +0 -13
- package/dist/features/account/components/UserAddressesView.js +0 -5
- package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
- package/dist/features/account/components/UserNotificationsView.js +0 -12
- package/dist/features/account/components/UserSettingsView.d.ts +0 -16
- package/dist/features/account/components/UserSettingsView.js +0 -13
- package/dist/features/account/components/UserSupportView.d.ts +0 -3
- package/dist/features/account/components/UserSupportView.js +0 -166
- package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
- package/dist/features/admin/components/DemoSeedView.js +0 -5
- package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
- package/dist/features/auth/components/AuthStatusPanel.js +0 -22
- package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
- package/dist/features/categories/components/CategoryProductsView.js +0 -21
- package/dist/features/homepage/api/[id]/route.d.ts +0 -23
- package/dist/features/homepage/api/[id]/route.js +0 -103
- package/dist/features/homepage/api/route.d.ts +0 -14
- package/dist/features/homepage/api/route.js +0 -140
- package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
- package/dist/features/homepage/api/sections/[id]/route.js +0 -95
- package/dist/features/homepage/api/sections/route.d.ts +0 -13
- package/dist/features/homepage/api/sections/route.js +0 -82
- package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
- package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
- package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
- package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
- package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
- package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
- package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
- package/dist/features/homepage/components/HeroBanner.js +0 -43
- package/dist/features/homepage/components/HeroSection.d.ts +0 -7
- package/dist/features/homepage/components/HeroSection.js +0 -6
- package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
- package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
- package/dist/features/homepage/components/HomepageView.d.ts +0 -25
- package/dist/features/homepage/components/HomepageView.js +0 -5
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
- package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
- package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
- package/dist/features/homepage/components/NewsletterBanner.js +0 -37
- package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
- package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
- package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
- package/dist/features/homepage/components/TrustBadges.js +0 -46
- package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
- package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
- package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
- package/dist/features/homepage/hooks/useHomepage.js +0 -17
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
- package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
- package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
- package/dist/features/homepage/repository/homepage.repository.js +0 -25
- package/dist/features/layout/BottomActions.d.ts +0 -1
- package/dist/features/layout/BottomActions.js +0 -311
- package/dist/features/products/components/ProductsView.d.ts +0 -6
- package/dist/features/products/components/ProductsView.js +0 -5
- package/dist/features/search/actions/index.d.ts +0 -1
- package/dist/features/search/actions/index.js +0 -1
- package/dist/features/search/actions/search-actions.d.ts +0 -18
- package/dist/features/search/actions/search-actions.js +0 -43
- package/dist/features/search/api/route.d.ts +0 -22
- package/dist/features/search/api/route.js +0 -128
- package/dist/features/search/columns/index.d.ts +0 -17
- package/dist/features/search/columns/index.js +0 -49
- package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
- package/dist/features/search/components/SearchFiltersRow.js +0 -21
- package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
- package/dist/features/search/components/SearchResultsSection.js +0 -35
- package/dist/features/search/components/SearchView.d.ts +0 -27
- package/dist/features/search/components/SearchView.js +0 -8
- package/dist/features/search/hooks/useSearch.d.ts +0 -21
- package/dist/features/search/hooks/useSearch.js +0 -33
- package/dist/features/search/repository/search.repository.d.ts +0 -14
- package/dist/features/search/repository/search.repository.js +0 -59
- package/dist/features/search/schemas/index.d.ts +0 -70
- package/dist/features/search/schemas/index.js +0 -36
- package/dist/features/search/types/index.d.ts +0 -48
- package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
- package/dist/features/seller/components/SellerStoreView.js +0 -8
- package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
- package/dist/features/stores/components/StoreScopedSearch.js +0 -27
- package/dist/seed/defaults/homepage-sections.d.ts +0 -2
- package/dist/seed/defaults/homepage-sections.js +0 -60
- package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
- package/dist/seed/factories/homepage-section.factory.js +0 -13
- /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
|
@@ -651,6 +651,12 @@ export interface EventRafflesSectionConfig {
|
|
|
651
651
|
title?: string;
|
|
652
652
|
subtitle?: string;
|
|
653
653
|
maxItems?: number;
|
|
654
|
+
/**
|
|
655
|
+
* Which prize-event types the strip spans. The two concrete values are
|
|
656
|
+
* `EventType` members, matched against the `type` field — see
|
|
657
|
+
* `EventRafflesSection` for why `hasRaffle` was the wrong field and what it
|
|
658
|
+
* silently did instead.
|
|
659
|
+
*/
|
|
654
660
|
raffleType?: "raffle" | "spin_wheel" | "all";
|
|
655
661
|
showEntryCount?: boolean;
|
|
656
662
|
showCountdown?: boolean;
|
|
@@ -665,22 +671,125 @@ export interface GoogleReviewsSectionConfig {
|
|
|
665
671
|
linkToGoogleMaps?: boolean;
|
|
666
672
|
googleMapsUrl?: string;
|
|
667
673
|
}
|
|
668
|
-
|
|
674
|
+
/**
|
|
675
|
+
* Added 2026-10-19 promoting `HowItWorksSection` out of the orphan set — see
|
|
676
|
+
* `HowItWorksSection.tsx`'s own docstring for why `renderIcon`/`onCtaClick`
|
|
677
|
+
* (function props, not serialisable) became `iconKey`/`ctaLink`. `steps` is
|
|
678
|
+
* inline because the step count/order IS the authored content, same reasoning
|
|
679
|
+
* as `TestimonialsSectionConfig.testimonials` below.
|
|
680
|
+
*/
|
|
681
|
+
export interface HowItWorksStepConfig {
|
|
682
|
+
number: number;
|
|
683
|
+
title: string;
|
|
684
|
+
desc: string;
|
|
685
|
+
iconKey?: string;
|
|
686
|
+
iconColor?: string;
|
|
687
|
+
iconBg?: string;
|
|
688
|
+
badgeBg?: string;
|
|
689
|
+
}
|
|
690
|
+
export interface HowItWorksSectionConfig {
|
|
691
|
+
title: string;
|
|
692
|
+
subtitle?: string;
|
|
693
|
+
pillLabel?: string;
|
|
694
|
+
ctaLabel?: string;
|
|
695
|
+
ctaLink?: string;
|
|
696
|
+
steps: HowItWorksStepConfig[];
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* Added 2026-10-19 promoting `TestimonialsCarousel` out of the orphan set.
|
|
700
|
+
* Deliberately NOT a read from the `testimonials` collection shape
|
|
701
|
+
* (`Testimonial` in `types/index.ts`) — `featured`/`sortOrder`/`active` are
|
|
702
|
+
* collection-row housekeeping with no meaning inside an already-ordered
|
|
703
|
+
* config array, and `avatarUrl` was declared there and never rendered. No
|
|
704
|
+
* `autoScroll`/`scrollInterval`/`loop` either: the component has no autoplay,
|
|
705
|
+
* arrows or dots — it is not actually a carousel, despite the name.
|
|
706
|
+
*/
|
|
707
|
+
/** An embedded sub-document with its own `id` — a type alias, not a Firestore collection root, so it does not extend `BaseDocument`. */
|
|
708
|
+
export type TestimonialConfigEntry = {
|
|
709
|
+
id: string;
|
|
710
|
+
name: string;
|
|
711
|
+
rating: 1 | 2 | 3 | 4 | 5;
|
|
712
|
+
text: string;
|
|
713
|
+
};
|
|
714
|
+
export interface TestimonialsSectionConfig {
|
|
715
|
+
eyebrow?: string;
|
|
716
|
+
heading?: string;
|
|
717
|
+
testimonials: TestimonialConfigEntry[];
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Added 2026-10-19 promoting `PromoGrid` out of the orphan set. `banners` is
|
|
721
|
+
* capped at `PROMO_GRID_MAX_BANNERS` (4) by the component itself — the
|
|
722
|
+
* layout has exactly one hero slot and three regular ones, so a 5th banner
|
|
723
|
+
* is silently dropped, not a bug. No admin background/colour field: the dark
|
|
724
|
+
* theme is intentionally hardcoded (Root Cause #67 — a themed background
|
|
725
|
+
* paired with fixed white ink would invert wrong in a light theme; this
|
|
726
|
+
* component is always dark, by design, so it never pairs the two).
|
|
727
|
+
*/
|
|
728
|
+
/** An embedded sub-document with its own `id` — a type alias, not a Firestore collection root, so it does not extend `BaseDocument`. */
|
|
729
|
+
export type PromoBannerConfigEntry = {
|
|
730
|
+
id: string;
|
|
731
|
+
title: string;
|
|
732
|
+
ctaLabel: string;
|
|
733
|
+
ctaUrl: string;
|
|
734
|
+
image: string;
|
|
735
|
+
};
|
|
736
|
+
export interface PromoGridSectionConfig {
|
|
737
|
+
eyebrow?: string;
|
|
738
|
+
heading?: string;
|
|
739
|
+
banners: PromoBannerConfigEntry[];
|
|
740
|
+
}
|
|
741
|
+
export type SectionType = "welcome" | "carousel" | "stats" | "trust-indicators" | "categories" | "brands" | "products" | "pre-orders" | "auctions" | "banner" | "features" | "reviews" | "whatsapp-community" | "faq" | "blog-articles" | "newsletter" | "stores" | "events" | "social-feed" | "custom-cards" | "google-reviews" | "featured-bundles" | "prize-draws" | "event-raffles" | "collection-cards" | "how-it-works" | "testimonials" | "promo-grid";
|
|
669
742
|
export type SectionConfig = CarouselSectionConfig | WelcomeSectionConfig | StatsSectionConfig | TrustIndicatorsSectionConfig | CategoriesSectionConfig | BrandsSectionConfig | ProductsSectionConfig | PreOrdersSectionConfig | AuctionsSectionConfig | BannerSectionConfig | FeaturesSectionConfig | ReviewsSectionConfig | WhatsAppCommunitySectionConfig | FAQSectionConfig | BlogArticlesSectionConfig | NewsletterSectionConfig | StoresSectionConfig | EventsSectionConfig | SocialFeedSectionConfig | CustomCardsSectionConfig | GoogleReviewsSectionConfig | FeaturedBundlesSectionConfig | PrizeDrawsSectionConfig | EventRafflesSectionConfig | CollectionCardsSectionConfig;
|
|
743
|
+
/**
|
|
744
|
+
* Which page a section row belongs to.
|
|
745
|
+
*
|
|
746
|
+
* One collection, one owner per surface. This does NOT reintroduce the
|
|
747
|
+
* `siteSettings.homepageLayout` that `sectionTemplates.ts` deliberately refuses
|
|
748
|
+
* — that note forbids a SECOND owner of the homepage's layout, and this keeps
|
|
749
|
+
* `homepageSections` the single source of truth while letting a category or a
|
|
750
|
+
* brand page own its own ordered list.
|
|
751
|
+
*/
|
|
752
|
+
export declare const SECTION_SURFACE_VALUES: readonly ["homepage", "category", "brand", "product", "store"];
|
|
753
|
+
export type SectionSurface = (typeof SECTION_SURFACE_VALUES)[number];
|
|
754
|
+
/** Absent means `"homepage"`. See the field comment below. */
|
|
755
|
+
export declare const DEFAULT_SECTION_SURFACE: SectionSurface;
|
|
670
756
|
export interface HomepageSectionDocument extends BaseDocument {
|
|
671
757
|
type: SectionType;
|
|
672
758
|
order: number;
|
|
673
759
|
enabled: boolean;
|
|
674
760
|
config: SectionConfig;
|
|
761
|
+
/**
|
|
762
|
+
* 🛑 OPTIONAL, and that is load-bearing. Every other field on this document
|
|
763
|
+
* is required, so a non-optional `surface` would make every one of the 23
|
|
764
|
+
* existing rows fail the type on read. Absent therefore means
|
|
765
|
+
* `DEFAULT_SECTION_SURFACE` — which is also the honest reading of history,
|
|
766
|
+
* since every row written before this existed was a homepage row.
|
|
767
|
+
*
|
|
768
|
+
* 🛑 Filter it IN MEMORY, never as a Firestore clause. The only composite
|
|
769
|
+
* index on this collection is `(enabled, order)`;
|
|
770
|
+
* `where(enabled).where(surface).orderBy(order)` is a three-field composite
|
|
771
|
+
* it does not cover and Firestore throws FAILED_PRECONDITION at RUNTIME, not
|
|
772
|
+
* at build time. `MarketplaceHomepageView` already filters sections in memory
|
|
773
|
+
* for the listing-type gate — follow that precedent. Section counts are tens.
|
|
774
|
+
*/
|
|
775
|
+
surface?: SectionSurface;
|
|
675
776
|
}
|
|
676
777
|
export declare const HOMEPAGE_SECTIONS_COLLECTION: "homepageSections";
|
|
677
778
|
export declare const HOMEPAGE_SECTIONS_INDEXED_FIELDS: readonly ["enabled", "order", "type"];
|
|
678
779
|
export declare const DEFAULT_SECTION_ORDER: Record<SectionType, number>;
|
|
679
780
|
export declare const BANNER_HEIGHTS: Record<BannerSectionConfig["height"], string>;
|
|
680
781
|
export type HomepageSectionCreateInput = Omit<HomepageSectionDocument, "id" | "createdAt" | "updatedAt">;
|
|
681
|
-
export type HomepageSectionUpdateInput = Partial<Pick<HomepageSectionDocument, "order" | "enabled" | "config">>;
|
|
782
|
+
export type HomepageSectionUpdateInput = Partial<Pick<HomepageSectionDocument, "order" | "enabled" | "config" | "surface">>;
|
|
682
783
|
export declare const homepageSectionQueryHelpers: {
|
|
683
784
|
readonly enabled: () => readonly ["enabled", "==", true];
|
|
684
785
|
readonly byType: (type: SectionType) => readonly ["type", "==", SectionType];
|
|
685
786
|
};
|
|
686
|
-
|
|
787
|
+
/**
|
|
788
|
+
* 🛑 The surface is part of the id, or a category's `products` section collides
|
|
789
|
+
* with the homepage's — same type, same generated slug, one document.
|
|
790
|
+
*
|
|
791
|
+
* `"homepage"` is omitted from the id so every existing row keeps the exact id
|
|
792
|
+
* it already has. A migration here would be a rename of 23 live documents to
|
|
793
|
+
* gain nothing.
|
|
794
|
+
*/
|
|
795
|
+
export declare function createHomepageSectionId(type: SectionType, surface?: SectionSurface): string;
|
|
@@ -67,6 +67,24 @@ export const ALLOWED_LIVE_COLLECTIONS = [
|
|
|
67
67
|
"bids",
|
|
68
68
|
];
|
|
69
69
|
export const COLLECTION_CARDS_MAX_ENTRIES = 3;
|
|
70
|
+
/**
|
|
71
|
+
* Which page a section row belongs to.
|
|
72
|
+
*
|
|
73
|
+
* One collection, one owner per surface. This does NOT reintroduce the
|
|
74
|
+
* `siteSettings.homepageLayout` that `sectionTemplates.ts` deliberately refuses
|
|
75
|
+
* — that note forbids a SECOND owner of the homepage's layout, and this keeps
|
|
76
|
+
* `homepageSections` the single source of truth while letting a category or a
|
|
77
|
+
* brand page own its own ordered list.
|
|
78
|
+
*/
|
|
79
|
+
export const SECTION_SURFACE_VALUES = [
|
|
80
|
+
"homepage",
|
|
81
|
+
"category",
|
|
82
|
+
"brand",
|
|
83
|
+
"product",
|
|
84
|
+
"store",
|
|
85
|
+
];
|
|
86
|
+
/** Absent means `"homepage"`. See the field comment below. */
|
|
87
|
+
export const DEFAULT_SECTION_SURFACE = "homepage";
|
|
70
88
|
export const HOMEPAGE_SECTIONS_COLLECTION = "homepageSections";
|
|
71
89
|
export const HOMEPAGE_SECTIONS_INDEXED_FIELDS = [
|
|
72
90
|
"enabled",
|
|
@@ -99,6 +117,9 @@ export const DEFAULT_SECTION_ORDER = {
|
|
|
99
117
|
"prize-draws": 21,
|
|
100
118
|
"event-raffles": 22,
|
|
101
119
|
"collection-cards": 23,
|
|
120
|
+
"how-it-works": 24,
|
|
121
|
+
testimonials: 25,
|
|
122
|
+
"promo-grid": 26,
|
|
102
123
|
};
|
|
103
124
|
export const BANNER_HEIGHTS = {
|
|
104
125
|
sm: "200px",
|
|
@@ -110,6 +131,15 @@ export const homepageSectionQueryHelpers = {
|
|
|
110
131
|
enabled: () => ["enabled", "==", true],
|
|
111
132
|
byType: (type) => ["type", "==", type],
|
|
112
133
|
};
|
|
113
|
-
|
|
114
|
-
|
|
134
|
+
/**
|
|
135
|
+
* 🛑 The surface is part of the id, or a category's `products` section collides
|
|
136
|
+
* with the homepage's — same type, same generated slug, one document.
|
|
137
|
+
*
|
|
138
|
+
* `"homepage"` is omitted from the id so every existing row keeps the exact id
|
|
139
|
+
* it already has. A migration here would be a rename of 23 live documents to
|
|
140
|
+
* gain nothing.
|
|
141
|
+
*/
|
|
142
|
+
export function createHomepageSectionId(type, surface = DEFAULT_SECTION_SURFACE) {
|
|
143
|
+
const base = generateHomepageSectionId({ type });
|
|
144
|
+
return surface === DEFAULT_SECTION_SURFACE ? base : `${base}-${surface}`;
|
|
115
145
|
}
|
|
@@ -1,7 +1,32 @@
|
|
|
1
1
|
export * from "./firestore";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import type { SectionType } from "./firestore";
|
|
3
4
|
import type { JsonValue } from "../../../schemas/types";
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* 🛑 GENUINELY derived from `SectionType`, not a parallel hand-written list.
|
|
7
|
+
*
|
|
8
|
+
* This used to be a literal `z.enum([...25 strings...])`, with a docstring one
|
|
9
|
+
* screen up claiming it was "derived from the union, so that gap cannot
|
|
10
|
+
* reopen." It was not derived — it was a hand-typed duplicate that happened to
|
|
11
|
+
* agree with `SectionType` on the day it was written, with nothing enforcing
|
|
12
|
+
* that agreement afterward. Adding a 26th section type without also editing
|
|
13
|
+
* this array would 400 every save of the new type — exactly the failure the
|
|
14
|
+
* docstring claimed was already closed.
|
|
15
|
+
*
|
|
16
|
+
* `DEFAULT_SECTION_ORDER: Record<SectionType, number>` (`./firestore.ts`) is
|
|
17
|
+
* already compile-checked exhaustive over `SectionType` — TypeScript refuses
|
|
18
|
+
* to compile it if a union member is missing a key, or if an extra key exists
|
|
19
|
+
* that isn't in the union. So `Object.keys(DEFAULT_SECTION_ORDER)` IS the
|
|
20
|
+
* `SectionType` value set, genuinely, every time this file is built — adding
|
|
21
|
+
* a type to the union without updating `DEFAULT_SECTION_ORDER` is now a `tsc`
|
|
22
|
+
* error at THAT assignment, not a runtime 400 discovered on save.
|
|
23
|
+
*
|
|
24
|
+
* The cast is sound, not a loosening: `Object.keys` returns `string[]` only
|
|
25
|
+
* because that's TypeScript's (overly conservative) built-in signature for
|
|
26
|
+
* it — the compile-time guarantee from `DEFAULT_SECTION_ORDER`'s own type
|
|
27
|
+
* is what actually makes the runtime values correct.
|
|
28
|
+
*/
|
|
29
|
+
export declare const homepageSectionTypeSchema: z.ZodEnum<[SectionType, ...SectionType[]]>;
|
|
5
30
|
export declare const homepageSectionFirestoreSchema: z.ZodObject<{
|
|
6
31
|
createdAt: z.ZodUnion<[z.ZodDate, z.ZodString, z.ZodObject<{
|
|
7
32
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
@@ -18,12 +43,12 @@ export declare const homepageSectionFirestoreSchema: z.ZodObject<{
|
|
|
18
43
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
19
44
|
}, z.ZodTypeAny, "passthrough">>]>;
|
|
20
45
|
id: z.ZodString;
|
|
21
|
-
type: z.ZodEnum<[
|
|
46
|
+
type: z.ZodEnum<[SectionType, ...SectionType[]]>;
|
|
22
47
|
order: z.ZodNumber;
|
|
23
48
|
enabled: z.ZodBoolean;
|
|
24
49
|
config: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, z.ZodTypeDef, JsonValue>>;
|
|
25
50
|
}, "strip", z.ZodTypeAny, {
|
|
26
|
-
type:
|
|
51
|
+
type: SectionType;
|
|
27
52
|
id: string;
|
|
28
53
|
createdAt: string | Date | z.objectOutputType<{
|
|
29
54
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
@@ -35,7 +60,7 @@ export declare const homepageSectionFirestoreSchema: z.ZodObject<{
|
|
|
35
60
|
order: number;
|
|
36
61
|
config: Record<string, JsonValue>;
|
|
37
62
|
}, {
|
|
38
|
-
type:
|
|
63
|
+
type: SectionType;
|
|
39
64
|
id: string;
|
|
40
65
|
createdAt: string | Date | z.objectInputType<{
|
|
41
66
|
toDate: z.ZodFunction<z.ZodTuple<[], z.ZodUnknown>, z.ZodDate>;
|
|
@@ -61,19 +86,23 @@ export declare const homepageSectionFirestoreSchema: z.ZodObject<{
|
|
|
61
86
|
* `type` comes from `homepageSectionTypeSchema`, which is derived from the
|
|
62
87
|
* union, so that gap cannot reopen.
|
|
63
88
|
*/
|
|
89
|
+
export declare const sectionSurfaceSchema: z.ZodEnum<["homepage", "category", "brand", "product", "store"]>;
|
|
64
90
|
export declare const homepageSectionCreateSchema: z.ZodObject<{
|
|
65
|
-
type: z.ZodEnum<[
|
|
91
|
+
type: z.ZodEnum<[SectionType, ...SectionType[]]>;
|
|
66
92
|
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
67
93
|
order: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
surface: z.ZodOptional<z.ZodEnum<["homepage", "category", "brand", "product", "store"]>>;
|
|
68
95
|
config: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, z.ZodTypeDef, JsonValue>>;
|
|
69
96
|
}, "strip", z.ZodTypeAny, {
|
|
70
|
-
type:
|
|
97
|
+
type: SectionType;
|
|
71
98
|
enabled: boolean;
|
|
72
99
|
config: Record<string, JsonValue>;
|
|
100
|
+
surface?: "brand" | "category" | "store" | "product" | "homepage" | undefined;
|
|
73
101
|
order?: number | undefined;
|
|
74
102
|
}, {
|
|
75
|
-
type:
|
|
103
|
+
type: SectionType;
|
|
76
104
|
config: Record<string, JsonValue>;
|
|
105
|
+
surface?: "brand" | "category" | "store" | "product" | "homepage" | undefined;
|
|
77
106
|
enabled?: boolean | undefined;
|
|
78
107
|
order?: number | undefined;
|
|
79
108
|
}>;
|
|
@@ -184,15 +213,15 @@ export declare const carouselCardSchema: z.ZodObject<{
|
|
|
184
213
|
}, "strip", z.ZodTypeAny, {
|
|
185
214
|
title?: string | undefined;
|
|
186
215
|
description?: string | undefined;
|
|
187
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
188
216
|
textColor?: string | undefined;
|
|
217
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
189
218
|
subtitle?: string | undefined;
|
|
190
219
|
eyebrow?: string | undefined;
|
|
191
220
|
}, {
|
|
192
221
|
title?: string | undefined;
|
|
193
222
|
description?: string | undefined;
|
|
194
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
195
223
|
textColor?: string | undefined;
|
|
224
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
196
225
|
subtitle?: string | undefined;
|
|
197
226
|
eyebrow?: string | undefined;
|
|
198
227
|
}>>;
|
|
@@ -251,8 +280,8 @@ export declare const carouselCardSchema: z.ZodObject<{
|
|
|
251
280
|
content?: {
|
|
252
281
|
title?: string | undefined;
|
|
253
282
|
description?: string | undefined;
|
|
254
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
255
283
|
textColor?: string | undefined;
|
|
284
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
256
285
|
subtitle?: string | undefined;
|
|
257
286
|
eyebrow?: string | undefined;
|
|
258
287
|
} | undefined;
|
|
@@ -292,8 +321,8 @@ export declare const carouselCardSchema: z.ZodObject<{
|
|
|
292
321
|
content?: {
|
|
293
322
|
title?: string | undefined;
|
|
294
323
|
description?: string | undefined;
|
|
295
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
296
324
|
textColor?: string | undefined;
|
|
325
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
297
326
|
subtitle?: string | undefined;
|
|
298
327
|
eyebrow?: string | undefined;
|
|
299
328
|
} | undefined;
|
|
@@ -524,15 +553,15 @@ export declare const carouselSlideFirestoreSchema: z.ZodObject<{
|
|
|
524
553
|
}, "strip", z.ZodTypeAny, {
|
|
525
554
|
title?: string | undefined;
|
|
526
555
|
description?: string | undefined;
|
|
527
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
528
556
|
textColor?: string | undefined;
|
|
557
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
529
558
|
subtitle?: string | undefined;
|
|
530
559
|
eyebrow?: string | undefined;
|
|
531
560
|
}, {
|
|
532
561
|
title?: string | undefined;
|
|
533
562
|
description?: string | undefined;
|
|
534
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
535
563
|
textColor?: string | undefined;
|
|
564
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
536
565
|
subtitle?: string | undefined;
|
|
537
566
|
eyebrow?: string | undefined;
|
|
538
567
|
}>>;
|
|
@@ -591,8 +620,8 @@ export declare const carouselSlideFirestoreSchema: z.ZodObject<{
|
|
|
591
620
|
content?: {
|
|
592
621
|
title?: string | undefined;
|
|
593
622
|
description?: string | undefined;
|
|
594
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
595
623
|
textColor?: string | undefined;
|
|
624
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
596
625
|
subtitle?: string | undefined;
|
|
597
626
|
eyebrow?: string | undefined;
|
|
598
627
|
} | undefined;
|
|
@@ -632,8 +661,8 @@ export declare const carouselSlideFirestoreSchema: z.ZodObject<{
|
|
|
632
661
|
content?: {
|
|
633
662
|
title?: string | undefined;
|
|
634
663
|
description?: string | undefined;
|
|
635
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
636
664
|
textColor?: string | undefined;
|
|
665
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
637
666
|
subtitle?: string | undefined;
|
|
638
667
|
eyebrow?: string | undefined;
|
|
639
668
|
} | undefined;
|
|
@@ -771,8 +800,8 @@ export declare const carouselSlideFirestoreSchema: z.ZodObject<{
|
|
|
771
800
|
content?: {
|
|
772
801
|
title?: string | undefined;
|
|
773
802
|
description?: string | undefined;
|
|
774
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
775
803
|
textColor?: string | undefined;
|
|
804
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
776
805
|
subtitle?: string | undefined;
|
|
777
806
|
eyebrow?: string | undefined;
|
|
778
807
|
} | undefined;
|
|
@@ -880,8 +909,8 @@ export declare const carouselSlideFirestoreSchema: z.ZodObject<{
|
|
|
880
909
|
content?: {
|
|
881
910
|
title?: string | undefined;
|
|
882
911
|
description?: string | undefined;
|
|
883
|
-
textAlign?: "center" | "left" | "right" | undefined;
|
|
884
912
|
textColor?: string | undefined;
|
|
913
|
+
textAlign?: "center" | "left" | "right" | undefined;
|
|
885
914
|
subtitle?: string | undefined;
|
|
886
915
|
eyebrow?: string | undefined;
|
|
887
916
|
} | undefined;
|
|
@@ -10,34 +10,33 @@ export * from "./firestore.js";
|
|
|
10
10
|
// Here the `config` field is treated as a typed `Record<string, JsonValue>` —
|
|
11
11
|
// the section-builder schemas validate it at the form boundary.
|
|
12
12
|
import { z } from "zod";
|
|
13
|
+
import { DEFAULT_SECTION_ORDER, SECTION_SURFACE_VALUES } from "./firestore.js";
|
|
13
14
|
import { auditTimestampsShape, firestoreDateSchema } from "../../../schemas/firestore-helpers.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"collection-cards",
|
|
40
|
-
]);
|
|
15
|
+
/**
|
|
16
|
+
* 🛑 GENUINELY derived from `SectionType`, not a parallel hand-written list.
|
|
17
|
+
*
|
|
18
|
+
* This used to be a literal `z.enum([...25 strings...])`, with a docstring one
|
|
19
|
+
* screen up claiming it was "derived from the union, so that gap cannot
|
|
20
|
+
* reopen." It was not derived — it was a hand-typed duplicate that happened to
|
|
21
|
+
* agree with `SectionType` on the day it was written, with nothing enforcing
|
|
22
|
+
* that agreement afterward. Adding a 26th section type without also editing
|
|
23
|
+
* this array would 400 every save of the new type — exactly the failure the
|
|
24
|
+
* docstring claimed was already closed.
|
|
25
|
+
*
|
|
26
|
+
* `DEFAULT_SECTION_ORDER: Record<SectionType, number>` (`./firestore.ts`) is
|
|
27
|
+
* already compile-checked exhaustive over `SectionType` — TypeScript refuses
|
|
28
|
+
* to compile it if a union member is missing a key, or if an extra key exists
|
|
29
|
+
* that isn't in the union. So `Object.keys(DEFAULT_SECTION_ORDER)` IS the
|
|
30
|
+
* `SectionType` value set, genuinely, every time this file is built — adding
|
|
31
|
+
* a type to the union without updating `DEFAULT_SECTION_ORDER` is now a `tsc`
|
|
32
|
+
* error at THAT assignment, not a runtime 400 discovered on save.
|
|
33
|
+
*
|
|
34
|
+
* The cast is sound, not a loosening: `Object.keys` returns `string[]` only
|
|
35
|
+
* because that's TypeScript's (overly conservative) built-in signature for
|
|
36
|
+
* it — the compile-time guarantee from `DEFAULT_SECTION_ORDER`'s own type
|
|
37
|
+
* is what actually makes the runtime values correct.
|
|
38
|
+
*/
|
|
39
|
+
export const homepageSectionTypeSchema = z.enum(Object.keys(DEFAULT_SECTION_ORDER));
|
|
41
40
|
// JsonValue Zod — used for section configs whose shape varies per section type.
|
|
42
41
|
// The section-builder schemas (W5 row 1) provide the per-type validation.
|
|
43
42
|
const jsonValueSchema = z.lazy(() => z.union([
|
|
@@ -70,10 +69,23 @@ export const homepageSectionFirestoreSchema = z.object({
|
|
|
70
69
|
* `type` comes from `homepageSectionTypeSchema`, which is derived from the
|
|
71
70
|
* union, so that gap cannot reopen.
|
|
72
71
|
*/
|
|
72
|
+
/*
|
|
73
|
+
* 🛑 Derived from SECTION_SURFACE_VALUES, not restated as a literal list —
|
|
74
|
+
* same discipline `homepageSectionTypeSchema` above now follows too (fixed
|
|
75
|
+
* 2026-10-19; it used to be the hand-written duplicate this comment used to
|
|
76
|
+
* warn about, with nothing enforcing parity with `SectionType`).
|
|
77
|
+
*/
|
|
78
|
+
export const sectionSurfaceSchema = z.enum(SECTION_SURFACE_VALUES);
|
|
73
79
|
export const homepageSectionCreateSchema = z.object({
|
|
74
80
|
type: homepageSectionTypeSchema,
|
|
75
81
|
enabled: z.boolean().optional().default(true),
|
|
76
82
|
order: z.number().int().optional(),
|
|
83
|
+
/*
|
|
84
|
+
* A plain `z.object()` STRIPS unknown keys silently, so without this line a
|
|
85
|
+
* caller's `surface` vanishes between the request and the handler with no
|
|
86
|
+
* error anywhere — Root Cause #76. Absent still means "homepage".
|
|
87
|
+
*/
|
|
88
|
+
surface: sectionSurfaceSchema.optional(),
|
|
77
89
|
// Deliberately open. Every section type carries a different config shape,
|
|
78
90
|
// and a closed schema here would silently STRIP the builder's output for any
|
|
79
91
|
// type it did not enumerate — the `productBaseSchema` failure, one domain
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
export * from "./actions";
|
|
2
|
-
export { HomepageSectionsRepository } from "./repository/homepage.repository";
|
|
3
2
|
export { carouselRepository } from "./repository/carousel.repository";
|
|
4
3
|
export { homepageSectionsRepository } from "./repository/homepage-sections.repository";
|
|
5
4
|
export { manifest } from "./manifest";
|
|
6
|
-
export { GET as homepageGET, GET, POST } from "./api/route";
|
|
7
|
-
export { homepageSectionItemGET, homepageSectionItemPATCH, homepageSectionItemDELETE, } from "./api/[id]/route";
|
|
8
5
|
export { carouselGET, carouselPOST } from "./api/carousel/route";
|
|
9
6
|
export { carouselItemGET, carouselItemPATCH, carouselItemDELETE, } from "./api/carousel/[id]/route";
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
export * from "./actions/index.js";
|
|
2
|
-
export { HomepageSectionsRepository } from "./repository/homepage.repository.js";
|
|
3
2
|
export { carouselRepository } from "./repository/carousel.repository.js";
|
|
4
3
|
export { homepageSectionsRepository } from "./repository/homepage-sections.repository.js";
|
|
5
4
|
export { manifest } from "./manifest.js";
|
|
6
|
-
export { GET as homepageGET, GET, POST } from "./api/route.js";
|
|
7
|
-
export { homepageSectionItemGET, homepageSectionItemPATCH, homepageSectionItemDELETE, } from "./api/[id]/route.js";
|
|
8
5
|
export { carouselGET, carouselPOST } from "./api/carousel/route.js";
|
|
9
6
|
export { carouselItemGET, carouselItemPATCH, carouselItemDELETE, } from "./api/carousel/[id]/route.js";
|
|
@@ -1,31 +1,3 @@
|
|
|
1
|
-
export type HomepageSectionType = "hero" | "featured_categories" | "featured_products" | "banner" | "testimonials" | "promotions" | "blog_posts" | "sellers" | "custom";
|
|
2
|
-
export interface HomepageSectionContent {
|
|
3
|
-
title?: string;
|
|
4
|
-
subtitle?: string;
|
|
5
|
-
ctaLabel?: string;
|
|
6
|
-
ctaUrl?: string;
|
|
7
|
-
imageUrl?: string;
|
|
8
|
-
videoUrl?: string;
|
|
9
|
-
itemIds?: string[];
|
|
10
|
-
html?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface HomepageSection {
|
|
13
|
-
id: string;
|
|
14
|
-
type: HomepageSectionType;
|
|
15
|
-
title?: string;
|
|
16
|
-
/** Primary enable/disable flag stored in Firestore as `enabled` */
|
|
17
|
-
enabled?: boolean;
|
|
18
|
-
/** Alias kept for older consumers */
|
|
19
|
-
isVisible?: boolean;
|
|
20
|
-
order?: number;
|
|
21
|
-
content?: HomepageSectionContent;
|
|
22
|
-
mobile?: Partial<HomepageSectionContent>;
|
|
23
|
-
createdAt?: string;
|
|
24
|
-
updatedAt?: string;
|
|
25
|
-
}
|
|
26
|
-
export interface HomepageData {
|
|
27
|
-
sections: HomepageSection[];
|
|
28
|
-
}
|
|
29
1
|
export interface HotspotPin {
|
|
30
2
|
id: string;
|
|
31
3
|
name: string;
|
|
@@ -62,15 +34,6 @@ export interface Banner {
|
|
|
62
34
|
sortOrder: number;
|
|
63
35
|
active: boolean;
|
|
64
36
|
}
|
|
65
|
-
export interface PromoBanner {
|
|
66
|
-
id: string;
|
|
67
|
-
title: string;
|
|
68
|
-
ctaLabel: string;
|
|
69
|
-
ctaUrl: string;
|
|
70
|
-
image: string;
|
|
71
|
-
sortOrder: number;
|
|
72
|
-
active: boolean;
|
|
73
|
-
}
|
|
74
37
|
export type TrustBadgeIconKey = "shipping" | "support" | "rewards" | "secure";
|
|
75
38
|
export interface TrustBadge {
|
|
76
39
|
id: string;
|
|
@@ -80,16 +43,6 @@ export interface TrustBadge {
|
|
|
80
43
|
sortOrder: number;
|
|
81
44
|
active: boolean;
|
|
82
45
|
}
|
|
83
|
-
export interface Testimonial {
|
|
84
|
-
id: string;
|
|
85
|
-
name: string;
|
|
86
|
-
rating: 1 | 2 | 3 | 4 | 5;
|
|
87
|
-
text: string;
|
|
88
|
-
avatarUrl?: string;
|
|
89
|
-
featured: boolean;
|
|
90
|
-
sortOrder: number;
|
|
91
|
-
active: boolean;
|
|
92
|
-
}
|
|
93
46
|
export interface BeforeAfterItem {
|
|
94
47
|
id: string;
|
|
95
48
|
beforeImage: string;
|
|
@@ -1 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* 🛑 DELETED 2026-10-19 — a second, incompatible section vocabulary, attached
|
|
3
|
+
* to LIVE, MOUNTED, publicly-reachable code.
|
|
4
|
+
*
|
|
5
|
+
* This file declared `HomepageSectionType` (9 values: `hero`,
|
|
6
|
+
* `featured_categories`, `featured_products`, `banner`, `testimonials`,
|
|
7
|
+
* `promotions`, `blog_posts`, `sellers`, `custom`), `HomepageSectionContent`,
|
|
8
|
+
* `HomepageSection` and `HomepageData`, against the live `SectionType` in
|
|
9
|
+
* `../schemas/firestore.ts`, which holds 25 values sharing exactly ONE
|
|
10
|
+
* (`banner`) with this union. A second, independently-declared copy of the
|
|
11
|
+
* same 9-value union lived in `seed/factories/homepage-section.factory.ts`
|
|
12
|
+
* too — THREE incompatible section vocabularies in one codebase, none of them
|
|
13
|
+
* the one the real renderer and repository use.
|
|
14
|
+
*
|
|
15
|
+
* This was not dead code sitting unused — `GET /api/homepage-sections` and
|
|
16
|
+
* `GET/POST /api/homepage-sections/[id]` were REAL, MOUNTED routes (stubs
|
|
17
|
+
* literally headed "feat-homepage — Pure stub", from a generic starter kit
|
|
18
|
+
* never adapted to this project) reading/writing the SAME `homepageSections`
|
|
19
|
+
* Firestore collection the real system owns, through a SECOND,
|
|
20
|
+
* identically-named `HomepageSectionsRepository` class (a generic
|
|
21
|
+
* `IRepository<HomepageSection>` wrapper in `repository/homepage.repository.ts`,
|
|
22
|
+
* distinct from the real `BaseRepository`-backed one in
|
|
23
|
+
* `homepage-sections.repository.ts`) — Root Cause #36's two-same-named-types
|
|
24
|
+
* defect, on a REPOSITORY CLASS this time, with a live route behind it.
|
|
25
|
+
*
|
|
26
|
+
* Concretely, before this deletion: the stub's GET filtered on `isVisible==true`,
|
|
27
|
+
* a field that does not exist on a real `HomepageSectionDocument` (the real
|
|
28
|
+
* field is `enabled`), so unauthenticated requests always got `[]`; its POST
|
|
29
|
+
* (admin-gated) would have written a document shaped `{ type: "hero", title,
|
|
30
|
+
* content: {...} }` into the collection the real renderer reads, where
|
|
31
|
+
* `SECTION_REGISTRY[section.type]` — see `../lib/section-renderer.tsx` — would
|
|
32
|
+
* resolve to `undefined` and render nothing, with no error anywhere: a
|
|
33
|
+
* corrupted, uneditable-through-the-real-admin-UI row, silently invisible.
|
|
34
|
+
*
|
|
35
|
+
* `useHomepage()` (the hook typed against `HomepageData`) fetched
|
|
36
|
+
* `HOMEPAGE_ENDPOINTS.GET = "/api/homepage"`, which was never mounted at all.
|
|
37
|
+
* `useHomepageSections()` called the stub above and had zero real callers —
|
|
38
|
+
* only a comment in `AdminSectionsView.tsx` mentioning it existed.
|
|
39
|
+
*
|
|
40
|
+
* All of it is deleted: the two hooks, the stub API routes (`api/route.ts`,
|
|
41
|
+
* `api/[id]/`, and a THIRD unused parallel stub at `api/sections/` for
|
|
42
|
+
* `/api/homepage/sections`), the stub repository class, `HeroSection.tsx`
|
|
43
|
+
* (zero real consumers), the seed factory, and the matching consumer-side
|
|
44
|
+
* `src/app/api/homepage-sections/{route.ts,[id]/route.ts}`.
|
|
45
|
+
*
|
|
46
|
+
* The live contract is `SectionType` / `SectionConfig` / `HomepageSectionDocument`
|
|
47
|
+
* in `../schemas/firestore.ts`, served by `GET /api/admin/sections` and read
|
|
48
|
+
* directly by `MarketplaceHomepageView` via `homepageSectionsRepository`.
|
|
49
|
+
*/
|
|
1
50
|
export {};
|
|
@@ -8,6 +8,17 @@ export interface AppLayoutShellSidebarLink {
|
|
|
8
8
|
label: string;
|
|
9
9
|
/** Optional icon rendered before the label (emoji string or ReactNode). */
|
|
10
10
|
icon?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Sub-links, rendered indented beneath this one.
|
|
13
|
+
*
|
|
14
|
+
* 🛑 This mirrors the top navbar's dropdown, and it exists for the same
|
|
15
|
+
* reason the navbar's does: the sidebar and the mobile sheet are built from
|
|
16
|
+
* the SAME nav items, so a parent that gained children in the navbar would
|
|
17
|
+
* otherwise silently lose every one of them here — the merge would read as a
|
|
18
|
+
* deletion on exactly the surface phones use. One level only, matching
|
|
19
|
+
* `NavbarLayoutItem`.
|
|
20
|
+
*/
|
|
21
|
+
children?: AppLayoutShellSidebarLink[];
|
|
11
22
|
}
|
|
12
23
|
export interface AppLayoutShellSidebarSection {
|
|
13
24
|
title?: string;
|