orionplace-react 0.1.0 → 0.2.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 +276 -35
- 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,189 @@
|
|
|
1
1
|
# orionplace-react
|
|
2
2
|
|
|
3
3
|
Set up a Next.js 16 storefront for your personal Orionplace marketplace API.
|
|
4
|
-
The package includes a setup CLI, the App Router starter with typed
|
|
4
|
+
The package includes a setup CLI, the App Router starter with typed Application Load
|
|
5
5
|
initialization, and commented server source that is copied into your project
|
|
6
6
|
alongside an integration README.
|
|
7
7
|
|
|
8
|
+
The generated source includes the shared
|
|
9
|
+
[`OrionplaceImage`](templates/components/orionplace/shared/OrionplaceImage.README.md),
|
|
10
|
+
[`OrionplaceEmptyState`](templates/components/orionplace/shared/OrionplaceEmptyState.README.md),
|
|
11
|
+
[`OrionplaceAvatar`](templates/components/orionplace/shared/OrionplaceAvatar.README.md),
|
|
12
|
+
[`OrionplaceBreadcrumbs`](templates/components/orionplace/shared/OrionplaceBreadcrumbs.README.md),
|
|
13
|
+
[`OrionplaceInfoHint`](templates/components/orionplace/shared/OrionplaceInfoHint.README.md),
|
|
14
|
+
[`OrionplacePasswordInput`](templates/components/orionplace/shared/OrionplacePasswordInput.README.md)
|
|
15
|
+
and
|
|
16
|
+
[`StorefrontPagination`](templates/components/orionplace/shared/StorefrontPagination.README.md).
|
|
17
|
+
[`StorefrontErrorPage`](templates/components/orionplace/shared/StorefrontErrorPage.README.md)
|
|
18
|
+
provides the public error view.
|
|
19
|
+
[`OrionplaceSelect`](templates/components/orionplace/shared/OrionplaceSelect.README.md)
|
|
20
|
+
provides the shared keyboard-accessible selection control.
|
|
21
|
+
[`OrionplaceSearchSelect`](templates/components/orionplace/shared/OrionplaceSearchSelect.README.md)
|
|
22
|
+
provides delayed search with a controlled confirmed selection, loading, empty
|
|
23
|
+
and retry states.
|
|
24
|
+
[`ProfileAvatar`](templates/components/orionplace/account/ProfileAvatar.README.md)
|
|
25
|
+
provides the profile photo upload and removal contract with an initials fallback.
|
|
26
|
+
[`ProfileDetailsForm`](templates/components/orionplace/account/ProfileDetailsForm.README.md)
|
|
27
|
+
edits the customer's name and date of birth while keeping the sign-in phone
|
|
28
|
+
read-only.
|
|
29
|
+
[`ProfilePasswordForm`](templates/components/orionplace/account/ProfilePasswordForm.README.md)
|
|
30
|
+
creates or changes the customer's password with matching confirmation.
|
|
31
|
+
[`ProfileDeleteAccount`](templates/components/orionplace/account/ProfileDeleteAccount.README.md)
|
|
32
|
+
lets the customer delete their own account after confirming it cannot be restored.
|
|
33
|
+
[`ProfileEmailSettings`](templates/components/orionplace/account/ProfileEmailSettings.README.md)
|
|
34
|
+
handles the email verification steps, optional notification choice and notification
|
|
35
|
+
language.
|
|
36
|
+
[`AccountSection`](templates/components/orionplace/account/AccountSection.README.md)
|
|
37
|
+
provides authenticated account navigation plus guest and initialization failure
|
|
38
|
+
states.
|
|
39
|
+
[`StorefrontLogout`](templates/components/orionplace/account/StorefrontLogout.README.md)
|
|
40
|
+
presents pending, failed and completed sign-out states while the route owns the
|
|
41
|
+
request and navigation.
|
|
42
|
+
[`StorefrontProfile`](templates/components/orionplace/account/StorefrontProfile.README.md)
|
|
43
|
+
assembles the authenticated profile summary and all four profile settings
|
|
44
|
+
sections, and shows a sign-in explanation to guests.
|
|
45
|
+
[`ProfileSignIn`](templates/components/orionplace/account/ProfileSignIn.README.md)
|
|
46
|
+
renders every phone, password, one-time-code and registration step and reports
|
|
47
|
+
typed authentication actions to the host.
|
|
48
|
+
[`SignInHistory`](templates/components/orionplace/account/SignInHistory.README.md)
|
|
49
|
+
reports initial, filtered and paginated sign-in-history requests and renders the
|
|
50
|
+
returned devices, browsers and locations.
|
|
51
|
+
[`AccountPromocodes`](templates/components/orionplace/account/AccountPromocodes.README.md)
|
|
52
|
+
shows issued promo-code conditions and statuses and reports load and apply
|
|
53
|
+
requests to the host.
|
|
54
|
+
[`AccountActivity`](templates/components/orionplace/account/AccountActivity.README.md)
|
|
55
|
+
switches between promo codes, the customer's reviews and sign-in history while
|
|
56
|
+
mounting only the active section.
|
|
57
|
+
[`AddressForm`](templates/components/orionplace/address/AddressForm.README.md)
|
|
58
|
+
creates or edits a delivery address with region search, address suggestions and
|
|
59
|
+
optional coordinate lookup.
|
|
60
|
+
[`StorefrontAddresses`](templates/components/orionplace/address/StorefrontAddresses.README.md)
|
|
61
|
+
loads saved addresses and provides add, edit, default and confirmed delete
|
|
62
|
+
actions.
|
|
63
|
+
[`BlogPostCard`](templates/components/orionplace/blog/BlogPostCard.README.md)
|
|
64
|
+
renders a localized article preview as a link or selection button.
|
|
65
|
+
[`BlogPostGroup`](templates/components/orionplace/blog/BlogPostGroup.README.md)
|
|
66
|
+
arranges the browse store's article previews using the configured journal view.
|
|
67
|
+
[`BlogCommentForm`](templates/components/orionplace/blog/BlogCommentForm.README.md)
|
|
68
|
+
collects validated text for a new comment, reply or edit.
|
|
69
|
+
[`BlogComments`](templates/components/orionplace/blog/BlogComments.README.md)
|
|
70
|
+
renders nested article discussions, the customer's comments and all comment
|
|
71
|
+
write actions.
|
|
72
|
+
[`BlogArticle`](templates/components/orionplace/blog/BlogArticle.README.md)
|
|
73
|
+
renders an SSR-readable article, subscription access, safe editor HTML,
|
|
74
|
+
reading accounting, related product cards and its discussion.
|
|
75
|
+
[`StorefrontJournal`](templates/components/orionplace/blog/StorefrontJournal.README.md)
|
|
76
|
+
renders the SSR-ready article list with category and author filters,
|
|
77
|
+
pagination, linked cards and an optional inline article.
|
|
78
|
+
[`CartCheckoutDetails`](templates/components/orionplace/cart/CartCheckoutDetails.README.md)
|
|
79
|
+
connects the confirmed cart address, payment, recipient and comment fields to
|
|
80
|
+
their typed mutation actions.
|
|
81
|
+
[`MainSearch`](templates/components/orionplace/search/MainSearch.README.md)
|
|
82
|
+
connects the localized search field and hints to the separate browse store.
|
|
83
|
+
The first storefront data components are
|
|
84
|
+
[`BrandLogos`](templates/components/orionplace/branding/BrandLogos.README.md)
|
|
85
|
+
and [`SocialLinks`](templates/components/orionplace/social/SocialLinks.README.md).
|
|
86
|
+
[`MainBanner`](templates/components/orionplace/banners/MainBanner.README.md)
|
|
87
|
+
renders localized banner images with manual navigation and category actions.
|
|
88
|
+
[`EventsBlock`](templates/components/orionplace/events/EventsBlock.README.md)
|
|
89
|
+
renders page events for the selected language and reports the selected event.
|
|
90
|
+
[`CategoryGroup`](templates/components/orionplace/categories/CategoryGroup.README.md)
|
|
91
|
+
renders ordered public categories or one parent's immediate public children.
|
|
92
|
+
[`StorefrontHome`](templates/components/orionplace/storefront/StorefrontHome.README.md)
|
|
93
|
+
assembles banners, categories, product sections and page events in storefront
|
|
94
|
+
order.
|
|
95
|
+
[`CatalogRepresentative`](templates/components/orionplace/catalog/CatalogRepresentative.README.md)
|
|
96
|
+
adapts the verified compact product card for category highlights.
|
|
97
|
+
[`CatalogHeader`](templates/components/orionplace/catalog/CatalogHeader.README.md)
|
|
98
|
+
provides the focus-managed category panel, shortcuts, trails and representative
|
|
99
|
+
product actions used by the storefront header.
|
|
100
|
+
[`StorefrontCartButton`](templates/components/orionplace/storefront/StorefrontCartButton.README.md)
|
|
101
|
+
shows the shared cart-position count and reports a cart selection.
|
|
102
|
+
[`StorefrontWishlistButton`](templates/components/orionplace/storefront/StorefrontWishlistButton.README.md)
|
|
103
|
+
shows the shared wishlist count with plain-click application handling and
|
|
104
|
+
native modifier-click navigation.
|
|
105
|
+
[`WalletBalance`](templates/components/orionplace/wallet/WalletBalance.README.md)
|
|
106
|
+
formats the selected currency's Application Load wallet amount in full or
|
|
107
|
+
compact form.
|
|
108
|
+
[`StorefrontAccount`](templates/components/orionplace/storefront/StorefrontAccount.README.md)
|
|
109
|
+
provides the guest login action and the authenticated profile, wallet and logout
|
|
110
|
+
menu with keyboard navigation.
|
|
111
|
+
[`StorefrontFooter`](templates/components/orionplace/storefront/StorefrontFooter.README.md)
|
|
112
|
+
combines branding, social links, public categories and locale-preserving
|
|
113
|
+
storefront links.
|
|
114
|
+
[`StorefrontHeader`](templates/components/orionplace/storefront/StorefrontHeader.README.md)
|
|
115
|
+
assembles search, selections, account actions and the interactive catalog with
|
|
116
|
+
localized navigation.
|
|
117
|
+
[`OrionplaceThemeProvider`](templates/components/orionplace/theme/OrionplaceThemeProvider.README.md)
|
|
118
|
+
sets their shared color tokens.
|
|
119
|
+
[`MainCurrencySwitcher`](templates/components/orionplace/currencies/MainCurrencySwitcher.README.md)
|
|
120
|
+
[`UnitSwitcher`](templates/components/orionplace/units/UnitSwitcher.README.md)
|
|
121
|
+
and [`MainLanguageSwitcher`](templates/components/orionplace/locale/MainLanguageSwitcher.README.md)
|
|
122
|
+
use the separate current-selection store.
|
|
123
|
+
[`HoverImageViewer`](templates/components/orionplace/products/HoverImageViewer.README.md)
|
|
124
|
+
shows a product's first image in server HTML and starts loading its other
|
|
125
|
+
images after hover or keyboard focus.
|
|
126
|
+
The first product-card parts cover the
|
|
127
|
+
[`title`](templates/components/orionplace/products/ProductCardTitle.README.md),
|
|
128
|
+
[`description`](templates/components/orionplace/products/ProductCardDescription.README.md),
|
|
129
|
+
[`price`](templates/components/orionplace/products/ProductCardPrice.README.md),
|
|
130
|
+
[`stock notice`](templates/components/orionplace/products/ProductCardStockNotice.README.md),
|
|
131
|
+
[`review rating`](templates/components/orionplace/products/ProductCardRating.README.md),
|
|
132
|
+
[`seller`](templates/components/orionplace/products/ProductCardSeller.README.md),
|
|
133
|
+
[`badges`](templates/components/orionplace/products/ProductCardBadges.README.md),
|
|
134
|
+
[`favorite`](templates/components/orionplace/products/ProductCardFavorite.README.md),
|
|
135
|
+
[`purchase actions`](templates/components/orionplace/products/ProductCardActions.README.md),
|
|
136
|
+
[`variant choices`](templates/components/orionplace/products/ProductCardVariants.README.md)
|
|
137
|
+
and the [`secondary-choice dialog`](templates/components/orionplace/products/ProductSecondaryVariantModal.README.md).
|
|
138
|
+
[`ProductCard`](templates/components/orionplace/products/ProductCard.README.md)
|
|
139
|
+
assembles these parts and delays each card's secondary images until hover
|
|
140
|
+
or keyboard focus. [`ProductGroup`](templates/components/orionplace/products/ProductGroup.README.md)
|
|
141
|
+
renders responsive rows of cards.
|
|
142
|
+
[`ProductReviewImageViewer`](templates/components/orionplace/products/ProductReviewImageViewer.README.md)
|
|
143
|
+
opens review photos with keyboard navigation.
|
|
144
|
+
[`ProductReviewForm`](templates/components/orionplace/products/ProductReviewForm.README.md)
|
|
145
|
+
collects validated review, reply and edit values.
|
|
146
|
+
[`ProductReviewGallery`](templates/components/orionplace/products/ProductReviewGallery.README.md)
|
|
147
|
+
loads scoped review photos and reports the owning review selection.
|
|
148
|
+
[`ProductReviews`](templates/components/orionplace/products/ProductReviews.README.md)
|
|
149
|
+
assembles review statistics, filters, photos, replies, reactions and writing
|
|
150
|
+
controls for product, seller and account views.
|
|
151
|
+
Their contracts are documented in English and Russian beside the maintained
|
|
152
|
+
React source.
|
|
153
|
+
|
|
8
154
|
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
|
|
155
|
+
hosting are not supported by this filesystem-based integration; only the Android
|
|
156
|
+
app build below is a static export.
|
|
157
|
+
|
|
158
|
+
## Android app
|
|
159
|
+
|
|
160
|
+
The same project builds as an Android app with Capacitor 8. Set
|
|
161
|
+
`ORIONPLACE_APP_ORIGIN` to your deployed public storefront (HTTPS) for that
|
|
162
|
+
build: `androidAppConfig` in `next.config.ts` (`orionplace/runtime/app.mjs`)
|
|
163
|
+
then makes `next build` a static export of one app page to `out/`. The page runs
|
|
164
|
+
the same route table as the website's server pages
|
|
165
|
+
(`app/_storefront/storefrontRoutes.tsx`) in the app, and every API request goes
|
|
166
|
+
to `<origin>/api/...` through Capacitor's native HTTP with the storefront
|
|
167
|
+
Origin (`lib/orionplace/nativeApp.ts`). With the `@capacitor/app` plugin
|
|
168
|
+
installed, the Android back button closes an open dialog, opens the previous
|
|
169
|
+
page, or leaves the app on the first page. With `@capacitor/filesystem` and
|
|
170
|
+
`@capacitor/share`, a purchased file is saved in the app and opened from the
|
|
171
|
+
Android share sheet. Without the variable the website
|
|
172
|
+
build is unchanged. Setup, build and release steps:
|
|
173
|
+
[Android app guide](https://orionmarket.place/en/sandbox/android-app?framework=react).
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
ORIONPLACE_APP_ORIGIN=https://shop.example.com npx next build
|
|
177
|
+
npx cap sync android
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Asset loading
|
|
181
|
+
|
|
182
|
+
The starter leaves route chunk selection to the current Next.js route and does
|
|
183
|
+
not add speculative preload links. Storefront image components emit intrinsic
|
|
184
|
+
dimensions or a stable aspect ratio to reserve layout space. Product cards
|
|
185
|
+
include the primary image in server HTML and add secondary images after hover or
|
|
186
|
+
keyboard focus.
|
|
10
187
|
|
|
11
188
|
## Quick start from zero
|
|
12
189
|
|
|
@@ -26,10 +203,11 @@ npx orionplace-react add frontend shop.example.com
|
|
|
26
203
|
npm run dev
|
|
27
204
|
```
|
|
28
205
|
|
|
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
|
-
|
|
206
|
+
The first command creates the Next.js configuration, the complete App Router
|
|
207
|
+
storefront and its integration README. The first frontend becomes the local
|
|
208
|
+
MIMIC domain. Open the local URL printed by Next.js (normally
|
|
209
|
+
http://localhost:3000). The home page should show the configured catalog and
|
|
210
|
+
storefront content. If it shows the initialization error state, check the domain
|
|
33
211
|
mapping and backend response. The backend command accepts either a hostname or
|
|
34
212
|
its full HTTPS `/api` URL. The frontend command accepts a public hostname or its
|
|
35
213
|
root HTTPS URL.
|
|
@@ -55,6 +233,24 @@ No install or postinstall hook changes your application. Only explicitly running
|
|
|
55
233
|
the CLI writes files. Use `--cwd <directory>` to select a project and `--dry-run`
|
|
56
234
|
to inspect planned changes without writing them.
|
|
57
235
|
|
|
236
|
+
## Import aliases
|
|
237
|
+
|
|
238
|
+
Application imports use `@/`. In `tsconfig.json`, merge these entries into
|
|
239
|
+
`compilerOptions.paths` while keeping your other settings:
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"@/*": ["./*"],
|
|
244
|
+
"@orionplace-runtime/*": ["./orionplace/runtime/*"]
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
For a `src/app/` project, use `"@/*": ["./src/*"]` instead. The gateway alias
|
|
249
|
+
still points to the project-root `orionplace/runtime/` directory. Setup writes
|
|
250
|
+
these mappings for new projects and updates unchanged generated configuration.
|
|
251
|
+
If you already own `tsconfig.json`, it is preserved; merge these aliases before
|
|
252
|
+
starting the application. Imports then work at any component directory depth.
|
|
253
|
+
|
|
58
254
|
## Commands
|
|
59
255
|
|
|
60
256
|
```bash
|
|
@@ -86,23 +282,35 @@ change your account, create DNS records, configure TLS, or deploy a VPS.
|
|
|
86
282
|
|
|
87
283
|
## Generated files
|
|
88
284
|
|
|
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
|
-
|
|
|
285
|
+
| Path | Purpose |
|
|
286
|
+
| --------------------------------------- | -------------------------------------------------------------------------------- |
|
|
287
|
+
| `app/api/[...orionplace]/route.ts` | Route handler serving `/api/...` from your project. |
|
|
288
|
+
| `app/ps3/blog/[...orionplace]/route.ts` | Route handler serving guarded blog images and videos under `/ps3/blog/...`. |
|
|
289
|
+
| `app/layout.tsx` | Awaits initialization and provides the marketplace store. |
|
|
290
|
+
| `app/StorefrontShell.tsx` | Shows initialization failures and mounts storefront content after success. |
|
|
291
|
+
| `app/page.tsx`, `app/*/page.tsx` | Server-rendered public and account storefront routes. |
|
|
292
|
+
| `app/_storefront/` | Route controllers that connect components, navigation and API actions. |
|
|
293
|
+
| `proxy.ts` | Marks personalized pages `private, no-store`. |
|
|
294
|
+
| `lib/orionplace/` | Server transport, browser transport, envelope checks and domain resolution. |
|
|
295
|
+
| `stores/orionplace.ts` | Typed snapshot, status, merged discovery and selectors. |
|
|
296
|
+
| `stores/orionplaceSelections.ts` | Current locale, currency and unit choices with availability fallbacks. |
|
|
297
|
+
| `stores/orionplaceCatalog.ts` | Categories and subscription plans from initialization or later requests. |
|
|
298
|
+
| `stores/orionplaceProducts.ts` | Request-scoped product collections and customer-session product updates. |
|
|
299
|
+
| `stores/orionplaceBrowse.ts` | Search choices, selected filters and journal results. |
|
|
300
|
+
| `stores/orionplaceScope.ts` | Creates and synchronizes the stores before child components render. |
|
|
301
|
+
| `components/orionplace/` | Maintained React components, styles and bilingual component contracts. |
|
|
302
|
+
| `themes/orionplace.ts` | Light and dark storefront palettes and scoped color overrides. |
|
|
303
|
+
| `providers/OrionplaceProvider.tsx` | Provides one coordinated store scope per browser session. |
|
|
304
|
+
| `hooks/useOrionplaceAppLoad.ts` | Explicit initialize, refresh and reset actions. |
|
|
305
|
+
| `hooks/useOrionplaceApi.ts` | Browser API client with discovery, CSRF renewal and session refresh. |
|
|
306
|
+
| `interfaces/orionplace/` | The Application Load response envelope and every nested model. |
|
|
307
|
+
| `orionplace/runtime/marketplace.mjs` | Commented domain lookup and HTTP transport. |
|
|
308
|
+
| `orionplace/runtime/app.mjs` | `androidAppConfig`: the Android app build switch for `next.config.ts`. |
|
|
309
|
+
| `orionplace/README.md` | Your settings, API examples, file explanations, verification and VPS deployment. |
|
|
310
|
+
| `orionplace/settings.json` | Domain values selected by the CLI. |
|
|
311
|
+
| `orionplace/.generated.json` | File hashes used to preserve your edits on subsequent setup. |
|
|
312
|
+
| `sitemaps/shop.example.com.cfg` | One line: `https://your-project.orionplace.app/api`. |
|
|
313
|
+
| `.env` | `MIMIC_FRONT_DOMAIN="shop.example.com"` for localhost. |
|
|
106
314
|
|
|
107
315
|
Projects that use `src/` receive the application source under `src/` instead.
|
|
108
316
|
All generated source is yours to read and customize. Later setup runs preserve
|
|
@@ -157,15 +365,33 @@ Deploy `sitemaps` with the production server, or set an absolute `SITEMAPS_DIR`.
|
|
|
157
365
|
The production process reads `MIMIC_FRONT_DOMAIN` without rebuilding. Run the
|
|
158
366
|
server from the project root or explicitly point it at the configuration directory.
|
|
159
367
|
|
|
160
|
-
##
|
|
368
|
+
## Application Load starter
|
|
161
369
|
|
|
162
|
-
The root layout awaits `POST /api/appload`
|
|
370
|
+
The root layout awaits `POST /api/appload` before the page renders,
|
|
163
371
|
then hands the snapshot to the client provider. `getOrionplaceAppLoad()` is cached
|
|
164
372
|
per render, so a layout and a server component share one request. Client components
|
|
165
|
-
read the same snapshot through
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
373
|
+
read the same snapshot through the provider's main and domain-store hooks. The
|
|
374
|
+
provider initializes and synchronizes those stores before child components render;
|
|
375
|
+
hydration does not repeat the request. `useOrionplaceAppLoad()` provides explicit
|
|
376
|
+
`initialize`, `refresh` and `reset` actions. Reading a store or hook never starts a
|
|
377
|
+
request, and initialization never opens an authentication prompt.
|
|
378
|
+
|
|
379
|
+
The requested `?locale` is validated against Application Load before the
|
|
380
|
+
server render. Public product, article and tariff details load through the
|
|
381
|
+
maintained API client. Page metadata uses those returned records and follows
|
|
382
|
+
client navigation and language selection. Home-page event clicks open enrollment
|
|
383
|
+
for the returned event, preserving its return path through sign-in.
|
|
384
|
+
|
|
385
|
+
`StorefrontShell` mounts the header, route content and footer after Application
|
|
386
|
+
Load succeeds. If initialization fails, it shows `StorefrontErrorPage`; Retry
|
|
387
|
+
runs an explicit refresh and remains disabled while that request is pending.
|
|
388
|
+
|
|
389
|
+
`app/not-found.tsx` shows the native missing-page view for unknown addresses
|
|
390
|
+
and missing records. `app/error.tsx` and `app/global-error.tsx` show the native
|
|
391
|
+
failure view for unhandled errors. Error metadata is localized and excludes the
|
|
392
|
+
page from indexing. Home and Catalog preserve the selected locale; Retry reloads
|
|
393
|
+
the current address. The server snapshot contains the requested locale and its
|
|
394
|
+
currency and unit selections before components render.
|
|
169
395
|
|
|
170
396
|
Live discovery from `page_data.unauth.paths` and, for a signed-in session,
|
|
171
397
|
`page_data.auth.paths`, is merged into one lookup without mutating the response.
|
|
@@ -173,7 +399,7 @@ Discovery describes availability; the backend still checks permissions on each c
|
|
|
173
399
|
|
|
174
400
|
### Session and CSRF cookies
|
|
175
401
|
|
|
176
|
-
|
|
402
|
+
Application Load establishes the guest/customer session and CSRF cookie through HTTP
|
|
177
403
|
`Set-Cookie` headers, not through `page_data.init`. The browser handles the signed
|
|
178
404
|
HttpOnly `sessionid` cookie; never parse, rewrite, log or store its value in the
|
|
179
405
|
store or localStorage. The readable `csrftoken` supplies `X-CSRFToken` for later
|
|
@@ -187,11 +413,20 @@ session through `/api/...` requests. `requestAppLoad()` returns the raw `Set-Coo
|
|
|
187
413
|
values if you relay them from your own route handler or server action.
|
|
188
414
|
|
|
189
415
|
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
|
-
|
|
416
|
+
The backend signals CSRF rejection with HTTP `419`, or HTTP `403` with
|
|
417
|
+
`page_data.csrf: false`. A `403` without that flag may mean permissions or
|
|
418
|
+
origin rejection. The shared API client renews the token for the next action
|
|
419
|
+
and returns the failed request; the customer retries explicitly. After
|
|
420
|
+
confirmed login/logout, reset and refresh Application Load.
|
|
193
421
|
Those store actions update data; they do not authenticate or delete cookies.
|
|
194
422
|
|
|
423
|
+
|
|
424
|
+
When a request returns HTTP `401` while the store is signed in, the shared API
|
|
425
|
+
client clears profile, wallet, authenticated discovery, cart and wishlist counters
|
|
426
|
+
and account fields of cached products, then reloads Application Load as a guest.
|
|
427
|
+
Public data and the current selections remain available during that refresh.
|
|
428
|
+
The failed request is not repeated and no sign-in dialog opens automatically.
|
|
429
|
+
|
|
195
430
|
## Update an existing project
|
|
196
431
|
|
|
197
432
|
After the initial setup, use one command to get the latest package and components:
|
|
@@ -227,11 +462,17 @@ installation fails after source generation, run `npm install` and retry `update`
|
|
|
227
462
|
|
|
228
463
|
## Documentation
|
|
229
464
|
|
|
230
|
-
- [Create a Next.js frontend](https://orionmarket.place/sandbox/new-project/react)
|
|
231
|
-
- [Marketplace API documentation](https://orionmarket.place/sandbox/)
|
|
465
|
+
- [Create a Next.js frontend](https://orionmarket.place/en/sandbox/new-project/react)
|
|
466
|
+
- [Marketplace API documentation](https://orionmarket.place/en/sandbox/)
|
|
232
467
|
|
|
233
468
|
## Development
|
|
234
469
|
|
|
470
|
+
In this repository checkout, the package demo uses its own
|
|
471
|
+
`packages/orionplace-react/.env` and
|
|
472
|
+
`packages/orionplace-react/sitemaps/<storefront-domain>.cfg`.
|
|
473
|
+
Set the storefront's `MIMIC_FRONT_DOMAIN` and personal backend mapping there.
|
|
474
|
+
See [local demo configuration](DEVELOPMENT.md#local-demo-configuration).
|
|
475
|
+
|
|
235
476
|
```bash
|
|
236
477
|
npm install
|
|
237
478
|
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.
|
|
4
|
-
"description": "Next.js
|
|
3
|
+
"version": "0.2.0",
|
|
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>;
|