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,70 @@
1
+ # AccountPromocodes
2
+
3
+ ## English
4
+
5
+ `AccountPromocodes` shows promo codes issued to the signed-in customer. On
6
+ mount, retry and page selection it calls `onLoad` with an
7
+ `IPromoIssuesRequest`. Each entry shows the discount and its maximum
8
+ (`maximum_discount`), covered products, categories or sellers, the minimum order
9
+ (`minimum_order_amount`: what the covered products must cost together;
10
+ a dollar amount, shown as “$ 544 ≈ 40 256 ₽” in another currency and “$ 544” in dollars), a
11
+ first-purchase-only rule (`first_order_only`), use with already discounted
12
+ items, valid dates and remaining uses. Monetary values use the currently selected
13
+ currency and its configured symbols.
14
+
15
+ Only a currently usable code shows Apply. That button calls `onApply` with
16
+ `{ promocode: code.code_value }` and the selected `IPromoIssue`; the host applies
17
+ the code and refreshes the list after confirmation; a refusal goes to `error`
18
+ with `errorCode` set to that code's ID, and the card shows it under its
19
+ buttons. Applied, inactive, expired and not-yet-started codes (a scheduled
20
+ offer stays inactive until its start day) show their specific status. Real locale-preserving
21
+ links open the cart and the products covered by each offer.
22
+
23
+ ### Props
24
+
25
+ | Prop | Meaning |
26
+ | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
27
+ | `codes?: readonly IPromoIssue[]` | Promotion codes returned for the customer account. |
28
+ | `pagination?: Partial<IApiPagination>` | Current API pagination values. |
29
+ | `loaded?: boolean` | Distinguishes a confirmed empty result from data that has not loaded yet. |
30
+ | `pending?: boolean` | Shows the loading state and blocks duplicate actions. |
31
+ | `error?: string` | Customer-visible error for the component request; omit it when no request failed. |
32
+ | `errorCode?: number` | ID of the code whose Apply was refused: `error` shows in that card. Without it `error` belongs to loading the list and shows above it with Retry. |
33
+ | `onLoad?: (request: IPromoIssuesRequest) => void` | Passes page parameters in `paginate` on opening, retry and promo-code page changes. The application loads issued codes and supplies the data, `pending`, `loaded` and error. |
34
+ | `onApply?: (request: ICartPromoRequest, code: IPromoIssue) => void` | Selecting an eligible code passes two arguments: a request with `promocode: code.code_value` and the issued-code object. The application applies the code and updates the cart. |
35
+ | `headingLevel?: "h1" \| "h2"` | Heading element for the section title: `h1` on the standalone promo codes page or `h2` inside My activity. Defaults to `h2`. |
36
+
37
+ ## Русский
38
+
39
+ `AccountPromocodes` показывает промокоды, выданные вошедшему покупателю. После
40
+ монтирования, при повторе и выборе страницы компонент вызывает `onLoad` со
41
+ значением `IPromoIssuesRequest`. Для каждого промокода выводятся скидка,
42
+ максимальная скидка (`maximum_discount`), подходящие товары, категории или
43
+ продавцы, минимальная сумма заказа (`minimum_order_amount`: сколько должны стоить вместе
44
+ товары, на которые действует код; сумма в долларах: «$ 544 ≈ 40 256 ₽» в другой валюте и «$ 544» в долларах), правило
45
+ «только для первой покупки» (`first_order_only`), совместимость с уже уценёнными товарами, срок действия и
46
+ оставшиеся применения.
47
+ Денежные значения используют выбранную валюту и настроенные для неё символы.
48
+
49
+ Кнопка применения есть только у доступного сейчас промокода. Она вызывает
50
+ `onApply` со значением `{ promocode: code.code_value }` и выбранным
51
+ `IPromoIssue`; родитель применяет код и после подтверждения обновляет список;
52
+ отказ передаётся в `error`, а `errorCode` получает ID этого кода, и карточка
53
+ показывает отказ под своими кнопками. Для применённого, отключённого, истёкшего
54
+ и ещё не начавшего действовать кода (запланированная акция неактивна до дня
55
+ старта) выводится отдельный статус. Настоящие ссылки с выбранным языком открывают
56
+ корзину и товары соответствующей акции.
57
+
58
+ ### Свойства
59
+
60
+ | Свойство | Назначение |
61
+ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
62
+ | `codes?: readonly IPromoIssue[]` | Промокоды, полученные для аккаунта покупателя. |
63
+ | `pagination?: Partial<IApiPagination>` | Текущие данные пагинации API. |
64
+ | `loaded?: boolean` | Отличает подтверждённый пустой результат от ещё не загруженных данных. |
65
+ | `pending?: boolean` | Показывает загрузку и блокирует повторные действия. |
66
+ | `error?: string` | Ошибка запроса для покупателя; не передавайте её, если запрос не завершился ошибкой. |
67
+ | `errorCode?: number` | ID кода, применение которого отклонено: `error` выводится в его карточке. Без него `error` относится к загрузке списка и выводится над ним с повтором. |
68
+ | `onLoad?: (request: IPromoIssuesRequest) => void` | Передаёт параметры страницы в `paginate` при открытии, повторной загрузке и смене страницы промокодов. Приложение загружает выданные коды и передаёт данные, `pending`, `loaded` и ошибку. |
69
+ | `onApply?: (request: ICartPromoRequest, code: IPromoIssue) => void` | При выборе доступного кода передаёт два аргумента: запрос с `promocode: code.code_value` и объект выданного кода. Приложение применяет код и обновляет корзину. |
70
+ | `headingLevel?: "h1" \| "h2"` | Элемент заголовка раздела: `h1` на отдельной странице промокодов или `h2` внутри раздела «Моя активность». По умолчанию `h2`. |
@@ -0,0 +1,92 @@
1
+ .section {
2
+ composes: feature featureStack account from './account.module.css';
3
+ container-type: inline-size;
4
+ }
5
+
6
+ .heading {
7
+ composes: featureHeading from './account.module.css';
8
+ }
9
+
10
+ .title {
11
+ composes: featureTitle from './account.module.css';
12
+ }
13
+
14
+ .subtitle {
15
+ composes: featureSubtitle from './account.module.css';
16
+ }
17
+
18
+ .link {
19
+ composes: featureLink from './account.module.css';
20
+ }
21
+
22
+ .button {
23
+ composes: featureButton from './account.module.css';
24
+ }
25
+
26
+ .error {
27
+ composes: notice noticeError from './account.module.css';
28
+ }
29
+
30
+ .entries {
31
+ composes: entryList from './account.module.css';
32
+ }
33
+
34
+ .entry {
35
+ composes: entry from './account.module.css';
36
+ }
37
+
38
+ .entryHeader {
39
+ composes: entryHead from './account.module.css';
40
+ }
41
+
42
+ .icon {
43
+ composes: entryIcon from './account.module.css';
44
+ }
45
+
46
+ .code {
47
+ composes: entryTitle from './account.module.css';
48
+ }
49
+
50
+ .name {
51
+ composes: entrySubtitle from './account.module.css';
52
+ }
53
+
54
+ .state {
55
+ composes: entryState from './account.module.css';
56
+ }
57
+
58
+ .conditions {
59
+ composes: entryFacts from './account.module.css';
60
+ }
61
+
62
+ .condition {
63
+ composes: entryFact from './account.module.css';
64
+ }
65
+
66
+ .term {
67
+ composes: entryTerm from './account.module.css';
68
+ }
69
+
70
+ .value {
71
+ composes: entryValue from './account.module.css';
72
+ }
73
+
74
+ .actions {
75
+ composes: entryActions from './account.module.css';
76
+ }
77
+
78
+ /* A refused Apply, shown in the card whose button was pressed. */
79
+ .entryError {
80
+ composes: notice noticeError entryNotice from './account.module.css';
81
+ }
82
+
83
+ .srOnly {
84
+ position: absolute;
85
+ width: 1px;
86
+ height: 1px;
87
+ padding: 0;
88
+ overflow: hidden;
89
+ clip: rect(0, 0, 0, 0);
90
+ white-space: nowrap;
91
+ border: 0;
92
+ }
@@ -0,0 +1,257 @@
1
+ 'use client';
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { useOrionplaceSelections } from '@/providers/OrionplaceProvider';
5
+ import type { IApiPagination } from '@/interfaces/orionplace/accounts/IProfileData';
6
+ import type {
7
+ ICartPromoRequest,
8
+ IPromoIssue,
9
+ IPromoIssuesRequest,
10
+ } from '@/interfaces/orionplace/marketing/IPromoActions';
11
+ import { activityLabels } from '@/lib/orionplace/activityLabels';
12
+ import { featureLabels } from '@/lib/orionplace/featureLabels';
13
+ import { promoLabels } from '@/lib/orionplace/promoLabels';
14
+ import {
15
+ promoConditions,
16
+ promoIconPaths,
17
+ promoName,
18
+ promoState,
19
+ } from '@/lib/orionplace/promoPresentation';
20
+ import { OrionplaceEmptyState } from '@/components/orionplace/shared/OrionplaceEmptyState';
21
+ import { StorefrontPagination } from '@/components/orionplace/shared/StorefrontPagination';
22
+ import styles from './AccountPromocodes.module.css';
23
+
24
+ export interface AccountPromocodesProps {
25
+ codes?: readonly IPromoIssue[];
26
+ pagination?: Partial<IApiPagination>;
27
+ loaded?: boolean;
28
+ pending?: boolean;
29
+ error?: string;
30
+ /**
31
+ * The code whose Apply was refused: its card shows `error` beside the
32
+ * button, where a phone shows it. Without it the list failed to load and
33
+ * the error stands above the list with Retry.
34
+ */
35
+ errorCode?: number;
36
+ onLoad?: (request: IPromoIssuesRequest) => void;
37
+ onApply?: (request: ICartPromoRequest, code: IPromoIssue) => void;
38
+ /** `h1` when the codes are a page of their own, `h2` inside My activity. */
39
+ headingLevel?: 'h1' | 'h2';
40
+ }
41
+
42
+ export function AccountPromocodes({
43
+ codes = [],
44
+ pagination = {},
45
+ loaded = false,
46
+ pending = false,
47
+ error = '',
48
+ errorCode,
49
+ onLoad,
50
+ onApply,
51
+ headingLevel = 'h2',
52
+ }: AccountPromocodesProps) {
53
+ const Heading = headingLevel;
54
+ const selections = useOrionplaceSelections((value) => value);
55
+ const labels = activityLabels(selections.localeCode);
56
+ const common = featureLabels(selections.localeCode);
57
+ const promoCopy = promoLabels(selections.localeCode);
58
+ const requested = useRef(false);
59
+ const currency = selections.init?.currencies[selections.currencyId];
60
+ const localeQuery = encodeURIComponent(selections.localeCode);
61
+
62
+ function load(page = 1) {
63
+ onLoad?.({ paginate: { page, pp_items: 10 } });
64
+ }
65
+
66
+ useEffect(() => {
67
+ if (!requested.current) {
68
+ requested.current = true;
69
+ load();
70
+ }
71
+ return () => {
72
+ requested.current = false;
73
+ };
74
+ }, []);
75
+
76
+ function badge(code: IPromoIssue) {
77
+ const key = promoState(code);
78
+ if (key === 'applied') {
79
+ return { key, tone: 'success', text: labels.applied };
80
+ }
81
+ if (key === 'notStarted') {
82
+ const start = code.promo_type?.date_start?.date ?? '';
83
+ return {
84
+ key,
85
+ tone: 'neutral',
86
+ text: `${labels.notStarted} ${start}`.trim(),
87
+ };
88
+ }
89
+ if (key === 'expired') {
90
+ return { key, tone: 'danger', text: labels.expired };
91
+ }
92
+ if (key === 'unavailable') {
93
+ return { key, tone: 'danger', text: labels.unavailable };
94
+ }
95
+ return { key, tone: 'neutral', text: '' };
96
+ }
97
+
98
+ return (
99
+ <section
100
+ className={styles.section}
101
+ data-feature-part="AccountPromocodes"
102
+ >
103
+ <div className={styles.heading}>
104
+ <Heading
105
+ className={headingLevel === 'h1' ? styles.title : styles.subtitle}
106
+ >
107
+ {labels.promocodes}
108
+ </Heading>
109
+ <a
110
+ className={styles.link}
111
+ href={`/cart?locale=${localeQuery}`}
112
+ >
113
+ {labels.cart} →
114
+ </a>
115
+ </div>
116
+ {error && errorCode === undefined ? (
117
+ <div
118
+ role="alert"
119
+ className={styles.error}
120
+ >
121
+ <span>{error}</span>
122
+ <button
123
+ type="button"
124
+ className={styles.button}
125
+ disabled={pending}
126
+ onClick={() => load()}
127
+ >
128
+ {common.retry}
129
+ </button>
130
+ </div>
131
+ ) : null}
132
+ {pending ? (
133
+ <p
134
+ className="op-feature-loading"
135
+ role="status"
136
+ >
137
+ <span className={styles.srOnly}>{common.loading}</span>
138
+ </p>
139
+ ) : null}
140
+ {codes.length ? (
141
+ <ul className={styles.entries}>
142
+ {codes.map((code) => {
143
+ const state = badge(code);
144
+ const conditions = promoConditions(
145
+ code,
146
+ selections.localeCode,
147
+ selections.currencyId,
148
+ currency,
149
+ promoCopy,
150
+ selections.init?.currencies,
151
+ );
152
+ return (
153
+ <li
154
+ key={code.id}
155
+ className={styles.entry}
156
+ data-promo-code={code.id}
157
+ >
158
+ <div className={styles.entryHeader}>
159
+ <svg
160
+ className={styles.icon}
161
+ viewBox="0 0 24 24"
162
+ fill="none"
163
+ stroke="currentColor"
164
+ strokeWidth="1.5"
165
+ strokeLinecap="round"
166
+ strokeLinejoin="round"
167
+ aria-hidden="true"
168
+ >
169
+ <path d={promoIconPaths.ticket} />
170
+ </svg>
171
+ <span className={styles.code}>{code.code_value}</span>
172
+ <span className={styles.name}>
173
+ {promoName(code.promo_type, selections.localeCode)}
174
+ </span>
175
+ {state.text ? (
176
+ <span
177
+ className={styles.state}
178
+ data-tone={state.tone}
179
+ role="status"
180
+ >
181
+ {state.text}
182
+ </span>
183
+ ) : null}
184
+ </div>
185
+ <dl className={styles.conditions}>
186
+ {conditions.map((row) => (
187
+ <div
188
+ className={styles.condition}
189
+ key={row.key}
190
+ data-promo-condition={row.key}
191
+ >
192
+ <svg
193
+ className={styles.icon}
194
+ viewBox="0 0 24 24"
195
+ fill="none"
196
+ stroke="currentColor"
197
+ strokeWidth="1.5"
198
+ strokeLinecap="round"
199
+ strokeLinejoin="round"
200
+ aria-hidden="true"
201
+ >
202
+ <path d={promoIconPaths[row.icon]} />
203
+ </svg>
204
+ <dt className={styles.term}>{row.label}</dt>
205
+ <dd className={styles.value}>{row.value}</dd>
206
+ </div>
207
+ ))}
208
+ </dl>
209
+ <div className={styles.actions}>
210
+ {state.key === 'usable' ? (
211
+ <button
212
+ className={styles.button}
213
+ type="button"
214
+ disabled={pending}
215
+ onClick={() =>
216
+ onApply?.({ promocode: code.code_value }, code)
217
+ }
218
+ >
219
+ {labels.apply}
220
+ </button>
221
+ ) : null}
222
+ {code.promo_type ? (
223
+ <a
224
+ className={styles.link}
225
+ href={`/promo/${code.promo_type.id}?code=${encodeURIComponent(code.code_value)}&locale=${localeQuery}`}
226
+ data-promo-products={code.promo_type.id}
227
+ >
228
+ {promoCopy.openProducts} →
229
+ </a>
230
+ ) : null}
231
+ </div>
232
+ {error && errorCode === code.id ? (
233
+ <p
234
+ role="alert"
235
+ className={styles.entryError}
236
+ >
237
+ {error}
238
+ </p>
239
+ ) : null}
240
+ </li>
241
+ );
242
+ })}
243
+ </ul>
244
+ ) : loaded && !pending ? (
245
+ <OrionplaceEmptyState
246
+ kind="promocodes"
247
+ message={labels.promosEmpty}
248
+ />
249
+ ) : null}
250
+ <StorefrontPagination
251
+ pagination={pagination}
252
+ pending={pending}
253
+ onChange={load}
254
+ />
255
+ </section>
256
+ );
257
+ }
@@ -0,0 +1,46 @@
1
+ # AccountSection
2
+
3
+ ## English
4
+
5
+ `AccountSection` provides the shared account-page navigation and content area.
6
+ For an authenticated Application Load session, it renders locale-preserving
7
+ links to Profile, Addresses, Orders, Support, Wallet, Subscriptions, Wishlist,
8
+ Activity and Logout. `section` marks the matching destination as the current
9
+ page, and `children` contains that page's physical component.
10
+
11
+ If Application Load fails, the component shows the localized storefront failure
12
+ state and Retry calls `onRetry`. A successful guest session shows the localized
13
+ account sign-in explanation. The component does not redirect or open an
14
+ authentication dialog; the storefront route guard and header own those actions.
15
+ No account content is rendered while Application Load is still idle or pending.
16
+
17
+ ### Props
18
+
19
+ | Prop | Meaning |
20
+ | ---------------------- | -------------------------------------------------------------------------------- |
21
+ | `section: string` | Active account navigation key, such as `wallet`; marks that link as current. |
22
+ | `children?: ReactNode` | React content rendered inside the component. |
23
+ | `onRetry?: () => void` | Called when the visitor retries the failed request. The callback has no payload. |
24
+
25
+ ## Русский
26
+
27
+ `AccountSection` выводит общую навигацию страниц личного кабинета и область
28
+ содержимого. Для вошедшего покупателя компонент создаёт ссылки с выбранным
29
+ языком на профиль, адреса, заказы, поддержку, кошелёк, подписки, избранное,
30
+ активность и выход. `section` отмечает соответствующую ссылку как текущую, а
31
+ `children` содержит физический компонент страницы.
32
+
33
+ Если Application Load завершился ошибкой, компонент показывает локализованное
34
+ состояние ошибки магазина, а кнопка «Повторить» вызывает `onRetry`. Успешная
35
+ гостевая сессия показывает объяснение о необходимости входа. Компонент сам не
36
+ перенаправляет покупателя и не открывает окно входа: это делают защита маршрута
37
+ и шапка магазина. Пока Application Load ещё не начался или выполняется, содержимое
38
+ аккаунта не выводится.
39
+
40
+ ### Свойства
41
+
42
+ | Свойство | Назначение |
43
+ | ---------------------- | --------------------------------------------------------------------------------------- |
44
+ | `section: string` | Ключ активного раздела навигации аккаунта, например `wallet`; отмечает ссылку текущей. |
45
+ | `children?: ReactNode` | React-содержимое внутри компонента. |
46
+ | `onRetry?: () => void` | Вызывается, когда покупатель повторяет неудачный запрос. Обработчик не получает данные. |
@@ -0,0 +1,110 @@
1
+ /* The page frame follows its own width: a size container around <main>,
2
+ so the docs tabs and every placement show the same padding and menu. */
3
+ .page {
4
+ container: page / inline-size;
5
+ width: 100%;
6
+ min-width: 0;
7
+ }
8
+ .section {
9
+ box-sizing: border-box;
10
+ display: grid;
11
+ grid-template-columns: minmax(0, 1fr);
12
+ width: 100%;
13
+ min-width: 0;
14
+ max-width: 1440px;
15
+ margin: 0 auto;
16
+ align-items: start;
17
+ gap: 32px;
18
+ padding: 40px 16px;
19
+ color: var(--orionplace-text);
20
+ font-size: 14px;
21
+ line-height: 24px;
22
+ }
23
+ .navigation {
24
+ display: flex;
25
+ min-width: 0;
26
+ gap: 24px;
27
+ overflow-x: auto;
28
+ border: 0;
29
+ border-bottom: 1px solid var(--orionplace-border);
30
+ }
31
+ .navigationLink {
32
+ display: block;
33
+ flex-shrink: 0;
34
+ margin-bottom: -1px;
35
+ padding: 12px 0;
36
+ border: 0;
37
+ border-color: transparent;
38
+ border-bottom: 2px solid transparent;
39
+ color: var(--orionplace-muted);
40
+ font-size: 12px;
41
+ line-height: 16px;
42
+ font-weight: 500;
43
+ letter-spacing: 0.08em;
44
+ text-decoration: none;
45
+ text-transform: uppercase;
46
+ white-space: nowrap;
47
+ outline: none;
48
+ transition: color 150ms, border-color 150ms;
49
+ }
50
+ .navigationLink:focus-visible,
51
+ .navigationLink[aria-current='page'] {
52
+ color: var(--orionplace-text);
53
+ }
54
+ @media (hover: hover) {
55
+ .navigationLink:hover {
56
+ color: var(--orionplace-text);
57
+ }
58
+ }
59
+ .navigationLink[aria-current='page'] {
60
+ border-color: var(--orionplace-text);
61
+ }
62
+ .content {
63
+ min-width: 0;
64
+ }
65
+ .state > [data-empty-state] {
66
+ min-height: 384px;
67
+ }
68
+ @container page (min-width: 640px) {
69
+ .section {
70
+ padding: 56px 24px;
71
+ }
72
+ }
73
+ @container page (min-width: 1024px) {
74
+ .section {
75
+ padding-inline: 32px;
76
+ }
77
+ .authenticated {
78
+ grid-template-columns: 220px minmax(0, 1fr);
79
+ gap: 56px;
80
+ }
81
+ .navigation {
82
+ position: sticky;
83
+ top: 24px;
84
+ flex-direction: column;
85
+ gap: 0;
86
+ overflow: visible;
87
+ border-bottom: 0;
88
+ border-left: 1px solid var(--orionplace-border);
89
+ }
90
+ .navigationLink {
91
+ margin-left: -1px;
92
+ margin-bottom: 0;
93
+ padding-left: 20px;
94
+ border-bottom: 0;
95
+ border-left: 2px solid transparent;
96
+ border-color: transparent;
97
+ }
98
+ .logout {
99
+ margin-top: 16px;
100
+ }
101
+ }
102
+ @media (prefers-reduced-motion: reduce) {
103
+ .navigationLink {
104
+ transition: none;
105
+ }
106
+ }
107
+
108
+ .retry {
109
+ composes: featureButton from './account.module.css';
110
+ }
@@ -0,0 +1,109 @@
1
+ 'use client';
2
+
3
+ import type { ReactNode } from 'react';
4
+ import {
5
+ useOrionplace,
6
+ useOrionplaceSelections,
7
+ } from '@/providers/OrionplaceProvider';
8
+ import {
9
+ selectIsAuthenticated,
10
+ selectIsReady,
11
+ selectStatus,
12
+ } from '@/stores/orionplace';
13
+ import { featureLabels } from '@/lib/orionplace/featureLabels';
14
+ import { homeLabels } from '@/lib/orionplace/homeLabels';
15
+ import { useOrionplaceAppLoad } from '@/hooks/useOrionplaceAppLoad';
16
+ import { OrionplaceEmptyState } from '@/components/orionplace/shared/OrionplaceEmptyState';
17
+ import styles from './AccountSection.module.css';
18
+
19
+ export interface AccountSectionProps {
20
+ section: string;
21
+ children?: ReactNode;
22
+ onRetry?: () => void;
23
+ }
24
+
25
+ export function AccountSection({
26
+ section,
27
+ children,
28
+ onRetry,
29
+ }: AccountSectionProps) {
30
+ const authenticated = useOrionplace(selectIsAuthenticated);
31
+ const ready = useOrionplace(selectIsReady);
32
+ const status = useOrionplace(selectStatus);
33
+ const locale = useOrionplaceSelections((state) => state.localeCode);
34
+ const labels = featureLabels(locale);
35
+ const loadLabels = homeLabels(locale);
36
+ const appLoad = useOrionplaceAppLoad();
37
+ const route = (path: string) =>
38
+ `/${path}?locale=${encodeURIComponent(locale)}`;
39
+
40
+ return (
41
+ <div className={styles.page}>
42
+ <main
43
+ className={`${styles.section} ${authenticated ? styles.authenticated : ''}`.trim()}
44
+ data-account-section
45
+ >
46
+ {authenticated && (
47
+ <nav
48
+ className={styles.navigation}
49
+ aria-label={labels.account}
50
+ >
51
+ {Object.entries(labels.navigation).map(([name, title]) => (
52
+ <a
53
+ key={name}
54
+ href={route(name)}
55
+ aria-current={section === name ? 'page' : undefined}
56
+ className={styles.navigationLink}
57
+ >
58
+ {title}
59
+ </a>
60
+ ))}
61
+ <a
62
+ href={route('logout')}
63
+ className={`${styles.navigationLink} ${styles.logout}`}
64
+ data-account-logout
65
+ >
66
+ {labels.logout}
67
+ </a>
68
+ </nav>
69
+ )}
70
+ {authenticated ? (
71
+ <div className={styles.content}>{children}</div>
72
+ ) : status === 'error' ? (
73
+ <div
74
+ data-account-failed
75
+ className={styles.state}
76
+ >
77
+ <OrionplaceEmptyState
78
+ kind="error"
79
+ size="large"
80
+ messageTag="h1"
81
+ message={loadLabels.failed}
82
+ >
83
+ <button
84
+ type="button"
85
+ className={styles.retry}
86
+ onClick={onRetry ?? (() => void appLoad.refresh())}
87
+ >
88
+ {loadLabels.retry}
89
+ </button>
90
+ </OrionplaceEmptyState>
91
+ </div>
92
+ ) : ready ? (
93
+ <div
94
+ data-account-guest
95
+ className={styles.state}
96
+ >
97
+ <OrionplaceEmptyState
98
+ kind="generic"
99
+ size="large"
100
+ messageTag="h1"
101
+ message={labels.account}
102
+ description={labels.accountSignIn}
103
+ />
104
+ </div>
105
+ ) : null}
106
+ </main>
107
+ </div>
108
+ );
109
+ }