@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,263 @@
1
+ {
2
+ "cart": {
3
+ "page": {
4
+ "title": "Warenkorb",
5
+ "itemCount": "{count} Artikel im Warenkorb",
6
+ "itemsTitle": "Artikel",
7
+ "summaryTitle": "Bestellübersicht",
8
+ "steps": {
9
+ "cart": "Warenkorb",
10
+ "personalData": "Persönliche Daten",
11
+ "payment": "Zahlung",
12
+ "overview": "Übersicht",
13
+ "success": "Vielen Dank"
14
+ },
15
+ "voucher": {
16
+ "title": "Gutschein eingeben",
17
+ "codeLabel": "Gutscheincode",
18
+ "placeholder": "Code eingeben",
19
+ "redeem": "Einlösen",
20
+ "invalidTitle": "Gutschein ungültig"
21
+ }
22
+ },
23
+ "emptyState": {
24
+ "title": "Ihr Warenkorb ist leer",
25
+ "description": "Fügen Sie Produkte aus dem Shop hinzu, um zu beginnen.",
26
+ "goToShop": "Zum Shop",
27
+ "browseHint": "Oder stöbern Sie im Katalog und legen Sie Artikel direkt in den Warenkorb.",
28
+ "directOrder": "Zur Direktbestellung",
29
+ "orderLists": "Zu den Bestelllisten"
30
+ },
31
+ "actions": {
32
+ "proceedToCart": "Zum Warenkorb",
33
+ "proceedToCheckout": "Zur Kasse",
34
+ "print": "Drucken (PDF)",
35
+ "clear": "Warenkorb leeren"
36
+ },
37
+ "item": {
38
+ "removeTitle": "Artikel entfernen?",
39
+ "removeConfirm": "{name} wird aus Ihrem Warenkorb entfernt.",
40
+ "cancel": "Abbrechen",
41
+ "remove": "Entfernen",
42
+ "quantityLine": "{name} × {quantity}",
43
+ "maxQuantityExceeded": "Maximale Menge überschritten",
44
+ "ariaQuantityOf": "Menge von {name}: {quantity}",
45
+ "ariaInputQuantity": "Menge von {name}",
46
+ "ariaDecreaseQuantity": "Menge von {name} verringern",
47
+ "ariaIncreaseQuantity": "Menge von {name} erhöhen",
48
+ "ariaRemoveFromCart": "{name} aus dem Warenkorb entfernen"
49
+ },
50
+ "selection": {
51
+ "selectAll": "Alle Positionen auswählen",
52
+ "selectPosition": "Position {name} auswählen",
53
+ "count": "{count} Position ausgewählt | {count} Positionen ausgewählt"
54
+ },
55
+ "bulk": {
56
+ "editCostCenter": "Kostenstelle",
57
+ "editTexts": "Positionstexte",
58
+ "saveToList": "Speichern",
59
+ "deletePositions": "Löschen"
60
+ },
61
+ "position": {
62
+ "costCenter": "Kostenstelle",
63
+ "customSku": "Eigene Artikel-Nr.",
64
+ "defaultUnit": "Stück",
65
+ "perUnit": "je {price}",
66
+ "reorder": "Position verschieben",
67
+ "addTexts": "Positionstexte hinzufügen",
68
+ "editTexts": "Positionstexte bearbeiten",
69
+ "editCostCenter": "Kostenstelle ändern"
70
+ },
71
+ "availability": {
72
+ "in-stock": "Auf Lager ({count})",
73
+ "partial": "Teilweise verfügbar ({count})",
74
+ "out-of-stock": "Lieferzeit ca. {days} Tage"
75
+ },
76
+ "cta": {
77
+ "checkout": "Zur Kasse",
78
+ "requisition": "Mit Bestellanforderung fortfahren",
79
+ "notOrderable": "Der Warenkorb ist derzeit nicht bestellbar — bitte beheben Sie die genannten Hinweise."
80
+ },
81
+ "summary": {
82
+ "minOrderHint": "Mindestbestellwert {threshold} — die Differenz wird als Zuschlag berechnet."
83
+ },
84
+ "workflow": {
85
+ "pickTitle": "Workflow auswählen",
86
+ "continue": "Fortfahren",
87
+ "stepSummary": "{steps} Schritte · Besteller: {orderers}",
88
+ "noneTitle": "Kein Workflow zugeordnet",
89
+ "noneDescription": "Sie sind keinem Workflow zugeordnet, daher können Sie keine Bestellanforderung aufgeben. Bitte wenden Sie sich an den Super-User in Ihrem Unternehmen.",
90
+ "noneConfirm": "Verstanden"
91
+ },
92
+ "costCenter": {
93
+ "title": "Kostenstelle bearbeiten | Kostenstelle für {count} Positionen bearbeiten",
94
+ "searchPlaceholder": "Nummer oder Name suchen…",
95
+ "none": "Keine Kostenstelle",
96
+ "apply": "Kostenstelle übernehmen",
97
+ "noResults": "Keine Kostenstelle für „{query}“ gefunden."
98
+ },
99
+ "positionTexts": {
100
+ "title": "Positionstexte bearbeiten | Positionstexte für {count} Positionen bearbeiten",
101
+ "customSku": "Eigene Artikelnummer",
102
+ "customSkuPlaceholder": "z. B. interne Materialnummer",
103
+ "textLabel": "Positionstext {index}",
104
+ "save": "Speichern"
105
+ },
106
+ "saveToList": {
107
+ "title": "Position speichern | {count} Positionen speichern",
108
+ "shoppingList": "Einkaufsliste",
109
+ "labelList": "Etikettenliste",
110
+ "existing": "Bestehende Liste",
111
+ "new": "Neue Liste",
112
+ "selectPlaceholder": "Liste auswählen",
113
+ "namePlaceholder": "Name der neuen Liste",
114
+ "hint": "Gespeichert wird die komplette Position: Artikel, Menge, Positionstexte und Kostenstelle.",
115
+ "save": "Speichern",
116
+ "success": "{count} Position auf „{list}“ gespeichert | {count} Positionen auf „{list}“ gespeichert"
117
+ },
118
+ "export": {
119
+ "action": "Exportieren",
120
+ "title": "Warenkorb exportieren",
121
+ "description": "Der Export enthält alle Positionen mit Artikelnummern, Mengen, Preisen, Verfügbarkeit, Kostenstellen und Positionstexten.",
122
+ "csv": "Als CSV exportieren",
123
+ "xlsx": "Als XLSX exportieren",
124
+ "xlsxSoon": "XLSX-Export folgt in Kürze",
125
+ "error": "Der Warenkorb konnte nicht exportiert werden."
126
+ },
127
+ "quickAdd": {
128
+ "action": "Schnellerfassung",
129
+ "title": "Schnellerfassung",
130
+ "skuLabel": "Artikelnummer oder Name",
131
+ "skuPlaceholder": "z. B. NK-G42…",
132
+ "quantityLabel": "Menge",
133
+ "add": "Hinzufügen",
134
+ "added": "{quantity}× {name} hinzugefügt"
135
+ },
136
+ "requisition": {
137
+ "title": "Bestellanforderung",
138
+ "meta": "Angefordert von {name} am {date}",
139
+ "shortMeta": "{name} · {count} Positionen",
140
+ "unload": "Entladen",
141
+ "collapse": "Bestellanforderung einklappen",
142
+ "expand": "Bestellanforderung ausklappen",
143
+ "load": "In den Warenkorb laden",
144
+ "openTitle": "Offene Bestellanforderungen",
145
+ "mergeRejected": "Diese Bestellanforderung lässt sich nicht in den Warenkorb legen",
146
+ "mergeRejectedDescription": "Die Lieferadresse weicht von den bereits geladenen Bestellanforderungen ab."
147
+ },
148
+ "approvals": {
149
+ "title": "Freigaben & Budgets",
150
+ "exceeded": "Freigabe erforderlich",
151
+ "usage": "{actual} von {threshold}",
152
+ "exceededBy": "{amount} darüber",
153
+ "approvalRequired": "Freigabe durch {approver} erforderlich (Frist: {hours} Std.)",
154
+ "infoOnly": "Keine Freigabe erforderlich — der Verantwortliche wird informiert.",
155
+ "unknownApprover": "Genehmiger"
156
+ },
157
+ "multi": {
158
+ "switcher": "Warenkorb wechseln",
159
+ "newCart": "Neuer Warenkorb",
160
+ "newCartTitle": "Warenkorb anlegen",
161
+ "renameTitle": "Warenkorb umbenennen",
162
+ "namePlaceholder": "z. B. Projekt Halle 3",
163
+ "nameLabel": "Name",
164
+ "create": "Anlegen",
165
+ "rename": "Umbenennen",
166
+ "delete": "Löschen",
167
+ "deleteTitle": "Warenkorb löschen?",
168
+ "deleteDescription": "„{name}“ wird mit allen {count} Positionen gelöscht. Das kann nicht rückgängig gemacht werden.",
169
+ "activate": "Aktivieren",
170
+ "activeBadge": "Aktiv",
171
+ "switched": "Warenkorb „{name}“ ist jetzt aktiv",
172
+ "created": "Warenkorb „{name}“ angelegt",
173
+ "deleted": "Warenkorb gelöscht",
174
+ "modal": {
175
+ "title": "In welchen Warenkorb legen?",
176
+ "description": "„{name}“ wurde dem aktiven Warenkorb hinzugefügt. Sie können die Position auch in einen anderen Warenkorb legen.",
177
+ "alwaysActive": "Immer in den aktiven Warenkorb legen",
178
+ "alwaysActiveHint": "Diese Abfrage nicht mehr anzeigen — änderbar unter Konto → Bestelleinstellungen.",
179
+ "confirm": "Übernehmen",
180
+ "moved": "Position in „{name}“ verschoben"
181
+ },
182
+ "page": {
183
+ "title": "Warenkörbe",
184
+ "description": "Alle Warenkörbe, die Sie gerade befüllen — wechseln, umbenennen oder löschen Sie sie hier.",
185
+ "searchPlaceholder": "Nach Name suchen …",
186
+ "columns": {
187
+ "name": "Name",
188
+ "positions": "Positionen",
189
+ "value": "Wert",
190
+ "updatedAt": "Zuletzt geändert",
191
+ "status": "Status"
192
+ },
193
+ "empty": {
194
+ "title": "Nur der aktive Warenkorb",
195
+ "description": "Legen Sie weitere Warenkörbe über „Neuer Warenkorb“ an — z. B. je Projekt oder Kostenstelle."
196
+ },
197
+ "disabled": "Mehrere Warenkörbe sind für Ihre Organisation nicht aktiviert."
198
+ }
199
+ },
200
+ "boost": {
201
+ "missing": "Noch {amount} bis {label}",
202
+ "reached": "{label} erreicht",
203
+ "reorderTitle": "Zuletzt bestellt – schnell nachbestellen",
204
+ "crossSellTitle": "Passt zu Ihrer Bestellung",
205
+ "popularTitle": "Beliebt im Sortiment",
206
+ "add": "In den Warenkorb"
207
+ },
208
+ "trust": {
209
+ "delivery": "Bis 16:00 Uhr bestellt – am nächsten Werktag geliefert",
210
+ "invoice": "Kauf auf Rechnung für Geschäftskunden",
211
+ "support": "Persönliches Service-Team, werktags 8–17 Uhr"
212
+ }
213
+ },
214
+ "calc": {
215
+ "totals": {
216
+ "subtotal": "Warenwert",
217
+ "surcharges": "Artikelzuschläge",
218
+ "minOrderValue": "Mindermengenzuschlag",
219
+ "discount": "Sonderrabatt {percent} %",
220
+ "shipping": "Versandkosten",
221
+ "tax": "MwSt. {percent} %",
222
+ "rounding": "Rundungsdifferenz",
223
+ "total": "Total"
224
+ },
225
+ "recyclingFee": "Recyclinggebühr",
226
+ "priceLabels": {
227
+ "free": "Gratis",
228
+ "on-request": "Auf Anfrage",
229
+ "by-result": "Nach Ergebnis"
230
+ },
231
+ "hints": {
232
+ "quantityAdjusted": "Die Menge wurde auf {quantity} angepasst (Mindestmenge {min}, Verpackungseinheit {step}).",
233
+ "duplicate": "Dieser Artikel ist mehrfach im Warenkorb vorhanden.",
234
+ "missingCostCenter": "Bitte hinterlegen Sie auf dieser Position eine Kostenstelle."
235
+ },
236
+ "messages": {
237
+ "costCentersUnassigned": "Sie haben keine Kostenstellen, bitte wenden Sie sich an Ihren Organisationsadministrator.",
238
+ "costCenterRequired": "Bitte wählen Sie für alle Positionen eine Kostenstelle aus."
239
+ },
240
+ "incentives": {
241
+ "freeShipping": "versandkostenfreie Lieferung",
242
+ "volumeDiscount": "{percent} % Mengenrabatt"
243
+ }
244
+ },
245
+ "export": {
246
+ "columns": {
247
+ "sku": "Artikel-Nr",
248
+ "name": "Bezeichnung",
249
+ "dimension": "Dimension",
250
+ "quantity": "Menge",
251
+ "lineTotal": "Netto pro Position",
252
+ "unitPrice": "Netto pro Einheit",
253
+ "available": "Verfügbar",
254
+ "customSku": "Eigene Artikelnummer",
255
+ "costCenterCode": "KST",
256
+ "costCenterLabel": "KST Bezeichnung",
257
+ "positionText1": "Positionstext 1",
258
+ "positionText2": "Positionstext 2",
259
+ "positionText3": "Positionstext 3",
260
+ "positionText4": "Positionstext 4"
261
+ }
262
+ }
263
+ }
@@ -0,0 +1,217 @@
1
+ {
2
+ "confirmation": {
3
+ "order": {
4
+ "title": "Bestellung bestätigt!",
5
+ "received": "Ihre Bestellung {id} wurde erfolgreich aufgenommen.",
6
+ "notice": "Sie erhalten in Kürze eine Bestellbestätigung per E-Mail."
7
+ },
8
+ "approval": {
9
+ "title": "Bestellung eingereicht — Freigabe ausstehend",
10
+ "received": "Ihre Bestellung {id} wurde aufgenommen und durchläuft die Freigabe.",
11
+ "notice": "Sobald die Freigabe erteilt ist, wird Ihre Bestellung verarbeitet. Sie werden per E-Mail informiert.",
12
+ "approvers": "Freigabe durch: {names}"
13
+ },
14
+ "requisition": {
15
+ "title": "Bestellanforderung abgeschickt!",
16
+ "received": "Ihre Bestellanforderung {id} wurde in den Workflow übergeben.",
17
+ "notice": "Der nächste Bearbeiter wurde benachrichtigt. Den Status sehen Sie im Kundenkonto unter Bestellanforderungen."
18
+ },
19
+ "continueShopping": "Weiter einkaufen",
20
+ "thanks": "Vielen Dank!",
21
+ "nextSteps": "So geht es weiter",
22
+ "summaryTitle": "Ihre Positionen",
23
+ "viewOrder": "Bestellung ansehen",
24
+ "viewRequisition": "Anforderung ansehen",
25
+ "steps": {
26
+ "order": [
27
+ {
28
+ "title": "Bestellbestätigung",
29
+ "text": "Sie erhalten in wenigen Minuten eine Bestätigung mit allen Details per E-Mail."
30
+ },
31
+ {
32
+ "title": "Bearbeitung",
33
+ "text": "Wir prüfen Verfügbarkeiten und bereiten Ihre Sendung für den Versand vor."
34
+ },
35
+ {
36
+ "title": "Versand & Tracking",
37
+ "text": "Sobald Ihre Bestellung das Lager verlässt, erhalten Sie die Sendungsverfolgung."
38
+ }
39
+ ],
40
+ "approval": [
41
+ {
42
+ "title": "Freigabe",
43
+ "text": "Ihre Bestellung wartet auf die Freigabe durch die zuständigen Genehmiger."
44
+ },
45
+ {
46
+ "title": "Bearbeitung",
47
+ "text": "Nach erteilter Freigabe wird Ihre Bestellung automatisch verarbeitet."
48
+ },
49
+ {
50
+ "title": "Versand & Tracking",
51
+ "text": "Sobald Ihre Bestellung das Lager verlässt, erhalten Sie die Sendungsverfolgung."
52
+ }
53
+ ],
54
+ "requisition": [
55
+ {
56
+ "title": "Workflow",
57
+ "text": "Ihre Anforderung durchläuft jetzt die festgelegten Freigabestufen."
58
+ },
59
+ {
60
+ "title": "Bestellung",
61
+ "text": "Der zuständige Besteller löst die Bestellung aus oder meldet sich bei Rückfragen."
62
+ },
63
+ {
64
+ "title": "Status verfolgen",
65
+ "text": "Den aktuellen Stand sehen Sie jederzeit im Kundenkonto unter Bestellanforderungen."
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ "paymentMethods": {
71
+ "invoice": "Rechnung",
72
+ "po_number": "Bestellschein",
73
+ "cost_center": "Kostenstelle"
74
+ },
75
+ "onepage": {
76
+ "title": "Kasse",
77
+ "sections": {
78
+ "address": "Liefer- & Rechnungsadresse",
79
+ "delivery": "Lieferung",
80
+ "payment": "Zahlung",
81
+ "notes": "Bestellnotiz",
82
+ "summary": "Bestellübersicht",
83
+ "guestDetails": "Ihre Angaben",
84
+ "orderInfo": "Bestellinformationen"
85
+ },
86
+ "address": {
87
+ "shipping": "Lieferadresse",
88
+ "billing": "Rechnungsadresse",
89
+ "billingSameAsShipping": "Identisch mit Lieferadresse",
90
+ "differentBillingLabel": "Andere Rechnungsadresse verwenden",
91
+ "addNew": "Neue Adresse hinzufügen",
92
+ "save": "Adresse speichern",
93
+ "cancel": "Abbrechen",
94
+ "form": {
95
+ "companyName": "Firmenname",
96
+ "contactName": "Ansprechpartner",
97
+ "street": "Straße und Hausnummer",
98
+ "city": "Stadt",
99
+ "postalCode": "Postleitzahl",
100
+ "country": "Land"
101
+ },
102
+ "change": "Ändern",
103
+ "noAddress": "Keine Adresse ausgewählt",
104
+ "sameAsShipping": "Rechnungsadresse entspricht der Lieferadresse",
105
+ "sameAsShippingNote": "Entspricht der Lieferadresse",
106
+ "searchPlaceholder": "Nach Firma, Name, Straße oder Ort suchen …",
107
+ "count": "{count} Adresse | {count} Adressen",
108
+ "showingOf": "Die ersten {shown} von {total} Treffern — verfeinern Sie die Suche.",
109
+ "noMatches": "Keine Adresse gefunden.",
110
+ "saveError": "Adresse konnte nicht gespeichert werden."
111
+ },
112
+ "delivery": {
113
+ "method": "Liefermethode",
114
+ "businessDays": "Werktage",
115
+ "free": "Kostenlos",
116
+ "requestedDate": "Gewünschtes Lieferdatum",
117
+ "deliveryNote": "Lieferhinweis",
118
+ "deliveryNotePlaceholder": "Besondere Lieferanweisungen...",
119
+ "change": "Ändern",
120
+ "noMethod": "Keine Liefermethode ausgewählt",
121
+ "partialDelivery": "Teillieferung erlauben",
122
+ "partialDeliveryHint": "Verfügbare Positionen werden sofort versendet, der Rest folgt."
123
+ },
124
+ "payment": {
125
+ "method": "Zahlungsmethode",
126
+ "poNumber": "Bestellnummer",
127
+ "poNumberPlaceholder": "Bestellnummer eingeben...",
128
+ "costCenter": "Kostenstelle",
129
+ "change": "Ändern",
130
+ "noMethod": "Keine Zahlungsmethode ausgewählt",
131
+ "confirm": "Bestätigen",
132
+ "fee": "+ {fee} € Gebühr"
133
+ },
134
+ "notes": {
135
+ "orderNote": "Bestellnotiz",
136
+ "orderNotePlaceholder": "Zusätzliche Hinweise zu Ihrer Bestellung..."
137
+ },
138
+ "summary": {
139
+ "subtotal": "Zwischensumme",
140
+ "shipping": "Versand",
141
+ "total": "Gesamt",
142
+ "free": "Kostenlos",
143
+ "promoCode": "Aktionscode",
144
+ "promoCodePlaceholder": "Aktionscode",
145
+ "applyPromo": "Einlösen",
146
+ "placeOrder": "Jetzt bestellen",
147
+ "backToCart": "Zurück zum Warenkorb",
148
+ "termsText": "Ich akzeptiere die {link}",
149
+ "termsLink": "AGB und Datenschutzbestimmungen",
150
+ "submitRequisition": "Bestellanforderung absenden"
151
+ },
152
+ "errors": {
153
+ "shippingAddressRequired": "Bitte wählen Sie eine Lieferadresse aus.",
154
+ "billingAddressRequired": "Bitte wählen Sie eine Rechnungsadresse aus.",
155
+ "paymentMethodRequired": "Bitte wählen Sie eine Zahlungsmethode aus.",
156
+ "termsRequired": "Bitte akzeptieren Sie die AGB.",
157
+ "requestedDateInvalid": "Bitte geben Sie ein gültiges Datum ein.",
158
+ "submitError": "Bestellung fehlgeschlagen. Bitte versuchen Sie es erneut.",
159
+ "orderNumberRequired": "Bitte geben Sie Ihre Bestellnummer an.",
160
+ "requestedDatePast": "Der Wunschtermin darf nicht in der Vergangenheit liegen.",
161
+ "requestedDateTooFar": "Der Wunschtermin darf maximal {days} Tage in der Zukunft liegen.",
162
+ "requestedDateWeekend": "Bitte wählen Sie einen Werktag als Wunschtermin.",
163
+ "guestEmailInvalid": "Bitte geben Sie eine gültige E-Mail-Adresse an."
164
+ },
165
+ "gate": {
166
+ "title": "Zur Kasse",
167
+ "description": "Melden Sie sich an, um mit Ihren hinterlegten Adressen und Konditionen zu bestellen — oder fahren Sie als Gast fort.",
168
+ "guestTitle": "Als Gast bestellen",
169
+ "guestDescription": "Bestellen Sie ohne Konto. Ihre Angaben werden nur für diese Bestellung verwendet.",
170
+ "guestBusiness": "Gastbestellung Geschäftskunde",
171
+ "guestPrivate": "Gastbestellung Privatkunde"
172
+ },
173
+ "guest": {
174
+ "email": "E-Mail-Adresse",
175
+ "phone": "Telefon (optional)",
176
+ "companyName": "Firma",
177
+ "firstName": "Vorname",
178
+ "lastName": "Nachname",
179
+ "street": "Straße und Hausnummer",
180
+ "postalCode": "PLZ",
181
+ "city": "Ort",
182
+ "country": "Land",
183
+ "countries": {
184
+ "DE": "Deutschland",
185
+ "AT": "Österreich",
186
+ "CH": "Schweiz"
187
+ }
188
+ },
189
+ "orderInfo": {
190
+ "orderNumber": "Ihre Bestellnummer",
191
+ "orderNumberPlaceholder": "z. B. PO-2026-0042",
192
+ "quoteNumber": "Angebotsnummer",
193
+ "quoteNumberPlaceholder": "z. B. ANG-2026-017",
194
+ "noConfirmation": "Keine Bestellbestätigung senden",
195
+ "noConfirmationHint": "Für diese Bestellung wird keine Bestätigungs-E-Mail verschickt."
196
+ },
197
+ "workflow": {
198
+ "title": "Bestellanforderung im Workflow „{name}“",
199
+ "nextActors": "Nächste Bearbeiter: {names}"
200
+ }
201
+ },
202
+ "fields": {
203
+ "companyName": "Firmenname",
204
+ "vatId": "USt-IdNr. (optional)",
205
+ "contactName": "Ansprechpartner",
206
+ "street": "Straße und Hausnummer",
207
+ "city": "Stadt",
208
+ "postalCode": "Postleitzahl",
209
+ "country": "Land",
210
+ "billingAddressSameAsShipping": "Rechnungsadresse ist identisch mit Lieferadresse",
211
+ "billingAddress": "Rechnungsadresse",
212
+ "paymentMethod": "Zahlungsmethode",
213
+ "purchaseOrderNumber": "Bestellnummer (optional)",
214
+ "costCenter": "Kostenstelle (optional)",
215
+ "termsAccepted": "Ich akzeptiere die AGB und Datenschutzbestimmungen"
216
+ }
217
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "nav": {
3
+ "home": "Startseite",
4
+ "homeAriaLabel": "Zur Startseite",
5
+ "cartButton": "Warenkorb öffnen | Warenkorb öffnen, {count} Artikel | Warenkorb öffnen, {count} Artikel",
6
+ "darkModeToggle": "Dunkelmodus umschalten",
7
+ "switchTheme": "Design wechseln",
8
+ "products": "Produkte",
9
+ "spareParts": "Ersatzteile",
10
+ "services": "Services",
11
+ "knowledge": "Wissen",
12
+ "mainNavigation": "Hauptnavigation",
13
+ "backToShop": "Zurück zum Shop"
14
+ },
15
+ "summary": {
16
+ "subtotal": "Zwischensumme",
17
+ "tax": {
18
+ "incl": "inkl. MwSt.",
19
+ "excl": "Zzgl. MwSt.",
20
+ "rateLabel": "{label} ({percent})"
21
+ },
22
+ "total": "Gesamtbetrag"
23
+ },
24
+ "actions": {
25
+ "back": "Zurück",
26
+ "continue": "Weiter",
27
+ "edit": "Bearbeiten"
28
+ },
29
+ "requiredIndicator": "*",
30
+ "appName": "Cover",
31
+ "footer": {
32
+ "tagline": "B2B-Lösungen für moderne Unternehmen.",
33
+ "copyright": "© {year} Cover Corp — Alle Rechte vorbehalten."
34
+ },
35
+ "topbar": {
36
+ "freeShipping": "Versandkostenfrei ab 100 € Bestellwert",
37
+ "nextDayDelivery": "Bis 16:00 Uhr bestellt. Am nächsten Tag geliefert.",
38
+ "directOrder": "Direktbestellung",
39
+ "orderStatus": "Auftragsstatus",
40
+ "localeSelector": "Deutschland (Deutsch) in €",
41
+ "switchLocale": "Sprache und Region wählen",
42
+ "contact": "Kontakt",
43
+ "aboutUs": "Über uns",
44
+ "locations": "Niederlassungen",
45
+ "localePanel": {
46
+ "language": "Sprache",
47
+ "region": "Land",
48
+ "currency": "Währung",
49
+ "regionPlaceholder": "Land suchen …",
50
+ "hint": "Währung und Sortiment richten sich nach dem gewählten Land."
51
+ }
52
+ },
53
+ "header": {
54
+ "contact": "Kontakt aufnehmen",
55
+ "contactSub": "+49 721 123 456 78",
56
+ "projects": "Projekte",
57
+ "projectsSub": "Ihre Projekte verwalten",
58
+ "signIn": "Jetzt anmelden",
59
+ "signInSub": "oder Kunde werden",
60
+ "account": "Ihr Konto",
61
+ "accountSub": "Bestellungen & mehr",
62
+ "cart": "Warenkorb",
63
+ "cartPositions": "Keine Positionen | 1 Position | {count} Positionen",
64
+ "orderLists": "Bestelllisten",
65
+ "orderListsSub": "Gespeicherte Listen"
66
+ },
67
+ "table": {
68
+ "filterAll": "Alle",
69
+ "noResults": {
70
+ "title": "Keine Treffer",
71
+ "description": "Passen Sie Suche oder Filter an, um Ergebnisse zu sehen."
72
+ }
73
+ },
74
+ "formkit": {
75
+ "datepicker": {
76
+ "placeholder": "Datum wählen …",
77
+ "clear": "Zurücksetzen"
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "auth": {
3
+ "password": {
4
+ "strength": {
5
+ "enter": "Passwort eingeben",
6
+ "weak": "Schwaches Passwort",
7
+ "medium": "Mittleres Passwort",
8
+ "strong": "Starkes Passwort",
9
+ "mustContain": "Muss enthalten:",
10
+ "requirementMet": "Anforderung erfüllt",
11
+ "requirementNotMet": "Anforderung nicht erfüllt",
12
+ "requirements": {
13
+ "minLength": "Mindestens 8 Zeichen",
14
+ "number": "Mindestens 1 Zahl",
15
+ "lowercase": "Mindestens 1 Kleinbuchstabe",
16
+ "uppercase": "Mindestens 1 Großbuchstabe"
17
+ }
18
+ },
19
+ "show": "Passwort anzeigen",
20
+ "hide": "Passwort verbergen"
21
+ }
22
+ },
23
+ "error": {
24
+ "title": "Laden fehlgeschlagen",
25
+ "description": "Die Daten konnten nicht geladen werden."
26
+ },
27
+ "notFound": {
28
+ "title": "Seite nicht gefunden"
29
+ },
30
+ "actions": {
31
+ "tryAgain": "Erneut versuchen"
32
+ }
33
+ }
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,71 @@
1
+ {
2
+ "product": {
3
+ "sku": "SKU",
4
+ "description": "Beschreibung",
5
+ "specifications": "Technische Daten",
6
+ "pricing": {
7
+ "volumePricing": "Staffelpreise",
8
+ "minQuantity": "Mindestmenge",
9
+ "unitPrice": "Stückpreis",
10
+ "totalPrice": "Gesamtpreis",
11
+ "fromQuantity": "ab {quantity}",
12
+ "yourTier": "Ihr Preis",
13
+ "saving": "Ersparnis"
14
+ },
15
+ "stock": {
16
+ "available": "Auf Lager",
17
+ "unavailable": "Nicht verfügbar",
18
+ "unitsAvailable": "{count} Einheiten verfügbar",
19
+ "maxPerOrder": "Max. {max} pro Bestellung"
20
+ },
21
+ "price": {
22
+ "from": "ab",
23
+ "onRequest": "Preis auf Anfrage"
24
+ },
25
+ "actions": {
26
+ "info": "Info",
27
+ "order": "Bestellen",
28
+ "addToCart": "In den Warenkorb",
29
+ "addedToCart": "{quantity}× {name} zum Warenkorb hinzugefügt",
30
+ "maxQuantityReachedTitle": "Maximale Menge erreicht (bereits {count} im Warenkorb)",
31
+ "maxQuantityReachedDescription": "Sie können maximal {max} Einheiten dieses Produkts bestellen.",
32
+ "invalidQuantityTitle": "Ungültige Menge",
33
+ "invalidQuantityDescription": "Bitte geben Sie eine Menge von mindestens 1 ein."
34
+ },
35
+ "detail": {
36
+ "quantity": "Menge",
37
+ "sku": "Artikel-Nr.",
38
+ "copySku": "Artikelnummer kopieren",
39
+ "skuCopied": "Artikelnummer kopiert",
40
+ "priceNote": "pro Stück · zzgl. MwSt."
41
+ },
42
+ "list": {
43
+ "view": {
44
+ "list": "Listenansicht",
45
+ "grid": "Rasteransicht"
46
+ },
47
+ "sort": {
48
+ "featured": "Empfohlen",
49
+ "priceAsc": "Preis aufsteigend",
50
+ "priceDesc": "Preis absteigend",
51
+ "nameAsc": "Name aufsteigend"
52
+ },
53
+ "count": {
54
+ "single": "Artikel {total} von {total}",
55
+ "range": "{from} bis {to} von {total} Artikeln"
56
+ },
57
+ "pagination": {
58
+ "first": "Erste Seite",
59
+ "prev": "Vorherige Seite",
60
+ "next": "Nächste Seite",
61
+ "last": "Letzte Seite",
62
+ "page": "Seite {page}"
63
+ }
64
+ },
65
+ "incentives": {
66
+ "delivery": "Lieferung in 1–3 Werktagen",
67
+ "paymentTerms": "Kauf auf Rechnung — 30 Tage netto",
68
+ "volume": "Staffelpreise für Mengenbestellungen"
69
+ }
70
+ }
71
+ }