orionplace-react 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +332 -38
- package/bin/orionplace-react.mjs +4 -1
- package/package.json +18 -5
- package/runtime/app.d.mts +6 -0
- package/runtime/app.mjs +48 -0
- package/runtime/marketplace.d.mts +13 -8
- package/runtime/marketplace.mjs +287 -211
- package/src/project-readme.mjs +95 -35
- package/src/setup.mjs +36 -13
- package/templates/app/StorefrontShell.tsx +435 -0
- package/templates/app/[[...path]]/page.app.tsx +11 -0
- package/templates/app/_storefront/ActivityPage.tsx +23 -0
- package/templates/app/_storefront/AddressesPage.tsx +29 -0
- package/templates/app/_storefront/AppRoutes.tsx +182 -0
- package/templates/app/_storefront/ArticlePage.tsx +81 -0
- package/templates/app/_storefront/CartPage.tsx +53 -0
- package/templates/app/_storefront/CatalogPage.tsx +37 -0
- package/templates/app/_storefront/CategoryPage.tsx +64 -0
- package/templates/app/_storefront/ContactPage.tsx +32 -0
- package/templates/app/_storefront/HomePage.tsx +140 -0
- package/templates/app/_storefront/JournalPage.tsx +36 -0
- package/templates/app/_storefront/LogoutPage.tsx +91 -0
- package/templates/app/_storefront/ManufacturersPage.tsx +64 -0
- package/templates/app/_storefront/OrdersPage.tsx +129 -0
- package/templates/app/_storefront/ProductPage.tsx +105 -0
- package/templates/app/_storefront/ProfilePage.tsx +75 -0
- package/templates/app/_storefront/PromoPage.tsx +66 -0
- package/templates/app/_storefront/PromocodesPage.tsx +17 -0
- package/templates/app/_storefront/SearchPage.tsx +220 -0
- package/templates/app/_storefront/SellersPage.tsx +160 -0
- package/templates/app/_storefront/StorefrontErrorRoute.tsx +42 -0
- package/templates/app/_storefront/StorefrontPageMetadata.tsx +74 -0
- package/templates/app/_storefront/StorefrontPageStatus.tsx +61 -0
- package/templates/app/_storefront/StoresPage.tsx +53 -0
- package/templates/app/_storefront/SubscriptionsPage.tsx +62 -0
- package/templates/app/_storefront/SupportPage.tsx +141 -0
- package/templates/app/_storefront/TariffsPage.tsx +180 -0
- package/templates/app/_storefront/UnsubscribePage.tsx +29 -0
- package/templates/app/_storefront/WalletPage.tsx +78 -0
- package/templates/app/_storefront/WishlistPage.tsx +79 -0
- package/templates/app/_storefront/storefrontRoutes.tsx +738 -0
- package/templates/app/_storefront/useAccountWallet.ts +27 -0
- package/templates/app/_storefront/useBlogComments.ts +389 -0
- package/templates/app/_storefront/useProductSearch.ts +171 -0
- package/templates/app/_storefront/useStorefrontNavigation.ts +36 -0
- package/templates/app/activity/page.tsx +9 -0
- package/templates/app/addresses/page.tsx +9 -0
- package/templates/app/api/[...orionplace]/route.ts +11 -4
- package/templates/app/browse/page.tsx +27 -0
- package/templates/app/cart/page.tsx +9 -0
- package/templates/app/catalog/page.tsx +9 -0
- package/templates/app/category/[id]/page.tsx +9 -0
- package/templates/app/contact/page.tsx +9 -0
- package/templates/app/error.tsx +7 -0
- package/templates/app/featured/page.tsx +9 -0
- package/templates/app/global-error.tsx +61 -0
- package/templates/app/globals.css +50 -2
- package/templates/app/journal/[id]/page.tsx +9 -0
- package/templates/app/journal/page.tsx +9 -0
- package/templates/app/layout.app.tsx +20 -0
- package/templates/app/layout.tsx +44 -10
- package/templates/app/logout/page.tsx +9 -0
- package/templates/app/manufacturers/page.tsx +9 -0
- package/templates/app/not-found.tsx +5 -0
- package/templates/app/orders/page.tsx +9 -0
- package/templates/app/page.module.css +12 -8
- package/templates/app/page.tsx +8 -79
- package/templates/app/product/[id]/page.tsx +9 -0
- package/templates/app/profile/page.tsx +9 -0
- package/templates/app/promo/[id]/page.tsx +9 -0
- package/templates/app/promocodes/page.tsx +9 -0
- package/templates/app/ps3/blog/[...orionplace]/route.ts +13 -0
- package/templates/app/sellers/page.tsx +9 -0
- package/templates/app/storefront.module.css +406 -0
- package/templates/app/stores/page.tsx +9 -0
- package/templates/app/subscriptions/page.tsx +9 -0
- package/templates/app/tariffs/[slug]/[id]/page.tsx +9 -0
- package/templates/app/tariffs/page.tsx +9 -0
- package/templates/app/tickets/page.tsx +9 -0
- package/templates/app/unsubscribe/page.tsx +9 -0
- package/templates/app/wallet/page.tsx +9 -0
- package/templates/app/wishlist/page.tsx +9 -0
- package/templates/components/orionplace/account/AccountActivity.README.md +70 -0
- package/templates/components/orionplace/account/AccountActivity.module.css +16 -0
- package/templates/components/orionplace/account/AccountActivity.tsx +94 -0
- package/templates/components/orionplace/account/AccountPromocodes.README.md +70 -0
- package/templates/components/orionplace/account/AccountPromocodes.module.css +92 -0
- package/templates/components/orionplace/account/AccountPromocodes.tsx +257 -0
- package/templates/components/orionplace/account/AccountSection.README.md +46 -0
- package/templates/components/orionplace/account/AccountSection.module.css +110 -0
- package/templates/components/orionplace/account/AccountSection.tsx +109 -0
- package/templates/components/orionplace/account/ProfileAvatar.README.md +48 -0
- package/templates/components/orionplace/account/ProfileAvatar.module.css +31 -0
- package/templates/components/orionplace/account/ProfileAvatar.tsx +138 -0
- package/templates/components/orionplace/account/ProfileDeleteAccount.README.md +59 -0
- package/templates/components/orionplace/account/ProfileDeleteAccount.module.css +51 -0
- package/templates/components/orionplace/account/ProfileDeleteAccount.tsx +171 -0
- package/templates/components/orionplace/account/ProfileDetailsForm.README.md +44 -0
- package/templates/components/orionplace/account/ProfileDetailsForm.module.css +35 -0
- package/templates/components/orionplace/account/ProfileDetailsForm.tsx +178 -0
- package/templates/components/orionplace/account/ProfileEmailSettings.README.md +52 -0
- package/templates/components/orionplace/account/ProfileEmailSettings.module.css +51 -0
- package/templates/components/orionplace/account/ProfileEmailSettings.tsx +276 -0
- package/templates/components/orionplace/account/ProfilePasswordForm.README.md +45 -0
- package/templates/components/orionplace/account/ProfilePasswordForm.module.css +43 -0
- package/templates/components/orionplace/account/ProfilePasswordForm.tsx +227 -0
- package/templates/components/orionplace/account/ProfileSignIn.README.md +64 -0
- package/templates/components/orionplace/account/ProfileSignIn.module.css +86 -0
- package/templates/components/orionplace/account/ProfileSignIn.tsx +463 -0
- package/templates/components/orionplace/account/SignInHistory.README.md +52 -0
- package/templates/components/orionplace/account/SignInHistory.module.css +81 -0
- package/templates/components/orionplace/account/SignInHistory.tsx +231 -0
- package/templates/components/orionplace/account/StorefrontLogout.README.md +48 -0
- package/templates/components/orionplace/account/StorefrontLogout.module.css +166 -0
- package/templates/components/orionplace/account/StorefrontLogout.tsx +73 -0
- package/templates/components/orionplace/account/StorefrontProfile.README.md +71 -0
- package/templates/components/orionplace/account/StorefrontProfile.module.css +65 -0
- package/templates/components/orionplace/account/StorefrontProfile.tsx +189 -0
- package/templates/components/orionplace/account/account.module.css +1180 -0
- package/templates/components/orionplace/account/profile.module.css +696 -0
- package/templates/components/orionplace/address/AddressForm.README.md +152 -0
- package/templates/components/orionplace/address/AddressForm.module.css +336 -0
- package/templates/components/orionplace/address/AddressForm.tsx +827 -0
- package/templates/components/orionplace/address/StorefrontAddresses.README.md +99 -0
- package/templates/components/orionplace/address/StorefrontAddresses.module.css +271 -0
- package/templates/components/orionplace/address/StorefrontAddresses.tsx +438 -0
- package/templates/components/orionplace/banners/MainBanner.README.md +65 -0
- package/templates/components/orionplace/banners/MainBanner.module.css +112 -0
- package/templates/components/orionplace/banners/MainBanner.tsx +159 -0
- package/templates/components/orionplace/blog/BlogArticle.README.md +143 -0
- package/templates/components/orionplace/blog/BlogArticle.module.css +304 -0
- package/templates/components/orionplace/blog/BlogArticle.tsx +371 -0
- package/templates/components/orionplace/blog/BlogCommentForm.README.md +51 -0
- package/templates/components/orionplace/blog/BlogCommentForm.module.css +93 -0
- package/templates/components/orionplace/blog/BlogCommentForm.tsx +125 -0
- package/templates/components/orionplace/blog/BlogComments.README.md +98 -0
- package/templates/components/orionplace/blog/BlogComments.module.css +151 -0
- package/templates/components/orionplace/blog/BlogComments.tsx +590 -0
- package/templates/components/orionplace/blog/BlogPostCard.README.md +51 -0
- package/templates/components/orionplace/blog/BlogPostCard.module.css +167 -0
- package/templates/components/orionplace/blog/BlogPostCard.tsx +177 -0
- package/templates/components/orionplace/blog/BlogPostGroup.README.md +49 -0
- package/templates/components/orionplace/blog/BlogPostGroup.module.css +37 -0
- package/templates/components/orionplace/blog/BlogPostGroup.tsx +129 -0
- package/templates/components/orionplace/blog/StorefrontJournal.README.md +105 -0
- package/templates/components/orionplace/blog/StorefrontJournal.module.css +387 -0
- package/templates/components/orionplace/blog/StorefrontJournal.tsx +548 -0
- package/templates/components/orionplace/branding/BrandLogos.README.md +29 -0
- package/templates/components/orionplace/branding/BrandLogos.module.css +7 -0
- package/templates/components/orionplace/branding/BrandLogos.tsx +30 -0
- package/templates/components/orionplace/cart/CartCheckoutDetails.README.md +92 -0
- package/templates/components/orionplace/cart/CartCheckoutDetails.module.css +159 -0
- package/templates/components/orionplace/cart/CartCheckoutDetails.tsx +370 -0
- package/templates/components/orionplace/cart/CartDeliverySelector.README.md +166 -0
- package/templates/components/orionplace/cart/CartDeliverySelector.module.css +105 -0
- package/templates/components/orionplace/cart/CartDeliverySelector.tsx +679 -0
- package/templates/components/orionplace/cart/CartItemOptions.README.md +172 -0
- package/templates/components/orionplace/cart/CartItemOptions.module.css +113 -0
- package/templates/components/orionplace/cart/CartItemOptions.tsx +503 -0
- package/templates/components/orionplace/cart/CartLineItem.README.md +138 -0
- package/templates/components/orionplace/cart/CartLineItem.module.css +57 -0
- package/templates/components/orionplace/cart/CartLineItem.tsx +263 -0
- package/templates/components/orionplace/cart/CartPreview.README.md +99 -0
- package/templates/components/orionplace/cart/CartPreview.module.css +225 -0
- package/templates/components/orionplace/cart/CartPreview.tsx +188 -0
- package/templates/components/orionplace/cart/DeliveryMap.README.md +65 -0
- package/templates/components/orionplace/cart/DeliveryMap.module.css +32 -0
- package/templates/components/orionplace/cart/DeliveryMap.tsx +131 -0
- package/templates/components/orionplace/cart/StorefrontCart.README.md +281 -0
- package/templates/components/orionplace/cart/StorefrontCart.module.css +460 -0
- package/templates/components/orionplace/cart/StorefrontCart.tsx +937 -0
- package/templates/components/orionplace/catalog/CatalogHeader.README.md +136 -0
- package/templates/components/orionplace/catalog/CatalogHeader.module.css +387 -0
- package/templates/components/orionplace/catalog/CatalogHeader.tsx +644 -0
- package/templates/components/orionplace/catalog/CatalogRepresentative.README.md +68 -0
- package/templates/components/orionplace/catalog/CatalogRepresentative.tsx +51 -0
- package/templates/components/orionplace/catalog/StorefrontCatalog.README.md +120 -0
- package/templates/components/orionplace/catalog/StorefrontCatalog.module.css +179 -0
- package/templates/components/orionplace/catalog/StorefrontCatalog.tsx +304 -0
- package/templates/components/orionplace/categories/CategoryGroup.README.md +68 -0
- package/templates/components/orionplace/categories/CategoryGroup.module.css +110 -0
- package/templates/components/orionplace/categories/CategoryGroup.tsx +123 -0
- package/templates/components/orionplace/categories/StorefrontCategory.README.md +155 -0
- package/templates/components/orionplace/categories/StorefrontCategory.module.css +148 -0
- package/templates/components/orionplace/categories/StorefrontCategory.tsx +225 -0
- package/templates/components/orionplace/contact/AboutPage.README.md +40 -0
- package/templates/components/orionplace/contact/AboutPage.module.css +216 -0
- package/templates/components/orionplace/contact/AboutPage.tsx +191 -0
- package/templates/components/orionplace/contact/ContactForm.README.md +93 -0
- package/templates/components/orionplace/contact/ContactForm.module.css +264 -0
- package/templates/components/orionplace/contact/ContactForm.tsx +382 -0
- package/templates/components/orionplace/contact/EmailUnsubscribe.README.md +67 -0
- package/templates/components/orionplace/contact/EmailUnsubscribe.module.css +94 -0
- package/templates/components/orionplace/contact/EmailUnsubscribe.tsx +130 -0
- package/templates/components/orionplace/contact/StorefrontContact.README.md +73 -0
- package/templates/components/orionplace/contact/StorefrontContact.module.css +101 -0
- package/templates/components/orionplace/contact/StorefrontContact.tsx +62 -0
- package/templates/components/orionplace/currencies/MainCurrencySwitcher.README.md +37 -0
- package/templates/components/orionplace/currencies/MainCurrencySwitcher.tsx +68 -0
- package/templates/components/orionplace/events/EventEnrollmentDialog.README.md +108 -0
- package/templates/components/orionplace/events/EventEnrollmentDialog.module.css +110 -0
- package/templates/components/orionplace/events/EventEnrollmentDialog.tsx +315 -0
- package/templates/components/orionplace/events/EventsBlock.README.md +58 -0
- package/templates/components/orionplace/events/EventsBlock.module.css +101 -0
- package/templates/components/orionplace/events/EventsBlock.tsx +109 -0
- package/templates/components/orionplace/locale/MainLanguageSwitcher.README.md +46 -0
- package/templates/components/orionplace/locale/MainLanguageSwitcher.module.css +196 -0
- package/templates/components/orionplace/locale/MainLanguageSwitcher.tsx +387 -0
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.README.md +83 -0
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.module.css +271 -0
- package/templates/components/orionplace/manufacturers/ManufacturerIndex.tsx +218 -0
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.README.md +122 -0
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.module.css +92 -0
- package/templates/components/orionplace/manufacturers/StorefrontManufacturers.tsx +455 -0
- package/templates/components/orionplace/orders/OrderDetails.README.md +116 -0
- package/templates/components/orionplace/orders/OrderDetails.module.css +730 -0
- package/templates/components/orionplace/orders/OrderDetails.tsx +693 -0
- package/templates/components/orionplace/orders/OrderPaymentForm.README.md +92 -0
- package/templates/components/orionplace/orders/OrderPaymentForm.module.css +105 -0
- package/templates/components/orionplace/orders/OrderPaymentForm.tsx +90 -0
- package/templates/components/orionplace/orders/StorefrontOrders.README.md +131 -0
- package/templates/components/orionplace/orders/StorefrontOrders.module.css +633 -0
- package/templates/components/orionplace/orders/StorefrontOrders.tsx +922 -0
- package/templates/components/orionplace/payments/PaymentPanel.README.md +114 -0
- package/templates/components/orionplace/payments/PaymentPanel.module.css +134 -0
- package/templates/components/orionplace/payments/PaymentPanel.tsx +76 -0
- package/templates/components/orionplace/products/HoverImageViewer.README.md +62 -0
- package/templates/components/orionplace/products/HoverImageViewer.module.css +88 -0
- package/templates/components/orionplace/products/HoverImageViewer.tsx +179 -0
- package/templates/components/orionplace/products/ProductCard.README.md +152 -0
- package/templates/components/orionplace/products/ProductCard.module.css +333 -0
- package/templates/components/orionplace/products/ProductCard.tsx +716 -0
- package/templates/components/orionplace/products/ProductCardActions.README.md +84 -0
- package/templates/components/orionplace/products/ProductCardActions.module.css +146 -0
- package/templates/components/orionplace/products/ProductCardActions.tsx +311 -0
- package/templates/components/orionplace/products/ProductCardBadges.README.md +44 -0
- package/templates/components/orionplace/products/ProductCardBadges.module.css +15 -0
- package/templates/components/orionplace/products/ProductCardBadges.tsx +78 -0
- package/templates/components/orionplace/products/ProductCardDescription.README.md +33 -0
- package/templates/components/orionplace/products/ProductCardDescription.module.css +6 -0
- package/templates/components/orionplace/products/ProductCardDescription.tsx +43 -0
- package/templates/components/orionplace/products/ProductCardFavorite.README.md +52 -0
- package/templates/components/orionplace/products/ProductCardFavorite.module.css +64 -0
- package/templates/components/orionplace/products/ProductCardFavorite.tsx +90 -0
- package/templates/components/orionplace/products/ProductCardPrice.README.md +33 -0
- package/templates/components/orionplace/products/ProductCardPrice.module.css +22 -0
- package/templates/components/orionplace/products/ProductCardPrice.tsx +50 -0
- package/templates/components/orionplace/products/ProductCardRating.README.md +33 -0
- package/templates/components/orionplace/products/ProductCardRating.module.css +7 -0
- package/templates/components/orionplace/products/ProductCardRating.tsx +56 -0
- package/templates/components/orionplace/products/ProductCardSeller.README.md +36 -0
- package/templates/components/orionplace/products/ProductCardSeller.module.css +31 -0
- package/templates/components/orionplace/products/ProductCardSeller.tsx +61 -0
- package/templates/components/orionplace/products/ProductCardStockNotice.README.md +36 -0
- package/templates/components/orionplace/products/ProductCardStockNotice.module.css +8 -0
- package/templates/components/orionplace/products/ProductCardStockNotice.tsx +35 -0
- package/templates/components/orionplace/products/ProductCardTitle.README.md +30 -0
- package/templates/components/orionplace/products/ProductCardTitle.module.css +13 -0
- package/templates/components/orionplace/products/ProductCardTitle.tsx +31 -0
- package/templates/components/orionplace/products/ProductCardVariants.README.md +77 -0
- package/templates/components/orionplace/products/ProductCardVariants.module.css +97 -0
- package/templates/components/orionplace/products/ProductCardVariants.tsx +350 -0
- package/templates/components/orionplace/products/ProductGroup.README.md +89 -0
- package/templates/components/orionplace/products/ProductGroup.module.css +64 -0
- package/templates/components/orionplace/products/ProductGroup.tsx +183 -0
- package/templates/components/orionplace/products/ProductPreorderDialog.README.md +89 -0
- package/templates/components/orionplace/products/ProductPreorderDialog.module.css +320 -0
- package/templates/components/orionplace/products/ProductPreorderDialog.tsx +346 -0
- package/templates/components/orionplace/products/ProductReviewForm.README.md +72 -0
- package/templates/components/orionplace/products/ProductReviewForm.module.css +217 -0
- package/templates/components/orionplace/products/ProductReviewForm.tsx +288 -0
- package/templates/components/orionplace/products/ProductReviewGallery.README.md +61 -0
- package/templates/components/orionplace/products/ProductReviewGallery.module.css +108 -0
- package/templates/components/orionplace/products/ProductReviewGallery.tsx +110 -0
- package/templates/components/orionplace/products/ProductReviewImageViewer.README.md +49 -0
- package/templates/components/orionplace/products/ProductReviewImageViewer.module.css +50 -0
- package/templates/components/orionplace/products/ProductReviewImageViewer.tsx +260 -0
- package/templates/components/orionplace/products/ProductReviews.README.md +137 -0
- package/templates/components/orionplace/products/ProductReviews.module.css +602 -0
- package/templates/components/orionplace/products/ProductReviews.tsx +944 -0
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.README.md +67 -0
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.module.css +79 -0
- package/templates/components/orionplace/products/ProductSecondaryVariantModal.tsx +324 -0
- package/templates/components/orionplace/products/ProductSpecificationsDialog.README.md +52 -0
- package/templates/components/orionplace/products/ProductSpecificationsDialog.module.css +138 -0
- package/templates/components/orionplace/products/ProductSpecificationsDialog.tsx +117 -0
- package/templates/components/orionplace/products/StorefrontProduct.README.md +200 -0
- package/templates/components/orionplace/products/StorefrontProduct.module.css +767 -0
- package/templates/components/orionplace/products/StorefrontProduct.tsx +1339 -0
- package/templates/components/orionplace/products/StorefrontWishlist.README.md +162 -0
- package/templates/components/orionplace/products/StorefrontWishlist.module.css +71 -0
- package/templates/components/orionplace/products/StorefrontWishlist.tsx +402 -0
- package/templates/components/orionplace/promo/PromoProducts.README.md +133 -0
- package/templates/components/orionplace/promo/PromoProducts.module.css +68 -0
- package/templates/components/orionplace/promo/PromoProducts.tsx +345 -0
- package/templates/components/orionplace/search/MainSearch.README.md +73 -0
- package/templates/components/orionplace/search/MainSearch.module.css +202 -0
- package/templates/components/orionplace/search/MainSearch.tsx +217 -0
- package/templates/components/orionplace/search/ProductSearchResults.README.md +166 -0
- package/templates/components/orionplace/search/ProductSearchResults.module.css +358 -0
- package/templates/components/orionplace/search/ProductSearchResults.tsx +308 -0
- package/templates/components/orionplace/search/SearchFilters.README.md +109 -0
- package/templates/components/orionplace/search/SearchFilters.module.css +274 -0
- package/templates/components/orionplace/search/SearchFilters.tsx +439 -0
- package/templates/components/orionplace/sellers/SellerFilters.README.md +66 -0
- package/templates/components/orionplace/sellers/SellerFilters.module.css +232 -0
- package/templates/components/orionplace/sellers/SellerFilters.tsx +201 -0
- package/templates/components/orionplace/sellers/SellerPhotoGallery.README.md +72 -0
- package/templates/components/orionplace/sellers/SellerPhotoGallery.module.css +314 -0
- package/templates/components/orionplace/sellers/SellerPhotoGallery.tsx +335 -0
- package/templates/components/orionplace/sellers/SellerSummary.README.md +62 -0
- package/templates/components/orionplace/sellers/SellerSummary.module.css +182 -0
- package/templates/components/orionplace/sellers/SellerSummary.tsx +107 -0
- package/templates/components/orionplace/sellers/StorefrontSellers.README.md +120 -0
- package/templates/components/orionplace/sellers/StorefrontSellers.module.css +147 -0
- package/templates/components/orionplace/sellers/StorefrontSellers.tsx +360 -0
- package/templates/components/orionplace/shared/OrionplaceAvatar.README.md +35 -0
- package/templates/components/orionplace/shared/OrionplaceAvatar.module.css +35 -0
- package/templates/components/orionplace/shared/OrionplaceAvatar.tsx +61 -0
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.README.md +33 -0
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.module.css +81 -0
- package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.tsx +91 -0
- package/templates/components/orionplace/shared/OrionplaceEmptyState.README.md +37 -0
- package/templates/components/orionplace/shared/OrionplaceEmptyState.module.css +126 -0
- package/templates/components/orionplace/shared/OrionplaceEmptyState.tsx +78 -0
- package/templates/components/orionplace/shared/OrionplaceImage.README.md +45 -0
- package/templates/components/orionplace/shared/OrionplaceImage.module.css +22 -0
- package/templates/components/orionplace/shared/OrionplaceImage.tsx +96 -0
- package/templates/components/orionplace/shared/OrionplaceInfoHint.README.md +31 -0
- package/templates/components/orionplace/shared/OrionplaceInfoHint.module.css +59 -0
- package/templates/components/orionplace/shared/OrionplaceInfoHint.tsx +126 -0
- package/templates/components/orionplace/shared/OrionplacePasswordInput.README.md +39 -0
- package/templates/components/orionplace/shared/OrionplacePasswordInput.module.css +79 -0
- package/templates/components/orionplace/shared/OrionplacePasswordInput.tsx +103 -0
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.README.md +97 -0
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.module.css +246 -0
- package/templates/components/orionplace/shared/OrionplaceSearchSelect.tsx +367 -0
- package/templates/components/orionplace/shared/OrionplaceSelect.README.md +69 -0
- package/templates/components/orionplace/shared/OrionplaceSelect.module.css +233 -0
- package/templates/components/orionplace/shared/OrionplaceSelect.tsx +439 -0
- package/templates/components/orionplace/shared/StorefrontErrorPage.README.md +52 -0
- package/templates/components/orionplace/shared/StorefrontErrorPage.module.css +141 -0
- package/templates/components/orionplace/shared/StorefrontErrorPage.tsx +103 -0
- package/templates/components/orionplace/shared/StorefrontPagination.README.md +39 -0
- package/templates/components/orionplace/shared/StorefrontPagination.module.css +69 -0
- package/templates/components/orionplace/shared/StorefrontPagination.tsx +102 -0
- package/templates/components/orionplace/shared/dialogs.css +36 -0
- package/templates/components/orionplace/shared/emptyStateArt.ts +231 -0
- package/templates/components/orionplace/shared/features.module.css +162 -0
- package/templates/components/orionplace/social/SocialLinks.README.md +16 -0
- package/templates/components/orionplace/social/SocialLinks.module.css +36 -0
- package/templates/components/orionplace/social/SocialLinks.tsx +59 -0
- package/templates/components/orionplace/storefront/StorefrontAccount.README.md +59 -0
- package/templates/components/orionplace/storefront/StorefrontAccount.module.css +159 -0
- package/templates/components/orionplace/storefront/StorefrontAccount.tsx +303 -0
- package/templates/components/orionplace/storefront/StorefrontCartButton.README.md +47 -0
- package/templates/components/orionplace/storefront/StorefrontCartButton.module.css +88 -0
- package/templates/components/orionplace/storefront/StorefrontCartButton.tsx +54 -0
- package/templates/components/orionplace/storefront/StorefrontFooter.README.md +55 -0
- package/templates/components/orionplace/storefront/StorefrontFooter.module.css +118 -0
- package/templates/components/orionplace/storefront/StorefrontFooter.tsx +165 -0
- package/templates/components/orionplace/storefront/StorefrontHeader.README.md +150 -0
- package/templates/components/orionplace/storefront/StorefrontHeader.module.css +186 -0
- package/templates/components/orionplace/storefront/StorefrontHeader.tsx +389 -0
- package/templates/components/orionplace/storefront/StorefrontHome.README.md +138 -0
- package/templates/components/orionplace/storefront/StorefrontHome.module.css +116 -0
- package/templates/components/orionplace/storefront/StorefrontHome.tsx +282 -0
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.README.md +51 -0
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.module.css +95 -0
- package/templates/components/orionplace/storefront/StorefrontWishlistButton.tsx +80 -0
- package/templates/components/orionplace/stores/StorefrontStores.README.md +87 -0
- package/templates/components/orionplace/stores/StorefrontStores.module.css +218 -0
- package/templates/components/orionplace/stores/StorefrontStores.tsx +396 -0
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.README.md +183 -0
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.module.css +347 -0
- package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.tsx +884 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariff.README.md +111 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariff.module.css +311 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariff.tsx +474 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.README.md +102 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.module.css +219 -0
- package/templates/components/orionplace/subscriptions/StorefrontTariffs.tsx +350 -0
- package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.README.md +67 -0
- package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.tsx +175 -0
- package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.README.md +95 -0
- package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.tsx +634 -0
- package/templates/components/orionplace/subscriptions/SubscriptionDialog.module.css +453 -0
- package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.README.md +75 -0
- package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.tsx +384 -0
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.README.md +116 -0
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.module.css +168 -0
- package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.tsx +236 -0
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.README.md +123 -0
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.module.css +57 -0
- package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.tsx +101 -0
- package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.README.md +109 -0
- package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.tsx +253 -0
- package/templates/components/orionplace/support/StorefrontSupport.README.md +157 -0
- package/templates/components/orionplace/support/StorefrontSupport.tsx +1040 -0
- package/templates/components/orionplace/support/Support.module.css +1133 -0
- package/templates/components/orionplace/support/TicketConversation.README.md +105 -0
- package/templates/components/orionplace/support/TicketConversation.tsx +502 -0
- package/templates/components/orionplace/support/TicketImage.README.md +52 -0
- package/templates/components/orionplace/support/TicketImage.tsx +254 -0
- package/templates/components/orionplace/support/TicketItemCard.README.md +66 -0
- package/templates/components/orionplace/support/TicketItemCard.tsx +140 -0
- package/templates/components/orionplace/support/TicketMessageForm.README.md +88 -0
- package/templates/components/orionplace/support/TicketMessageForm.tsx +261 -0
- package/templates/components/orionplace/support/TicketSubscriptionCard.README.md +53 -0
- package/templates/components/orionplace/support/TicketSubscriptionCard.tsx +118 -0
- package/templates/components/orionplace/tariffs/TariffCard.README.md +108 -0
- package/templates/components/orionplace/tariffs/TariffCard.module.css +86 -0
- package/templates/components/orionplace/tariffs/TariffCard.tsx +218 -0
- package/templates/components/orionplace/tariffs/TariffCardDescription.README.md +40 -0
- package/templates/components/orionplace/tariffs/TariffCardDescription.module.css +72 -0
- package/templates/components/orionplace/tariffs/TariffCardDescription.tsx +58 -0
- package/templates/components/orionplace/tariffs/TariffCardFeatures.README.md +58 -0
- package/templates/components/orionplace/tariffs/TariffCardFeatures.module.css +60 -0
- package/templates/components/orionplace/tariffs/TariffCardFeatures.tsx +140 -0
- package/templates/components/orionplace/tariffs/TariffCardImage.README.md +36 -0
- package/templates/components/orionplace/tariffs/TariffCardImage.module.css +8 -0
- package/templates/components/orionplace/tariffs/TariffCardImage.tsx +32 -0
- package/templates/components/orionplace/tariffs/TariffCardPrices.README.md +74 -0
- package/templates/components/orionplace/tariffs/TariffCardPrices.module.css +142 -0
- package/templates/components/orionplace/tariffs/TariffCardPrices.tsx +181 -0
- package/templates/components/orionplace/tariffs/TariffCardTitle.README.md +32 -0
- package/templates/components/orionplace/tariffs/TariffCardTitle.module.css +9 -0
- package/templates/components/orionplace/tariffs/TariffCardTitle.tsx +29 -0
- package/templates/components/orionplace/tariffs/TariffCards.README.md +88 -0
- package/templates/components/orionplace/tariffs/TariffCards.module.css +24 -0
- package/templates/components/orionplace/tariffs/TariffCards.tsx +44 -0
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.README.md +92 -0
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.module.css +214 -0
- package/templates/components/orionplace/tariffs/TariffSubscriptionModal.tsx +299 -0
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.README.md +30 -0
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.module.css +8 -0
- package/templates/components/orionplace/theme/OrionplaceThemeProvider.tsx +32 -0
- package/templates/components/orionplace/units/UnitSwitcher.README.md +35 -0
- package/templates/components/orionplace/units/UnitSwitcher.tsx +58 -0
- package/templates/components/orionplace/wallet/StorefrontWallet.README.md +154 -0
- package/templates/components/orionplace/wallet/StorefrontWallet.module.css +507 -0
- package/templates/components/orionplace/wallet/StorefrontWallet.tsx +915 -0
- package/templates/components/orionplace/wallet/WalletBalance.README.md +46 -0
- package/templates/components/orionplace/wallet/WalletBalance.module.css +46 -0
- package/templates/components/orionplace/wallet/WalletBalance.tsx +51 -0
- package/templates/components/orionplace/wallet/WalletTopUpForm.README.md +54 -0
- package/templates/components/orionplace/wallet/WalletTopUpForm.module.css +152 -0
- package/templates/components/orionplace/wallet/WalletTopUpForm.tsx +181 -0
- package/templates/hooks/useAccountActivity.ts +251 -0
- package/templates/hooks/useAccountAddresses.ts +81 -0
- package/templates/hooks/useAccountPromocodes.ts +91 -0
- package/templates/hooks/useOrionplaceActionMenu.ts +118 -0
- package/templates/hooks/useOrionplaceAddressForm.ts +262 -0
- package/templates/hooks/useOrionplaceApi.ts +98 -0
- package/templates/hooks/useOrionplaceAppLoad.ts +38 -6
- package/templates/hooks/useOrionplaceBlogReading.ts +351 -0
- package/templates/hooks/useOrionplaceDialog.ts +85 -0
- package/templates/hooks/useOrionplaceHomeProducts.ts +97 -0
- package/templates/hooks/useOrionplaceMap.tsx +230 -0
- package/templates/hooks/useOrionplaceMediaFormat.ts +33 -0
- package/templates/hooks/useOrionplaceProduct.ts +28 -0
- package/templates/hooks/useOrionplaceProfile.ts +347 -0
- package/templates/hooks/useOrionplaceReviews.ts +352 -0
- package/templates/hooks/useOrionplaceStableHeight.ts +65 -0
- package/templates/hooks/useOrionplaceStorefront.tsx +575 -0
- package/templates/hooks/useOrionplaceTariffPurchase.ts +152 -0
- package/templates/interfaces/orionplace/accounts/IContact.ts +21 -0
- package/templates/interfaces/orionplace/accounts/IEmailNotificationLocale.ts +17 -0
- package/templates/interfaces/orionplace/accounts/IEmailVerification.ts +59 -0
- package/templates/interfaces/orionplace/accounts/IProfileActions.ts +38 -0
- package/templates/interfaces/orionplace/accounts/IProfileData.ts +123 -0
- package/templates/interfaces/orionplace/accounts/IProfileMedia.ts +17 -0
- package/templates/interfaces/orionplace/accounts/IStorefrontProfile.ts +54 -0
- package/templates/interfaces/orionplace/address/IAddressCitySuggestion.ts +19 -0
- package/templates/interfaces/orionplace/address/IAddressEditor.ts +9 -0
- package/templates/interfaces/orionplace/address/IAddressLocationSuggestion.ts +22 -0
- package/templates/interfaces/orionplace/address/IAddressRegionSearch.ts +30 -0
- package/templates/interfaces/orionplace/address/IAddressSuggestion.ts +20 -0
- package/templates/interfaces/orionplace/address/IUserAddress.ts +87 -0
- package/templates/interfaces/orionplace/appBase/IAppLoad.ts +4 -3
- package/templates/interfaces/orionplace/appBase/IAppLoadCommon.ts +22 -31
- package/templates/interfaces/orionplace/appBase/IApploadUserProfile.ts +1 -1
- package/templates/interfaces/orionplace/appBase/IForm.ts +1 -1
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonBanner.ts +7 -7
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonPath.ts +2 -2
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonSEO.ts +20 -7
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonTariff.ts +2 -2
- package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonVariables.ts +1 -0
- package/templates/interfaces/orionplace/blog/IBlogApi.ts +247 -0
- package/templates/interfaces/orionplace/blog/IBlogPostPreview.ts +30 -0
- package/templates/interfaces/orionplace/cart/ICartActions.ts +67 -0
- package/templates/interfaces/orionplace/cart/ICartData.ts +382 -0
- package/templates/interfaces/orionplace/cart/ICartDeliveryActions.ts +68 -0
- package/templates/interfaces/orionplace/cart/ICartModal.ts +22 -0
- package/templates/interfaces/orionplace/cart/IDeliveryMap.ts +29 -0
- package/templates/interfaces/orionplace/catalog/ICatalogDirectory.ts +75 -0
- package/templates/interfaces/orionplace/category/ICategory.ts +2 -1
- package/templates/interfaces/orionplace/domains/IDomain.ts +2 -2
- package/templates/interfaces/orionplace/forms/ICustomerSubfilter.ts +19 -0
- package/templates/interfaces/orionplace/index.ts +64 -30
- package/templates/interfaces/orionplace/marketing/IPromoActions.ts +51 -0
- package/templates/interfaces/orionplace/orders/IOrderActions.ts +99 -0
- package/templates/interfaces/orionplace/orders/IOrderHistory.ts +259 -0
- package/templates/interfaces/orionplace/orders/IProductPreorder.ts +31 -0
- package/templates/interfaces/orionplace/payments/IInvoice.ts +147 -0
- package/templates/interfaces/orionplace/products/IProduct.ts +178 -151
- package/templates/interfaces/orionplace/products/IProductFeedbackApi.ts +218 -0
- package/templates/interfaces/orionplace/products/IProductSearchApi.ts +146 -0
- package/templates/interfaces/orionplace/products/IProductSearchFacets.ts +35 -0
- package/templates/interfaces/orionplace/products/IProductSecondaryVariantRequest.ts +15 -0
- package/templates/interfaces/orionplace/products/IProductSpecification.ts +14 -0
- package/templates/interfaces/orionplace/products/IWishlist.ts +22 -0
- package/templates/interfaces/orionplace/sellers/ISellerDirectory.ts +70 -0
- package/templates/interfaces/orionplace/shared/IBreadcrumb.ts +10 -0
- package/templates/interfaces/orionplace/shared/IStorefrontControls.ts +6 -0
- package/templates/interfaces/orionplace/state.ts +1 -1
- package/templates/interfaces/orionplace/stores/IStoreDirectory.ts +63 -0
- package/templates/interfaces/orionplace/subscribeTariff/ISubscribeTariff.ts +41 -31
- package/templates/interfaces/orionplace/subscribeTariff/ITariffSelection.ts +11 -0
- package/templates/interfaces/orionplace/subscribes/ISubscribe.ts +1 -1
- package/templates/interfaces/orionplace/subscribes/ISubscriptionApi.ts +125 -0
- package/templates/interfaces/orionplace/tickets/ICustomerTicketApi.ts +223 -0
- package/templates/interfaces/orionplace/transport.ts +7 -3
- package/templates/lib/orionplace/accountLabels.ts +22 -0
- package/templates/lib/orionplace/activityLabels.ts +65 -0
- package/templates/lib/orionplace/activityPresentation.ts +9 -0
- package/templates/lib/orionplace/addressChanges.ts +26 -0
- package/templates/lib/orionplace/addressPresentation.ts +58 -0
- package/templates/lib/orionplace/api.ts +326 -0
- package/templates/lib/orionplace/appLoadClient.ts +63 -21
- package/templates/lib/orionplace/appLoadResult.ts +75 -21
- package/templates/lib/orionplace/appLoadServer.ts +66 -21
- package/templates/lib/orionplace/blogArticle.ts +97 -0
- package/templates/lib/orionplace/blogArticleHtml.ts +370 -0
- package/templates/lib/orionplace/blogComments.ts +102 -0
- package/templates/lib/orionplace/blogJournal.ts +115 -0
- package/templates/lib/orionplace/blogLabels.ts +108 -0
- package/templates/lib/orionplace/blogPresentation.ts +67 -0
- package/templates/lib/orionplace/browseLabels.ts +98 -0
- package/templates/lib/orionplace/cartAddress.ts +86 -0
- package/templates/lib/orionplace/cartController.ts +104 -0
- package/templates/lib/orionplace/cartLabels.ts +261 -0
- package/templates/lib/orionplace/cartOptions.ts +115 -0
- package/templates/lib/orionplace/cartPreview.ts +120 -0
- package/templates/lib/orionplace/cartPromo.ts +150 -0
- package/templates/lib/orionplace/cartShipment.ts +61 -0
- package/templates/lib/orionplace/cartSnapshot.ts +21 -0
- package/templates/lib/orionplace/catalog.ts +150 -0
- package/templates/lib/orionplace/categoryLabels.ts +21 -0
- package/templates/lib/orionplace/contact.ts +47 -0
- package/templates/lib/orionplace/contactLabels.ts +102 -0
- package/templates/lib/orionplace/currency.ts +128 -0
- package/templates/lib/orionplace/deliveryMap.ts +86 -0
- package/templates/lib/orionplace/directoryLabels.ts +133 -0
- package/templates/lib/orionplace/domain.ts +11 -6
- package/templates/lib/orionplace/errorPageLabels.ts +74 -0
- package/templates/lib/orionplace/eventEnrollment.ts +22 -0
- package/templates/lib/orionplace/featureData.ts +28 -0
- package/templates/lib/orionplace/featureLabels.ts +271 -0
- package/templates/lib/orionplace/featuredLabels.ts +28 -0
- package/templates/lib/orionplace/footerLabels.ts +35 -0
- package/templates/lib/orionplace/guestSession.ts +55 -0
- package/templates/lib/orionplace/headerLabels.ts +68 -0
- package/templates/lib/orionplace/homeContent.ts +193 -0
- package/templates/lib/orionplace/homeLabels.ts +52 -0
- package/templates/lib/orionplace/htmlText.ts +51 -0
- package/templates/lib/orionplace/manufacturerDirectory.ts +71 -0
- package/templates/lib/orionplace/manufacturerIndex.ts +92 -0
- package/templates/lib/orionplace/modalWindow.ts +109 -0
- package/templates/lib/orionplace/nativeApp.ts +365 -0
- package/templates/lib/orionplace/navigation.tsx +121 -0
- package/templates/lib/orionplace/notice.ts +22 -0
- package/templates/lib/orionplace/orderLabels.ts +311 -0
- package/templates/lib/orionplace/orderPresentation.ts +574 -0
- package/templates/lib/orionplace/pageMetadata.ts +247 -0
- package/templates/lib/orionplace/pageSeo.ts +274 -0
- package/templates/lib/orionplace/paginationScroll.ts +131 -0
- package/templates/lib/orionplace/phone.ts +22 -0
- package/templates/lib/orionplace/presentation.ts +84 -0
- package/templates/lib/orionplace/productActionLabels.ts +60 -0
- package/templates/lib/orionplace/productAvailability.ts +30 -0
- package/templates/lib/orionplace/productGallery.ts +64 -0
- package/templates/lib/orionplace/productLabels.ts +82 -0
- package/templates/lib/orionplace/productPage.ts +308 -0
- package/templates/lib/orionplace/productPhotos.ts +67 -0
- package/templates/lib/orionplace/productSearch.ts +232 -0
- package/templates/lib/orionplace/productSeller.ts +56 -0
- package/templates/lib/orionplace/profile.ts +157 -0
- package/templates/lib/orionplace/profileLabels.ts +151 -0
- package/templates/lib/orionplace/promoLabels.ts +75 -0
- package/templates/lib/orionplace/promoPresentation.ts +381 -0
- package/templates/lib/orionplace/reviewLabels.ts +172 -0
- package/templates/lib/orionplace/reviewPresentation.ts +64 -0
- package/templates/lib/orionplace/reviewScope.ts +38 -0
- package/templates/lib/orionplace/searchFilters.ts +99 -0
- package/templates/lib/orionplace/searchHistory.ts +144 -0
- package/templates/lib/orionplace/sellerDirectory.ts +120 -0
- package/templates/lib/orionplace/seo.ts +52 -0
- package/templates/lib/orionplace/serverApi.ts +158 -0
- package/templates/lib/orionplace/serverLocale.ts +29 -0
- package/templates/lib/orionplace/serverMetadata.ts +86 -0
- package/templates/lib/orionplace/serverRecords.ts +25 -0
- package/templates/lib/orionplace/serverRoute.tsx +51 -0
- package/templates/lib/orionplace/sessionLabels.ts +27 -0
- package/templates/lib/orionplace/signInReturn.ts +89 -0
- package/templates/lib/orionplace/storeDirectory.ts +47 -0
- package/templates/lib/orionplace/storefrontRecords.ts +29 -0
- package/templates/lib/orionplace/subscriptionChanges.ts +120 -0
- package/templates/lib/orionplace/subscriptionLabels.ts +67 -0
- package/templates/lib/orionplace/subscriptionManageLabels.ts +306 -0
- package/templates/lib/orionplace/subscriptionPlans.ts +122 -0
- package/templates/lib/orionplace/subscriptionRemote.ts +85 -0
- package/templates/lib/orionplace/subscriptionUsage.ts +58 -0
- package/templates/lib/orionplace/tariffLabels.ts +123 -0
- package/templates/lib/orionplace/tariffPage.ts +54 -0
- package/templates/lib/orionplace/tariffVariables.ts +136 -0
- package/templates/lib/orionplace/tariffs.ts +192 -0
- package/templates/lib/orionplace/ticketItems.ts +75 -0
- package/templates/lib/orionplace/ticketLabels.ts +335 -0
- package/templates/lib/orionplace/ticketLocation.ts +79 -0
- package/templates/lib/orionplace/ticketRequests.ts +70 -0
- package/templates/lib/orionplace/walletTransaction.ts +105 -0
- package/templates/orionplace/COMPONENT-DOWNLOAD.md +66 -0
- package/templates/orionplace/COMPONENTS.md +35 -0
- package/templates/providers/OrionplaceProvider.tsx +164 -12
- package/templates/proxy.ts +8 -3
- package/templates/stores/orionplace.ts +212 -49
- package/templates/stores/orionplaceBrowse.ts +89 -0
- package/templates/stores/orionplaceCatalog.ts +144 -0
- package/templates/stores/orionplaceProducts.ts +389 -0
- package/templates/stores/orionplaceScope.ts +104 -0
- package/templates/stores/orionplaceSelections.ts +130 -0
- package/templates/themes/orionplace.ts +106 -0
package/README.md
CHANGED
|
@@ -1,12 +1,60 @@
|
|
|
1
1
|
# orionplace-react
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
**A complete Next.js 16 storefront for your Orionplace marketplace, set up with one command.**
|
|
4
|
+
|
|
5
|
+
`orionplace-react` creates a server-rendered shop connected to your personal
|
|
6
|
+
marketplace API: catalog and search, product pages, cart and checkout, customer
|
|
7
|
+
account, journal and support, in English and Russian. The package includes a
|
|
8
|
+
setup CLI and the full storefront source, so every page and component in your
|
|
9
|
+
project is yours to change.
|
|
10
|
+
|
|
11
|
+
- **Setup CLI:** `init`, `set backend`, `add frontend`, `set mimic` and `update`.
|
|
12
|
+
- **API gateway:** the browser calls `/api/...` on your own domain; the server
|
|
13
|
+
forwards it to your marketplace backend with cookies bound to the storefront.
|
|
14
|
+
- **Typed store:** one Application Load request fills it before the first render.
|
|
15
|
+
- **124 storefront components**, each with an English and Russian README
|
|
16
|
+
([list](#components)).
|
|
17
|
+
- **Several storefront domains** on one backend, each with its own mapping.
|
|
18
|
+
- **Android app** from the same project with Capacitor 8.
|
|
19
|
+
|
|
20
|
+
**Contents:** [Quick start](#quick-start-from-zero) ·
|
|
21
|
+
[Existing project](#existing-nextjs-16-project) · [Components](#components) ·
|
|
22
|
+
[Commands](#commands) · [Android app](#android-app) ·
|
|
23
|
+
[Update](#update-an-existing-project)
|
|
7
24
|
|
|
8
25
|
Requires Node.js 20.9+ and a Node server deployment. Static export and edge-only
|
|
9
|
-
hosting are not supported by this filesystem-based integration
|
|
26
|
+
hosting are not supported by this filesystem-based integration; only the Android
|
|
27
|
+
app build below is a static export.
|
|
28
|
+
|
|
29
|
+
## Android app
|
|
30
|
+
|
|
31
|
+
The same project builds as an Android app with Capacitor 8. Set
|
|
32
|
+
`ORIONPLACE_APP_ORIGIN` to your deployed public storefront (HTTPS) for that
|
|
33
|
+
build: `androidAppConfig` in `next.config.ts` (`orionplace/runtime/app.mjs`)
|
|
34
|
+
then makes `next build` a static export of one app page to `out/`. The page runs
|
|
35
|
+
the same route table as the website's server pages
|
|
36
|
+
(`app/_storefront/storefrontRoutes.tsx`) in the app, and every API request goes
|
|
37
|
+
to `<origin>/api/...` through Capacitor's native HTTP with the storefront
|
|
38
|
+
Origin (`lib/orionplace/nativeApp.ts`). With the `@capacitor/app` plugin
|
|
39
|
+
installed, the Android back button closes an open dialog, opens the previous
|
|
40
|
+
page, or leaves the app on the first page. With `@capacitor/filesystem` and
|
|
41
|
+
`@capacitor/share`, a purchased file is saved in the app and opened from the
|
|
42
|
+
Android share sheet. Without the variable the website
|
|
43
|
+
build is unchanged. Setup, build and release steps:
|
|
44
|
+
[Android app guide](https://orionmarket.place/en/sandbox/android-app?framework=react).
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
ORIONPLACE_APP_ORIGIN=https://shop.example.com npx next build
|
|
48
|
+
npx cap sync android
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Asset loading
|
|
52
|
+
|
|
53
|
+
The starter leaves route chunk selection to the current Next.js route and does
|
|
54
|
+
not add speculative preload links. Storefront image components emit intrinsic
|
|
55
|
+
dimensions or a stable aspect ratio to reserve layout space. Product cards
|
|
56
|
+
include the primary image in server HTML and add secondary images after hover or
|
|
57
|
+
keyboard focus.
|
|
10
58
|
|
|
11
59
|
## Quick start from zero
|
|
12
60
|
|
|
@@ -26,10 +74,11 @@ npx orionplace-react add frontend shop.example.com
|
|
|
26
74
|
npm run dev
|
|
27
75
|
```
|
|
28
76
|
|
|
29
|
-
The first command creates the Next.js configuration, App Router
|
|
30
|
-
integration README. The first frontend becomes the local
|
|
31
|
-
local URL printed by Next.js (normally
|
|
32
|
-
|
|
77
|
+
The first command creates the Next.js configuration, the complete App Router
|
|
78
|
+
storefront and its integration README. The first frontend becomes the local
|
|
79
|
+
MIMIC domain. Open the local URL printed by Next.js (normally
|
|
80
|
+
http://localhost:3000). The home page should show the configured catalog and
|
|
81
|
+
storefront content. If it shows the initialization error state, check the domain
|
|
33
82
|
mapping and backend response. The backend command accepts either a hostname or
|
|
34
83
|
its full HTTPS `/api` URL. The frontend command accepts a public hostname or its
|
|
35
84
|
root HTTPS URL.
|
|
@@ -55,6 +104,206 @@ No install or postinstall hook changes your application. Only explicitly running
|
|
|
55
104
|
the CLI writes files. Use `--cwd <directory>` to select a project and `--dry-run`
|
|
56
105
|
to inspect planned changes without writing them.
|
|
57
106
|
|
|
107
|
+
## Import aliases
|
|
108
|
+
|
|
109
|
+
Application imports use `@/`. In `tsconfig.json`, merge these entries into
|
|
110
|
+
`compilerOptions.paths` while keeping your other settings:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"@/*": ["./*"],
|
|
115
|
+
"@orionplace-runtime/*": ["./orionplace/runtime/*"]
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
For a `src/app/` project, use `"@/*": ["./src/*"]` instead. The gateway alias
|
|
120
|
+
still points to the project-root `orionplace/runtime/` directory. Setup writes
|
|
121
|
+
these mappings for new projects and updates unchanged generated configuration.
|
|
122
|
+
If you already own `tsconfig.json`, it is preserved; merge these aliases before
|
|
123
|
+
starting the application. Imports then work at any component directory depth.
|
|
124
|
+
|
|
125
|
+
<!-- components:start (generated by scripts/generate-package-readme-components.mjs) -->
|
|
126
|
+
## Components
|
|
127
|
+
|
|
128
|
+
The starter includes **124 storefront components**, copied into
|
|
129
|
+
`components/orionplace/` of your project. Each one has a README in English and Russian
|
|
130
|
+
next to its source that describes its inputs, data and actions.
|
|
131
|
+
|
|
132
|
+
### Storefront structure
|
|
133
|
+
|
|
134
|
+
Main pages and the shared storefront frame.
|
|
135
|
+
|
|
136
|
+
| Component | Name | What it does |
|
|
137
|
+
| --- | --- | --- |
|
|
138
|
+
| **Header** | `StorefrontHeader` | The storefront header and its search, catalog, manufacturer and journal links, locale, currency, account, wishlist and cart controls. |
|
|
139
|
+
| **Storefront logo** | `BrandLogos` | Displays one logo from store.init.logos. |
|
|
140
|
+
| **Product search** | `MainSearch` | A search input with suggestions in the storefront language. |
|
|
141
|
+
| **Language selector** | `MainLanguageSwitcher` | Selects the storefront language and its associated currency and measurement units. |
|
|
142
|
+
| **Currency selector** | `MainCurrencySwitcher` | Selects the current storefront currency from the available options. |
|
|
143
|
+
| **Storefront account** | `StorefrontAccount` | Guest sign-in button and signed-in account menu with profile and wallet actions. |
|
|
144
|
+
| **Wallet balance** | `WalletBalance` | Displays the wallet balance in the selected storefront currency. |
|
|
145
|
+
| **Sign-out page** | `StorefrontLogout` | Session sign-out, failure retry and return to the storefront. |
|
|
146
|
+
| **Wishlist button** | `StorefrontWishlistButton` | Displays the wishlist count and links to the wishlist page. |
|
|
147
|
+
| **Cart button** | `StorefrontCartButton` | Displays the cart count and emits a request to open the cart page. |
|
|
148
|
+
| **Cart preview** | `CartPreview` | A compact dropdown under the header's cart button with cart products, quantities and amounts in the selected currency. |
|
|
149
|
+
| **Catalog menu** | `CatalogHeader` | Category navigation with nested sections and representative product cards. |
|
|
150
|
+
| **Catalog representative** | `CatalogRepresentative` | A compact product card used in the catalog menu, with the same navigation, variant, wishlist and purchase actions. |
|
|
151
|
+
| **Storefront home** | `StorefrontHome` | Banners, the optional Popular categories block, product sections, storefront events and recommendations. |
|
|
152
|
+
| **Storefront banners** | `MainBanner` | A carousel of banner images for the current storefront language, with responsive image formats. |
|
|
153
|
+
| **Popular categories block** | `CategoryGroup` | Optional home-page block of public category tiles. |
|
|
154
|
+
| **Product group** | `ProductGroup` | Displays a collection of product cards with images, prices, variant selection and purchase controls. |
|
|
155
|
+
| **Product card** | `ProductCard` | Combines a product’s image, name, price, variants, wishlist button and purchase controls in one card. |
|
|
156
|
+
| **Product photo viewer** | `HoverImageViewer` | A separate product photo viewer with dot buttons: it switches photos with the pointer, with a swipe and from the keyboard, and a click passes the chosen photo's address to the application. |
|
|
157
|
+
| **Product card title** | `ProductCardTitle` | Displays the localized product name in the card. |
|
|
158
|
+
| **Product card description** | `ProductCardDescription` | Displays the localized short product description as plain text, with HTML tags removed. |
|
|
159
|
+
| **Product card badges** | `ProductCardBadges` | Marks new, popular, good-deal and low-stock products with badges in the card. |
|
|
160
|
+
| **Product card wishlist button** | `ProductCardFavorite` | Requests adding or removing the product from the wishlist; the supplied storefront sends guests to sign-in. |
|
|
161
|
+
| **Seller in the product card** | `ProductCardSeller` | Displays the product seller’s name and rating in the card. |
|
|
162
|
+
| **Product card rating** | `ProductCardRating` | Displays the product’s average rating and review count in the card. |
|
|
163
|
+
| **Product card variants** | `ProductCardVariants` | Selects a primary or secondary product variant. |
|
|
164
|
+
| **Secondary variant selector** | `ProductSecondaryVariantModal` | Shows primary and secondary product choices in a modal and can continue the selected purchase action. |
|
|
165
|
+
| **Product card price** | `ProductCardPrice` | Displays the price in the selected currency and the original price when the product is discounted. |
|
|
166
|
+
| **Low-stock notice** | `ProductCardStockNotice` | Warns that the product will soon run out of stock. |
|
|
167
|
+
| **Product card purchase controls** | `ProductCardActions` | Product-card controls for the cart, quantity, availability notifications and preorder when available. |
|
|
168
|
+
| **Preorder dialog** | `ProductPreorderDialog` | The selected product and contact details for a preorder request. |
|
|
169
|
+
| **Storefront events** | `EventsBlock` | A full-width carousel of layout-event images for the current storefront language, with responsive image formats. |
|
|
170
|
+
| **Event block and promotion enrollment** | `EventEnrollmentDialog` | Displaying the event block and opening promotion enrollment from the selected event. |
|
|
171
|
+
| **Footer** | `StorefrontFooter` | Store identity, navigation, a contact-page link and social links. |
|
|
172
|
+
| **Social links** | `SocialLinks` | Display the store’s published social links and icons. |
|
|
173
|
+
| **Error page** | `StorefrontErrorPage` | Page-not-found (404) and failure (500) page with Home, Catalog and Retry actions. |
|
|
174
|
+
| **Storefront theme** | `OrionplaceThemeProvider` | Applies the selected light or dark storefront theme and optional color overrides to its content. |
|
|
175
|
+
|
|
176
|
+
### Catalog and discovery
|
|
177
|
+
|
|
178
|
+
Browse categories, search results and product sources.
|
|
179
|
+
|
|
180
|
+
| Component | Name | What it does |
|
|
181
|
+
| --- | --- | --- |
|
|
182
|
+
| **Catalog component** | `StorefrontCatalog` | The component shows store categories, subcategories and product links. |
|
|
183
|
+
| **Category page** | `StorefrontCategory` | A category with its breadcrumb path, subcategories, filters and paginated product cards. |
|
|
184
|
+
| **Search results** | `ProductSearchResults` | Filters, products, loading and empty states for search, category, seller and recommendation results. |
|
|
185
|
+
| **Search filters** | `SearchFilters` | Price, discount, rating, review, category, seller, manufacturer and variant facets with selectable values and optional result counts. |
|
|
186
|
+
| **Sellers** | `StorefrontSellers` | Seller directory with filters and sorting, and a seller profile with its products. |
|
|
187
|
+
| **Seller filters** | `SellerFilters` | Seller name, minimum rating and category filters for the seller directory. |
|
|
188
|
+
| **Seller summary** | `SellerSummary` | Seller logo, name, rating, selling-since badge, product count and description. |
|
|
189
|
+
| **Seller photos** | `SellerPhotoGallery` | The seller’s approved photos as a square grid with a photo viewer. |
|
|
190
|
+
| **Stores** | `StorefrontStores` | Store addresses, map, phone numbers, opening hours and products. |
|
|
191
|
+
| **Manufacturers and their products** | `StorefrontManufacturers` | Alphabetical index, letter-based lists and manufacturer details. |
|
|
192
|
+
| **Manufacturer index** | `ManufacturerIndex` | Manufacturer logos and letter groups. |
|
|
193
|
+
|
|
194
|
+
### Products and shopping
|
|
195
|
+
|
|
196
|
+
Product details, saved items and the cart.
|
|
197
|
+
|
|
198
|
+
| Component | Name | What it does |
|
|
199
|
+
| --- | --- | --- |
|
|
200
|
+
| **Product details** | `StorefrontProduct` | Loads and displays a published product or a secret-key preview with images, purchase choices, details and reviews. |
|
|
201
|
+
| **Page path** | `OrionplaceBreadcrumbs` | Linked path from the storefront home page through parent categories to the current page. |
|
|
202
|
+
| **Product characteristics** | `ProductSpecificationsDialog` | Every characteristic of the product in a dialog over the page. |
|
|
203
|
+
| **Product reviews** | `ProductReviews` | Reviews, replies, ratings and the user’s submissions. |
|
|
204
|
+
| **Review form** | `ProductReviewForm` | Rating, text and photos for a review or reply. |
|
|
205
|
+
| **Customer review photos** | `ProductReviewGallery` | Review photos for the selected product. |
|
|
206
|
+
| **Review photo viewer** | `ProductReviewImageViewer` | The photos of one review, shown large on the same page. |
|
|
207
|
+
| **Promo code products** | `PromoProducts` | The products a promo code offer applies to, with the offer’s conditions. |
|
|
208
|
+
| **Wishlist and availability notices** | `StorefrontWishlist` | Saved products and products with availability notifications, shown as standard product cards. |
|
|
209
|
+
| **Cart and checkout** | `StorefrontCart` | Cart items, promo codes, delivery, payment and order creation. |
|
|
210
|
+
| **Cart item** | `CartLineItem` | Item name, image, price, quantity and removal. |
|
|
211
|
+
| **Cart item options** | `CartItemOptions` | Option products as product cards, with text and file attachment for an item. |
|
|
212
|
+
| **Checkout details** | `CartCheckoutDetails` | Delivery address, payment method, recipient and comment. |
|
|
213
|
+
| **Shipment delivery selection** | `CartDeliverySelector` | Delivery methods with icons, pickup points and their map for one shipment. |
|
|
214
|
+
| **Delivery map** | `DeliveryMap` | Selectable locations on Yandex Maps for delivery pickup and the store directory. |
|
|
215
|
+
|
|
216
|
+
### Customer account
|
|
217
|
+
|
|
218
|
+
Profile, orders, addresses and account activity.
|
|
219
|
+
|
|
220
|
+
| Component | Name | What it does |
|
|
221
|
+
| --- | --- | --- |
|
|
222
|
+
| **Account sections** | `AccountSection` | Account navigation and sign-in for private storefront sections. |
|
|
223
|
+
| **Personal profile** | `StorefrontProfile` | Account overview and forms for personal details, verified email, notification preferences, avatar, password and account deletion. |
|
|
224
|
+
| **Profile photo** | `ProfileAvatar` | Upload or remove the current account’s avatar. |
|
|
225
|
+
| **Personal details** | `ProfileDetailsForm` | Edit the account holder’s name and date of birth. |
|
|
226
|
+
| **Email and notifications** | `ProfileEmailSettings` | Verify an email address and choose optional email-notification and email-language preferences. |
|
|
227
|
+
| **Account password** | `ProfilePasswordForm` | Create or change the account password. |
|
|
228
|
+
| **Password field** | `OrionplacePasswordInput` | Password input with a button that shows or hides the entered password. |
|
|
229
|
+
| **Delete account** | `ProfileDeleteAccount` | Delete the signed-in customer's own account. |
|
|
230
|
+
| **Account sign-in** | `ProfileSignIn` | Phone-based account sign-in and registration. |
|
|
231
|
+
| **User promo codes** | `AccountPromocodes` | Available promo codes and applying a selected code to the cart. |
|
|
232
|
+
| **My activity** | `AccountActivity` | The user’s promo codes, reviews and sign-in history. |
|
|
233
|
+
| **Sign-in history** | `SignInHistory` | The user’s sign-in dates, devices, browsers and IP addresses. |
|
|
234
|
+
| **User orders** | `StorefrontOrders` | Order history, purchased items, payment, cancellation and repeat. |
|
|
235
|
+
| **Order details** | `OrderDetails` | Order items, shipments, tracking, purchased content and attachments. |
|
|
236
|
+
| **Order payment selection** | `OrderPaymentForm` | Available payment-method selection for an existing order. |
|
|
237
|
+
| **User addresses** | `StorefrontAddresses` | Saved addresses, address editing and default delivery selection. |
|
|
238
|
+
| **Address form** | `AddressForm` | Address creation and editing with country selection, region search, text suggestions and location lookup. |
|
|
239
|
+
| **Value selector** | `OrionplaceSelect` | Selects one value from a labeled list, with keyboard controls, country flags and option icons. |
|
|
240
|
+
| **Search selector** | `OrionplaceSearchSelect` | Selects one value from options searched as the user types, with a loading spinner and retry. |
|
|
241
|
+
| **Wallet and payments** | `StorefrontWallet` | Payment history, balance top-ups and cancellation of unpaid invoices. |
|
|
242
|
+
| **Wallet top-up form** | `WalletTopUpForm` | Amount, currency and payment-method selection for a wallet top-up. |
|
|
243
|
+
| **Payment panel** | `PaymentPanel` | Opens the payment link and lets the user refresh its status. |
|
|
244
|
+
| **Pagination** | `StorefrontPagination` | Previous and next controls with the current page for a returned list. |
|
|
245
|
+
|
|
246
|
+
### Subscriptions and support
|
|
247
|
+
|
|
248
|
+
Plans, active subscriptions and support requests.
|
|
249
|
+
|
|
250
|
+
| Component | Name | What it does |
|
|
251
|
+
| --- | --- | --- |
|
|
252
|
+
| **Subscription plans** | `StorefrontTariffs` | Plans grouped by subscription, with search, sign-in for guests and subscription purchase. |
|
|
253
|
+
| **Subscription plan details** | `StorefrontTariff` | One public plan with its media, description, features, periods, options and subscription purchase. |
|
|
254
|
+
| **Subscription plans** | `TariffCards` | Plan cards in a responsive grid. |
|
|
255
|
+
| **Subscription plan card** | `TariffCard` | A plan card with its image, trial badge, name, description, the modules and limits of the plan, the option chooser, period prices and subscribe actions. |
|
|
256
|
+
| **Plan image** | `TariffCardImage` | The first small plan image. |
|
|
257
|
+
| **Plan name** | `TariffCardTitle` | The tariff name in its card, in the selected language. |
|
|
258
|
+
| **Plan description** | `TariffCardDescription` | The short plan description without HTML tags, and the full description under Details. |
|
|
259
|
+
| **Plan modules, limits and options** | `TariffCardFeatures` | The modules and limits of a plan from `tariff_variables_json`, each with its explanation, and the chooser of the plan options. |
|
|
260
|
+
| **Information hint** | `OrionplaceInfoHint` | Small information button that explains the term beside it. |
|
|
261
|
+
| **Plan prices** | `TariffCardPrices` | The period switcher, the price for the chosen period and the Subscribe and Try actions. |
|
|
262
|
+
| **Plan purchase** | `TariffSubscriptionModal` | Select an option, enter a promotion code and confirm a subscription purchase. |
|
|
263
|
+
| **My subscriptions** | `StorefrontSubscriptions` | Subscription dates, plan, usage, service details, automatic renewal, renewal payment and support. |
|
|
264
|
+
| **Renewal payment** | `SubscriptionExtendDialog` | The period, the promo code and the amount for extending a subscription. |
|
|
265
|
+
| **Automatic renewal** | `SubscriptionRenewalDialog` | The period that is paid automatically, or turning it off. |
|
|
266
|
+
| **Plan and option change** | `SubscriptionChangeDialog` | The new plan or service option, its period and the amount that is charged. |
|
|
267
|
+
| **Subscription cancellation** | `SubscriptionCancelDialog` | The confirmation that stops automatic renewal and keeps the paid period. |
|
|
268
|
+
| **Plan and usage** | `SubscriptionPlanSummary` | The plan picture, description and parameters with the usage the subscription service reported. |
|
|
269
|
+
| **Subscription service details** | `SubscriptionRemoteDetails` | The identifier, confirmation time and host a subscription service returned. |
|
|
270
|
+
| **Support conversations** | `StorefrontSupport` | Customer support conversations for general questions, sellers, order items and subscriptions. |
|
|
271
|
+
| **Conversation messages** | `TicketConversation` | Messages, attachments, conversation closing and support rating. |
|
|
272
|
+
| **Conversation item** | `TicketItemCard` | The purchased item a conversation is about, with its image, variant or option, quantity and paid amount. |
|
|
273
|
+
| **Subscription of a conversation** | `TicketSubscriptionCard` | The subscription a support conversation is about: plan, number, state, paid-until date and automatic renewal. |
|
|
274
|
+
| **Conversation image** | `TicketImage` | Loading and viewing an image from the user’s conversation. |
|
|
275
|
+
| **Support message form** | `TicketMessageForm` | Message text and images for a new conversation or reply. |
|
|
276
|
+
|
|
277
|
+
### Content and contact
|
|
278
|
+
|
|
279
|
+
Journal content and customer contact flows.
|
|
280
|
+
|
|
281
|
+
| Component | Name | What it does |
|
|
282
|
+
| --- | --- | --- |
|
|
283
|
+
| **Journal** | `StorefrontJournal` | Paged journal of store articles with category and author filters. |
|
|
284
|
+
| **Journal article** | `BlogArticle` | An article, subscription access and its discussion. |
|
|
285
|
+
| **Article comments** | `BlogComments` | Discussion, replies and the user’s own comments. |
|
|
286
|
+
| **Comment form** | `BlogCommentForm` | Text for a new comment, reply or edit. |
|
|
287
|
+
| **Blog posts** | `BlogPostGroup` | Publication previews in a grid, list or layout with a lead card. |
|
|
288
|
+
| **Blog post card** | `BlogPostCard` | Publication image, localized title, plain-text preview and reading time. |
|
|
289
|
+
| **Contact page** | `StorefrontContact` | Company contact and registration details, with a form for messaging the store. |
|
|
290
|
+
| **Contact details** | `AboutPage` | Display the store’s published company and contact information. |
|
|
291
|
+
| **Contact form** | `ContactForm` | Sending a question to the store. |
|
|
292
|
+
| **Unsubscribe from emails** | `EmailUnsubscribe` | Confirming an unsubscribe request from an email link. |
|
|
293
|
+
|
|
294
|
+
### Shared interface
|
|
295
|
+
|
|
296
|
+
Small reusable states and identity elements.
|
|
297
|
+
|
|
298
|
+
| Component | Name | What it does |
|
|
299
|
+
| --- | --- | --- |
|
|
300
|
+
| **Empty state** | `OrionplaceEmptyState` | Line drawing and message shown when a list, history or search result has no items. |
|
|
301
|
+
| **Avatar** | `OrionplaceAvatar` | Round user photo with initials when no photo is available. |
|
|
302
|
+
| **Storefront image** | `OrionplaceImage` | Loads a safe public image lazily and shows an accessible placeholder when the image is missing or fails. |
|
|
303
|
+
| **Measurement unit selector** | `UnitSwitcher` | Selects a weight or length unit from those available in the storefront. |
|
|
304
|
+
|
|
305
|
+
<!-- components:end -->
|
|
306
|
+
|
|
58
307
|
## Commands
|
|
59
308
|
|
|
60
309
|
```bash
|
|
@@ -86,23 +335,35 @@ change your account, create DNS records, configure TLS, or deploy a VPS.
|
|
|
86
335
|
|
|
87
336
|
## Generated files
|
|
88
337
|
|
|
89
|
-
| Path
|
|
90
|
-
|
|
|
91
|
-
| `app/api/[...orionplace]/route.ts`
|
|
92
|
-
| `app/
|
|
93
|
-
| `app/
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
|
|
|
338
|
+
| Path | Purpose |
|
|
339
|
+
| --------------------------------------- | -------------------------------------------------------------------------------- |
|
|
340
|
+
| `app/api/[...orionplace]/route.ts` | Route handler serving `/api/...` from your project. |
|
|
341
|
+
| `app/ps3/blog/[...orionplace]/route.ts` | Route handler serving guarded blog images and videos under `/ps3/blog/...`. |
|
|
342
|
+
| `app/layout.tsx` | Awaits initialization and provides the marketplace store. |
|
|
343
|
+
| `app/StorefrontShell.tsx` | Shows initialization failures and mounts storefront content after success. |
|
|
344
|
+
| `app/page.tsx`, `app/*/page.tsx` | Server-rendered public and account storefront routes. |
|
|
345
|
+
| `app/_storefront/` | Route controllers that connect components, navigation and API actions. |
|
|
346
|
+
| `proxy.ts` | Marks personalized pages `private, no-store`. |
|
|
347
|
+
| `lib/orionplace/` | Server transport, browser transport, envelope checks and domain resolution. |
|
|
348
|
+
| `stores/orionplace.ts` | Typed snapshot, status, merged discovery and selectors. |
|
|
349
|
+
| `stores/orionplaceSelections.ts` | Current locale, currency and unit choices with availability fallbacks. |
|
|
350
|
+
| `stores/orionplaceCatalog.ts` | Categories and subscription plans from initialization or later requests. |
|
|
351
|
+
| `stores/orionplaceProducts.ts` | Request-scoped product collections and customer-session product updates. |
|
|
352
|
+
| `stores/orionplaceBrowse.ts` | Search choices, selected filters and journal results. |
|
|
353
|
+
| `stores/orionplaceScope.ts` | Creates and synchronizes the stores before child components render. |
|
|
354
|
+
| `components/orionplace/` | Maintained React components, styles and bilingual component contracts. |
|
|
355
|
+
| `themes/orionplace.ts` | Light and dark storefront palettes and scoped color overrides. |
|
|
356
|
+
| `providers/OrionplaceProvider.tsx` | Provides one coordinated store scope per browser session. |
|
|
357
|
+
| `hooks/useOrionplaceAppLoad.ts` | Explicit initialize, refresh and reset actions. |
|
|
358
|
+
| `hooks/useOrionplaceApi.ts` | Browser API client with discovery, CSRF renewal and session refresh. |
|
|
359
|
+
| `interfaces/orionplace/` | The Application Load response envelope and every nested model. |
|
|
360
|
+
| `orionplace/runtime/marketplace.mjs` | Commented domain lookup and HTTP transport. |
|
|
361
|
+
| `orionplace/runtime/app.mjs` | `androidAppConfig`: the Android app build switch for `next.config.ts`. |
|
|
362
|
+
| `orionplace/README.md` | Your settings, API examples, file explanations, verification and VPS deployment. |
|
|
363
|
+
| `orionplace/settings.json` | Domain values selected by the CLI. |
|
|
364
|
+
| `orionplace/.generated.json` | File hashes used to preserve your edits on subsequent setup. |
|
|
365
|
+
| `sitemaps/shop.example.com.cfg` | One line: `https://your-project.orionplace.app/api`. |
|
|
366
|
+
| `.env` | `MIMIC_FRONT_DOMAIN="shop.example.com"` for localhost. |
|
|
106
367
|
|
|
107
368
|
Projects that use `src/` receive the application source under `src/` instead.
|
|
108
369
|
All generated source is yours to read and customize. Later setup runs preserve
|
|
@@ -157,15 +418,33 @@ Deploy `sitemaps` with the production server, or set an absolute `SITEMAPS_DIR`.
|
|
|
157
418
|
The production process reads `MIMIC_FRONT_DOMAIN` without rebuilding. Run the
|
|
158
419
|
server from the project root or explicitly point it at the configuration directory.
|
|
159
420
|
|
|
160
|
-
##
|
|
421
|
+
## Application Load starter
|
|
161
422
|
|
|
162
|
-
The root layout awaits `POST /api/appload`
|
|
423
|
+
The root layout awaits `POST /api/appload` before the page renders,
|
|
163
424
|
then hands the snapshot to the client provider. `getOrionplaceAppLoad()` is cached
|
|
164
425
|
per render, so a layout and a server component share one request. Client components
|
|
165
|
-
read the same snapshot through
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
426
|
+
read the same snapshot through the provider's main and domain-store hooks. The
|
|
427
|
+
provider initializes and synchronizes those stores before child components render;
|
|
428
|
+
hydration does not repeat the request. `useOrionplaceAppLoad()` provides explicit
|
|
429
|
+
`initialize`, `refresh` and `reset` actions. Reading a store or hook never starts a
|
|
430
|
+
request, and initialization never opens an authentication prompt.
|
|
431
|
+
|
|
432
|
+
The requested `?locale` is validated against Application Load before the
|
|
433
|
+
server render. Public product, article and tariff details load through the
|
|
434
|
+
maintained API client. Page metadata uses those returned records and follows
|
|
435
|
+
client navigation and language selection. Home-page event clicks open enrollment
|
|
436
|
+
for the returned event, preserving its return path through sign-in.
|
|
437
|
+
|
|
438
|
+
`StorefrontShell` mounts the header, route content and footer after Application
|
|
439
|
+
Load succeeds. If initialization fails, it shows `StorefrontErrorPage`; Retry
|
|
440
|
+
runs an explicit refresh and remains disabled while that request is pending.
|
|
441
|
+
|
|
442
|
+
`app/not-found.tsx` shows the native missing-page view for unknown addresses
|
|
443
|
+
and missing records. `app/error.tsx` and `app/global-error.tsx` show the native
|
|
444
|
+
failure view for unhandled errors. Error metadata is localized and excludes the
|
|
445
|
+
page from indexing. Home and Catalog preserve the selected locale; Retry reloads
|
|
446
|
+
the current address. The server snapshot contains the requested locale and its
|
|
447
|
+
currency and unit selections before components render.
|
|
169
448
|
|
|
170
449
|
Live discovery from `page_data.unauth.paths` and, for a signed-in session,
|
|
171
450
|
`page_data.auth.paths`, is merged into one lookup without mutating the response.
|
|
@@ -173,7 +452,7 @@ Discovery describes availability; the backend still checks permissions on each c
|
|
|
173
452
|
|
|
174
453
|
### Session and CSRF cookies
|
|
175
454
|
|
|
176
|
-
|
|
455
|
+
Application Load establishes the guest/customer session and CSRF cookie through HTTP
|
|
177
456
|
`Set-Cookie` headers, not through `page_data.init`. The browser handles the signed
|
|
178
457
|
HttpOnly `sessionid` cookie; never parse, rewrite, log or store its value in the
|
|
179
458
|
store or localStorage. The readable `csrftoken` supplies `X-CSRFToken` for later
|
|
@@ -187,11 +466,20 @@ session through `/api/...` requests. `requestAppLoad()` returns the raw `Set-Coo
|
|
|
187
466
|
values if you relay them from your own route handler or server action.
|
|
188
467
|
|
|
189
468
|
Use `POST /api/csrf_renew` with `{}` to renew CSRF, then re-read the cookie.
|
|
190
|
-
The backend signals CSRF rejection with HTTP `419
|
|
191
|
-
|
|
192
|
-
|
|
469
|
+
The backend signals CSRF rejection with HTTP `419`, or HTTP `403` with
|
|
470
|
+
`page_data.csrf: false`. A `403` without that flag may mean permissions or
|
|
471
|
+
origin rejection. The shared API client renews the token for the next action
|
|
472
|
+
and returns the failed request; the customer retries explicitly. After
|
|
473
|
+
confirmed login/logout, reset and refresh Application Load.
|
|
193
474
|
Those store actions update data; they do not authenticate or delete cookies.
|
|
194
475
|
|
|
476
|
+
|
|
477
|
+
When a request returns HTTP `401` while the store is signed in, the shared API
|
|
478
|
+
client clears profile, wallet, authenticated discovery, cart and wishlist counters
|
|
479
|
+
and account fields of cached products, then reloads Application Load as a guest.
|
|
480
|
+
Public data and the current selections remain available during that refresh.
|
|
481
|
+
The failed request is not repeated and no sign-in dialog opens automatically.
|
|
482
|
+
|
|
195
483
|
## Update an existing project
|
|
196
484
|
|
|
197
485
|
After the initial setup, use one command to get the latest package and components:
|
|
@@ -227,11 +515,17 @@ installation fails after source generation, run `npm install` and retry `update`
|
|
|
227
515
|
|
|
228
516
|
## Documentation
|
|
229
517
|
|
|
230
|
-
- [Create a Next.js frontend](https://orionmarket.place/sandbox/new-project/react)
|
|
231
|
-
- [Marketplace API documentation](https://orionmarket.place/sandbox/)
|
|
518
|
+
- [Create a Next.js frontend](https://orionmarket.place/en/sandbox/new-project/react)
|
|
519
|
+
- [Marketplace API documentation](https://orionmarket.place/en/sandbox/)
|
|
232
520
|
|
|
233
521
|
## Development
|
|
234
522
|
|
|
523
|
+
In this repository checkout, the package demo uses its own
|
|
524
|
+
`packages/orionplace-react/.env` and
|
|
525
|
+
`packages/orionplace-react/sitemaps/<storefront-domain>.cfg`.
|
|
526
|
+
Set the storefront's `MIMIC_FRONT_DOMAIN` and personal backend mapping there.
|
|
527
|
+
See [local demo configuration](DEVELOPMENT.md#local-demo-configuration).
|
|
528
|
+
|
|
235
529
|
```bash
|
|
236
530
|
npm install
|
|
237
531
|
npm test
|
package/bin/orionplace-react.mjs
CHANGED
|
@@ -17,7 +17,7 @@ From zero (Node.js 20.9+ with npm; run from the parent folder):
|
|
|
17
17
|
|
|
18
18
|
Replace the backend with the domain from your orionmarket.place profile,
|
|
19
19
|
and the frontend with your storefront domain. Open Next.js's local URL;
|
|
20
|
-
the
|
|
20
|
+
the storefront opens after Application Load succeeds.
|
|
21
21
|
|
|
22
22
|
Commands for an existing project (run from its root):
|
|
23
23
|
npx orionplace-react help
|
|
@@ -89,6 +89,9 @@ try {
|
|
|
89
89
|
: `Next: ${result.settings.backend ? 'add frontend' : 'set backend'} to complete the domain mapping.`);
|
|
90
90
|
if (result.changed.some(path => path.endsWith('.cfg') || path === '.env')) console.log('Restart a running development server to reload MIMIC and domain mappings. Reload your production environment when changing MIMIC.');
|
|
91
91
|
if (result.isNewNext) console.log('Run npm install in the project, then npm run dev.');
|
|
92
|
+
if (result.preserved.includes('tsconfig.json')) {
|
|
93
|
+
console.log('Merge the import aliases into your retained configuration; see Import aliases in orionplace/README.md.');
|
|
94
|
+
}
|
|
92
95
|
console.log('Project documentation: orionplace/README.md');
|
|
93
96
|
if (command === 'update') console.log(dryRun
|
|
94
97
|
? 'Dependency installation would run after applying these changes. Project files were not changed.'
|
package/package.json
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orionplace-react",
|
|
3
|
-
"version": "0.1
|
|
4
|
-
"description": "Next.js
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Next.js 16 storefront for your Orionplace marketplace: setup CLI, server API gateway, typed store and ready-made catalog, cart, checkout and account components in English and Russian, plus an Android app build.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Orionplace",
|
|
8
|
-
"homepage": "https://orionmarket.place/sandbox/new-project/react",
|
|
8
|
+
"homepage": "https://orionmarket.place/en/sandbox/new-project/react",
|
|
9
9
|
"keywords": [
|
|
10
10
|
"react",
|
|
11
11
|
"next",
|
|
12
12
|
"nextjs",
|
|
13
|
+
"app-router",
|
|
13
14
|
"orionplace",
|
|
14
|
-
"
|
|
15
|
+
"orionmarketplace",
|
|
16
|
+
"marketplace",
|
|
17
|
+
"storefront",
|
|
18
|
+
"ecommerce",
|
|
19
|
+
"e-commerce",
|
|
20
|
+
"shop",
|
|
21
|
+
"cart",
|
|
22
|
+
"checkout",
|
|
23
|
+
"ssr",
|
|
24
|
+
"cli",
|
|
25
|
+
"android",
|
|
26
|
+
"capacitor"
|
|
15
27
|
],
|
|
16
28
|
"engines": {
|
|
17
29
|
"node": ">=20.9.0"
|
|
@@ -40,7 +52,7 @@
|
|
|
40
52
|
"LICENSE"
|
|
41
53
|
],
|
|
42
54
|
"scripts": {
|
|
43
|
-
"test": "node --test test/*.test.mjs"
|
|
55
|
+
"test": "node --import ../../scripts/register-test-aliases.mjs --test test/*.test.mjs"
|
|
44
56
|
},
|
|
45
57
|
"peerDependencies": {
|
|
46
58
|
"next": "^16.0.0"
|
|
@@ -50,6 +62,7 @@
|
|
|
50
62
|
"registry": "https://registry.npmjs.org/"
|
|
51
63
|
},
|
|
52
64
|
"devDependencies": {
|
|
65
|
+
"dompurify": "^3.4.13",
|
|
53
66
|
"esbuild": "^0.27.7",
|
|
54
67
|
"zustand": "^5.0.15"
|
|
55
68
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NextConfig } from 'next';
|
|
2
|
+
|
|
3
|
+
/** The validated storefront origin of an Android app build; empty for the website. */
|
|
4
|
+
export function androidAppOrigin(value?: string): string;
|
|
5
|
+
/** The Next.js options, made a static export of the app's page for the Android app build. */
|
|
6
|
+
export function androidAppConfig(config?: NextConfig): NextConfig;
|
package/runtime/app.mjs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Android app build: ORIONPLACE_APP_ORIGIN=https://shop.example.com next build
|
|
3
|
+
*
|
|
4
|
+
* The app is a static export (out/) that Capacitor wraps: one page,
|
|
5
|
+
* app/[[...path]]/page.app.tsx with app/layout.app.tsx, which shows the
|
|
6
|
+
* storefront page of the current address in the app. Its API requests go to
|
|
7
|
+
* the public storefront named by the variable, through its /api gateway (see
|
|
8
|
+
* lib/orionplace/nativeApp.ts). Without the variable the project builds the
|
|
9
|
+
* website as before and ignores the *.app.tsx files.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const hostname = /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
13
|
+
|
|
14
|
+
/** The validated storefront origin of an app build; empty for the website. */
|
|
15
|
+
export function androidAppOrigin(value = process.env.ORIONPLACE_APP_ORIGIN) {
|
|
16
|
+
const text = value?.trim() ?? '';
|
|
17
|
+
if (!text) return '';
|
|
18
|
+
if (/^http:/i.test(text)) throw new Error('ORIONPLACE_APP_ORIGIN must use HTTPS.');
|
|
19
|
+
let url;
|
|
20
|
+
try { url = new URL(text.includes('://') ? text : `https://${text}`); }
|
|
21
|
+
catch { url = null; }
|
|
22
|
+
const host = url?.hostname.toLowerCase().replace(/\.$/, '') ?? '';
|
|
23
|
+
if (!url || url.protocol !== 'https:' || !hostname.test(host) || /^[\d.]+$/.test(host) ||
|
|
24
|
+
url.username || url.password || url.port || url.search || url.hash || url.pathname !== '/') {
|
|
25
|
+
throw new Error('ORIONPLACE_APP_ORIGIN must be your public storefront, for example https://shop.example.com.');
|
|
26
|
+
}
|
|
27
|
+
return `https://${host}`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The Next.js options: the website's, with the app origin known to the code;
|
|
32
|
+
* for the app build a static export of the app's own page.
|
|
33
|
+
* @param {import('next').NextConfig} config
|
|
34
|
+
*/
|
|
35
|
+
export function androidAppConfig(config = {}) {
|
|
36
|
+
const origin = androidAppOrigin();
|
|
37
|
+
const env = { ...config.env, ORIONPLACE_APP_ORIGIN: origin };
|
|
38
|
+
if (!origin) return { ...config, env };
|
|
39
|
+
return {
|
|
40
|
+
...config,
|
|
41
|
+
env,
|
|
42
|
+
output: 'export',
|
|
43
|
+
// Only app/layout.app.tsx and app/[[...path]]/page.app.tsx: the server
|
|
44
|
+
// pages, the /api gateway and proxy.ts stay with the website.
|
|
45
|
+
pageExtensions: ['app.tsx'],
|
|
46
|
+
images: { ...config.images, unoptimized: true },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
export interface MarketplaceConfiguration {
|
|
2
|
-
|
|
2
|
+
mimicFrontDomain?: string;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
export interface MarketplaceTenant {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
domain: string;
|
|
7
|
+
api: URL;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export declare function normalizeFrontDomain(value: unknown): string | null;
|
|
11
11
|
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function isMarketplaceMediaPath(pathname: string): boolean;
|
|
13
|
+
|
|
14
|
+
export declare function resolveFrontDomain(
|
|
15
|
+
request: Request,
|
|
16
|
+
mimic?: string,
|
|
17
|
+
): string | null;
|
|
13
18
|
|
|
14
19
|
export declare function readMarketplace(
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
request: Request,
|
|
21
|
+
configuration?: MarketplaceConfiguration,
|
|
17
22
|
): Promise<MarketplaceTenant>;
|
|
18
23
|
|
|
19
24
|
export declare function forwardMarketplace(
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
request: Request,
|
|
26
|
+
configuration?: MarketplaceConfiguration,
|
|
22
27
|
): Promise<Response>;
|