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
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+
3
+ import {
4
+ useOrionplaceCatalog,
5
+ useOrionplaceSelections,
6
+ } from '@/providers/OrionplaceProvider';
7
+ import { getAvailableNestedValueFromObject } from '@/lib/orionplace/presentation';
8
+ import { OrionplaceImage } from '@/components/orionplace/shared/OrionplaceImage';
9
+ import styles from './TariffCardImage.module.css';
10
+
11
+ export function TariffCardImage({ tariffId }: { tariffId: number }) {
12
+ const tariff = useOrionplaceCatalog((state) =>
13
+ state.tariffs?.data.find((entry) => entry.id === tariffId),
14
+ );
15
+ const locale = useOrionplaceSelections((state) => state.localeCode);
16
+ const source = tariff?.tariff_image?.small[0];
17
+ const title = getAvailableNestedValueFromObject(
18
+ tariff?.locales,
19
+ locale,
20
+ 'tariff_name',
21
+ );
22
+
23
+ return source ? (
24
+ <OrionplaceImage
25
+ src={source}
26
+ alt={title || ''}
27
+ width={640}
28
+ height={160}
29
+ className={styles.image}
30
+ />
31
+ ) : null;
32
+ }
@@ -0,0 +1,74 @@
1
+ # TariffCardPrices · React
2
+
3
+ ## English
4
+
5
+ `TariffCardPrices` reads `tariffId`, the parent subscription and the selected
6
+ currency from the isolated stores. Paid periods are ordered by duration. When
7
+ several are available, choosing one calls `onPeriodChange(tariff_cost_id)`.
8
+ `selectedPeriod` selects that period; a missing or unavailable value falls back
9
+ to the shortest returned paid period. Each amount uses the selected currency's
10
+ left and right symbols. A positive `trial_days` adds the trial action.
11
+
12
+ The plan and its parent subscription must both allow customer subscriptions.
13
+ An administrator-only or closed plan shows its localized reason instead of
14
+ actions. `disabled` blocks actions. For a signed-in visitor, a paid or trial
15
+ choice calls `onSelect({ tariff, price })`; `price` is the selected
16
+ `tariff_cost_id`, or `null` for a trial. With `guest`, the same action calls
17
+ `onRequireSignIn(returnPath)` so the application can authenticate the visitor
18
+ and restore the exact choice. `label` replaces the paid action caption, and
19
+ `periodLabel` replaces the localized day word when the parent supplies a unit.
20
+
21
+ The component makes no requests. Source is maintained in
22
+ `components/orionplace/tariffs/TariffCardPrices.tsx`.
23
+
24
+ ### Props
25
+
26
+ | Prop | Meaning |
27
+ | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
28
+ | `tariffId: number` | ID of the tariff handled by TariffCardPrices. |
29
+ | `selectedPeriod?: number` | Billing period currently selected in the price control. |
30
+ | `disabled?: boolean` | Disables the component controls and prevents new actions. |
31
+ | `guest?: boolean` | Uses the signed-out purchase path and sign-in action. |
32
+ | `periodLabel?: string` | Visible or accessible label for period. |
33
+ | `label?: string` | Visible or accessible name for the component’s main control or region. |
34
+ | `onPeriodChange?: (period: number) => void` | Passes the selected paid period’s `tariff_cost_id`. The application supplies it through `selectedPeriod`. |
35
+ | `onSelect?: (selection: ITariffSelection) => void` | Selecting an available subscription passes the tariff ID in `tariff` and `tariff_cost_id` in `price`; a trial has `price: null`. The application opens confirmation. |
36
+ | `onRequireSignIn?: (returnPath: string) => void` | Called when the visitor must sign in before continuing. The callback payload is shown in its type. |
37
+
38
+ ## Русский
39
+
40
+ `TariffCardPrices` читает тариф с указанным `tariffId`, родительскую подписку и
41
+ выбранную валюту из отдельных хранилищ. Платные периоды сортируются по
42
+ длительности. Если их несколько, выбор вызывает
43
+ `onPeriodChange(tariff_cost_id)`. `selectedPeriod` задаёт период; отсутствующее
44
+ или недоступное значение заменяется самым коротким полученным платным периодом.
45
+ Сумма использует левый и правый символы выбранной валюты. Положительное
46
+ `trial_days` добавляет действие пробного периода.
47
+
48
+ Тариф и его родительская подписка должны разрешать самостоятельное
49
+ подключение. Для закрытого тарифа или тарифа администратора вместо действий
50
+ показывается локализованная причина. `disabled` блокирует действия. Для
51
+ авторизованного посетителя платный или пробный выбор вызывает
52
+ `onSelect({ tariff, price })`, где `price` содержит выбранный
53
+ `tariff_cost_id` или `null` для пробного периода. С `guest` то же действие
54
+ вызывает `onRequireSignIn(returnPath)`, чтобы приложение выполнило вход и
55
+ восстановило точный выбор. `label` заменяет текст платной кнопки, а
56
+ `periodLabel` — локализованное слово «день», если родитель передаёт свою
57
+ единицу.
58
+
59
+ Компонент не отправляет запросы. Исходный файл:
60
+ `components/orionplace/tariffs/TariffCardPrices.tsx`.
61
+
62
+ ### Свойства
63
+
64
+ | Свойство | Назначение |
65
+ | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
66
+ | `tariffId: number` | ID тарифа, с которым работает TariffCardPrices. |
67
+ | `selectedPeriod?: number` | Период оплаты, выбранный в блоке цены. |
68
+ | `disabled?: boolean` | Блокирует элементы компонента и новые действия. |
69
+ | `guest?: boolean` | Использует сценарий покупки без входа и действие входа. |
70
+ | `periodLabel?: string` | Видимая или доступная подпись для периода. |
71
+ | `label?: string` | Видимое или доступное название основного элемента компонента. |
72
+ | `onPeriodChange?: (period: number) => void` | Передаёт `tariff_cost_id` выбранного платного периода. Приложение передаёт его в `selectedPeriod`. |
73
+ | `onSelect?: (selection: ITariffSelection) => void` | При выборе доступного подключения передаёт ID тарифа в `tariff` и `tariff_cost_id` в `price`; для пробного периода `price` равен `null`. Приложение открывает подтверждение. |
74
+ | `onRequireSignIn?: (returnPath: string) => void` | Вызывается, когда покупателю нужно войти перед продолжением. Данные обработчика указаны в его типе. |
@@ -0,0 +1,142 @@
1
+ /*
2
+ * Three rows of the card, as in the other packages: the period choice, the
3
+ * price and the actions or the note. Inside a card they are rows of the shared
4
+ * card grid, so every card in a row starts its price and actions level.
5
+ */
6
+ .root {
7
+ display: grid;
8
+ min-width: 0;
9
+ grid-row: span 3;
10
+ grid-template-rows: subgrid;
11
+ row-gap: 0;
12
+ color: var(--orionplace-text);
13
+ font-size: 0.875rem;
14
+ line-height: calc(1.25 / 0.875);
15
+ }
16
+
17
+ .periods {
18
+ display: grid;
19
+ grid-row: 1;
20
+ align-content: start;
21
+ gap: 0.5rem;
22
+ }
23
+
24
+ .periods > p {
25
+ margin: 0;
26
+ color: var(--orionplace-muted);
27
+ font-size: 0.75rem;
28
+ line-height: calc(1 / 0.75);
29
+ letter-spacing: 0.08em;
30
+ text-transform: uppercase;
31
+ }
32
+
33
+ .periods > div {
34
+ display: flex;
35
+ flex-wrap: wrap;
36
+ gap: 0.5rem;
37
+ }
38
+
39
+ .periods button {
40
+ display: inline-flex;
41
+ min-height: 2.25rem;
42
+ align-items: center;
43
+ padding: 0 0.75rem;
44
+ border: 1px solid var(--orionplace-border);
45
+ background: var(--orionplace-surface);
46
+ color: var(--orionplace-muted);
47
+ cursor: pointer;
48
+ font: inherit;
49
+ font-size: 0.75rem;
50
+ line-height: calc(1 / 0.75);
51
+ }
52
+
53
+ .periods button:focus-visible,
54
+ .periods button[aria-pressed='true'] {
55
+ border-color: var(--orionplace-text);
56
+ color: var(--orionplace-text);
57
+ }
58
+
59
+ @media (hover: hover) {
60
+ .periods button:hover {
61
+ border-color: var(--orionplace-text);
62
+ color: var(--orionplace-text);
63
+ }
64
+ }
65
+
66
+ .price {
67
+ grid-row: 2;
68
+ margin-top: 1rem;
69
+ }
70
+
71
+ .price p {
72
+ display: flex;
73
+ flex-wrap: wrap;
74
+ align-items: baseline;
75
+ gap: 0.25rem 0.5rem;
76
+ margin: 0;
77
+ }
78
+
79
+ .price span {
80
+ font-size: 1.5rem;
81
+ font-weight: 500;
82
+ font-variant-numeric: tabular-nums;
83
+ line-height: 1.25;
84
+ }
85
+
86
+ .price small {
87
+ color: var(--orionplace-muted);
88
+ font-size: 0.75rem;
89
+ line-height: calc(1 / 0.75);
90
+ letter-spacing: 0.08em;
91
+ text-transform: uppercase;
92
+ }
93
+
94
+ .actions {
95
+ display: grid;
96
+ grid-row: 3;
97
+ margin-top: 1rem;
98
+ align-content: start;
99
+ gap: 0.5rem;
100
+ }
101
+
102
+ .actions button {
103
+ display: inline-flex;
104
+ min-height: 2.75rem;
105
+ align-items: center;
106
+ justify-content: center;
107
+ padding: 0 1.5rem;
108
+ border: 1px solid;
109
+ cursor: pointer;
110
+ font: inherit;
111
+ font-size: 0.75rem;
112
+ line-height: calc(1 / 0.75);
113
+ font-weight: 500;
114
+ letter-spacing: 0.08em;
115
+ text-transform: uppercase;
116
+ }
117
+
118
+ .actions button:disabled {
119
+ cursor: not-allowed;
120
+ opacity: 0.4;
121
+ }
122
+
123
+ /* Under `.actions button`, whose border would take the text colour. */
124
+ .actions .primary {
125
+ border-color: var(--orionplace-accent);
126
+ background: var(--orionplace-accent);
127
+ color: var(--orionplace-surface);
128
+ }
129
+
130
+ .actions .secondary {
131
+ border-color: var(--orionplace-text);
132
+ background: transparent;
133
+ color: var(--orionplace-text);
134
+ }
135
+
136
+ .notice {
137
+ grid-row: 3;
138
+ margin: 1rem 0 0;
139
+ color: var(--orionplace-muted);
140
+ font-size: 0.75rem;
141
+ line-height: 1.25rem;
142
+ }
@@ -0,0 +1,181 @@
1
+ 'use client';
2
+
3
+ import { useId } from 'react';
4
+ import {
5
+ useOrionplaceCatalog,
6
+ useOrionplaceSelections,
7
+ } from '@/providers/OrionplaceProvider';
8
+ import type { ITariffSelection } from '@/interfaces/orionplace/subscribeTariff/ITariffSelection';
9
+ import { getAvailableNestedValueFromObject } from '@/lib/orionplace/presentation';
10
+ import {
11
+ tariffAmount,
12
+ tariffAvailability,
13
+ tariffMoney,
14
+ tariffPaidPeriods,
15
+ tariffReturnPath,
16
+ } from '@/lib/orionplace/tariffs';
17
+ import {
18
+ tariffDays,
19
+ tariffLabels,
20
+ tariffText,
21
+ } from '@/lib/orionplace/tariffLabels';
22
+ import styles from './TariffCardPrices.module.css';
23
+
24
+ export interface TariffCardPricesProps {
25
+ tariffId: number;
26
+ selectedPeriod?: number;
27
+ disabled?: boolean;
28
+ guest?: boolean;
29
+ periodLabel?: string;
30
+ label?: string;
31
+ onPeriodChange?: (period: number) => void;
32
+ onSelect?: (selection: ITariffSelection) => void;
33
+ onRequireSignIn?: (returnPath: string) => void;
34
+ }
35
+
36
+ export function TariffCardPrices({
37
+ tariffId,
38
+ selectedPeriod,
39
+ disabled = false,
40
+ guest = false,
41
+ periodLabel = '',
42
+ label = '',
43
+ onPeriodChange,
44
+ onSelect,
45
+ onRequireSignIn,
46
+ }: TariffCardPricesProps) {
47
+ const tariffs = useOrionplaceCatalog((state) => state.tariffs);
48
+ const locale = useOrionplaceSelections((state) => state.localeCode);
49
+ const currencyId = useOrionplaceSelections((state) => state.currencyId);
50
+ const currency = useOrionplaceSelections(
51
+ (state) => state.init?.currencies[state.currencyId],
52
+ );
53
+ const tariff = tariffs?.data.find((entry) => entry.id === tariffId);
54
+ const labels = tariffLabels(locale);
55
+ const id = useId();
56
+
57
+ if (!tariff) {
58
+ return null;
59
+ }
60
+
61
+ const duration = (days: number) => periodLabel
62
+ ? `${days} ${periodLabel}`
63
+ : tariffDays(days, locale);
64
+ const availability = tariffAvailability(tariff, tariffs?.subscriptions);
65
+ const paidPeriods = tariffPaidPeriods(tariff).map((price) => ({
66
+ price: price.tariff_cost_id,
67
+ duration: duration(price.days),
68
+ amount: tariffMoney(
69
+ tariffAmount(price.amount, currencyId),
70
+ locale,
71
+ currency,
72
+ ),
73
+ }));
74
+ const selected = paidPeriods.find((entry) => entry.price === selectedPeriod) ??
75
+ paidPeriods[0];
76
+ const trialDuration = tariff.trial_days > 0
77
+ ? duration(tariff.trial_days)
78
+ : '';
79
+ const name = getAvailableNestedValueFromObject(
80
+ tariff.locales,
81
+ locale,
82
+ 'tariff_name',
83
+ ) || String(tariffId);
84
+ const notice = availability === 'admin'
85
+ ? labels.adminOnly
86
+ : availability === 'closed'
87
+ ? labels.closed
88
+ : selected || trialDuration
89
+ ? ''
90
+ : labels.noPeriods;
91
+
92
+ function choose(price: number | null) {
93
+ if (disabled || availability !== 'open') {
94
+ return;
95
+ }
96
+ const selection = { tariff: tariffId, price };
97
+ if (guest) {
98
+ onRequireSignIn?.(tariffReturnPath(selection, locale));
99
+ } else {
100
+ onSelect?.(selection);
101
+ }
102
+ }
103
+
104
+ return (
105
+ <div className={styles.root} data-feature-part="TariffCardPrices">
106
+ {paidPeriods.length > 1 ? (
107
+ <div className={styles.periods}>
108
+ <p id={`${id}-periods`}>{labels.periods}</p>
109
+ <div role="group" aria-labelledby={`${id}-periods`}>
110
+ {paidPeriods.map((period) => (
111
+ <button
112
+ key={period.price}
113
+ type="button"
114
+ aria-pressed={period.price === selected?.price}
115
+ data-tariff-period-option={period.price}
116
+ onClick={() => onPeriodChange?.(period.price)}
117
+ >
118
+ {period.duration}
119
+ </button>
120
+ ))}
121
+ </div>
122
+ </div>
123
+ ) : null}
124
+ {selected || trialDuration ? (
125
+ <div className={styles.price}>
126
+ {selected ? (
127
+ <p>
128
+ <span data-tariff-amount>{selected.amount}</span>
129
+ <small>{tariffText(labels.perPeriod, {
130
+ days: selected.duration,
131
+ })}</small>
132
+ </p>
133
+ ) : (
134
+ <p>
135
+ <span>{labels.free}</span>
136
+ <small>{tariffText(labels.perPeriod, {
137
+ days: trialDuration,
138
+ })}</small>
139
+ </p>
140
+ )}
141
+ </div>
142
+ ) : null}
143
+ {availability === 'open' && (selected || trialDuration) ? (
144
+ <div className={styles.actions}>
145
+ {selected ? (
146
+ <button
147
+ type="button"
148
+ className={styles.primary}
149
+ disabled={disabled}
150
+ aria-label={tariffText(labels.subscribeAria, {
151
+ name,
152
+ days: selected.duration,
153
+ })}
154
+ data-tariff-period={selected.price}
155
+ onClick={() => choose(selected.price)}
156
+ >
157
+ {label || labels.subscribe}
158
+ </button>
159
+ ) : null}
160
+ {trialDuration ? (
161
+ <button
162
+ type="button"
163
+ className={selected ? styles.secondary : styles.primary}
164
+ disabled={disabled}
165
+ aria-label={tariffText(labels.trialAria, {
166
+ name,
167
+ days: trialDuration,
168
+ })}
169
+ data-tariff-period="trial"
170
+ onClick={() => choose(null)}
171
+ >
172
+ {labels.tryTrial}
173
+ </button>
174
+ ) : null}
175
+ </div>
176
+ ) : notice ? (
177
+ <p className={styles.notice} data-tariff-unavailable>{notice}</p>
178
+ ) : null}
179
+ </div>
180
+ );
181
+ }
@@ -0,0 +1,32 @@
1
+ # TariffCardTitle · React
2
+
3
+ ## English
4
+
5
+ `TariffCardTitle` reads `tariffId` from the isolated catalog store and shows
6
+ the localized `tariff_name`. If the returned plan has no populated name, its
7
+ numeric ID remains visible. An unknown ID renders nothing.
8
+
9
+ The component emits no events and makes no requests. Source is maintained in
10
+ `components/orionplace/tariffs/TariffCardTitle.tsx`.
11
+
12
+ ### Props
13
+
14
+ | Prop | Meaning |
15
+ | ------------------ | -------------------------------------------- |
16
+ | `tariffId: number` | ID of the tariff handled by TariffCardTitle. |
17
+
18
+ ## Русский
19
+
20
+ `TariffCardTitle` читает тариф с указанным `tariffId` из отдельного хранилища
21
+ каталога и показывает локализованное `tariff_name`. Если у полученного тарифа
22
+ нет заполненного названия, остаётся виден его числовой ID. Неизвестный ID
23
+ ничего не выводит.
24
+
25
+ Компонент не отправляет события и запросы. Исходный файл:
26
+ `components/orionplace/tariffs/TariffCardTitle.tsx`.
27
+
28
+ ### Свойства
29
+
30
+ | Свойство | Назначение |
31
+ | ------------------ | ---------------------------------------------- |
32
+ | `tariffId: number` | ID тарифа, с которым работает TariffCardTitle. |
@@ -0,0 +1,9 @@
1
+ .title {
2
+ margin: 0;
3
+ color: var(--orionplace-text);
4
+ font-size: 1.125rem;
5
+ font-weight: 500;
6
+ line-height: 1.25;
7
+ letter-spacing: 0.04em;
8
+ text-transform: uppercase;
9
+ }
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+
3
+ import {
4
+ useOrionplaceCatalog,
5
+ useOrionplaceSelections,
6
+ } from '@/providers/OrionplaceProvider';
7
+ import { getAvailableNestedValueFromObject } from '@/lib/orionplace/presentation';
8
+ import styles from './TariffCardTitle.module.css';
9
+
10
+ export function TariffCardTitle({ tariffId }: { tariffId: number }) {
11
+ const tariff = useOrionplaceCatalog((state) =>
12
+ state.tariffs?.data.find((entry) => entry.id === tariffId),
13
+ );
14
+ const locale = useOrionplaceSelections((state) => state.localeCode);
15
+ const title = getAvailableNestedValueFromObject(
16
+ tariff?.locales,
17
+ locale,
18
+ 'tariff_name',
19
+ );
20
+
21
+ return tariff ? (
22
+ <h3
23
+ className={styles.title}
24
+ data-feature-part="TariffCardTitle"
25
+ >
26
+ {title || tariff.id}
27
+ </h3>
28
+ ) : null;
29
+ }
@@ -0,0 +1,88 @@
1
+ # TariffCards · React
2
+
3
+ ## English
4
+
5
+ `TariffCards` reads the tariff collection from the isolated catalog store and
6
+ renders it in response order. Without `subscriptionId` it shows plans from all
7
+ returned subscriptions. With `subscriptionId` it keeps only plans whose
8
+ `subscription` has that ID. A nonempty `tariffIds` list narrows the result to
9
+ those tariff IDs. When no plan matches, the component renders nothing.
10
+
11
+ All remaining properties and the `onSelect`, `onSubscribe` and
12
+ `onRequireSignIn` events are passed to every `TariffCard`. Each card keeps its
13
+ own period, option and confirmation dialog. The shared grid aligns equivalent
14
+ card regions at wider viewport sizes.
15
+
16
+ The component makes no request. Source is maintained in
17
+ `components/orionplace/tariffs/TariffCards.tsx`.
18
+
19
+ ### Props
20
+
21
+ | Prop | Meaning |
22
+ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
23
+ | `subscriptionId?: number` | ID of the subscription handled by TariffCards. |
24
+ | `tariffIds?: number[]` | Tariff IDs rendered in the supplied order. |
25
+ | `onSubscribe?: (request: ITariffSubscribeRequest) => void` | Confirmation passes the tariff ID in `tariff`, selected `period`, `option` and a nonempty `attach_issue` promo code where applicable. A trial omits `period` and the promo code; the application submits the request. |
26
+ | `pending?: boolean` | Shows the loading state and blocks duplicate actions. |
27
+ | `error?: string` | Customer-visible error for the component request; omit it when no request failed. |
28
+ | `onSelect?: (selection: ITariffSelection) => void` | Passes the tariff ID in `tariff` and paid period ID in `price` selected in a card. A trial has `price: null`. |
29
+ | `onRequireSignIn?: (returnPath: string) => void` | Called when the visitor must sign in before continuing. The callback payload is shown in its type. |
30
+ | `disabled?: boolean` | Disables the component controls and prevents new actions. |
31
+ | `suspended?: boolean` | Keeps entered purchase values visible while a recoverable external step is open. |
32
+ | `completed?: boolean` | Successful result displayed after the action finishes. |
33
+ | `periodLabel?: string` | Visible or accessible label for period. |
34
+ | `label?: string` | Visible or accessible name for the component’s main control or region. |
35
+ | `guest?: boolean` | Uses the signed-out purchase path and sign-in action. |
36
+ | `open?: ITariffSelection` | Controls whether the panel or dialog is open. |
37
+ | `image?: ReactNode` | Image region or replacement renderer for the current card. |
38
+ | `title?: ReactNode` | Title region or replacement renderer for the current card. |
39
+ | `description?: ReactNode` | Supporting text shown below the main message. |
40
+ | `features?: ReactNode` | Feature-summary region or replacement renderer for the tariff card. |
41
+ | `prices?: (choose: (selection: ITariffSelection) => void) => ReactNode` | Price region or replacement renderer for the tariff card. |
42
+ | `tariffHref?: (tariff: ISubscribeTariff, locale: string) => string` | Builds the tariff destination from the callback arguments. |
43
+ | `subscriptionsHref?: (locale: string) => string` | Builds the subscriptions destination from the callback arguments. |
44
+ | `walletHref?: (locale: string) => string` | Builds the wallet destination from the callback arguments. |
45
+
46
+ ## Русский
47
+
48
+ `TariffCards` читает коллекцию тарифов из отдельного хранилища каталога и
49
+ показывает её в порядке ответа. Без `subscriptionId` выводятся тарифы всех
50
+ полученных подписок. С `subscriptionId` остаются только тарифы, поле
51
+ `subscription` которых содержит этот ID. Непустой список `tariffIds`
52
+ дополнительно оставляет только указанные ID тарифов. Если ничего не найдено,
53
+ компонент ничего не выводит.
54
+
55
+ Остальные свойства и события `onSelect`, `onSubscribe` и
56
+ `onRequireSignIn` передаются каждой `TariffCard`. Каждая карточка отдельно
57
+ хранит период, опцию и окно подтверждения. На широком экране общая сетка
58
+ выравнивает одинаковые области карточек.
59
+
60
+ Компонент не отправляет запросы. Исходный файл:
61
+ `components/orionplace/tariffs/TariffCards.tsx`.
62
+
63
+ ### Свойства
64
+
65
+ | Свойство | Назначение |
66
+ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
67
+ | `subscriptionId?: number` | ID подписки, с которым работает TariffCards. |
68
+ | `tariffIds?: number[]` | ID для тарифа, используемые в переданном порядке. |
69
+ | `onSubscribe?: (request: ITariffSubscribeRequest) => void` | Подтверждение передаёт ID тарифа `tariff`, выбранные `period`, `option` и непустой промокод `attach_issue`, когда они применимы. Пробное подключение пропускает `period` и промокод; приложение отправляет запрос. |
70
+ | `pending?: boolean` | Показывает загрузку и блокирует повторные действия. |
71
+ | `error?: string` | Ошибка запроса для покупателя; не передавайте её, если запрос не завершился ошибкой. |
72
+ | `onSelect?: (selection: ITariffSelection) => void` | Передаёт выбранные в карточке ID тарифа `tariff` и ID платного периода `price`. Для пробного подключения `price` равен `null`. |
73
+ | `onRequireSignIn?: (returnPath: string) => void` | Вызывается, когда покупателю нужно войти перед продолжением. Данные обработчика указаны в его типе. |
74
+ | `disabled?: boolean` | Блокирует элементы компонента и новые действия. |
75
+ | `suspended?: boolean` | Сохраняет введённые данные покупки во время внешнего шага, после которого можно продолжить. |
76
+ | `completed?: boolean` | Успешный результат после завершения действия. |
77
+ | `periodLabel?: string` | Видимая или доступная подпись для периода. |
78
+ | `label?: string` | Видимое или доступное название основного элемента компонента. |
79
+ | `guest?: boolean` | Использует сценарий покупки без входа и действие входа. |
80
+ | `open?: ITariffSelection` | Управляет открытым состоянием панели или диалога. |
81
+ | `image?: ReactNode` | Блок изображения или функция, которая его заменяет. |
82
+ | `title?: ReactNode` | Блок названия карточки или функция, которая его заменяет. |
83
+ | `description?: ReactNode` | Пояснение под основным сообщением. |
84
+ | `features?: ReactNode` | Блок характеристик тарифа или функция, которая его заменяет. |
85
+ | `prices?: (choose: (selection: ITariffSelection) => void) => ReactNode` | Блок цен тарифа или функция, которая его заменяет. |
86
+ | `tariffHref?: (tariff: ISubscribeTariff, locale: string) => string` | Строит адрес ссылки тарифа из аргументов обработчика. |
87
+ | `subscriptionsHref?: (locale: string) => string` | Строит адрес ссылки подписок из аргументов обработчика. |
88
+ | `walletHref?: (locale: string) => string` | Строит адрес ссылки кошелька из аргументов обработчика. |
@@ -0,0 +1,24 @@
1
+ .grid {
2
+ display: grid;
3
+ width: 100%;
4
+ grid-template-columns: minmax(0, 1fr);
5
+ gap: 0 1rem;
6
+ margin-bottom: -1rem;
7
+ }
8
+
9
+ .grid > * {
10
+ margin-bottom: 1rem;
11
+ }
12
+
13
+ /* The plans page around the cards (592px; 1216px for the old 1280px screen). */
14
+ @container (min-width: 592px) {
15
+ .grid {
16
+ grid-template-columns: repeat(2, minmax(0, 1fr));
17
+ }
18
+ }
19
+
20
+ @container (min-width: 1216px) {
21
+ .grid {
22
+ grid-template-columns: repeat(3, minmax(0, 1fr));
23
+ }
24
+ }
@@ -0,0 +1,44 @@
1
+ 'use client';
2
+
3
+ import { useOrionplaceCatalog } from '@/providers/OrionplaceProvider';
4
+ import type { ITariffSubscribeRequest } from '@/interfaces/orionplace/subscribeTariff/ITariffSelection';
5
+ import {
6
+ TariffCard,
7
+ type TariffCardProps,
8
+ } from './TariffCard';
9
+ import styles from './TariffCards.module.css';
10
+
11
+ export interface TariffCardsProps extends Omit<TariffCardProps, 'tariffId'> {
12
+ subscriptionId?: number;
13
+ tariffIds?: number[];
14
+ onSubscribe?: (request: ITariffSubscribeRequest) => void;
15
+ }
16
+
17
+ export function TariffCards({
18
+ subscriptionId,
19
+ tariffIds = [],
20
+ ...cardProps
21
+ }: TariffCardsProps) {
22
+ const tariffs = useOrionplaceCatalog((state) => state.tariffs);
23
+ const visible = (tariffs?.data ?? []).filter(
24
+ (tariff) =>
25
+ (subscriptionId === undefined || tariff.subscription === subscriptionId) &&
26
+ (!tariffIds.length || tariffIds.includes(tariff.id)),
27
+ );
28
+
29
+ if (!visible.length) {
30
+ return null;
31
+ }
32
+
33
+ return (
34
+ <div className={styles.grid} data-feature-part="TariffCards">
35
+ {visible.map((tariff) => (
36
+ <TariffCard
37
+ key={tariff.id}
38
+ tariffId={tariff.id}
39
+ {...cardProps}
40
+ />
41
+ ))}
42
+ </div>
43
+ );
44
+ }