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,306 @@
1
+ const en = {
2
+ statusActive: 'Active',
3
+ statusExpired: 'Ended',
4
+ statusPending: 'Being set up',
5
+ statusPendingHint:
6
+ 'The service is being prepared and confirms the subscription itself.',
7
+ manage: 'Manage subscription',
8
+ extend: 'Extend now',
9
+ extendHint: 'Pay for another period from the account balance',
10
+ renewalSettings: 'Automatic renewal',
11
+ renewalHint: 'Choose the period that is paid automatically, or turn it off',
12
+ changePlan: 'Change plan',
13
+ changePlanHint: 'Move this subscription to another plan',
14
+ close: 'Close',
15
+ cancel: 'Cancel',
16
+ period: 'Period',
17
+ promo: 'Promo code',
18
+ promoHint: 'Optional. A promo code applies to a paid period.',
19
+ balance: 'Account balance',
20
+ planPrice: 'Plan for this period',
21
+ optionPrice: 'Service option',
22
+ insufficient:
23
+ 'The balance is lower than this period. Top up the balance, or choose ' +
24
+ 'another period.',
25
+ topUp: 'Deposit',
26
+ extendTitle: 'Extend the subscription',
27
+ extendSummary:
28
+ 'The chosen period is charged from the account balance at once and added ' +
29
+ 'to the subscription.',
30
+ extendAfter:
31
+ '{period} is added to the subscription, and the amount is charged from ' +
32
+ 'the account balance now.',
33
+ extendSubmit: 'Pay',
34
+ extendPending: 'Paying…',
35
+ extendConfirm: 'Confirm',
36
+ renewalTitle: 'Automatic renewal',
37
+ renewalCurrentOn: 'Now: every {days} for {price}.',
38
+ renewalCurrentOff: 'Now: automatic renewal is off.',
39
+ renewalOff: 'Turn automatic renewal off',
40
+ renewalOffHint: 'Nothing is charged; the paid period stays available.',
41
+ renewalEffectOff:
42
+ 'Automatic renewal stops. The subscription stays available until the end ' +
43
+ 'of the paid period and the balance is not charged for it again.',
44
+ renewalEffectOn:
45
+ 'Renewal for {days} costs {price} for the plan, plus any option charge. ' +
46
+ 'After the paid period ends, renewal requires enough account balance ' +
47
+ 'for the total. If the period has already ended, it starts immediately ' +
48
+ 'when the balance is sufficient. Otherwise only the setting is saved.',
49
+ renewalSubmit: 'Save',
50
+ renewalPending: 'Saving…',
51
+ renewalNoChange: 'This is the current setting.',
52
+ changeOption: 'Change service option',
53
+ changeOptionHint: 'Move this subscription to another service option',
54
+ changePlanTitle: 'Change the plan',
55
+ changeOptionTitle: 'Change the service option',
56
+ changePlanSummary:
57
+ 'The unused days of the current period are refunded to the account ' +
58
+ 'balance, and the selected period of the new plan is charged in full.',
59
+ changeOptionSummary:
60
+ 'The unused days of the current period are refunded to the account ' +
61
+ 'balance, and the selected period with the new service option is charged ' +
62
+ 'in full.',
63
+ changePlanField: 'New plan',
64
+ changeOptionField: 'Service option',
65
+ changeCurrentPlan: 'Now: {plan}.',
66
+ changeCurrentOption: 'Now: {option}.',
67
+ changeNoOption: 'No service option',
68
+ changeRefund: 'Refund for the unused days',
69
+ changeRefundHint:
70
+ 'The refund is credited to the account balance first, and the new period ' +
71
+ 'is charged after it, so a change can be affordable when the same period ' +
72
+ 'could not be bought on its own.',
73
+ changeRefundUnknown:
74
+ 'The storefront backend calculates this amount when the change is sent.',
75
+ changeAvailable: 'Available for this change',
76
+ changeTotal: 'Charged for the new period',
77
+ changeAfterPlan:
78
+ 'The subscription moves to {plan} for {period} now. The unused days are ' +
79
+ 'refunded to the account balance and {price} is charged for the new ' +
80
+ 'period.',
81
+ changeAfterOption:
82
+ 'The subscription moves to {option} for {period} now. The unused days ' +
83
+ 'are refunded to the account balance and {price} is charged for the new ' +
84
+ 'period.',
85
+ changeAfterPlanRefund:
86
+ 'The subscription moves to {plan} for {period} now. {refund} is refunded ' +
87
+ 'to the account balance for the unused days and {price} is charged for ' +
88
+ 'the new period.',
89
+ changeAfterOptionRefund:
90
+ 'The subscription moves to {option} for {period} now. {refund} is ' +
91
+ 'refunded to the account balance for the unused days and {price} is ' +
92
+ 'charged for the new period.',
93
+ changeConfirm: 'Confirm',
94
+ changeSubmit: 'Pay',
95
+ changePending: 'Changing…',
96
+ changeNoPlans: 'There is no other plan to move this subscription to.',
97
+ changeNoOptions: 'This plan has no service option to select.',
98
+ changeNoPeriods: 'This plan has no period that a change can be bought for.',
99
+ changeInsufficient:
100
+ 'The balance is lower than the new period. The refund for the unused ' +
101
+ 'days is added to the balance first, so the change can still succeed; ' +
102
+ 'top up the balance if the storefront refuses it.',
103
+ changeShort:
104
+ 'The balance and the refund together are lower than the new period. Top ' +
105
+ 'up the balance, or choose a shorter period.',
106
+ cancelSubscription: 'Cancel subscription',
107
+ cancelHint: 'Stop automatic renewal and keep the paid period',
108
+ cancelTitle: 'Cancel the subscription',
109
+ cancelSummary:
110
+ 'Automatic renewal stops and nothing is charged again. The subscription ' +
111
+ 'stays available until {date}, and no money is refunded.',
112
+ cancelSummaryNoDate:
113
+ 'Automatic renewal stops and nothing is charged again. The subscription ' +
114
+ 'stays available until the end of the paid period, and no money is ' +
115
+ 'refunded.',
116
+ cancelResume:
117
+ 'Selecting an automatic renewal period again starts renewal and removes ' +
118
+ 'the cancelled state.',
119
+ cancelSubmit: 'Unsubscribe',
120
+ cancelPending: 'Cancelling…',
121
+ cancelKeep: 'Keep',
122
+ cancelled: 'Cancelled',
123
+ cancelledOn: 'Cancelled on {date}',
124
+ cancelledState:
125
+ 'Automatic renewal is stopped. The subscription stays available until ' +
126
+ '{date}. Selecting an automatic renewal period starts it again.',
127
+ cancelledStateNoDate:
128
+ 'Automatic renewal is stopped. The subscription stays available until ' +
129
+ 'the end of the paid period. Selecting an automatic renewal period ' +
130
+ 'starts it again.',
131
+ remoteTitle: 'Subscription service',
132
+ remoteId: 'Subscription ID in the service',
133
+ remoteSync: 'Last confirmed by the service',
134
+ remoteSyncPending: 'Waiting for the service to confirm the last change',
135
+ remoteHost: 'Host',
136
+ planTitle: 'Plan',
137
+ planIncludes: 'Included in the plan',
138
+ planNotIncluded: 'not included',
139
+ usageTitle: 'Usage',
140
+ usageOf: '{used} of {limit}',
141
+ actions: 'Subscription actions',
142
+ };
143
+ const ru: typeof en = {
144
+ statusActive: 'Действует',
145
+ statusExpired: 'Завершена',
146
+ statusPending: 'Подключается',
147
+ statusPendingHint:
148
+ 'Сервис готовится к работе и подтверждает подписку самостоятельно.',
149
+ manage: 'Управление подпиской',
150
+ extend: 'Продлить сейчас',
151
+ extendHint: 'Оплатить ещё один период с баланса аккаунта',
152
+ renewalSettings: 'Автопродление',
153
+ renewalHint:
154
+ 'Выберите период, который оплачивается автоматически, или выключите ' +
155
+ 'автопродление',
156
+ changePlan: 'Сменить тариф',
157
+ changePlanHint: 'Перевести эту подписку на другой тариф',
158
+ close: 'Закрыть',
159
+ cancel: 'Отмена',
160
+ period: 'Период',
161
+ promo: 'Промокод',
162
+ promoHint: 'Необязательно. Промокод применяется к платному периоду.',
163
+ balance: 'Баланс аккаунта',
164
+ planPrice: 'Тариф за этот период',
165
+ optionPrice: 'Опция сервиса',
166
+ insufficient:
167
+ 'Баланса не хватает на этот период. Пополните баланс или выберите другой ' +
168
+ 'период.',
169
+ topUp: 'Пополнить',
170
+ extendTitle: 'Продление подписки',
171
+ extendSummary:
172
+ 'Выбранный период сразу списывается с баланса аккаунта и добавляется к ' +
173
+ 'подписке.',
174
+ extendAfter:
175
+ '{period} добавляется к подписке, а сумма списывается с баланса аккаунта ' +
176
+ 'сейчас.',
177
+ extendSubmit: 'Оплатить',
178
+ extendPending: 'Оплата…',
179
+ extendConfirm: 'Подтвердить',
180
+ renewalTitle: 'Автопродление',
181
+ renewalCurrentOn: 'Сейчас: каждые {days} за {price}.',
182
+ renewalCurrentOff: 'Сейчас: автопродление выключено.',
183
+ renewalOff: 'Выключить автопродление',
184
+ renewalOffHint: 'Ничего не списывается, оплаченный период остаётся доступен.',
185
+ renewalEffectOff:
186
+ 'Автопродление прекращается. Подписка остаётся доступна до конца ' +
187
+ 'оплаченного периода, и баланс за неё больше не списывается.',
188
+ renewalEffectOn:
189
+ 'Продление на {days} стоит {price} за тариф плюс доплата за опцию, если она есть. ' +
190
+ 'После окончания периода для продления нужен баланс на полную сумму. ' +
191
+ 'Если период уже закончился и средств достаточно, продление начинается ' +
192
+ 'сразу. Иначе сохраняется только настройка.',
193
+ renewalSubmit: 'Сохранить',
194
+ renewalPending: 'Сохранение…',
195
+ renewalNoChange: 'Это текущая настройка.',
196
+ changeOption: 'Сменить опцию сервиса',
197
+ changeOptionHint: 'Перевести эту подписку на другую опцию сервиса',
198
+ changePlanTitle: 'Смена тарифа',
199
+ changeOptionTitle: 'Смена опции сервиса',
200
+ changePlanSummary:
201
+ 'Неиспользованные дни текущего периода возвращаются на баланс аккаунта, ' +
202
+ 'а выбранный период нового тарифа списывается полностью.',
203
+ changeOptionSummary:
204
+ 'Неиспользованные дни текущего периода возвращаются на баланс аккаунта, ' +
205
+ 'а выбранный период с новой опцией сервиса списывается полностью.',
206
+ changePlanField: 'Новый тариф',
207
+ changeOptionField: 'Опция сервиса',
208
+ changeCurrentPlan: 'Сейчас: {plan}.',
209
+ changeCurrentOption: 'Сейчас: {option}.',
210
+ changeNoOption: 'Без опции сервиса',
211
+ changeRefund: 'Возврат за неиспользованные дни',
212
+ changeRefundHint:
213
+ 'Возврат сначала зачисляется на баланс аккаунта, и только потом ' +
214
+ 'списывается новый период, поэтому смена может быть по карману, даже ' +
215
+ 'если тот же период нельзя купить отдельно.',
216
+ changeRefundUnknown:
217
+ 'Эту сумму бэкенд магазина рассчитывает при отправке смены.',
218
+ changeAvailable: 'Доступно на эту смену',
219
+ changeTotal: 'Списание за новый период',
220
+ changeAfterPlan:
221
+ 'Подписка переходит на {plan} на {period} сейчас. Неиспользованные дни ' +
222
+ 'возвращаются на баланс аккаунта, а за новый период списывается {price}.',
223
+ changeAfterOption:
224
+ 'Подписка переходит на {option} на {period} сейчас. Неиспользованные дни ' +
225
+ 'возвращаются на баланс аккаунта, а за новый период списывается {price}.',
226
+ changeAfterPlanRefund:
227
+ 'Подписка переходит на {plan} на {period} сейчас. За неиспользованные ' +
228
+ 'дни на баланс аккаунта возвращается {refund}, а за новый период ' +
229
+ 'списывается {price}.',
230
+ changeAfterOptionRefund:
231
+ 'Подписка переходит на {option} на {period} сейчас. За неиспользованные ' +
232
+ 'дни на баланс аккаунта возвращается {refund}, а за новый период ' +
233
+ 'списывается {price}.',
234
+ changeConfirm: 'Подтвердить',
235
+ changeSubmit: 'Оплатить',
236
+ changePending: 'Смена…',
237
+ changeNoPlans: 'Другого тарифа для этой подписки нет.',
238
+ changeNoOptions: 'В этом тарифе нет опции сервиса для выбора.',
239
+ changeNoPeriods: 'В этом тарифе нет периода, на который можно сменить.',
240
+ changeInsufficient:
241
+ 'Баланса меньше, чем стоит новый период. Сначала на баланс зачисляется ' +
242
+ 'возврат за неиспользованные дни, поэтому смена всё ещё может пройти; ' +
243
+ 'пополните баланс, если магазин её отклонит.',
244
+ changeShort:
245
+ 'Баланса вместе с возвратом меньше, чем стоит новый период. Пополните ' +
246
+ 'баланс или выберите период короче.',
247
+ cancelSubscription: 'Отменить подписку',
248
+ cancelHint: 'Остановить автопродление и сохранить оплаченный период',
249
+ cancelTitle: 'Отмена подписки',
250
+ cancelSummary:
251
+ 'Автопродление прекращается, и списаний больше не будет. Подписка ' +
252
+ 'остаётся доступна до {date}, деньги не возвращаются.',
253
+ cancelSummaryNoDate:
254
+ 'Автопродление прекращается, и списаний больше не будет. Подписка ' +
255
+ 'остаётся доступна до конца оплаченного периода, деньги не возвращаются.',
256
+ cancelResume:
257
+ 'Если снова выбрать период автопродления, оно возобновится и отметка об ' +
258
+ 'отмене снимется.',
259
+ cancelSubmit: 'Отписаться',
260
+ cancelPending: 'Отмена…',
261
+ cancelKeep: 'Оставить',
262
+ cancelled: 'Отменена',
263
+ cancelledOn: 'Отменена {date}',
264
+ cancelledState:
265
+ 'Автопродление остановлено. Подписка остаётся доступна до {date}. Если ' +
266
+ 'снова выбрать период автопродления, оно возобновится.',
267
+ cancelledStateNoDate:
268
+ 'Автопродление остановлено. Подписка остаётся доступна до конца ' +
269
+ 'оплаченного периода. Если снова выбрать период автопродления, оно ' +
270
+ 'возобновится.',
271
+ remoteTitle: 'Сервис подписки',
272
+ remoteId: 'ID подписки в сервисе',
273
+ remoteSync: 'Последнее подтверждение сервиса',
274
+ remoteSyncPending: 'Сервис ещё не подтвердил последнее изменение',
275
+ remoteHost: 'Хост',
276
+ planTitle: 'Тариф',
277
+ planIncludes: 'Входит в тариф',
278
+ planNotIncluded: 'не входит',
279
+ usageTitle: 'Использование',
280
+ usageOf: '{used} из {limit}',
281
+ actions: 'Действия с подпиской',
282
+ };
283
+ export function subscriptionManageLabels(locale: string) {
284
+ return locale.toLowerCase().startsWith('ru') ? ru : en;
285
+ }
286
+
287
+ const russianDays = ['день', 'дня', 'дней'];
288
+
289
+ /** A period length with its noun: `30 days`, `30 дней`, `1 день`. */
290
+ export function subscriptionDays(days: number, locale: string) {
291
+ if (!locale.toLowerCase().startsWith('ru')) {
292
+ return `${days} ${days === 1 ? 'day' : 'days'}`;
293
+ }
294
+
295
+ const tens = days % 100;
296
+ const units = days % 10;
297
+ let form = russianDays[2];
298
+
299
+ if (units === 1 && tens !== 11) {
300
+ form = russianDays[0];
301
+ } else if (units >= 2 && units <= 4 && (tens < 12 || tens > 14)) {
302
+ form = russianDays[1];
303
+ }
304
+
305
+ return `${days} ${form}`;
306
+ }
@@ -0,0 +1,122 @@
1
+ import { tariffAmount } from '@/lib/orionplace/tariffs';
2
+ import type { ISubscribeTariff } from '@/interfaces/orionplace/subscribeTariff/ISubscribeTariff';
3
+ import type { ICurrencyAmounts } from '@/interfaces/orionplace/cart/ICartData';
4
+ import type {
5
+ ICustomerSubscription,
6
+ ICustomerSubscriptionRenewal,
7
+ } from '@/interfaces/orionplace/subscribes/ISubscriptionApi';
8
+
9
+ export function renewalPlanCosts(
10
+ renewal: ICustomerSubscriptionRenewal,
11
+ ): ICurrencyAmounts {
12
+ return 'cost' in renewal ? renewal.cost : renewal.tariff_costs;
13
+ }
14
+
15
+ export function renewalOptionCosts(
16
+ renewal: ICustomerSubscriptionRenewal,
17
+ ): ICurrencyAmounts {
18
+ return 'cost' in renewal ? {} : renewal.option_costs;
19
+ }
20
+
21
+ export function renewalTotalAmount(
22
+ renewal: ICustomerSubscriptionRenewal | null,
23
+ currencyId: string,
24
+ ) {
25
+ if (!renewal) {
26
+ return undefined;
27
+ }
28
+ const plan = tariffAmount(renewalPlanCosts(renewal), currencyId);
29
+ const option = tariffAmount(renewalOptionCosts(renewal), currencyId) ?? 0;
30
+ return plan === undefined ? undefined : plan + option;
31
+ }
32
+
33
+ export type SubscriptionStatus = 'active' | 'ended' | 'pending';
34
+
35
+ export function subscriptionStatus(
36
+ subscription: Pick<ICustomerSubscription, 'active_until' | 'plugin'>,
37
+ ): SubscriptionStatus {
38
+ if (subscription.plugin?.remote_subscription_sync_pending) {
39
+ return 'pending';
40
+ }
41
+ const until = subscription.active_until;
42
+ return typeof until?.days_ago === 'number' && until.days_ago < 0
43
+ ? 'active'
44
+ : 'ended';
45
+ }
46
+
47
+ function samePrice(amounts: ICurrencyAmounts, costs: ICurrencyAmounts) {
48
+ const currencies = Object.keys(costs);
49
+ return (
50
+ currencies.length > 0 &&
51
+ currencies.every((currencyId) => {
52
+ const price = amounts[currencyId]?.transform_value;
53
+ const cost = costs[currencyId]?.transform_value;
54
+ return (
55
+ typeof price === 'number' &&
56
+ typeof cost === 'number' &&
57
+ Math.abs(price - cost) < 0.01
58
+ );
59
+ })
60
+ );
61
+ }
62
+
63
+ function planFromRenewalPrice(
64
+ renewal: ICustomerSubscriptionRenewal,
65
+ tariffs: ISubscribeTariff[],
66
+ ) {
67
+ const costs = renewalPlanCosts(renewal);
68
+ const matches = tariffs.filter((tariff) =>
69
+ tariff.prices.some(
70
+ (price) => price.days === renewal.days && samePrice(price.amount, costs),
71
+ ),
72
+ );
73
+ return matches.length === 1 ? matches[0] : undefined;
74
+ }
75
+
76
+ export function subscriptionPlan(
77
+ subscription: {
78
+ tariff?: number | null;
79
+ renew_period: ICustomerSubscriptionRenewal | null;
80
+ },
81
+ tariffs: ISubscribeTariff[],
82
+ ) {
83
+ if (subscription.tariff !== undefined) {
84
+ return tariffs.find((tariff) => tariff.id === subscription.tariff);
85
+ }
86
+ return subscription.renew_period
87
+ ? planFromRenewalPrice(subscription.renew_period, tariffs)
88
+ : undefined;
89
+ }
90
+
91
+ export function subscriptionOption(
92
+ subscription: { option?: number | null },
93
+ plan: ISubscribeTariff | undefined,
94
+ ) {
95
+ return typeof subscription.option === 'number'
96
+ ? plan?.options.find((option) => option.id === subscription.option)
97
+ : undefined;
98
+ }
99
+
100
+ export interface ISubscriptionPeriodChoice {
101
+ id: number;
102
+ periodId: number;
103
+ days: number;
104
+ amount: number | undefined;
105
+ }
106
+
107
+ export function subscriptionPeriodChoices(
108
+ tariff: ISubscribeTariff | undefined,
109
+ currencyId: string,
110
+ ): ISubscriptionPeriodChoice[] {
111
+ if (!tariff) {
112
+ return [];
113
+ }
114
+ return [...tariff.prices]
115
+ .sort((left, right) => left.days - right.days)
116
+ .map((price) => ({
117
+ id: price.tariff_cost_id,
118
+ periodId: price.period_id,
119
+ days: price.days,
120
+ amount: tariffAmount(price.amount, currencyId),
121
+ }));
122
+ }
@@ -0,0 +1,85 @@
1
+ import type { JsonValue } from '@/interfaces/orionplace/transport';
2
+ import type { ICustomerSubscription } from '@/interfaces/orionplace/subscribes/ISubscriptionApi';
3
+
4
+ export interface SubscriptionRemoteEntry {
5
+ key: string;
6
+ label: string;
7
+ value: string;
8
+ }
9
+
10
+ export interface SubscriptionRemoteField {
11
+ key: string;
12
+ label?: string;
13
+ }
14
+
15
+ const secretParts = [
16
+ 'cred',
17
+ 'password',
18
+ 'passwd',
19
+ 'secret',
20
+ 'token',
21
+ 'apikey',
22
+ 'api_key',
23
+ 'private',
24
+ 'bucket',
25
+ 'dsn',
26
+ 'connection',
27
+ 'auth',
28
+ ];
29
+
30
+ export function subscriptionRemoteIsSecret(key: string) {
31
+ const name = key.toLowerCase();
32
+ return secretParts.some((part) => name.includes(part));
33
+ }
34
+
35
+ export function subscriptionRemoteEntries(
36
+ data: JsonValue,
37
+ fields?: SubscriptionRemoteField[],
38
+ ): SubscriptionRemoteEntry[] {
39
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
40
+ return [];
41
+ }
42
+ const record = data as Record<string, JsonValue>;
43
+ const chosen: SubscriptionRemoteField[] =
44
+ fields ?? Object.keys(record).map((key) => ({ key }));
45
+ const entries: SubscriptionRemoteEntry[] = [];
46
+ for (const field of chosen) {
47
+ const value = record[field.key];
48
+ if (subscriptionRemoteIsSecret(field.key)) {
49
+ continue;
50
+ }
51
+ if (typeof value === 'string' && value.trim()) {
52
+ entries.push({
53
+ key: field.key,
54
+ label: field.label ?? field.key,
55
+ value,
56
+ });
57
+ } else if (typeof value === 'number' && Number.isFinite(value)) {
58
+ entries.push({
59
+ key: field.key,
60
+ label: field.label ?? field.key,
61
+ value: String(value),
62
+ });
63
+ } else if (typeof value === 'boolean') {
64
+ entries.push({
65
+ key: field.key,
66
+ label: field.label ?? field.key,
67
+ value: String(value),
68
+ });
69
+ }
70
+ }
71
+ return entries;
72
+ }
73
+
74
+ export function subscriptionHasRemote(
75
+ subscription: Pick<ICustomerSubscription, 'plugin'>,
76
+ ) {
77
+ const plugin = subscription.plugin;
78
+ return Boolean(
79
+ plugin &&
80
+ (typeof plugin.remote_subscription_id === 'number' ||
81
+ subscriptionRemoteEntries(plugin.remote_subscription_data_user).length ||
82
+ subscriptionRemoteEntries(plugin.remote_subscription_tariff_usages)
83
+ .length),
84
+ );
85
+ }
@@ -0,0 +1,58 @@
1
+ import type { JsonValue } from '@/interfaces/orionplace/transport';
2
+ import type { ISubscribeTariff } from '@/interfaces/orionplace/subscribeTariff/ISubscribeTariff';
3
+ import {
4
+ tariffUsageDetail,
5
+ tariffVariableCopy,
6
+ tariffVariableDetail,
7
+ } from '@/lib/orionplace/tariffVariables';
8
+ import { subscriptionRemoteIsSecret } from '@/lib/orionplace/subscriptionRemote';
9
+
10
+ export interface SubscriptionUsageMeter {
11
+ key: string;
12
+ limitKey: string;
13
+ label: string;
14
+ hint: string;
15
+ used: string;
16
+ limit: string;
17
+ share: number | null;
18
+ }
19
+
20
+ export function subscriptionUsageMeters(
21
+ usage: JsonValue,
22
+ plan: ISubscribeTariff | undefined,
23
+ locale: string,
24
+ ): SubscriptionUsageMeter[] {
25
+ if (!usage || typeof usage !== 'object' || Array.isArray(usage)) {
26
+ return [];
27
+ }
28
+ const described = tariffVariableCopy(locale);
29
+ const variables = plan?.tariff_variables_json ?? {};
30
+ const meters: SubscriptionUsageMeter[] = [];
31
+ for (const [key, value] of Object.entries(usage)) {
32
+ if (
33
+ typeof value !== 'number' ||
34
+ !Number.isFinite(value) ||
35
+ subscriptionRemoteIsSecret(key)
36
+ ) {
37
+ continue;
38
+ }
39
+ const limitKey = `max_${key}`;
40
+ const known = described[limitKey];
41
+ // The backend allows one domain when the plan sets no limit; 0 means no limit.
42
+ const rawLimit = variables[limitKey] ?? (limitKey === 'max_front_hosts' ? 1 : undefined);
43
+ const limit = typeof rawLimit === 'number' ? rawLimit : undefined;
44
+ meters.push({
45
+ key,
46
+ limitKey,
47
+ label: known?.name || key,
48
+ hint: known?.hint ?? '',
49
+ used: tariffUsageDetail(limitKey, value, locale),
50
+ limit:
51
+ limit === undefined
52
+ ? ''
53
+ : tariffVariableDetail(limitKey, limit, locale),
54
+ share: limit ? Math.min(Math.max(value / limit, 0), 1) : null,
55
+ });
56
+ }
57
+ return meters;
58
+ }