@revenexx/cover 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/app/api/account.ts +8 -0
  4. package/app/api/categories.ts +3 -0
  5. package/app/api/checkout.ts +6 -0
  6. package/app/api/images.ts +4 -0
  7. package/app/api/markets.ts +3 -0
  8. package/app/api/product.ts +3 -0
  9. package/app/api/products.ts +4 -0
  10. package/app/api/search.ts +4 -0
  11. package/app/app.config.ts +29 -0
  12. package/app/assets/css/cover.css +25 -0
  13. package/app/components/account/AccountMenu.vue +30 -0
  14. package/app/components/account/AccountShell.vue +18 -0
  15. package/app/components/account/AccountSidebar.vue +90 -0
  16. package/app/components/account/address/AccountAddressCard.vue +287 -0
  17. package/app/components/account/carts/AccountCartsTable.vue +284 -0
  18. package/app/components/account/dashboard/AccountDashboard.vue +351 -0
  19. package/app/components/account/directorder/AccountDirectOrder.vue +512 -0
  20. package/app/components/account/governance/AccountApprovalLimitsTable.vue +221 -0
  21. package/app/components/account/governance/AccountCostCenterDetail.vue +276 -0
  22. package/app/components/account/governance/AccountCostCentersTable.vue +252 -0
  23. package/app/components/account/governance/AccountRequisitionDetail.vue +295 -0
  24. package/app/components/account/governance/AccountRequisitionsTable.vue +255 -0
  25. package/app/components/account/governance/AccountWorkflowDetail.vue +215 -0
  26. package/app/components/account/governance/AccountWorkflowsTable.vue +168 -0
  27. package/app/components/account/governance/GovernanceApprovalLimitModal.vue +183 -0
  28. package/app/components/account/governance/GovernanceCostCenterModal.vue +188 -0
  29. package/app/components/account/governance/GovernanceWorkflowModal.vue +191 -0
  30. package/app/components/account/orderlists/AccountOrderListDetail.vue +349 -0
  31. package/app/components/account/orderlists/AccountOrderListsTable.vue +352 -0
  32. package/app/components/account/orders/AccountOrderDetail.vue +376 -0
  33. package/app/components/account/orders/AccountOrdersTable.vue +281 -0
  34. package/app/components/account/preferences/AccountPreferences.vue +50 -0
  35. package/app/components/auth/AuthForgotPasswordPanel.vue +88 -0
  36. package/app/components/auth/AuthLoginPanel.vue +103 -0
  37. package/app/components/auth/AuthLoginTeaser.vue +24 -0
  38. package/app/components/auth/AuthPageHeader.vue +21 -0
  39. package/app/components/auth/AuthRegisterPanel.vue +431 -0
  40. package/app/components/auth/AuthRegisterTeaser.vue +24 -0
  41. package/app/components/auth/AuthResetPasswordPanel.vue +115 -0
  42. package/app/components/cart/CartButton.vue +42 -0
  43. package/app/components/cart/actions/CartCostCenterModal.vue +110 -0
  44. package/app/components/cart/actions/CartExportModal.vue +82 -0
  45. package/app/components/cart/actions/CartPositionTextsModal.vue +92 -0
  46. package/app/components/cart/actions/CartSaveToListModal.vue +177 -0
  47. package/app/components/cart/actions/CartWorkflowPickerModal.vue +64 -0
  48. package/app/components/cart/drawer/CartDrawer.vue +49 -0
  49. package/app/components/cart/item/CartItem.vue +318 -0
  50. package/app/components/cart/manage/CartNameModal.vue +68 -0
  51. package/app/components/cart/position/CartPosition.vue +369 -0
  52. package/app/components/cart/quickadd/CartQuickAdd.vue +145 -0
  53. package/app/components/cart/recommend/CartCrossSell.vue +102 -0
  54. package/app/components/cart/recommend/CartRecommendCard.vue +59 -0
  55. package/app/components/cart/recommend/CartReorderStrip.vue +108 -0
  56. package/app/components/cart/requisition/CartRequisitionGroup.vue +74 -0
  57. package/app/components/cart/skeleton/CartSkeleton.vue +18 -0
  58. package/app/components/cart/summary/CartSummary.vue +25 -0
  59. package/app/components/cart/summary/CartSummaryBreakdown.vue +35 -0
  60. package/app/components/cart/switcher/CartSwitcher.vue +147 -0
  61. package/app/components/cart/target/CartTargetModal.vue +129 -0
  62. package/app/components/cart/view/CartApprovalsPanel.vue +89 -0
  63. package/app/components/cart/view/CartListHeader.vue +86 -0
  64. package/app/components/cart/view/CartPositionList.vue +94 -0
  65. package/app/components/cart/view/CartSummaryPanel.vue +254 -0
  66. package/app/components/cart/view/CartView.vue +310 -0
  67. package/app/components/category/info/CategoryPrice.vue +47 -0
  68. package/app/components/category/info/CategorySku.vue +15 -0
  69. package/app/components/category/info/CategoryStock.vue +25 -0
  70. package/app/components/category/list/CategoryItemCount.vue +27 -0
  71. package/app/components/category/list/CategoryListPagination.vue +81 -0
  72. package/app/components/category/skeleton/CategoryDetailSkeleton.vue +12 -0
  73. package/app/components/category/skeleton/CategoryListSkeleton.vue +65 -0
  74. package/app/components/category/view/CategoryViewToggle.vue +33 -0
  75. package/app/components/category/view/GridView.vue +78 -0
  76. package/app/components/category/view/ListView.vue +80 -0
  77. package/app/components/checkout/confirmation/CheckoutConfirmationView.vue +289 -0
  78. package/app/components/checkout/form/CheckoutSchemaForm.vue +72 -0
  79. package/app/components/checkout/onepage/CheckoutAddressPickerModal.vue +260 -0
  80. package/app/components/checkout/onepage/CheckoutAddressSection.vue +186 -0
  81. package/app/components/checkout/onepage/CheckoutDeliverySection.vue +158 -0
  82. package/app/components/checkout/onepage/CheckoutGate.vue +67 -0
  83. package/app/components/checkout/onepage/CheckoutGuestDetailsSection.vue +154 -0
  84. package/app/components/checkout/onepage/CheckoutNotesSection.vue +62 -0
  85. package/app/components/checkout/onepage/CheckoutOnePageView.vue +77 -0
  86. package/app/components/checkout/onepage/CheckoutPaymentSection.vue +181 -0
  87. package/app/components/checkout/onepage/CheckoutSectionTitle.vue +18 -0
  88. package/app/components/checkout/onepage/CheckoutSummarySection.vue +211 -0
  89. package/app/components/checkout/onepage/CheckoutWorkflowPanel.vue +38 -0
  90. package/app/components/layout/AppLogo.vue +21 -0
  91. package/app/components/layout/footer/Footer.vue +148 -0
  92. package/app/components/layout/header/AppBar.vue +75 -0
  93. package/app/components/layout/header/CategoryNav.vue +93 -0
  94. package/app/components/layout/header/HeaderActionItem.vue +81 -0
  95. package/app/components/layout/header/LocaleSwitcher.vue +123 -0
  96. package/app/components/layout/header/MainNav.vue +61 -0
  97. package/app/components/layout/header/MobileMenu.vue +81 -0
  98. package/app/components/layout/header/TopBar.vue +63 -0
  99. package/app/components/listing/ListingView.vue +227 -0
  100. package/app/components/product/detail/ProductDetailAddToCart.vue +188 -0
  101. package/app/components/product/detail/ProductDetailDescription.vue +20 -0
  102. package/app/components/product/detail/ProductDetailImageGallery.vue +58 -0
  103. package/app/components/product/detail/ProductDetailPricing.vue +108 -0
  104. package/app/components/product/detail/ProductDetailSaveToList.vue +291 -0
  105. package/app/components/product/detail/ProductDetailSpecifications.vue +33 -0
  106. package/app/components/product/detail/ProductDetailStock.vue +36 -0
  107. package/app/components/search/filter/SearchFacets.vue +256 -0
  108. package/app/components/search/filter/SearchFacetsDrawer.vue +58 -0
  109. package/app/components/ui/AppShell.vue +7 -0
  110. package/app/components/ui/debug/PiniaStateCard.vue +106 -0
  111. package/app/components/ui/feedback/EmptyState.vue +30 -0
  112. package/app/components/ui/feedback/ErrorBoundary.vue +44 -0
  113. package/app/components/ui/feedback/NotFound.vue +34 -0
  114. package/app/components/ui/forms/CountrySelection.vue +14 -0
  115. package/app/components/ui/forms/FormKitDatePicker.vue +124 -0
  116. package/app/components/ui/forms/PasswordInput.vue +136 -0
  117. package/app/components/ui/forms/SearchInput.vue +213 -0
  118. package/app/components/ui/table/TableSortButton.vue +51 -0
  119. package/app/components/ui/table/TableToolbar.vue +66 -0
  120. package/app/composables/useAccount.ts +27 -0
  121. package/app/composables/useAccountAddresses.ts +116 -0
  122. package/app/composables/useAccountOrders.ts +18 -0
  123. package/app/composables/useAppUrl.ts +38 -0
  124. package/app/composables/useAuthStore.ts +202 -0
  125. package/app/composables/useB2BContext.ts +23 -0
  126. package/app/composables/useCartActions.ts +25 -0
  127. package/app/composables/useCartCalculation.ts +90 -0
  128. package/app/composables/useCartSelection.ts +46 -0
  129. package/app/composables/useCartStore.ts +837 -0
  130. package/app/composables/useCartSummaryFormatting.ts +28 -0
  131. package/app/composables/useCategories.ts +29 -0
  132. package/app/composables/useCheckoutOnePage.ts +438 -0
  133. package/app/composables/useCheckoutProfileSource.ts +8 -0
  134. package/app/composables/useCheckoutSchema.ts +28 -0
  135. package/app/composables/useDataTable.ts +14 -0
  136. package/app/composables/useFormValidation.ts +29 -0
  137. package/app/composables/useIcons.ts +17 -0
  138. package/app/composables/useLocalePreferences.ts +45 -0
  139. package/app/composables/useMarkets.ts +15 -0
  140. package/app/composables/useProduct.ts +89 -0
  141. package/app/composables/useProductCard.ts +8 -0
  142. package/app/composables/useProductCardActions.ts +106 -0
  143. package/app/composables/useProductImage.ts +12 -0
  144. package/app/composables/useProductListing.ts +210 -0
  145. package/app/composables/useProductUrl.ts +17 -0
  146. package/app/composables/useProducts.ts +130 -0
  147. package/app/composables/useSearch.ts +12 -0
  148. package/app/composables/useThemeStore.ts +81 -0
  149. package/app/composables/useViewMode.ts +18 -0
  150. package/app/config/countries.ts +74 -0
  151. package/app/config/icons.ts +283 -0
  152. package/app/config/navigation.ts +191 -0
  153. package/app/config/palette.ts +13 -0
  154. package/app/config/themes.ts +20 -0
  155. package/app/formkit.config.ts +50 -0
  156. package/app/interfaces/account/address-list.ts +34 -0
  157. package/app/interfaces/account/order-list.ts +47 -0
  158. package/app/interfaces/account/order-lists.ts +35 -0
  159. package/app/interfaces/account/profile.ts +17 -0
  160. package/app/interfaces/account.ts +3 -0
  161. package/app/interfaces/address.ts +9 -0
  162. package/app/interfaces/auth.ts +104 -0
  163. package/app/interfaces/b2b.ts +234 -0
  164. package/app/interfaces/cart-calculation.ts +131 -0
  165. package/app/interfaces/cart-item.ts +45 -0
  166. package/app/interfaces/checkout-draft.ts +4 -0
  167. package/app/interfaces/checkout.ts +43 -0
  168. package/app/interfaces/delivery.ts +13 -0
  169. package/app/interfaces/market.ts +24 -0
  170. package/app/interfaces/payment.ts +19 -0
  171. package/app/interfaces/persisted-cart.ts +10 -0
  172. package/app/interfaces/product-detail.ts +54 -0
  173. package/app/interfaces/product-list.ts +33 -0
  174. package/app/interfaces/search-facets.ts +14 -0
  175. package/app/interfaces/validation.ts +14 -0
  176. package/app/layouts/default.vue +78 -0
  177. package/app/layouts/focus.vue +80 -0
  178. package/app/plugins/formkit-locale.client.ts +23 -0
  179. package/app/shared/constants.ts +1 -0
  180. package/app/validations/companyName.ts +18 -0
  181. package/app/validations/emailFormat.ts +10 -0
  182. package/app/validations/formValidationConfig.ts +50 -0
  183. package/app/validations/maxLength.ts +12 -0
  184. package/app/validations/minLength.ts +9 -0
  185. package/app/validations/optionalCompanyName.ts +23 -0
  186. package/app/validations/passwordsMatch.ts +5 -0
  187. package/app/validations/phoneNumber.ts +19 -0
  188. package/app/validations/required.ts +11 -0
  189. package/app/validations/termsRequired.ts +4 -0
  190. package/app/validations/types.ts +10 -0
  191. package/app/validations/zipCode.ts +15 -0
  192. package/i18n/locales/de/account.json +458 -0
  193. package/i18n/locales/de/auth.json +155 -0
  194. package/i18n/locales/de/cart.json +263 -0
  195. package/i18n/locales/de/checkout.json +217 -0
  196. package/i18n/locales/de/common.json +80 -0
  197. package/i18n/locales/de/cover.json +33 -0
  198. package/i18n/locales/de/order.json +1 -0
  199. package/i18n/locales/de/product.json +71 -0
  200. package/i18n/locales/de/search.json +54 -0
  201. package/i18n/locales/de/validation.json +12 -0
  202. package/i18n/locales/en/account.json +458 -0
  203. package/i18n/locales/en/auth.json +155 -0
  204. package/i18n/locales/en/cart.json +263 -0
  205. package/i18n/locales/en/checkout.json +217 -0
  206. package/i18n/locales/en/common.json +80 -0
  207. package/i18n/locales/en/cover.json +33 -0
  208. package/i18n/locales/en/order.json +1 -0
  209. package/i18n/locales/en/product.json +71 -0
  210. package/i18n/locales/en/search.json +54 -0
  211. package/i18n/locales/en/validation.json +12 -0
  212. package/nuxt.config.ts +109 -0
  213. package/package.json +65 -0
  214. package/public/img/product-placeholder.svg +8 -0
  215. package/public/templates/direct-order-template.csv +3 -0
  216. package/public/templates/direct-order-template.xlsx +0 -0
  217. package/server/api/account/address/[id].delete.ts +51 -0
  218. package/server/api/account/address/[id].put.ts +83 -0
  219. package/server/api/account/address/index.post.ts +60 -0
  220. package/server/api/account/addresses.get.ts +25 -0
  221. package/server/api/account/context.get.ts +16 -0
  222. package/server/api/account/governance/[domain]/[id].put.ts +57 -0
  223. package/server/api/account/governance/[domain].post.ts +111 -0
  224. package/server/api/account/order-lists/[id].delete.ts +22 -0
  225. package/server/api/account/order-lists/[id].get.ts +17 -0
  226. package/server/api/account/order-lists/[id].put.ts +46 -0
  227. package/server/api/account/order-lists/index.get.ts +14 -0
  228. package/server/api/account/order-lists/index.post.ts +38 -0
  229. package/server/api/account/orders/[id].get.ts +35 -0
  230. package/server/api/account/orders.get.ts +35 -0
  231. package/server/api/account/profile.get.ts +56 -0
  232. package/server/api/account/profile.put.ts +128 -0
  233. package/server/api/account/requisitions/[id].get.ts +15 -0
  234. package/server/api/account/requisitions.get.ts +23 -0
  235. package/server/api/auth/login.post.ts +37 -0
  236. package/server/api/auth/logout.post.ts +4 -0
  237. package/server/api/auth/me.get.ts +3 -0
  238. package/server/api/auth/personas.get.ts +7 -0
  239. package/server/api/auth/recovery.post.ts +32 -0
  240. package/server/api/auth/recovery.put.ts +37 -0
  241. package/server/api/auth/register.post.ts +126 -0
  242. package/server/api/cart/calculate.post.ts +25 -0
  243. package/server/api/cart/export.post.ts +81 -0
  244. package/server/api/cart/index.delete.ts +10 -0
  245. package/server/api/cart/index.get.ts +10 -0
  246. package/server/api/cart/sync.post.ts +14 -0
  247. package/server/api/carts/[id]/activate.post.ts +18 -0
  248. package/server/api/carts/[id]/index.delete.ts +18 -0
  249. package/server/api/carts/[id]/index.put.ts +19 -0
  250. package/server/api/carts/[id]/items.post.ts +21 -0
  251. package/server/api/carts/index.get.ts +14 -0
  252. package/server/api/carts/index.post.ts +14 -0
  253. package/server/api/categories/[slug].get.ts +22 -0
  254. package/server/api/categories/index.get.ts +11 -0
  255. package/server/api/checkout/profile.get.ts +21 -0
  256. package/server/api/checkout/schema/[key].get.ts +19 -0
  257. package/server/api/checkout/session.post.ts +8 -0
  258. package/server/api/images/detail/[filename].get.ts +18 -0
  259. package/server/api/images/list/[filename].get.ts +17 -0
  260. package/server/api/markets.get.ts +9 -0
  261. package/server/api/orders/index.post.ts +376 -0
  262. package/server/api/payment/methods.post.ts +65 -0
  263. package/server/api/product/[id].get.ts +29 -0
  264. package/server/api/products/[id].get.ts +30 -0
  265. package/server/api/products/index.get.ts +21 -0
  266. package/server/api/requisitions/index.post.ts +67 -0
  267. package/server/api/shipping/rates.post.ts +70 -0
  268. package/server/api/themes/index.get.ts +9 -0
  269. package/server/api/typesense/drop.get.ts +22 -0
  270. package/server/api/typesense/health.get.ts +9 -0
  271. package/server/api/typesense/search.post.ts +199 -0
  272. package/server/api/typesense/seed.get.ts +112 -0
  273. package/server/api/typesense/suggest.post.ts +69 -0
  274. package/server/config/account/organization.json +146 -0
  275. package/server/config/account/personas.json +169 -0
  276. package/server/config/account/user.json +8 -0
  277. package/server/config/account/workflows.json +19 -0
  278. package/server/data/account/address-list.json +103 -0
  279. package/server/data/account/order-list.json +491 -0
  280. package/server/data/account/order-lists.json +149 -0
  281. package/server/data/account/profile.json +9 -0
  282. package/server/data/account/registration-requests.json +3 -0
  283. package/server/data/account/requisitions.json +686 -0
  284. package/server/data/categories.json +186 -0
  285. package/server/data/forms/checkout/add-address.json +24 -0
  286. package/server/data/list/5137-1.png +0 -0
  287. package/server/data/list/5498-1.png +0 -0
  288. package/server/data/list/5498-2.png +0 -0
  289. package/server/data/list/5498-3.png +0 -0
  290. package/server/data/list/5498-4.png +0 -0
  291. package/server/data/list/5498-5.png +0 -0
  292. package/server/data/list/5498-6.png +0 -0
  293. package/server/data/list/5519-1.png +0 -0
  294. package/server/data/list/5713-1.png +0 -0
  295. package/server/data/list/5789-1.png +0 -0
  296. package/server/data/list/5930-1.png +0 -0
  297. package/server/data/list/6127-1.png +0 -0
  298. package/server/data/list/6234-1.png +0 -0
  299. package/server/data/list/6238-1.png +0 -0
  300. package/server/data/list/6246-1.png +0 -0
  301. package/server/data/list/6270-1.png +0 -0
  302. package/server/data/list/6330-1.png +0 -0
  303. package/server/data/list/6336-1.png +0 -0
  304. package/server/data/list/6360-1.png +0 -0
  305. package/server/data/list/6363-1.png +0 -0
  306. package/server/data/list/6375-1.png +0 -0
  307. package/server/data/list/6385-1.png +0 -0
  308. package/server/data/list/6413-1.png +0 -0
  309. package/server/data/list/6418-1.png +0 -0
  310. package/server/data/list/6465-1.png +0 -0
  311. package/server/data/list/6477-1.png +0 -0
  312. package/server/data/list/6509-1.png +0 -0
  313. package/server/data/list/6545-1.png +0 -0
  314. package/server/data/list/6548-1.png +0 -0
  315. package/server/data/list/6566-1.png +0 -0
  316. package/server/data/list/6581-1.png +0 -0
  317. package/server/data/list/6609-1.png +0 -0
  318. package/server/data/list/6611-1.png +0 -0
  319. package/server/data/list/6641-1.png +0 -0
  320. package/server/data/list/6659-1.png +0 -0
  321. package/server/data/list/6662-1.png +0 -0
  322. package/server/data/list/6689-1.png +0 -0
  323. package/server/data/list/6698-1.png +0 -0
  324. package/server/data/list/6701-1.png +0 -0
  325. package/server/data/list/6752-1.png +0 -0
  326. package/server/data/list/6755-1.png +0 -0
  327. package/server/data/list/6837-1.png +0 -0
  328. package/server/data/list/6841-1.png +0 -0
  329. package/server/data/list/6844-1.png +0 -0
  330. package/server/data/list/6846-1.png +0 -0
  331. package/server/data/list/6886-1.png +0 -0
  332. package/server/data/list/6895-1.png +0 -0
  333. package/server/data/list/6897-1.png +0 -0
  334. package/server/data/list/6919-1.png +0 -0
  335. package/server/data/list/6977-1.png +0 -0
  336. package/server/data/list/6983-1.png +0 -0
  337. package/server/data/list/6984-1.png +0 -0
  338. package/server/data/list/6985-1.png +0 -0
  339. package/server/data/list/6986-1.png +0 -0
  340. package/server/data/list/6989-1.png +0 -0
  341. package/server/data/list/6995-1.png +0 -0
  342. package/server/data/list/6998-1.png +0 -0
  343. package/server/data/markets.json +24 -0
  344. package/server/data/product-detail.json +2450 -0
  345. package/server/data/product-list.json +2450 -0
  346. package/server/data/themes.json +8 -0
  347. package/server/interfaces/account.ts +20 -0
  348. package/server/interfaces/auth.ts +32 -0
  349. package/server/interfaces/b2bContext.ts +23 -0
  350. package/server/interfaces/cart.ts +46 -0
  351. package/server/interfaces/cartCalculation.ts +17 -0
  352. package/server/interfaces/category.ts +12 -0
  353. package/server/interfaces/checkoutProfile.ts +5 -0
  354. package/server/interfaces/log.ts +3 -0
  355. package/server/interfaces/market.ts +10 -0
  356. package/server/interfaces/product.ts +21 -0
  357. package/server/interfaces/schema.ts +20 -0
  358. package/server/interfaces/theme.ts +10 -0
  359. package/server/services/ApiAuthService.ts +138 -0
  360. package/server/services/ApiCartService.ts +254 -0
  361. package/server/services/ApiCategoryService.ts +25 -0
  362. package/server/services/ApiMarketService.ts +71 -0
  363. package/server/services/ApiProductService.ts +53 -0
  364. package/server/services/LocalFileCategoryService.ts +23 -0
  365. package/server/services/LocalFileCheckoutProfileService.ts +117 -0
  366. package/server/services/LocalFileProductService.ts +128 -0
  367. package/server/services/LocalFileSchemaService.ts +70 -0
  368. package/server/services/LocalFileThemeService.ts +18 -0
  369. package/server/services/LogService.ts +28 -0
  370. package/server/services/MockAccountService.ts +58 -0
  371. package/server/services/MockAuthService.ts +105 -0
  372. package/server/services/MockB2BContextService.ts +149 -0
  373. package/server/services/MockCartCalculationService.ts +395 -0
  374. package/server/services/MockMarketService.ts +18 -0
  375. package/server/services/SdkAccountService.ts +56 -0
  376. package/server/services/SdkAuthService.ts +83 -0
  377. package/server/services/SessionCartService.ts +31 -0
  378. package/server/utils/accountService.ts +30 -0
  379. package/server/utils/authCookie.ts +13 -0
  380. package/server/utils/authService.ts +43 -0
  381. package/server/utils/b2bService.ts +49 -0
  382. package/server/utils/cartService.ts +59 -0
  383. package/server/utils/categoryService.ts +19 -0
  384. package/server/utils/checkoutProfileService.ts +9 -0
  385. package/server/utils/checkoutSession.ts +38 -0
  386. package/server/utils/coverData.ts +84 -0
  387. package/server/utils/governanceStore.ts +38 -0
  388. package/server/utils/i18n.ts +76 -0
  389. package/server/utils/inventoryService.ts +14 -0
  390. package/server/utils/liveCatalog.ts +234 -0
  391. package/server/utils/liveInventories.ts +76 -0
  392. package/server/utils/liveOrders.ts +139 -0
  393. package/server/utils/livePrices.ts +93 -0
  394. package/server/utils/locale.ts +39 -0
  395. package/server/utils/logService.ts +19 -0
  396. package/server/utils/marketService.ts +24 -0
  397. package/server/utils/orderService.ts +14 -0
  398. package/server/utils/paymentService.ts +14 -0
  399. package/server/utils/priceService.ts +14 -0
  400. package/server/utils/productService.ts +28 -0
  401. package/server/utils/productsSchema.ts +30 -0
  402. package/server/utils/revenexxApi.ts +136 -0
  403. package/server/utils/schemaService.ts +25 -0
  404. package/server/utils/serviceMode.ts +70 -0
  405. package/server/utils/shippingService.ts +14 -0
  406. package/server/utils/shopSdk.ts +88 -0
  407. package/server/utils/themeService.ts +16 -0
  408. package/server/utils/typesense.ts +27 -0
@@ -0,0 +1,458 @@
1
+ {
2
+ "addresses": {
3
+ "title": "Ihre Adressen",
4
+ "description": "Verwalten Sie Ihre gespeicherten Liefer- und Rechnungsadressen.",
5
+ "errorTitle": "Adressen konnten nicht geladen werden",
6
+ "errorDescription": "Bitte versuchen Sie es später erneut.",
7
+ "defaultAriaLabel": "Standardadresse",
8
+ "defaultTooltip": "Standardadresse",
9
+ "empty": {
10
+ "title": "Keine Adressen vorhanden",
11
+ "description": "Sobald Sie Adressen hinterlegen, werden sie hier angezeigt."
12
+ },
13
+ "type": {
14
+ "billing": "Rechnungsadresse",
15
+ "shipping": "Lieferadresse"
16
+ },
17
+ "fields": {
18
+ "label": "Bezeichnung",
19
+ "company": "Firma",
20
+ "firstName": "Vorname",
21
+ "lastName": "Nachname",
22
+ "street": "Straße",
23
+ "streetNumber": "Hausnummer",
24
+ "city": "Stadt",
25
+ "zip": "PLZ",
26
+ "country": "Land",
27
+ "type": "Adresstyp",
28
+ "isDefault": "Als Standard festlegen",
29
+ "isDefaultSet": "Als Standard festgelegt"
30
+ },
31
+ "actions": {
32
+ "add": "Adresse hinzufügen",
33
+ "save": "Adresse speichern",
34
+ "delete": "Adresse löschen"
35
+ },
36
+ "add": {
37
+ "title": "Adresse hinzufügen",
38
+ "submit": "Hinzufügen"
39
+ },
40
+ "validation": {
41
+ "required": "Dieses Feld ist erforderlich",
42
+ "minLength": "Mindestens {min} Zeichen erforderlich"
43
+ },
44
+ "delete": {
45
+ "title": "Adresse löschen?",
46
+ "confirm": "Möchten Sie die Adresse \"{label}\" wirklich löschen?",
47
+ "cancel": "Abbrechen",
48
+ "submit": "Löschen"
49
+ },
50
+ "success": {
51
+ "created": "Adresse erfolgreich hinzugefügt",
52
+ "updated": "Adresse erfolgreich aktualisiert",
53
+ "deleted": "Adresse erfolgreich gelöscht"
54
+ }
55
+ },
56
+ "orders": {
57
+ "title": "Ihre Bestellungen",
58
+ "description": "Alle Ihre bisherigen Bestellungen im Überblick.",
59
+ "errorTitle": "Bestellungen konnten nicht geladen werden",
60
+ "errorDescription": "Bitte versuchen Sie es später erneut.",
61
+ "empty": {
62
+ "title": "Keine Bestellungen vorhanden",
63
+ "description": "Sobald Sie bestellen, werden Ihre Bestellungen hier angezeigt."
64
+ },
65
+ "card": {
66
+ "orderNumber": "Bestellung",
67
+ "date": "Datum",
68
+ "shippingStatus": "Versandstatus",
69
+ "paymentStatus": "Zahlungsstatus",
70
+ "total": "Summe (netto)",
71
+ "yourOrderNumber": "Ihre Bestellnummer"
72
+ },
73
+ "status": {
74
+ "processing": "In Bearbeitung",
75
+ "approval-pending": "Freigabe ausstehend",
76
+ "shipped": "Versendet",
77
+ "delivered": "Geliefert",
78
+ "cancelled": "Storniert"
79
+ },
80
+ "payment": {
81
+ "open": "Zahlung offen",
82
+ "paid": "Bezahlt",
83
+ "refunded": "Erstattet"
84
+ },
85
+ "details": "Details",
86
+ "orderAgain": "Erneut bestellen",
87
+ "orderAgainSuccess": "{count} Position in den Warenkorb gelegt | {count} Positionen in den Warenkorb gelegt",
88
+ "morePositions": "+ {count} weitere Position | + {count} weitere Positionen",
89
+ "awaitingApproval": "Wartet auf Freigabe durch {names}",
90
+ "positionsTitle": "Positionen",
91
+ "deliveryAddress": "Lieferadresse",
92
+ "refresh": "Aktualisieren",
93
+ "notFound": "Bestellung nicht gefunden",
94
+ "searchPlaceholder": "Nach Bestellnummer oder Artikel suchen …",
95
+ "detail": {
96
+ "progressTitle": "Bestellstatus",
97
+ "steps": {
98
+ "ordered": "Bestellt",
99
+ "processing": "In Bearbeitung",
100
+ "shipped": "Versendet",
101
+ "delivered": "Geliefert"
102
+ },
103
+ "infoTitle": "Lieferung & Zahlung",
104
+ "billingAddress": "Rechnungsadresse",
105
+ "paymentMethodLabel": "Zahlungsart",
106
+ "trackingTitle": "Sendungsverfolgung",
107
+ "trackingVia": "Versand mit {carrier}",
108
+ "copyTracking": "Tracking-Nummer kopieren",
109
+ "copied": "Kopiert",
110
+ "noTracking": "Noch keine Sendungsdaten verfügbar."
111
+ },
112
+ "columns": {
113
+ "id": "Bestellung",
114
+ "date": "Datum",
115
+ "positions": "Positionen",
116
+ "total": "Summe (netto)",
117
+ "status": "Status",
118
+ "payment": "Zahlung"
119
+ }
120
+ },
121
+ "profile": {
122
+ "title": "Ihre Stammdaten",
123
+ "description": "Verwalten Sie Ihre persönlichen Daten und Zugangsdaten.",
124
+ "form": {
125
+ "title": "Stammdaten bearbeiten",
126
+ "description": "Hier können Sie Ihre Stammdaten bearbeiten"
127
+ },
128
+ "success": {
129
+ "updated": "Ihr Profil wurde erfolgreich aktualisiert"
130
+ },
131
+ "fields": {
132
+ "name": "Name",
133
+ "email": "E-Mail",
134
+ "phone": "Telefon",
135
+ "company": "Firma",
136
+ "empty": "Nicht verfügbar"
137
+ },
138
+ "actions": {
139
+ "updateData": "Daten aktualisieren",
140
+ "changePassword": "Kennwort ändern"
141
+ }
142
+ },
143
+ "menu": {
144
+ "profile": "Profil",
145
+ "addresses": "Adressen",
146
+ "settings": "Einstellungen",
147
+ "orders": "Bestellungen",
148
+ "logout": "Abmelden",
149
+ "accountAriaLabel": "Zum Kundenkonto"
150
+ },
151
+ "account": {
152
+ "nav": {
153
+ "groups": {
154
+ "account": "Konto",
155
+ "orders": "Bestellungen",
156
+ "orderProcess": "Bestellprozess",
157
+ "integrations": "Schnittstellen",
158
+ "settings": "Einstellungen"
159
+ },
160
+ "dashboard": "Dashboard",
161
+ "carts": "Warenkörbe",
162
+ "orderTemplates": "Bestellvorlagen",
163
+ "projects": "Projekte",
164
+ "devices": "Geräte",
165
+ "points": "Punkte",
166
+ "configurations": "Konfigurationen",
167
+ "inquiries": "Anfragen",
168
+ "quotes": "Angebote",
169
+ "orders": "Bestellungen",
170
+ "deliveries": "Lieferungen",
171
+ "subscriptions": "Abos",
172
+ "downloads": "Downloads",
173
+ "statistics": "Statistiken",
174
+ "approvals": "Genehmigungen",
175
+ "costCenters": "Kostenstellen",
176
+ "collectiveOrders": "Sammelbestellungen",
177
+ "assortmentRestrictions": "Sortimentsbeschränkungen",
178
+ "inquiriesAndQuotes": "Anfragen und Angebote",
179
+ "punchouts": "Punchouts",
180
+ "orderingDevices": "Bestellgeräte",
181
+ "mobileScanners": "Mobile Scanner",
182
+ "iotDevices": "IoT-Geräte",
183
+ "catalogs": "Kataloge",
184
+ "accountSettings": "Stammdaten",
185
+ "addresses": "Adressen",
186
+ "users": "Benutzer",
187
+ "roles": "Rollen",
188
+ "customArticleNumbers": "Eigene Artikelnummern",
189
+ "orderLists": "Bestelllisten",
190
+ "requisitions": "Bestellanforderungen",
191
+ "workflows": "Workflows",
192
+ "orderSettings": "Bestelleinstellungen"
193
+ },
194
+ "dashboard": {
195
+ "title": "Herzlich willkommen in Ihrem Konto",
196
+ "greeting": "Willkommen zurück, {name}",
197
+ "description": "Ihre Bestellungen, Freigaben und Budgets auf einen Blick.",
198
+ "quickAccess": "Schnellzugriff",
199
+ "panelTitle": "Ihr Ansprechpartner",
200
+ "panelText": "Ihr persönliches Service-Team erreichen Sie werktags von 8 bis 17 Uhr.",
201
+ "stats": {
202
+ "openOrders": "Offene Bestellungen",
203
+ "awaitingApproval": "Wartet auf Freigabe",
204
+ "spend30": "Ausgaben (30 Tage)",
205
+ "budgetUsed": "Budget-Auslastung"
206
+ },
207
+ "recentOrders": "Letzte Bestellungen",
208
+ "openRequisitions": "Offene Bestellanforderungen",
209
+ "budgets": "Kostenstellen-Budgets",
210
+ "viewAll": "Alle ansehen",
211
+ "budgetAvailable": "{available} von {total} verfügbar",
212
+ "noOrders": "Noch keine Bestellungen.",
213
+ "noRequisitions": "Keine offenen Anforderungen.",
214
+ "noBudgets": "Keine Budgets hinterlegt."
215
+ },
216
+ "comingSoon": {
217
+ "title": "In Entwicklung",
218
+ "description": "Dieser Bereich ist Teil der Produkt-Roadmap und wird hier entstehen.",
219
+ "back": "Zurück zum Dashboard"
220
+ }
221
+ },
222
+ "governance": {
223
+ "approvalRequired": "Freigabepflichtig",
224
+ "approvals": {
225
+ "title": "Freigabelimits",
226
+ "description": "Ihre Genehmigungsregeln: Budgets und Grenzwerte, ab denen eine Freigabe erforderlich ist.",
227
+ "columns": {
228
+ "label": "Bezeichnung",
229
+ "type": "Typ",
230
+ "threshold": "Limit / Budget",
231
+ "approval": "Genehmiger",
232
+ "deputy": "Stellvertreter"
233
+ },
234
+ "types": {
235
+ "budget": "Budget",
236
+ "order-value": "Bestellwert",
237
+ "unit-price": "Stückpreis",
238
+ "non-catalog": "Non-Katalog"
239
+ },
240
+ "budgetOf": "{available} von {total} verfügbar",
241
+ "timeFrame": "Frist {hours} Std.",
242
+ "infoOnly": "Nur Information",
243
+ "add": "Limit anlegen",
244
+ "addTitle": "Neues Freigabelimit",
245
+ "forUser": "Gilt für",
246
+ "saved": "Freigabelimit gespeichert",
247
+ "searchPlaceholder": "Nach Bezeichnung oder Genehmiger suchen …",
248
+ "empty": {
249
+ "title": "Keine Genehmigungsgrenzen",
250
+ "description": "Für Ihr Konto sind aktuell keine Grenzen hinterlegt."
251
+ }
252
+ },
253
+ "costCenters": {
254
+ "title": "Kostenstellen",
255
+ "description": "Kostenstellen Ihrer Organisation mit Budgets und Genehmigungsregeln.",
256
+ "columns": {
257
+ "code": "Nummer",
258
+ "label": "Bezeichnung",
259
+ "budget": "Budget",
260
+ "available": "Verfügbar",
261
+ "approver": "Genehmiger"
262
+ },
263
+ "add": "Kostenstelle anlegen",
264
+ "addTitle": "Neue Kostenstelle",
265
+ "editTitle": "Kostenstelle bearbeiten",
266
+ "withBudget": "Mit Budget-Limit",
267
+ "saved": "Kostenstelle gespeichert",
268
+ "notFound": "Kostenstelle nicht gefunden",
269
+ "utilization": "{percent} % des Budgets verbraucht",
270
+ "noBudget": "Für diese Kostenstelle ist kein Budget-Limit hinterlegt.",
271
+ "searchPlaceholder": "Nach Code, Bezeichnung oder Genehmiger suchen …",
272
+ "empty": {
273
+ "title": "Keine Kostenstellen",
274
+ "description": "Legen Sie die erste Kostenstelle über „Hinzufügen“ an."
275
+ },
276
+ "ruleTitle": "Genehmigungsregel",
277
+ "requisitionsTitle": "Anforderungen auf diese Kostenstelle",
278
+ "noRequisitions": "Noch keine Anforderungen auf diese Kostenstelle."
279
+ },
280
+ "requisitions": {
281
+ "title": "Bestellanforderungen",
282
+ "description": "Alle Bestellanforderungen Ihrer Workflows — inklusive vollständigem Genehmigungsverlauf.",
283
+ "columns": {
284
+ "id": "Nummer",
285
+ "workflow": "Workflow",
286
+ "requestedBy": "Anforderer",
287
+ "requestedAt": "Angefordert am",
288
+ "positions": "Positionen",
289
+ "totalValue": "Wert",
290
+ "status": "Status"
291
+ },
292
+ "status": {
293
+ "open": "Offen",
294
+ "ordered": "Bestellt",
295
+ "cancelled": "Abgelehnt"
296
+ },
297
+ "details": "Details",
298
+ "positionsTitle": "Positionen",
299
+ "historyTitle": "Genehmigungsverlauf",
300
+ "step": "Schritt {step}",
301
+ "actions": {
302
+ "submitted": "Eingereicht",
303
+ "forwarded": "Weitergeleitet",
304
+ "approved": "Freigegeben",
305
+ "escalated": "Eskaliert",
306
+ "rejected": "Abgelehnt",
307
+ "ordered": "Bestellt",
308
+ "cancelled": "Annulliert"
309
+ },
310
+ "notFound": "Bestellanforderung nicht gefunden",
311
+ "searchPlaceholder": "Nach Nummer, Workflow oder Anforderer suchen …",
312
+ "empty": {
313
+ "title": "Keine Bestellanforderungen",
314
+ "description": "Sobald ein Workflow eine Anforderung erzeugt, erscheint sie hier."
315
+ },
316
+ "requestedAtShort": "Angefordert",
317
+ "loadHint": "Als Besteller können Sie diese Anforderung in den Warenkorb laden und auslösen."
318
+ },
319
+ "save": "Speichern",
320
+ "edit": "Bearbeiten",
321
+ "saveError": "Speichern fehlgeschlagen.",
322
+ "selectApprover": "Genehmiger auswählen",
323
+ "selectUser": "Benutzer auswählen",
324
+ "workflows": {
325
+ "title": "Workflows",
326
+ "description": "Genehmigungsabläufe Ihrer Organisation — von der Bestellanforderung bis zur Bestellung.",
327
+ "add": "Workflow anlegen",
328
+ "addTitle": "Neuen Workflow anlegen",
329
+ "editTitle": "Workflow bearbeiten",
330
+ "name": "Name",
331
+ "namePlaceholder": "z. B. Standardbestellung Einkauf",
332
+ "columns": {
333
+ "name": "Name",
334
+ "steps": "Schritte",
335
+ "requesters": "Anforderer",
336
+ "orderers": "Besteller"
337
+ },
338
+ "stepTypes": {
339
+ "request": "Anforderung",
340
+ "order": "Bestellung"
341
+ },
342
+ "addStep": "Anforderungsschritt hinzufügen",
343
+ "removeStep": "Schritt entfernen",
344
+ "usersPlaceholder": "Beteiligte auswählen",
345
+ "saved": "Workflow gespeichert",
346
+ "notFound": "Workflow nicht gefunden",
347
+ "searchPlaceholder": "Nach Workflow oder Beteiligten suchen …",
348
+ "empty": {
349
+ "title": "Keine Workflows",
350
+ "description": "Legen Sie den ersten Genehmigungsworkflow über „Hinzufügen“ an."
351
+ },
352
+ "participants": "Beteiligte",
353
+ "requisitionsTitle": "Anforderungen in diesem Workflow",
354
+ "noRequisitions": "Noch keine Anforderungen in diesem Workflow."
355
+ }
356
+ },
357
+ "orderLists": {
358
+ "title": "Bestelllisten",
359
+ "description": "Einkaufs- und Etikettenlisten — gespeicherte Positionen, die direkt zurück in den Warenkorb fließen.",
360
+ "add": "Liste anlegen",
361
+ "addTitle": "Neue Liste",
362
+ "editTitle": "Liste bearbeiten",
363
+ "namePlaceholder": "z. B. Onboarding-Paket",
364
+ "columns": {
365
+ "name": "Name",
366
+ "kind": "Typ",
367
+ "positions": "Positionen",
368
+ "value": "Wert",
369
+ "visibility": "Sichtbarkeit",
370
+ "updatedAt": "Aktualisiert"
371
+ },
372
+ "kinds": {
373
+ "shopping": "Einkaufsliste",
374
+ "label": "Etikettenliste"
375
+ },
376
+ "public": "Organisation",
377
+ "shareWithOrg": "Mit der Organisation teilen",
378
+ "shareHint": "Geteilte Listen sind für alle Benutzer Ihrer Organisation sichtbar.",
379
+ "details": "Details",
380
+ "delete": "Löschen",
381
+ "saved": "Liste gespeichert",
382
+ "deleted": "Liste gelöscht",
383
+ "error": "Aktion fehlgeschlagen.",
384
+ "addedToCart": "{count} Position in den Warenkorb gelegt | {count} Positionen in den Warenkorb gelegt",
385
+ "notFound": "Liste nicht gefunden",
386
+ "searchPlaceholder": "Nach Name oder Besitzer suchen …",
387
+ "empty": {
388
+ "title": "Keine Bestelllisten",
389
+ "description": "Legen Sie Ihre erste Bestellliste über „Hinzufügen“ an."
390
+ },
391
+ "saveTo": {
392
+ "button": "Auf Bestellliste",
393
+ "onLists": "Auf {count} Liste | Auf {count} Listen",
394
+ "title": "Auf Bestellliste setzen",
395
+ "lastUsed": "Zuletzt verwendet",
396
+ "added": "Zu „{list}“ hinzugefügt",
397
+ "removed": "Von „{list}“ entfernt",
398
+ "createAndAdd": "Anlegen & hinzufügen",
399
+ "sharedReadOnly": "Geteilte Liste — nur der Besitzer kann sie ändern",
400
+ "error": "Liste konnte nicht aktualisiert werden",
401
+ "empty": "Noch keine Bestelllisten — legen Sie unten die erste an."
402
+ }
403
+ },
404
+ "directOrder": {
405
+ "title": "Direktbestellung",
406
+ "description": "Nutzen Sie unsere komfortablen Funktionen, um Ihre Produkte schnell in den Warenkorb zu erfassen: über die Schnellerfassung, als Datei-Upload oder per Mehrfacherfassung über die Zwischenablage.",
407
+ "tabs": {
408
+ "entry": "Direktbestellung",
409
+ "upload": "Bestellungen hochladen",
410
+ "paste": "Mehrfacherfassung"
411
+ },
412
+ "columns": {
413
+ "sku": "Artikelnummer",
414
+ "customSku": "Kundenartikelnummer",
415
+ "quantity": "Menge",
416
+ "name": "Bezeichnung"
417
+ },
418
+ "skuPlaceholder": "Artikelnummer",
419
+ "customSkuPlaceholder": "Kundenartikelnummer",
420
+ "unknownSku": "Artikel nicht gefunden",
421
+ "removeRow": "Zeile entfernen",
422
+ "addRow": "Weitere Zeile hinzufügen",
423
+ "submitRows": "Produkte in den Warenkorb legen",
424
+ "added": "{count} Position übernommen | {count} Positionen übernommen",
425
+ "upload": {
426
+ "intro1": "Laden Sie bequem Ihre gesamte Bestellung auf einmal in den Warenkorb.",
427
+ "intro2": "Wählen Sie dazu einfach das Format der Datei aus dem Drop-down-Menü aus und klicken Sie auf „Bestellung hochladen“.",
428
+ "intro3": "Unsere Vorlage im gewünschten Format können Sie ebenfalls aus der Liste auswählen und über „Vorlage herunterladen“ beziehen.",
429
+ "format": "Dateiformat",
430
+ "formats": {
431
+ "xlsx": "Microsoft Excel (*.xlsx)",
432
+ "csv": "Comma-separated values (*.csv)"
433
+ },
434
+ "template": "Vorlage herunterladen",
435
+ "submit": "Bestellung hochladen",
436
+ "xlsxDemoHint": "Die Demo verarbeitet CSV-Dateien — die Excel-Verarbeitung übernimmt die Plattform-Anbindung."
437
+ },
438
+ "paste": {
439
+ "intro1": "Kopieren Sie Ihre Bestellung aus einem beliebigen Programm und fügen Sie Artikelnummern, Kundenartikelnummern und Mengen in das untenstehende Feld ein — mit Komma oder Semikolon als Trennzeichen.",
440
+ "intro2": "Fügen Sie zunächst die Artikelinformationen hinzu und klicken Sie dann auf „Bestellung hochladen“.",
441
+ "separator": "Trennzeichen",
442
+ "separators": {
443
+ "comma": "Komma",
444
+ "semicolon": "Semikolon"
445
+ },
446
+ "submit": "Bestellung hochladen"
447
+ },
448
+ "parseSummary": "{found} von {total} Zeilen erkannt"
449
+ },
450
+ "preferences": {
451
+ "title": "Bestelleinstellungen",
452
+ "description": "Persönliche Voreinstellungen für das Bestellen.",
453
+ "cartSection": "Warenkorb",
454
+ "alwaysActive": "Immer in den aktiven Warenkorb legen",
455
+ "alwaysActiveHint": "Beim Hinzufügen von Artikeln wird nicht mehr gefragt, in welchen Warenkorb die Position gelegt werden soll.",
456
+ "saved": "Einstellung gespeichert"
457
+ }
458
+ }
@@ -0,0 +1,155 @@
1
+ {
2
+ "auth": {
3
+ "errors": {
4
+ "serviceUnavailable": "Es ist ein technisches Problem aufgetreten. Bitte versuchen Sie es später erneut oder wenden Sie sich an Ihren Administrator."
5
+ },
6
+ "register": {
7
+ "title": "Konto erstellen",
8
+ "description": "Registrieren Sie sich, um Großhandelspreise zu nutzen, Ihre Bestellungen zu verwalten und Lieferungen zu verfolgen – alles über ein einziges Geschäftskonto.",
9
+ "fields": {
10
+ "email": "E-Mail",
11
+ "emailPlaceholder": "E-Mail",
12
+ "password": "Passwort",
13
+ "passwordPlaceholder": "Mindestens 8 Zeichen",
14
+ "passwordConfirm": "Passwort bestätigen",
15
+ "passwordConfirmPlaceholder": "Passwort wiederholen",
16
+ "firstName": "Vorname",
17
+ "lastName": "Nachname",
18
+ "company": "Unternehmen",
19
+ "companyHint": "Optional – Ihr Unternehmen oder Ihre Organisation",
20
+ "acceptTerms": "Ich akzeptiere die AGB",
21
+ "acceptTermsDescription": "Mit der Erstellung eines Kontos stimmen Sie unseren AGB und der Datenschutzerklärung zu. (Demo-Hinweis – es wird kein tatsächlicher Vertrag geschlossen.)"
22
+ },
23
+ "submit": "Konto erstellen",
24
+ "success": {
25
+ "title": "Willkommen!",
26
+ "description": "Ihr Konto wurde erstellt und Sie sind jetzt angemeldet."
27
+ },
28
+ "errors": {
29
+ "emailFormat": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
30
+ "passwordsMismatch": "Passwörter stimmen nicht überein",
31
+ "unknown": "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."
32
+ },
33
+ "loginTeaserText": "Sie haben bereits ein Geschäftskonto bei uns? Melden Sie sich an und greifen Sie auf Ihre Bestellungen, Bestelllisten und Konditionen zu.",
34
+ "modes": {
35
+ "title": "Wie möchten Sie sich registrieren?",
36
+ "new": {
37
+ "title": "Neukunde",
38
+ "description": "Sie haben noch kein Kundenkonto bei uns — registrieren Sie Ihr Unternehmen mit allen Stammdaten."
39
+ },
40
+ "existing": {
41
+ "title": "Bereits Kunde",
42
+ "description": "Sie bestellen schon bei uns — verknüpfen Sie Ihren Online-Zugang über Ihre Kundennummer."
43
+ }
44
+ },
45
+ "sections": {
46
+ "company": "Unternehmen",
47
+ "address": "Rechnungsadresse",
48
+ "contact": "Ansprechpartner",
49
+ "account": "Zugangsdaten"
50
+ },
51
+ "fields2": {
52
+ "vatId": "USt-IdNr.",
53
+ "vatIdHint": "Optional – für innergemeinschaftliche Lieferungen",
54
+ "customerNumber": "Kundennummer",
55
+ "customerNumberHint": "Sie finden Ihre Kundennummer auf jeder Rechnung",
56
+ "street": "Straße",
57
+ "streetNumber": "Hausnummer",
58
+ "zip": "PLZ",
59
+ "city": "Ort",
60
+ "country": "Land",
61
+ "salutation": "Anrede",
62
+ "salutations": {
63
+ "mr": "Herr",
64
+ "ms": "Frau",
65
+ "none": "Keine Angabe"
66
+ },
67
+ "jobTitle": "Position",
68
+ "jobTitleHint": "Optional – z. B. Einkauf, Werkstattleitung",
69
+ "phone": "Telefon",
70
+ "phoneHint": "Optional – für Rückfragen zu Bestellungen"
71
+ },
72
+ "companyRequiredHint": "Pflichtfeld – wir liefern ausschließlich an Geschäftskunden",
73
+ "vettingNotice": "Ihre Registrierung wird von unserem Vertriebsteam geprüft. Großhandelspreise und Bestellfunktionen werden nach der Freischaltung aktiviert."
74
+ },
75
+ "login": {
76
+ "title": "In Ihr Konto einloggen",
77
+ "description": "Greifen Sie auf Ihre Bestellungen, Rechnungen und Großhandelspreise zu.",
78
+ "fields": {
79
+ "email": "E-Mail",
80
+ "emailPlaceholder": "Ihre E-Mail-Adresse",
81
+ "password": "Passwort",
82
+ "passwordPlaceholder": "Ihr Passwort"
83
+ },
84
+ "submit": "Anmelden",
85
+ "forgotPassword": "Passwort vergessen?",
86
+ "errors": {
87
+ "invalidCredentials": "E-Mail oder Passwort ist falsch.",
88
+ "accountBlocked": "Dieses Konto wurde gesperrt. Bitte wenden Sie sich an den Support.",
89
+ "rateLimited": "Zu viele Versuche. Bitte versuchen Sie es in ein paar Minuten erneut.",
90
+ "network": "Server nicht erreichbar. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
91
+ "sessionExists": "Sie sind bereits angemeldet.",
92
+ "unknown": "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."
93
+ },
94
+ "heroTitle": "Kundenportal + Shop + Digitale Services =",
95
+ "heroHighlight": "Ein Konto.",
96
+ "heroLine1": "Wir vereinen alle Funktionen unter einem zentralen Kundenkonto.",
97
+ "heroLine2": "Melden Sie sich jetzt an oder registrieren Sie sich für Ihren persönlichen Zugang.",
98
+ "existingCustomer": "Ich habe bereits ein Konto",
99
+ "newCustomer": "Ich bin Neukunde",
100
+ "newCustomerText": "Registrieren Sie sich für Ihren persönlichen Zugang zu Preisen, Bestellungen und digitalen Services.",
101
+ "registerCta": "Jetzt Kunde werden"
102
+ },
103
+ "currentPassword": {
104
+ "fields": {
105
+ "currentPassword": "Ihr Aktuelles Kennwort",
106
+ "currentPasswordPlaceholder": "Ihr Aktuelles Kennwort"
107
+ }
108
+ },
109
+ "forgotPassword": {
110
+ "title": "Passwort vergessen?",
111
+ "description": "Geben Sie die E-Mail-Adresse Ihres Kontos ein und wir senden Ihnen einen Link zum Zurücksetzen Ihres Passworts.",
112
+ "fields": {
113
+ "email": "E-Mail",
114
+ "emailPlaceholder": "Ihre E-Mail-Adresse"
115
+ },
116
+ "submit": "Link senden",
117
+ "backToLogin": "Zurück zur Anmeldung",
118
+ "success": {
119
+ "title": "E-Mail gesendet",
120
+ "description": "Falls ein Konto mit dieser E-Mail existiert, haben wir Ihnen einen Link zum Zurücksetzen gesendet."
121
+ }
122
+ },
123
+ "resetPassword": {
124
+ "title": "Neues Passwort festlegen",
125
+ "description": "Hier können Sie ein neues Passwort für Ihr Konto festlegen. Bitte wählen Sie ein sicheres Passwort, das Sie in letzter Zeit nicht verwendet haben.",
126
+ "fields": {
127
+ "password": "Neues Passwort",
128
+ "passwordPlaceholder": "Mindestens 8 Zeichen",
129
+ "passwordConfirm": "Neues Passwort bestätigen",
130
+ "passwordConfirmPlaceholder": "Neues Passwort wiederholen"
131
+ },
132
+ "submit": "Passwort zurücksetzen",
133
+ "success": {
134
+ "title": "Passwort aktualisiert",
135
+ "description": "Ihr Passwort wurde zurückgesetzt. Sie können sich jetzt anmelden."
136
+ },
137
+ "errors": {
138
+ "invalidLink": "Dieser Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen an."
139
+ }
140
+ },
141
+ "recovery": {
142
+ "errors": {
143
+ "userNotFound": "Kein Konto mit dieser E-Mail-Adresse gefunden.",
144
+ "rateLimited": "Zu viele Versuche. Bitte versuchen Sie es in ein paar Minuten erneut.",
145
+ "invalidToken": "Dieser Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen an.",
146
+ "passwordRecentlyUsed": "Bitte wählen Sie ein Passwort, das Sie in letzter Zeit nicht verwendet haben.",
147
+ "unknown": "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut.",
148
+ "network": "Server nicht erreichbar. Bitte prüfen Sie Ihre Verbindung und versuchen Sie es erneut."
149
+ }
150
+ },
151
+ "logout": {
152
+ "success": "Sie wurden abgemeldet"
153
+ }
154
+ }
155
+ }