orionplace-react 0.1.0 → 0.2.1

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