orionplace-react 0.7.8 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -614
- package/bin/orionplace-react.mjs +10 -176
- package/package.json +7 -59
- package/LICENSE +0 -21
- package/runtime/app.d.mts +0 -6
- package/runtime/app.mjs +0 -48
- package/runtime/marketplace.d.mts +0 -129
- package/runtime/marketplace.mjs +0 -905
- package/src/install.mjs +0 -356
- package/src/project-readme.mjs +0 -442
- package/src/service.mjs +0 -186
- package/src/setup.mjs +0 -274
- package/src/sitemap.mjs +0 -93
- package/src/update.mjs +0 -36
- package/src/validation.mjs +0 -27
- package/templates/app/StorefrontShell.tsx +0 -443
- package/templates/app/[[...path]]/page.app.tsx +0 -11
- package/templates/app/_storefront/ActivityPage.tsx +0 -23
- package/templates/app/_storefront/AddressesPage.tsx +0 -29
- package/templates/app/_storefront/AppRoutes.tsx +0 -184
- package/templates/app/_storefront/ArticlePage.tsx +0 -84
- package/templates/app/_storefront/CartPage.tsx +0 -53
- package/templates/app/_storefront/CatalogPage.tsx +0 -37
- package/templates/app/_storefront/CategoryPage.tsx +0 -68
- package/templates/app/_storefront/ContactPage.tsx +0 -32
- package/templates/app/_storefront/HomePage.tsx +0 -140
- package/templates/app/_storefront/JournalPage.tsx +0 -36
- package/templates/app/_storefront/LogoutPage.tsx +0 -91
- package/templates/app/_storefront/ManufacturersPage.tsx +0 -64
- package/templates/app/_storefront/OrdersPage.tsx +0 -129
- package/templates/app/_storefront/PrivacyPage.tsx +0 -15
- package/templates/app/_storefront/ProductPage.tsx +0 -113
- package/templates/app/_storefront/ProfilePage.tsx +0 -75
- package/templates/app/_storefront/PromoPage.tsx +0 -66
- package/templates/app/_storefront/PromocodesPage.tsx +0 -17
- package/templates/app/_storefront/SearchPage.tsx +0 -225
- package/templates/app/_storefront/SellersPage.tsx +0 -166
- package/templates/app/_storefront/StorefrontErrorRoute.tsx +0 -42
- package/templates/app/_storefront/StorefrontPageMetadata.tsx +0 -117
- package/templates/app/_storefront/StorefrontPageStatus.tsx +0 -61
- package/templates/app/_storefront/StorefrontProductStructuredData.tsx +0 -77
- package/templates/app/_storefront/StoresPage.tsx +0 -53
- package/templates/app/_storefront/SubscriptionsPage.tsx +0 -62
- package/templates/app/_storefront/SupportPage.tsx +0 -141
- package/templates/app/_storefront/TariffsPage.tsx +0 -180
- package/templates/app/_storefront/UnsubscribePage.tsx +0 -29
- package/templates/app/_storefront/WalletPage.tsx +0 -78
- package/templates/app/_storefront/WishlistPage.tsx +0 -79
- package/templates/app/_storefront/storefrontRoutes.tsx +0 -769
- package/templates/app/_storefront/useAccountWallet.ts +0 -27
- package/templates/app/_storefront/useBlogComments.ts +0 -389
- package/templates/app/_storefront/useProductSearch.ts +0 -242
- package/templates/app/_storefront/useStorefrontNavigation.ts +0 -36
- package/templates/app/activity/page.tsx +0 -9
- package/templates/app/addresses/page.tsx +0 -9
- package/templates/app/api/[...orionplace]/route.ts +0 -21
- package/templates/app/browse/page.tsx +0 -27
- package/templates/app/cart/page.tsx +0 -9
- package/templates/app/catalog/page.tsx +0 -9
- package/templates/app/category/[id]/page.tsx +0 -9
- package/templates/app/contact/page.tsx +0 -9
- package/templates/app/error.tsx +0 -7
- package/templates/app/featured/page.tsx +0 -9
- package/templates/app/global-error.tsx +0 -61
- package/templates/app/globals.css +0 -58
- package/templates/app/journal/[id]/page.tsx +0 -9
- package/templates/app/journal/page.tsx +0 -9
- package/templates/app/layout.app.tsx +0 -20
- package/templates/app/layout.tsx +0 -66
- package/templates/app/logout/page.tsx +0 -9
- package/templates/app/manufacturers/page.tsx +0 -9
- package/templates/app/not-found.tsx +0 -5
- package/templates/app/orders/page.tsx +0 -9
- package/templates/app/page.module.css +0 -137
- package/templates/app/page.tsx +0 -9
- package/templates/app/privacy/page.tsx +0 -9
- package/templates/app/product/[id]/page.tsx +0 -9
- package/templates/app/profile/page.tsx +0 -9
- package/templates/app/promo/[id]/page.tsx +0 -9
- package/templates/app/promocodes/page.tsx +0 -9
- package/templates/app/ps3/blog/[...orionplace]/route.ts +0 -13
- package/templates/app/robots.txt/route.ts +0 -11
- package/templates/app/sellers/page.tsx +0 -9
- package/templates/app/sitemap.xml/route.ts +0 -12
- package/templates/app/storefront.module.css +0 -406
- package/templates/app/stores/page.tsx +0 -9
- package/templates/app/subscriptions/page.tsx +0 -9
- package/templates/app/tariffs/[slug]/[id]/page.tsx +0 -9
- package/templates/app/tariffs/page.tsx +0 -9
- package/templates/app/tickets/page.tsx +0 -9
- package/templates/app/unsubscribe/page.tsx +0 -9
- package/templates/app/wallet/page.tsx +0 -9
- package/templates/app/wishlist/page.tsx +0 -9
- package/templates/components/orionplace/account/AccountActivity.README.md +0 -70
- package/templates/components/orionplace/account/AccountActivity.module.css +0 -16
- package/templates/components/orionplace/account/AccountActivity.tsx +0 -94
- package/templates/components/orionplace/account/AccountPromocodes.README.md +0 -70
- package/templates/components/orionplace/account/AccountPromocodes.module.css +0 -92
- package/templates/components/orionplace/account/AccountPromocodes.tsx +0 -257
- package/templates/components/orionplace/account/AccountSection.README.md +0 -46
- package/templates/components/orionplace/account/AccountSection.module.css +0 -110
- package/templates/components/orionplace/account/AccountSection.tsx +0 -109
- package/templates/components/orionplace/account/ProfileAvatar.README.md +0 -48
- package/templates/components/orionplace/account/ProfileAvatar.module.css +0 -31
- package/templates/components/orionplace/account/ProfileAvatar.tsx +0 -138
- package/templates/components/orionplace/account/ProfileDeleteAccount.README.md +0 -59
- package/templates/components/orionplace/account/ProfileDeleteAccount.module.css +0 -51
- package/templates/components/orionplace/account/ProfileDeleteAccount.tsx +0 -171
- package/templates/components/orionplace/account/ProfileDetailsForm.README.md +0 -48
- package/templates/components/orionplace/account/ProfileDetailsForm.module.css +0 -35
- package/templates/components/orionplace/account/ProfileDetailsForm.tsx +0 -183
- package/templates/components/orionplace/account/ProfileEmailSettings.README.md +0 -52
- package/templates/components/orionplace/account/ProfileEmailSettings.module.css +0 -51
- package/templates/components/orionplace/account/ProfileEmailSettings.tsx +0 -276
- package/templates/components/orionplace/account/ProfilePasswordForm.README.md +0 -45
- package/templates/components/orionplace/account/ProfilePasswordForm.module.css +0 -43
- package/templates/components/orionplace/account/ProfilePasswordForm.tsx +0 -227
- package/templates/components/orionplace/account/ProfileSignIn.README.md +0 -64
- package/templates/components/orionplace/account/ProfileSignIn.module.css +0 -86
- package/templates/components/orionplace/account/ProfileSignIn.tsx +0 -463
- package/templates/components/orionplace/account/SignInHistory.README.md +0 -52
- package/templates/components/orionplace/account/SignInHistory.module.css +0 -81
- package/templates/components/orionplace/account/SignInHistory.tsx +0 -231
- package/templates/components/orionplace/account/StorefrontLogout.README.md +0 -48
- package/templates/components/orionplace/account/StorefrontLogout.module.css +0 -166
- package/templates/components/orionplace/account/StorefrontLogout.tsx +0 -73
- package/templates/components/orionplace/account/StorefrontProfile.README.md +0 -71
- package/templates/components/orionplace/account/StorefrontProfile.module.css +0 -65
- package/templates/components/orionplace/account/StorefrontProfile.tsx +0 -189
- package/templates/components/orionplace/account/account.module.css +0 -1180
- package/templates/components/orionplace/account/profile.module.css +0 -696
- package/templates/components/orionplace/address/AddressForm.README.md +0 -152
- package/templates/components/orionplace/address/AddressForm.module.css +0 -336
- package/templates/components/orionplace/address/AddressForm.tsx +0 -827
- package/templates/components/orionplace/address/StorefrontAddresses.README.md +0 -99
- package/templates/components/orionplace/address/StorefrontAddresses.module.css +0 -271
- package/templates/components/orionplace/address/StorefrontAddresses.tsx +0 -438
- package/templates/components/orionplace/banners/MainBanner.README.md +0 -65
- package/templates/components/orionplace/banners/MainBanner.module.css +0 -112
- package/templates/components/orionplace/banners/MainBanner.tsx +0 -159
- package/templates/components/orionplace/blog/BlogArticle.README.md +0 -183
- package/templates/components/orionplace/blog/BlogArticle.module.css +0 -333
- package/templates/components/orionplace/blog/BlogArticle.tsx +0 -545
- package/templates/components/orionplace/blog/BlogCommentForm.README.md +0 -51
- package/templates/components/orionplace/blog/BlogCommentForm.module.css +0 -93
- package/templates/components/orionplace/blog/BlogCommentForm.tsx +0 -125
- package/templates/components/orionplace/blog/BlogComments.README.md +0 -98
- package/templates/components/orionplace/blog/BlogComments.module.css +0 -151
- package/templates/components/orionplace/blog/BlogComments.tsx +0 -590
- package/templates/components/orionplace/blog/BlogPostCard.README.md +0 -51
- package/templates/components/orionplace/blog/BlogPostCard.module.css +0 -167
- package/templates/components/orionplace/blog/BlogPostCard.tsx +0 -177
- package/templates/components/orionplace/blog/BlogPostGroup.README.md +0 -49
- package/templates/components/orionplace/blog/BlogPostGroup.module.css +0 -37
- package/templates/components/orionplace/blog/BlogPostGroup.tsx +0 -129
- package/templates/components/orionplace/blog/StorefrontJournal.README.md +0 -105
- package/templates/components/orionplace/blog/StorefrontJournal.module.css +0 -387
- package/templates/components/orionplace/blog/StorefrontJournal.tsx +0 -549
- package/templates/components/orionplace/branding/BrandLogos.README.md +0 -29
- package/templates/components/orionplace/branding/BrandLogos.module.css +0 -7
- package/templates/components/orionplace/branding/BrandLogos.tsx +0 -30
- package/templates/components/orionplace/cart/CartCheckoutDetails.README.md +0 -96
- package/templates/components/orionplace/cart/CartCheckoutDetails.module.css +0 -159
- package/templates/components/orionplace/cart/CartCheckoutDetails.tsx +0 -381
- package/templates/components/orionplace/cart/CartDeliverySelector.README.md +0 -166
- package/templates/components/orionplace/cart/CartDeliverySelector.module.css +0 -105
- package/templates/components/orionplace/cart/CartDeliverySelector.tsx +0 -679
- package/templates/components/orionplace/cart/CartItemOptions.README.md +0 -172
- package/templates/components/orionplace/cart/CartItemOptions.module.css +0 -113
- package/templates/components/orionplace/cart/CartItemOptions.tsx +0 -503
- package/templates/components/orionplace/cart/CartLineItem.README.md +0 -138
- package/templates/components/orionplace/cart/CartLineItem.module.css +0 -57
- package/templates/components/orionplace/cart/CartLineItem.tsx +0 -263
- package/templates/components/orionplace/cart/CartPreview.README.md +0 -99
- package/templates/components/orionplace/cart/CartPreview.module.css +0 -225
- package/templates/components/orionplace/cart/CartPreview.tsx +0 -188
- package/templates/components/orionplace/cart/DeliveryMap.README.md +0 -65
- package/templates/components/orionplace/cart/DeliveryMap.module.css +0 -32
- package/templates/components/orionplace/cart/DeliveryMap.tsx +0 -131
- package/templates/components/orionplace/cart/StorefrontCart.README.md +0 -281
- package/templates/components/orionplace/cart/StorefrontCart.module.css +0 -460
- package/templates/components/orionplace/cart/StorefrontCart.tsx +0 -937
- package/templates/components/orionplace/catalog/CatalogHeader.README.md +0 -136
- package/templates/components/orionplace/catalog/CatalogHeader.module.css +0 -387
- package/templates/components/orionplace/catalog/CatalogHeader.tsx +0 -644
- package/templates/components/orionplace/catalog/CatalogRepresentative.README.md +0 -68
- package/templates/components/orionplace/catalog/CatalogRepresentative.tsx +0 -51
- package/templates/components/orionplace/catalog/StorefrontCatalog.README.md +0 -120
- package/templates/components/orionplace/catalog/StorefrontCatalog.module.css +0 -179
- package/templates/components/orionplace/catalog/StorefrontCatalog.tsx +0 -304
- package/templates/components/orionplace/categories/CategoryGroup.README.md +0 -68
- package/templates/components/orionplace/categories/CategoryGroup.module.css +0 -110
- package/templates/components/orionplace/categories/CategoryGroup.tsx +0 -123
- package/templates/components/orionplace/categories/StorefrontCategory.README.md +0 -155
- package/templates/components/orionplace/categories/StorefrontCategory.module.css +0 -148
- package/templates/components/orionplace/categories/StorefrontCategory.tsx +0 -225
- package/templates/components/orionplace/contact/AboutPage.README.md +0 -40
- package/templates/components/orionplace/contact/AboutPage.module.css +0 -216
- package/templates/components/orionplace/contact/AboutPage.tsx +0 -191
- package/templates/components/orionplace/contact/ContactForm.README.md +0 -93
- package/templates/components/orionplace/contact/ContactForm.module.css +0 -264
- package/templates/components/orionplace/contact/ContactForm.tsx +0 -382
- package/templates/components/orionplace/contact/EmailUnsubscribe.README.md +0 -67
- package/templates/components/orionplace/contact/EmailUnsubscribe.module.css +0 -95
- package/templates/components/orionplace/contact/EmailUnsubscribe.tsx +0 -130
- package/templates/components/orionplace/contact/StorefrontContact.README.md +0 -73
- package/templates/components/orionplace/contact/StorefrontContact.module.css +0 -101
- package/templates/components/orionplace/contact/StorefrontContact.tsx +0 -62
- package/templates/components/orionplace/currencies/MainCurrencySwitcher.README.md +0 -37
- package/templates/components/orionplace/currencies/MainCurrencySwitcher.tsx +0 -68
- package/templates/components/orionplace/events/EventEnrollmentDialog.README.md +0 -108
- package/templates/components/orionplace/events/EventEnrollmentDialog.module.css +0 -110
- package/templates/components/orionplace/events/EventEnrollmentDialog.tsx +0 -315
- package/templates/components/orionplace/events/EventsBlock.README.md +0 -58
- package/templates/components/orionplace/events/EventsBlock.module.css +0 -101
- package/templates/components/orionplace/events/EventsBlock.tsx +0 -109
- package/templates/components/orionplace/legal/CookieNotice.README.md +0 -42
- package/templates/components/orionplace/legal/CookieNotice.module.css +0 -48
- package/templates/components/orionplace/legal/CookieNotice.tsx +0 -82
- package/templates/components/orionplace/legal/StorefrontPrivacy.README.md +0 -49
- package/templates/components/orionplace/legal/StorefrontPrivacy.module.css +0 -166
- package/templates/components/orionplace/legal/StorefrontPrivacy.tsx +0 -83
- package/templates/components/orionplace/locale/MainLanguageSwitcher.README.md +0 -46
- package/templates/components/orionplace/locale/MainLanguageSwitcher.module.css +0 -196
- package/templates/components/orionplace/locale/MainLanguageSwitcher.tsx +0 -387
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.README.md +0 -83
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.module.css +0 -271
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.tsx +0 -218
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.README.md +0 -122
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.module.css +0 -92
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.tsx +0 -455
- package/templates/components/orionplace/orders/OrderDetails.README.md +0 -116
- package/templates/components/orionplace/orders/OrderDetails.module.css +0 -730
- package/templates/components/orionplace/orders/OrderDetails.tsx +0 -693
- package/templates/components/orionplace/orders/OrderPaymentForm.README.md +0 -92
- package/templates/components/orionplace/orders/OrderPaymentForm.module.css +0 -105
- package/templates/components/orionplace/orders/OrderPaymentForm.tsx +0 -90
- package/templates/components/orionplace/orders/StorefrontOrders.README.md +0 -131
- package/templates/components/orionplace/orders/StorefrontOrders.module.css +0 -633
- package/templates/components/orionplace/orders/StorefrontOrders.tsx +0 -922
- package/templates/components/orionplace/payments/PaymentPanel.README.md +0 -114
- package/templates/components/orionplace/payments/PaymentPanel.module.css +0 -134
- package/templates/components/orionplace/payments/PaymentPanel.tsx +0 -76
- package/templates/components/orionplace/products/HoverImageViewer.README.md +0 -62
- package/templates/components/orionplace/products/HoverImageViewer.module.css +0 -88
- package/templates/components/orionplace/products/HoverImageViewer.tsx +0 -179
- package/templates/components/orionplace/products/ProductCard.README.md +0 -154
- package/templates/components/orionplace/products/ProductCard.module.css +0 -333
- package/templates/components/orionplace/products/ProductCard.tsx +0 -730
- package/templates/components/orionplace/products/ProductCardActions.README.md +0 -84
- package/templates/components/orionplace/products/ProductCardActions.module.css +0 -146
- package/templates/components/orionplace/products/ProductCardActions.tsx +0 -311
- package/templates/components/orionplace/products/ProductCardBadges.README.md +0 -44
- package/templates/components/orionplace/products/ProductCardBadges.module.css +0 -15
- package/templates/components/orionplace/products/ProductCardBadges.tsx +0 -78
- package/templates/components/orionplace/products/ProductCardDescription.README.md +0 -33
- package/templates/components/orionplace/products/ProductCardDescription.module.css +0 -6
- package/templates/components/orionplace/products/ProductCardDescription.tsx +0 -43
- package/templates/components/orionplace/products/ProductCardFavorite.README.md +0 -52
- package/templates/components/orionplace/products/ProductCardFavorite.module.css +0 -64
- package/templates/components/orionplace/products/ProductCardFavorite.tsx +0 -90
- package/templates/components/orionplace/products/ProductCardPrice.README.md +0 -33
- package/templates/components/orionplace/products/ProductCardPrice.module.css +0 -22
- package/templates/components/orionplace/products/ProductCardPrice.tsx +0 -50
- package/templates/components/orionplace/products/ProductCardRating.README.md +0 -33
- package/templates/components/orionplace/products/ProductCardRating.module.css +0 -7
- package/templates/components/orionplace/products/ProductCardRating.tsx +0 -56
- package/templates/components/orionplace/products/ProductCardSeller.README.md +0 -36
- package/templates/components/orionplace/products/ProductCardSeller.module.css +0 -31
- package/templates/components/orionplace/products/ProductCardSeller.tsx +0 -61
- package/templates/components/orionplace/products/ProductCardStockNotice.README.md +0 -36
- package/templates/components/orionplace/products/ProductCardStockNotice.module.css +0 -8
- package/templates/components/orionplace/products/ProductCardStockNotice.tsx +0 -35
- package/templates/components/orionplace/products/ProductCardTitle.README.md +0 -30
- package/templates/components/orionplace/products/ProductCardTitle.module.css +0 -13
- package/templates/components/orionplace/products/ProductCardTitle.tsx +0 -31
- package/templates/components/orionplace/products/ProductCardVariants.README.md +0 -77
- package/templates/components/orionplace/products/ProductCardVariants.module.css +0 -97
- package/templates/components/orionplace/products/ProductCardVariants.tsx +0 -350
- package/templates/components/orionplace/products/ProductGroup.README.md +0 -91
- package/templates/components/orionplace/products/ProductGroup.module.css +0 -64
- package/templates/components/orionplace/products/ProductGroup.tsx +0 -186
- package/templates/components/orionplace/products/ProductPreorderDialog.README.md +0 -89
- package/templates/components/orionplace/products/ProductPreorderDialog.module.css +0 -320
- package/templates/components/orionplace/products/ProductPreorderDialog.tsx +0 -346
- package/templates/components/orionplace/products/ProductReviewForm.README.md +0 -72
- package/templates/components/orionplace/products/ProductReviewForm.module.css +0 -217
- package/templates/components/orionplace/products/ProductReviewForm.tsx +0 -288
- package/templates/components/orionplace/products/ProductReviewGallery.README.md +0 -61
- package/templates/components/orionplace/products/ProductReviewGallery.module.css +0 -108
- package/templates/components/orionplace/products/ProductReviewGallery.tsx +0 -110
- package/templates/components/orionplace/products/ProductReviewImageViewer.README.md +0 -60
- package/templates/components/orionplace/products/ProductReviewImageViewer.module.css +0 -59
- package/templates/components/orionplace/products/ProductReviewImageViewer.tsx +0 -312
- package/templates/components/orionplace/products/ProductReviews.README.md +0 -137
- package/templates/components/orionplace/products/ProductReviews.module.css +0 -602
- package/templates/components/orionplace/products/ProductReviews.tsx +0 -944
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.README.md +0 -67
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.module.css +0 -79
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.tsx +0 -324
- package/templates/components/orionplace/products/ProductSpecificationsDialog.README.md +0 -52
- package/templates/components/orionplace/products/ProductSpecificationsDialog.module.css +0 -138
- package/templates/components/orionplace/products/ProductSpecificationsDialog.tsx +0 -117
- package/templates/components/orionplace/products/StorefrontProduct.README.md +0 -200
- package/templates/components/orionplace/products/StorefrontProduct.module.css +0 -767
- package/templates/components/orionplace/products/StorefrontProduct.tsx +0 -1339
- package/templates/components/orionplace/products/StorefrontWishlist.README.md +0 -162
- package/templates/components/orionplace/products/StorefrontWishlist.module.css +0 -71
- package/templates/components/orionplace/products/StorefrontWishlist.tsx +0 -402
- package/templates/components/orionplace/promo/PromoProducts.README.md +0 -133
- package/templates/components/orionplace/promo/PromoProducts.module.css +0 -68
- package/templates/components/orionplace/promo/PromoProducts.tsx +0 -345
- package/templates/components/orionplace/search/MainSearch.README.md +0 -73
- package/templates/components/orionplace/search/MainSearch.module.css +0 -202
- package/templates/components/orionplace/search/MainSearch.tsx +0 -217
- package/templates/components/orionplace/search/ProductSearchResults.README.md +0 -166
- package/templates/components/orionplace/search/ProductSearchResults.module.css +0 -361
- package/templates/components/orionplace/search/ProductSearchResults.tsx +0 -359
- package/templates/components/orionplace/search/SearchFilters.README.md +0 -109
- package/templates/components/orionplace/search/SearchFilters.module.css +0 -274
- package/templates/components/orionplace/search/SearchFilters.tsx +0 -439
- package/templates/components/orionplace/sellers/SellerFilters.README.md +0 -66
- package/templates/components/orionplace/sellers/SellerFilters.module.css +0 -232
- package/templates/components/orionplace/sellers/SellerFilters.tsx +0 -201
- package/templates/components/orionplace/sellers/SellerPhotoGallery.README.md +0 -72
- package/templates/components/orionplace/sellers/SellerPhotoGallery.module.css +0 -314
- package/templates/components/orionplace/sellers/SellerPhotoGallery.tsx +0 -335
- package/templates/components/orionplace/sellers/SellerSummary.README.md +0 -62
- package/templates/components/orionplace/sellers/SellerSummary.module.css +0 -182
- package/templates/components/orionplace/sellers/SellerSummary.tsx +0 -107
- package/templates/components/orionplace/sellers/StorefrontSellers.README.md +0 -120
- package/templates/components/orionplace/sellers/StorefrontSellers.module.css +0 -147
- package/templates/components/orionplace/sellers/StorefrontSellers.tsx +0 -360
- package/templates/components/orionplace/shared/OrionplaceAvatar.README.md +0 -35
- package/templates/components/orionplace/shared/OrionplaceAvatar.module.css +0 -35
- package/templates/components/orionplace/shared/OrionplaceAvatar.tsx +0 -61
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.README.md +0 -33
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.module.css +0 -81
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.tsx +0 -91
- package/templates/components/orionplace/shared/OrionplaceEmptyState.README.md +0 -37
- package/templates/components/orionplace/shared/OrionplaceEmptyState.module.css +0 -126
- package/templates/components/orionplace/shared/OrionplaceEmptyState.tsx +0 -78
- package/templates/components/orionplace/shared/OrionplaceImage.README.md +0 -45
- package/templates/components/orionplace/shared/OrionplaceImage.module.css +0 -22
- package/templates/components/orionplace/shared/OrionplaceImage.tsx +0 -97
- package/templates/components/orionplace/shared/OrionplaceInfoHint.README.md +0 -31
- package/templates/components/orionplace/shared/OrionplaceInfoHint.module.css +0 -59
- package/templates/components/orionplace/shared/OrionplaceInfoHint.tsx +0 -126
- package/templates/components/orionplace/shared/OrionplacePasswordInput.README.md +0 -39
- package/templates/components/orionplace/shared/OrionplacePasswordInput.module.css +0 -79
- package/templates/components/orionplace/shared/OrionplacePasswordInput.tsx +0 -103
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.README.md +0 -97
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.module.css +0 -246
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.tsx +0 -367
- package/templates/components/orionplace/shared/OrionplaceSelect.README.md +0 -69
- package/templates/components/orionplace/shared/OrionplaceSelect.module.css +0 -233
- package/templates/components/orionplace/shared/OrionplaceSelect.tsx +0 -439
- package/templates/components/orionplace/shared/StorefrontErrorPage.README.md +0 -52
- package/templates/components/orionplace/shared/StorefrontErrorPage.module.css +0 -141
- package/templates/components/orionplace/shared/StorefrontErrorPage.tsx +0 -103
- package/templates/components/orionplace/shared/StorefrontPagination.README.md +0 -45
- package/templates/components/orionplace/shared/StorefrontPagination.module.css +0 -69
- package/templates/components/orionplace/shared/StorefrontPagination.tsx +0 -158
- package/templates/components/orionplace/shared/dialogs.css +0 -36
- package/templates/components/orionplace/shared/emptyStateArt.ts +0 -231
- package/templates/components/orionplace/shared/features.module.css +0 -162
- package/templates/components/orionplace/social/SocialLinks.README.md +0 -16
- package/templates/components/orionplace/social/SocialLinks.module.css +0 -36
- package/templates/components/orionplace/social/SocialLinks.tsx +0 -59
- package/templates/components/orionplace/storefront/StorefrontAccount.README.md +0 -59
- package/templates/components/orionplace/storefront/StorefrontAccount.module.css +0 -159
- package/templates/components/orionplace/storefront/StorefrontAccount.tsx +0 -303
- package/templates/components/orionplace/storefront/StorefrontCartButton.README.md +0 -47
- package/templates/components/orionplace/storefront/StorefrontCartButton.module.css +0 -88
- package/templates/components/orionplace/storefront/StorefrontCartButton.tsx +0 -54
- package/templates/components/orionplace/storefront/StorefrontFooter.README.md +0 -55
- package/templates/components/orionplace/storefront/StorefrontFooter.module.css +0 -118
- package/templates/components/orionplace/storefront/StorefrontFooter.tsx +0 -168
- package/templates/components/orionplace/storefront/StorefrontHeader.README.md +0 -150
- package/templates/components/orionplace/storefront/StorefrontHeader.module.css +0 -186
- package/templates/components/orionplace/storefront/StorefrontHeader.tsx +0 -389
- package/templates/components/orionplace/storefront/StorefrontHome.README.md +0 -138
- package/templates/components/orionplace/storefront/StorefrontHome.module.css +0 -116
- package/templates/components/orionplace/storefront/StorefrontHome.tsx +0 -282
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.README.md +0 -51
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.module.css +0 -95
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.tsx +0 -80
- package/templates/components/orionplace/stores/StorefrontStores.README.md +0 -87
- package/templates/components/orionplace/stores/StorefrontStores.module.css +0 -218
- package/templates/components/orionplace/stores/StorefrontStores.tsx +0 -397
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.README.md +0 -183
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.module.css +0 -347
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.tsx +0 -884
- package/templates/components/orionplace/subscriptions/StorefrontTariff.README.md +0 -124
- package/templates/components/orionplace/subscriptions/StorefrontTariff.module.css +0 -311
- package/templates/components/orionplace/subscriptions/StorefrontTariff.tsx +0 -485
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.README.md +0 -115
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.module.css +0 -219
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.tsx +0 -367
- package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.README.md +0 -67
- package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.tsx +0 -175
- package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.README.md +0 -95
- package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.tsx +0 -634
- package/templates/components/orionplace/subscriptions/SubscriptionDialog.module.css +0 -453
- package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.README.md +0 -75
- package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.tsx +0 -384
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.README.md +0 -116
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.module.css +0 -168
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.tsx +0 -236
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.README.md +0 -123
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.module.css +0 -57
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.tsx +0 -101
- package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.README.md +0 -109
- package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.tsx +0 -253
- package/templates/components/orionplace/support/StorefrontSupport.README.md +0 -157
- package/templates/components/orionplace/support/StorefrontSupport.tsx +0 -1040
- package/templates/components/orionplace/support/Support.module.css +0 -1133
- package/templates/components/orionplace/support/TicketConversation.README.md +0 -105
- package/templates/components/orionplace/support/TicketConversation.tsx +0 -502
- package/templates/components/orionplace/support/TicketImage.README.md +0 -52
- package/templates/components/orionplace/support/TicketImage.tsx +0 -254
- package/templates/components/orionplace/support/TicketItemCard.README.md +0 -66
- package/templates/components/orionplace/support/TicketItemCard.tsx +0 -140
- package/templates/components/orionplace/support/TicketMessageForm.README.md +0 -88
- package/templates/components/orionplace/support/TicketMessageForm.tsx +0 -261
- package/templates/components/orionplace/support/TicketSubscriptionCard.README.md +0 -53
- package/templates/components/orionplace/support/TicketSubscriptionCard.tsx +0 -118
- package/templates/components/orionplace/tariffs/TariffCard.README.md +0 -108
- package/templates/components/orionplace/tariffs/TariffCard.module.css +0 -86
- package/templates/components/orionplace/tariffs/TariffCard.tsx +0 -225
- package/templates/components/orionplace/tariffs/TariffCardDescription.README.md +0 -40
- package/templates/components/orionplace/tariffs/TariffCardDescription.module.css +0 -72
- package/templates/components/orionplace/tariffs/TariffCardDescription.tsx +0 -58
- package/templates/components/orionplace/tariffs/TariffCardFeatures.README.md +0 -58
- package/templates/components/orionplace/tariffs/TariffCardFeatures.module.css +0 -60
- package/templates/components/orionplace/tariffs/TariffCardFeatures.tsx +0 -140
- package/templates/components/orionplace/tariffs/TariffCardImage.README.md +0 -36
- package/templates/components/orionplace/tariffs/TariffCardImage.module.css +0 -8
- package/templates/components/orionplace/tariffs/TariffCardImage.tsx +0 -32
- package/templates/components/orionplace/tariffs/TariffCardPrices.README.md +0 -82
- package/templates/components/orionplace/tariffs/TariffCardPrices.module.css +0 -142
- package/templates/components/orionplace/tariffs/TariffCardPrices.tsx +0 -191
- package/templates/components/orionplace/tariffs/TariffCardTitle.README.md +0 -32
- package/templates/components/orionplace/tariffs/TariffCardTitle.module.css +0 -9
- package/templates/components/orionplace/tariffs/TariffCardTitle.tsx +0 -29
- package/templates/components/orionplace/tariffs/TariffCards.README.md +0 -88
- package/templates/components/orionplace/tariffs/TariffCards.module.css +0 -24
- package/templates/components/orionplace/tariffs/TariffCards.tsx +0 -44
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.README.md +0 -92
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.module.css +0 -214
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.tsx +0 -299
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.README.md +0 -30
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.module.css +0 -8
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.tsx +0 -32
- package/templates/components/orionplace/units/UnitSwitcher.README.md +0 -35
- package/templates/components/orionplace/units/UnitSwitcher.tsx +0 -58
- package/templates/components/orionplace/wallet/StorefrontWallet.README.md +0 -154
- package/templates/components/orionplace/wallet/StorefrontWallet.module.css +0 -507
- package/templates/components/orionplace/wallet/StorefrontWallet.tsx +0 -915
- package/templates/components/orionplace/wallet/WalletBalance.README.md +0 -46
- package/templates/components/orionplace/wallet/WalletBalance.module.css +0 -46
- package/templates/components/orionplace/wallet/WalletBalance.tsx +0 -51
- package/templates/components/orionplace/wallet/WalletTopUpForm.README.md +0 -54
- package/templates/components/orionplace/wallet/WalletTopUpForm.module.css +0 -152
- package/templates/components/orionplace/wallet/WalletTopUpForm.tsx +0 -181
- package/templates/hooks/useAccountActivity.ts +0 -251
- package/templates/hooks/useAccountAddresses.ts +0 -81
- package/templates/hooks/useAccountPromocodes.ts +0 -91
- package/templates/hooks/useOrionplaceActionMenu.ts +0 -118
- package/templates/hooks/useOrionplaceAddressForm.ts +0 -262
- package/templates/hooks/useOrionplaceApi.ts +0 -98
- package/templates/hooks/useOrionplaceAppLoad.ts +0 -66
- package/templates/hooks/useOrionplaceBlogReading.ts +0 -351
- package/templates/hooks/useOrionplaceDialog.ts +0 -85
- package/templates/hooks/useOrionplaceHomeProducts.ts +0 -97
- package/templates/hooks/useOrionplaceMap.tsx +0 -230
- package/templates/hooks/useOrionplaceMediaFormat.ts +0 -33
- package/templates/hooks/useOrionplaceProduct.ts +0 -28
- package/templates/hooks/useOrionplaceProfile.ts +0 -347
- package/templates/hooks/useOrionplaceReviews.ts +0 -352
- package/templates/hooks/useOrionplaceStableHeight.ts +0 -65
- package/templates/hooks/useOrionplaceStorefront.tsx +0 -593
- package/templates/hooks/useOrionplaceTariffPurchase.ts +0 -212
- package/templates/interfaces/orionplace/accounts/IContact.ts +0 -21
- package/templates/interfaces/orionplace/accounts/IEmailNotificationLocale.ts +0 -17
- package/templates/interfaces/orionplace/accounts/IEmailVerification.ts +0 -59
- package/templates/interfaces/orionplace/accounts/IProfileActions.ts +0 -38
- package/templates/interfaces/orionplace/accounts/IProfileData.ts +0 -125
- package/templates/interfaces/orionplace/accounts/IProfileMedia.ts +0 -17
- package/templates/interfaces/orionplace/accounts/IStorefrontProfile.ts +0 -54
- package/templates/interfaces/orionplace/address/IAddressCitySuggestion.ts +0 -19
- package/templates/interfaces/orionplace/address/IAddressEditor.ts +0 -9
- package/templates/interfaces/orionplace/address/IAddressLocationSuggestion.ts +0 -22
- package/templates/interfaces/orionplace/address/IAddressRegionSearch.ts +0 -30
- package/templates/interfaces/orionplace/address/IAddressSuggestion.ts +0 -20
- package/templates/interfaces/orionplace/address/IUserAddress.ts +0 -87
- package/templates/interfaces/orionplace/apiBase/TMethod.ts +0 -1
- package/templates/interfaces/orionplace/appBase/IAppLoad.ts +0 -16
- package/templates/interfaces/orionplace/appBase/IAppLoadCommon.ts +0 -47
- package/templates/interfaces/orionplace/appBase/IApploadUserProfile.ts +0 -15
- package/templates/interfaces/orionplace/appBase/IForm.ts +0 -21
- package/templates/interfaces/orionplace/appBase/ISEO.ts +0 -21
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonBanner.ts +0 -11
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonContact.ts +0 -8
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonCurrency.ts +0 -15
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonEvents.ts +0 -18
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonLocale.ts +0 -14
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonLogos.ts +0 -6
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonPath.ts +0 -22
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonSEO.ts +0 -26
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonSocial.ts +0 -15
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonTariff.ts +0 -7
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonUnit.ts +0 -12
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonVariables.ts +0 -8
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonVisualSettings.ts +0 -11
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonWalletValue.ts +0 -3
- package/templates/interfaces/orionplace/blog/IBlogApi.ts +0 -247
- package/templates/interfaces/orionplace/blog/IBlogPostPreview.ts +0 -30
- package/templates/interfaces/orionplace/cart/ICartActions.ts +0 -67
- package/templates/interfaces/orionplace/cart/ICartData.ts +0 -382
- package/templates/interfaces/orionplace/cart/ICartDeliveryActions.ts +0 -68
- package/templates/interfaces/orionplace/cart/ICartModal.ts +0 -22
- package/templates/interfaces/orionplace/cart/IDeliveryMap.ts +0 -29
- package/templates/interfaces/orionplace/catalog/ICatalogDirectory.ts +0 -75
- package/templates/interfaces/orionplace/category/ICategory.ts +0 -41
- package/templates/interfaces/orionplace/domains/IDomain.ts +0 -13
- package/templates/interfaces/orionplace/forms/ICustomerSubfilter.ts +0 -19
- package/templates/interfaces/orionplace/index.ts +0 -64
- package/templates/interfaces/orionplace/marketing/IPromoActions.ts +0 -51
- package/templates/interfaces/orionplace/orders/IOrderActions.ts +0 -99
- package/templates/interfaces/orionplace/orders/IOrderHistory.ts +0 -259
- package/templates/interfaces/orionplace/orders/IProductPreorder.ts +0 -31
- package/templates/interfaces/orionplace/payments/IInvoice.ts +0 -147
- package/templates/interfaces/orionplace/products/IProduct.ts +0 -262
- package/templates/interfaces/orionplace/products/IProductFeedbackApi.ts +0 -218
- package/templates/interfaces/orionplace/products/IProductSearchApi.ts +0 -146
- package/templates/interfaces/orionplace/products/IProductSearchFacets.ts +0 -35
- package/templates/interfaces/orionplace/products/IProductSecondaryVariantRequest.ts +0 -15
- package/templates/interfaces/orionplace/products/IProductSpecification.ts +0 -14
- package/templates/interfaces/orionplace/products/IWishlist.ts +0 -22
- package/templates/interfaces/orionplace/sellers/ISellerDirectory.ts +0 -70
- package/templates/interfaces/orionplace/shared/IBreadcrumb.ts +0 -10
- package/templates/interfaces/orionplace/shared/IGeoCoordinates.ts +0 -4
- package/templates/interfaces/orionplace/shared/IStorefrontControls.ts +0 -6
- package/templates/interfaces/orionplace/shared/ITransformValue.ts +0 -3
- package/templates/interfaces/orionplace/state.ts +0 -4
- package/templates/interfaces/orionplace/stores/IStoreDirectory.ts +0 -63
- package/templates/interfaces/orionplace/subscribeOptions/ISubscribeOption.ts +0 -9
- package/templates/interfaces/orionplace/subscribeTariff/ISubscribeTariff.ts +0 -56
- package/templates/interfaces/orionplace/subscribeTariff/ITariffSelection.ts +0 -11
- package/templates/interfaces/orionplace/subscribes/ISubscribe.ts +0 -28
- package/templates/interfaces/orionplace/subscribes/ISubscriptionApi.ts +0 -127
- package/templates/interfaces/orionplace/tickets/ICustomerTicketApi.ts +0 -223
- package/templates/interfaces/orionplace/transport.ts +0 -34
- package/templates/lib/orionplace/accountLabels.ts +0 -29
- package/templates/lib/orionplace/activityLabels.ts +0 -96
- package/templates/lib/orionplace/activityPresentation.ts +0 -9
- package/templates/lib/orionplace/addressChanges.ts +0 -26
- package/templates/lib/orionplace/addressPresentation.ts +0 -58
- package/templates/lib/orionplace/api.ts +0 -326
- package/templates/lib/orionplace/appLoadClient.ts +0 -80
- package/templates/lib/orionplace/appLoadResult.ts +0 -120
- package/templates/lib/orionplace/appLoadServer.ts +0 -183
- package/templates/lib/orionplace/blogArticle.ts +0 -122
- package/templates/lib/orionplace/blogArticleHtml.ts +0 -371
- package/templates/lib/orionplace/blogComments.ts +0 -102
- package/templates/lib/orionplace/blogImageViewer.ts +0 -84
- package/templates/lib/orionplace/blogJournal.ts +0 -128
- package/templates/lib/orionplace/blogLabels.ts +0 -158
- package/templates/lib/orionplace/blogPresentation.ts +0 -67
- package/templates/lib/orionplace/blogProductPlacements.ts +0 -105
- package/templates/lib/orionplace/browseLabels.ts +0 -145
- package/templates/lib/orionplace/cartAddress.ts +0 -86
- package/templates/lib/orionplace/cartController.ts +0 -104
- package/templates/lib/orionplace/cartLabels.ts +0 -390
- package/templates/lib/orionplace/cartOptions.ts +0 -115
- package/templates/lib/orionplace/cartPreview.ts +0 -135
- package/templates/lib/orionplace/cartPromo.ts +0 -150
- package/templates/lib/orionplace/cartShipment.ts +0 -61
- package/templates/lib/orionplace/cartSnapshot.ts +0 -21
- package/templates/lib/orionplace/catalog.ts +0 -150
- package/templates/lib/orionplace/categoryLabels.ts +0 -29
- package/templates/lib/orionplace/contact.ts +0 -47
- package/templates/lib/orionplace/contactLabels.ts +0 -152
- package/templates/lib/orionplace/currency.ts +0 -128
- package/templates/lib/orionplace/deliveryMap.ts +0 -86
- package/templates/lib/orionplace/directoryLabels.ts +0 -198
- package/templates/lib/orionplace/domain.ts +0 -21
- package/templates/lib/orionplace/errorPageLabels.ts +0 -89
- package/templates/lib/orionplace/eventEnrollment.ts +0 -22
- package/templates/lib/orionplace/featureData.ts +0 -28
- package/templates/lib/orionplace/featureLabels.ts +0 -406
- package/templates/lib/orionplace/featuredLabels.ts +0 -38
- package/templates/lib/orionplace/footerLabels.ts +0 -53
- package/templates/lib/orionplace/guestSession.ts +0 -55
- package/templates/lib/orionplace/headerLabels.ts +0 -98
- package/templates/lib/orionplace/homeContent.ts +0 -193
- package/templates/lib/orionplace/homeLabels.ts +0 -74
- package/templates/lib/orionplace/htmlText.ts +0 -51
- package/templates/lib/orionplace/manufacturerDirectory.ts +0 -71
- package/templates/lib/orionplace/manufacturerIndex.ts +0 -107
- package/templates/lib/orionplace/modalWindow.ts +0 -109
- package/templates/lib/orionplace/nativeApp.ts +0 -365
- package/templates/lib/orionplace/navigation.tsx +0 -121
- package/templates/lib/orionplace/notice.ts +0 -22
- package/templates/lib/orionplace/orderLabels.ts +0 -458
- package/templates/lib/orionplace/orderPresentation.ts +0 -617
- package/templates/lib/orionplace/pageMetadata.ts +0 -361
- package/templates/lib/orionplace/pageSeo.ts +0 -662
- package/templates/lib/orionplace/paginationScroll.ts +0 -131
- package/templates/lib/orionplace/phone.ts +0 -22
- package/templates/lib/orionplace/presentation.ts +0 -84
- package/templates/lib/orionplace/privacyLabels.ts +0 -273
- package/templates/lib/orionplace/productActionLabels.ts +0 -108
- package/templates/lib/orionplace/productAvailability.ts +0 -30
- package/templates/lib/orionplace/productGallery.ts +0 -64
- package/templates/lib/orionplace/productLabels.ts +0 -119
- package/templates/lib/orionplace/productListLocation.ts +0 -130
- package/templates/lib/orionplace/productPage.ts +0 -308
- package/templates/lib/orionplace/productPhotos.ts +0 -67
- package/templates/lib/orionplace/productSearch.ts +0 -280
- package/templates/lib/orionplace/productSeller.ts +0 -56
- package/templates/lib/orionplace/productStructuredData.ts +0 -221
- package/templates/lib/orionplace/profile.ts +0 -169
- package/templates/lib/orionplace/profileLabels.ts +0 -227
- package/templates/lib/orionplace/promoLabels.ts +0 -111
- package/templates/lib/orionplace/promoPresentation.ts +0 -381
- package/templates/lib/orionplace/reviewLabels.ts +0 -256
- package/templates/lib/orionplace/reviewPresentation.ts +0 -64
- package/templates/lib/orionplace/reviewScope.ts +0 -38
- package/templates/lib/orionplace/searchFilters.ts +0 -99
- package/templates/lib/orionplace/searchHistory.ts +0 -144
- package/templates/lib/orionplace/sellerDirectory.ts +0 -120
- package/templates/lib/orionplace/seo.ts +0 -52
- package/templates/lib/orionplace/serverApi.ts +0 -158
- package/templates/lib/orionplace/serverLocale.ts +0 -29
- package/templates/lib/orionplace/serverMetadata.ts +0 -93
- package/templates/lib/orionplace/serverRecords.ts +0 -31
- package/templates/lib/orionplace/serverRoute.tsx +0 -59
- package/templates/lib/orionplace/sessionLabels.ts +0 -38
- package/templates/lib/orionplace/signInReturn.ts +0 -89
- package/templates/lib/orionplace/storeDirectory.ts +0 -47
- package/templates/lib/orionplace/storefrontRecords.ts +0 -42
- package/templates/lib/orionplace/subscriptionChanges.ts +0 -120
- package/templates/lib/orionplace/subscriptionLabels.ts +0 -100
- package/templates/lib/orionplace/subscriptionManageLabels.ts +0 -422
- package/templates/lib/orionplace/subscriptionPlans.ts +0 -122
- package/templates/lib/orionplace/subscriptionRemote.ts +0 -85
- package/templates/lib/orionplace/subscriptionUsage.ts +0 -58
- package/templates/lib/orionplace/tariffLabels.ts +0 -176
- package/templates/lib/orionplace/tariffPage.ts +0 -54
- package/templates/lib/orionplace/tariffVariables.ts +0 -174
- package/templates/lib/orionplace/tariffs.ts +0 -241
- package/templates/lib/orionplace/ticketItems.ts +0 -75
- package/templates/lib/orionplace/ticketLabels.ts +0 -428
- package/templates/lib/orionplace/ticketLocation.ts +0 -79
- package/templates/lib/orionplace/ticketRequests.ts +0 -70
- package/templates/lib/orionplace/walletTransaction.ts +0 -105
- package/templates/orionplace/COMPONENT-DOWNLOAD.md +0 -66
- package/templates/orionplace/COMPONENTS.md +0 -35
- package/templates/providers/OrionplaceProvider.tsx +0 -191
- package/templates/proxy.ts +0 -63
- package/templates/stores/orionplace.ts +0 -282
- package/templates/stores/orionplaceBrowse.ts +0 -89
- package/templates/stores/orionplaceCatalog.ts +0 -162
- package/templates/stores/orionplaceProducts.ts +0 -389
- package/templates/stores/orionplaceScope.ts +0 -104
- package/templates/stores/orionplaceSelections.ts +0 -130
- package/templates/themes/orionplace.ts +0 -106
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
# StorefrontWishlist · React
|
|
2
|
-
|
|
3
|
-
## English
|
|
4
|
-
|
|
5
|
-
`StorefrontWishlist` shows saved products and products with active availability
|
|
6
|
-
notifications. Pass a server response through `initial` when the account page
|
|
7
|
-
has already loaded it. Otherwise `loadOnMount` calls `onLoad` with
|
|
8
|
-
`products_search`. The Wishlist tab sends `show_whishlist=true`; Notifications
|
|
9
|
-
sends `subscription_exists=true`. Tab and page changes replace the cards and
|
|
10
|
-
keep the returned pagination.
|
|
11
|
-
|
|
12
|
-
The component stores every returned product in the isolated product store and
|
|
13
|
-
renders the current page as standard `ProductGroup` cards. `productHref`
|
|
14
|
-
supplies their product links. `productActionsDisabled`, a pending list request
|
|
15
|
-
or a removal request disables product actions until the request finishes.
|
|
16
|
-
|
|
17
|
-
Remove on the Wishlist tab calls `onRemoveWishlist` with
|
|
18
|
-
`products_whishlist_delete_by_whish_id` and the listed product's
|
|
19
|
-
`whishlist_id`. The returned `count` updates the shared wishlist counter.
|
|
20
|
-
When the entry already ended elsewhere, for example in another tab, the
|
|
21
|
-
backend answers “Wish not found” with the current `count`; the component
|
|
22
|
-
applies it, clears the heart and loads the page again instead of showing the
|
|
23
|
-
error.
|
|
24
|
-
Unsubscribe on the Notifications tab calls `onUnsubscribeEntry` with
|
|
25
|
-
`product_subscription_delete` and the listed product ID. A confirmed change
|
|
26
|
-
updates ordinary, featured and secondary-variant copies of that product, then
|
|
27
|
-
reloads the current page. If that reload fails, the entry stays removed and
|
|
28
|
-
other entries remain usable. Retry requests the first page of the selected list.
|
|
29
|
-
|
|
30
|
-
The card controls forward these independent events:
|
|
31
|
-
|
|
32
|
-
- `onSelect(product)` receives the displayed `IProduct`.
|
|
33
|
-
- `onSelectSeller(seller)` receives that product's `IProductSeller`.
|
|
34
|
-
- `onSelectVariant({ product, variant })` receives the listed product ID and
|
|
35
|
-
selected main-variant value.
|
|
36
|
-
- `onRequestSecondaryVariants(request)` receives the product group and main
|
|
37
|
-
variant value needed for the secondary lookup.
|
|
38
|
-
- `onSelectSecondaryVariant({ product, variant })` receives the listed product
|
|
39
|
-
ID and the selected secondary variant with its product.
|
|
40
|
-
- `onToggleFavorite({ product, selected })` reports the requested wishlist
|
|
41
|
-
state.
|
|
42
|
-
- `onAdd({ product, quantity })` and `onRemove({ product, cartItem })` report
|
|
43
|
-
cart changes.
|
|
44
|
-
- `onSubscribe({ product })`, `onUnsubscribe({ product })` and
|
|
45
|
-
`onPreorder({ product })` report availability actions.
|
|
46
|
-
|
|
47
|
-
When a forwarded wishlist or notification action removes an entry from the
|
|
48
|
-
product store, the component hides that card and reloads the current page to
|
|
49
|
-
fill the available space.
|
|
50
|
-
|
|
51
|
-
Source is maintained in
|
|
52
|
-
`components/orionplace/products/StorefrontWishlist.tsx`; wishlist response
|
|
53
|
-
fields are in `interfaces/orionplace/products/IWishlist.ts` and
|
|
54
|
-
`interfaces/orionplace/products/IProductSearchApi.ts`.
|
|
55
|
-
|
|
56
|
-
### Props
|
|
57
|
-
|
|
58
|
-
| Prop | Meaning |
|
|
59
|
-
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
60
|
-
| `initial?: { products?: { data: IProduct[]; rpag: IApiPagination; }; min_max?: IProductSearchRanges; variants?: Record<string, IProductVariantFilter>; selects?: IProductSearchChoices; c_cat_products?: number; promo?: IPromoDefinition \| null; }` | Server-provided initial data used for the first render and hydration. |
|
|
61
|
-
| `initialError?: string` | Server-provided initial error used for the first render and hydration. |
|
|
62
|
-
| `initialMode?: "wishlist" \| "notifications"` | Server-provided initial mode used for the first render and hydration. |
|
|
63
|
-
| `loadOnMount?: boolean` | Starts the load callback after hydration when server data was not supplied. |
|
|
64
|
-
| `productActionsDisabled?: boolean` | Disables cart, wishlist, subscription and preorder actions. |
|
|
65
|
-
| `productHref?: (id: number) => string` | Builds the product destination from the callback arguments. |
|
|
66
|
-
| `onLoad: (action: WishlistLoadAction) => Promise<WishlistPage> \| WishlistPage` | Called when the component needs its primary data. The callback payload is shown in its type. |
|
|
67
|
-
| `onRemoveWishlist?: (action: WishlistRemoveAction) => Promise<{ count: number; }> \| { count: number; }` | Called when the visitor removes a product from the current wishlist list. The callback payload is shown in its type. |
|
|
68
|
-
| `onUnsubscribeEntry?: (action: WishlistUnsubscribeAction) => Promise<void> \| void` | Called when the visitor removes an availability notification. The callback payload is shown in its type. |
|
|
69
|
-
| `onModeChange?: (mode: "wishlist" \| "notifications") => void` | Called when the visitor changes the current list mode. The callback payload is shown in its type. |
|
|
70
|
-
| `onPageChange?: (page: number) => void` | Called when the visitor requests another page. The callback payload is shown in its type. |
|
|
71
|
-
| `onSelect?: (product: IProduct) => void` | Passes the displayed product object when its image or name is selected. The application handles product navigation. |
|
|
72
|
-
| `onSelectSeller?: (seller: IProductSeller) => void` | Passes the displayed product’s seller object when the seller is selected. The application opens the seller page. |
|
|
73
|
-
| `onSelectVariant?: (selection: ProductActionSelection & { variant: IProductVariantValue; }) => void` | Passes the previously displayed product ID in `product` and chosen primary variant in `variant`. An available variant product replaces the card; the application loads missing product data. |
|
|
74
|
-
| `onRequestSecondaryVariants?: (request: IProductSecondaryVariantRequest) => void` | Passes the product ID in `product`, product group ID in `productGroup` and primary variant in `variant` when its secondary variants need loading. The application loads them and supplies them to the product store. |
|
|
75
|
-
| `onSelectSecondaryVariant?: (selection: ProductActionSelection & { variant: IProductSecondaryVariant; }) => void` | Passes the previously displayed product ID in `product` and chosen secondary variant in `variant` after replacing the displayed product. The secondary-variant data remains available. |
|
|
76
|
-
| `onToggleFavorite?: (selection: ProductActionSelection & { selected: boolean; }) => void` | Passes the product ID in `product` and desired wishlist state in `selected` after the heart is pressed. The application confirms the change with a request and updates product data. |
|
|
77
|
-
| `onAdd?: (selection: ProductActionSelection & { quantity: number; }) => void` | Passes the product ID in `product` and the requested total quantity in `quantity` when adding an item or changing its quantity. The application sends the request and supplies confirmed product data. |
|
|
78
|
-
| `onRemove?: (selection: ProductActionSelection & { cartItem: number; }) => void` | Passes the product ID in `product` and cart item ID in `cartItem` when removing the last unit. The application removes that cart item and supplies confirmed product data. |
|
|
79
|
-
| `onSubscribe?: (selection: ProductActionSelection) => void` | Passes the product ID in `product` when an availability notification is requested. The application handles any required sign-in, sends the request and updates subscription state. |
|
|
80
|
-
| `onUnsubscribe?: (selection: ProductActionSelection) => void` | Passes the product ID in `product` when cancelling an availability notification. The application sends the request and supplies the confirmed subscription state. |
|
|
81
|
-
| `onPreorder?: (selection: ProductActionSelection) => void` | Passes the product ID in `product` when preorder is selected. The application collects the required contact details and submits the request. |
|
|
82
|
-
|
|
83
|
-
## Русский
|
|
84
|
-
|
|
85
|
-
`StorefrontWishlist` показывает сохранённые товары и товары с действующими
|
|
86
|
-
уведомлениями о наличии. Если страница личного кабинета уже загрузила ответ на
|
|
87
|
-
сервере, передайте его через `initial`. Иначе `loadOnMount` вызывает `onLoad` с
|
|
88
|
-
методом `products_search`. Вкладка «Избранное» отправляет
|
|
89
|
-
`show_whishlist=true`, а «Уведомления» — `subscription_exists=true`. Смена
|
|
90
|
-
вкладки или страницы заменяет карточки и сохраняет полученную пагинацию.
|
|
91
|
-
|
|
92
|
-
Компонент сохраняет каждый полученный товар в отдельном хранилище товаров и
|
|
93
|
-
показывает текущую страницу стандартными карточками `ProductGroup`.
|
|
94
|
-
`productHref` задаёт ссылки товаров. `productActionsDisabled`, выполняемый
|
|
95
|
-
запрос списка или удаления блокируют действия карточек до завершения запроса.
|
|
96
|
-
|
|
97
|
-
Кнопка «Убрать» в избранном вызывает `onRemoveWishlist` с методом
|
|
98
|
-
`products_whishlist_delete_by_whish_id` и `whishlist_id` сохранённой позиции.
|
|
99
|
-
Поле `count` из ответа обновляет общий счётчик избранного. Если позиция уже
|
|
100
|
-
удалена в другом месте, например в другой вкладке, сервер отвечает «Wish not
|
|
101
|
-
found» с текущим `count`: компонент применяет счётчик, снимает отметку с
|
|
102
|
-
товара и загружает страницу заново вместо показа ошибки. Кнопка «Отписаться»
|
|
103
|
-
во вкладке уведомлений вызывает `onUnsubscribeEntry` с методом
|
|
104
|
-
`product_subscription_delete` и ID товара. Подтверждённое изменение обновляет
|
|
105
|
-
основную, рекомендованную и вложенные копии вариантов товара, затем повторно
|
|
106
|
-
загружает
|
|
107
|
-
текущую страницу. Если эта загрузка завершается ошибкой, позиция остаётся
|
|
108
|
-
удалённой, а остальные позиции остаются доступны. Кнопка повтора загружает
|
|
109
|
-
первую страницу выбранного списка.
|
|
110
|
-
|
|
111
|
-
Элементы карточки независимо передают следующие события:
|
|
112
|
-
|
|
113
|
-
- `onSelect(product)` получает показанный `IProduct`.
|
|
114
|
-
- `onSelectSeller(seller)` получает `IProductSeller` этого товара.
|
|
115
|
-
- `onSelectVariant({ product, variant })` получает ID товара из списка и
|
|
116
|
-
выбранное значение основного варианта.
|
|
117
|
-
- `onRequestSecondaryVariants(request)` получает группу товара и значение
|
|
118
|
-
основного варианта для загрузки дополнительных вариантов.
|
|
119
|
-
- `onSelectSecondaryVariant({ product, variant })` получает ID товара из
|
|
120
|
-
списка и выбранный дополнительный вариант с его товаром.
|
|
121
|
-
- `onToggleFavorite({ product, selected })` сообщает запрошенное состояние
|
|
122
|
-
избранного.
|
|
123
|
-
- `onAdd({ product, quantity })` и `onRemove({ product, cartItem })` сообщают
|
|
124
|
-
изменения корзины.
|
|
125
|
-
- `onSubscribe({ product })`, `onUnsubscribe({ product })` и
|
|
126
|
-
`onPreorder({ product })` сообщают действия с доступностью товара.
|
|
127
|
-
|
|
128
|
-
Если переданное действие избранного или уведомления удалило позицию из
|
|
129
|
-
хранилища товаров, компонент скрывает карточку и повторно загружает текущую
|
|
130
|
-
страницу, чтобы дополнить список.
|
|
131
|
-
|
|
132
|
-
Исходный файл:
|
|
133
|
-
`components/orionplace/products/StorefrontWishlist.tsx`; поля ответа находятся
|
|
134
|
-
в `interfaces/orionplace/products/IWishlist.ts` и
|
|
135
|
-
`interfaces/orionplace/products/IProductSearchApi.ts`.
|
|
136
|
-
|
|
137
|
-
### Свойства
|
|
138
|
-
|
|
139
|
-
| Свойство | Назначение |
|
|
140
|
-
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
141
|
-
| `initial?: { products?: { data: IProduct[]; rpag: IApiPagination; }; min_max?: IProductSearchRanges; variants?: Record<string, IProductVariantFilter>; selects?: IProductSearchChoices; c_cat_products?: number; promo?: IPromoDefinition \| null; }` | Начальные данные с сервера для первого рендера и гидратации. |
|
|
142
|
-
| `initialError?: string` | Начальное значение ошибки, полученное на сервере для первого рендера и гидратации. |
|
|
143
|
-
| `initialMode?: "wishlist" \| "notifications"` | Начальное значение режима, полученное на сервере для первого рендера и гидратации. |
|
|
144
|
-
| `loadOnMount?: boolean` | Запускает загрузку после гидратации, если серверные данные не переданы. |
|
|
145
|
-
| `productActionsDisabled?: boolean` | Блокирует корзину, избранное, подписку и предзаказ. |
|
|
146
|
-
| `productHref?: (id: number) => string` | Строит адрес ссылки товара из аргументов обработчика. |
|
|
147
|
-
| `onLoad: (action: WishlistLoadAction) => Promise<WishlistPage> \| WishlistPage` | Вызывается, когда компоненту нужны основные данные. Данные обработчика указаны в его типе. |
|
|
148
|
-
| `onRemoveWishlist?: (action: WishlistRemoveAction) => Promise<{ count: number; }> \| { count: number; }` | Вызывается, когда покупатель удаляет товар из текущего списка избранного. Данные обработчика указаны в его типе. |
|
|
149
|
-
| `onUnsubscribeEntry?: (action: WishlistUnsubscribeAction) => Promise<void> \| void` | Вызывается, когда покупатель отключает уведомление о наличии. Данные обработчика указаны в его типе. |
|
|
150
|
-
| `onModeChange?: (mode: "wishlist" \| "notifications") => void` | Вызывается, когда покупатель меняет режим списка. Данные обработчика указаны в его типе. |
|
|
151
|
-
| `onPageChange?: (page: number) => void` | Вызывается, когда покупатель открывает другую страницу. Данные обработчика указаны в его типе. |
|
|
152
|
-
| `onSelect?: (product: IProduct) => void` | Передаёт объект отображаемого товара при выборе его изображения или названия. Приложение выполняет переход к товару. |
|
|
153
|
-
| `onSelectSeller?: (seller: IProductSeller) => void` | Передаёт объект продавца отображаемого товара при выборе продавца. Приложение открывает его страницу. |
|
|
154
|
-
| `onSelectVariant?: (selection: ProductActionSelection & { variant: IProductVariantValue; }) => void` | Передаёт ID ранее отображаемого товара в `product` и выбранный основной вариант в `variant`. Доступный товар выбранного варианта заменяет карточку; отсутствующие данные загружает приложение. |
|
|
155
|
-
| `onRequestSecondaryVariants?: (request: IProductSecondaryVariantRequest) => void` | Передаёт ID товара в `product`, ID группы товаров в `productGroup` и основной вариант в `variant`, когда для него нужно загрузить дополнительные варианты. Приложение загружает и передаёт их в хранилище товаров. |
|
|
156
|
-
| `onSelectSecondaryVariant?: (selection: ProductActionSelection & { variant: IProductSecondaryVariant; }) => void` | Передаёт ID ранее отображаемого товара в `product` и выбранный дополнительный вариант в `variant` после замены отображаемого товара. Выбор сохраняет данные дополнительных вариантов. |
|
|
157
|
-
| `onToggleFavorite?: (selection: ProductActionSelection & { selected: boolean; }) => void` | Передаёт ID товара в `product` и желаемое состояние избранного в `selected` после нажатия сердца. Приложение подтверждает изменение запросом и обновляет данные товара. |
|
|
158
|
-
| `onAdd?: (selection: ProductActionSelection & { quantity: number; }) => void` | Передаёт `product` — ID товара и `quantity` — запрошенное итоговое количество при добавлении или изменении количества. Приложение выполняет запрос и передаёт подтверждённые данные товара. |
|
|
159
|
-
| `onRemove?: (selection: ProductActionSelection & { cartItem: number; }) => void` | Передаёт ID товара в `product` и ID позиции корзины в `cartItem` при удалении последней единицы. Приложение удаляет эту позицию и передаёт подтверждённые данные товара. |
|
|
160
|
-
| `onSubscribe?: (selection: ProductActionSelection) => void` | Передаёт ID товара в `product` при выборе уведомления о поступлении. Приложение выполняет вход, если он нужен, отправляет запрос и обновляет состояние подписки. |
|
|
161
|
-
| `onUnsubscribe?: (selection: ProductActionSelection) => void` | Передаёт ID товара в `product` при отмене уведомления о поступлении. Приложение отправляет запрос и передаёт подтверждённое состояние подписки. |
|
|
162
|
-
| `onPreorder?: (selection: ProductActionSelection) => void` | Передаёт ID товара в `product` при выборе предзаказа. Приложение собирает необходимые контактные данные и отправляет запрос. |
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
.root {
|
|
2
|
-
composes: feature featureStack from '../account/account.module.css';
|
|
3
|
-
container-type: inline-size;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.title {
|
|
7
|
-
composes: featureTitle from '../account/account.module.css';
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.tabs {
|
|
11
|
-
composes: featureActions from '../account/account.module.css';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.button {
|
|
15
|
-
composes: featureButton from '../account/account.module.css';
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.error {
|
|
19
|
-
composes: notice noticeError from '../account/account.module.css';
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.remove {
|
|
23
|
-
justify-self: start;
|
|
24
|
-
padding: 0 0 0.125rem;
|
|
25
|
-
border: 0;
|
|
26
|
-
border-bottom: 1px solid currentColor;
|
|
27
|
-
border-radius: 0;
|
|
28
|
-
background: transparent;
|
|
29
|
-
color: var(--orionplace-muted);
|
|
30
|
-
font-family: inherit;
|
|
31
|
-
font-size: 11px;
|
|
32
|
-
line-height: normal;
|
|
33
|
-
letter-spacing: 0.08em;
|
|
34
|
-
text-transform: uppercase;
|
|
35
|
-
cursor: pointer;
|
|
36
|
-
outline: none;
|
|
37
|
-
transition: color 150ms;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.remove:focus-visible {
|
|
41
|
-
color: var(--orionplace-text);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@media (hover: hover) {
|
|
45
|
-
.remove:hover {
|
|
46
|
-
color: var(--orionplace-text);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.remove:disabled {
|
|
51
|
-
cursor: default;
|
|
52
|
-
opacity: 0.4;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.screenReaderOnly {
|
|
56
|
-
position: absolute;
|
|
57
|
-
width: 1px;
|
|
58
|
-
height: 1px;
|
|
59
|
-
padding: 0;
|
|
60
|
-
margin: -1px;
|
|
61
|
-
overflow: hidden;
|
|
62
|
-
clip: rect(0, 0, 0, 0);
|
|
63
|
-
white-space: nowrap;
|
|
64
|
-
border: 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
@media (prefers-reduced-motion: reduce) {
|
|
68
|
-
.remove {
|
|
69
|
-
transition: none;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useEffect, useRef, useState } from 'react';
|
|
4
|
-
import {
|
|
5
|
-
useOrionplaceProducts,
|
|
6
|
-
useOrionplaceProductsStore,
|
|
7
|
-
useOrionplaceSelections,
|
|
8
|
-
} from '@/providers/OrionplaceProvider';
|
|
9
|
-
import type { IApiPagination } from '@/interfaces/orionplace/accounts/IProfileData';
|
|
10
|
-
import type { IProduct } from '@/interfaces/orionplace/products/IProduct';
|
|
11
|
-
import type {
|
|
12
|
-
IProductSearchRequest,
|
|
13
|
-
IProductSearchResponse,
|
|
14
|
-
} from '@/interfaces/orionplace/products/IProductSearchApi';
|
|
15
|
-
import { fieldErrorText, OrionplaceApiError } from '@/lib/orionplace/api';
|
|
16
|
-
import { activityLabels } from '@/lib/orionplace/activityLabels';
|
|
17
|
-
import { featureLabels } from '@/lib/orionplace/featureLabels';
|
|
18
|
-
import { mergePagination } from '@/lib/orionplace/featureData';
|
|
19
|
-
import { productLabels } from '@/lib/orionplace/productLabels';
|
|
20
|
-
import { OrionplaceEmptyState } from '@/components/orionplace/shared/OrionplaceEmptyState';
|
|
21
|
-
import { StorefrontPagination } from '@/components/orionplace/shared/StorefrontPagination';
|
|
22
|
-
import {
|
|
23
|
-
ProductGroup,
|
|
24
|
-
type ProductGroupEvents,
|
|
25
|
-
type ProductGroupProps,
|
|
26
|
-
} from './ProductGroup';
|
|
27
|
-
import styles from './StorefrontWishlist.module.css';
|
|
28
|
-
|
|
29
|
-
type WishlistPage = NonNullable<IProductSearchResponse['page_data']>;
|
|
30
|
-
|
|
31
|
-
export interface WishlistLoadAction {
|
|
32
|
-
endpoint: 'products_search';
|
|
33
|
-
request: IProductSearchRequest;
|
|
34
|
-
signal: AbortSignal;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface WishlistRemoveAction {
|
|
38
|
-
endpoint: 'products_whishlist_delete_by_whish_id';
|
|
39
|
-
request: Record<string, never>;
|
|
40
|
-
path: { whishlist_id: number };
|
|
41
|
-
signal: AbortSignal;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface WishlistUnsubscribeAction {
|
|
45
|
-
endpoint: 'product_subscription_delete';
|
|
46
|
-
request: Record<string, never>;
|
|
47
|
-
path: { product_id: number };
|
|
48
|
-
signal: AbortSignal;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export interface StorefrontWishlistProps extends ProductGroupEvents {
|
|
52
|
-
initial?: WishlistPage;
|
|
53
|
-
initialError?: string;
|
|
54
|
-
initialMode?: 'wishlist' | 'notifications';
|
|
55
|
-
loadOnMount?: boolean;
|
|
56
|
-
productActionsDisabled?: boolean;
|
|
57
|
-
productHref?: ProductGroupProps['productHref'];
|
|
58
|
-
onLoad: (action: WishlistLoadAction) => Promise<WishlistPage> | WishlistPage;
|
|
59
|
-
onRemoveWishlist?: (
|
|
60
|
-
action: WishlistRemoveAction,
|
|
61
|
-
) => Promise<{ count: number }> | { count: number };
|
|
62
|
-
onUnsubscribeEntry?: (
|
|
63
|
-
action: WishlistUnsubscribeAction,
|
|
64
|
-
) => Promise<void> | void;
|
|
65
|
-
onModeChange?: (mode: 'wishlist' | 'notifications') => void;
|
|
66
|
-
onPageChange?: (page: number) => void;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function StorefrontWishlist({
|
|
70
|
-
initial,
|
|
71
|
-
initialError = '',
|
|
72
|
-
initialMode = 'wishlist',
|
|
73
|
-
loadOnMount = true,
|
|
74
|
-
productActionsDisabled = false,
|
|
75
|
-
productHref,
|
|
76
|
-
onLoad,
|
|
77
|
-
onRemoveWishlist,
|
|
78
|
-
onUnsubscribeEntry,
|
|
79
|
-
onModeChange,
|
|
80
|
-
onPageChange,
|
|
81
|
-
...events
|
|
82
|
-
}: StorefrontWishlistProps) {
|
|
83
|
-
const locale = useOrionplaceSelections((state) => state.localeCode);
|
|
84
|
-
const updates = useOrionplaceProducts((state) => state.updates.products);
|
|
85
|
-
const productStore = useOrionplaceProductsStore();
|
|
86
|
-
const labels = activityLabels(locale);
|
|
87
|
-
const common = featureLabels(locale);
|
|
88
|
-
const productsCopy = productLabels(locale);
|
|
89
|
-
const [mode, setMode] = useState(initialMode);
|
|
90
|
-
const [products, setProducts] = useState<IProduct[]>(
|
|
91
|
-
initial?.products?.data ?? [],
|
|
92
|
-
);
|
|
93
|
-
const [pagination, setPagination] = useState<Partial<IApiPagination>>(
|
|
94
|
-
initial?.products?.rpag ?? {},
|
|
95
|
-
);
|
|
96
|
-
const [loaded, setLoaded] = useState(Boolean(initial));
|
|
97
|
-
const [pending, setPending] = useState(
|
|
98
|
-
loadOnMount && !initial && !initialError,
|
|
99
|
-
);
|
|
100
|
-
const [error, setError] = useState(initialError);
|
|
101
|
-
const activeRequest = useRef<AbortController | undefined>(undefined);
|
|
102
|
-
const requested = useRef(false);
|
|
103
|
-
const callbacks = useRef({ onLoad, onRemoveWishlist, onUnsubscribeEntry });
|
|
104
|
-
callbacks.current = { onLoad, onRemoveWishlist, onUnsubscribeEntry };
|
|
105
|
-
|
|
106
|
-
const currentProducts = products.map(
|
|
107
|
-
(product) => updates[product.id] ?? product,
|
|
108
|
-
);
|
|
109
|
-
const visibleProducts = currentProducts.filter((product) =>
|
|
110
|
-
mode === 'notifications'
|
|
111
|
-
? Boolean(product.subscription_id)
|
|
112
|
-
: Boolean(product.whishlist_id),
|
|
113
|
-
);
|
|
114
|
-
const disabled = productActionsDisabled || pending;
|
|
115
|
-
|
|
116
|
-
function requestBody(
|
|
117
|
-
page: number,
|
|
118
|
-
selectedMode = mode,
|
|
119
|
-
): IProductSearchRequest {
|
|
120
|
-
return {
|
|
121
|
-
filters:
|
|
122
|
-
selectedMode === 'notifications'
|
|
123
|
-
? { subscription_exists: true }
|
|
124
|
-
: { show_whishlist: true },
|
|
125
|
-
paginate: { page, pp_items: 12 },
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
async function fetchPage(
|
|
130
|
-
controller: AbortController,
|
|
131
|
-
page: number,
|
|
132
|
-
selectedMode = mode,
|
|
133
|
-
) {
|
|
134
|
-
const data = await callbacks.current.onLoad({
|
|
135
|
-
endpoint: 'products_search',
|
|
136
|
-
request: requestBody(page, selectedMode),
|
|
137
|
-
signal: controller.signal,
|
|
138
|
-
});
|
|
139
|
-
if (controller.signal.aborted) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
if (!data.products) {
|
|
143
|
-
throw new Error('Missing product list');
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
for (const product of data.products.data) {
|
|
147
|
-
productStore
|
|
148
|
-
.getState()
|
|
149
|
-
.setProduct(product, 'products', data.selects?.sellers);
|
|
150
|
-
}
|
|
151
|
-
setProducts(data.products.data);
|
|
152
|
-
setPagination((previous) =>
|
|
153
|
-
mergePagination(page === 1 ? {} : previous, data.products?.rpag),
|
|
154
|
-
);
|
|
155
|
-
setLoaded(true);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
async function run(work: (controller: AbortController) => Promise<void>) {
|
|
159
|
-
if (activeRequest.current) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
const controller = new AbortController();
|
|
163
|
-
activeRequest.current = controller;
|
|
164
|
-
setPending(true);
|
|
165
|
-
setError('');
|
|
166
|
-
try {
|
|
167
|
-
await work(controller);
|
|
168
|
-
} catch (reason) {
|
|
169
|
-
if (!controller.signal.aborted) {
|
|
170
|
-
const fields = (reason as { fields?: Record<string, string> })?.fields;
|
|
171
|
-
setError(
|
|
172
|
-
fieldErrorText(fields ?? {}) || common.failed,
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
} finally {
|
|
176
|
-
if (activeRequest.current === controller) {
|
|
177
|
-
activeRequest.current = undefined;
|
|
178
|
-
setPending(false);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
function load(page = 1, selectedMode = mode) {
|
|
184
|
-
return run((controller) => fetchPage(controller, page, selectedMode));
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function selectMode(selectedMode: 'wishlist' | 'notifications') {
|
|
188
|
-
if (pending) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
setMode(selectedMode);
|
|
192
|
-
setProducts([]);
|
|
193
|
-
setPagination({});
|
|
194
|
-
setLoaded(false);
|
|
195
|
-
onModeChange?.(selectedMode);
|
|
196
|
-
void load(1, selectedMode);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
function changePage(page: number) {
|
|
200
|
-
onPageChange?.(page);
|
|
201
|
-
void load(page);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
function removeEntry(listed: IProduct) {
|
|
205
|
-
const product = productStore.getState().getProduct(listed.id) ?? listed;
|
|
206
|
-
if (mode === 'notifications' && !callbacks.current.onUnsubscribeEntry) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
if (
|
|
210
|
-
mode === 'wishlist' &&
|
|
211
|
-
(!product.whishlist_id || !callbacks.current.onRemoveWishlist)
|
|
212
|
-
) {
|
|
213
|
-
setError(common.failed);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
void run(async (controller) => {
|
|
218
|
-
if (mode === 'notifications') {
|
|
219
|
-
await callbacks.current.onUnsubscribeEntry?.({
|
|
220
|
-
endpoint: 'product_subscription_delete',
|
|
221
|
-
request: {},
|
|
222
|
-
path: { product_id: product.id },
|
|
223
|
-
signal: controller.signal,
|
|
224
|
-
});
|
|
225
|
-
if (controller.signal.aborted) {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
productStore.getState().patchProduct(product.id, {
|
|
229
|
-
subscription_id: null,
|
|
230
|
-
});
|
|
231
|
-
} else {
|
|
232
|
-
let result: { count?: number } | undefined;
|
|
233
|
-
try {
|
|
234
|
-
result = await callbacks.current.onRemoveWishlist?.({
|
|
235
|
-
endpoint: 'products_whishlist_delete_by_whish_id',
|
|
236
|
-
request: {},
|
|
237
|
-
path: { whishlist_id: Number(product.whishlist_id) },
|
|
238
|
-
signal: controller.signal,
|
|
239
|
-
});
|
|
240
|
-
if (!result) {
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
} catch (reason) {
|
|
244
|
-
// "Wish not found": the entry already ended, for example in another
|
|
245
|
-
// tab. OrionMarketplace sends the current counter with the error, and the page
|
|
246
|
-
// is read again after this.
|
|
247
|
-
if (
|
|
248
|
-
!(reason instanceof OrionplaceApiError) ||
|
|
249
|
-
reason.kind !== 'failed' ||
|
|
250
|
-
reason.status === 401 ||
|
|
251
|
-
!Object.keys(reason.fields).length
|
|
252
|
-
) {
|
|
253
|
-
throw reason;
|
|
254
|
-
}
|
|
255
|
-
result = reason.data as { count?: number } | undefined;
|
|
256
|
-
}
|
|
257
|
-
if (controller.signal.aborted) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
if (Number.isInteger(result?.count)) {
|
|
261
|
-
productStore
|
|
262
|
-
.getState()
|
|
263
|
-
.setProductCounters({ c_wishlist: result!.count });
|
|
264
|
-
}
|
|
265
|
-
productStore
|
|
266
|
-
.getState()
|
|
267
|
-
.patchProduct(product.id, { whishlist_id: null });
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
await fetchPage(controller, pagination.page ?? 1);
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
useEffect(() => {
|
|
275
|
-
for (const product of initial?.products?.data ?? []) {
|
|
276
|
-
productStore
|
|
277
|
-
.getState()
|
|
278
|
-
.setProduct(product, 'products', initial?.selects?.sellers);
|
|
279
|
-
}
|
|
280
|
-
}, [initial, productStore]);
|
|
281
|
-
|
|
282
|
-
useEffect(() => {
|
|
283
|
-
if (!requested.current && loadOnMount && !initial && !initialError) {
|
|
284
|
-
requested.current = true;
|
|
285
|
-
void load();
|
|
286
|
-
}
|
|
287
|
-
return () => {
|
|
288
|
-
activeRequest.current?.abort();
|
|
289
|
-
activeRequest.current = undefined;
|
|
290
|
-
requested.current = false;
|
|
291
|
-
};
|
|
292
|
-
}, []);
|
|
293
|
-
|
|
294
|
-
useEffect(() => {
|
|
295
|
-
if (loaded && !pending && visibleProducts.length < products.length) {
|
|
296
|
-
void load(pagination.page ?? 1);
|
|
297
|
-
}
|
|
298
|
-
}, [visibleProducts.length, products.length]);
|
|
299
|
-
|
|
300
|
-
return (
|
|
301
|
-
<section
|
|
302
|
-
className={styles.root}
|
|
303
|
-
data-feature-part="StorefrontWishlist"
|
|
304
|
-
aria-busy={pending || undefined}
|
|
305
|
-
>
|
|
306
|
-
<h1 className={styles.title}>{labels.wishlist}</h1>
|
|
307
|
-
<div className={styles.tabs}>
|
|
308
|
-
<button
|
|
309
|
-
className={styles.button}
|
|
310
|
-
type="button"
|
|
311
|
-
disabled={pending}
|
|
312
|
-
aria-pressed={mode === 'wishlist'}
|
|
313
|
-
data-wishlist-tab="wishlist"
|
|
314
|
-
onClick={() => selectMode('wishlist')}
|
|
315
|
-
>
|
|
316
|
-
{labels.wishlist}
|
|
317
|
-
</button>
|
|
318
|
-
<button
|
|
319
|
-
className={styles.button}
|
|
320
|
-
type="button"
|
|
321
|
-
disabled={pending}
|
|
322
|
-
aria-pressed={mode === 'notifications'}
|
|
323
|
-
data-wishlist-tab="notifications"
|
|
324
|
-
onClick={() => selectMode('notifications')}
|
|
325
|
-
>
|
|
326
|
-
{labels.notifications}
|
|
327
|
-
</button>
|
|
328
|
-
</div>
|
|
329
|
-
|
|
330
|
-
{error ? (
|
|
331
|
-
<div
|
|
332
|
-
role="alert"
|
|
333
|
-
className={styles.error}
|
|
334
|
-
>
|
|
335
|
-
{error}
|
|
336
|
-
<button
|
|
337
|
-
className={styles.button}
|
|
338
|
-
type="button"
|
|
339
|
-
disabled={pending}
|
|
340
|
-
onClick={() => void load()}
|
|
341
|
-
>
|
|
342
|
-
{common.retry}
|
|
343
|
-
</button>
|
|
344
|
-
</div>
|
|
345
|
-
) : null}
|
|
346
|
-
{pending ? (
|
|
347
|
-
<p
|
|
348
|
-
role="status"
|
|
349
|
-
className="op-feature-loading"
|
|
350
|
-
>
|
|
351
|
-
<span className={styles.screenReaderOnly}>{common.loading}</span>
|
|
352
|
-
</p>
|
|
353
|
-
) : null}
|
|
354
|
-
|
|
355
|
-
{visibleProducts.length ? (
|
|
356
|
-
<div data-wishlist-products>
|
|
357
|
-
<ProductGroup
|
|
358
|
-
products={visibleProducts}
|
|
359
|
-
productIds={visibleProducts.map((product) => product.id)}
|
|
360
|
-
layout="grid"
|
|
361
|
-
disabled={disabled}
|
|
362
|
-
productHref={productHref}
|
|
363
|
-
{...events}
|
|
364
|
-
renderFooter={(product) => (
|
|
365
|
-
<button
|
|
366
|
-
type="button"
|
|
367
|
-
className={styles.remove}
|
|
368
|
-
data-wishlist-remove
|
|
369
|
-
disabled={pending}
|
|
370
|
-
aria-label={
|
|
371
|
-
mode === 'notifications'
|
|
372
|
-
? productsCopy.unsubscribeHint
|
|
373
|
-
: productsCopy.removeFavorite
|
|
374
|
-
}
|
|
375
|
-
onClick={() => removeEntry(product)}
|
|
376
|
-
>
|
|
377
|
-
{mode === 'notifications'
|
|
378
|
-
? labels.stopNotification
|
|
379
|
-
: labels.removeWish}
|
|
380
|
-
</button>
|
|
381
|
-
)}
|
|
382
|
-
/>
|
|
383
|
-
</div>
|
|
384
|
-
) : loaded && !pending ? (
|
|
385
|
-
<OrionplaceEmptyState
|
|
386
|
-
kind={mode === 'notifications' ? 'notifications' : 'wishlist'}
|
|
387
|
-
message={
|
|
388
|
-
mode === 'notifications'
|
|
389
|
-
? labels.notificationsEmpty
|
|
390
|
-
: labels.wishlistEmpty
|
|
391
|
-
}
|
|
392
|
-
/>
|
|
393
|
-
) : null}
|
|
394
|
-
|
|
395
|
-
<StorefrontPagination
|
|
396
|
-
pagination={pagination}
|
|
397
|
-
pending={pending}
|
|
398
|
-
onChange={changePage}
|
|
399
|
-
/>
|
|
400
|
-
</section>
|
|
401
|
-
);
|
|
402
|
-
}
|