@mohasinac/appkit 2.7.56 → 2.7.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +7 -1
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +8 -2
- package/dist/_internal/shared/actions/action-registry.js +31 -5
- package/dist/client.d.ts +2 -4
- package/dist/client.js +2 -3
- package/dist/configs/tailwind.d.ts +16 -3
- package/dist/configs/tailwind.js +18 -5
- package/dist/constants/field-names.d.ts +3 -0
- package/dist/constants/field-names.js +3 -0
- package/dist/features/about/components/FAQPageView.js +2 -2
- package/dist/features/about/components/FeesView.js +1 -1
- package/dist/features/about/components/PolicyPageView.js +1 -1
- package/dist/features/about/components/PublicProfileView.js +1 -1
- package/dist/features/account/components/AddressBook.js +1 -1
- package/dist/features/account/components/AddressesIndexListing.js +1 -1
- package/dist/features/account/components/BuyerAccountGuideView.js +7 -7
- package/dist/features/account/components/BuyerAuctionsGuideView.js +7 -7
- package/dist/features/account/components/BuyerOrdersGuideView.js +6 -6
- package/dist/features/account/components/BuyerShoppingGuideView.js +7 -7
- package/dist/features/account/components/MessagesView.js +1 -1
- package/dist/features/account/components/NotificationPreferencesPanel.js +12 -3
- package/dist/features/account/components/UserOffersPanel.js +2 -2
- package/dist/features/account/components/UserSidebar.js +3 -3
- package/dist/features/account/components/UserSupportView.js +5 -5
- package/dist/features/admin/components/AdminAdsView.js +1 -1
- package/dist/features/admin/components/AdminAllEventEntriesView.js +2 -2
- package/dist/features/admin/components/AdminAnalyticsGuideView.js +3 -3
- package/dist/features/admin/components/AdminBidsView.js +6 -2
- package/dist/features/admin/components/AdminBlogView.js +7 -2
- package/dist/features/admin/components/AdminBrandsView.js +7 -2
- package/dist/features/admin/components/AdminBundleEditorView.js +13 -9
- package/dist/features/admin/components/AdminBundlesView.js +4 -2
- package/dist/features/admin/components/AdminCarouselEditorView.js +7 -8
- package/dist/features/admin/components/AdminCarouselView.js +6 -4
- package/dist/features/admin/components/AdminCartsView.js +1 -1
- package/dist/features/admin/components/AdminCatalogGuideView.js +5 -5
- package/dist/features/admin/components/AdminCategoriesView.js +7 -2
- package/dist/features/admin/components/AdminContactEditorView.js +2 -2
- package/dist/features/admin/components/AdminContactView.js +4 -2
- package/dist/features/admin/components/AdminContentGuideView.js +6 -6
- package/dist/features/admin/components/AdminCouponsView.js +4 -2
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -1
- package/dist/features/admin/components/AdminFaqsView.js +4 -2
- package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -1
- package/dist/features/admin/components/AdminFeaturesView.js +5 -1
- package/dist/features/admin/components/AdminGuideHubView.js +1 -1
- package/dist/features/admin/components/AdminHistoryView.js +1 -1
- package/dist/features/admin/components/AdminListingScaffold.js +1 -1
- package/dist/features/admin/components/AdminMediaView.js +10 -5
- package/dist/features/admin/components/AdminNavigationView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +4 -2
- package/dist/features/admin/components/AdminNotificationsView.js +7 -2
- package/dist/features/admin/components/AdminOrdersGuideView.js +5 -5
- package/dist/features/admin/components/AdminOrdersView.js +11 -2
- package/dist/features/admin/components/AdminPayoutsView.js +6 -2
- package/dist/features/admin/components/AdminPrizeDrawsView.js +4 -0
- package/dist/features/admin/components/AdminProductsView.js +14 -2
- package/dist/features/admin/components/AdminReturnRequestsView.js +1 -1
- package/dist/features/admin/components/AdminReviewsView.js +7 -2
- package/dist/features/admin/components/AdminScammerEditorView.js +3 -3
- package/dist/features/admin/components/AdminScammersView.js +5 -5
- package/dist/features/admin/components/AdminSectionsView.js +2 -2
- package/dist/features/admin/components/AdminSessionsView.js +6 -2
- package/dist/features/admin/components/AdminSidebar.js +3 -3
- package/dist/features/admin/components/AdminSiteSettingsView.js +1 -1
- package/dist/features/admin/components/AdminStoreAddressesView.js +1 -1
- package/dist/features/admin/components/AdminStoreEditorView.js +1 -1
- package/dist/features/admin/components/AdminStoresGuideView.js +6 -6
- package/dist/features/admin/components/AdminStoresView.js +7 -2
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +3 -1
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +4 -4
- package/dist/features/admin/components/AdminSupportTicketsView.js +8 -8
- package/dist/features/admin/components/AdminTeamGuideView.js +4 -4
- package/dist/features/admin/components/AdminTeamView.js +4 -2
- package/dist/features/admin/components/AdminTrustGuideView.js +5 -5
- package/dist/features/admin/components/AdminUserEditorView.js +2 -2
- package/dist/features/admin/components/AdminUsersGuideView.js +5 -5
- package/dist/features/admin/components/AdminUsersView.js +6 -2
- package/dist/features/admin/components/AdminViewCards.js +3 -3
- package/dist/features/admin/components/AdminWishlistsView.js +1 -1
- package/dist/features/admin/components/DataTable.js +1 -1
- package/dist/features/admin/constants/filter-tabs.d.ts +9 -0
- package/dist/features/admin/constants/filter-tabs.js +3 -0
- package/dist/features/auctions/components/AuctionBidsTable.js +1 -1
- package/dist/features/auctions/components/AuctionBottomActions.d.ts +7 -0
- package/dist/features/auctions/components/AuctionBottomActions.js +24 -0
- package/dist/features/auctions/components/AuctionDetailPageView.js +7 -7
- package/dist/features/auctions/components/AuctionsListView.js +1 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +2 -2
- package/dist/features/auctions/components/MarketplaceAuctionGrid.js +1 -1
- package/dist/features/auctions/components/PlaceBidFormClient.js +1 -1
- package/dist/features/auth/components/LoginForm.js +1 -1
- package/dist/features/auth/components/VerifyEmailView.js +2 -2
- package/dist/features/before-after/components/BeforeAfterGallery.js +1 -1
- package/dist/features/blog/components/BlogFeaturedCard.js +1 -1
- package/dist/features/blog/components/BlogIndexListing.js +1 -1
- package/dist/features/blog/components/BlogListView.js +2 -2
- package/dist/features/blog/components/BlogPostView.js +8 -8
- package/dist/features/cart/components/CartDrawer.js +2 -2
- package/dist/features/cart/repository/cart.repository.js +11 -4
- package/dist/features/cart/schemas/firestore.d.ts +3 -0
- package/dist/features/categories/components/BrandDetailPageView.js +1 -1
- package/dist/features/categories/components/CategoriesIndexListing.js +1 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +39 -3
- package/dist/features/categories/components/CategoryDetailTabs.d.ts +4 -1
- package/dist/features/categories/components/CategoryDetailTabs.js +7 -2
- package/dist/features/categories/components/CategoryGrid.js +1 -1
- package/dist/features/categories/components/CategoryProductsView.js +1 -1
- package/dist/features/categories/components/CategoryStoresListing.d.ts +5 -0
- package/dist/features/categories/components/CategoryStoresListing.js +11 -0
- package/dist/features/categories/components/CategoryTableColumns.js +2 -2
- package/dist/features/categories/components/CategoryTree.js +1 -1
- package/dist/features/categories/components/index.d.ts +2 -0
- package/dist/features/categories/components/index.js +1 -0
- package/dist/features/checkout/components/CheckoutStepper.js +2 -2
- package/dist/features/classified/components/ClassifiedIndexListing.js +2 -0
- package/dist/features/classified/components/ClassifiedListView.js +1 -1
- package/dist/features/collections/components/CollectionCard.js +1 -1
- package/dist/features/contact/components/ContactInfoSidebar.js +1 -1
- package/dist/features/copilot/components/AdminCopilotView.js +2 -2
- package/dist/features/digital-codes/components/DigitalCodesIndexListing.js +2 -0
- package/dist/features/digital-codes/components/DigitalCodesListView.js +1 -1
- package/dist/features/events/components/AdminEventsView.js +5 -1
- package/dist/features/events/components/EventCard.js +1 -1
- package/dist/features/events/components/EventPollWidget.js +3 -3
- package/dist/features/events/components/EventStatusBadge.js +5 -5
- package/dist/features/events/components/EventsIndexListing.js +1 -1
- package/dist/features/events/components/EventsListView.js +2 -2
- package/dist/features/events/components/SpinWheelView.js +5 -3
- package/dist/features/faq/components/FAQAccordion.js +2 -2
- package/dist/features/filters/AsyncFacetSection.js +3 -3
- package/dist/features/filters/FilterFacetSection.js +5 -5
- package/dist/features/filters/RangeFilter.js +1 -1
- package/dist/features/forms/Input.js +5 -5
- package/dist/features/forms/Select.js +3 -3
- package/dist/features/forms/Slider.js +1 -1
- package/dist/features/forms/Textarea.js +3 -3
- package/dist/features/forms/utils.d.ts +2 -2
- package/dist/features/forms/utils.js +2 -2
- package/dist/features/history/hooks/useHistory.js +23 -10
- package/dist/features/homepage/components/AdvertisementBanner.js +2 -2
- package/dist/features/homepage/components/CharacterHotspotForm.js +2 -2
- package/dist/features/homepage/components/FeaturedResultsSection.js +1 -1
- package/dist/features/homepage/components/HeroSection.js +1 -1
- package/dist/features/homepage/components/NewsletterSection.js +1 -1
- package/dist/features/homepage/components/SectionCarousel.js +1 -1
- package/dist/features/layout/BottomActions.js +2 -2
- package/dist/features/layout/ListingLayout.js +3 -3
- package/dist/features/layout/TitleBarLayout.js +1 -1
- package/dist/features/live/components/LiveItemsIndexListing.js +2 -0
- package/dist/features/live/components/LiveItemsListView.js +1 -1
- package/dist/features/media/index.d.ts +2 -0
- package/dist/features/media/index.js +1 -0
- package/dist/features/media/modals/ImageCropModal.js +1 -1
- package/dist/features/media/modals/ImageEditor.d.ts +12 -0
- package/dist/features/media/modals/ImageEditor.js +73 -0
- package/dist/features/media/upload/ImageUpload.d.ts +5 -1
- package/dist/features/media/upload/ImageUpload.js +33 -8
- package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
- package/dist/features/media/upload/MediaUploadField.js +26 -12
- package/dist/features/orders/components/OrdersList.js +12 -12
- package/dist/features/orders/components/RefundHistoryTable.js +2 -2
- package/dist/features/orders/components/RefundRequestView.js +3 -3
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +1 -1
- package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
- package/dist/features/pre-orders/components/PreOrderBadge.js +5 -5
- package/dist/features/pre-orders/components/PreOrderBottomActions.d.ts +5 -0
- package/dist/features/pre-orders/components/PreOrderBottomActions.js +22 -0
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +5 -5
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +47 -0
- package/dist/features/pre-orders/components/PreOrdersListView.js +1 -1
- package/dist/features/pre-orders/components/PreorderCard.js +3 -3
- package/dist/features/products/components/AuctionsIndexListing.js +23 -0
- package/dist/features/products/components/BidHistory.js +2 -2
- package/dist/features/products/components/CompareOverlay.js +1 -1
- package/dist/features/products/components/CustomFieldsEditor.js +1 -1
- package/dist/features/products/components/CustomSectionTabContent.js +1 -1
- package/dist/features/products/components/CustomSectionsEditor.js +1 -1
- package/dist/features/products/components/GroupSettingsPanel.js +2 -2
- package/dist/features/products/components/MakeOfferButton.js +2 -2
- package/dist/features/products/components/PrizeDrawBottomActions.d.ts +6 -0
- package/dist/features/products/components/PrizeDrawBottomActions.js +24 -0
- package/dist/features/products/components/PrizeDrawDetailPageView.js +5 -7
- package/dist/features/products/components/PrizeDrawEntryActions.js +5 -18
- package/dist/features/products/components/PrizeDrawItemsEditor.js +3 -3
- package/dist/features/products/components/PrizeRevealModal.js +7 -4
- package/dist/features/products/components/ProductDetailActions.d.ts +6 -1
- package/dist/features/products/components/ProductDetailActions.js +36 -6
- package/dist/features/products/components/ProductDetailPageView.js +19 -18
- package/dist/features/products/components/ProductFeaturesSelector.js +1 -1
- package/dist/features/products/components/ProductGalleryClient.js +1 -1
- package/dist/features/products/components/ProductGrid.js +8 -8
- package/dist/features/products/components/ProductTabs.js +1 -1
- package/dist/features/products/components/ProductTabsShell.js +1 -1
- package/dist/features/products/components/ProductsIndexListing.js +47 -0
- package/dist/features/products/components/RelatedProducts.js +1 -1
- package/dist/features/products/components/ShowGroupSection.js +1 -1
- package/dist/features/products/components/SublistingCarouselSection.js +1 -1
- package/dist/features/products/components/SublistingCategorySelect.js +1 -1
- package/dist/features/products/components/index.d.ts +0 -2
- package/dist/features/products/components/index.js +0 -1
- package/dist/features/products/constants/action-defs.d.ts +7 -0
- package/dist/features/products/constants/action-defs.js +14 -0
- package/dist/features/products/constants/listing-tabs.d.ts +6 -0
- package/dist/features/products/constants/listing-tabs.js +1 -0
- package/dist/features/promotions/components/CouponCard.js +3 -3
- package/dist/features/promotions/components/CouponsIndexListing.js +2 -2
- package/dist/features/promotions/components/PromotionsView.js +1 -1
- package/dist/features/reviews/components/ReviewDetailPageView.js +1 -1
- package/dist/features/reviews/components/ReviewDetailShell.js +4 -4
- package/dist/features/reviews/components/ReviewModal.js +2 -2
- package/dist/features/reviews/components/ReviewSummary.js +1 -1
- package/dist/features/reviews/components/ReviewsIndexListing.js +1 -1
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/seller/components/SellerAddressesView.js +4 -3
- package/dist/features/seller/components/SellerAnalyticsAlertsView.js +2 -2
- package/dist/features/seller/components/SellerAuctionsView.js +11 -4
- package/dist/features/seller/components/SellerBidsView.js +22 -7
- package/dist/features/seller/components/SellerBundlesView.js +11 -4
- package/dist/features/seller/components/SellerClassifiedView.js +12 -5
- package/dist/features/seller/components/SellerCouponEditorView.js +2 -2
- package/dist/features/seller/components/SellerCouponsView.js +13 -4
- package/dist/features/seller/components/SellerDigitalCodesView.js +11 -4
- package/dist/features/seller/components/SellerFeaturesView.js +1 -1
- package/dist/features/seller/components/SellerGoogleReviewsView.js +10 -5
- package/dist/features/seller/components/SellerGroupedListingsView.js +2 -0
- package/dist/features/seller/components/SellerLiveView.js +13 -6
- package/dist/features/seller/components/SellerOffersPanel.js +2 -2
- package/dist/features/seller/components/SellerOffersView.js +2 -2
- package/dist/features/seller/components/SellerOrdersView.js +41 -18
- package/dist/features/seller/components/SellerPayoutMethodsView.js +14 -5
- package/dist/features/seller/components/SellerPayoutsView.js +2 -2
- package/dist/features/seller/components/SellerPreOrdersView.js +7 -2
- package/dist/features/seller/components/SellerPrizeDrawsView.js +7 -2
- package/dist/features/seller/components/SellerProductShell.js +27 -9
- package/dist/features/seller/components/SellerProductsCards.js +2 -1
- package/dist/features/seller/components/SellerProductsView.js +22 -9
- package/dist/features/seller/components/SellerReviewsView.js +9 -1
- package/dist/features/seller/components/SellerShippingConfigsView.js +15 -6
- package/dist/features/seller/components/SellerSidebar.js +2 -2
- package/dist/features/seller/components/SellerStoreCategoriesView.js +11 -4
- package/dist/features/seller/components/SellerTemplatesView.js +20 -7
- package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
- package/dist/features/shell/StepForm.js +9 -3
- package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
- package/dist/features/site-settings/components/NavPermissionsManager.js +1 -1
- package/dist/features/stores/components/InteractiveStoreCard.js +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +1 -1
- package/dist/features/stores/components/StoreFinanceGuideView.js +2 -2
- package/dist/features/stores/components/StoreHeader.js +1 -1
- package/dist/features/stores/components/StoreListingsGuideView.js +3 -3
- package/dist/features/stores/components/StoreOrdersGuideView.js +4 -4
- package/dist/features/stores/components/StoreReviewsListing.js +1 -1
- package/dist/features/stores/components/StoreSettingsGuideView.js +2 -2
- package/dist/features/stores/components/StoresIndexListing.js +17 -1
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +4 -4
- package/dist/features/wishlist/components/WishlistPage.js +3 -3
- package/dist/features/wishlist/hooks/useWishlistToggle.js +6 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +9 -3
- package/dist/react/hooks/use-action-dispatch.d.ts +5 -0
- package/dist/react/hooks/use-action-dispatch.js +10 -0
- package/dist/seed/cart-seed-data.js +50 -3
- package/dist/seed/categories-seed-data.js +80 -16
- package/dist/seed/index.d.ts +3 -0
- package/dist/seed/index.js +3 -0
- package/dist/seed/manifest.js +15 -1
- package/dist/seed/products-classifieds-seed-data.d.ts +10 -0
- package/dist/seed/products-classifieds-seed-data.js +197 -0
- package/dist/seed/products-digital-codes-seed-data.d.ts +10 -0
- package/dist/seed/products-digital-codes-seed-data.js +204 -0
- package/dist/seed/products-live-items-seed-data.d.ts +13 -0
- package/dist/seed/products-live-items-seed-data.js +190 -0
- package/dist/styles.css +301 -3
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/index.d.ts +3 -3
- package/dist/tokens/index.js +3 -3
- package/dist/tokens/motion.d.ts +162 -0
- package/dist/tokens/motion.js +89 -0
- package/dist/ui/DataTable.js +6 -5
- package/dist/ui/components/Accordion.js +2 -1
- package/dist/ui/components/Button.style.css +15 -0
- package/dist/ui/components/Card.d.ts +5 -2
- package/dist/ui/components/Card.js +29 -11
- package/dist/ui/components/Div.d.ts +2 -16
- package/dist/ui/components/Div.js +2 -16
- package/dist/ui/components/Input.js +1 -1
- package/dist/ui/components/Layout.d.ts +9 -19
- package/dist/ui/components/Layout.js +9 -7
- package/dist/ui/components/ListingToolbar.js +1 -1
- package/dist/ui/components/Modal.js +7 -4
- package/dist/ui/components/Motion.d.ts +75 -0
- package/dist/ui/components/Motion.js +122 -0
- package/dist/ui/components/Select.js +1 -1
- package/dist/ui/components/Semantic.d.ts +81 -14
- package/dist/ui/components/Semantic.js +75 -10
- package/dist/ui/components/Semantic.style.css +261 -2
- package/dist/ui/components/SideDrawer.d.ts +1 -1
- package/dist/ui/components/SideDrawer.js +8 -6
- package/dist/ui/components/SideModal.d.ts +1 -1
- package/dist/ui/components/SideModal.js +11 -9
- package/dist/ui/components/StackedViewShell.js +6 -1
- package/dist/ui/components/StatsGrid.js +1 -1
- package/dist/ui/components/Toast.js +5 -2
- package/dist/ui/components/Typography.d.ts +44 -3
- package/dist/ui/components/Typography.js +15 -30
- package/dist/ui/components/Typography.style.css +24 -0
- package/dist/ui/components/VacationBanner.js +2 -1
- package/dist/ui/components/surface-tokens.d.ts +70 -0
- package/dist/ui/components/surface-tokens.js +68 -0
- package/dist/ui/forms/FormShell.d.ts +6 -1
- package/dist/ui/forms/FormShell.js +32 -4
- package/dist/ui/index.d.ts +9 -6
- package/dist/ui/index.js +4 -4
- package/dist/validation/schemas.d.ts +28 -28
- package/package.json +3 -1
- package/dist/_internal/client/features/seller/print-center/InventoryLabel.d.ts +0 -12
- package/dist/_internal/client/features/seller/print-center/InventoryLabel.js +0 -49
- package/dist/_internal/client/features/seller/print-center/LabelDesignPicker.d.ts +0 -7
- package/dist/_internal/client/features/seller/print-center/LabelDesignPicker.js +0 -32
- package/dist/_internal/client/features/seller/print-center/OrderPackingLabel.d.ts +0 -28
- package/dist/_internal/client/features/seller/print-center/OrderPackingLabel.js +0 -33
- package/dist/_internal/client/features/seller/print-center/PhysicalLocationModal.d.ts +0 -12
- package/dist/_internal/client/features/seller/print-center/PhysicalLocationModal.js +0 -30
- package/dist/_internal/client/features/seller/print-center/PrintCenterView.d.ts +0 -12
- package/dist/_internal/client/features/seller/print-center/PrintCenterView.js +0 -102
- package/dist/_internal/client/features/seller/print-center/PrintGrid.d.ts +0 -12
- package/dist/_internal/client/features/seller/print-center/PrintGrid.js +0 -13
- package/dist/_internal/client/features/seller/print-center/StoreCard.d.ts +0 -19
- package/dist/_internal/client/features/seller/print-center/StoreCard.js +0 -30
- package/dist/_internal/client/features/seller/print-center/WebsiteCard.d.ts +0 -11
- package/dist/_internal/client/features/seller/print-center/WebsiteCard.js +0 -25
- package/dist/_internal/client/features/seller/print-center/index.d.ts +0 -11
- package/dist/_internal/client/features/seller/print-center/index.js +0 -10
- package/dist/_internal/client/features/seller/print-center/types.d.ts +0 -20
- package/dist/_internal/client/features/seller/print-center/types.js +0 -20
- package/dist/_internal/client/features/seller/print-center/useInventoryPdf.d.ts +0 -18
- package/dist/_internal/client/features/seller/print-center/useInventoryPdf.js +0 -76
- package/dist/features/account/repository/address.repository.d.ts +0 -17
- package/dist/features/account/repository/address.repository.js +0 -184
- package/dist/features/auctions/components/AuctionCard.d.ts +0 -29
- package/dist/features/auctions/components/AuctionCard.js +0 -38
- package/dist/features/categories/components/BundleAddToCartCta.d.ts +0 -16
- package/dist/features/categories/components/BundleAddToCartCta.js +0 -54
- package/dist/features/categories/components/CategoriesListView.d.ts +0 -31
- package/dist/features/categories/components/CategoriesListView.js +0 -27
- package/dist/features/products/components/AuctionsView.d.ts +0 -6
- package/dist/features/products/components/AuctionsView.js +0 -5
- package/dist/features/products/components/BuyBar.d.ts +0 -21
- package/dist/features/products/components/BuyBar.js +0 -19
- package/dist/features/products/components/PreOrdersView.d.ts +0 -6
- package/dist/features/products/components/PreOrdersView.js +0 -5
- package/dist/features/reviews/components/ReviewsListView.d.ts +0 -31
- package/dist/features/reviews/components/ReviewsListView.js +0 -16
- package/dist/features/stores/components/StoresListView.d.ts +0 -19
- package/dist/features/stores/components/StoresListView.js +0 -25
- package/dist/features/stores/repository/store-address.repository.d.ts +0 -55
- package/dist/features/stores/repository/store-address.repository.js +0 -187
- package/dist/ui/components/BulkActionsBar.d.ts +0 -18
- package/dist/ui/components/BulkActionsBar.js +0 -25
- package/dist/ui/components/CollageLightbox.d.ts +0 -18
- package/dist/ui/components/CollageLightbox.js +0 -41
- package/dist/ui/components/StickyBottomBar.d.ts +0 -22
- package/dist/ui/components/StickyBottomBar.js +0 -20
|
@@ -40,6 +40,12 @@ export interface DashboardLayoutClientProps {
|
|
|
40
40
|
renderSidebarFooter?: () => ReactNode;
|
|
41
41
|
/** Optional className passed through to the sidebar component. */
|
|
42
42
|
className?: string;
|
|
43
|
+
/** Override the content area padding classes. */
|
|
44
|
+
contentPadding?: string;
|
|
45
|
+
/** Additional className applied to the content area background. */
|
|
46
|
+
contentSurface?: string;
|
|
47
|
+
/** Override the max-width class on the inner content wrapper. */
|
|
48
|
+
contentMaxWidth?: string;
|
|
43
49
|
children: ReactNode;
|
|
44
50
|
}
|
|
45
|
-
export declare function DashboardLayoutClient({ variant, groups, permissions, activeHref: explicitActiveHref, responsive: _responsive, className, children, }: DashboardLayoutClientProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export declare function DashboardLayoutClient({ variant, groups, permissions, activeHref: explicitActiveHref, responsive: _responsive, className, contentPadding, contentSurface, contentMaxWidth, children, }: DashboardLayoutClientProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -81,7 +81,9 @@ function filterGroups(groups, navConfig, permissions) {
|
|
|
81
81
|
}))
|
|
82
82
|
.filter((group) => group.items.length > 0);
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
const DEFAULT_CONTENT_PADDING = "px-5 py-8 md:pl-14 md:pr-6 lg:pl-16 lg:pr-10";
|
|
85
|
+
const DEFAULT_CONTENT_MAX_WIDTH = "max-w-screen-2xl";
|
|
86
|
+
export function DashboardLayoutClient({ variant, groups, permissions, activeHref: explicitActiveHref, responsive: _responsive, className, contentPadding, contentSurface, contentMaxWidth, children, }) {
|
|
85
87
|
const pathname = usePathname();
|
|
86
88
|
const activeHref = explicitActiveHref ?? pathname ?? "";
|
|
87
89
|
const { desktopOpen, mobileOpen, close, toggle } = useResponsiveDrawer();
|
|
@@ -91,5 +93,9 @@ export function DashboardLayoutClient({ variant, groups, permissions, activeHref
|
|
|
91
93
|
const adminGroups = variant === "admin"
|
|
92
94
|
? filteredGroups
|
|
93
95
|
: groups;
|
|
94
|
-
return (_jsxs(_Fragment, { children: [variant === "admin" && (_jsx(AdminSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, activePath: activeHref, groups: adminGroups, onCloseMobile: close, onToggle: toggle, className: className })), variant === "store" && (_jsx(StoreSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, activeHref: activeHref, items: [], groups: filteredGroups, onCloseMobile: close, onToggle: toggle, className: className })), variant === "user" && (_jsx(UserSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, items: filteredGroups.flatMap((g) => g.items), groups: filteredGroups, onCloseMobile: close, onToggle: toggle, className: className })), _jsx("div", { className:
|
|
96
|
+
return (_jsxs(_Fragment, { children: [variant === "admin" && (_jsx(AdminSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, activePath: activeHref, groups: adminGroups, onCloseMobile: close, onToggle: toggle, className: className })), variant === "store" && (_jsx(StoreSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, activeHref: activeHref, items: [], groups: filteredGroups, onCloseMobile: close, onToggle: toggle, className: className })), variant === "user" && (_jsx(UserSidebar, { variant: "sidebar", desktopOpen: desktopOpen, mobileOpen: mobileOpen, items: filteredGroups.flatMap((g) => g.items), groups: filteredGroups, onCloseMobile: close, onToggle: toggle, className: className })), _jsx("div", { className: [
|
|
97
|
+
"w-full flex-1 flex flex-col min-h-[calc(100dvh-var(--header-height,3.5rem))]",
|
|
98
|
+
contentPadding ?? DEFAULT_CONTENT_PADDING,
|
|
99
|
+
contentSurface,
|
|
100
|
+
].filter(Boolean).join(" "), children: _jsx("div", { className: ["w-full flex-1 mx-auto", contentMaxWidth ?? DEFAULT_CONTENT_MAX_WIDTH].filter(Boolean).join(" "), children: children }) })] }));
|
|
95
101
|
}
|
|
@@ -149,6 +149,13 @@ export const ACTIONS = {
|
|
|
149
149
|
},
|
|
150
150
|
},
|
|
151
151
|
PRE_ORDER: {
|
|
152
|
+
"add-to-cart": {
|
|
153
|
+
id: "pre-order.add-to-cart",
|
|
154
|
+
label: "Add to cart",
|
|
155
|
+
description: "Add a pre-order listing to the cart for checkout.",
|
|
156
|
+
kind: "secondary",
|
|
157
|
+
listingTypeScope: ["pre-order"],
|
|
158
|
+
},
|
|
152
159
|
"reserve-now": {
|
|
153
160
|
id: "pre-order.reserve-now",
|
|
154
161
|
label: "Reserve now",
|
|
@@ -171,11 +178,18 @@ export const ACTIONS = {
|
|
|
171
178
|
},
|
|
172
179
|
},
|
|
173
180
|
PRIZE_DRAW: {
|
|
181
|
+
"buy-now": {
|
|
182
|
+
id: "prize-draw.buy-now",
|
|
183
|
+
label: "Buy now",
|
|
184
|
+
description: "Purchase a prize-draw entry directly (buyout — skips cart, goes to checkout).",
|
|
185
|
+
kind: "primary",
|
|
186
|
+
listingTypeScope: ["prize-draw"],
|
|
187
|
+
},
|
|
174
188
|
"enter-draw": {
|
|
175
189
|
id: "prize-draw.enter-draw",
|
|
176
190
|
label: "Enter draw",
|
|
177
191
|
description: "Purchase an entry into the prize draw.",
|
|
178
|
-
kind: "
|
|
192
|
+
kind: "secondary",
|
|
179
193
|
listingTypeScope: ["prize-draw"],
|
|
180
194
|
},
|
|
181
195
|
"reveal-code": {
|
|
@@ -214,10 +228,10 @@ export const ACTIONS = {
|
|
|
214
228
|
},
|
|
215
229
|
},
|
|
216
230
|
BUNDLE: {
|
|
217
|
-
"
|
|
218
|
-
id: "bundle.
|
|
219
|
-
label: "
|
|
220
|
-
description: "
|
|
231
|
+
"buy-now": {
|
|
232
|
+
id: "bundle.buy-now",
|
|
233
|
+
label: "Buy now",
|
|
234
|
+
description: "Purchase a bundle directly (buyout — skips cart, goes to checkout).",
|
|
221
235
|
kind: "primary",
|
|
222
236
|
categoryTypeScope: ["bundle"],
|
|
223
237
|
},
|
|
@@ -1615,6 +1629,18 @@ export const ACTIONS = {
|
|
|
1615
1629
|
description: "Admin test mode: place a real order record without charging any payment.",
|
|
1616
1630
|
kind: "secondary",
|
|
1617
1631
|
},
|
|
1632
|
+
"apply-coupon": {
|
|
1633
|
+
id: "checkout.apply-coupon",
|
|
1634
|
+
label: "Apply coupon",
|
|
1635
|
+
description: "Validate and apply a coupon code at checkout before payment.",
|
|
1636
|
+
kind: "secondary",
|
|
1637
|
+
},
|
|
1638
|
+
"remove-coupon": {
|
|
1639
|
+
id: "checkout.remove-coupon",
|
|
1640
|
+
label: "Remove coupon",
|
|
1641
|
+
description: "Remove an applied coupon from the current checkout session.",
|
|
1642
|
+
kind: "ghost",
|
|
1643
|
+
},
|
|
1618
1644
|
},
|
|
1619
1645
|
NAV: {
|
|
1620
1646
|
"sign-in": {
|
package/dist/client.d.ts
CHANGED
|
@@ -65,8 +65,6 @@ export { Div } from "./ui/components/Div";
|
|
|
65
65
|
export { Main, Section } from "./ui/components/Semantic";
|
|
66
66
|
export { Badge } from "./ui/components/Badge";
|
|
67
67
|
export { Button } from "./ui/components/Button";
|
|
68
|
-
export { StickyBottomBar } from "./ui/components/StickyBottomBar";
|
|
69
|
-
export type { StickyBottomBarProps } from "./ui/components/StickyBottomBar";
|
|
70
68
|
export { ClaimCouponButton } from "./ui/components/ClaimCouponButton";
|
|
71
69
|
export type { ClaimCouponButtonProps } from "./ui/components/ClaimCouponButton";
|
|
72
70
|
export { Checkbox } from "./ui/components/Checkbox";
|
|
@@ -86,12 +84,12 @@ export { FieldCheckbox } from "./ui/forms";
|
|
|
86
84
|
export { Select } from "./ui/components/Select";
|
|
87
85
|
export type { SelectOption, SelectProps } from "./ui/components/Select";
|
|
88
86
|
export { Heading } from "./ui/components/Typography";
|
|
89
|
-
export { Label, Text } from "./ui/components/Typography";
|
|
87
|
+
export { Label, Text, Span, Caption } from "./ui/components/Typography";
|
|
90
88
|
export { TextLink } from "./ui/components/TextLink";
|
|
91
89
|
export type { TextLinkProps } from "./ui/components/TextLink";
|
|
92
90
|
export { Textarea } from "./ui/components/Textarea";
|
|
93
91
|
export { GlobalError } from "./next/components/GlobalError";
|
|
94
|
-
export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, DashboardNavProvider, LayoutClient, ListingLayout } from "./features/layout/index";
|
|
92
|
+
export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, useBottomActions, DashboardNavProvider, LayoutClient, ListingLayout } from "./features/layout/index";
|
|
95
93
|
export type { AppLayoutShellProps, AppLayoutShellSidebarLink, AppLayoutShellSidebarSection, DashboardNavState, MainNavbarItem, LayoutClientProps, ListingLayoutProps, ListingLayoutLabels } from "./features/layout/index";
|
|
96
94
|
export { Search } from "./features/search/components";
|
|
97
95
|
export type { SearchLabels, SearchProps, SearchQuickLink, SearchRouterAdapter, SearchResourceType, SearchResourceTypeOption } from "./features/search/components";
|
package/dist/client.js
CHANGED
|
@@ -129,7 +129,6 @@ export { Div } from "./ui/components/Div";
|
|
|
129
129
|
export { Main, Section } from "./ui/components/Semantic";
|
|
130
130
|
export { Badge } from "./ui/components/Badge";
|
|
131
131
|
export { Button } from "./ui/components/Button";
|
|
132
|
-
export { StickyBottomBar } from "./ui/components/StickyBottomBar";
|
|
133
132
|
export { ClaimCouponButton } from "./ui/components/ClaimCouponButton";
|
|
134
133
|
export { Checkbox } from "./ui/components/Checkbox";
|
|
135
134
|
export { Input } from "./ui/components/Input";
|
|
@@ -141,11 +140,11 @@ export { FieldSelect } from "./ui/forms";
|
|
|
141
140
|
export { FieldCheckbox } from "./ui/forms";
|
|
142
141
|
export { Select } from "./ui/components/Select";
|
|
143
142
|
export { Heading } from "./ui/components/Typography";
|
|
144
|
-
export { Label, Text } from "./ui/components/Typography";
|
|
143
|
+
export { Label, Text, Span, Caption } from "./ui/components/Typography";
|
|
145
144
|
export { TextLink } from "./ui/components/TextLink";
|
|
146
145
|
export { Textarea } from "./ui/components/Textarea";
|
|
147
146
|
export { GlobalError } from "./next/components/GlobalError";
|
|
148
|
-
export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, DashboardNavProvider, LayoutClient, ListingLayout } from "./features/layout/index";
|
|
147
|
+
export { AppLayoutShell, LocaleSwitcher, useDashboardNav, BottomActionsProvider, useBottomActions, DashboardNavProvider, LayoutClient, ListingLayout } from "./features/layout/index";
|
|
149
148
|
export { Search } from "./features/search/components";
|
|
150
149
|
export { ToastProvider, SkipToMain, NavigationLoader } from "./ui/index";
|
|
151
150
|
export { ZodSetup } from "./validation/ZodSetup";
|
|
@@ -48,10 +48,23 @@ export declare function defineTailwindConfig(override?: TailwindConfigOverride):
|
|
|
48
48
|
"text-inverse": string;
|
|
49
49
|
link: string;
|
|
50
50
|
"link-hover": string;
|
|
51
|
-
success:
|
|
52
|
-
|
|
51
|
+
success: {
|
|
52
|
+
DEFAULT: string;
|
|
53
|
+
surface: string;
|
|
54
|
+
};
|
|
55
|
+
warning: {
|
|
56
|
+
DEFAULT: string;
|
|
57
|
+
surface: string;
|
|
58
|
+
};
|
|
59
|
+
error: {
|
|
60
|
+
DEFAULT: string;
|
|
61
|
+
surface: string;
|
|
62
|
+
};
|
|
53
63
|
danger: string;
|
|
54
|
-
info:
|
|
64
|
+
info: {
|
|
65
|
+
DEFAULT: string;
|
|
66
|
+
surface: string;
|
|
67
|
+
};
|
|
55
68
|
};
|
|
56
69
|
};
|
|
57
70
|
};
|
package/dist/configs/tailwind.js
CHANGED
|
@@ -46,11 +46,24 @@ export function defineTailwindConfig(override = {}) {
|
|
|
46
46
|
"text-inverse": "var(--appkit-color-textInverse)",
|
|
47
47
|
link: "var(--appkit-color-link)",
|
|
48
48
|
"link-hover": "var(--appkit-color-linkHover)",
|
|
49
|
-
// State
|
|
50
|
-
success:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
// State — semantic colors with surface sub-keys
|
|
50
|
+
success: {
|
|
51
|
+
DEFAULT: "var(--appkit-color-success)",
|
|
52
|
+
surface: "var(--appkit-color-success-surface)",
|
|
53
|
+
},
|
|
54
|
+
warning: {
|
|
55
|
+
DEFAULT: "var(--appkit-color-warning)",
|
|
56
|
+
surface: "var(--appkit-color-warning-surface)",
|
|
57
|
+
},
|
|
58
|
+
error: {
|
|
59
|
+
DEFAULT: "var(--appkit-color-error)",
|
|
60
|
+
surface: "var(--appkit-color-error-surface)",
|
|
61
|
+
},
|
|
62
|
+
danger: "var(--appkit-color-error)",
|
|
63
|
+
info: {
|
|
64
|
+
DEFAULT: "var(--appkit-color-info)",
|
|
65
|
+
surface: "var(--appkit-color-info-surface)",
|
|
66
|
+
},
|
|
54
67
|
},
|
|
55
68
|
...(consumerTheme.extend ?? {}),
|
|
56
69
|
},
|
|
@@ -112,6 +112,9 @@ export declare const PRODUCT_FIELDS: {
|
|
|
112
112
|
readonly PRE_ORDER: "pre-order";
|
|
113
113
|
readonly PRIZE_DRAW: "prize-draw";
|
|
114
114
|
readonly BUNDLE: "bundle";
|
|
115
|
+
readonly CLASSIFIED: "classified";
|
|
116
|
+
readonly DIGITAL_CODE: "digital-code";
|
|
117
|
+
readonly LIVE: "live";
|
|
115
118
|
};
|
|
116
119
|
};
|
|
117
120
|
export declare const PRODUCT_STATUS_TRANSITIONS: Record<string, readonly string[]>;
|
|
@@ -117,6 +117,9 @@ export const PRODUCT_FIELDS = {
|
|
|
117
117
|
PRE_ORDER: "pre-order",
|
|
118
118
|
PRIZE_DRAW: "prize-draw",
|
|
119
119
|
BUNDLE: "bundle",
|
|
120
|
+
CLASSIFIED: "classified",
|
|
121
|
+
DIGITAL_CODE: "digital-code",
|
|
122
|
+
LIVE: "live",
|
|
120
123
|
},
|
|
121
124
|
};
|
|
122
125
|
export const PRODUCT_STATUS_TRANSITIONS = {
|
|
@@ -19,9 +19,9 @@ export async function FAQPageView({ category, heroBannerClass = DEFAULT_HERO_CLA
|
|
|
19
19
|
? allItems.filter((item) => item.category === category)
|
|
20
20
|
: allItems;
|
|
21
21
|
const activeCategory = categories.find((c) => c.slug === category);
|
|
22
|
-
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "faqpageview-div-93", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "faqpageview-div-94", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-3 text-white", children: activeCategory ? activeCategory.label : t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsx("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16`, "data-section": "faqpageview-div-95", children: _jsxs("div", { className: "flex flex-col md:flex-row gap-8", "data-section": "faqpageview-div-96", children: [categories.length > 0 && (_jsxs("aside", { className: "md:w-56 flex-shrink-0", children: [_jsx(Heading, { level: 3, className: "text-sm font-semibold uppercase tracking-wide text-
|
|
22
|
+
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "faqpageview-div-93", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.md} text-center`, "data-section": "faqpageview-div-94", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-3 text-white", children: activeCategory ? activeCategory.label : t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsx("div", { className: `${page.container.md} py-10 md:py-12 lg:py-16`, "data-section": "faqpageview-div-95", children: _jsxs("div", { className: "flex flex-col md:flex-row gap-8", "data-section": "faqpageview-div-96", children: [categories.length > 0 && (_jsxs("aside", { className: "md:w-56 flex-shrink-0", children: [_jsx(Heading, { level: 3, className: "text-sm font-semibold uppercase tracking-wide text-zinc-500 dark:text-zinc-400 mb-3", children: t("categoriesLabel") }), _jsxs("nav", { className: "space-y-1", children: [_jsxs(TextLink, { href: String(ROUTES.PUBLIC.FAQS), className: `flex items-center justify-between px-3 py-2 rounded-lg text-sm transition-colors ${!category
|
|
23
23
|
? "bg-primary/10 text-primary font-semibold"
|
|
24
24
|
: "hover:bg-neutral-100 dark:hover:bg-neutral-800"}`, children: [_jsxs("span", { className: `${flex.row} gap-2`, children: [_jsx(HelpCircle, { className: "w-4 h-4" }), t("allCategories")] }), _jsx(ChevronRight, { className: "w-3.5 h-3.5 opacity-50" })] }), categories.map((cat) => (_jsxs(TextLink, { href: String(ROUTES.PUBLIC.FAQ_CATEGORY(cat.slug)), className: `flex items-center justify-between px-3 py-2 rounded-lg text-sm transition-colors ${category === cat.slug
|
|
25
25
|
? "bg-primary/10 text-primary font-semibold"
|
|
26
|
-
: "hover:bg-neutral-100 dark:hover:bg-neutral-800"}`, children: [_jsxs("span", { className: `${flex.row} gap-2`, children: [_jsx("span", { children: cat.icon }), cat.label] }), _jsx(ChevronRight, { className: "w-3.5 h-3.5 opacity-50" })] }, cat.slug)))] })] })), _jsxs("div", { className: "flex-1 min-w-0", "data-section": "faqpageview-div-97", children: [visibleItems.length === 0 ? (_jsxs(Section, { className: `text-center py-16 rounded-2xl border ${themed.border} ${themed.bgSecondary}`, children: [_jsx(HelpCircle, { className: "w-10 h-10 mx-auto mb-3 text-
|
|
26
|
+
: "hover:bg-neutral-100 dark:hover:bg-neutral-800"}`, children: [_jsxs("span", { className: `${flex.row} gap-2`, children: [_jsx("span", { children: cat.icon }), cat.label] }), _jsx(ChevronRight, { className: "w-3.5 h-3.5 opacity-50" })] }, cat.slug)))] })] })), _jsxs("div", { className: "flex-1 min-w-0", "data-section": "faqpageview-div-97", children: [visibleItems.length === 0 ? (_jsxs(Section, { className: `text-center py-16 rounded-2xl border ${themed.border} ${themed.bgSecondary}`, children: [_jsx(HelpCircle, { className: "w-10 h-10 mx-auto mb-3 text-zinc-300 dark:text-zinc-600" }), _jsx(Heading, { level: 3, className: "mb-2 text-base", children: t("emptyTitle") }), _jsx(Text, { variant: "secondary", className: "text-sm", children: t("emptyText") })] })) : (_jsx(Stack, { gap: "sm", className: "space-y-3", children: visibleItems.map((item, i) => (_jsxs("details", { className: `group rounded-xl border ${themed.border} ${themed.bgPrimary} overflow-hidden`, children: [_jsxs("summary", { className: `flex items-center justify-between px-5 py-4 cursor-pointer list-none select-none font-medium text-sm hover:bg-neutral-50 dark:hover:bg-neutral-800/50 transition-colors`, children: [_jsx("span", { children: item.question }), _jsx(ChevronRight, { className: "w-4 h-4 flex-shrink-0 ml-3 transition-transform group-open:rotate-90" })] }), _jsx("div", { className: "px-5 pb-5 pt-1", "data-section": "faqpageview-div-98", children: _jsx(RichTextRenderer, { html: item.answer, proseClass: "prose prose-sm max-w-none dark:prose-invert" }) })] }, i))) })), _jsxs(Section, { className: `mt-10 rounded-2xl p-6 text-center border ${themed.border} ${themed.bgSecondary}`, children: [_jsx(Heading, { level: 3, className: "mb-2 text-base", children: t("stillNeedHelpTitle") }), _jsx(Text, { variant: "secondary", className: "text-sm mb-4", children: t("stillNeedHelpText") }), _jsxs("div", { className: `${flex.center} gap-4 flex-wrap`, "data-section": "faqpageview-div-99", children: [_jsx(TextLink, { href: String(ROUTES.PUBLIC.HELP), children: t("helpCenter") }), _jsx(TextLink, { href: String(ROUTES.PUBLIC.CONTACT), variant: "muted", children: t("contactUs") })] })] })] })] }) })] }));
|
|
27
27
|
}
|
|
@@ -56,7 +56,7 @@ export async function FeesView({ heroBannerClass = DEFAULT_HERO_CLASS, } = {}) {
|
|
|
56
56
|
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "feesview-div-100", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.sm} text-center`, "data-section": "feesview-div-101", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-4 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 max-w-2xl mx-auto", children: t("subtitle") })] }) }), _jsxs("div", { className: `${page.container.sm} py-10 md:py-12 lg:py-16 space-y-12`, "data-section": "feesview-div-102", children: [renderFeeTableSection(t, themed, FEE_ROWS), renderPayoutExampleSection(t, themed, OFFER_PAYOUT_ROWS), renderDisclaimerSection(t, themed)] })] }));
|
|
57
57
|
}
|
|
58
58
|
function renderFeeTableSection(t, themed, rows) {
|
|
59
|
-
return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6", children: t("tableTitle") }), _jsx("div", { className: `overflow-x-auto rounded-xl border ${themed.border}`, "data-section": "feesview-div-103", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: themed.bgSecondary, children: _jsxs("tr", { children: [_jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colFeeType") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colRate") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colPaidBy") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold hidden md:table-cell", children: t("colNote") })] }) }), _jsx("tbody", { className: "divide-y divide-neutral-100 dark:divide-neutral-800", children: rows.map((row) => (_jsxs("tr", { className: `${themed.bgPrimary} hover:bg-neutral-50 dark:hover:bg-neutral-800/50`, children: [_jsx("td", { className: "py-3 px-4 font-medium", children: row.category }), _jsx("td", { className: "py-3 px-4 font-semibold text-violet-700 dark:text-violet-400", children: row.rate }), _jsx("td", { className: "py-3 px-4", children: _jsx(Caption, { children: row.who }) }), _jsx("td", { className: "py-3 px-4 text-neutral-500 dark:text-neutral-400 hidden md:table-cell text-xs", children: row.note })] }, row.category))) })] }) }), _jsx(Caption, { className: "mt-3 block text-
|
|
59
|
+
return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-6", children: t("tableTitle") }), _jsx("div", { className: `overflow-x-auto rounded-xl border ${themed.border}`, "data-section": "feesview-div-103", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: themed.bgSecondary, children: _jsxs("tr", { children: [_jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colFeeType") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colRate") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold", children: t("colPaidBy") }), _jsx("th", { className: "py-3 px-4 text-left font-semibold hidden md:table-cell", children: t("colNote") })] }) }), _jsx("tbody", { className: "divide-y divide-neutral-100 dark:divide-neutral-800", children: rows.map((row) => (_jsxs("tr", { className: `${themed.bgPrimary} hover:bg-neutral-50 dark:hover:bg-neutral-800/50`, children: [_jsx("td", { className: "py-3 px-4 font-medium", children: row.category }), _jsx("td", { className: "py-3 px-4 font-semibold text-violet-700 dark:text-violet-400", children: row.rate }), _jsx("td", { className: "py-3 px-4", children: _jsx(Caption, { children: row.who }) }), _jsx("td", { className: "py-3 px-4 text-neutral-500 dark:text-neutral-400 hidden md:table-cell text-xs", children: row.note })] }, row.category))) })] }) }), _jsx(Caption, { className: "mt-3 block text-zinc-500 dark:text-zinc-400", children: t("tableNote") })] }));
|
|
60
60
|
}
|
|
61
61
|
function renderPayoutExampleSection(t, themed, rows) {
|
|
62
62
|
return (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3", children: t("payoutExampleTitle") }), _jsx(Text, { variant: "secondary", className: "mb-6", children: t("payoutExampleSubtitle") }), _jsxs("div", { className: `rounded-xl border ${themed.border} ${themed.bgPrimary} p-5 max-w-sm`, "data-section": "feesview-div-104", children: [_jsx(Heading, { level: 3, className: "text-base mb-4", children: t("payoutExampleProduct") }), _jsx("div", { className: "space-y-2", "data-section": "feesview-div-105", children: rows.map((row, i) => (_jsxs("div", { className: `flex justify-between text-sm ${row.highlight ? "border-t border-neutral-200 dark:border-neutral-700 pt-2 mt-2 font-bold" : ""}`, "data-section": "feesview-div-106", children: [_jsx(Text, { className: row.highlight ? "font-bold" : "text-neutral-600 dark:text-neutral-400", children: row.label }), _jsx(Text, { className: row.highlight ? "font-bold text-green-700 dark:text-green-400" : "", children: row.example })] }, i))) })] })] }));
|
|
@@ -45,5 +45,5 @@ export async function PolicyPageView({ policy, heroBannerClass = DEFAULT_HERO_CL
|
|
|
45
45
|
});
|
|
46
46
|
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "policypageview-div-181", children: [_jsx(Section, { className: `${heroBannerClass} text-white py-14 md:py-16 lg:py-20`, children: _jsxs("div", { className: `${page.container.sm}`, "data-section": "policypageview-div-182", children: [_jsx(Heading, { level: 1, variant: "none", className: "mb-3 text-white", children: t("title") }), _jsx(Text, { variant: "none", className: "text-white/80 text-sm", children: t("lastUpdated") })] }) }), _jsxs("div", { className: `${page.container.sm} py-10 md:py-12 lg:py-16`, "data-section": "policypageview-div-183", children: [adminHtml ? (
|
|
47
47
|
/* Admin-set HTML takes priority */
|
|
48
|
-
_jsx("div", { className: "prose prose-neutral dark:prose-invert max-w-none", dangerouslySetInnerHTML: { __html: adminHtml } })) : (_jsxs(_Fragment, { children: [t("intro") && (_jsx(Text, { variant: "secondary", className: "mb-10 text-base leading-relaxed", children: t("intro") })), _jsx(Stack, { gap: "xl", className: "space-y-10", children: sections.map((section, i) => (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3", children: section.heading }), _jsx(Text, { variant: "secondary", className: "leading-relaxed whitespace-pre-line", children: section.body })] }, i))) })] })), relatedLinks.length > 0 && (_jsxs("div", { className: `mt-14 pt-8 border-t ${themed.border}`, "data-section": "policypageview-div-184", children: [_jsx(Heading, { level: 3, className: "text-sm font-semibold mb-3 uppercase tracking-wide text-
|
|
48
|
+
_jsx("div", { className: "prose prose-neutral dark:prose-invert max-w-none", dangerouslySetInnerHTML: { __html: adminHtml } })) : (_jsxs(_Fragment, { children: [t("intro") && (_jsx(Text, { variant: "secondary", className: "mb-10 text-base leading-relaxed", children: t("intro") })), _jsx(Stack, { gap: "xl", className: "space-y-10", children: sections.map((section, i) => (_jsxs(Section, { children: [_jsx(Heading, { level: 2, className: "mb-3", children: section.heading }), _jsx(Text, { variant: "secondary", className: "leading-relaxed whitespace-pre-line", children: section.body })] }, i))) })] })), relatedLinks.length > 0 && (_jsxs("div", { className: `mt-14 pt-8 border-t ${themed.border}`, "data-section": "policypageview-div-184", children: [_jsx(Heading, { level: 3, className: "text-sm font-semibold mb-3 uppercase tracking-wide text-zinc-500 dark:text-zinc-400", children: t("relatedTitle") }), _jsx("div", { className: "flex flex-wrap gap-4", "data-section": "policypageview-div-185", children: relatedLinks.map((l) => (_jsx(TextLink, { href: l.href, variant: "muted", className: "text-sm", children: l.label }, l.href))) })] }))] })] }));
|
|
49
49
|
}
|
|
@@ -80,7 +80,7 @@ export async function PublicProfileView({ userId, heroBannerClass = DEFAULT_HERO
|
|
|
80
80
|
const storeDescription = store?.storeDescription ?? pub?.storeDescription;
|
|
81
81
|
const profileHeroCtx = { displayName, photoURL, memberSince, isSeller, storeSlug, flex, page, heroBannerClass };
|
|
82
82
|
const statItems = buildProfileStatItems(t, { listingCount, reviewCount, itemsSold, auctionsWon, totalOrders, isSeller });
|
|
83
|
-
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "publicprofileview-div-186", children: [renderProfileHero(t, profileHeroCtx), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 space-y-10`, children: [renderProfileStatsRow(themed, flex, statItems), renderProfileBioSection(themed, pub), renderStoreDescriptionSection(themed, isSeller, storeSlug ?? null, storeDescription ?? null, storeName, t), renderProfileListingsSection(t, themed, products, storeSlug ?? null), renderProfileReviewsSection(t, themed, reviews, storeSlug ?? null), _jsx("div", { className: "flex justify-center pt-2", children: _jsxs(Link, { href: String(ROUTES.HOME), className: "text-sm text-
|
|
83
|
+
return (_jsxs("div", { className: "-mx-4 md:-mx-6 lg:-mx-8 -mt-6 sm:-mt-8 lg:-mt-10", "data-section": "publicprofileview-div-186", children: [renderProfileHero(t, profileHeroCtx), _jsxs("div", { className: `${page.container.md} py-10 md:py-12 space-y-10`, children: [renderProfileStatsRow(themed, flex, statItems), renderProfileBioSection(themed, pub), renderStoreDescriptionSection(themed, isSeller, storeSlug ?? null, storeDescription ?? null, storeName, t), renderProfileListingsSection(t, themed, products, storeSlug ?? null), renderProfileReviewsSection(t, themed, reviews, storeSlug ?? null), _jsx("div", { className: "flex justify-center pt-2", children: _jsxs(Link, { href: String(ROUTES.HOME), className: "text-sm text-zinc-400 dark:text-zinc-400 hover:text-neutral-600 dark:hover:text-zinc-300", children: ["\u2190 ", t("backHome")] }) })] })] }));
|
|
84
84
|
}
|
|
85
85
|
function buildProfileStatItems(t, ctx) {
|
|
86
86
|
const { listingCount, reviewCount, itemsSold, auctionsWon, totalOrders, isSeller } = ctx;
|
|
@@ -8,7 +8,7 @@ export function AddressCard({ address, onEdit, onDelete, onSetDefault, labels =
|
|
|
8
8
|
const line2 = "line2" in address && address.line2
|
|
9
9
|
? address.line2
|
|
10
10
|
: address.addressLine2;
|
|
11
|
-
return (_jsxs(Div, {
|
|
11
|
+
return (_jsxs(Div, { surface: "card", padding: "sm", className: "relative", children: [address.isDefault && (_jsx(Span, { className: "absolute right-3 top-3 rounded-full bg-success-surface px-2 py-0.5 text-xs font-medium text-success", children: labels.defaultBadge ?? "Default" })), address.label && (_jsx(Text, { className: "mb-1 text-xs font-semibold uppercase tracking-wide text-neutral-500 dark:text-zinc-400", children: address.label })), _jsx(Text, { className: "text-sm text-neutral-900 dark:text-zinc-100", children: line1 }), line2 && _jsx(Text, { className: "text-sm text-neutral-900 dark:text-zinc-100", children: line2 }), _jsxs(Text, { className: "text-sm text-neutral-900 dark:text-zinc-100", children: [address.city, ", ", address.state, " ", address.postalCode] }), _jsx(Text, { className: "text-sm text-neutral-900 dark:text-zinc-100", children: address.country }), address.phone && (_jsx(Text, { className: "mt-1 text-sm text-neutral-500 dark:text-zinc-400", children: address.phone })), _jsxs(Div, { className: `mt-3 flex ${THEME_CONSTANTS.spacing.gap.xs}`, children: [onEdit && (_jsx(Button, { onClick: () => onEdit(address), variant: "ghost", size: "sm", className: "text-xs font-medium text-primary hover:underline", children: labels.edit ?? "Edit" })), onDelete && (_jsx(Button, { onClick: () => onDelete(address.id), variant: "ghost", size: "sm", className: "text-xs font-medium text-error hover:underline", children: labels.delete ?? "Delete" })), !address.isDefault && onSetDefault && (_jsx(Button, { onClick: () => onSetDefault(address.id), variant: "outline", size: "sm", className: "ml-auto text-xs font-medium", children: labels.setDefault ?? "Set default" }))] })] }));
|
|
12
12
|
}
|
|
13
13
|
export function AddressBook({ addresses, onEdit, onDelete, onSetDefault, onAdd, emptyLabel = "No saved addresses", addLabel = "Add Address", }) {
|
|
14
14
|
return (_jsxs(Div, { className: "space-y-4", children: [addresses.length === 0 && (_jsx(Text, { className: "text-sm text-neutral-500 dark:text-zinc-400", children: emptyLabel })), _jsx(Div, { className: `grid ${THEME_CONSTANTS.spacing.gap.md} sm:grid-cols-2`, children: addresses.map((addr) => (_jsx(AddressCard, { address: addr, onEdit: onEdit, onDelete: onDelete, onSetDefault: onSetDefault }, addr.id))) }), onAdd && (_jsxs(Button, { onClick: onAdd, variant: "outline", className: "mt-2 rounded-lg border border-dashed border-neutral-300 dark:border-slate-600 px-4 py-3 text-sm font-medium text-neutral-500 dark:text-zinc-400 transition hover:border-neutral-400 dark:hover:border-slate-500 hover:text-neutral-700 dark:hover:text-zinc-200", children: ["+ ", addLabel] }))] }));
|
|
@@ -75,5 +75,5 @@ export function AddressesIndexListing({ onAdd, onEdit, onDelete, }) {
|
|
|
75
75
|
},
|
|
76
76
|
});
|
|
77
77
|
return (_jsxs("div", { className: "space-y-4", children: [_jsx(ListingToolbar, { filterCount: activeFilterCount, onFiltersClick: openFilters, searchValue: searchInput, searchPlaceholder: "Search by address, postcode or label...", onSearchChange: setSearchInput, onSearchCommit: commitSearch, view: view, onViewChange: (v) => { if (v === "table")
|
|
78
|
-
return; setView(v); }, onResetAll: resetAll, hasActiveState: hasActiveState }), _jsx("div", { className: "px-3 sm:px-4", children: isLoading ? (_jsx("div", { className: "grid sm:grid-cols-2 gap-4", children: Array.from({ length: 4 }).map((_, i) => (_jsxs("div", { className: "rounded-xl border border-zinc-200 dark:border-slate-700 animate-pulse p-4 space-y-2", children: [_jsx("div", { className: "h-4 bg-zinc-200 dark:bg-slate-700 rounded w-1/3" }), _jsx("div", { className: "h-3 bg-zinc-200 dark:bg-slate-700 rounded w-3/4" }), _jsx("div", { className: "h-3 bg-zinc-200 dark:bg-slate-700 rounded w-1/2" })] }, i))) })) : addresses.length === 0 ? (_jsx(Text, { className: "py-8 text-center text-sm text-zinc-500 dark:text-zinc-400", children: table.get(TABLE_KEYS.QUERY) ? `No addresses matching "${table.get(TABLE_KEYS.QUERY)}"` : "No saved addresses." })) : (_jsx(AddressBook, { addresses: addresses, onEdit: onEdit, onDelete: onDelete, onAdd: onAdd })) }), filterOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", "aria-hidden": "true", onClick: () => setFilterOpen(false) }), _jsxs("div", { className: "fixed inset-y-0 left-0 z-50 flex w-80 flex-col bg-white dark:bg-slate-900 shadow-2xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: [_jsx("span", { className: "flex items-center gap-2 text-base font-semibold text-zinc-900 dark:text-zinc-100", children: "Filters" }), _jsxs("div", { className: "flex items-center gap-2", children: [activeFilterCount > 0 && (_jsx("button", { type: "button", onClick: clearFilters, className: "text-xs text-zinc-500 hover:text-rose-500 dark:text-zinc-400 transition-colors", children: "Clear all" })), _jsx("button", { type: "button", onClick: () => setFilterOpen(false), "aria-label": "Close filters", className: "rounded-lg p-1.5 text-zinc-500 hover:bg-zinc-100 dark:hover:bg-
|
|
78
|
+
return; setView(v); }, onResetAll: resetAll, hasActiveState: hasActiveState }), _jsx("div", { className: "px-3 sm:px-4", children: isLoading ? (_jsx("div", { className: "grid sm:grid-cols-2 gap-4", children: Array.from({ length: 4 }).map((_, i) => (_jsxs("div", { className: "rounded-xl border border-zinc-200 dark:border-slate-700 animate-pulse p-4 space-y-2", children: [_jsx("div", { className: "h-4 bg-zinc-200 dark:bg-slate-700 rounded w-1/3" }), _jsx("div", { className: "h-3 bg-zinc-200 dark:bg-slate-700 rounded w-3/4" }), _jsx("div", { className: "h-3 bg-zinc-200 dark:bg-slate-700 rounded w-1/2" })] }, i))) })) : addresses.length === 0 ? (_jsx(Text, { className: "py-8 text-center text-sm text-zinc-500 dark:text-zinc-400", children: table.get(TABLE_KEYS.QUERY) ? `No addresses matching "${table.get(TABLE_KEYS.QUERY)}"` : "No saved addresses." })) : (_jsx(AddressBook, { addresses: addresses, onEdit: onEdit, onDelete: onDelete, onAdd: onAdd })) }), filterOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", "aria-hidden": "true", onClick: () => setFilterOpen(false) }), _jsxs("div", { className: "fixed inset-y-0 left-0 z-50 flex w-80 flex-col bg-white dark:bg-slate-900 shadow-2xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: [_jsx("span", { className: "flex items-center gap-2 text-base font-semibold text-zinc-900 dark:text-zinc-100", children: "Filters" }), _jsxs("div", { className: "flex items-center gap-2", children: [activeFilterCount > 0 && (_jsx("button", { type: "button", onClick: clearFilters, className: "text-xs text-zinc-500 hover:text-rose-500 dark:text-zinc-400 transition-colors", children: "Clear all" })), _jsx("button", { type: "button", onClick: () => setFilterOpen(false), "aria-label": "Close filters", className: "rounded-lg p-1.5 text-zinc-500 dark:text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors", children: _jsx(X, { className: "h-5 w-5" }) })] })] }), _jsx("div", { className: "flex-1 overflow-y-auto px-4 py-4", children: _jsx(AddressFilters, { table: pendingTable }) }), _jsx("div", { className: "border-t border-zinc-200 dark:border-slate-700 px-4 py-3.5", children: _jsxs("button", { type: "button", onClick: applyFilters, className: "w-full rounded-lg bg-primary py-2.5 text-sm font-semibold text-white hover:bg-primary-600 transition-colors active:scale-[0.98]", children: ["Apply Filters", activeFilterCount > 0 ? ` (${activeFilterCount})` : ""] }) })] })] }))] }));
|
|
79
79
|
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { UserCheck, Bell, Heart, Star, Lock, AlertTriangle, Flag } from "lucide-react";
|
|
3
|
-
import { Div, Heading, Text, Section, Alert } from "../../../ui";
|
|
3
|
+
import { Div, Heading, Span, Text, Section, Alert } from "../../../ui";
|
|
4
4
|
import { ROUTES } from "../../../constants";
|
|
5
5
|
import { GC } from "../../_guide-cls";
|
|
6
6
|
const SECTIONS = [
|
|
7
7
|
{
|
|
8
8
|
Icon: UserCheck, title: "Your Profile",
|
|
9
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Update your profile at ", _jsx("
|
|
9
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Update your profile at ", _jsx(Span, { weight: "bold", children: "My Account \u2192 My Profile" }), ". Your ", _jsx(Span, { weight: "bold", children: "display name" }), " is shown to sellers on order summaries."] }), _jsxs(Div, { className: "grid sm:grid-cols-2 gap-4 text-sm", children: [_jsxs(Div, { children: [_jsx(Text, { className: "font-semibold text-[var(--appkit-color-text)] mb-1", children: "Visible to others:" }), _jsxs("ul", { className: GC.listDiscMuted, children: [_jsx("li", { children: "Display name" }), _jsx("li", { children: "Avatar / profile photo" }), _jsx("li", { children: "Bio" }), _jsx("li", { children: "Member since date" })] })] }), _jsxs(Div, { children: [_jsx(Text, { className: "font-semibold text-[var(--appkit-color-text)] mb-1", children: "Only you can see:" }), _jsxs("ul", { className: GC.listDiscMuted, children: [_jsx("li", { children: "Email address" }), _jsx("li", { children: "Phone number" }), _jsx("li", { children: "Saved addresses" }), _jsx("li", { children: "Order history" })] })] })] })] })),
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
Icon: Bell, title: "Notifications",
|
|
13
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsx(Text, { className: GC.textMuted, children: "You'll receive in-app notifications for:" }), _jsxs("ul", { className: GC.listDiscMuted, children: [_jsx("li", { children: "Order status changes (Processing, Shipped, Delivered)" }), _jsx("li", { children: "Outbid alerts on auctions you're participating in" }), _jsx("li", { children: "Auction win notification" }), _jsx("li", { children: "Review request after a delivered order" }), _jsx("li", { children: "Support ticket replies" })] }), _jsxs(Text, { className: GC.textMuted, children: ["Manage notification preferences at ", _jsx("
|
|
13
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsx(Text, { className: GC.textMuted, children: "You'll receive in-app notifications for:" }), _jsxs("ul", { className: GC.listDiscMuted, children: [_jsx("li", { children: "Order status changes (Processing, Shipped, Delivered)" }), _jsx("li", { children: "Outbid alerts on auctions you're participating in" }), _jsx("li", { children: "Auction win notification" }), _jsx("li", { children: "Review request after a delivered order" }), _jsx("li", { children: "Support ticket replies" })] }), _jsxs(Text, { className: GC.textMuted, children: ["Manage notification preferences at ", _jsx(Span, { weight: "bold", children: "My Account \u2192 Settings \u2192 Notifications" }), "."] })] })),
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
Icon: Heart, iconCls: "w-5 h-5 text-rose-500", title: "Wishlist",
|
|
17
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Save any listing to your wishlist by clicking the heart icon on a product card. View your wishlist at ", _jsx("
|
|
17
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Save any listing to your wishlist by clicking the heart icon on a product card. View your wishlist at ", _jsx(Span, { weight: "bold", children: "My Account \u2192 Wishlist" }), "."] }), _jsxs(Alert, { variant: "info", children: ["Your wishlist holds up to ", _jsx(Span, { weight: "bold", children: "20 items" }), ". Remove items you no longer want to make room for new ones. Wishlists are private \u2014 other users cannot see your saved items."] })] })),
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
Icon: Star, iconCls: "w-5 h-5 text-amber-400", title: "Leaving a Review",
|
|
21
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["You can leave a review after your order is marked ", _jsx("
|
|
21
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["You can leave a review after your order is marked ", _jsx(Span, { weight: "bold", children: "DELIVERED" }), ". Reviews are verified \u2014 only buyers who completed an order can review that product."] }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Rating" }), " \u2014 1\u20135 stars. Be fair and specific."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Title & body" }), " \u2014 describe item condition vs listing, packaging quality, and seller communication."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Photos" }), " \u2014 optional but helpful for other buyers."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Seller response" }), " \u2014 the seller may respond publicly. You cannot edit a review after a seller has responded."] })] }), _jsx(Text, { className: GC.textMuted, children: "Review guidelines: no personal information, no hate speech or slurs, factual only." })] })),
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
Icon: Lock, title: "Account Security",
|
|
25
|
-
content: (_jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx("
|
|
25
|
+
content: (_jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Change password" }), " \u2014 use \"Forgot password\" on the login page. A reset link is sent to your registered email."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Active sessions" }), " \u2014 view all devices signed in at ", _jsx(Span, { weight: "bold", children: "My Account \u2192 Sessions" }), ". Sign out unfamiliar devices immediately."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Sign out everywhere" }), " \u2014 use \"Sign out everywhere\" on the Sessions page to invalidate all active sessions at once."] })] })),
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
Icon: AlertTriangle, iconCls: "w-5 h-5 text-amber-500", title: "Scam Awareness",
|
|
29
|
-
content: (_jsxs(_Fragment, { children: [_jsx(Alert, { variant: "warning", title: "Top scam types in the collectibles market:", children: _jsxs("ul", { className: "space-y-1 text-sm mt-1", children: [_jsxs("li", { children: [_jsx("
|
|
29
|
+
content: (_jsxs(_Fragment, { children: [_jsx(Alert, { variant: "warning", title: "Top scam types in the collectibles market:", children: _jsxs("ul", { className: "space-y-1 text-sm mt-1", children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", children: "1. Fake payment screenshots" }), " \u2014 always verify refunds in your bank app."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", children: "2. Empty box shipping" }), " \u2014 item photos look real but the box arrives empty. Check seller rating."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", children: "3. Fake graded cards" }), " \u2014 counterfeit PSA/BGS slabs. Verify cert numbers on the grading company's website."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", children: "4. Urgency pressure" }), " \u2014 \"someone else is about to buy\". Legitimate sellers don't pressure you."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", children: "5. Sympathy plays" }), " \u2014 emotional manipulation is a red flag."] })] }) }), _jsxs(Text, { className: `${GC.textMuted} mt-4`, children: ["Read the full ", _jsx("a", { href: String(ROUTES.PUBLIC.SCAMS), className: "text-[var(--appkit-color-primary)] underline hover:no-underline font-medium", children: "Scam Registry \u2192" }), " for all 27 documented scam types."] })] })),
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
Icon: Flag, iconCls: "w-5 h-5 text-rose-500", title: "Reporting Issues",
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Gavel, TrendingUp, Trophy, AlertTriangle, Package, XCircle, ShieldCheck } from "lucide-react";
|
|
3
|
-
import { Div, Heading, Text, Section, Alert } from "../../../ui";
|
|
3
|
+
import { Div, Heading, Span, Text, Section, Alert } from "../../../ui";
|
|
4
4
|
import { GC } from "../../_guide-cls";
|
|
5
5
|
const SECTIONS = [
|
|
6
6
|
{
|
|
7
7
|
Icon: Gavel, title: "How Auctions Work",
|
|
8
|
-
content: (_jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx("
|
|
8
|
+
content: (_jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Reserve price" }), " \u2014 the minimum amount the seller will accept. If bidding ends below the reserve, no sale occurs. You'll see \"Reserve not met\" on the listing."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Bid increment" }), " \u2014 each new bid must exceed the current highest bid by at least the set increment. The increment is shown on the listing."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Auction end time" }), " \u2014 displayed in your local timezone. Countdown timer shows hours and minutes remaining."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Auto-extend" }), " \u2014 if a bid is placed within the last 5 minutes of an auction, the end time extends by 5 minutes. This prevents last-second sniping and gives all bidders a fair chance."] })] })),
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
Icon: TrendingUp, title: "Placing a Bid",
|
|
12
|
-
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: `${GC.textMuted} mb-3`, children: ["Enter your bid amount \u2014 it must be at least the current high bid plus the increment \u2014 and click ", _jsx("
|
|
12
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: `${GC.textMuted} mb-3`, children: ["Enter your bid amount \u2014 it must be at least the current high bid plus the increment \u2014 and click ", _jsx(Span, { weight: "bold", children: "Place Bid" }), ". You'll be asked to confirm."] }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Outbid notification" }), " \u2014 you'll receive an in-app notification and email if someone outbids you."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Max bid (proxy bidding)" }), " \u2014 enter the maximum you're willing to pay. LetItRip will automatically bid on your behalf up to that amount, in the minimum increments needed to keep you in the lead. Your max bid is never revealed to other bidders."] })] }), _jsxs(Text, { className: `${GC.textMuted} mt-3`, children: [_jsx(Span, { weight: "bold", children: "Example:" }), " Current bid is \u20B9500, increment is \u20B950. You set a max bid of \u20B9800. Your bid is placed at \u20B9550. If someone bids \u20B9600, the system auto-bids \u20B9650 for you \u2014 up to \u20B9800."] })] })),
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
Icon: Trophy, title: "Winning an Auction",
|
|
16
|
-
content: (_jsxs(_Fragment, { children: [_jsx(Text, { className: `${GC.textMuted} mb-3`, children: "When an auction ends and you're the highest bidder (above the reserve), you've won." }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx("
|
|
16
|
+
content: (_jsxs(_Fragment, { children: [_jsx(Text, { className: `${GC.textMuted} mb-3`, children: "When an auction ends and you're the highest bidder (above the reserve), you've won." }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Payment window" }), " \u2014 you have ", _jsx(Span, { weight: "bold", children: "48 hours" }), " from the auction end time to complete payment."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "No payment" }), " \u2014 the order auto-cancels after 48 hours, you may receive a bid restriction, and the item may be offered to the next highest bidder."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Winner badge" }), " \u2014 your winning order gets an \"Auction Winner\" badge in My Orders."] })] })] })),
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
Icon: AlertTriangle, iconCls: "w-5 h-5 text-amber-500", title: "Bid Retraction Policy",
|
|
20
|
-
content: (_jsxs(Alert, { variant: "warning", children: ["Bids on LetItRip are ", _jsx("
|
|
20
|
+
content: (_jsxs(Alert, { variant: "warning", children: ["Bids on LetItRip are ", _jsx(Span, { weight: "bold", children: "binding" }), ". Only place a bid if you intend to pay. Retraction requires contacting support with a valid reason. Repeated retractions may result in a temporary restriction on placing new bids."] })),
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
Icon: Package, title: "Pre-orders",
|
|
24
|
-
content: (_jsxs(_Fragment, { children: [_jsx(Text, { className: `${GC.textMuted} mb-3`, children: "A pre-order is an item not yet in stock. The seller takes deposits or full payment upfront and orders from their supplier in bulk once demand is confirmed." }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx("
|
|
24
|
+
content: (_jsxs(_Fragment, { children: [_jsx(Text, { className: `${GC.textMuted} mb-3`, children: "A pre-order is an item not yet in stock. The seller takes deposits or full payment upfront and orders from their supplier in bulk once demand is confirmed." }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Deposit vs full price" }), " \u2014 check the listing. Some sellers take a partial deposit; others require full payment."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Expected delivery date" }), " \u2014 shown on the listing. This is the seller's estimate based on supplier timelines \u2014 not a guaranteed date."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "\"Confirmed supplier\" status" }), " \u2014 some listings show this badge, meaning the seller has placed the order with their supplier and stock is secured."] })] })] })),
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
Icon: XCircle, iconCls: "w-5 h-5 text-rose-500", title: "Pre-order Cancellations",
|
|
28
|
-
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: `${GC.textMuted} mb-3`, children: ["To cancel a pre-order before the item is shipped, open a support ticket with category ", _jsx("
|
|
28
|
+
content: (_jsxs(_Fragment, { children: [_jsxs(Text, { className: `${GC.textMuted} mb-3`, children: ["To cancel a pre-order before the item is shipped, open a support ticket with category ", _jsx(Span, { weight: "bold", children: "Billing & Payment" }), " or ", _jsx(Span, { weight: "bold", children: "Order Issue" }), " and reference your order ID."] }), _jsx(Text, { className: GC.textMuted, children: "After cancellation is accepted, refunds follow the standard timeline: 3\u20137 business days to your original payment method." })] })),
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
Icon: ShieldCheck, iconCls: "w-5 h-5 text-emerald-500", title: "Bidding Safety Tips",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { PackageCheck, Truck, Camera, RotateCcw, Clock, Headphones, Scale } from "lucide-react";
|
|
3
|
-
import { Div, Heading, Text, Section, Alert } from "../../../ui";
|
|
3
|
+
import { Div, Heading, Span, Text, Section, Alert } from "../../../ui";
|
|
4
4
|
import { GC } from "../../_guide-cls";
|
|
5
5
|
// ─── Section data ─────────────────────────────────────────────────────────────
|
|
6
6
|
const ORDER_STATUSES = [
|
|
@@ -19,19 +19,19 @@ const SECTIONS = [
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
Icon: Truck, title: "Tracking Your Order",
|
|
22
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Once your order is SHIPPED, go to ", _jsx("
|
|
22
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Once your order is SHIPPED, go to ", _jsx(Span, { weight: "bold", children: "My Orders \u2192 [Order] \u2192 Tracking" }), " tab. Your tracking number and carrier name are shown there."] }), _jsx(Text, { className: GC.textMuted, children: "Paste the tracking number into the carrier's website for real-time updates. Common carriers: Shiprocket, Delhivery, BlueDart, India Post, Ekart." }), _jsx(Text, { className: GC.textMuted, children: "Typical delivery times: 2\u20135 days metro cities, 5\u201310 days remote areas, 7\u201314 days for pre-orders subject to supplier shipping." })] })),
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
Icon: Camera, iconCls: "w-5 h-5 text-amber-500", title: "Wrong or Damaged Item",
|
|
26
|
-
content: (_jsxs(_Fragment, { children: [_jsx(Alert, { variant: "warning", title: "Do NOT refuse delivery.", children: "Accept the parcel, then photograph it immediately \u2014 both the packaging and the contents before and after unwrapping. This evidence is required for any return or damage claim." }), _jsxs(Text, { className: `${GC.textMuted} mt-4`, children: ["After photographing, open a ", _jsx("
|
|
26
|
+
content: (_jsxs(_Fragment, { children: [_jsx(Alert, { variant: "warning", title: "Do NOT refuse delivery.", children: "Accept the parcel, then photograph it immediately \u2014 both the packaging and the contents before and after unwrapping. This evidence is required for any return or damage claim." }), _jsxs(Text, { className: `${GC.textMuted} mt-4`, children: ["After photographing, open a ", _jsx(Span, { weight: "bold", children: "return request within 2 days of delivery" }), " and attach your photos."] })] })),
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
Icon: RotateCcw, title: "Return Policy",
|
|
30
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Platform-wide return window: ", _jsx("
|
|
30
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["Platform-wide return window: ", _jsx(Span, { weight: "bold", children: "7 days from DELIVERED date" }), ". Some stores offer 30-day windows \u2014 shown on the product page."] }), _jsx(Text, { className: "text-sm font-semibold text-[var(--appkit-color-text)]", children: "Non-returnable items:" }), _jsxs("ul", { className: GC.listDiscMuted, children: [_jsx("li", { children: "Opened card packs (Pok\u00E9mon, Yu-Gi-Oh!, etc.)" }), _jsx("li", { children: "Cracked or opened graded card slabs without documented photographic evidence of a defect" }), _jsx("li", { children: "Items explicitly marked \"Final Sale\" on the listing" })] })] })),
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
Icon: Clock, title: "Refund Timeline",
|
|
34
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsx(Text, { className: GC.textMuted, children: "After the seller accepts your return and confirms receipt of the item:" }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx("
|
|
34
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsx(Text, { className: GC.textMuted, children: "After the seller accepts your return and confirms receipt of the item:" }), _jsxs("ul", { className: GC.listMuted, children: [_jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Credit/debit card" }), " \u2014 3\u20137 business days back to your card via Razorpay."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "UPI" }), " \u2014 typically 1\u20132 business days."] }), _jsxs("li", { children: [_jsx(Span, { weight: "bold", className: GC.textStrong, children: "Net banking" }), " \u2014 3\u20135 business days."] })] }), _jsx(Text, { className: GC.textMuted, children: "Refunds go back to the original payment method. LetItRip does not issue platform credits in lieu of a refund unless both parties agree." })] })),
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
Icon: Headphones, title: "Opening a Support Ticket",
|
|
@@ -39,7 +39,7 @@ const SECTIONS = [
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
Icon: Scale, title: "Dispute Escalation",
|
|
42
|
-
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["If the seller does not respond to your return request within ", _jsx("
|
|
42
|
+
content: (_jsxs(Div, { className: "space-y-3", children: [_jsxs(Text, { className: GC.textMuted, children: ["If the seller does not respond to your return request within ", _jsx(Span, { weight: "bold", children: "3 days" }), ", LetItRip's support team steps in to mediate."] }), _jsxs(Text, { className: GC.textMuted, children: ["If mediation cannot resolve the dispute, LetItRip issues a ", _jsx(Span, { weight: "bold", children: "full platform-funded refund" }), " to the buyer. The seller's payout for that order is withheld."] }), _jsx(Alert, { variant: "info", children: "All dispute decisions are final. False dispute claims may result in account restrictions. Always provide accurate, photographic evidence when raising a dispute." })] })),
|
|
43
43
|
},
|
|
44
44
|
];
|
|
45
45
|
// ─── Component ────────────────────────────────────────────────────────────────
|