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,254 @@
1
+ 'use client';
2
+
3
+ import {
4
+ useEffect,
5
+ useRef,
6
+ useState,
7
+ type MouseEvent,
8
+ } from 'react';
9
+ import { useOrionplaceSelections } from '@/providers/OrionplaceProvider';
10
+ import { featureLabels } from '@/lib/orionplace/featureLabels';
11
+ import { ticketLabels } from '@/lib/orionplace/ticketLabels';
12
+ import {
13
+ createPageScrollLock,
14
+ restoreFocus,
15
+ } from '@/lib/orionplace/modalWindow';
16
+ import styles from './Support.module.css';
17
+
18
+ export interface TicketImageLoadAction {
19
+ endpoint: 'customer_tickets_ticket_images';
20
+ request: Record<string, never>;
21
+ path: { image_id: number };
22
+ signal: AbortSignal;
23
+ }
24
+
25
+ export interface TicketImageProps {
26
+ imageId: number;
27
+ initialSource?: string;
28
+ loadOnMount?: boolean;
29
+ onLoad: (action: TicketImageLoadAction) => Promise<Blob> | Blob;
30
+ }
31
+
32
+ function ImageIcon() {
33
+ return (
34
+ <svg
35
+ className={styles.icon}
36
+ viewBox="0 0 24 24"
37
+ fill="none"
38
+ stroke="currentColor"
39
+ strokeWidth="1.6"
40
+ strokeLinecap="round"
41
+ strokeLinejoin="round"
42
+ aria-hidden="true"
43
+ >
44
+ <path d="M4 4h16v16H4Z" />
45
+ <circle
46
+ cx="9"
47
+ cy="9"
48
+ r="2"
49
+ />
50
+ <path d="m20 15-5-5L4 20" />
51
+ </svg>
52
+ );
53
+ }
54
+
55
+ export function TicketImage({
56
+ imageId,
57
+ initialSource = '',
58
+ loadOnMount = true,
59
+ onLoad,
60
+ }: TicketImageProps) {
61
+ const locale = useOrionplaceSelections((state) => state.localeCode);
62
+ const labels = ticketLabels(locale);
63
+ const common = featureLabels(locale);
64
+ const active = useRef<AbortController | undefined>(undefined);
65
+ const objectUrl = useRef('');
66
+ const viewer = useRef<HTMLDialogElement>(null);
67
+ const [pageScroll] = useState(() => createPageScrollLock());
68
+ const opener = useRef<HTMLElement | undefined>(undefined);
69
+ const callback = useRef(onLoad);
70
+ callback.current = onLoad;
71
+ const [source, setSource] = useState(initialSource);
72
+ const [pending, setPending] = useState(loadOnMount && !initialSource);
73
+ // Any failure shows the localized `labels.imageError`; the reason of a
74
+ // failed request is never displayed.
75
+ const [failed, setFailed] = useState(false);
76
+
77
+ function releaseObjectUrl() {
78
+ if (objectUrl.current) {
79
+ URL.revokeObjectURL(objectUrl.current);
80
+ objectUrl.current = '';
81
+ }
82
+ }
83
+
84
+ async function load() {
85
+ active.current?.abort();
86
+ const controller = new AbortController();
87
+ active.current = controller;
88
+ setPending(true);
89
+ setFailed(false);
90
+
91
+ try {
92
+ const blob = await callback.current({
93
+ endpoint: 'customer_tickets_ticket_images',
94
+ request: {},
95
+ path: { image_id: imageId },
96
+ signal: controller.signal,
97
+ });
98
+ if (controller.signal.aborted) {
99
+ return;
100
+ }
101
+ if (
102
+ !(blob instanceof Blob) ||
103
+ /(?:application\/json|text\/html)/i.test(blob.type)
104
+ ) {
105
+ throw new Error(labels.imageError);
106
+ }
107
+ releaseObjectUrl();
108
+ objectUrl.current = URL.createObjectURL(blob);
109
+ setSource(objectUrl.current);
110
+ } catch {
111
+ if (!controller.signal.aborted) {
112
+ setSource('');
113
+ setFailed(true);
114
+ }
115
+ } finally {
116
+ if (!controller.signal.aborted) {
117
+ setPending(false);
118
+ }
119
+ }
120
+ }
121
+
122
+ // A tap opens the image in a window on the page. A new tab of a `blob:`
123
+ // address replaced the storefront in the Android app, where Back then had
124
+ // no page to return to. A modified click still opens the link as usual.
125
+ function open(event: MouseEvent<HTMLAnchorElement>) {
126
+ if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey) {
127
+ return;
128
+ }
129
+ event.preventDefault();
130
+ opener.current = event.currentTarget;
131
+ pageScroll.lock();
132
+ viewer.current?.showModal();
133
+ }
134
+
135
+ // The link that opened the window gets the focus back.
136
+ function closed() {
137
+ pageScroll.unlock();
138
+ restoreFocus(opener.current);
139
+ }
140
+
141
+ // A tap beside the image, on the backdrop, closes the window.
142
+ function closeOutside(event: MouseEvent<HTMLDialogElement>) {
143
+ if (event.target === viewer.current) {
144
+ viewer.current?.close();
145
+ }
146
+ }
147
+
148
+ useEffect(() => () => pageScroll.unlock(), [pageScroll]);
149
+
150
+ useEffect(() => {
151
+ setSource(initialSource);
152
+ setFailed(false);
153
+ if (loadOnMount && !initialSource) {
154
+ void load();
155
+ } else {
156
+ setPending(false);
157
+ }
158
+
159
+ return () => {
160
+ active.current?.abort();
161
+ releaseObjectUrl();
162
+ };
163
+ }, [imageId, initialSource, loadOnMount]);
164
+
165
+ return (
166
+ <div
167
+ className={`${styles.root} ${styles.thumbnail}`}
168
+ data-feature-part="TicketImage"
169
+ >
170
+ {source ? (
171
+ <a
172
+ className={styles.thumbnailLink}
173
+ href={source}
174
+ target="_blank"
175
+ rel="noopener noreferrer"
176
+ aria-label={labels.image}
177
+ onClick={open}
178
+ >
179
+ <img
180
+ src={source}
181
+ alt={labels.image}
182
+ width={96}
183
+ height={96}
184
+ />
185
+ </a>
186
+ ) : null}
187
+ {source ? (
188
+ <dialog
189
+ ref={viewer}
190
+ className={`${styles.root} ${styles.viewer}`}
191
+ aria-label={labels.image}
192
+ data-stable-modal="fixed"
193
+ data-ticket-image-viewer
194
+ onClick={closeOutside}
195
+ onClose={closed}
196
+ >
197
+ <img
198
+ src={source}
199
+ alt={labels.image}
200
+ width={960}
201
+ height={960}
202
+ />
203
+ <button
204
+ className={`${styles.tool} ${styles.iconButton} ${styles.viewerClose}`}
205
+ type="button"
206
+ aria-label={common.close}
207
+ title={common.close}
208
+ onClick={() => viewer.current?.close()}
209
+ >
210
+ <svg
211
+ className={styles.icon}
212
+ viewBox="0 0 24 24"
213
+ fill="none"
214
+ stroke="currentColor"
215
+ strokeWidth="1.6"
216
+ strokeLinecap="round"
217
+ strokeLinejoin="round"
218
+ aria-hidden="true"
219
+ >
220
+ <path d="M6 6l12 12M18 6 6 18" />
221
+ </svg>
222
+ </button>
223
+ </dialog>
224
+ ) : (
225
+ <div className={styles.thumbnailState}>
226
+ <ImageIcon />
227
+ <p role="status">{pending ? common.loading : labels.imageError}</p>
228
+ {failed ? (
229
+ <button
230
+ className={`${styles.tool} ${styles.iconButton}`}
231
+ type="button"
232
+ aria-label={common.retry}
233
+ title={common.retry}
234
+ onClick={() => void load()}
235
+ >
236
+ <svg
237
+ className={styles.icon}
238
+ viewBox="0 0 24 24"
239
+ fill="none"
240
+ stroke="currentColor"
241
+ strokeWidth="1.6"
242
+ strokeLinecap="round"
243
+ strokeLinejoin="round"
244
+ aria-hidden="true"
245
+ >
246
+ <path d="M20 11a8 8 0 1 0-2.3 5.7M20 4v7h-7" />
247
+ </svg>
248
+ </button>
249
+ ) : null}
250
+ </div>
251
+ )}
252
+ </div>
253
+ );
254
+ }
@@ -0,0 +1,66 @@
1
+ # TicketItemCard · React
2
+
3
+ ## English
4
+
5
+ `TicketItemCard` identifies the purchased item that a support conversation or
6
+ return is about. `product` supplies the localized name, variant and pictures.
7
+ The component prefers `product.images.small` and falls back to
8
+ `product.images.full`; the main picture reserves a 96 by 96 area before it
9
+ loads. A missing product remains visible as “Item no longer available”.
10
+
11
+ `option` names the purchased option group, `quantity` is the purchased amount,
12
+ and `amount` is shown in the currently selected currency under `amountLabel` or
13
+ the localized Paid label. With `gallery`, each product picture is an accessible
14
+ button that replaces the main picture. The selection returns to the first
15
+ picture when the product changes. `children` adds related lines such as return
16
+ counts.
17
+
18
+ The product name links to `productHref(product.id, locale)`. The component
19
+ makes no request and reports no action. Source is maintained in
20
+ `components/orionplace/support/TicketItemCard.tsx`.
21
+
22
+ ### Props
23
+
24
+ | Prop | Meaning |
25
+ | ------------------------------------------------------------- | ----------------------------------------------------------- |
26
+ | `product: IProduct` | Product or checkout item displayed by the component. |
27
+ | `quantity?: number` | Current item quantity. |
28
+ | `option?: string` | Selected tariff or product option. |
29
+ | `amount?: ICurrencyAmounts` | Monetary amount shown for the current item. |
30
+ | `amountLabel?: string` | Visible or accessible label for amount. |
31
+ | `gallery?: boolean` | Images shown for the current product or support item. |
32
+ | `productHref?: (productId: number, locale: string) => string` | Builds the product destination from the callback arguments. |
33
+ | `children?: ReactNode` | React content rendered inside the component. |
34
+
35
+ ## Русский
36
+
37
+ `TicketItemCard` показывает купленный товар, к которому относится обращение
38
+ или возврат. `product` передаёт локализованное название, вариант и изображения.
39
+ Компонент сначала использует `product.images.small`, а при их отсутствии —
40
+ `product.images.full`; под основное изображение заранее выделяется область 96
41
+ на 96. Если товар больше не приходит в ответе, карточка остаётся видимой с
42
+ текстом «Товар больше не доступен».
43
+
44
+ `option` называет группу купленного дополнения, `quantity` содержит купленное
45
+ количество, а `amount` выводится в выбранной валюте под `amountLabel` или
46
+ локализованной подписью «Оплачено». При `gallery` каждое изображение становится
47
+ доступной кнопкой и заменяет основное. После смены товара снова выбирается
48
+ первое изображение. Через `children` родитель добавляет связанные строки,
49
+ например количество товаров на этапах возврата.
50
+
51
+ Название товара ведёт по адресу `productHref(product.id, locale)`. Компонент не
52
+ выполняет запросы и не сообщает о действиях. Исходный файл:
53
+ `components/orionplace/support/TicketItemCard.tsx`.
54
+
55
+ ### Свойства
56
+
57
+ | Свойство | Назначение |
58
+ | ------------------------------------------------------------- | ----------------------------------------------------------- |
59
+ | `product: IProduct` | Товар или позиция оформления, которую показывает компонент. |
60
+ | `quantity?: number` | Текущее количество позиции. |
61
+ | `option?: string` | Выбранная опция тарифа или товара. |
62
+ | `amount?: ICurrencyAmounts` | Денежная сумма для текущей позиции. |
63
+ | `amountLabel?: string` | Видимая или доступная подпись для суммы. |
64
+ | `gallery?: boolean` | Изображения текущего товара или обращения. |
65
+ | `productHref?: (productId: number, locale: string) => string` | Строит адрес ссылки товара из аргументов обработчика. |
66
+ | `children?: ReactNode` | React-содержимое внутри компонента. |
@@ -0,0 +1,140 @@
1
+ 'use client';
2
+
3
+ import { useEffect, useState, type ReactNode } from 'react';
4
+ import { useOrionplaceSelections } from '@/providers/OrionplaceProvider';
5
+ import type { ICurrencyAmounts } from '@/interfaces/orionplace/cart/ICartData';
6
+ import type { IProduct } from '@/interfaces/orionplace/products/IProduct';
7
+ import { formatCurrency } from '@/lib/orionplace/currency';
8
+ import {
9
+ orderAmount,
10
+ orderItemVariant,
11
+ } from '@/lib/orionplace/orderPresentation';
12
+ import { getAvailableNestedValueFromObject } from '@/lib/orionplace/presentation';
13
+ import { ticketLabels } from '@/lib/orionplace/ticketLabels';
14
+ import { OrionplaceImage } from '@/components/orionplace/shared/OrionplaceImage';
15
+ import styles from './Support.module.css';
16
+
17
+ export interface TicketItemCardProps {
18
+ product: IProduct | null;
19
+ quantity?: number;
20
+ option?: string;
21
+ amount?: ICurrencyAmounts | null;
22
+ amountLabel?: string;
23
+ gallery?: boolean;
24
+ productHref?: (productId: number, locale: string) => string;
25
+ children?: ReactNode;
26
+ }
27
+
28
+ export function TicketItemCard({
29
+ product,
30
+ quantity,
31
+ option,
32
+ amount,
33
+ amountLabel,
34
+ gallery = false,
35
+ productHref = (id, locale) =>
36
+ `/product/${id}?locale=${encodeURIComponent(locale)}`,
37
+ children,
38
+ }: TicketItemCardProps) {
39
+ const locale = useOrionplaceSelections((state) => state.localeCode);
40
+ const currencyId = useOrionplaceSelections((state) => state.currencyId);
41
+ const currency = useOrionplaceSelections(
42
+ (state) => state.init?.currencies[state.currencyId],
43
+ );
44
+ const labels = ticketLabels(locale);
45
+ const name =
46
+ getAvailableNestedValueFromObject(
47
+ product?.locale,
48
+ locale,
49
+ 'product_name',
50
+ ) || labels.itemUnknown;
51
+ const pictures = product?.images?.small?.length
52
+ ? product.images.small
53
+ : (product?.images?.full ?? []);
54
+ const [selected, setSelected] = useState(0);
55
+ const photo = pictures[selected] ?? pictures[0] ?? null;
56
+ const variant = orderItemVariant(product, locale);
57
+ const value = orderAmount(amount, currencyId);
58
+ const price = value === undefined ? '' : formatCurrency(value, currency, locale);
59
+
60
+ useEffect(() => {
61
+ setSelected(0);
62
+ }, [product?.id]);
63
+
64
+ return (
65
+ <div
66
+ className={`${styles.root} ${styles.item}`}
67
+ data-feature-part="TicketItemCard"
68
+ data-ticket-item
69
+ >
70
+ <div
71
+ className={styles.itemPhoto}
72
+ data-ticket-item-photo
73
+ >
74
+ <OrionplaceImage
75
+ src={photo}
76
+ alt={name}
77
+ width={96}
78
+ height={96}
79
+ />
80
+ </div>
81
+ <div className={styles.itemBody}>
82
+ {product ? (
83
+ <a
84
+ className={styles.link}
85
+ href={productHref(product.id, locale)}
86
+ >
87
+ {name}
88
+ </a>
89
+ ) : (
90
+ <p className={styles.itemName}>{name}</p>
91
+ )}
92
+ {option ? (
93
+ <p>
94
+ <span className={styles.screenReaderOnly}>
95
+ {labels.itemOption}:{' '}
96
+ </span>
97
+ {option}
98
+ </p>
99
+ ) : null}
100
+ {variant ? <p>{variant}</p> : null}
101
+ {quantity ? (
102
+ <p>
103
+ {labels.itemQuantity}: {quantity}
104
+ </p>
105
+ ) : null}
106
+ {price ? (
107
+ <p>
108
+ {amountLabel || labels.itemPrice}: {price}
109
+ </p>
110
+ ) : null}
111
+ {gallery && pictures.length > 1 ? (
112
+ <ul
113
+ className={styles.gallery}
114
+ data-ticket-item-gallery
115
+ >
116
+ {pictures.map((picture, index) => (
117
+ <li key={`${picture}:${index}`}>
118
+ <button
119
+ type="button"
120
+ aria-label={`${labels.itemPicture} ${index + 1} / ${pictures.length}`}
121
+ aria-pressed={index === selected}
122
+ onClick={() => setSelected(index)}
123
+ >
124
+ <OrionplaceImage
125
+ src={picture}
126
+ alt=""
127
+ width={48}
128
+ height={48}
129
+ ariaHidden
130
+ />
131
+ </button>
132
+ </li>
133
+ ))}
134
+ </ul>
135
+ ) : null}
136
+ {children}
137
+ </div>
138
+ </div>
139
+ );
140
+ }
@@ -0,0 +1,88 @@
1
+ # TicketMessageForm · React
2
+
3
+ ## English
4
+
5
+ `TicketMessageForm` collects the text and images for a new support conversation
6
+ or a reply. The browser requires 2–2048 characters. The text area grows with
7
+ the message until its maximum height, then scrolls. The attachment action
8
+ accepts JPG, GIF, PNG, WebP and ICO files, keeps earlier selections when more
9
+ files are chosen, lists every filename and lets the visitor remove one file.
10
+
11
+ Each message, new or reply, accepts up to five images. Exceeding that limit
12
+ keeps the chosen files visible, explains the problem and blocks submission.
13
+ With `creating`, the form displays Create and Cancel; without it, the form
14
+ displays Send. `pending` disables all controls. A refused submission is shown
15
+ by the parent above the conversation list, as in Nuxt.
16
+ `waitHint` locks the text, attachments and submit button and shows that text
17
+ above the actions (`data-ticket-wait`); `TicketConversation` passes
18
+ `ticketReplyWaitText(ticket.reply_wait)` while the backend would reject a new
19
+ message.
20
+
21
+ `refundWindow` turns a new return request (with `creating`) into a choice
22
+ about a defect (`data-ticket-defect`). `regular`, inside the return period,
23
+ adds an optional “The item is defective” checkbox. `defect`, after the regular
24
+ period while only a defect can be returned, shows the “Defect” checkbox checked
25
+ and locked with “The regular return period is over; a return is possible for
26
+ a defect only.” `null` or no value shows no choice. `StorefrontSupport` passes
27
+ the `refund_window` of the order line the conversation is about and sends
28
+ `is_defect: true` only for a request marked as a defect.
29
+
30
+ A valid submission calls `onSubmit(text, files, isDefect)`. The form keeps its values so
31
+ a failed request can be corrected; the parent remounts it after confirmed
32
+ success. `onCancel` is available in creation mode. Source is maintained in
33
+ `components/orionplace/support/TicketMessageForm.tsx`.
34
+
35
+ ### Props
36
+
37
+ | Prop | Meaning |
38
+ | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
39
+ | `pending?: boolean` | Shows the loading state and blocks duplicate actions. |
40
+ | `creating?: boolean` | Uses the new-record form state instead of the reply state. |
41
+ | `waitHint?: string` | Locks the form and shows this hint while a new message would be rejected. |
42
+ | `refundWindow?: OrderRefundWindow \| null` | Return request window of the order line: `regular` offers an optional defect mark, `defect` requires it, `null` shows none. |
43
+ | `onSubmit?: (text: string, files: File[], isDefect: boolean) => void` | After form validation, passes the message `text`, `files` array and whether the return request is marked as a defect as separate arguments. Fields are preserved; the application sends the message and remounts the form after success. |
44
+ | `onCancel?: () => void` | The cancel button in ticket creation mode calls the handler without arguments. The application closes the creation form. |
45
+
46
+ ## Русский
47
+
48
+ `TicketMessageForm` собирает текст и изображения для нового обращения или
49
+ ответа. Браузер требует от 2 до 2048 символов. Поле растёт вместе с сообщением
50
+ до максимальной высоты, затем прокручивается. Кнопка прикрепления принимает
51
+ файлы JPG, GIF, PNG, WebP и ICO, сохраняет предыдущий выбор при добавлении
52
+ новых файлов, показывает каждое имя и позволяет убрать отдельный файл.
53
+
54
+ Каждое сообщение, новое или ответ, принимает до пяти изображений. Если выбрать
55
+ больше, файлы остаются видимыми, форма объясняет ошибку и блокирует отправку.
56
+ При `creating` форма показывает действия «Создать» и «Отмена», без него —
57
+ «Отправить». `pending` блокирует все элементы. Ошибку отправки родитель
58
+ показывает над списком обращений, как в Nuxt. `waitHint` блокирует текст,
59
+ вложения и кнопку отправки и показывает этот текст над действиями
60
+ (`data-ticket-wait`); `TicketConversation` передаёт
61
+ `ticketReplyWaitText(ticket.reply_wait)`, пока сервер отклонил бы новое
62
+ сообщение.
63
+
64
+ `refundWindow` превращает новую заявку на возврат (при `creating`) в выбор
65
+ о браке (`data-ticket-defect`). `regular`, пока идёт срок возврата, добавляет
66
+ необязательный флажок «Товар с браком». `defect`, когда обычный срок истёк и
67
+ вернуть можно только брак, показывает отмеченный и заблокированный флажок
68
+ «Брак» с пояснением «Срок обычного возврата истёк; возврат возможен только по
69
+ браку.» `null` или отсутствие значения не показывает выбор. `StorefrontSupport`
70
+ передаёт `refund_window` позиции заказа, о которой обращение, и отправляет
71
+ `is_defect: true` только для заявки, отмеченной как брак.
72
+
73
+ После успешной проверки форма вызывает `onSubmit(text, files, isDefect)`. Значения
74
+ сохраняются, чтобы после неудачного запроса их можно было исправить; после
75
+ подтверждённого успеха родитель создаёт форму заново. В режиме создания
76
+ `onCancel` сообщает об отмене. Исходный файл:
77
+ `components/orionplace/support/TicketMessageForm.tsx`.
78
+
79
+ ### Свойства
80
+
81
+ | Свойство | Назначение |
82
+ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
83
+ | `pending?: boolean` | Показывает загрузку и блокирует повторные действия. |
84
+ | `creating?: boolean` | Включает форму нового обращения вместо ответа. |
85
+ | `waitHint?: string` | Блокирует форму и показывает эту подсказку, пока новое сообщение было бы отклонено. |
86
+ | `refundWindow?: OrderRefundWindow \| null` | Срок заявки на возврат для позиции заказа: `regular` — необязательная отметка брака, `defect` — обязательная, `null` — без отметки. |
87
+ | `onSubmit?: (text: string, files: File[], isDefect: boolean) => void` | После проверки формы передаёт отдельными аргументами текст `text`, массив файлов `files` и отметку брака для заявки на возврат. Поля сохраняются; приложение отправляет сообщение и после успеха создаёт форму заново. |
88
+ | `onCancel?: () => void` | Кнопка отмены в режиме создания обращения вызывает обработчик без аргументов. Приложение закрывает форму создания. |