@open-mercato/core 0.9.1-develop.7474.1.51db10479d → 0.9.1-develop.7475.1.28ca93ed97

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 (597) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/catalog_price_history_entry/index.js +53 -0
  3. package/dist/generated/entities/catalog_price_history_entry/index.js.map +7 -0
  4. package/dist/generated/entities/customer_group_terms/index.js +2 -0
  5. package/dist/generated/entities/customer_group_terms/index.js.map +2 -2
  6. package/dist/generated/entities/ecommerce_store/index.js +33 -0
  7. package/dist/generated/entities/ecommerce_store/index.js.map +7 -0
  8. package/dist/generated/entities/ecommerce_store_channel_binding/index.js +29 -0
  9. package/dist/generated/entities/ecommerce_store_channel_binding/index.js.map +7 -0
  10. package/dist/generated/entities/ecommerce_store_domain_binding/index.js +23 -0
  11. package/dist/generated/entities/ecommerce_store_domain_binding/index.js.map +7 -0
  12. package/dist/generated/entities.ids.generated.js +8 -1
  13. package/dist/generated/entities.ids.generated.js.map +2 -2
  14. package/dist/generated/entity-fields-registry.js +72 -0
  15. package/dist/generated/entity-fields-registry.js.map +2 -2
  16. package/dist/helpers/integration/customerGroupsFixtures.js.map +2 -2
  17. package/dist/modules/catalog/acl.js +8 -1
  18. package/dist/modules/catalog/acl.js.map +2 -2
  19. package/dist/modules/catalog/api/config/omnibus/route.js +184 -0
  20. package/dist/modules/catalog/api/config/omnibus/route.js.map +7 -0
  21. package/dist/modules/catalog/api/prices/history/route.js +131 -0
  22. package/dist/modules/catalog/api/prices/history/route.js.map +7 -0
  23. package/dist/modules/catalog/api/prices/omnibus-preview/route.js +184 -0
  24. package/dist/modules/catalog/api/prices/omnibus-preview/route.js.map +7 -0
  25. package/dist/modules/catalog/api/products/route.js +54 -245
  26. package/dist/modules/catalog/api/products/route.js.map +3 -3
  27. package/dist/modules/catalog/api/tags/route.js +6 -0
  28. package/dist/modules/catalog/api/tags/route.js.map +2 -2
  29. package/dist/modules/catalog/backend/config/catalog/page.js +3 -1
  30. package/dist/modules/catalog/backend/config/catalog/page.js.map +2 -2
  31. package/dist/modules/catalog/cli.js +80 -2
  32. package/dist/modules/catalog/cli.js.map +2 -2
  33. package/dist/modules/catalog/commands/categories.js +51 -2
  34. package/dist/modules/catalog/commands/categories.js.map +2 -2
  35. package/dist/modules/catalog/commands/prices.js +43 -1
  36. package/dist/modules/catalog/commands/prices.js.map +2 -2
  37. package/dist/modules/catalog/commands/products.js +71 -0
  38. package/dist/modules/catalog/commands/products.js.map +2 -2
  39. package/dist/modules/catalog/commands/variants.js +7 -0
  40. package/dist/modules/catalog/commands/variants.js.map +2 -2
  41. package/dist/modules/catalog/components/OmnibusSettings.js +703 -0
  42. package/dist/modules/catalog/components/OmnibusSettings.js.map +7 -0
  43. package/dist/modules/catalog/components/PriceEditorOmnibusRow.js +152 -0
  44. package/dist/modules/catalog/components/PriceEditorOmnibusRow.js.map +7 -0
  45. package/dist/modules/catalog/components/lookupSources.js +31 -0
  46. package/dist/modules/catalog/components/lookupSources.js.map +7 -0
  47. package/dist/modules/catalog/components/prices/PriceScopeSelectors.js +8 -2
  48. package/dist/modules/catalog/components/prices/PriceScopeSelectors.js.map +2 -2
  49. package/dist/modules/catalog/components/products/VariantBuilder.js +11 -1
  50. package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
  51. package/dist/modules/catalog/data/entities.js +122 -1
  52. package/dist/modules/catalog/data/entities.js.map +2 -2
  53. package/dist/modules/catalog/data/validators.js +78 -0
  54. package/dist/modules/catalog/data/validators.js.map +2 -2
  55. package/dist/modules/catalog/di.js +18 -0
  56. package/dist/modules/catalog/di.js.map +2 -2
  57. package/dist/modules/catalog/lib/omnibus.js +285 -0
  58. package/dist/modules/catalog/lib/omnibus.js.map +7 -0
  59. package/dist/modules/catalog/lib/omnibusBackfill.js +146 -0
  60. package/dist/modules/catalog/lib/omnibusBackfill.js.map +7 -0
  61. package/dist/modules/catalog/lib/omnibusCache.js +89 -0
  62. package/dist/modules/catalog/lib/omnibusCache.js.map +7 -0
  63. package/dist/modules/catalog/lib/omnibusConfig.js +64 -0
  64. package/dist/modules/catalog/lib/omnibusConfig.js.map +7 -0
  65. package/dist/modules/catalog/lib/omnibusHistoryQueries.js +191 -0
  66. package/dist/modules/catalog/lib/omnibusHistoryQueries.js.map +7 -0
  67. package/dist/modules/catalog/lib/omnibusPresentedEntry.js +73 -0
  68. package/dist/modules/catalog/lib/omnibusPresentedEntry.js.map +7 -0
  69. package/dist/modules/catalog/lib/omnibusProductListEnrichment.js +94 -0
  70. package/dist/modules/catalog/lib/omnibusProductListEnrichment.js.map +7 -0
  71. package/dist/modules/catalog/lib/omnibusTypes.js +115 -0
  72. package/dist/modules/catalog/lib/omnibusTypes.js.map +7 -0
  73. package/dist/modules/catalog/lib/optionSchemaTranslations.js +55 -0
  74. package/dist/modules/catalog/lib/optionSchemaTranslations.js.map +7 -0
  75. package/dist/modules/catalog/lib/priceHistoryQuery.js +103 -0
  76. package/dist/modules/catalog/lib/priceHistoryQuery.js.map +7 -0
  77. package/dist/modules/catalog/lib/pricing.js +26 -2
  78. package/dist/modules/catalog/lib/pricing.js.map +2 -2
  79. package/dist/modules/catalog/lib/productFilters.js +273 -0
  80. package/dist/modules/catalog/lib/productFilters.js.map +7 -0
  81. package/dist/modules/catalog/lib/productScopeKeys.js +105 -0
  82. package/dist/modules/catalog/lib/productScopeKeys.js.map +7 -0
  83. package/dist/modules/catalog/lib/productScopeReindex.js +73 -0
  84. package/dist/modules/catalog/lib/productScopeReindex.js.map +7 -0
  85. package/dist/modules/catalog/migrations/Migration20261005105352_catalog.js +39 -0
  86. package/dist/modules/catalog/migrations/Migration20261005105352_catalog.js.map +7 -0
  87. package/dist/modules/catalog/migrations/Migration20261005150824_catalog.js +39 -0
  88. package/dist/modules/catalog/migrations/Migration20261005150824_catalog.js.map +7 -0
  89. package/dist/modules/catalog/services/catalogOmnibusService.js +480 -0
  90. package/dist/modules/catalog/services/catalogOmnibusService.js.map +7 -0
  91. package/dist/modules/catalog/setup.js +3 -1
  92. package/dist/modules/catalog/setup.js.map +2 -2
  93. package/dist/modules/catalog/subscribers/product-scope-keys-category-deleted.js +16 -0
  94. package/dist/modules/catalog/subscribers/product-scope-keys-category-deleted.js.map +7 -0
  95. package/dist/modules/catalog/subscribers/product-scope-keys-category-updated.js +17 -0
  96. package/dist/modules/catalog/subscribers/product-scope-keys-category-updated.js.map +7 -0
  97. package/dist/modules/catalog/translations.js +10 -0
  98. package/dist/modules/catalog/translations.js.map +2 -2
  99. package/dist/modules/configs/lib/upgrade-actions.js +28 -0
  100. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  101. package/dist/modules/customer_groups/api/customer-groups/[id]/terms/route.js +5 -0
  102. package/dist/modules/customer_groups/api/customer-groups/[id]/terms/route.js.map +2 -2
  103. package/dist/modules/customer_groups/components/CustomerGroupTermsSection.js +111 -3
  104. package/dist/modules/customer_groups/components/CustomerGroupTermsSection.js.map +2 -2
  105. package/dist/modules/customer_groups/components/customerGroupAssortmentScope.js +43 -0
  106. package/dist/modules/customer_groups/components/customerGroupAssortmentScope.js.map +7 -0
  107. package/dist/modules/customer_groups/data/entities.js +3 -0
  108. package/dist/modules/customer_groups/data/entities.js.map +2 -2
  109. package/dist/modules/customer_groups/data/validators.js +9 -0
  110. package/dist/modules/customer_groups/data/validators.js.map +2 -2
  111. package/dist/modules/customer_groups/migrations/Migration20261005110250_customer_groups.js +17 -0
  112. package/dist/modules/customer_groups/migrations/Migration20261005110250_customer_groups.js.map +7 -0
  113. package/dist/modules/customer_groups/services/customerGroupsService.js +62 -15
  114. package/dist/modules/customer_groups/services/customerGroupsService.js.map +2 -2
  115. package/dist/modules/ecommerce/acl.js +13 -0
  116. package/dist/modules/ecommerce/acl.js.map +7 -0
  117. package/dist/modules/ecommerce/api/domain-mappings/route.js +72 -0
  118. package/dist/modules/ecommerce/api/domain-mappings/route.js.map +7 -0
  119. package/dist/modules/ecommerce/api/openapi.js +27 -0
  120. package/dist/modules/ecommerce/api/openapi.js.map +7 -0
  121. package/dist/modules/ecommerce/api/store-channel-bindings/[id]/assortment-count/route.js +109 -0
  122. package/dist/modules/ecommerce/api/store-channel-bindings/[id]/assortment-count/route.js.map +7 -0
  123. package/dist/modules/ecommerce/api/store-channel-bindings/crud.js +265 -0
  124. package/dist/modules/ecommerce/api/store-channel-bindings/crud.js.map +7 -0
  125. package/dist/modules/ecommerce/api/store-channel-bindings/route.js +67 -0
  126. package/dist/modules/ecommerce/api/store-channel-bindings/route.js.map +7 -0
  127. package/dist/modules/ecommerce/api/store-domain-bindings/crud.js +296 -0
  128. package/dist/modules/ecommerce/api/store-domain-bindings/crud.js.map +7 -0
  129. package/dist/modules/ecommerce/api/store-domain-bindings/route.js +73 -0
  130. package/dist/modules/ecommerce/api/store-domain-bindings/route.js.map +7 -0
  131. package/dist/modules/ecommerce/api/storefront/categories/[slug]/route.js +87 -0
  132. package/dist/modules/ecommerce/api/storefront/categories/[slug]/route.js.map +7 -0
  133. package/dist/modules/ecommerce/api/storefront/categories/openapiSchemas.js +50 -0
  134. package/dist/modules/ecommerce/api/storefront/categories/openapiSchemas.js.map +7 -0
  135. package/dist/modules/ecommerce/api/storefront/categories/route.js +75 -0
  136. package/dist/modules/ecommerce/api/storefront/categories/route.js.map +7 -0
  137. package/dist/modules/ecommerce/api/storefront/context/route.js +163 -0
  138. package/dist/modules/ecommerce/api/storefront/context/route.js.map +7 -0
  139. package/dist/modules/ecommerce/api/storefront/products/[idOrHandle]/route.js +87 -0
  140. package/dist/modules/ecommerce/api/storefront/products/[idOrHandle]/route.js.map +7 -0
  141. package/dist/modules/ecommerce/api/storefront/products/openapiSchemas.js +177 -0
  142. package/dist/modules/ecommerce/api/storefront/products/openapiSchemas.js.map +7 -0
  143. package/dist/modules/ecommerce/api/storefront/products/route.js +78 -0
  144. package/dist/modules/ecommerce/api/storefront/products/route.js.map +7 -0
  145. package/dist/modules/ecommerce/api/storefront/search/suggest/openapiSchemas.js +25 -0
  146. package/dist/modules/ecommerce/api/storefront/search/suggest/openapiSchemas.js.map +7 -0
  147. package/dist/modules/ecommerce/api/storefront/search/suggest/route.js +75 -0
  148. package/dist/modules/ecommerce/api/storefront/search/suggest/route.js.map +7 -0
  149. package/dist/modules/ecommerce/api/storefront/storefrontRouteSupport.js +58 -0
  150. package/dist/modules/ecommerce/api/storefront/storefrontRouteSupport.js.map +7 -0
  151. package/dist/modules/ecommerce/api/stores/[id]/branding/route.js +183 -0
  152. package/dist/modules/ecommerce/api/stores/[id]/branding/route.js.map +7 -0
  153. package/dist/modules/ecommerce/api/stores/[id]/preview-branding/route.js +92 -0
  154. package/dist/modules/ecommerce/api/stores/[id]/preview-branding/route.js.map +7 -0
  155. package/dist/modules/ecommerce/api/stores/crud.js +401 -0
  156. package/dist/modules/ecommerce/api/stores/crud.js.map +7 -0
  157. package/dist/modules/ecommerce/api/stores/route.js +64 -0
  158. package/dist/modules/ecommerce/api/stores/route.js.map +7 -0
  159. package/dist/modules/ecommerce/backend/config/ecommerce/[id]/page.js +9 -0
  160. package/dist/modules/ecommerce/backend/config/ecommerce/[id]/page.js.map +7 -0
  161. package/dist/modules/ecommerce/backend/config/ecommerce/[id]/page.meta.js +16 -0
  162. package/dist/modules/ecommerce/backend/config/ecommerce/[id]/page.meta.js.map +7 -0
  163. package/dist/modules/ecommerce/backend/config/ecommerce/page.js +9 -0
  164. package/dist/modules/ecommerce/backend/config/ecommerce/page.js.map +7 -0
  165. package/dist/modules/ecommerce/backend/config/ecommerce/page.meta.js +16 -0
  166. package/dist/modules/ecommerce/backend/config/ecommerce/page.meta.js.map +7 -0
  167. package/dist/modules/ecommerce/commands/stores.js +110 -0
  168. package/dist/modules/ecommerce/commands/stores.js.map +7 -0
  169. package/dist/modules/ecommerce/components/ChannelAssortmentCount.js +90 -0
  170. package/dist/modules/ecommerce/components/ChannelAssortmentCount.js.map +7 -0
  171. package/dist/modules/ecommerce/components/ChannelBindingFormSections.js +33 -0
  172. package/dist/modules/ecommerce/components/ChannelBindingFormSections.js.map +7 -0
  173. package/dist/modules/ecommerce/components/ChannelLookupPicker.js +11 -0
  174. package/dist/modules/ecommerce/components/ChannelLookupPicker.js.map +7 -0
  175. package/dist/modules/ecommerce/components/DomainStatusWarning.js +24 -0
  176. package/dist/modules/ecommerce/components/DomainStatusWarning.js.map +7 -0
  177. package/dist/modules/ecommerce/components/StoreAvailabilityDefaultsSection.js +190 -0
  178. package/dist/modules/ecommerce/components/StoreAvailabilityDefaultsSection.js.map +7 -0
  179. package/dist/modules/ecommerce/components/StoreBrandingControls.js +67 -0
  180. package/dist/modules/ecommerce/components/StoreBrandingControls.js.map +7 -0
  181. package/dist/modules/ecommerce/components/StoreBrandingPreview.js +69 -0
  182. package/dist/modules/ecommerce/components/StoreBrandingPreview.js.map +7 -0
  183. package/dist/modules/ecommerce/components/StoreBrandingTab.js +218 -0
  184. package/dist/modules/ecommerce/components/StoreBrandingTab.js.map +7 -0
  185. package/dist/modules/ecommerce/components/StoreChannelBindingDialog.js +270 -0
  186. package/dist/modules/ecommerce/components/StoreChannelBindingDialog.js.map +7 -0
  187. package/dist/modules/ecommerce/components/StoreChannelsTab.js +313 -0
  188. package/dist/modules/ecommerce/components/StoreChannelsTab.js.map +7 -0
  189. package/dist/modules/ecommerce/components/StoreCreateDialog.js +164 -0
  190. package/dist/modules/ecommerce/components/StoreCreateDialog.js.map +7 -0
  191. package/dist/modules/ecommerce/components/StoreDomainBindingDialog.js +162 -0
  192. package/dist/modules/ecommerce/components/StoreDomainBindingDialog.js.map +7 -0
  193. package/dist/modules/ecommerce/components/StoreDomainsTab.js +357 -0
  194. package/dist/modules/ecommerce/components/StoreDomainsTab.js.map +7 -0
  195. package/dist/modules/ecommerce/components/StoreEditPage.js +155 -0
  196. package/dist/modules/ecommerce/components/StoreEditPage.js.map +7 -0
  197. package/dist/modules/ecommerce/components/StoreGeneralTab.js +167 -0
  198. package/dist/modules/ecommerce/components/StoreGeneralTab.js.map +7 -0
  199. package/dist/modules/ecommerce/components/StoreListPage.js +290 -0
  200. package/dist/modules/ecommerce/components/StoreListPage.js.map +7 -0
  201. package/dist/modules/ecommerce/components/StoreSeoTab.js +132 -0
  202. package/dist/modules/ecommerce/components/StoreSeoTab.js.map +7 -0
  203. package/dist/modules/ecommerce/components/StoreStatusBadge.js +20 -0
  204. package/dist/modules/ecommerce/components/StoreStatusBadge.js.map +7 -0
  205. package/dist/modules/ecommerce/components/channelLookups.js +28 -0
  206. package/dist/modules/ecommerce/components/channelLookups.js.map +7 -0
  207. package/dist/modules/ecommerce/components/storeAdmin.js +41 -0
  208. package/dist/modules/ecommerce/components/storeAdmin.js.map +7 -0
  209. package/dist/modules/ecommerce/components/storeBrandingForm.js +197 -0
  210. package/dist/modules/ecommerce/components/storeBrandingForm.js.map +7 -0
  211. package/dist/modules/ecommerce/components/storeChannels.js +140 -0
  212. package/dist/modules/ecommerce/components/storeChannels.js.map +7 -0
  213. package/dist/modules/ecommerce/components/storeDomains.js +167 -0
  214. package/dist/modules/ecommerce/components/storeDomains.js.map +7 -0
  215. package/dist/modules/ecommerce/components/storeEditTabs.js +62 -0
  216. package/dist/modules/ecommerce/components/storeEditTabs.js.map +7 -0
  217. package/dist/modules/ecommerce/components/storeGeneral.js +95 -0
  218. package/dist/modules/ecommerce/components/storeGeneral.js.map +7 -0
  219. package/dist/modules/ecommerce/components/storeSeo.js +69 -0
  220. package/dist/modules/ecommerce/components/storeSeo.js.map +7 -0
  221. package/dist/modules/ecommerce/components/useChannelAssortmentCount.js +45 -0
  222. package/dist/modules/ecommerce/components/useChannelAssortmentCount.js.map +7 -0
  223. package/dist/modules/ecommerce/components/useStoreAccess.js +28 -0
  224. package/dist/modules/ecommerce/components/useStoreAccess.js.map +7 -0
  225. package/dist/modules/ecommerce/data/enrichers.js +157 -0
  226. package/dist/modules/ecommerce/data/enrichers.js.map +7 -0
  227. package/dist/modules/ecommerce/data/entities.js +197 -0
  228. package/dist/modules/ecommerce/data/entities.js.map +7 -0
  229. package/dist/modules/ecommerce/data/validators.js +406 -0
  230. package/dist/modules/ecommerce/data/validators.js.map +7 -0
  231. package/dist/modules/ecommerce/di.js +11 -0
  232. package/dist/modules/ecommerce/di.js.map +7 -0
  233. package/dist/modules/ecommerce/events.js +27 -0
  234. package/dist/modules/ecommerce/events.js.map +7 -0
  235. package/dist/modules/ecommerce/index.js +16 -0
  236. package/dist/modules/ecommerce/index.js.map +7 -0
  237. package/dist/modules/ecommerce/lib/assortmentCount.js +112 -0
  238. package/dist/modules/ecommerce/lib/assortmentCount.js.map +7 -0
  239. package/dist/modules/ecommerce/lib/brandingStyles.js +184 -0
  240. package/dist/modules/ecommerce/lib/brandingStyles.js.map +7 -0
  241. package/dist/modules/ecommerce/lib/buyerContext.js +284 -0
  242. package/dist/modules/ecommerce/lib/buyerContext.js.map +7 -0
  243. package/dist/modules/ecommerce/lib/cacheInvalidation.js +186 -0
  244. package/dist/modules/ecommerce/lib/cacheInvalidation.js.map +7 -0
  245. package/dist/modules/ecommerce/lib/cacheKeys.js +236 -0
  246. package/dist/modules/ecommerce/lib/cacheKeys.js.map +7 -0
  247. package/dist/modules/ecommerce/lib/createConflictRecheck.js +29 -0
  248. package/dist/modules/ecommerce/lib/createConflictRecheck.js.map +7 -0
  249. package/dist/modules/ecommerce/lib/crudEvents.js +94 -0
  250. package/dist/modules/ecommerce/lib/crudEvents.js.map +7 -0
  251. package/dist/modules/ecommerce/lib/crudSupport.js +64 -0
  252. package/dist/modules/ecommerce/lib/crudSupport.js.map +7 -0
  253. package/dist/modules/ecommerce/lib/domainBindingRebind.js +99 -0
  254. package/dist/modules/ecommerce/lib/domainBindingRebind.js.map +7 -0
  255. package/dist/modules/ecommerce/lib/domainMappingSummaries.js +39 -0
  256. package/dist/modules/ecommerce/lib/domainMappingSummaries.js.map +7 -0
  257. package/dist/modules/ecommerce/lib/exclusiveFlag.js +57 -0
  258. package/dist/modules/ecommerce/lib/exclusiveFlag.js.map +7 -0
  259. package/dist/modules/ecommerce/lib/references.js +70 -0
  260. package/dist/modules/ecommerce/lib/references.js.map +7 -0
  261. package/dist/modules/ecommerce/lib/seedDraftStore.js +99 -0
  262. package/dist/modules/ecommerce/lib/seedDraftStore.js.map +7 -0
  263. package/dist/modules/ecommerce/lib/storeBindingCascade.js +109 -0
  264. package/dist/modules/ecommerce/lib/storeBindingCascade.js.map +7 -0
  265. package/dist/modules/ecommerce/lib/storeBranding.js +40 -0
  266. package/dist/modules/ecommerce/lib/storeBranding.js.map +7 -0
  267. package/dist/modules/ecommerce/lib/storeBrandingRoute.js +76 -0
  268. package/dist/modules/ecommerce/lib/storeBrandingRoute.js.map +7 -0
  269. package/dist/modules/ecommerce/lib/storeContext.js +393 -0
  270. package/dist/modules/ecommerce/lib/storeContext.js.map +7 -0
  271. package/dist/modules/ecommerce/lib/storeContextService.js +43 -0
  272. package/dist/modules/ecommerce/lib/storeContextService.js.map +7 -0
  273. package/dist/modules/ecommerce/lib/storeLocale.js +60 -0
  274. package/dist/modules/ecommerce/lib/storeLocale.js.map +7 -0
  275. package/dist/modules/ecommerce/lib/storeNotifications.js +41 -0
  276. package/dist/modules/ecommerce/lib/storeNotifications.js.map +7 -0
  277. package/dist/modules/ecommerce/lib/storefrontCatalogSupport.js +248 -0
  278. package/dist/modules/ecommerce/lib/storefrontCatalogSupport.js.map +7 -0
  279. package/dist/modules/ecommerce/lib/storefrontCategories.js +241 -0
  280. package/dist/modules/ecommerce/lib/storefrontCategories.js.map +7 -0
  281. package/dist/modules/ecommerce/lib/storefrontCategoryCache.js +71 -0
  282. package/dist/modules/ecommerce/lib/storefrontCategoryCache.js.map +7 -0
  283. package/dist/modules/ecommerce/lib/storefrontDetail.js +447 -0
  284. package/dist/modules/ecommerce/lib/storefrontDetail.js.map +7 -0
  285. package/dist/modules/ecommerce/lib/storefrontFacets.js +441 -0
  286. package/dist/modules/ecommerce/lib/storefrontFacets.js.map +7 -0
  287. package/dist/modules/ecommerce/lib/storefrontOptionFilter.js +15 -0
  288. package/dist/modules/ecommerce/lib/storefrontOptionFilter.js.map +7 -0
  289. package/dist/modules/ecommerce/lib/storefrontPricing.js +393 -0
  290. package/dist/modules/ecommerce/lib/storefrontPricing.js.map +7 -0
  291. package/dist/modules/ecommerce/lib/storefrontProductCache.js +90 -0
  292. package/dist/modules/ecommerce/lib/storefrontProductCache.js.map +7 -0
  293. package/dist/modules/ecommerce/lib/storefrontProductScope.js +107 -0
  294. package/dist/modules/ecommerce/lib/storefrontProductScope.js.map +7 -0
  295. package/dist/modules/ecommerce/lib/storefrontProducts.js +670 -0
  296. package/dist/modules/ecommerce/lib/storefrontProducts.js.map +7 -0
  297. package/dist/modules/ecommerce/lib/storefrontQuery.js +156 -0
  298. package/dist/modules/ecommerce/lib/storefrontQuery.js.map +7 -0
  299. package/dist/modules/ecommerce/lib/storefrontRateLimit.js +99 -0
  300. package/dist/modules/ecommerce/lib/storefrontRateLimit.js.map +7 -0
  301. package/dist/modules/ecommerce/lib/storefrontSearch.js +303 -0
  302. package/dist/modules/ecommerce/lib/storefrontSearch.js.map +7 -0
  303. package/dist/modules/ecommerce/lib/storefrontSearchCache.js +35 -0
  304. package/dist/modules/ecommerce/lib/storefrontSearchCache.js.map +7 -0
  305. package/dist/modules/ecommerce/lib/subscriberSupport.js +33 -0
  306. package/dist/modules/ecommerce/lib/subscriberSupport.js.map +7 -0
  307. package/dist/modules/ecommerce/lib/types.js +1 -0
  308. package/dist/modules/ecommerce/lib/types.js.map +7 -0
  309. package/dist/modules/ecommerce/migrations/Migration20261005113233_ecommerce.js +32 -0
  310. package/dist/modules/ecommerce/migrations/Migration20261005113233_ecommerce.js.map +7 -0
  311. package/dist/modules/ecommerce/migrations/Migration20261006112733_ecommerce.js +17 -0
  312. package/dist/modules/ecommerce/migrations/Migration20261006112733_ecommerce.js.map +7 -0
  313. package/dist/modules/ecommerce/notifications.client.js +47 -0
  314. package/dist/modules/ecommerce/notifications.client.js.map +7 -0
  315. package/dist/modules/ecommerce/notifications.js +48 -0
  316. package/dist/modules/ecommerce/notifications.js.map +7 -0
  317. package/dist/modules/ecommerce/search.js +83 -0
  318. package/dist/modules/ecommerce/search.js.map +7 -0
  319. package/dist/modules/ecommerce/setup.js +17 -0
  320. package/dist/modules/ecommerce/setup.js.map +7 -0
  321. package/dist/modules/ecommerce/subscribers/assortment-empty-notifications.js +14 -0
  322. package/dist/modules/ecommerce/subscribers/assortment-empty-notifications.js.map +7 -0
  323. package/dist/modules/ecommerce/subscribers/availability-policy-cache-invalidation.js +14 -0
  324. package/dist/modules/ecommerce/subscribers/availability-policy-cache-invalidation.js.map +7 -0
  325. package/dist/modules/ecommerce/subscribers/catalog-category-cache-invalidation.js +14 -0
  326. package/dist/modules/ecommerce/subscribers/catalog-category-cache-invalidation.js.map +7 -0
  327. package/dist/modules/ecommerce/subscribers/catalog-price-cache-invalidation.js +14 -0
  328. package/dist/modules/ecommerce/subscribers/catalog-price-cache-invalidation.js.map +7 -0
  329. package/dist/modules/ecommerce/subscribers/catalog-product-cache-invalidation.js +14 -0
  330. package/dist/modules/ecommerce/subscribers/catalog-product-cache-invalidation.js.map +7 -0
  331. package/dist/modules/ecommerce/subscribers/catalog-variant-cache-invalidation.js +14 -0
  332. package/dist/modules/ecommerce/subscribers/catalog-variant-cache-invalidation.js.map +7 -0
  333. package/dist/modules/ecommerce/subscribers/customer-group-cache-invalidation.js +14 -0
  334. package/dist/modules/ecommerce/subscribers/customer-group-cache-invalidation.js.map +7 -0
  335. package/dist/modules/ecommerce/subscribers/customer-group-membership-cache-invalidation.js +14 -0
  336. package/dist/modules/ecommerce/subscribers/customer-group-membership-cache-invalidation.js.map +7 -0
  337. package/dist/modules/ecommerce/subscribers/customer-group-terms-cache-invalidation.js +14 -0
  338. package/dist/modules/ecommerce/subscribers/customer-group-terms-cache-invalidation.js.map +7 -0
  339. package/dist/modules/ecommerce/subscribers/customer-user-deleted-cache-invalidation.js +14 -0
  340. package/dist/modules/ecommerce/subscribers/customer-user-deleted-cache-invalidation.js.map +7 -0
  341. package/dist/modules/ecommerce/subscribers/customer-user-updated-cache-invalidation.js +14 -0
  342. package/dist/modules/ecommerce/subscribers/customer-user-updated-cache-invalidation.js.map +7 -0
  343. package/dist/modules/ecommerce/subscribers/domain-binding-rebind.js +16 -0
  344. package/dist/modules/ecommerce/subscribers/domain-binding-rebind.js.map +7 -0
  345. package/dist/modules/ecommerce/subscribers/domain-mapping-cache-invalidation.js +14 -0
  346. package/dist/modules/ecommerce/subscribers/domain-mapping-cache-invalidation.js.map +7 -0
  347. package/dist/modules/ecommerce/subscribers/store-cache-invalidation.js +14 -0
  348. package/dist/modules/ecommerce/subscribers/store-cache-invalidation.js.map +7 -0
  349. package/dist/modules/ecommerce/subscribers/store-channel-binding-cache-invalidation.js +14 -0
  350. package/dist/modules/ecommerce/subscribers/store-channel-binding-cache-invalidation.js.map +7 -0
  351. package/dist/modules/ecommerce/subscribers/store-domain-binding-cache-invalidation.js +14 -0
  352. package/dist/modules/ecommerce/subscribers/store-domain-binding-cache-invalidation.js.map +7 -0
  353. package/dist/modules/ecommerce/subscribers/store-notifications.js +14 -0
  354. package/dist/modules/ecommerce/subscribers/store-notifications.js.map +7 -0
  355. package/dist/modules/query_index/lib/batch.js +23 -9
  356. package/dist/modules/query_index/lib/batch.js.map +2 -2
  357. package/dist/modules/query_index/lib/doc-enrichers.js +212 -0
  358. package/dist/modules/query_index/lib/doc-enrichers.js.map +7 -0
  359. package/dist/modules/query_index/lib/document.js +2 -0
  360. package/dist/modules/query_index/lib/document.js.map +2 -2
  361. package/dist/modules/query_index/lib/engine.js +68 -1
  362. package/dist/modules/query_index/lib/engine.js.map +2 -2
  363. package/dist/modules/query_index/lib/indexer.js +7 -0
  364. package/dist/modules/query_index/lib/indexer.js.map +2 -2
  365. package/dist/modules/query_index/lib/search-tokens.js +2 -0
  366. package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
  367. package/dist/modules/query_index/migrations/Migration20261005201500_query_index.js +17 -0
  368. package/dist/modules/query_index/migrations/Migration20261005201500_query_index.js.map +7 -0
  369. package/dist/modules/translations/components/TranslationManager.js +3 -3
  370. package/dist/modules/translations/components/TranslationManager.js.map +2 -2
  371. package/dist/modules/translations/data/validators.js +1 -1
  372. package/dist/modules/translations/data/validators.js.map +1 -1
  373. package/dist/modules/translations/lib/batch.js +21 -1
  374. package/dist/modules/translations/lib/batch.js.map +2 -2
  375. package/dist/modules/translations/lib/helpers.js +3 -0
  376. package/dist/modules/translations/lib/helpers.js.map +2 -2
  377. package/dist/modules/translations/lib/resolve-field-list.js +14 -2
  378. package/dist/modules/translations/lib/resolve-field-list.js.map +2 -2
  379. package/generated/entities/catalog_price_history_entry/index.ts +25 -0
  380. package/generated/entities/customer_group_terms/index.ts +1 -0
  381. package/generated/entities/ecommerce_store/index.ts +15 -0
  382. package/generated/entities/ecommerce_store_channel_binding/index.ts +13 -0
  383. package/generated/entities/ecommerce_store_domain_binding/index.ts +10 -0
  384. package/generated/entities.ids.generated.ts +8 -1
  385. package/generated/entity-fields-registry.ts +72 -0
  386. package/package.json +7 -7
  387. package/src/helpers/integration/customerGroupsFixtures.ts +2 -0
  388. package/src/modules/auth/i18n/de.json +8 -0
  389. package/src/modules/auth/i18n/en.json +8 -0
  390. package/src/modules/auth/i18n/es.json +8 -0
  391. package/src/modules/auth/i18n/ko.json +8 -0
  392. package/src/modules/auth/i18n/pl.json +8 -0
  393. package/src/modules/catalog/AGENTS.md +5 -2
  394. package/src/modules/catalog/acl.ts +7 -0
  395. package/src/modules/catalog/api/config/omnibus/route.ts +204 -0
  396. package/src/modules/catalog/api/prices/history/route.ts +139 -0
  397. package/src/modules/catalog/api/prices/omnibus-preview/route.ts +202 -0
  398. package/src/modules/catalog/api/products/route.ts +53 -308
  399. package/src/modules/catalog/api/tags/route.ts +6 -0
  400. package/src/modules/catalog/backend/config/catalog/page.tsx +2 -0
  401. package/src/modules/catalog/cli.ts +84 -1
  402. package/src/modules/catalog/commands/categories.ts +54 -2
  403. package/src/modules/catalog/commands/prices.ts +43 -1
  404. package/src/modules/catalog/commands/products.ts +84 -1
  405. package/src/modules/catalog/commands/variants.ts +7 -0
  406. package/src/modules/catalog/components/OmnibusSettings.tsx +832 -0
  407. package/src/modules/catalog/components/PriceEditorOmnibusRow.tsx +219 -0
  408. package/src/modules/catalog/components/lookupSources.ts +29 -0
  409. package/src/modules/catalog/components/prices/PriceScopeSelectors.tsx +9 -0
  410. package/src/modules/catalog/components/products/VariantBuilder.tsx +9 -0
  411. package/src/modules/catalog/data/entities.ts +123 -1
  412. package/src/modules/catalog/data/validators.ts +118 -0
  413. package/src/modules/catalog/di.ts +23 -0
  414. package/src/modules/catalog/i18n/de.json +77 -0
  415. package/src/modules/catalog/i18n/en.json +77 -0
  416. package/src/modules/catalog/i18n/es.json +77 -0
  417. package/src/modules/catalog/i18n/ko.json +77 -0
  418. package/src/modules/catalog/i18n/pl.json +77 -0
  419. package/src/modules/catalog/lib/omnibus.ts +406 -0
  420. package/src/modules/catalog/lib/omnibusBackfill.ts +198 -0
  421. package/src/modules/catalog/lib/omnibusCache.ts +111 -0
  422. package/src/modules/catalog/lib/omnibusConfig.ts +73 -0
  423. package/src/modules/catalog/lib/omnibusHistoryQueries.ts +248 -0
  424. package/src/modules/catalog/lib/omnibusPresentedEntry.ts +76 -0
  425. package/src/modules/catalog/lib/omnibusProductListEnrichment.ts +125 -0
  426. package/src/modules/catalog/lib/omnibusTypes.ts +202 -0
  427. package/src/modules/catalog/lib/optionSchemaTranslations.ts +55 -0
  428. package/src/modules/catalog/lib/priceHistoryQuery.ts +155 -0
  429. package/src/modules/catalog/lib/pricing.ts +42 -4
  430. package/src/modules/catalog/lib/productFilters.ts +349 -0
  431. package/src/modules/catalog/lib/productScopeKeys.ts +162 -0
  432. package/src/modules/catalog/lib/productScopeReindex.ts +139 -0
  433. package/src/modules/catalog/migrations/.snapshot-open-mercato.json +572 -0
  434. package/src/modules/catalog/migrations/Migration20261005105352_catalog.ts +39 -0
  435. package/src/modules/catalog/migrations/Migration20261005150824_catalog.ts +39 -0
  436. package/src/modules/catalog/services/catalogOmnibusService.ts +642 -0
  437. package/src/modules/catalog/setup.ts +2 -0
  438. package/src/modules/catalog/subscribers/product-scope-keys-category-deleted.ts +18 -0
  439. package/src/modules/catalog/subscribers/product-scope-keys-category-updated.ts +19 -0
  440. package/src/modules/catalog/translations.ts +12 -0
  441. package/src/modules/configs/i18n/de.json +5 -1
  442. package/src/modules/configs/i18n/en.json +5 -1
  443. package/src/modules/configs/i18n/es.json +5 -1
  444. package/src/modules/configs/i18n/ko.json +5 -1
  445. package/src/modules/configs/i18n/pl.json +5 -1
  446. package/src/modules/configs/lib/upgrade-actions.ts +35 -0
  447. package/src/modules/customer_groups/api/customer-groups/[id]/terms/route.ts +7 -0
  448. package/src/modules/customer_groups/components/CustomerGroupTermsSection.tsx +124 -2
  449. package/src/modules/customer_groups/components/customerGroupAssortmentScope.ts +46 -0
  450. package/src/modules/customer_groups/data/entities.ts +4 -0
  451. package/src/modules/customer_groups/data/validators.ts +14 -0
  452. package/src/modules/customer_groups/i18n/de.json +12 -0
  453. package/src/modules/customer_groups/i18n/en.json +12 -0
  454. package/src/modules/customer_groups/i18n/es.json +12 -0
  455. package/src/modules/customer_groups/i18n/ko.json +12 -0
  456. package/src/modules/customer_groups/i18n/pl.json +12 -0
  457. package/src/modules/customer_groups/migrations/.snapshot-open-mercato.json +17 -0
  458. package/src/modules/customer_groups/migrations/Migration20261005110250_customer_groups.ts +15 -0
  459. package/src/modules/customer_groups/services/customerGroupsService.ts +74 -23
  460. package/src/modules/ecommerce/acl.ts +9 -0
  461. package/src/modules/ecommerce/api/domain-mappings/route.ts +76 -0
  462. package/src/modules/ecommerce/api/openapi.ts +28 -0
  463. package/src/modules/ecommerce/api/store-channel-bindings/[id]/assortment-count/route.ts +141 -0
  464. package/src/modules/ecommerce/api/store-channel-bindings/crud.ts +283 -0
  465. package/src/modules/ecommerce/api/store-channel-bindings/route.ts +67 -0
  466. package/src/modules/ecommerce/api/store-domain-bindings/crud.ts +324 -0
  467. package/src/modules/ecommerce/api/store-domain-bindings/route.ts +73 -0
  468. package/src/modules/ecommerce/api/storefront/categories/[slug]/route.ts +94 -0
  469. package/src/modules/ecommerce/api/storefront/categories/openapiSchemas.ts +63 -0
  470. package/src/modules/ecommerce/api/storefront/categories/route.ts +78 -0
  471. package/src/modules/ecommerce/api/storefront/context/route.ts +203 -0
  472. package/src/modules/ecommerce/api/storefront/products/[idOrHandle]/route.ts +94 -0
  473. package/src/modules/ecommerce/api/storefront/products/openapiSchemas.ts +193 -0
  474. package/src/modules/ecommerce/api/storefront/products/route.ts +81 -0
  475. package/src/modules/ecommerce/api/storefront/search/suggest/openapiSchemas.ts +25 -0
  476. package/src/modules/ecommerce/api/storefront/search/suggest/route.ts +78 -0
  477. package/src/modules/ecommerce/api/storefront/storefrontRouteSupport.ts +68 -0
  478. package/src/modules/ecommerce/api/stores/[id]/branding/route.ts +205 -0
  479. package/src/modules/ecommerce/api/stores/[id]/preview-branding/route.ts +99 -0
  480. package/src/modules/ecommerce/api/stores/crud.ts +457 -0
  481. package/src/modules/ecommerce/api/stores/route.ts +66 -0
  482. package/src/modules/ecommerce/backend/config/ecommerce/[id]/page.meta.ts +12 -0
  483. package/src/modules/ecommerce/backend/config/ecommerce/[id]/page.tsx +5 -0
  484. package/src/modules/ecommerce/backend/config/ecommerce/page.meta.ts +12 -0
  485. package/src/modules/ecommerce/backend/config/ecommerce/page.tsx +5 -0
  486. package/src/modules/ecommerce/commands/stores.ts +154 -0
  487. package/src/modules/ecommerce/components/ChannelAssortmentCount.tsx +138 -0
  488. package/src/modules/ecommerce/components/ChannelBindingFormSections.tsx +40 -0
  489. package/src/modules/ecommerce/components/ChannelLookupPicker.tsx +5 -0
  490. package/src/modules/ecommerce/components/DomainStatusWarning.tsx +32 -0
  491. package/src/modules/ecommerce/components/StoreAvailabilityDefaultsSection.tsx +219 -0
  492. package/src/modules/ecommerce/components/StoreBrandingControls.tsx +73 -0
  493. package/src/modules/ecommerce/components/StoreBrandingPreview.tsx +77 -0
  494. package/src/modules/ecommerce/components/StoreBrandingTab.tsx +242 -0
  495. package/src/modules/ecommerce/components/StoreChannelBindingDialog.tsx +306 -0
  496. package/src/modules/ecommerce/components/StoreChannelsTab.tsx +375 -0
  497. package/src/modules/ecommerce/components/StoreCreateDialog.tsx +204 -0
  498. package/src/modules/ecommerce/components/StoreDomainBindingDialog.tsx +198 -0
  499. package/src/modules/ecommerce/components/StoreDomainsTab.tsx +426 -0
  500. package/src/modules/ecommerce/components/StoreEditPage.tsx +193 -0
  501. package/src/modules/ecommerce/components/StoreGeneralTab.tsx +189 -0
  502. package/src/modules/ecommerce/components/StoreListPage.tsx +326 -0
  503. package/src/modules/ecommerce/components/StoreSeoTab.tsx +152 -0
  504. package/src/modules/ecommerce/components/StoreStatusBadge.tsx +22 -0
  505. package/src/modules/ecommerce/components/channelLookups.ts +24 -0
  506. package/src/modules/ecommerce/components/storeAdmin.ts +56 -0
  507. package/src/modules/ecommerce/components/storeBrandingForm.ts +230 -0
  508. package/src/modules/ecommerce/components/storeChannels.ts +210 -0
  509. package/src/modules/ecommerce/components/storeDomains.ts +221 -0
  510. package/src/modules/ecommerce/components/storeEditTabs.tsx +76 -0
  511. package/src/modules/ecommerce/components/storeGeneral.ts +155 -0
  512. package/src/modules/ecommerce/components/storeSeo.ts +78 -0
  513. package/src/modules/ecommerce/components/useChannelAssortmentCount.ts +67 -0
  514. package/src/modules/ecommerce/components/useStoreAccess.ts +36 -0
  515. package/src/modules/ecommerce/data/enrichers.ts +213 -0
  516. package/src/modules/ecommerce/data/entities.ts +168 -0
  517. package/src/modules/ecommerce/data/validators.ts +587 -0
  518. package/src/modules/ecommerce/di.ts +9 -0
  519. package/src/modules/ecommerce/events.ts +27 -0
  520. package/src/modules/ecommerce/i18n/de.json +341 -0
  521. package/src/modules/ecommerce/i18n/en.json +341 -0
  522. package/src/modules/ecommerce/i18n/es.json +341 -0
  523. package/src/modules/ecommerce/i18n/ko.json +341 -0
  524. package/src/modules/ecommerce/i18n/pl.json +341 -0
  525. package/src/modules/ecommerce/index.ts +14 -0
  526. package/src/modules/ecommerce/lib/assortmentCount.ts +175 -0
  527. package/src/modules/ecommerce/lib/brandingStyles.ts +215 -0
  528. package/src/modules/ecommerce/lib/buyerContext.ts +401 -0
  529. package/src/modules/ecommerce/lib/cacheInvalidation.ts +302 -0
  530. package/src/modules/ecommerce/lib/cacheKeys.ts +340 -0
  531. package/src/modules/ecommerce/lib/createConflictRecheck.ts +31 -0
  532. package/src/modules/ecommerce/lib/crudEvents.ts +128 -0
  533. package/src/modules/ecommerce/lib/crudSupport.ts +85 -0
  534. package/src/modules/ecommerce/lib/domainBindingRebind.ts +138 -0
  535. package/src/modules/ecommerce/lib/domainMappingSummaries.ts +71 -0
  536. package/src/modules/ecommerce/lib/exclusiveFlag.ts +90 -0
  537. package/src/modules/ecommerce/lib/references.ts +93 -0
  538. package/src/modules/ecommerce/lib/seedDraftStore.ts +125 -0
  539. package/src/modules/ecommerce/lib/storeBindingCascade.ts +138 -0
  540. package/src/modules/ecommerce/lib/storeBranding.ts +48 -0
  541. package/src/modules/ecommerce/lib/storeBrandingRoute.ts +91 -0
  542. package/src/modules/ecommerce/lib/storeContext.ts +669 -0
  543. package/src/modules/ecommerce/lib/storeContextService.ts +71 -0
  544. package/src/modules/ecommerce/lib/storeLocale.ts +88 -0
  545. package/src/modules/ecommerce/lib/storeNotifications.ts +55 -0
  546. package/src/modules/ecommerce/lib/storefrontCatalogSupport.ts +427 -0
  547. package/src/modules/ecommerce/lib/storefrontCategories.ts +419 -0
  548. package/src/modules/ecommerce/lib/storefrontCategoryCache.ts +113 -0
  549. package/src/modules/ecommerce/lib/storefrontDetail.ts +654 -0
  550. package/src/modules/ecommerce/lib/storefrontFacets.ts +697 -0
  551. package/src/modules/ecommerce/lib/storefrontOptionFilter.ts +44 -0
  552. package/src/modules/ecommerce/lib/storefrontPricing.ts +583 -0
  553. package/src/modules/ecommerce/lib/storefrontProductCache.ts +126 -0
  554. package/src/modules/ecommerce/lib/storefrontProductScope.ts +181 -0
  555. package/src/modules/ecommerce/lib/storefrontProducts.ts +963 -0
  556. package/src/modules/ecommerce/lib/storefrontQuery.ts +215 -0
  557. package/src/modules/ecommerce/lib/storefrontRateLimit.ts +126 -0
  558. package/src/modules/ecommerce/lib/storefrontSearch.ts +454 -0
  559. package/src/modules/ecommerce/lib/storefrontSearchCache.ts +49 -0
  560. package/src/modules/ecommerce/lib/subscriberSupport.ts +41 -0
  561. package/src/modules/ecommerce/lib/types.ts +69 -0
  562. package/src/modules/ecommerce/migrations/.snapshot-open-mercato.json +829 -0
  563. package/src/modules/ecommerce/migrations/Migration20261005113233_ecommerce.ts +32 -0
  564. package/src/modules/ecommerce/migrations/Migration20261006112733_ecommerce.ts +15 -0
  565. package/src/modules/ecommerce/notifications.client.ts +46 -0
  566. package/src/modules/ecommerce/notifications.ts +46 -0
  567. package/src/modules/ecommerce/search.ts +93 -0
  568. package/src/modules/ecommerce/setup.ts +15 -0
  569. package/src/modules/ecommerce/subscribers/assortment-empty-notifications.ts +12 -0
  570. package/src/modules/ecommerce/subscribers/availability-policy-cache-invalidation.ts +12 -0
  571. package/src/modules/ecommerce/subscribers/catalog-category-cache-invalidation.ts +12 -0
  572. package/src/modules/ecommerce/subscribers/catalog-price-cache-invalidation.ts +12 -0
  573. package/src/modules/ecommerce/subscribers/catalog-product-cache-invalidation.ts +12 -0
  574. package/src/modules/ecommerce/subscribers/catalog-variant-cache-invalidation.ts +12 -0
  575. package/src/modules/ecommerce/subscribers/customer-group-cache-invalidation.ts +12 -0
  576. package/src/modules/ecommerce/subscribers/customer-group-membership-cache-invalidation.ts +12 -0
  577. package/src/modules/ecommerce/subscribers/customer-group-terms-cache-invalidation.ts +12 -0
  578. package/src/modules/ecommerce/subscribers/customer-user-deleted-cache-invalidation.ts +12 -0
  579. package/src/modules/ecommerce/subscribers/customer-user-updated-cache-invalidation.ts +12 -0
  580. package/src/modules/ecommerce/subscribers/domain-binding-rebind.ts +14 -0
  581. package/src/modules/ecommerce/subscribers/domain-mapping-cache-invalidation.ts +12 -0
  582. package/src/modules/ecommerce/subscribers/store-cache-invalidation.ts +12 -0
  583. package/src/modules/ecommerce/subscribers/store-channel-binding-cache-invalidation.ts +12 -0
  584. package/src/modules/ecommerce/subscribers/store-domain-binding-cache-invalidation.ts +12 -0
  585. package/src/modules/ecommerce/subscribers/store-notifications.ts +12 -0
  586. package/src/modules/query_index/lib/batch.ts +25 -9
  587. package/src/modules/query_index/lib/doc-enrichers.ts +306 -0
  588. package/src/modules/query_index/lib/document.ts +2 -0
  589. package/src/modules/query_index/lib/engine.ts +58 -1
  590. package/src/modules/query_index/lib/indexer.ts +8 -0
  591. package/src/modules/query_index/lib/search-tokens.ts +2 -0
  592. package/src/modules/query_index/migrations/Migration20261005201500_query_index.ts +42 -0
  593. package/src/modules/translations/components/TranslationManager.tsx +3 -3
  594. package/src/modules/translations/data/validators.ts +1 -1
  595. package/src/modules/translations/lib/batch.ts +47 -0
  596. package/src/modules/translations/lib/helpers.ts +4 -0
  597. package/src/modules/translations/lib/resolve-field-list.ts +16 -2
@@ -0,0 +1,341 @@
1
+ {
2
+ "ecommerce.audit.stores.branding.update": "Update store branding",
3
+ "ecommerce.backend.store.actions.retry": "Retry",
4
+ "ecommerce.backend.store.availability.allowBackorder": "Allow backorders",
5
+ "ecommerce.backend.store.availability.allowBackorderHint": "Shoppers can order products that are out of stock.",
6
+ "ecommerce.backend.store.availability.description": "Default stock rules for every product in this store. A policy set on a product or variant overrides these defaults, so those policies only need to describe exceptions.",
7
+ "ecommerce.backend.store.availability.errors.load": "Failed to load the availability defaults.",
8
+ "ecommerce.backend.store.availability.errors.save": "Failed to save the availability defaults.",
9
+ "ecommerce.backend.store.availability.flash.saved": "Availability defaults saved",
10
+ "ecommerce.backend.store.availability.hideWhenOutOfStock": "Hide out-of-stock products",
11
+ "ecommerce.backend.store.availability.hideWhenOutOfStockHint": "Products with no stock left are not shown in this store.",
12
+ "ecommerce.backend.store.availability.leadTime": "Backorder lead time (days)",
13
+ "ecommerce.backend.store.availability.leadTimeHint": "How many days a backordered product takes to ship. Required while backorders are allowed.",
14
+ "ecommerce.backend.store.availability.loading": "Loading availability defaults...",
15
+ "ecommerce.backend.store.availability.readOnly.noAvailabilityManage": "You can view these defaults but not change them. Saving them requires permission to manage availability policies.",
16
+ "ecommerce.backend.store.availability.readOnly.noStoreManage": "You can view these defaults but not change them. Changing them requires permission to manage stores.",
17
+ "ecommerce.backend.store.availability.readOnly.noView": "You do not have access to availability policies, so the store defaults cannot be shown.",
18
+ "ecommerce.backend.store.availability.save": "Save availability defaults",
19
+ "ecommerce.backend.store.availability.title": "Availability defaults",
20
+ "ecommerce.backend.store.backToList": "Back to stores",
21
+ "ecommerce.backend.store.branding.accentColor": "Accent colour",
22
+ "ecommerce.backend.store.branding.accentForeground": "Text on accent",
23
+ "ecommerce.backend.store.branding.assetUrlHint": "An http(s) address or a path starting with /. Leave empty for none.",
24
+ "ecommerce.backend.store.branding.assetsTitle": "Logo and favicon",
25
+ "ecommerce.backend.store.branding.backgroundColor": "Background colour",
26
+ "ecommerce.backend.store.branding.colorPlaceholder": "oklch(0.3 0.15 270) or #1a2b3c",
27
+ "ecommerce.backend.store.branding.coloursTitle": "Colours",
28
+ "ecommerce.backend.store.branding.description": "The colours, corner radius, fonts and logo your storefront uses. Empty values use the defaults shown.",
29
+ "ecommerce.backend.store.branding.errors.save": "Failed to save the branding.",
30
+ "ecommerce.backend.store.branding.faviconUrl": "Favicon URL",
31
+ "ecommerce.backend.store.branding.flash.saved": "Branding saved",
32
+ "ecommerce.backend.store.branding.font.systemMono": "System monospace",
33
+ "ecommerce.backend.store.branding.font.systemSans": "System sans-serif",
34
+ "ecommerce.backend.store.branding.font.systemSerif": "System serif",
35
+ "ecommerce.backend.store.branding.fontBase": "Body font",
36
+ "ecommerce.backend.store.branding.fontHeading": "Heading font",
37
+ "ecommerce.backend.store.branding.fontInherit": "Same as body font",
38
+ "ecommerce.backend.store.branding.foregroundColor": "Text colour",
39
+ "ecommerce.backend.store.branding.logoUrl": "Logo URL",
40
+ "ecommerce.backend.store.branding.preview.groupTitle": "Live preview",
41
+ "ecommerce.backend.store.branding.preview.heroButton": "Shop now",
42
+ "ecommerce.backend.store.branding.preview.heroText": "A preview of your storefront with the colours, corners and fonts you chose.",
43
+ "ecommerce.backend.store.branding.preview.heroTitle": "New arrivals",
44
+ "ecommerce.backend.store.branding.preview.hint": "The preview updates as you edit and is never saved until you save the branding.",
45
+ "ecommerce.backend.store.branding.preview.navCart": "Cart",
46
+ "ecommerce.backend.store.branding.preview.navCategories": "Categories",
47
+ "ecommerce.backend.store.branding.preview.navShop": "Shop",
48
+ "ecommerce.backend.store.branding.preview.productName": "Sample product",
49
+ "ecommerce.backend.store.branding.preview.title": "Storefront preview",
50
+ "ecommerce.backend.store.branding.primaryColor": "Primary colour",
51
+ "ecommerce.backend.store.branding.primaryForeground": "Text on primary",
52
+ "ecommerce.backend.store.branding.radius": "Corner radius",
53
+ "ecommerce.backend.store.branding.radiusHint": "How rounded buttons, cards and inputs are, from square (0) to 5rem.",
54
+ "ecommerce.backend.store.branding.readOnly": "You can view this branding but not change it. Changing it requires permission to manage store branding.",
55
+ "ecommerce.backend.store.branding.save": "Save branding",
56
+ "ecommerce.backend.store.branding.styleTitle": "Shape and typography",
57
+ "ecommerce.backend.store.branding.title": "Branding",
58
+ "ecommerce.backend.store.channels.actions.add": "Add channel binding",
59
+ "ecommerce.backend.store.channels.actions.delete": "Remove",
60
+ "ecommerce.backend.store.channels.actions.edit": "Edit",
61
+ "ecommerce.backend.store.channels.actions.makeDefault": "Make default",
62
+ "ecommerce.backend.store.channels.actions.view": "View",
63
+ "ecommerce.backend.store.channels.add.submit": "Add binding",
64
+ "ecommerce.backend.store.channels.add.title": "Add channel binding",
65
+ "ecommerce.backend.store.channels.columns.channel": "Sales channel",
66
+ "ecommerce.backend.store.channels.columns.count": "Products shown",
67
+ "ecommerce.backend.store.channels.columns.default": "Default",
68
+ "ecommerce.backend.store.channels.columns.priceKind": "Price kind",
69
+ "ecommerce.backend.store.channels.columns.priceSortFallback": "Large-catalogue price sort",
70
+ "ecommerce.backend.store.channels.columns.requireAuthentication": "Sign-in",
71
+ "ecommerce.backend.store.channels.columns.scope": "Assortment",
72
+ "ecommerce.backend.store.channels.count.authenticationEmpty": "0 products visible to anonymous visitors: sign-in is required, and the scope matches no products even without that requirement.",
73
+ "ecommerce.backend.store.channels.count.basis": "Counted for an anonymous visitor, including the default customer group's own restrictions. Unsaved changes are counted too.",
74
+ "ecommerce.backend.store.channels.count.cellReduced": "0 ({count} without the sign-in requirement)",
75
+ "ecommerce.backend.store.channels.count.error": "The product count is unavailable right now.",
76
+ "ecommerce.backend.store.channels.count.loading": "Counting products…",
77
+ "ecommerce.backend.store.channels.count.reducedByAuthentication": "0 products for anonymous visitors because sign-in is required; {count} without that requirement.",
78
+ "ecommerce.backend.store.channels.count.restricted": "Products matching this scope: {count}.",
79
+ "ecommerce.backend.store.channels.count.saveFirst": "Save the binding to see how many products it shows. After that, the count updates as you change the scope.",
80
+ "ecommerce.backend.store.channels.count.title": "Live product count",
81
+ "ecommerce.backend.store.channels.count.unindexed": "{count} active products are not indexed for visibility yet. Under a restricted scope they stay hidden and are not counted until indexing catches up.",
82
+ "ecommerce.backend.store.channels.count.unrestricted": "All products in this channel's catalog: {count}.",
83
+ "ecommerce.backend.store.channels.defaultBadge": "Default",
84
+ "ecommerce.backend.store.channels.delete.confirmButton": "Remove binding",
85
+ "ecommerce.backend.store.channels.delete.confirmText": "The store stops using this channel. The sales channel itself is not deleted and can be bound again.",
86
+ "ecommerce.backend.store.channels.delete.confirmTextDefault": "This is the default binding. Until you make another binding the default, the storefront cannot serve and answers every request with an error. The sales channel itself is not deleted.",
87
+ "ecommerce.backend.store.channels.delete.confirmTitle": "Remove binding \"{channel}\"?",
88
+ "ecommerce.backend.store.channels.description": "The sales channels this store sells through. Each binding decides what the channel shows and to whom: price kind, assortment scope, sign-in requirement and large-catalogue price sorting.",
89
+ "ecommerce.backend.store.channels.dialog.description": "Bind a sales channel to this store and decide what it shows and to whom: the assortment scope, the sign-in requirement and how price sorting behaves on a large catalogue.",
90
+ "ecommerce.backend.store.channels.edit.submit": "Save binding",
91
+ "ecommerce.backend.store.channels.edit.title": "Edit channel binding",
92
+ "ecommerce.backend.store.channels.empty.description": "Bind a sales channel and make it the default. The storefront cannot serve without a default channel binding.",
93
+ "ecommerce.backend.store.channels.empty.title": "No sales channel bound yet",
94
+ "ecommerce.backend.store.channels.entityPlural": "channel bindings",
95
+ "ecommerce.backend.store.channels.errors.create": "Failed to add the channel binding.",
96
+ "ecommerce.backend.store.channels.errors.delete": "Failed to remove the channel binding.",
97
+ "ecommerce.backend.store.channels.errors.load": "Failed to load the channel bindings.",
98
+ "ecommerce.backend.store.channels.errors.makeDefault": "Failed to make the binding the default.",
99
+ "ecommerce.backend.store.channels.errors.update": "Failed to update the channel binding.",
100
+ "ecommerce.backend.store.channels.flash.created": "Channel binding added",
101
+ "ecommerce.backend.store.channels.flash.defaultSet": "{channel} is now the default channel of this store.",
102
+ "ecommerce.backend.store.channels.flash.deleted": "Channel binding removed",
103
+ "ecommerce.backend.store.channels.flash.updated": "Channel binding updated",
104
+ "ecommerce.backend.store.channels.form.categoryIds": "Categories",
105
+ "ecommerce.backend.store.channels.form.categoryPlaceholder": "Search categories",
106
+ "ecommerce.backend.store.channels.form.excludeCategoryIds": "Categories",
107
+ "ecommerce.backend.store.channels.form.excludeHint": "Hidden products, categories and tags win over the selection above.",
108
+ "ecommerce.backend.store.channels.form.excludeProductIds": "Products",
109
+ "ecommerce.backend.store.channels.form.excludeTagIds": "Tags",
110
+ "ecommerce.backend.store.channels.form.excludeTitle": "Always hide",
111
+ "ecommerce.backend.store.channels.form.includeHint": "A product shows when it is in any of the chosen categories and carries any of the chosen tags. An empty picker does not filter, so leave both empty to show the channel's whole catalog; clearing a picker never hides everything.",
112
+ "ecommerce.backend.store.channels.form.includeTitle": "Show only products in",
113
+ "ecommerce.backend.store.channels.form.isDefault": "Default channel of this store",
114
+ "ecommerce.backend.store.channels.form.isDefaultHint": "The storefront serves the default binding. Making this binding the default removes the mark from the current default.",
115
+ "ecommerce.backend.store.channels.form.isDefaultLocked": "This is the default binding. To change it, make another binding the default; a store without a default channel cannot serve its storefront.",
116
+ "ecommerce.backend.store.channels.form.policiesTitle": "Catalogue policies",
117
+ "ecommerce.backend.store.channels.form.priceKind": "Price kind override",
118
+ "ecommerce.backend.store.channels.form.priceKindHint": "Optional. The price kind anonymous visitors see on this channel. Leave empty to use the default price kind.",
119
+ "ecommerce.backend.store.channels.form.priceKindPlaceholder": "Default price kind",
120
+ "ecommerce.backend.store.channels.form.priceSortFallback": "Price sorting past {cap} products",
121
+ "ecommerce.backend.store.channels.form.priceSortFallbackHint": "The storefront sorts by price for at most {cap} matching products. Choose what happens on this channel when more products match.",
122
+ "ecommerce.backend.store.channels.form.productPlaceholder": "Search products",
123
+ "ecommerce.backend.store.channels.form.requireAuthentication": "Require sign-in to see products",
124
+ "ecommerce.backend.store.channels.form.requireAuthenticationHint": "Anonymous visitors see no products on this channel; signed-in buyers see their usual assortment. This governs catalog visibility only, not the whole storefront: pages and sign-in stay reachable. Takes effect on save.",
125
+ "ecommerce.backend.store.channels.form.salesChannel": "Sales channel",
126
+ "ecommerce.backend.store.channels.form.salesChannelPlaceholder": "Select a sales channel…",
127
+ "ecommerce.backend.store.channels.form.tagIds": "Tags",
128
+ "ecommerce.backend.store.channels.form.tagPlaceholder": "Search tags",
129
+ "ecommerce.backend.store.channels.noDefault": "No binding is the default, so the storefront cannot serve. Make one binding the default.",
130
+ "ecommerce.backend.store.channels.priceKindDefault": "Default price kind",
131
+ "ecommerce.backend.store.channels.priceSortFallback.approximate": "Approximate order from the default price kind",
132
+ "ecommerce.backend.store.channels.priceSortFallback.approximateConsequence": "When more than {cap} products match, the price order is computed from the default price kind, not from the buyer's own prices. The only signal is a response header no shopper sees, so contract-priced buyers may see an order that does not match what they pay.",
133
+ "ecommerce.backend.store.channels.priceSortFallback.unavailable": "Withdraw price sorting",
134
+ "ecommerce.backend.store.channels.priceSortFallback.unavailableConsequence": "When more than {cap} products match, price sorting is withdrawn on this channel: price ascending and descending are no longer offered, and a buyer arriving on a shared price-sorted link gets the catalogue in the default order rather than an error.",
135
+ "ecommerce.backend.store.channels.public": "Public",
136
+ "ecommerce.backend.store.channels.readOnly": "You can view these bindings but not change them. Changing them requires permission to manage store channels.",
137
+ "ecommerce.backend.store.channels.requireAuthenticationBadge": "Sign-in required",
138
+ "ecommerce.backend.store.channels.scopeAll": "All products",
139
+ "ecommerce.backend.store.channels.scopeRestricted": "Restricted ({count} rules)",
140
+ "ecommerce.backend.store.channels.title": "Channels",
141
+ "ecommerce.backend.store.channels.view.title": "Channel binding",
142
+ "ecommerce.backend.store.domains.actions.add": "Add domain binding",
143
+ "ecommerce.backend.store.domains.actions.delete": "Remove",
144
+ "ecommerce.backend.store.domains.actions.edit": "Edit",
145
+ "ecommerce.backend.store.domains.actions.makePrimary": "Make primary",
146
+ "ecommerce.backend.store.domains.add.description": "Bind a registered domain, optionally with a path prefix, so the store becomes reachable there. Only an active domain serves.",
147
+ "ecommerce.backend.store.domains.add.submit": "Add binding",
148
+ "ecommerce.backend.store.domains.add.title": "Add domain binding",
149
+ "ecommerce.backend.store.domains.columns.domain": "Domain",
150
+ "ecommerce.backend.store.domains.columns.failureReason": "Failure reason",
151
+ "ecommerce.backend.store.domains.columns.lastDnsCheck": "Last DNS check",
152
+ "ecommerce.backend.store.domains.columns.primary": "Primary",
153
+ "ecommerce.backend.store.domains.columns.status": "Status",
154
+ "ecommerce.backend.store.domains.delete.confirmButton": "Remove binding",
155
+ "ecommerce.backend.store.domains.delete.confirmText": "The store stops answering at this address. The domain itself is not deleted and can be bound again.",
156
+ "ecommerce.backend.store.domains.delete.confirmTextPrimary": "This is the primary binding. The store stops answering at this address and will have no primary domain until you pick another. The domain itself is not deleted.",
157
+ "ecommerce.backend.store.domains.delete.confirmTitle": "Remove binding \"{address}\"?",
158
+ "ecommerce.backend.store.domains.description": "The domains this store is served on. Domain status is managed in domain management and shown here read-only. Only an active domain serves.",
159
+ "ecommerce.backend.store.domains.edit.submit": "Save binding",
160
+ "ecommerce.backend.store.domains.edit.title": "Edit domain binding",
161
+ "ecommerce.backend.store.domains.empty.description": "Bind an active domain, optionally with a path prefix, to make this store reachable.",
162
+ "ecommerce.backend.store.domains.empty.title": "No domains bound yet",
163
+ "ecommerce.backend.store.domains.entityPlural": "domain bindings",
164
+ "ecommerce.backend.store.domains.errors.create": "Failed to add the domain binding.",
165
+ "ecommerce.backend.store.domains.errors.delete": "Failed to remove the domain binding.",
166
+ "ecommerce.backend.store.domains.errors.load": "Failed to load the domain bindings.",
167
+ "ecommerce.backend.store.domains.errors.loadMappings": "Failed to load the available domains.",
168
+ "ecommerce.backend.store.domains.errors.makePrimary": "Failed to make the binding primary.",
169
+ "ecommerce.backend.store.domains.errors.update": "Failed to update the domain binding.",
170
+ "ecommerce.backend.store.domains.failure.aRecordMismatch": "The A record points to {actual} instead of {expected}",
171
+ "ecommerce.backend.store.domains.failure.apexNotEnabled": "The A record points to {actual}, but apex domains are not enabled on this deployment",
172
+ "ecommerce.backend.store.domains.failure.cnameMismatch": "The CNAME record points to {actual} instead of {expected}",
173
+ "ecommerce.backend.store.domains.failure.dnsLookup": "The DNS lookup for the {recordType} record failed",
174
+ "ecommerce.backend.store.domains.failure.httpStatus": "The TLS health check returned HTTP {status}",
175
+ "ecommerce.backend.store.domains.failure.noRecords": "No CNAME or A record was found",
176
+ "ecommerce.backend.store.domains.failure.proxyUnreachable": "The domain is behind a proxy that does not forward traffic to this platform",
177
+ "ecommerce.backend.store.domains.failure.tlsFailed": "The TLS health check failed",
178
+ "ecommerce.backend.store.domains.failure.tlsTimeout": "The TLS health check timed out",
179
+ "ecommerce.backend.store.domains.flash.created": "Domain binding added",
180
+ "ecommerce.backend.store.domains.flash.deleted": "Domain binding removed",
181
+ "ecommerce.backend.store.domains.flash.primaryChanged": "{address} is now the primary domain. {previous} is no longer primary.",
182
+ "ecommerce.backend.store.domains.flash.primarySet": "{address} is now the primary domain.",
183
+ "ecommerce.backend.store.domains.flash.updated": "Domain binding updated",
184
+ "ecommerce.backend.store.domains.form.domain": "Domain",
185
+ "ecommerce.backend.store.domains.form.pathPrefix": "Path prefix",
186
+ "ecommerce.backend.store.domains.form.pathPrefixHint": "Optional. Serve this store only under a path such as /de. Leave empty to serve the whole domain. When two prefixes overlap, the longest matching prefix wins.",
187
+ "ecommerce.backend.store.domains.form.primary": "Primary domain",
188
+ "ecommerce.backend.store.domains.form.primaryHint": "The address used for canonical links. Making this binding primary removes the primary mark from the current primary binding of this store.",
189
+ "ecommerce.backend.store.domains.limitHint": "An organization holds at most two domains: one active plus one pending replacement. To serve another store on the same domain, give it a path prefix such as /de instead of adding a domain.",
190
+ "ecommerce.backend.store.domains.manageLink": "Open domain management",
191
+ "ecommerce.backend.store.domains.neverChecked": "Not checked yet",
192
+ "ecommerce.backend.store.domains.noMappings": "This organization has no domains yet. Register one in domain management, then bind it here.",
193
+ "ecommerce.backend.store.domains.primaryBadge": "Primary",
194
+ "ecommerce.backend.store.domains.readOnly": "You can view these bindings but not change them. Changing them requires permission to manage store domains.",
195
+ "ecommerce.backend.store.domains.removed.description": "The domain this binding points at was deleted in domain management, so the store no longer answers here. Edit the binding to pick another domain, or remove it.",
196
+ "ecommerce.backend.store.domains.removed.title": "Domain removed",
197
+ "ecommerce.backend.store.domains.removedHostname": "Removed domain",
198
+ "ecommerce.backend.store.domains.status.active": "Active",
199
+ "ecommerce.backend.store.domains.status.dnsFailed": "DNS failed",
200
+ "ecommerce.backend.store.domains.status.pending": "Pending",
201
+ "ecommerce.backend.store.domains.status.removed": "Removed",
202
+ "ecommerce.backend.store.domains.status.tlsFailed": "TLS failed",
203
+ "ecommerce.backend.store.domains.status.unknown": "Unknown",
204
+ "ecommerce.backend.store.domains.status.verified": "Verified",
205
+ "ecommerce.backend.store.domains.title": "Domains",
206
+ "ecommerce.backend.store.domains.unavailable": "Domain details are unavailable right now.",
207
+ "ecommerce.backend.store.domains.warning.notServing": "This domain is {status}. Only an active domain serves, so the store does not answer at {hostname} yet.",
208
+ "ecommerce.backend.store.entityType": "Store",
209
+ "ecommerce.backend.store.errors.load": "Failed to load the store.",
210
+ "ecommerce.backend.store.general.description": "The store name, its identifiers, the languages it is shown in and its currency.",
211
+ "ecommerce.backend.store.general.errors.save": "Failed to save the store.",
212
+ "ecommerce.backend.store.general.flash.saved": "Store saved",
213
+ "ecommerce.backend.store.general.readOnly": "You can view this store but not change it. Changing it requires permission to manage stores.",
214
+ "ecommerce.backend.store.general.save": "Save changes",
215
+ "ecommerce.backend.store.general.status": "Status",
216
+ "ecommerce.backend.store.general.statusArchivedHint": "An archived store cannot be unarchived.",
217
+ "ecommerce.backend.store.general.statusHint": "A draft store does not serve its storefront. Archive a store from the store list.",
218
+ "ecommerce.backend.store.general.title": "Identity and localization",
219
+ "ecommerce.backend.store.loading": "Loading store...",
220
+ "ecommerce.backend.store.notFound.description": "This store does not exist in the selected organization, or it was deleted.",
221
+ "ecommerce.backend.store.notFound.label": "Store not found",
222
+ "ecommerce.backend.store.seo.defaultMetaDescription": "Default meta description",
223
+ "ecommerce.backend.store.seo.defaultMetaDescriptionHint": "A short description of your store shown in search results when no product description is available.",
224
+ "ecommerce.backend.store.seo.description": "Configure how your store appears in search results and to automated crawlers.",
225
+ "ecommerce.backend.store.seo.errors.save": "Failed to save the SEO settings.",
226
+ "ecommerce.backend.store.seo.flash.saved": "SEO settings saved",
227
+ "ecommerce.backend.store.seo.googleSiteVerification": "Google site verification token",
228
+ "ecommerce.backend.store.seo.googleSiteVerificationHint": "The token provided by Google Search Console to verify site ownership.",
229
+ "ecommerce.backend.store.seo.readOnly": "You can view these SEO settings but not change them. Changing them requires permission to manage stores.",
230
+ "ecommerce.backend.store.seo.robotsTxt": "robots.txt",
231
+ "ecommerce.backend.store.seo.robotsTxtHint": "Instructions for search engine crawlers on which parts of your store to index.",
232
+ "ecommerce.backend.store.seo.save": "Save SEO settings",
233
+ "ecommerce.backend.store.seo.siteName": "Site name",
234
+ "ecommerce.backend.store.seo.siteNameHint": "The name of your store shown in search results and the browser tab.",
235
+ "ecommerce.backend.store.seo.title": "Search engine optimization",
236
+ "ecommerce.backend.store.summary.code": "Code",
237
+ "ecommerce.backend.store.summary.currency": "Currency",
238
+ "ecommerce.backend.store.summary.defaultChannel": "Default channel",
239
+ "ecommerce.backend.store.summary.defaultLocale": "Default language",
240
+ "ecommerce.backend.store.summary.primaryDomain": "Primary domain",
241
+ "ecommerce.backend.store.summary.slug": "Slug",
242
+ "ecommerce.backend.store.summary.supportedLocales": "Supported languages",
243
+ "ecommerce.backend.store.summary.title": "Store summary",
244
+ "ecommerce.backend.store.tabs.ariaLabel": "Store sections",
245
+ "ecommerce.backend.store.tabs.branding": "Branding",
246
+ "ecommerce.backend.store.tabs.channels": "Channels",
247
+ "ecommerce.backend.store.tabs.domains": "Domains",
248
+ "ecommerce.backend.store.tabs.general": "General",
249
+ "ecommerce.backend.store.tabs.seo": "SEO",
250
+ "ecommerce.backend.stores.actions.archive": "Archive",
251
+ "ecommerce.backend.stores.actions.channels": "Channels",
252
+ "ecommerce.backend.stores.actions.create": "Create store",
253
+ "ecommerce.backend.stores.actions.domains": "Domains",
254
+ "ecommerce.backend.stores.actions.edit": "Edit",
255
+ "ecommerce.backend.stores.archive.confirmButton": "Archive store",
256
+ "ecommerce.backend.stores.archive.confirmText": "An archived store stops serving its storefront (HTTP 410). Its configuration and history are kept, but it cannot be unarchived.",
257
+ "ecommerce.backend.stores.archive.confirmTitle": "Archive store \"{name}\"?",
258
+ "ecommerce.backend.stores.columns.channel": "Channel",
259
+ "ecommerce.backend.stores.columns.code": "Code",
260
+ "ecommerce.backend.stores.columns.created": "Created",
261
+ "ecommerce.backend.stores.columns.name": "Name",
262
+ "ecommerce.backend.stores.columns.noDefaultChannel": "No default channel",
263
+ "ecommerce.backend.stores.columns.primaryDomain": "Primary domain",
264
+ "ecommerce.backend.stores.columns.status": "Status",
265
+ "ecommerce.backend.stores.create.description": "The store starts as a draft. Add its domain and sales channel afterwards to publish it.",
266
+ "ecommerce.backend.stores.create.submit": "Create store",
267
+ "ecommerce.backend.stores.create.title": "Create store",
268
+ "ecommerce.backend.stores.empty.description": "A new workspace gets one draft store automatically. If this workspace existed before the Stores module was enabled, run the \"Create the default store\" upgrade action from the dashboard to create it, or create a store now.",
269
+ "ecommerce.backend.stores.empty.descriptionReadOnly": "A new workspace gets one draft store automatically. If this workspace existed before the Stores module was enabled, an administrator needs to run the \"Create the default store\" upgrade action from the dashboard.",
270
+ "ecommerce.backend.stores.empty.title": "No stores yet",
271
+ "ecommerce.backend.stores.entityPlural": "stores",
272
+ "ecommerce.backend.stores.errors.archive": "Failed to archive the store.",
273
+ "ecommerce.backend.stores.errors.create": "Failed to create the store.",
274
+ "ecommerce.backend.stores.errors.load": "Failed to load stores.",
275
+ "ecommerce.backend.stores.filters.status": "Status",
276
+ "ecommerce.backend.stores.flash.archived": "Store archived",
277
+ "ecommerce.backend.stores.flash.created": "Store created",
278
+ "ecommerce.backend.stores.form.code": "Code",
279
+ "ecommerce.backend.stores.form.codeHint": "Internal identifier, unique in the workspace. Lowercase letters, digits, dashes and underscores.",
280
+ "ecommerce.backend.stores.form.currency": "Currency",
281
+ "ecommerce.backend.stores.form.currencyHint": "Three-letter ISO code, for example EUR.",
282
+ "ecommerce.backend.stores.form.defaultLocale": "Default language",
283
+ "ecommerce.backend.stores.form.defaultLocaleHint": "A language code such as en or pl-PL.",
284
+ "ecommerce.backend.stores.form.name": "Name",
285
+ "ecommerce.backend.stores.form.slug": "Slug",
286
+ "ecommerce.backend.stores.form.slugHint": "Short name used in store addresses, unique in the workspace. Lowercase letters, digits and dashes.",
287
+ "ecommerce.backend.stores.form.supportedLocales": "Supported languages",
288
+ "ecommerce.backend.stores.form.supportedLocalesHint": "Languages the store can be shown in. Must include the default language.",
289
+ "ecommerce.backend.stores.search.placeholder": "Search by name, code or slug",
290
+ "ecommerce.backend.stores.status.active": "Active",
291
+ "ecommerce.backend.stores.status.archived": "Archived",
292
+ "ecommerce.backend.stores.status.draft": "Draft",
293
+ "ecommerce.errors.brandingPermissionRequired": "You do not have permission to set the store branding.",
294
+ "ecommerce.errors.brandingRouteRequired": "Branding cannot be changed here. Save it through the branding endpoint (PUT /api/ecommerce/stores/{id}/branding).",
295
+ "ecommerce.errors.channelBindingNotFound": "The selected channel binding does not exist in this organization.",
296
+ "ecommerce.errors.codeDuplicate": "A store with this code already exists.",
297
+ "ecommerce.errors.defaultChannelConflict": "Another channel binding of this store was made the default at the same time. Reload and try again.",
298
+ "ecommerce.errors.domainBindingDuplicate": "This domain and path prefix already serve a store.",
299
+ "ecommerce.errors.domainBindingNotFound": "The selected domain binding does not exist in this organization.",
300
+ "ecommerce.errors.domainMappingNotFound": "The selected domain does not belong to this organization.",
301
+ "ecommerce.errors.domainMappingsUnavailable": "Domains are unavailable right now. Try again later.",
302
+ "ecommerce.errors.internal": "Something went wrong. Try again.",
303
+ "ecommerce.errors.invalidJsonBody": "The request body is not valid JSON.",
304
+ "ecommerce.errors.operationBlocked": "This change was blocked. Review the store and try again.",
305
+ "ecommerce.errors.organizationRequired": "Select an organization first.",
306
+ "ecommerce.errors.priceKindNotFound": "The selected price kind does not exist in this organization.",
307
+ "ecommerce.errors.primaryConflict": "Another store was made primary at the same time. Reload and try again.",
308
+ "ecommerce.errors.primaryDomainConflict": "Another domain binding of this store was made primary at the same time. Reload and try again.",
309
+ "ecommerce.errors.salesChannelNotFound": "The selected sales channel does not exist in this organization.",
310
+ "ecommerce.errors.slugDuplicate": "A store with this slug already exists.",
311
+ "ecommerce.errors.storeNotFound": "The selected store does not exist in this organization.",
312
+ "ecommerce.errors.unauthorized": "Sign in to continue.",
313
+ "ecommerce.module.title": "Stores",
314
+ "ecommerce.notifications.store.assortmentEmpty.body": "The channel and customer group scopes leave these buyers with no visible products.",
315
+ "ecommerce.notifications.store.assortmentEmpty.title": "Store assortment is empty for some buyers",
316
+ "ecommerce.notifications.store.channelBindingMissing.body": "The storefront cannot serve requests until a default channel binding is configured.",
317
+ "ecommerce.notifications.store.channelBindingMissing.title": "Store has no default sales channel",
318
+ "ecommerce.search.badge.store": "Store",
319
+ "ecommerce.search.status.active": "Active",
320
+ "ecommerce.search.status.archived": "Archived",
321
+ "ecommerce.search.status.draft": "Draft",
322
+ "ecommerce.validation.archivedStoreTerminal": "An archived store cannot be reopened. Create a new store instead.",
323
+ "ecommerce.validation.backorderLeadTimeRequired": "Enter the backorder lead time in whole days (0 or more).",
324
+ "ecommerce.validation.borderRadiusInvalid": "Corner radius must be 0 or a value in rem (up to 5rem) or px (up to 80px).",
325
+ "ecommerce.validation.brandingFieldUnknown": "This branding setting does not exist.",
326
+ "ecommerce.validation.codeInvalid": "Code may contain only lowercase letters, digits, dashes and underscores.",
327
+ "ecommerce.validation.colorInvalid": "Colour must be an OKLCH value such as oklch(0.3 0.15 270) or a hex value such as #1a2b3c.",
328
+ "ecommerce.validation.currencyCodeInvalid": "Currency code must be a three-letter ISO code, for example EUR.",
329
+ "ecommerce.validation.defaultLocaleNotSupported": "The default locale must be one of the supported locales.",
330
+ "ecommerce.validation.draftRequireAuthenticationInvalid": "The draft require-authentication value must be true or false.",
331
+ "ecommerce.validation.draftScopeInvalid": "The draft scope may only contain category, tag and excluded product, category and tag ids.",
332
+ "ecommerce.validation.draftScopeJsonInvalid": "The draft scope must be a JSON-encoded assortment scope.",
333
+ "ecommerce.validation.fontNotAllowed": "Choose a font from the list of available fonts.",
334
+ "ecommerce.validation.googleSiteVerificationInvalid": "Enter the token from Google Search Console: letters, digits, dashes and underscores only, up to 128 characters.",
335
+ "ecommerce.validation.localeInvalid": "Locale must be a language code such as en or en-US.",
336
+ "ecommerce.validation.localesDuplicate": "Each supported locale may be listed only once.",
337
+ "ecommerce.validation.pathPrefixInvalid": "Path prefix may contain only lowercase letters, digits, dashes and slashes, for example /shop.",
338
+ "ecommerce.validation.slugInvalid": "Slug may contain only lowercase letters, digits and single dashes between them.",
339
+ "ecommerce.validation.urlInvalid": "Enter a valid http(s) URL or a path starting with /.",
340
+ "notifications.categories.ecommerce": "Ecommerce"
341
+ }