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
@@ -0,0 +1,261 @@
1
+ 'use client';
2
+
3
+ import {
4
+ useId,
5
+ useLayoutEffect,
6
+ useRef,
7
+ useState,
8
+ type ChangeEvent,
9
+ type FormEvent,
10
+ } from 'react';
11
+ import { useOrionplaceSelections } from '@/providers/OrionplaceProvider';
12
+ import { featureLabels } from '@/lib/orionplace/featureLabels';
13
+ import { ticketLabels } from '@/lib/orionplace/ticketLabels';
14
+ import type { OrderRefundWindow } from '@/interfaces/orionplace/orders/IOrderHistory';
15
+ import styles from './Support.module.css';
16
+
17
+ export interface TicketMessageFormProps {
18
+ pending?: boolean;
19
+ creating?: boolean;
20
+ // Locks the form and explains why: the backend would reject a new message
21
+ // now (see `ticketReplyWaitText`).
22
+ waitHint?: string;
23
+ // Turns a new return request into a choice about a defect: optional
24
+ // inside the regular return period, required (and fixed) after it.
25
+ refundWindow?: OrderRefundWindow | null;
26
+ onSubmit?: (text: string, files: File[], isDefect: boolean) => void;
27
+ onCancel?: () => void;
28
+ }
29
+
30
+ function Icon({ path }: { path: string }) {
31
+ return (
32
+ <svg
33
+ className={styles.icon}
34
+ viewBox="0 0 24 24"
35
+ fill="none"
36
+ stroke="currentColor"
37
+ strokeWidth="1.6"
38
+ strokeLinecap="round"
39
+ strokeLinejoin="round"
40
+ aria-hidden="true"
41
+ >
42
+ <path d={path} />
43
+ </svg>
44
+ );
45
+ }
46
+
47
+ export function TicketMessageForm({
48
+ pending = false,
49
+ creating = false,
50
+ waitHint = '',
51
+ refundWindow = null,
52
+ onSubmit,
53
+ onCancel,
54
+ }: TicketMessageFormProps) {
55
+ const locale = useOrionplaceSelections((state) => state.localeCode);
56
+ const labels = ticketLabels(locale);
57
+ const common = featureLabels(locale);
58
+ const id = useId();
59
+ const textarea = useRef<HTMLTextAreaElement>(null);
60
+ const fileInput = useRef<HTMLInputElement>(null);
61
+ const [message, setMessage] = useState('');
62
+ const [files, setFiles] = useState<File[]>([]);
63
+ const [chosen, setChosen] = useState(false);
64
+ const tooMany = files.length > 5;
65
+ const locked = pending || Boolean(waitHint);
66
+ const defectOnly = refundWindow === 'defect';
67
+ const isDefect = defectOnly || chosen;
68
+
69
+ useLayoutEffect(() => {
70
+ const field = textarea.current;
71
+ if (!field) {
72
+ return;
73
+ }
74
+ field.style.height = 'auto';
75
+ field.style.height = `${field.scrollHeight + 2}px`;
76
+ }, [message]);
77
+
78
+ function chooseFiles(event: ChangeEvent<HTMLInputElement>) {
79
+ // Copy the files first: clearing the input empties its live FileList
80
+ // before React runs the state update.
81
+ const picked = Array.from(event.target.files ?? []);
82
+ setFiles((current) => [...current, ...picked]);
83
+ event.target.value = '';
84
+ }
85
+
86
+ function submit(event: FormEvent<HTMLFormElement>) {
87
+ event.preventDefault();
88
+ if (!tooMany && !locked) {
89
+ onSubmit?.(message, files, isDefect);
90
+ }
91
+ }
92
+
93
+ return (
94
+ <form
95
+ className={`${styles.root} ${styles.stack} ${styles.form}`}
96
+ data-feature-part="TicketMessageForm"
97
+ onSubmit={submit}
98
+ >
99
+ <label
100
+ className={styles.label}
101
+ htmlFor={`${id}-message`}
102
+ >
103
+ {labels.message}{' '}
104
+ <span
105
+ className={styles.required}
106
+ aria-hidden="true"
107
+ >
108
+ *
109
+ </span>
110
+ </label>
111
+ <textarea
112
+ ref={textarea}
113
+ id={`${id}-message`}
114
+ className={styles.textarea}
115
+ name="ticket_body"
116
+ rows={3}
117
+ required
118
+ minLength={2}
119
+ maxLength={2048}
120
+ disabled={locked}
121
+ value={message}
122
+ onChange={(event) => setMessage(event.target.value)}
123
+ />
124
+ {creating && refundWindow ? (
125
+ <div
126
+ className={styles.defect}
127
+ data-ticket-defect
128
+ data-refund-window={refundWindow}
129
+ >
130
+ <label className={styles.defectChoice}>
131
+ <input
132
+ type="checkbox"
133
+ name="is_defect"
134
+ checked={isDefect}
135
+ disabled={locked || defectOnly}
136
+ aria-describedby={defectOnly ? `${id}-defect` : undefined}
137
+ onChange={(event) => setChosen(event.target.checked)}
138
+ />
139
+ <span>{defectOnly ? labels.defect : labels.defectOptional}</span>
140
+ </label>
141
+ {defectOnly ? (
142
+ <p
143
+ id={`${id}-defect`}
144
+ data-ticket-defect-hint
145
+ >
146
+ {labels.defectOnly}
147
+ </p>
148
+ ) : null}
149
+ </div>
150
+ ) : null}
151
+ <input
152
+ ref={fileInput}
153
+ id={`${id}-files`}
154
+ className={styles.screenReaderOnly}
155
+ type="file"
156
+ accept=".jpg,.jpeg,.gif,.png,.webp,.ico"
157
+ multiple
158
+ tabIndex={-1}
159
+ aria-label={labels.images}
160
+ disabled={locked}
161
+ onChange={chooseFiles}
162
+ />
163
+ {files.length ? (
164
+ <ul
165
+ className={styles.files}
166
+ aria-label={labels.images}
167
+ >
168
+ {files.map((file, index) => (
169
+ <li
170
+ key={`${file.name}:${file.lastModified}:${index}`}
171
+ className={styles.file}
172
+ >
173
+ <svg
174
+ className={styles.icon}
175
+ viewBox="0 0 24 24"
176
+ fill="none"
177
+ stroke="currentColor"
178
+ strokeWidth="1.6"
179
+ strokeLinecap="round"
180
+ strokeLinejoin="round"
181
+ aria-hidden="true"
182
+ >
183
+ <path d="M4 4h16v16H4Z" />
184
+ <circle
185
+ cx="9"
186
+ cy="9"
187
+ r="2"
188
+ />
189
+ <path d="m20 15-5-5L4 20" />
190
+ </svg>
191
+ <span className={styles.fileName}>{file.name}</span>
192
+ <button
193
+ className={`${styles.tool} ${styles.iconButton}`}
194
+ type="button"
195
+ aria-label={`${labels.removeImage}: ${file.name}`}
196
+ title={labels.removeImage}
197
+ disabled={locked}
198
+ onClick={() =>
199
+ setFiles((current) =>
200
+ current.filter((_, item) => item !== index),
201
+ )
202
+ }
203
+ >
204
+ <Icon path="M6 6l12 12M18 6 6 18" />
205
+ </button>
206
+ </li>
207
+ ))}
208
+ </ul>
209
+ ) : null}
210
+ {waitHint ? (
211
+ <p
212
+ className={styles.notice}
213
+ role="status"
214
+ data-ticket-wait
215
+ >
216
+ {waitHint}
217
+ </p>
218
+ ) : null}
219
+ {tooMany ? (
220
+ <p
221
+ className={`${styles.notice} ${styles.noticeError}`}
222
+ role="alert"
223
+ >
224
+ {labels.tooMany}
225
+ </p>
226
+ ) : null}
227
+ <div className={styles.formActions}>
228
+ <button
229
+ className={styles.tool}
230
+ type="button"
231
+ data-ticket-attach
232
+ disabled={locked}
233
+ onClick={() => fileInput.current?.click()}
234
+ >
235
+ <Icon path="m20 11.5-8.2 8.2a5 5 0 0 1-7.1-7.1l8.5-8.5a3.3 3.3 0 0 1 4.7 4.7l-8.5 8.5a1.7 1.7 0 0 1-2.4-2.4l7.8-7.8" />
236
+ {labels.attach}
237
+ </button>
238
+ <div className={styles.actions}>
239
+ {creating ? (
240
+ <button
241
+ className={styles.button}
242
+ type="button"
243
+ disabled={pending}
244
+ onClick={() => onCancel?.()}
245
+ >
246
+ {common.cancel}
247
+ </button>
248
+ ) : null}
249
+ <button
250
+ className={`${styles.button} ${styles.primary}`}
251
+ type="submit"
252
+ disabled={locked || tooMany}
253
+ >
254
+ <Icon path="M4 12 20 4l-4 16-4-7Zm8 1 8-9" />
255
+ {creating ? labels.create : labels.send}
256
+ </button>
257
+ </div>
258
+ </div>
259
+ </form>
260
+ );
261
+ }
@@ -0,0 +1,53 @@
1
+ # TicketSubscriptionCard · React
2
+
3
+ ## English
4
+
5
+ `TicketSubscriptionCard` identifies the customer subscription that a support
6
+ conversation is about. `subscription` is an item returned by
7
+ `subscriptions_get`; `plan` is the matching tariff. The card shows the plan's
8
+ first small image in a reserved 96 by 96 area, or a plan icon, plus the
9
+ localized plan name and subscription number.
10
+
11
+ The state comes from the subscription data: active while `active_until` is in
12
+ the future, ended after that date, and pending while the remote service is
13
+ still being set up. The facts show the paid-until date and automatic renewal.
14
+ Renewal displays its length and the combined plan and option amount in the
15
+ selected currency; a missing `renew_period` displays Off.
16
+
17
+ The name links to `subscriptionsHref(locale)`. The component makes no request
18
+ and reports no action. Source is maintained in
19
+ `components/orionplace/support/TicketSubscriptionCard.tsx`.
20
+
21
+ ### Props
22
+
23
+ | Prop | Meaning |
24
+ | ------------------------------------------------ | ----------------------------------------------------------------- |
25
+ | `subscription: ICustomerSubscription` | Customer subscription displayed or changed by the component. |
26
+ | `plan?: ISubscribeTariff` | Tariff plan associated with the current card or subscription. |
27
+ | `subscriptionsHref?: (locale: string) => string` | Builds the subscriptions destination from the callback arguments. |
28
+
29
+ ## Русский
30
+
31
+ `TicketSubscriptionCard` показывает подписку покупателя, к которой относится
32
+ обращение. `subscription` — элемент ответа `subscriptions_get`, а `plan` —
33
+ соответствующий тариф. Карточка выводит первое малое изображение тарифа в
34
+ заранее выделенной области 96 на 96 или значок тарифа, локализованное название
35
+ и номер подписки.
36
+
37
+ Состояние определяется данными подписки: подписка активна, пока
38
+ `active_until` находится в будущем, завершена после этой даты и настраивается,
39
+ пока внешний сервис ещё не подтвердил её. Ниже показаны дата оплаты и
40
+ автопродление. Для автопродления выводятся срок и общая стоимость тарифа и
41
+ дополнения в выбранной валюте; без `renew_period` выводится «Выключено».
42
+
43
+ Название ведёт по адресу `subscriptionsHref(locale)`. Компонент не выполняет
44
+ запросы и не сообщает о действиях. Исходный файл:
45
+ `components/orionplace/support/TicketSubscriptionCard.tsx`.
46
+
47
+ ### Свойства
48
+
49
+ | Свойство | Назначение |
50
+ | ------------------------------------------------ | --------------------------------------------------------------- |
51
+ | `subscription: ICustomerSubscription` | Подписка покупателя, которую показывает или изменяет компонент. |
52
+ | `plan?: ISubscribeTariff` | Тарифный план текущей карточки или подписки. |
53
+ | `subscriptionsHref?: (locale: string) => string` | Строит адрес ссылки подписок из аргументов обработчика. |
@@ -0,0 +1,118 @@
1
+ 'use client';
2
+
3
+ import { useOrionplaceSelections } from '@/providers/OrionplaceProvider';
4
+ import type { ISubscribeTariff } from '@/interfaces/orionplace/subscribeTariff/ISubscribeTariff';
5
+ import type { ICustomerSubscription } from '@/interfaces/orionplace/subscribes/ISubscriptionApi';
6
+ import { getAvailableNestedValueFromObject } from '@/lib/orionplace/presentation';
7
+ import { subscriptionLabels } from '@/lib/orionplace/subscriptionLabels';
8
+ import {
9
+ subscriptionDays,
10
+ subscriptionManageLabels,
11
+ } from '@/lib/orionplace/subscriptionManageLabels';
12
+ import {
13
+ renewalTotalAmount,
14
+ subscriptionStatus,
15
+ } from '@/lib/orionplace/subscriptionPlans';
16
+ import { tariffMoney } from '@/lib/orionplace/tariffs';
17
+ import { OrionplaceImage } from '@/components/orionplace/shared/OrionplaceImage';
18
+ import styles from './Support.module.css';
19
+
20
+ export interface TicketSubscriptionCardProps {
21
+ subscription: ICustomerSubscription;
22
+ plan?: ISubscribeTariff;
23
+ subscriptionsHref?: (locale: string) => string;
24
+ }
25
+
26
+ const statusKeys = {
27
+ active: 'statusActive',
28
+ ended: 'statusExpired',
29
+ pending: 'statusPending',
30
+ } as const;
31
+
32
+ export function TicketSubscriptionCard({
33
+ subscription,
34
+ plan,
35
+ subscriptionsHref = (locale) =>
36
+ `/subscriptions?locale=${encodeURIComponent(locale)}`,
37
+ }: TicketSubscriptionCardProps) {
38
+ const locale = useOrionplaceSelections((state) => state.localeCode);
39
+ const currencyId = useOrionplaceSelections((state) => state.currencyId);
40
+ const currency = useOrionplaceSelections(
41
+ (state) => state.init?.currencies[state.currencyId],
42
+ );
43
+ const labels = subscriptionLabels(locale);
44
+ const manage = subscriptionManageLabels(locale);
45
+ const planName =
46
+ getAvailableNestedValueFromObject(plan?.locales, locale, 'tariff_name') ||
47
+ labels.subscription;
48
+ const picture = plan?.tariff_image?.small?.[0];
49
+ const status = subscriptionStatus(subscription);
50
+ const period = subscription.renew_period;
51
+ const renewal = period
52
+ ? `${subscriptionDays(period.days, locale)} · ${tariffMoney(
53
+ renewalTotalAmount(period, currencyId),
54
+ locale,
55
+ currency,
56
+ )}`
57
+ : labels.disabled;
58
+
59
+ return (
60
+ <div
61
+ className={`${styles.root} ${styles.item}`}
62
+ data-feature-part="TicketSubscriptionCard"
63
+ data-ticket-subscription
64
+ >
65
+ <div
66
+ className={styles.subscriptionPhoto}
67
+ data-ticket-subscription-picture
68
+ >
69
+ {picture ? (
70
+ <OrionplaceImage
71
+ src={picture}
72
+ alt={planName}
73
+ width={96}
74
+ height={96}
75
+ />
76
+ ) : (
77
+ <svg
78
+ viewBox="0 0 24 24"
79
+ fill="none"
80
+ stroke="currentColor"
81
+ strokeWidth="1.5"
82
+ strokeLinecap="round"
83
+ strokeLinejoin="round"
84
+ aria-hidden="true"
85
+ >
86
+ <path d="M4 7.5 12 3l8 4.5v9L12 21l-8-4.5zM4 7.5 12 12l8-4.5M12 12v9" />
87
+ </svg>
88
+ )}
89
+ </div>
90
+ <div className={styles.itemBody}>
91
+ <div className={styles.subscriptionHeading}>
92
+ <a
93
+ className={styles.link}
94
+ href={subscriptionsHref(locale)}
95
+ >
96
+ {planName} #{subscription.id}
97
+ </a>
98
+ <span
99
+ className={styles.subscriptionState}
100
+ data-state={status}
101
+ >
102
+ {manage[statusKeys[status]]}
103
+ </span>
104
+ </div>
105
+ <dl className={styles.facts}>
106
+ <div>
107
+ <dt>{labels.until}</dt>
108
+ <dd>{subscription.active_until?.date || '—'}</dd>
109
+ </div>
110
+ <div>
111
+ <dt>{labels.renewal}</dt>
112
+ <dd>{renewal}</dd>
113
+ </div>
114
+ </dl>
115
+ </div>
116
+ </div>
117
+ );
118
+ }
@@ -0,0 +1,108 @@
1
+ # TariffCard · React
2
+
3
+ ## English
4
+
5
+ `TariffCard` composes the image, localized name, descriptions, feature limits,
6
+ additional option, paid periods and trial action for the plan identified by
7
+ `tariffId`. The image and name link to the localized plan address. Use
8
+ `tariffHref(tariff, locale)` when the application has a different router.
9
+ `image`, `title`, `description`, `features` and `prices(choose)` replace the
10
+ corresponding regions while preserving the card and dialog behavior.
11
+
12
+ Choosing an available paid period or trial calls
13
+ `onSelect({ tariff, price })` and opens `TariffSubscriptionModal`. The selected
14
+ additional option is passed to the dialog. `open` restores the same selection
15
+ after navigation when it still belongs to this plan and remains available.
16
+ Changes to the tariff catalog close a choice whose period, trial, plan or
17
+ parent subscription is no longer available. `disabled` and `pending` block a
18
+ new choice. `suspended`, `error` and `completed` control the open dialog, and
19
+ its confirmed request is passed unchanged to `onSubscribe(request)`.
20
+
21
+ With `guest`, the price action calls `onRequireSignIn(returnPath)` and does not
22
+ open the dialog. `periodLabel` and `label` customize the price controls.
23
+ `subscriptionsHref` and `walletHref` customize the dialog links.
24
+
25
+ The component makes no request. Source is maintained in
26
+ `components/orionplace/tariffs/TariffCard.tsx`; the selection and submit
27
+ contracts are in
28
+ `interfaces/orionplace/subscribeTariff/ITariffSelection.ts`.
29
+
30
+ ### Props
31
+
32
+ | Prop | Meaning |
33
+ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
34
+ | `tariffId: number` | ID of the tariff handled by TariffCard. |
35
+ | `disabled?: boolean` | Disables the component controls and prevents new actions. |
36
+ | `pending?: boolean` | Shows the loading state and blocks duplicate actions. |
37
+ | `suspended?: boolean` | Keeps entered purchase values visible while a recoverable external step is open. |
38
+ | `error?: string` | Customer-visible error for the component request; omit it when no request failed. |
39
+ | `completed?: boolean` | Successful result displayed after the action finishes. |
40
+ | `periodLabel?: string` | Visible or accessible label for period. |
41
+ | `label?: string` | Visible or accessible name for the component’s main control or region. |
42
+ | `guest?: boolean` | Uses the signed-out purchase path and sign-in action. |
43
+ | `open?: ITariffSelection` | Controls whether the panel or dialog is open. |
44
+ | `image?: ReactNode` | Image region or replacement renderer for the current card. |
45
+ | `title?: ReactNode` | Title region or replacement renderer for the current card. |
46
+ | `description?: ReactNode` | Supporting text shown below the main message. |
47
+ | `features?: ReactNode` | Feature-summary region or replacement renderer for the tariff card. |
48
+ | `prices?: (choose: (selection: ITariffSelection) => void) => ReactNode` | Price region or replacement renderer for the tariff card. |
49
+ | `tariffHref?: (tariff: ISubscribeTariff, locale: string) => string` | Builds the tariff destination from the callback arguments. |
50
+ | `subscriptionsHref?: (locale: string) => string` | Builds the subscriptions destination from the callback arguments. |
51
+ | `walletHref?: (locale: string) => string` | Builds the wallet destination from the callback arguments. |
52
+ | `onSelect?: (selection: ITariffSelection) => void` | Passes `tariff` and `price` after saving the selected subscription choice and opening confirmation. A trial has `price: null`. |
53
+ | `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. |
54
+ | `onRequireSignIn?: (returnPath: string) => void` | Called when the visitor must sign in before continuing. The callback payload is shown in its type. |
55
+
56
+ ## Русский
57
+
58
+ `TariffCard` объединяет изображение, локализованное название, описания,
59
+ ограничения возможностей, дополнительную опцию, платные периоды и пробное
60
+ подключение тарифа с указанным `tariffId`. Изображение и название ведут на
61
+ локализованную страницу тарифа. Для другого маршрутизатора передайте
62
+ `tariffHref(tariff, locale)`. Свойства `image`, `title`, `description`,
63
+ `features` и `prices(choose)` заменяют соответствующие области, сохраняя
64
+ поведение карточки и окна оформления.
65
+
66
+ Выбор доступного платного периода или пробного подключения вызывает
67
+ `onSelect({ tariff, price })` и открывает `TariffSubscriptionModal`. Выбранная
68
+ дополнительная опция передаётся в окно. `open` восстанавливает тот же выбор
69
+ после перехода, если он относится к карточке и остаётся доступным. При
70
+ обновлении каталога окно закрывается, если тариф, его родительская подписка,
71
+ период или пробное подключение стали недоступны. `disabled` и `pending`
72
+ блокируют новый выбор. `suspended`, `error` и `completed` управляют открытым
73
+ окном, а подтверждённый запрос без изменений передаётся в
74
+ `onSubscribe(request)`.
75
+
76
+ С `guest` действие периода вызывает `onRequireSignIn(returnPath)` и не
77
+ открывает окно. `periodLabel` и `label` меняют подписи элементов цены.
78
+ `subscriptionsHref` и `walletHref` задают ссылки окна.
79
+
80
+ Компонент не отправляет запросы. Исходный файл:
81
+ `components/orionplace/tariffs/TariffCard.tsx`; контракты выбора и отправки:
82
+ `interfaces/orionplace/subscribeTariff/ITariffSelection.ts`.
83
+
84
+ ### Свойства
85
+
86
+ | Свойство | Назначение |
87
+ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
88
+ | `tariffId: number` | ID тарифа, с которым работает TariffCard. |
89
+ | `disabled?: boolean` | Блокирует элементы компонента и новые действия. |
90
+ | `pending?: boolean` | Показывает загрузку и блокирует повторные действия. |
91
+ | `suspended?: boolean` | Сохраняет введённые данные покупки во время внешнего шага, после которого можно продолжить. |
92
+ | `error?: string` | Ошибка запроса для покупателя; не передавайте её, если запрос не завершился ошибкой. |
93
+ | `completed?: boolean` | Успешный результат после завершения действия. |
94
+ | `periodLabel?: string` | Видимая или доступная подпись для периода. |
95
+ | `label?: string` | Видимое или доступное название основного элемента компонента. |
96
+ | `guest?: boolean` | Использует сценарий покупки без входа и действие входа. |
97
+ | `open?: ITariffSelection` | Управляет открытым состоянием панели или диалога. |
98
+ | `image?: ReactNode` | Блок изображения или функция, которая его заменяет. |
99
+ | `title?: ReactNode` | Блок названия карточки или функция, которая его заменяет. |
100
+ | `description?: ReactNode` | Пояснение под основным сообщением. |
101
+ | `features?: ReactNode` | Блок характеристик тарифа или функция, которая его заменяет. |
102
+ | `prices?: (choose: (selection: ITariffSelection) => void) => ReactNode` | Блок цен тарифа или функция, которая его заменяет. |
103
+ | `tariffHref?: (tariff: ISubscribeTariff, locale: string) => string` | Строит адрес ссылки тарифа из аргументов обработчика. |
104
+ | `subscriptionsHref?: (locale: string) => string` | Строит адрес ссылки подписок из аргументов обработчика. |
105
+ | `walletHref?: (locale: string) => string` | Строит адрес ссылки кошелька из аргументов обработчика. |
106
+ | `onSelect?: (selection: ITariffSelection) => void` | Передаёт `tariff` и `price` после сохранения выбранного подключения и открытия подтверждения. Для пробного подключения `price` равен `null`. |
107
+ | `onSubscribe?: (request: ITariffSubscribeRequest) => void` | Подтверждение передаёт ID тарифа `tariff`, выбранные `period`, `option` и непустой промокод `attach_issue`, когда они применимы. Пробное подключение пропускает `period` и промокод; приложение отправляет запрос. |
108
+ | `onRequireSignIn?: (returnPath: string) => void` | Вызывается, когда покупателю нужно войти перед продолжением. Данные обработчика указаны в его типе. |
@@ -0,0 +1,86 @@
1
+ .card {
2
+ box-sizing: border-box;
3
+ display: grid;
4
+ min-width: 0;
5
+ grid-row: span 11;
6
+ grid-template-rows: subgrid;
7
+ gap: 0;
8
+ padding: 1.5rem;
9
+ border: 1px solid var(--orionplace-border);
10
+ background: var(--orionplace-surface);
11
+ color: var(--orionplace-text);
12
+ font-family: inherit;
13
+ font-size: 0.875rem;
14
+ line-height: calc(1.25 / 0.875);
15
+ }
16
+
17
+ .imageLink {
18
+ display: block;
19
+ min-width: 0;
20
+ grid-row: 1;
21
+ color: inherit;
22
+ text-decoration: none;
23
+ }
24
+
25
+ .trial {
26
+ width: fit-content;
27
+ grid-row: 2;
28
+ margin-top: 1.25rem;
29
+ padding: 0.125rem 0.5rem;
30
+ background: var(--orionplace-inverse-surface);
31
+ color: var(--orionplace-inverse-text);
32
+ font-size: 0.6875rem;
33
+ letter-spacing: 0.08em;
34
+ text-transform: uppercase;
35
+ }
36
+
37
+ .title {
38
+ grid-row: 3;
39
+ margin-top: 0.75rem;
40
+ }
41
+
42
+ .title a {
43
+ display: block;
44
+ color: inherit;
45
+ text-decoration: none;
46
+ }
47
+
48
+ .title a:focus-visible,
49
+ .imageLink:focus-visible {
50
+ opacity: 0.7;
51
+ }
52
+
53
+ @media (hover: hover) {
54
+ .title a:hover,
55
+ .imageLink:hover {
56
+ opacity: 0.7;
57
+ }
58
+ }
59
+
60
+ /* The description takes two rows of the card grid and the features three,
61
+ as in the other packages, so their parts start level across a row. */
62
+ .description {
63
+ display: grid;
64
+ grid-row: 4 / span 2;
65
+ grid-template-rows: subgrid;
66
+ gap: 0;
67
+ margin-top: 0.75rem;
68
+ }
69
+
70
+ .features {
71
+ display: grid;
72
+ grid-row: 6 / span 3;
73
+ grid-template-rows: subgrid;
74
+ gap: 0;
75
+ margin-top: 1.25rem;
76
+ }
77
+
78
+ .prices {
79
+ display: grid;
80
+ grid-row: 9 / span 3;
81
+ grid-template-rows: subgrid;
82
+ gap: 0;
83
+ margin-top: 1.25rem;
84
+ padding-top: 1.25rem;
85
+ border-top: 1px solid var(--orionplace-border);
86
+ }