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.
Files changed (633) hide show
  1. package/README.md +276 -35
  2. package/bin/orionplace-react.mjs +4 -1
  3. package/package.json +18 -5
  4. package/runtime/app.d.mts +6 -0
  5. package/runtime/app.mjs +48 -0
  6. package/runtime/marketplace.d.mts +13 -8
  7. package/runtime/marketplace.mjs +287 -211
  8. package/src/project-readme.mjs +95 -35
  9. package/src/setup.mjs +36 -13
  10. package/templates/app/StorefrontShell.tsx +435 -0
  11. package/templates/app/[[...path]]/page.app.tsx +11 -0
  12. package/templates/app/_storefront/ActivityPage.tsx +23 -0
  13. package/templates/app/_storefront/AddressesPage.tsx +29 -0
  14. package/templates/app/_storefront/AppRoutes.tsx +182 -0
  15. package/templates/app/_storefront/ArticlePage.tsx +81 -0
  16. package/templates/app/_storefront/CartPage.tsx +53 -0
  17. package/templates/app/_storefront/CatalogPage.tsx +37 -0
  18. package/templates/app/_storefront/CategoryPage.tsx +64 -0
  19. package/templates/app/_storefront/ContactPage.tsx +32 -0
  20. package/templates/app/_storefront/HomePage.tsx +140 -0
  21. package/templates/app/_storefront/JournalPage.tsx +36 -0
  22. package/templates/app/_storefront/LogoutPage.tsx +91 -0
  23. package/templates/app/_storefront/ManufacturersPage.tsx +64 -0
  24. package/templates/app/_storefront/OrdersPage.tsx +129 -0
  25. package/templates/app/_storefront/ProductPage.tsx +105 -0
  26. package/templates/app/_storefront/ProfilePage.tsx +75 -0
  27. package/templates/app/_storefront/PromoPage.tsx +66 -0
  28. package/templates/app/_storefront/PromocodesPage.tsx +17 -0
  29. package/templates/app/_storefront/SearchPage.tsx +220 -0
  30. package/templates/app/_storefront/SellersPage.tsx +160 -0
  31. package/templates/app/_storefront/StorefrontErrorRoute.tsx +42 -0
  32. package/templates/app/_storefront/StorefrontPageMetadata.tsx +74 -0
  33. package/templates/app/_storefront/StorefrontPageStatus.tsx +61 -0
  34. package/templates/app/_storefront/StoresPage.tsx +53 -0
  35. package/templates/app/_storefront/SubscriptionsPage.tsx +62 -0
  36. package/templates/app/_storefront/SupportPage.tsx +141 -0
  37. package/templates/app/_storefront/TariffsPage.tsx +180 -0
  38. package/templates/app/_storefront/UnsubscribePage.tsx +29 -0
  39. package/templates/app/_storefront/WalletPage.tsx +78 -0
  40. package/templates/app/_storefront/WishlistPage.tsx +79 -0
  41. package/templates/app/_storefront/storefrontRoutes.tsx +738 -0
  42. package/templates/app/_storefront/useAccountWallet.ts +27 -0
  43. package/templates/app/_storefront/useBlogComments.ts +389 -0
  44. package/templates/app/_storefront/useProductSearch.ts +171 -0
  45. package/templates/app/_storefront/useStorefrontNavigation.ts +36 -0
  46. package/templates/app/activity/page.tsx +9 -0
  47. package/templates/app/addresses/page.tsx +9 -0
  48. package/templates/app/api/[...orionplace]/route.ts +11 -4
  49. package/templates/app/browse/page.tsx +27 -0
  50. package/templates/app/cart/page.tsx +9 -0
  51. package/templates/app/catalog/page.tsx +9 -0
  52. package/templates/app/category/[id]/page.tsx +9 -0
  53. package/templates/app/contact/page.tsx +9 -0
  54. package/templates/app/error.tsx +7 -0
  55. package/templates/app/featured/page.tsx +9 -0
  56. package/templates/app/global-error.tsx +61 -0
  57. package/templates/app/globals.css +50 -2
  58. package/templates/app/journal/[id]/page.tsx +9 -0
  59. package/templates/app/journal/page.tsx +9 -0
  60. package/templates/app/layout.app.tsx +20 -0
  61. package/templates/app/layout.tsx +44 -10
  62. package/templates/app/logout/page.tsx +9 -0
  63. package/templates/app/manufacturers/page.tsx +9 -0
  64. package/templates/app/not-found.tsx +5 -0
  65. package/templates/app/orders/page.tsx +9 -0
  66. package/templates/app/page.module.css +12 -8
  67. package/templates/app/page.tsx +8 -79
  68. package/templates/app/product/[id]/page.tsx +9 -0
  69. package/templates/app/profile/page.tsx +9 -0
  70. package/templates/app/promo/[id]/page.tsx +9 -0
  71. package/templates/app/promocodes/page.tsx +9 -0
  72. package/templates/app/ps3/blog/[...orionplace]/route.ts +13 -0
  73. package/templates/app/sellers/page.tsx +9 -0
  74. package/templates/app/storefront.module.css +406 -0
  75. package/templates/app/stores/page.tsx +9 -0
  76. package/templates/app/subscriptions/page.tsx +9 -0
  77. package/templates/app/tariffs/[slug]/[id]/page.tsx +9 -0
  78. package/templates/app/tariffs/page.tsx +9 -0
  79. package/templates/app/tickets/page.tsx +9 -0
  80. package/templates/app/unsubscribe/page.tsx +9 -0
  81. package/templates/app/wallet/page.tsx +9 -0
  82. package/templates/app/wishlist/page.tsx +9 -0
  83. package/templates/components/orionplace/account/AccountActivity.README.md +70 -0
  84. package/templates/components/orionplace/account/AccountActivity.module.css +16 -0
  85. package/templates/components/orionplace/account/AccountActivity.tsx +94 -0
  86. package/templates/components/orionplace/account/AccountPromocodes.README.md +70 -0
  87. package/templates/components/orionplace/account/AccountPromocodes.module.css +92 -0
  88. package/templates/components/orionplace/account/AccountPromocodes.tsx +257 -0
  89. package/templates/components/orionplace/account/AccountSection.README.md +46 -0
  90. package/templates/components/orionplace/account/AccountSection.module.css +110 -0
  91. package/templates/components/orionplace/account/AccountSection.tsx +109 -0
  92. package/templates/components/orionplace/account/ProfileAvatar.README.md +48 -0
  93. package/templates/components/orionplace/account/ProfileAvatar.module.css +31 -0
  94. package/templates/components/orionplace/account/ProfileAvatar.tsx +138 -0
  95. package/templates/components/orionplace/account/ProfileDeleteAccount.README.md +59 -0
  96. package/templates/components/orionplace/account/ProfileDeleteAccount.module.css +51 -0
  97. package/templates/components/orionplace/account/ProfileDeleteAccount.tsx +171 -0
  98. package/templates/components/orionplace/account/ProfileDetailsForm.README.md +44 -0
  99. package/templates/components/orionplace/account/ProfileDetailsForm.module.css +35 -0
  100. package/templates/components/orionplace/account/ProfileDetailsForm.tsx +178 -0
  101. package/templates/components/orionplace/account/ProfileEmailSettings.README.md +52 -0
  102. package/templates/components/orionplace/account/ProfileEmailSettings.module.css +51 -0
  103. package/templates/components/orionplace/account/ProfileEmailSettings.tsx +276 -0
  104. package/templates/components/orionplace/account/ProfilePasswordForm.README.md +45 -0
  105. package/templates/components/orionplace/account/ProfilePasswordForm.module.css +43 -0
  106. package/templates/components/orionplace/account/ProfilePasswordForm.tsx +227 -0
  107. package/templates/components/orionplace/account/ProfileSignIn.README.md +64 -0
  108. package/templates/components/orionplace/account/ProfileSignIn.module.css +86 -0
  109. package/templates/components/orionplace/account/ProfileSignIn.tsx +463 -0
  110. package/templates/components/orionplace/account/SignInHistory.README.md +52 -0
  111. package/templates/components/orionplace/account/SignInHistory.module.css +81 -0
  112. package/templates/components/orionplace/account/SignInHistory.tsx +231 -0
  113. package/templates/components/orionplace/account/StorefrontLogout.README.md +48 -0
  114. package/templates/components/orionplace/account/StorefrontLogout.module.css +166 -0
  115. package/templates/components/orionplace/account/StorefrontLogout.tsx +73 -0
  116. package/templates/components/orionplace/account/StorefrontProfile.README.md +71 -0
  117. package/templates/components/orionplace/account/StorefrontProfile.module.css +65 -0
  118. package/templates/components/orionplace/account/StorefrontProfile.tsx +189 -0
  119. package/templates/components/orionplace/account/account.module.css +1180 -0
  120. package/templates/components/orionplace/account/profile.module.css +696 -0
  121. package/templates/components/orionplace/address/AddressForm.README.md +152 -0
  122. package/templates/components/orionplace/address/AddressForm.module.css +336 -0
  123. package/templates/components/orionplace/address/AddressForm.tsx +827 -0
  124. package/templates/components/orionplace/address/StorefrontAddresses.README.md +99 -0
  125. package/templates/components/orionplace/address/StorefrontAddresses.module.css +271 -0
  126. package/templates/components/orionplace/address/StorefrontAddresses.tsx +438 -0
  127. package/templates/components/orionplace/banners/MainBanner.README.md +65 -0
  128. package/templates/components/orionplace/banners/MainBanner.module.css +112 -0
  129. package/templates/components/orionplace/banners/MainBanner.tsx +159 -0
  130. package/templates/components/orionplace/blog/BlogArticle.README.md +143 -0
  131. package/templates/components/orionplace/blog/BlogArticle.module.css +304 -0
  132. package/templates/components/orionplace/blog/BlogArticle.tsx +371 -0
  133. package/templates/components/orionplace/blog/BlogCommentForm.README.md +51 -0
  134. package/templates/components/orionplace/blog/BlogCommentForm.module.css +93 -0
  135. package/templates/components/orionplace/blog/BlogCommentForm.tsx +125 -0
  136. package/templates/components/orionplace/blog/BlogComments.README.md +98 -0
  137. package/templates/components/orionplace/blog/BlogComments.module.css +151 -0
  138. package/templates/components/orionplace/blog/BlogComments.tsx +590 -0
  139. package/templates/components/orionplace/blog/BlogPostCard.README.md +51 -0
  140. package/templates/components/orionplace/blog/BlogPostCard.module.css +167 -0
  141. package/templates/components/orionplace/blog/BlogPostCard.tsx +177 -0
  142. package/templates/components/orionplace/blog/BlogPostGroup.README.md +49 -0
  143. package/templates/components/orionplace/blog/BlogPostGroup.module.css +37 -0
  144. package/templates/components/orionplace/blog/BlogPostGroup.tsx +129 -0
  145. package/templates/components/orionplace/blog/StorefrontJournal.README.md +105 -0
  146. package/templates/components/orionplace/blog/StorefrontJournal.module.css +387 -0
  147. package/templates/components/orionplace/blog/StorefrontJournal.tsx +548 -0
  148. package/templates/components/orionplace/branding/BrandLogos.README.md +29 -0
  149. package/templates/components/orionplace/branding/BrandLogos.module.css +7 -0
  150. package/templates/components/orionplace/branding/BrandLogos.tsx +30 -0
  151. package/templates/components/orionplace/cart/CartCheckoutDetails.README.md +92 -0
  152. package/templates/components/orionplace/cart/CartCheckoutDetails.module.css +159 -0
  153. package/templates/components/orionplace/cart/CartCheckoutDetails.tsx +370 -0
  154. package/templates/components/orionplace/cart/CartDeliverySelector.README.md +166 -0
  155. package/templates/components/orionplace/cart/CartDeliverySelector.module.css +105 -0
  156. package/templates/components/orionplace/cart/CartDeliverySelector.tsx +679 -0
  157. package/templates/components/orionplace/cart/CartItemOptions.README.md +172 -0
  158. package/templates/components/orionplace/cart/CartItemOptions.module.css +113 -0
  159. package/templates/components/orionplace/cart/CartItemOptions.tsx +503 -0
  160. package/templates/components/orionplace/cart/CartLineItem.README.md +138 -0
  161. package/templates/components/orionplace/cart/CartLineItem.module.css +57 -0
  162. package/templates/components/orionplace/cart/CartLineItem.tsx +263 -0
  163. package/templates/components/orionplace/cart/CartPreview.README.md +99 -0
  164. package/templates/components/orionplace/cart/CartPreview.module.css +225 -0
  165. package/templates/components/orionplace/cart/CartPreview.tsx +188 -0
  166. package/templates/components/orionplace/cart/DeliveryMap.README.md +65 -0
  167. package/templates/components/orionplace/cart/DeliveryMap.module.css +32 -0
  168. package/templates/components/orionplace/cart/DeliveryMap.tsx +131 -0
  169. package/templates/components/orionplace/cart/StorefrontCart.README.md +281 -0
  170. package/templates/components/orionplace/cart/StorefrontCart.module.css +460 -0
  171. package/templates/components/orionplace/cart/StorefrontCart.tsx +937 -0
  172. package/templates/components/orionplace/catalog/CatalogHeader.README.md +136 -0
  173. package/templates/components/orionplace/catalog/CatalogHeader.module.css +387 -0
  174. package/templates/components/orionplace/catalog/CatalogHeader.tsx +644 -0
  175. package/templates/components/orionplace/catalog/CatalogRepresentative.README.md +68 -0
  176. package/templates/components/orionplace/catalog/CatalogRepresentative.tsx +51 -0
  177. package/templates/components/orionplace/catalog/StorefrontCatalog.README.md +120 -0
  178. package/templates/components/orionplace/catalog/StorefrontCatalog.module.css +179 -0
  179. package/templates/components/orionplace/catalog/StorefrontCatalog.tsx +304 -0
  180. package/templates/components/orionplace/categories/CategoryGroup.README.md +68 -0
  181. package/templates/components/orionplace/categories/CategoryGroup.module.css +110 -0
  182. package/templates/components/orionplace/categories/CategoryGroup.tsx +123 -0
  183. package/templates/components/orionplace/categories/StorefrontCategory.README.md +155 -0
  184. package/templates/components/orionplace/categories/StorefrontCategory.module.css +148 -0
  185. package/templates/components/orionplace/categories/StorefrontCategory.tsx +225 -0
  186. package/templates/components/orionplace/contact/AboutPage.README.md +40 -0
  187. package/templates/components/orionplace/contact/AboutPage.module.css +216 -0
  188. package/templates/components/orionplace/contact/AboutPage.tsx +191 -0
  189. package/templates/components/orionplace/contact/ContactForm.README.md +93 -0
  190. package/templates/components/orionplace/contact/ContactForm.module.css +264 -0
  191. package/templates/components/orionplace/contact/ContactForm.tsx +382 -0
  192. package/templates/components/orionplace/contact/EmailUnsubscribe.README.md +67 -0
  193. package/templates/components/orionplace/contact/EmailUnsubscribe.module.css +94 -0
  194. package/templates/components/orionplace/contact/EmailUnsubscribe.tsx +130 -0
  195. package/templates/components/orionplace/contact/StorefrontContact.README.md +73 -0
  196. package/templates/components/orionplace/contact/StorefrontContact.module.css +101 -0
  197. package/templates/components/orionplace/contact/StorefrontContact.tsx +62 -0
  198. package/templates/components/orionplace/currencies/MainCurrencySwitcher.README.md +37 -0
  199. package/templates/components/orionplace/currencies/MainCurrencySwitcher.tsx +68 -0
  200. package/templates/components/orionplace/events/EventEnrollmentDialog.README.md +108 -0
  201. package/templates/components/orionplace/events/EventEnrollmentDialog.module.css +110 -0
  202. package/templates/components/orionplace/events/EventEnrollmentDialog.tsx +315 -0
  203. package/templates/components/orionplace/events/EventsBlock.README.md +58 -0
  204. package/templates/components/orionplace/events/EventsBlock.module.css +101 -0
  205. package/templates/components/orionplace/events/EventsBlock.tsx +109 -0
  206. package/templates/components/orionplace/locale/MainLanguageSwitcher.README.md +46 -0
  207. package/templates/components/orionplace/locale/MainLanguageSwitcher.module.css +196 -0
  208. package/templates/components/orionplace/locale/MainLanguageSwitcher.tsx +387 -0
  209. package/templates/components/orionplace/manufacturers/ManufacturerIndex.README.md +83 -0
  210. package/templates/components/orionplace/manufacturers/ManufacturerIndex.module.css +271 -0
  211. package/templates/components/orionplace/manufacturers/ManufacturerIndex.tsx +218 -0
  212. package/templates/components/orionplace/manufacturers/StorefrontManufacturers.README.md +122 -0
  213. package/templates/components/orionplace/manufacturers/StorefrontManufacturers.module.css +92 -0
  214. package/templates/components/orionplace/manufacturers/StorefrontManufacturers.tsx +455 -0
  215. package/templates/components/orionplace/orders/OrderDetails.README.md +116 -0
  216. package/templates/components/orionplace/orders/OrderDetails.module.css +730 -0
  217. package/templates/components/orionplace/orders/OrderDetails.tsx +693 -0
  218. package/templates/components/orionplace/orders/OrderPaymentForm.README.md +92 -0
  219. package/templates/components/orionplace/orders/OrderPaymentForm.module.css +105 -0
  220. package/templates/components/orionplace/orders/OrderPaymentForm.tsx +90 -0
  221. package/templates/components/orionplace/orders/StorefrontOrders.README.md +131 -0
  222. package/templates/components/orionplace/orders/StorefrontOrders.module.css +633 -0
  223. package/templates/components/orionplace/orders/StorefrontOrders.tsx +922 -0
  224. package/templates/components/orionplace/payments/PaymentPanel.README.md +114 -0
  225. package/templates/components/orionplace/payments/PaymentPanel.module.css +134 -0
  226. package/templates/components/orionplace/payments/PaymentPanel.tsx +76 -0
  227. package/templates/components/orionplace/products/HoverImageViewer.README.md +62 -0
  228. package/templates/components/orionplace/products/HoverImageViewer.module.css +88 -0
  229. package/templates/components/orionplace/products/HoverImageViewer.tsx +179 -0
  230. package/templates/components/orionplace/products/ProductCard.README.md +152 -0
  231. package/templates/components/orionplace/products/ProductCard.module.css +333 -0
  232. package/templates/components/orionplace/products/ProductCard.tsx +716 -0
  233. package/templates/components/orionplace/products/ProductCardActions.README.md +84 -0
  234. package/templates/components/orionplace/products/ProductCardActions.module.css +146 -0
  235. package/templates/components/orionplace/products/ProductCardActions.tsx +311 -0
  236. package/templates/components/orionplace/products/ProductCardBadges.README.md +44 -0
  237. package/templates/components/orionplace/products/ProductCardBadges.module.css +15 -0
  238. package/templates/components/orionplace/products/ProductCardBadges.tsx +78 -0
  239. package/templates/components/orionplace/products/ProductCardDescription.README.md +33 -0
  240. package/templates/components/orionplace/products/ProductCardDescription.module.css +6 -0
  241. package/templates/components/orionplace/products/ProductCardDescription.tsx +43 -0
  242. package/templates/components/orionplace/products/ProductCardFavorite.README.md +52 -0
  243. package/templates/components/orionplace/products/ProductCardFavorite.module.css +64 -0
  244. package/templates/components/orionplace/products/ProductCardFavorite.tsx +90 -0
  245. package/templates/components/orionplace/products/ProductCardPrice.README.md +33 -0
  246. package/templates/components/orionplace/products/ProductCardPrice.module.css +22 -0
  247. package/templates/components/orionplace/products/ProductCardPrice.tsx +50 -0
  248. package/templates/components/orionplace/products/ProductCardRating.README.md +33 -0
  249. package/templates/components/orionplace/products/ProductCardRating.module.css +7 -0
  250. package/templates/components/orionplace/products/ProductCardRating.tsx +56 -0
  251. package/templates/components/orionplace/products/ProductCardSeller.README.md +36 -0
  252. package/templates/components/orionplace/products/ProductCardSeller.module.css +31 -0
  253. package/templates/components/orionplace/products/ProductCardSeller.tsx +61 -0
  254. package/templates/components/orionplace/products/ProductCardStockNotice.README.md +36 -0
  255. package/templates/components/orionplace/products/ProductCardStockNotice.module.css +8 -0
  256. package/templates/components/orionplace/products/ProductCardStockNotice.tsx +35 -0
  257. package/templates/components/orionplace/products/ProductCardTitle.README.md +30 -0
  258. package/templates/components/orionplace/products/ProductCardTitle.module.css +13 -0
  259. package/templates/components/orionplace/products/ProductCardTitle.tsx +31 -0
  260. package/templates/components/orionplace/products/ProductCardVariants.README.md +77 -0
  261. package/templates/components/orionplace/products/ProductCardVariants.module.css +97 -0
  262. package/templates/components/orionplace/products/ProductCardVariants.tsx +350 -0
  263. package/templates/components/orionplace/products/ProductGroup.README.md +89 -0
  264. package/templates/components/orionplace/products/ProductGroup.module.css +64 -0
  265. package/templates/components/orionplace/products/ProductGroup.tsx +183 -0
  266. package/templates/components/orionplace/products/ProductPreorderDialog.README.md +89 -0
  267. package/templates/components/orionplace/products/ProductPreorderDialog.module.css +320 -0
  268. package/templates/components/orionplace/products/ProductPreorderDialog.tsx +346 -0
  269. package/templates/components/orionplace/products/ProductReviewForm.README.md +72 -0
  270. package/templates/components/orionplace/products/ProductReviewForm.module.css +217 -0
  271. package/templates/components/orionplace/products/ProductReviewForm.tsx +288 -0
  272. package/templates/components/orionplace/products/ProductReviewGallery.README.md +61 -0
  273. package/templates/components/orionplace/products/ProductReviewGallery.module.css +108 -0
  274. package/templates/components/orionplace/products/ProductReviewGallery.tsx +110 -0
  275. package/templates/components/orionplace/products/ProductReviewImageViewer.README.md +49 -0
  276. package/templates/components/orionplace/products/ProductReviewImageViewer.module.css +50 -0
  277. package/templates/components/orionplace/products/ProductReviewImageViewer.tsx +260 -0
  278. package/templates/components/orionplace/products/ProductReviews.README.md +137 -0
  279. package/templates/components/orionplace/products/ProductReviews.module.css +602 -0
  280. package/templates/components/orionplace/products/ProductReviews.tsx +944 -0
  281. package/templates/components/orionplace/products/ProductSecondaryVariantModal.README.md +67 -0
  282. package/templates/components/orionplace/products/ProductSecondaryVariantModal.module.css +79 -0
  283. package/templates/components/orionplace/products/ProductSecondaryVariantModal.tsx +324 -0
  284. package/templates/components/orionplace/products/ProductSpecificationsDialog.README.md +52 -0
  285. package/templates/components/orionplace/products/ProductSpecificationsDialog.module.css +138 -0
  286. package/templates/components/orionplace/products/ProductSpecificationsDialog.tsx +117 -0
  287. package/templates/components/orionplace/products/StorefrontProduct.README.md +200 -0
  288. package/templates/components/orionplace/products/StorefrontProduct.module.css +767 -0
  289. package/templates/components/orionplace/products/StorefrontProduct.tsx +1339 -0
  290. package/templates/components/orionplace/products/StorefrontWishlist.README.md +162 -0
  291. package/templates/components/orionplace/products/StorefrontWishlist.module.css +71 -0
  292. package/templates/components/orionplace/products/StorefrontWishlist.tsx +402 -0
  293. package/templates/components/orionplace/promo/PromoProducts.README.md +133 -0
  294. package/templates/components/orionplace/promo/PromoProducts.module.css +68 -0
  295. package/templates/components/orionplace/promo/PromoProducts.tsx +345 -0
  296. package/templates/components/orionplace/search/MainSearch.README.md +73 -0
  297. package/templates/components/orionplace/search/MainSearch.module.css +202 -0
  298. package/templates/components/orionplace/search/MainSearch.tsx +217 -0
  299. package/templates/components/orionplace/search/ProductSearchResults.README.md +166 -0
  300. package/templates/components/orionplace/search/ProductSearchResults.module.css +358 -0
  301. package/templates/components/orionplace/search/ProductSearchResults.tsx +308 -0
  302. package/templates/components/orionplace/search/SearchFilters.README.md +109 -0
  303. package/templates/components/orionplace/search/SearchFilters.module.css +274 -0
  304. package/templates/components/orionplace/search/SearchFilters.tsx +439 -0
  305. package/templates/components/orionplace/sellers/SellerFilters.README.md +66 -0
  306. package/templates/components/orionplace/sellers/SellerFilters.module.css +232 -0
  307. package/templates/components/orionplace/sellers/SellerFilters.tsx +201 -0
  308. package/templates/components/orionplace/sellers/SellerPhotoGallery.README.md +72 -0
  309. package/templates/components/orionplace/sellers/SellerPhotoGallery.module.css +314 -0
  310. package/templates/components/orionplace/sellers/SellerPhotoGallery.tsx +335 -0
  311. package/templates/components/orionplace/sellers/SellerSummary.README.md +62 -0
  312. package/templates/components/orionplace/sellers/SellerSummary.module.css +182 -0
  313. package/templates/components/orionplace/sellers/SellerSummary.tsx +107 -0
  314. package/templates/components/orionplace/sellers/StorefrontSellers.README.md +120 -0
  315. package/templates/components/orionplace/sellers/StorefrontSellers.module.css +147 -0
  316. package/templates/components/orionplace/sellers/StorefrontSellers.tsx +360 -0
  317. package/templates/components/orionplace/shared/OrionplaceAvatar.README.md +35 -0
  318. package/templates/components/orionplace/shared/OrionplaceAvatar.module.css +35 -0
  319. package/templates/components/orionplace/shared/OrionplaceAvatar.tsx +61 -0
  320. package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.README.md +33 -0
  321. package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.module.css +81 -0
  322. package/templates/components/orionplace/shared/OrionplaceBreadcrumbs.tsx +91 -0
  323. package/templates/components/orionplace/shared/OrionplaceEmptyState.README.md +37 -0
  324. package/templates/components/orionplace/shared/OrionplaceEmptyState.module.css +126 -0
  325. package/templates/components/orionplace/shared/OrionplaceEmptyState.tsx +78 -0
  326. package/templates/components/orionplace/shared/OrionplaceImage.README.md +45 -0
  327. package/templates/components/orionplace/shared/OrionplaceImage.module.css +22 -0
  328. package/templates/components/orionplace/shared/OrionplaceImage.tsx +96 -0
  329. package/templates/components/orionplace/shared/OrionplaceInfoHint.README.md +31 -0
  330. package/templates/components/orionplace/shared/OrionplaceInfoHint.module.css +59 -0
  331. package/templates/components/orionplace/shared/OrionplaceInfoHint.tsx +126 -0
  332. package/templates/components/orionplace/shared/OrionplacePasswordInput.README.md +39 -0
  333. package/templates/components/orionplace/shared/OrionplacePasswordInput.module.css +79 -0
  334. package/templates/components/orionplace/shared/OrionplacePasswordInput.tsx +103 -0
  335. package/templates/components/orionplace/shared/OrionplaceSearchSelect.README.md +97 -0
  336. package/templates/components/orionplace/shared/OrionplaceSearchSelect.module.css +246 -0
  337. package/templates/components/orionplace/shared/OrionplaceSearchSelect.tsx +367 -0
  338. package/templates/components/orionplace/shared/OrionplaceSelect.README.md +69 -0
  339. package/templates/components/orionplace/shared/OrionplaceSelect.module.css +233 -0
  340. package/templates/components/orionplace/shared/OrionplaceSelect.tsx +439 -0
  341. package/templates/components/orionplace/shared/StorefrontErrorPage.README.md +52 -0
  342. package/templates/components/orionplace/shared/StorefrontErrorPage.module.css +141 -0
  343. package/templates/components/orionplace/shared/StorefrontErrorPage.tsx +103 -0
  344. package/templates/components/orionplace/shared/StorefrontPagination.README.md +39 -0
  345. package/templates/components/orionplace/shared/StorefrontPagination.module.css +69 -0
  346. package/templates/components/orionplace/shared/StorefrontPagination.tsx +102 -0
  347. package/templates/components/orionplace/shared/dialogs.css +36 -0
  348. package/templates/components/orionplace/shared/emptyStateArt.ts +231 -0
  349. package/templates/components/orionplace/shared/features.module.css +162 -0
  350. package/templates/components/orionplace/social/SocialLinks.README.md +16 -0
  351. package/templates/components/orionplace/social/SocialLinks.module.css +36 -0
  352. package/templates/components/orionplace/social/SocialLinks.tsx +59 -0
  353. package/templates/components/orionplace/storefront/StorefrontAccount.README.md +59 -0
  354. package/templates/components/orionplace/storefront/StorefrontAccount.module.css +159 -0
  355. package/templates/components/orionplace/storefront/StorefrontAccount.tsx +303 -0
  356. package/templates/components/orionplace/storefront/StorefrontCartButton.README.md +47 -0
  357. package/templates/components/orionplace/storefront/StorefrontCartButton.module.css +88 -0
  358. package/templates/components/orionplace/storefront/StorefrontCartButton.tsx +54 -0
  359. package/templates/components/orionplace/storefront/StorefrontFooter.README.md +55 -0
  360. package/templates/components/orionplace/storefront/StorefrontFooter.module.css +118 -0
  361. package/templates/components/orionplace/storefront/StorefrontFooter.tsx +165 -0
  362. package/templates/components/orionplace/storefront/StorefrontHeader.README.md +150 -0
  363. package/templates/components/orionplace/storefront/StorefrontHeader.module.css +186 -0
  364. package/templates/components/orionplace/storefront/StorefrontHeader.tsx +389 -0
  365. package/templates/components/orionplace/storefront/StorefrontHome.README.md +138 -0
  366. package/templates/components/orionplace/storefront/StorefrontHome.module.css +116 -0
  367. package/templates/components/orionplace/storefront/StorefrontHome.tsx +282 -0
  368. package/templates/components/orionplace/storefront/StorefrontWishlistButton.README.md +51 -0
  369. package/templates/components/orionplace/storefront/StorefrontWishlistButton.module.css +95 -0
  370. package/templates/components/orionplace/storefront/StorefrontWishlistButton.tsx +80 -0
  371. package/templates/components/orionplace/stores/StorefrontStores.README.md +87 -0
  372. package/templates/components/orionplace/stores/StorefrontStores.module.css +218 -0
  373. package/templates/components/orionplace/stores/StorefrontStores.tsx +396 -0
  374. package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.README.md +183 -0
  375. package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.module.css +347 -0
  376. package/templates/components/orionplace/subscriptions/StorefrontSubscriptions.tsx +884 -0
  377. package/templates/components/orionplace/subscriptions/StorefrontTariff.README.md +111 -0
  378. package/templates/components/orionplace/subscriptions/StorefrontTariff.module.css +311 -0
  379. package/templates/components/orionplace/subscriptions/StorefrontTariff.tsx +474 -0
  380. package/templates/components/orionplace/subscriptions/StorefrontTariffs.README.md +102 -0
  381. package/templates/components/orionplace/subscriptions/StorefrontTariffs.module.css +219 -0
  382. package/templates/components/orionplace/subscriptions/StorefrontTariffs.tsx +350 -0
  383. package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.README.md +67 -0
  384. package/templates/components/orionplace/subscriptions/SubscriptionCancelDialog.tsx +175 -0
  385. package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.README.md +95 -0
  386. package/templates/components/orionplace/subscriptions/SubscriptionChangeDialog.tsx +634 -0
  387. package/templates/components/orionplace/subscriptions/SubscriptionDialog.module.css +453 -0
  388. package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.README.md +75 -0
  389. package/templates/components/orionplace/subscriptions/SubscriptionExtendDialog.tsx +384 -0
  390. package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.README.md +116 -0
  391. package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.module.css +168 -0
  392. package/templates/components/orionplace/subscriptions/SubscriptionPlanSummary.tsx +236 -0
  393. package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.README.md +123 -0
  394. package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.module.css +57 -0
  395. package/templates/components/orionplace/subscriptions/SubscriptionRemoteDetails.tsx +101 -0
  396. package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.README.md +109 -0
  397. package/templates/components/orionplace/subscriptions/SubscriptionRenewalDialog.tsx +253 -0
  398. package/templates/components/orionplace/support/StorefrontSupport.README.md +157 -0
  399. package/templates/components/orionplace/support/StorefrontSupport.tsx +1040 -0
  400. package/templates/components/orionplace/support/Support.module.css +1133 -0
  401. package/templates/components/orionplace/support/TicketConversation.README.md +105 -0
  402. package/templates/components/orionplace/support/TicketConversation.tsx +502 -0
  403. package/templates/components/orionplace/support/TicketImage.README.md +52 -0
  404. package/templates/components/orionplace/support/TicketImage.tsx +254 -0
  405. package/templates/components/orionplace/support/TicketItemCard.README.md +66 -0
  406. package/templates/components/orionplace/support/TicketItemCard.tsx +140 -0
  407. package/templates/components/orionplace/support/TicketMessageForm.README.md +88 -0
  408. package/templates/components/orionplace/support/TicketMessageForm.tsx +261 -0
  409. package/templates/components/orionplace/support/TicketSubscriptionCard.README.md +53 -0
  410. package/templates/components/orionplace/support/TicketSubscriptionCard.tsx +118 -0
  411. package/templates/components/orionplace/tariffs/TariffCard.README.md +108 -0
  412. package/templates/components/orionplace/tariffs/TariffCard.module.css +86 -0
  413. package/templates/components/orionplace/tariffs/TariffCard.tsx +218 -0
  414. package/templates/components/orionplace/tariffs/TariffCardDescription.README.md +40 -0
  415. package/templates/components/orionplace/tariffs/TariffCardDescription.module.css +72 -0
  416. package/templates/components/orionplace/tariffs/TariffCardDescription.tsx +58 -0
  417. package/templates/components/orionplace/tariffs/TariffCardFeatures.README.md +58 -0
  418. package/templates/components/orionplace/tariffs/TariffCardFeatures.module.css +60 -0
  419. package/templates/components/orionplace/tariffs/TariffCardFeatures.tsx +140 -0
  420. package/templates/components/orionplace/tariffs/TariffCardImage.README.md +36 -0
  421. package/templates/components/orionplace/tariffs/TariffCardImage.module.css +8 -0
  422. package/templates/components/orionplace/tariffs/TariffCardImage.tsx +32 -0
  423. package/templates/components/orionplace/tariffs/TariffCardPrices.README.md +74 -0
  424. package/templates/components/orionplace/tariffs/TariffCardPrices.module.css +142 -0
  425. package/templates/components/orionplace/tariffs/TariffCardPrices.tsx +181 -0
  426. package/templates/components/orionplace/tariffs/TariffCardTitle.README.md +32 -0
  427. package/templates/components/orionplace/tariffs/TariffCardTitle.module.css +9 -0
  428. package/templates/components/orionplace/tariffs/TariffCardTitle.tsx +29 -0
  429. package/templates/components/orionplace/tariffs/TariffCards.README.md +88 -0
  430. package/templates/components/orionplace/tariffs/TariffCards.module.css +24 -0
  431. package/templates/components/orionplace/tariffs/TariffCards.tsx +44 -0
  432. package/templates/components/orionplace/tariffs/TariffSubscriptionModal.README.md +92 -0
  433. package/templates/components/orionplace/tariffs/TariffSubscriptionModal.module.css +214 -0
  434. package/templates/components/orionplace/tariffs/TariffSubscriptionModal.tsx +299 -0
  435. package/templates/components/orionplace/theme/OrionplaceThemeProvider.README.md +30 -0
  436. package/templates/components/orionplace/theme/OrionplaceThemeProvider.module.css +8 -0
  437. package/templates/components/orionplace/theme/OrionplaceThemeProvider.tsx +32 -0
  438. package/templates/components/orionplace/units/UnitSwitcher.README.md +35 -0
  439. package/templates/components/orionplace/units/UnitSwitcher.tsx +58 -0
  440. package/templates/components/orionplace/wallet/StorefrontWallet.README.md +154 -0
  441. package/templates/components/orionplace/wallet/StorefrontWallet.module.css +507 -0
  442. package/templates/components/orionplace/wallet/StorefrontWallet.tsx +915 -0
  443. package/templates/components/orionplace/wallet/WalletBalance.README.md +46 -0
  444. package/templates/components/orionplace/wallet/WalletBalance.module.css +46 -0
  445. package/templates/components/orionplace/wallet/WalletBalance.tsx +51 -0
  446. package/templates/components/orionplace/wallet/WalletTopUpForm.README.md +54 -0
  447. package/templates/components/orionplace/wallet/WalletTopUpForm.module.css +152 -0
  448. package/templates/components/orionplace/wallet/WalletTopUpForm.tsx +181 -0
  449. package/templates/hooks/useAccountActivity.ts +251 -0
  450. package/templates/hooks/useAccountAddresses.ts +81 -0
  451. package/templates/hooks/useAccountPromocodes.ts +91 -0
  452. package/templates/hooks/useOrionplaceActionMenu.ts +118 -0
  453. package/templates/hooks/useOrionplaceAddressForm.ts +262 -0
  454. package/templates/hooks/useOrionplaceApi.ts +98 -0
  455. package/templates/hooks/useOrionplaceAppLoad.ts +38 -6
  456. package/templates/hooks/useOrionplaceBlogReading.ts +351 -0
  457. package/templates/hooks/useOrionplaceDialog.ts +85 -0
  458. package/templates/hooks/useOrionplaceHomeProducts.ts +97 -0
  459. package/templates/hooks/useOrionplaceMap.tsx +230 -0
  460. package/templates/hooks/useOrionplaceMediaFormat.ts +33 -0
  461. package/templates/hooks/useOrionplaceProduct.ts +28 -0
  462. package/templates/hooks/useOrionplaceProfile.ts +347 -0
  463. package/templates/hooks/useOrionplaceReviews.ts +352 -0
  464. package/templates/hooks/useOrionplaceStableHeight.ts +65 -0
  465. package/templates/hooks/useOrionplaceStorefront.tsx +575 -0
  466. package/templates/hooks/useOrionplaceTariffPurchase.ts +152 -0
  467. package/templates/interfaces/orionplace/accounts/IContact.ts +21 -0
  468. package/templates/interfaces/orionplace/accounts/IEmailNotificationLocale.ts +17 -0
  469. package/templates/interfaces/orionplace/accounts/IEmailVerification.ts +59 -0
  470. package/templates/interfaces/orionplace/accounts/IProfileActions.ts +38 -0
  471. package/templates/interfaces/orionplace/accounts/IProfileData.ts +123 -0
  472. package/templates/interfaces/orionplace/accounts/IProfileMedia.ts +17 -0
  473. package/templates/interfaces/orionplace/accounts/IStorefrontProfile.ts +54 -0
  474. package/templates/interfaces/orionplace/address/IAddressCitySuggestion.ts +19 -0
  475. package/templates/interfaces/orionplace/address/IAddressEditor.ts +9 -0
  476. package/templates/interfaces/orionplace/address/IAddressLocationSuggestion.ts +22 -0
  477. package/templates/interfaces/orionplace/address/IAddressRegionSearch.ts +30 -0
  478. package/templates/interfaces/orionplace/address/IAddressSuggestion.ts +20 -0
  479. package/templates/interfaces/orionplace/address/IUserAddress.ts +87 -0
  480. package/templates/interfaces/orionplace/appBase/IAppLoad.ts +4 -3
  481. package/templates/interfaces/orionplace/appBase/IAppLoadCommon.ts +22 -31
  482. package/templates/interfaces/orionplace/appBase/IApploadUserProfile.ts +1 -1
  483. package/templates/interfaces/orionplace/appBase/IForm.ts +1 -1
  484. package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonBanner.ts +7 -7
  485. package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonPath.ts +2 -2
  486. package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonSEO.ts +20 -7
  487. package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonTariff.ts +2 -2
  488. package/templates/interfaces/orionplace/appBase/appLoadCommon/IAppLoadCommonVariables.ts +1 -0
  489. package/templates/interfaces/orionplace/blog/IBlogApi.ts +247 -0
  490. package/templates/interfaces/orionplace/blog/IBlogPostPreview.ts +30 -0
  491. package/templates/interfaces/orionplace/cart/ICartActions.ts +67 -0
  492. package/templates/interfaces/orionplace/cart/ICartData.ts +382 -0
  493. package/templates/interfaces/orionplace/cart/ICartDeliveryActions.ts +68 -0
  494. package/templates/interfaces/orionplace/cart/ICartModal.ts +22 -0
  495. package/templates/interfaces/orionplace/cart/IDeliveryMap.ts +29 -0
  496. package/templates/interfaces/orionplace/catalog/ICatalogDirectory.ts +75 -0
  497. package/templates/interfaces/orionplace/category/ICategory.ts +2 -1
  498. package/templates/interfaces/orionplace/domains/IDomain.ts +2 -2
  499. package/templates/interfaces/orionplace/forms/ICustomerSubfilter.ts +19 -0
  500. package/templates/interfaces/orionplace/index.ts +64 -30
  501. package/templates/interfaces/orionplace/marketing/IPromoActions.ts +51 -0
  502. package/templates/interfaces/orionplace/orders/IOrderActions.ts +99 -0
  503. package/templates/interfaces/orionplace/orders/IOrderHistory.ts +259 -0
  504. package/templates/interfaces/orionplace/orders/IProductPreorder.ts +31 -0
  505. package/templates/interfaces/orionplace/payments/IInvoice.ts +147 -0
  506. package/templates/interfaces/orionplace/products/IProduct.ts +178 -151
  507. package/templates/interfaces/orionplace/products/IProductFeedbackApi.ts +218 -0
  508. package/templates/interfaces/orionplace/products/IProductSearchApi.ts +146 -0
  509. package/templates/interfaces/orionplace/products/IProductSearchFacets.ts +35 -0
  510. package/templates/interfaces/orionplace/products/IProductSecondaryVariantRequest.ts +15 -0
  511. package/templates/interfaces/orionplace/products/IProductSpecification.ts +14 -0
  512. package/templates/interfaces/orionplace/products/IWishlist.ts +22 -0
  513. package/templates/interfaces/orionplace/sellers/ISellerDirectory.ts +70 -0
  514. package/templates/interfaces/orionplace/shared/IBreadcrumb.ts +10 -0
  515. package/templates/interfaces/orionplace/shared/IStorefrontControls.ts +6 -0
  516. package/templates/interfaces/orionplace/state.ts +1 -1
  517. package/templates/interfaces/orionplace/stores/IStoreDirectory.ts +63 -0
  518. package/templates/interfaces/orionplace/subscribeTariff/ISubscribeTariff.ts +41 -31
  519. package/templates/interfaces/orionplace/subscribeTariff/ITariffSelection.ts +11 -0
  520. package/templates/interfaces/orionplace/subscribes/ISubscribe.ts +1 -1
  521. package/templates/interfaces/orionplace/subscribes/ISubscriptionApi.ts +125 -0
  522. package/templates/interfaces/orionplace/tickets/ICustomerTicketApi.ts +223 -0
  523. package/templates/interfaces/orionplace/transport.ts +7 -3
  524. package/templates/lib/orionplace/accountLabels.ts +22 -0
  525. package/templates/lib/orionplace/activityLabels.ts +65 -0
  526. package/templates/lib/orionplace/activityPresentation.ts +9 -0
  527. package/templates/lib/orionplace/addressChanges.ts +26 -0
  528. package/templates/lib/orionplace/addressPresentation.ts +58 -0
  529. package/templates/lib/orionplace/api.ts +326 -0
  530. package/templates/lib/orionplace/appLoadClient.ts +63 -21
  531. package/templates/lib/orionplace/appLoadResult.ts +75 -21
  532. package/templates/lib/orionplace/appLoadServer.ts +66 -21
  533. package/templates/lib/orionplace/blogArticle.ts +97 -0
  534. package/templates/lib/orionplace/blogArticleHtml.ts +370 -0
  535. package/templates/lib/orionplace/blogComments.ts +102 -0
  536. package/templates/lib/orionplace/blogJournal.ts +115 -0
  537. package/templates/lib/orionplace/blogLabels.ts +108 -0
  538. package/templates/lib/orionplace/blogPresentation.ts +67 -0
  539. package/templates/lib/orionplace/browseLabels.ts +98 -0
  540. package/templates/lib/orionplace/cartAddress.ts +86 -0
  541. package/templates/lib/orionplace/cartController.ts +104 -0
  542. package/templates/lib/orionplace/cartLabels.ts +261 -0
  543. package/templates/lib/orionplace/cartOptions.ts +115 -0
  544. package/templates/lib/orionplace/cartPreview.ts +120 -0
  545. package/templates/lib/orionplace/cartPromo.ts +150 -0
  546. package/templates/lib/orionplace/cartShipment.ts +61 -0
  547. package/templates/lib/orionplace/cartSnapshot.ts +21 -0
  548. package/templates/lib/orionplace/catalog.ts +150 -0
  549. package/templates/lib/orionplace/categoryLabels.ts +21 -0
  550. package/templates/lib/orionplace/contact.ts +47 -0
  551. package/templates/lib/orionplace/contactLabels.ts +102 -0
  552. package/templates/lib/orionplace/currency.ts +128 -0
  553. package/templates/lib/orionplace/deliveryMap.ts +86 -0
  554. package/templates/lib/orionplace/directoryLabels.ts +133 -0
  555. package/templates/lib/orionplace/domain.ts +11 -6
  556. package/templates/lib/orionplace/errorPageLabels.ts +74 -0
  557. package/templates/lib/orionplace/eventEnrollment.ts +22 -0
  558. package/templates/lib/orionplace/featureData.ts +28 -0
  559. package/templates/lib/orionplace/featureLabels.ts +271 -0
  560. package/templates/lib/orionplace/featuredLabels.ts +28 -0
  561. package/templates/lib/orionplace/footerLabels.ts +35 -0
  562. package/templates/lib/orionplace/guestSession.ts +55 -0
  563. package/templates/lib/orionplace/headerLabels.ts +68 -0
  564. package/templates/lib/orionplace/homeContent.ts +193 -0
  565. package/templates/lib/orionplace/homeLabels.ts +52 -0
  566. package/templates/lib/orionplace/htmlText.ts +51 -0
  567. package/templates/lib/orionplace/manufacturerDirectory.ts +71 -0
  568. package/templates/lib/orionplace/manufacturerIndex.ts +92 -0
  569. package/templates/lib/orionplace/modalWindow.ts +109 -0
  570. package/templates/lib/orionplace/nativeApp.ts +365 -0
  571. package/templates/lib/orionplace/navigation.tsx +121 -0
  572. package/templates/lib/orionplace/notice.ts +22 -0
  573. package/templates/lib/orionplace/orderLabels.ts +311 -0
  574. package/templates/lib/orionplace/orderPresentation.ts +574 -0
  575. package/templates/lib/orionplace/pageMetadata.ts +247 -0
  576. package/templates/lib/orionplace/pageSeo.ts +274 -0
  577. package/templates/lib/orionplace/paginationScroll.ts +131 -0
  578. package/templates/lib/orionplace/phone.ts +22 -0
  579. package/templates/lib/orionplace/presentation.ts +84 -0
  580. package/templates/lib/orionplace/productActionLabels.ts +60 -0
  581. package/templates/lib/orionplace/productAvailability.ts +30 -0
  582. package/templates/lib/orionplace/productGallery.ts +64 -0
  583. package/templates/lib/orionplace/productLabels.ts +82 -0
  584. package/templates/lib/orionplace/productPage.ts +308 -0
  585. package/templates/lib/orionplace/productPhotos.ts +67 -0
  586. package/templates/lib/orionplace/productSearch.ts +232 -0
  587. package/templates/lib/orionplace/productSeller.ts +56 -0
  588. package/templates/lib/orionplace/profile.ts +157 -0
  589. package/templates/lib/orionplace/profileLabels.ts +151 -0
  590. package/templates/lib/orionplace/promoLabels.ts +75 -0
  591. package/templates/lib/orionplace/promoPresentation.ts +381 -0
  592. package/templates/lib/orionplace/reviewLabels.ts +172 -0
  593. package/templates/lib/orionplace/reviewPresentation.ts +64 -0
  594. package/templates/lib/orionplace/reviewScope.ts +38 -0
  595. package/templates/lib/orionplace/searchFilters.ts +99 -0
  596. package/templates/lib/orionplace/searchHistory.ts +144 -0
  597. package/templates/lib/orionplace/sellerDirectory.ts +120 -0
  598. package/templates/lib/orionplace/seo.ts +52 -0
  599. package/templates/lib/orionplace/serverApi.ts +158 -0
  600. package/templates/lib/orionplace/serverLocale.ts +29 -0
  601. package/templates/lib/orionplace/serverMetadata.ts +86 -0
  602. package/templates/lib/orionplace/serverRecords.ts +25 -0
  603. package/templates/lib/orionplace/serverRoute.tsx +51 -0
  604. package/templates/lib/orionplace/sessionLabels.ts +27 -0
  605. package/templates/lib/orionplace/signInReturn.ts +89 -0
  606. package/templates/lib/orionplace/storeDirectory.ts +47 -0
  607. package/templates/lib/orionplace/storefrontRecords.ts +29 -0
  608. package/templates/lib/orionplace/subscriptionChanges.ts +120 -0
  609. package/templates/lib/orionplace/subscriptionLabels.ts +67 -0
  610. package/templates/lib/orionplace/subscriptionManageLabels.ts +306 -0
  611. package/templates/lib/orionplace/subscriptionPlans.ts +122 -0
  612. package/templates/lib/orionplace/subscriptionRemote.ts +85 -0
  613. package/templates/lib/orionplace/subscriptionUsage.ts +58 -0
  614. package/templates/lib/orionplace/tariffLabels.ts +123 -0
  615. package/templates/lib/orionplace/tariffPage.ts +54 -0
  616. package/templates/lib/orionplace/tariffVariables.ts +136 -0
  617. package/templates/lib/orionplace/tariffs.ts +192 -0
  618. package/templates/lib/orionplace/ticketItems.ts +75 -0
  619. package/templates/lib/orionplace/ticketLabels.ts +335 -0
  620. package/templates/lib/orionplace/ticketLocation.ts +79 -0
  621. package/templates/lib/orionplace/ticketRequests.ts +70 -0
  622. package/templates/lib/orionplace/walletTransaction.ts +105 -0
  623. package/templates/orionplace/COMPONENT-DOWNLOAD.md +66 -0
  624. package/templates/orionplace/COMPONENTS.md +35 -0
  625. package/templates/providers/OrionplaceProvider.tsx +164 -12
  626. package/templates/proxy.ts +8 -3
  627. package/templates/stores/orionplace.ts +212 -49
  628. package/templates/stores/orionplaceBrowse.ts +89 -0
  629. package/templates/stores/orionplaceCatalog.ts +144 -0
  630. package/templates/stores/orionplaceProducts.ts +389 -0
  631. package/templates/stores/orionplaceScope.ts +104 -0
  632. package/templates/stores/orionplaceSelections.ts +130 -0
  633. 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 AppLoad
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 starter and
30
- integration README. The first frontend becomes the local MIMIC domain. Open the
31
- local URL printed by Next.js (normally http://localhost:3000); the starter's
32
- AppLoad state should show `Loaded`. If it shows `Failed`, check your domain
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 | Purpose |
90
- | --- | --- |
91
- | `app/api/[...orionplace]/route.ts` | Route handler serving `/api/...` from your project. |
92
- | `app/layout.tsx` | Awaits initialization and provides the marketplace store. |
93
- | `app/page.tsx` | Starter page showing the AppLoad state; replace it with your storefront. |
94
- | `proxy.ts` | Marks personalized pages `private, no-store`. |
95
- | `lib/orionplace/` | Server transport, browser transport, envelope checks and domain resolution. |
96
- | `stores/orionplace.ts` | Typed snapshot, status, merged discovery and selectors. |
97
- | `providers/OrionplaceProvider.tsx` | One store per browser session, hydrated from the server render. |
98
- | `hooks/useOrionplaceAppLoad.ts` | Explicit initialize, refresh and reset actions. |
99
- | `interfaces/orionplace/` | The AppLoad response envelope and every nested model. |
100
- | `orionplace/runtime/marketplace.mjs` | Commented domain lookup and HTTP transport. |
101
- | `orionplace/README.md` | Your settings, API examples, file explanations, verification and VPS deployment. |
102
- | `orionplace/settings.json` | Domain values selected by the CLI. |
103
- | `orionplace/.generated.json` | File hashes used to preserve your edits on subsequent setup. |
104
- | `sitemaps/shop.example.com.cfg` | One line: `https://your-project.orionplace.app/api`. |
105
- | `.env` | `MIMIC_FRONT_DOMAIN="shop.example.com"` for localhost. |
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
- ## AppLoad starter
368
+ ## Application Load starter
161
369
 
162
- The root layout awaits `POST /api/appload` in light mode before the page renders,
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 `useOrionplace(selector)`; hydration does not repeat
166
- the request. `useOrionplaceAppLoad()` provides explicit `initialize`, `refresh` and
167
- `reset` actions. Reading the store or hook never starts a request, and initialization
168
- never opens an authentication prompt.
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
- AppLoad establishes the guest/customer session and CSRF cookie through HTTP
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` and `page_data.csrf: false`;
191
- a general `403` may mean permissions or origin rejection. Do not automatically
192
- replay mutations. After confirmed login/logout, reset and refresh AppLoad.
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
@@ -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 starter's AppLoad state should show Loaded.
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.0",
4
- "description": "Next.js integration and setup CLI for your Orionplace personal marketplace backend.",
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
- "marketplace"
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;
@@ -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
- mimicFrontDomain?: string;
2
+ mimicFrontDomain?: string;
3
3
  }
4
4
 
5
5
  export interface MarketplaceTenant {
6
- domain: string;
7
- api: URL;
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 resolveFrontDomain(request: Request, mimic?: string): string | null;
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
- request: Request,
16
- configuration?: MarketplaceConfiguration,
20
+ request: Request,
21
+ configuration?: MarketplaceConfiguration,
17
22
  ): Promise<MarketplaceTenant>;
18
23
 
19
24
  export declare function forwardMarketplace(
20
- request: Request,
21
- configuration?: MarketplaceConfiguration,
25
+ request: Request,
26
+ configuration?: MarketplaceConfiguration,
22
27
  ): Promise<Response>;