@open-mercato/core 0.9.1-develop.7473.1.de5b22888f → 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": "Actualizar la marca de la tienda",
3
+ "ecommerce.backend.store.actions.retry": "Reintentar",
4
+ "ecommerce.backend.store.availability.allowBackorder": "Permitir pedidos pendientes",
5
+ "ecommerce.backend.store.availability.allowBackorderHint": "Los clientes pueden pedir productos que están agotados.",
6
+ "ecommerce.backend.store.availability.description": "Reglas de existencias predeterminadas para todos los productos de esta tienda. Una política definida en un producto o variante anula estos valores, por lo que esas políticas solo tienen que describir las excepciones.",
7
+ "ecommerce.backend.store.availability.errors.load": "No se pudieron cargar los valores de disponibilidad.",
8
+ "ecommerce.backend.store.availability.errors.save": "No se pudieron guardar los valores de disponibilidad.",
9
+ "ecommerce.backend.store.availability.flash.saved": "Valores de disponibilidad guardados",
10
+ "ecommerce.backend.store.availability.hideWhenOutOfStock": "Ocultar productos agotados",
11
+ "ecommerce.backend.store.availability.hideWhenOutOfStockHint": "Los productos sin existencias no se muestran en esta tienda.",
12
+ "ecommerce.backend.store.availability.leadTime": "Plazo de entrega del pedido pendiente (días)",
13
+ "ecommerce.backend.store.availability.leadTimeHint": "Cuántos días tarda en enviarse un producto pendiente. Obligatorio mientras se permitan pedidos pendientes.",
14
+ "ecommerce.backend.store.availability.loading": "Cargando valores de disponibilidad...",
15
+ "ecommerce.backend.store.availability.readOnly.noAvailabilityManage": "Puede ver estos valores pero no modificarlos. Para guardarlos se necesita permiso para gestionar políticas de disponibilidad.",
16
+ "ecommerce.backend.store.availability.readOnly.noStoreManage": "Puede ver estos valores pero no modificarlos. Para modificarlos se necesita permiso para gestionar tiendas.",
17
+ "ecommerce.backend.store.availability.readOnly.noView": "No tiene acceso a las políticas de disponibilidad, por lo que no se pueden mostrar los valores predeterminados de la tienda.",
18
+ "ecommerce.backend.store.availability.save": "Guardar valores de disponibilidad",
19
+ "ecommerce.backend.store.availability.title": "Valores predeterminados de disponibilidad",
20
+ "ecommerce.backend.store.backToList": "Volver a las tiendas",
21
+ "ecommerce.backend.store.branding.accentColor": "Color de acento",
22
+ "ecommerce.backend.store.branding.accentForeground": "Texto sobre el color de acento",
23
+ "ecommerce.backend.store.branding.assetUrlHint": "Una dirección http(s) o una ruta que empiece por /. Déjalo vacío para no usar ninguno.",
24
+ "ecommerce.backend.store.branding.assetsTitle": "Logotipo y favicon",
25
+ "ecommerce.backend.store.branding.backgroundColor": "Color de fondo",
26
+ "ecommerce.backend.store.branding.colorPlaceholder": "oklch(0.3 0.15 270) o #1a2b3c",
27
+ "ecommerce.backend.store.branding.coloursTitle": "Colores",
28
+ "ecommerce.backend.store.branding.description": "Los colores, el radio de las esquinas, las fuentes y el logotipo que usa tu tienda. Los valores vacíos usan los valores predeterminados mostrados.",
29
+ "ecommerce.backend.store.branding.errors.save": "No se pudo guardar el branding.",
30
+ "ecommerce.backend.store.branding.faviconUrl": "URL del favicon",
31
+ "ecommerce.backend.store.branding.flash.saved": "Branding guardado",
32
+ "ecommerce.backend.store.branding.font.systemMono": "Monoespaciada del sistema",
33
+ "ecommerce.backend.store.branding.font.systemSans": "Sans-serif del sistema",
34
+ "ecommerce.backend.store.branding.font.systemSerif": "Serif del sistema",
35
+ "ecommerce.backend.store.branding.fontBase": "Fuente del texto",
36
+ "ecommerce.backend.store.branding.fontHeading": "Fuente de los títulos",
37
+ "ecommerce.backend.store.branding.fontInherit": "Igual que la fuente del texto",
38
+ "ecommerce.backend.store.branding.foregroundColor": "Color del texto",
39
+ "ecommerce.backend.store.branding.logoUrl": "URL del logotipo",
40
+ "ecommerce.backend.store.branding.preview.groupTitle": "Vista previa en vivo",
41
+ "ecommerce.backend.store.branding.preview.heroButton": "Comprar ahora",
42
+ "ecommerce.backend.store.branding.preview.heroText": "Una vista previa de tu tienda con los colores, esquinas y fuentes que elegiste.",
43
+ "ecommerce.backend.store.branding.preview.heroTitle": "Novedades",
44
+ "ecommerce.backend.store.branding.preview.hint": "La vista previa se actualiza mientras editas y no se guarda hasta que guardes el branding.",
45
+ "ecommerce.backend.store.branding.preview.navCart": "Carrito",
46
+ "ecommerce.backend.store.branding.preview.navCategories": "Categorías",
47
+ "ecommerce.backend.store.branding.preview.navShop": "Tienda",
48
+ "ecommerce.backend.store.branding.preview.productName": "Producto de ejemplo",
49
+ "ecommerce.backend.store.branding.preview.title": "Vista previa de la tienda",
50
+ "ecommerce.backend.store.branding.primaryColor": "Color principal",
51
+ "ecommerce.backend.store.branding.primaryForeground": "Texto sobre el color principal",
52
+ "ecommerce.backend.store.branding.radius": "Radio de las esquinas",
53
+ "ecommerce.backend.store.branding.radiusHint": "Qué tan redondeados son los botones, las tarjetas y los campos, de cuadrado (0) a 5rem.",
54
+ "ecommerce.backend.store.branding.readOnly": "Puedes ver este branding pero no modificarlo. Para cambiarlo se necesita permiso para gestionar el branding de la tienda.",
55
+ "ecommerce.backend.store.branding.save": "Guardar branding",
56
+ "ecommerce.backend.store.branding.styleTitle": "Forma y tipografía",
57
+ "ecommerce.backend.store.branding.title": "Branding",
58
+ "ecommerce.backend.store.channels.actions.add": "Añadir vínculo de canal",
59
+ "ecommerce.backend.store.channels.actions.delete": "Quitar",
60
+ "ecommerce.backend.store.channels.actions.edit": "Editar",
61
+ "ecommerce.backend.store.channels.actions.makeDefault": "Hacer predeterminado",
62
+ "ecommerce.backend.store.channels.actions.view": "Ver",
63
+ "ecommerce.backend.store.channels.add.submit": "Añadir vínculo",
64
+ "ecommerce.backend.store.channels.add.title": "Añadir vínculo de canal",
65
+ "ecommerce.backend.store.channels.columns.channel": "Canal de venta",
66
+ "ecommerce.backend.store.channels.columns.count": "Productos mostrados",
67
+ "ecommerce.backend.store.channels.columns.default": "Predeterminado",
68
+ "ecommerce.backend.store.channels.columns.priceKind": "Tipo de precio",
69
+ "ecommerce.backend.store.channels.columns.priceSortFallback": "Orden por precio en catálogos grandes",
70
+ "ecommerce.backend.store.channels.columns.requireAuthentication": "Inicio de sesión",
71
+ "ecommerce.backend.store.channels.columns.scope": "Surtido",
72
+ "ecommerce.backend.store.channels.count.authenticationEmpty": "0 productos visibles para visitantes anónimos: se requiere iniciar sesión y el alcance no coincide con ningún producto ni siquiera sin ese requisito.",
73
+ "ecommerce.backend.store.channels.count.basis": "Contado para un visitante anónimo, incluidas las restricciones del grupo de clientes predeterminado. Los cambios sin guardar también se cuentan.",
74
+ "ecommerce.backend.store.channels.count.cellReduced": "0 ({count} sin el requisito de inicio de sesión)",
75
+ "ecommerce.backend.store.channels.count.error": "El recuento de productos no está disponible ahora mismo.",
76
+ "ecommerce.backend.store.channels.count.loading": "Contando productos…",
77
+ "ecommerce.backend.store.channels.count.reducedByAuthentication": "0 productos para visitantes anónimos porque se requiere iniciar sesión; {count} sin ese requisito.",
78
+ "ecommerce.backend.store.channels.count.restricted": "Productos que coinciden con este alcance: {count}.",
79
+ "ecommerce.backend.store.channels.count.saveFirst": "Guarda el vínculo para ver cuántos productos muestra. Después, el recuento se actualiza al cambiar el alcance.",
80
+ "ecommerce.backend.store.channels.count.title": "Recuento de productos en vivo",
81
+ "ecommerce.backend.store.channels.count.unindexed": "{count} productos activos aún no están indexados para la visibilidad. Con un alcance restringido permanecen ocultos y no se cuentan hasta que la indexación se ponga al día.",
82
+ "ecommerce.backend.store.channels.count.unrestricted": "Todos los productos del catálogo de este canal: {count}.",
83
+ "ecommerce.backend.store.channels.defaultBadge": "Predeterminado",
84
+ "ecommerce.backend.store.channels.delete.confirmButton": "Quitar vínculo",
85
+ "ecommerce.backend.store.channels.delete.confirmText": "La tienda deja de usar este canal. El canal de venta en sí no se elimina y puede volver a vincularse.",
86
+ "ecommerce.backend.store.channels.delete.confirmTextDefault": "Este es el vínculo predeterminado. Hasta que hagas predeterminado otro vínculo, la tienda no puede servir y responde a cada solicitud con un error. El canal de venta en sí no se elimina.",
87
+ "ecommerce.backend.store.channels.delete.confirmTitle": "¿Quitar el vínculo «{channel}»?",
88
+ "ecommerce.backend.store.channels.description": "Los canales de venta por los que vende esta tienda. Cada vínculo decide qué muestra el canal y a quién: tipo de precio, alcance del surtido, requisito de inicio de sesión y orden por precio en catálogos grandes.",
89
+ "ecommerce.backend.store.channels.dialog.description": "Vincula un canal de venta a esta tienda y decide qué muestra y a quién: el alcance del surtido, el requisito de inicio de sesión y cómo se comporta el orden por precio en un catálogo grande.",
90
+ "ecommerce.backend.store.channels.edit.submit": "Guardar vínculo",
91
+ "ecommerce.backend.store.channels.edit.title": "Editar vínculo de canal",
92
+ "ecommerce.backend.store.channels.empty.description": "Vincula un canal de venta y hazlo predeterminado. La tienda no puede servir sin un vínculo de canal predeterminado.",
93
+ "ecommerce.backend.store.channels.empty.title": "Aún no hay ningún canal de venta vinculado",
94
+ "ecommerce.backend.store.channels.entityPlural": "vínculos de canal",
95
+ "ecommerce.backend.store.channels.errors.create": "No se pudo añadir el vínculo de canal.",
96
+ "ecommerce.backend.store.channels.errors.delete": "No se pudo quitar el vínculo de canal.",
97
+ "ecommerce.backend.store.channels.errors.load": "No se pudieron cargar los vínculos de canal.",
98
+ "ecommerce.backend.store.channels.errors.makeDefault": "No se pudo hacer predeterminado el vínculo.",
99
+ "ecommerce.backend.store.channels.errors.update": "No se pudo actualizar el vínculo de canal.",
100
+ "ecommerce.backend.store.channels.flash.created": "Vínculo de canal añadido",
101
+ "ecommerce.backend.store.channels.flash.defaultSet": "{channel} es ahora el canal predeterminado de esta tienda.",
102
+ "ecommerce.backend.store.channels.flash.deleted": "Vínculo de canal quitado",
103
+ "ecommerce.backend.store.channels.flash.updated": "Vínculo de canal actualizado",
104
+ "ecommerce.backend.store.channels.form.categoryIds": "Categorías",
105
+ "ecommerce.backend.store.channels.form.categoryPlaceholder": "Buscar categorías",
106
+ "ecommerce.backend.store.channels.form.excludeCategoryIds": "Categorías",
107
+ "ecommerce.backend.store.channels.form.excludeHint": "Los productos, categorías y etiquetas ocultos prevalecen sobre la selección anterior.",
108
+ "ecommerce.backend.store.channels.form.excludeProductIds": "Productos",
109
+ "ecommerce.backend.store.channels.form.excludeTagIds": "Etiquetas",
110
+ "ecommerce.backend.store.channels.form.excludeTitle": "Ocultar siempre",
111
+ "ecommerce.backend.store.channels.form.includeHint": "Un producto se muestra cuando está en alguna de las categorías elegidas y tiene alguna de las etiquetas elegidas. Un selector vacío no filtra, así que deja ambos vacíos para mostrar todo el catálogo del canal; vaciar un selector nunca oculta todo.",
112
+ "ecommerce.backend.store.channels.form.includeTitle": "Mostrar solo productos de",
113
+ "ecommerce.backend.store.channels.form.isDefault": "Canal predeterminado de esta tienda",
114
+ "ecommerce.backend.store.channels.form.isDefaultHint": "La tienda sirve el vínculo predeterminado. Hacer predeterminado este vínculo quita la marca del predeterminado actual.",
115
+ "ecommerce.backend.store.channels.form.isDefaultLocked": "Este es el vínculo predeterminado. Para cambiarlo, haz predeterminado otro vínculo; una tienda sin canal predeterminado no puede servir.",
116
+ "ecommerce.backend.store.channels.form.policiesTitle": "Políticas del catálogo",
117
+ "ecommerce.backend.store.channels.form.priceKind": "Tipo de precio sustituto",
118
+ "ecommerce.backend.store.channels.form.priceKindHint": "Opcional. El tipo de precio que ven los visitantes anónimos en este canal. Déjalo vacío para usar el tipo de precio predeterminado.",
119
+ "ecommerce.backend.store.channels.form.priceKindPlaceholder": "Tipo de precio predeterminado",
120
+ "ecommerce.backend.store.channels.form.priceSortFallback": "Orden por precio a partir de {cap} productos",
121
+ "ecommerce.backend.store.channels.form.priceSortFallbackHint": "La tienda ordena por precio como máximo {cap} productos coincidentes. Elige qué ocurre en este canal cuando coinciden más.",
122
+ "ecommerce.backend.store.channels.form.productPlaceholder": "Buscar productos",
123
+ "ecommerce.backend.store.channels.form.requireAuthentication": "Exigir inicio de sesión para ver productos",
124
+ "ecommerce.backend.store.channels.form.requireAuthenticationHint": "Los visitantes anónimos no ven productos en este canal; los compradores con sesión iniciada ven su surtido habitual. Solo afecta a la visibilidad del catálogo, no a toda la tienda: las páginas y el inicio de sesión siguen accesibles. Se aplica al guardar.",
125
+ "ecommerce.backend.store.channels.form.salesChannel": "Canal de venta",
126
+ "ecommerce.backend.store.channels.form.salesChannelPlaceholder": "Selecciona un canal de venta…",
127
+ "ecommerce.backend.store.channels.form.tagIds": "Etiquetas",
128
+ "ecommerce.backend.store.channels.form.tagPlaceholder": "Buscar etiquetas",
129
+ "ecommerce.backend.store.channels.noDefault": "Ningún vínculo es el predeterminado, así que la tienda no puede servir. Haz predeterminado uno de ellos.",
130
+ "ecommerce.backend.store.channels.priceKindDefault": "Tipo de precio predeterminado",
131
+ "ecommerce.backend.store.channels.priceSortFallback.approximate": "Orden aproximado según el tipo de precio predeterminado",
132
+ "ecommerce.backend.store.channels.priceSortFallback.approximateConsequence": "Cuando coinciden más de {cap} productos, el orden por precio se calcula con el tipo de precio predeterminado, no con los precios propios del comprador. La única señal es una cabecera de respuesta que ningún cliente ve, así que los compradores con precios contractuales pueden ver un orden que no coincide con lo que pagan.",
133
+ "ecommerce.backend.store.channels.priceSortFallback.unavailable": "Retirar el orden por precio",
134
+ "ecommerce.backend.store.channels.priceSortFallback.unavailableConsequence": "Cuando coinciden más de {cap} productos, el orden por precio se retira en este canal: ya no se ofrecen precio ascendente ni descendente, y un comprador que llega con un enlace compartido ordenado por precio recibe el catálogo en el orden predeterminado en lugar de un error.",
135
+ "ecommerce.backend.store.channels.public": "Público",
136
+ "ecommerce.backend.store.channels.readOnly": "Puedes ver estos vínculos pero no cambiarlos. Cambiarlos requiere permiso para gestionar los canales de la tienda.",
137
+ "ecommerce.backend.store.channels.requireAuthenticationBadge": "Requiere inicio de sesión",
138
+ "ecommerce.backend.store.channels.scopeAll": "Todos los productos",
139
+ "ecommerce.backend.store.channels.scopeRestricted": "Restringido ({count} reglas)",
140
+ "ecommerce.backend.store.channels.title": "Canales",
141
+ "ecommerce.backend.store.channels.view.title": "Vínculo de canal",
142
+ "ecommerce.backend.store.domains.actions.add": "Añadir vínculo de dominio",
143
+ "ecommerce.backend.store.domains.actions.delete": "Quitar",
144
+ "ecommerce.backend.store.domains.actions.edit": "Editar",
145
+ "ecommerce.backend.store.domains.actions.makePrimary": "Hacer principal",
146
+ "ecommerce.backend.store.domains.add.description": "Vincula un dominio registrado, opcionalmente con un prefijo de ruta, para que la tienda sea accesible allí. Solo sirve un dominio activo.",
147
+ "ecommerce.backend.store.domains.add.submit": "Añadir vínculo",
148
+ "ecommerce.backend.store.domains.add.title": "Añadir vínculo de dominio",
149
+ "ecommerce.backend.store.domains.columns.domain": "Dominio",
150
+ "ecommerce.backend.store.domains.columns.failureReason": "Motivo del error",
151
+ "ecommerce.backend.store.domains.columns.lastDnsCheck": "Última comprobación de DNS",
152
+ "ecommerce.backend.store.domains.columns.primary": "Principal",
153
+ "ecommerce.backend.store.domains.columns.status": "Estado",
154
+ "ecommerce.backend.store.domains.delete.confirmButton": "Quitar vínculo",
155
+ "ecommerce.backend.store.domains.delete.confirmText": "La tienda dejará de responder en esta dirección. El dominio en sí no se elimina y se puede vincular de nuevo.",
156
+ "ecommerce.backend.store.domains.delete.confirmTextPrimary": "Este es el vínculo principal. La tienda dejará de responder en esta dirección y no tendrá dominio principal hasta que elijas otro. El dominio en sí no se elimina.",
157
+ "ecommerce.backend.store.domains.delete.confirmTitle": "¿Quitar el vínculo «{address}»?",
158
+ "ecommerce.backend.store.domains.description": "Los dominios en los que se sirve esta tienda. El estado del dominio se gestiona en la gestión de dominios y aquí es de solo lectura. Solo sirve un dominio activo.",
159
+ "ecommerce.backend.store.domains.edit.submit": "Guardar vínculo",
160
+ "ecommerce.backend.store.domains.edit.title": "Editar vínculo de dominio",
161
+ "ecommerce.backend.store.domains.empty.description": "Vincula un dominio activo, opcionalmente con un prefijo de ruta, para que la tienda sea accesible.",
162
+ "ecommerce.backend.store.domains.empty.title": "Aún no hay dominios vinculados",
163
+ "ecommerce.backend.store.domains.entityPlural": "vínculos de dominio",
164
+ "ecommerce.backend.store.domains.errors.create": "No se pudo añadir el vínculo de dominio.",
165
+ "ecommerce.backend.store.domains.errors.delete": "No se pudo quitar el vínculo de dominio.",
166
+ "ecommerce.backend.store.domains.errors.load": "No se pudieron cargar los vínculos de dominio.",
167
+ "ecommerce.backend.store.domains.errors.loadMappings": "No se pudieron cargar los dominios disponibles.",
168
+ "ecommerce.backend.store.domains.errors.makePrimary": "No se pudo hacer principal el vínculo.",
169
+ "ecommerce.backend.store.domains.errors.update": "No se pudo actualizar el vínculo de dominio.",
170
+ "ecommerce.backend.store.domains.failure.aRecordMismatch": "El registro A apunta a {actual} en lugar de {expected}",
171
+ "ecommerce.backend.store.domains.failure.apexNotEnabled": "El registro A apunta a {actual}, pero los dominios raíz no están habilitados en esta instalación",
172
+ "ecommerce.backend.store.domains.failure.cnameMismatch": "El registro CNAME apunta a {actual} en lugar de {expected}",
173
+ "ecommerce.backend.store.domains.failure.dnsLookup": "La consulta DNS del registro {recordType} falló",
174
+ "ecommerce.backend.store.domains.failure.httpStatus": "La comprobación TLS devolvió HTTP {status}",
175
+ "ecommerce.backend.store.domains.failure.noRecords": "No se encontró ningún registro CNAME ni A",
176
+ "ecommerce.backend.store.domains.failure.proxyUnreachable": "El dominio está detrás de un proxy que no reenvía el tráfico a esta plataforma",
177
+ "ecommerce.backend.store.domains.failure.tlsFailed": "La comprobación TLS falló",
178
+ "ecommerce.backend.store.domains.failure.tlsTimeout": "La comprobación TLS superó el tiempo de espera",
179
+ "ecommerce.backend.store.domains.flash.created": "Vínculo de dominio añadido",
180
+ "ecommerce.backend.store.domains.flash.deleted": "Vínculo de dominio quitado",
181
+ "ecommerce.backend.store.domains.flash.primaryChanged": "{address} es ahora el dominio principal. {previous} ya no es principal.",
182
+ "ecommerce.backend.store.domains.flash.primarySet": "{address} es ahora el dominio principal.",
183
+ "ecommerce.backend.store.domains.flash.updated": "Vínculo de dominio actualizado",
184
+ "ecommerce.backend.store.domains.form.domain": "Dominio",
185
+ "ecommerce.backend.store.domains.form.pathPrefix": "Prefijo de ruta",
186
+ "ecommerce.backend.store.domains.form.pathPrefixHint": "Opcional. Sirve esta tienda solo bajo una ruta como /de. Déjalo vacío para servir todo el dominio. Si dos prefijos se solapan, gana el prefijo coincidente más largo.",
187
+ "ecommerce.backend.store.domains.form.primary": "Dominio principal",
188
+ "ecommerce.backend.store.domains.form.primaryHint": "La dirección usada para los enlaces canónicos. Al hacer principal este vínculo, el vínculo principal actual de esta tienda deja de serlo.",
189
+ "ecommerce.backend.store.domains.limitHint": "Una organización tiene como máximo dos dominios: uno activo y uno pendiente de reemplazo. Para servir otra tienda en el mismo dominio, dale un prefijo de ruta como /de en lugar de añadir un dominio.",
190
+ "ecommerce.backend.store.domains.manageLink": "Abrir gestión de dominios",
191
+ "ecommerce.backend.store.domains.neverChecked": "Aún no comprobado",
192
+ "ecommerce.backend.store.domains.noMappings": "Esta organización aún no tiene dominios. Registra uno en la gestión de dominios y luego vincúlalo aquí.",
193
+ "ecommerce.backend.store.domains.primaryBadge": "Principal",
194
+ "ecommerce.backend.store.domains.readOnly": "Puedes ver estos vínculos pero no cambiarlos. Cambiarlos requiere permiso para gestionar los dominios de la tienda.",
195
+ "ecommerce.backend.store.domains.removed.description": "El dominio al que apunta este vínculo se eliminó en la gestión de dominios, por lo que la tienda ya no responde aquí. Edita el vínculo para elegir otro dominio, o quítalo.",
196
+ "ecommerce.backend.store.domains.removed.title": "Dominio eliminado",
197
+ "ecommerce.backend.store.domains.removedHostname": "Dominio eliminado",
198
+ "ecommerce.backend.store.domains.status.active": "Activo",
199
+ "ecommerce.backend.store.domains.status.dnsFailed": "DNS fallido",
200
+ "ecommerce.backend.store.domains.status.pending": "Pendiente",
201
+ "ecommerce.backend.store.domains.status.removed": "Eliminado",
202
+ "ecommerce.backend.store.domains.status.tlsFailed": "TLS fallido",
203
+ "ecommerce.backend.store.domains.status.unknown": "Desconocido",
204
+ "ecommerce.backend.store.domains.status.verified": "Verificado",
205
+ "ecommerce.backend.store.domains.title": "Dominios",
206
+ "ecommerce.backend.store.domains.unavailable": "Los detalles del dominio no están disponibles ahora mismo.",
207
+ "ecommerce.backend.store.domains.warning.notServing": "Este dominio está {status}. Solo sirve un dominio activo, así que la tienda aún no responde en {hostname}.",
208
+ "ecommerce.backend.store.entityType": "Tienda",
209
+ "ecommerce.backend.store.errors.load": "No se pudo cargar la tienda.",
210
+ "ecommerce.backend.store.general.description": "El nombre de la tienda, sus identificadores, los idiomas en los que se muestra y su moneda.",
211
+ "ecommerce.backend.store.general.errors.save": "No se pudo guardar la tienda.",
212
+ "ecommerce.backend.store.general.flash.saved": "Tienda guardada",
213
+ "ecommerce.backend.store.general.readOnly": "Puede ver esta tienda pero no modificarla. Para modificarla se necesita permiso para gestionar tiendas.",
214
+ "ecommerce.backend.store.general.save": "Guardar cambios",
215
+ "ecommerce.backend.store.general.status": "Estado",
216
+ "ecommerce.backend.store.general.statusArchivedHint": "Una tienda archivada no se puede desarchivar.",
217
+ "ecommerce.backend.store.general.statusHint": "Una tienda en borrador no sirve su escaparate. Archive una tienda desde la lista de tiendas.",
218
+ "ecommerce.backend.store.general.title": "Identidad y localización",
219
+ "ecommerce.backend.store.loading": "Cargando tienda...",
220
+ "ecommerce.backend.store.notFound.description": "Esta tienda no existe en la organización seleccionada o fue eliminada.",
221
+ "ecommerce.backend.store.notFound.label": "Tienda no encontrada",
222
+ "ecommerce.backend.store.seo.defaultMetaDescription": "Descripción meta predeterminada",
223
+ "ecommerce.backend.store.seo.defaultMetaDescriptionHint": "Una breve descripción de tu tienda que se muestra en los resultados de búsqueda cuando no hay descripción de producto disponible.",
224
+ "ecommerce.backend.store.seo.description": "Configura cómo aparece tu tienda en los resultados de búsqueda y para los rastreadores automatizados.",
225
+ "ecommerce.backend.store.seo.errors.save": "No se pudo guardar la configuración de SEO.",
226
+ "ecommerce.backend.store.seo.flash.saved": "Configuración de SEO guardada",
227
+ "ecommerce.backend.store.seo.googleSiteVerification": "Token de verificación del sitio de Google",
228
+ "ecommerce.backend.store.seo.googleSiteVerificationHint": "El token proporcionado por Google Search Console para verificar la propiedad del sitio.",
229
+ "ecommerce.backend.store.seo.readOnly": "Puedes ver esta configuración de SEO pero no puedes cambiarla. Cambiarla requiere permiso para administrar tiendas.",
230
+ "ecommerce.backend.store.seo.robotsTxt": "robots.txt",
231
+ "ecommerce.backend.store.seo.robotsTxtHint": "Instrucciones para los rastreadores de motores de búsqueda sobre qué partes de tu tienda indexar.",
232
+ "ecommerce.backend.store.seo.save": "Guardar configuración SEO",
233
+ "ecommerce.backend.store.seo.siteName": "Nombre del sitio",
234
+ "ecommerce.backend.store.seo.siteNameHint": "El nombre de tu tienda que se muestra en los resultados de búsqueda y en la pestaña del navegador.",
235
+ "ecommerce.backend.store.seo.title": "Optimización para motores de búsqueda",
236
+ "ecommerce.backend.store.summary.code": "Código",
237
+ "ecommerce.backend.store.summary.currency": "Moneda",
238
+ "ecommerce.backend.store.summary.defaultChannel": "Canal predeterminado",
239
+ "ecommerce.backend.store.summary.defaultLocale": "Idioma predeterminado",
240
+ "ecommerce.backend.store.summary.primaryDomain": "Dominio principal",
241
+ "ecommerce.backend.store.summary.slug": "Slug",
242
+ "ecommerce.backend.store.summary.supportedLocales": "Idiomas admitidos",
243
+ "ecommerce.backend.store.summary.title": "Resumen de la tienda",
244
+ "ecommerce.backend.store.tabs.ariaLabel": "Secciones de la tienda",
245
+ "ecommerce.backend.store.tabs.branding": "Branding",
246
+ "ecommerce.backend.store.tabs.channels": "Canales",
247
+ "ecommerce.backend.store.tabs.domains": "Dominios",
248
+ "ecommerce.backend.store.tabs.general": "General",
249
+ "ecommerce.backend.store.tabs.seo": "SEO",
250
+ "ecommerce.backend.stores.actions.archive": "Archivar",
251
+ "ecommerce.backend.stores.actions.channels": "Canales",
252
+ "ecommerce.backend.stores.actions.create": "Crear tienda",
253
+ "ecommerce.backend.stores.actions.domains": "Dominios",
254
+ "ecommerce.backend.stores.actions.edit": "Editar",
255
+ "ecommerce.backend.stores.archive.confirmButton": "Archivar tienda",
256
+ "ecommerce.backend.stores.archive.confirmText": "Una tienda archivada deja de servir su escaparate (HTTP 410). Su configuración e historial se conservan, pero no se puede desarchivar.",
257
+ "ecommerce.backend.stores.archive.confirmTitle": "¿Archivar la tienda \"{name}\"?",
258
+ "ecommerce.backend.stores.columns.channel": "Canal",
259
+ "ecommerce.backend.stores.columns.code": "Código",
260
+ "ecommerce.backend.stores.columns.created": "Creada",
261
+ "ecommerce.backend.stores.columns.name": "Nombre",
262
+ "ecommerce.backend.stores.columns.noDefaultChannel": "Sin canal predeterminado",
263
+ "ecommerce.backend.stores.columns.primaryDomain": "Dominio principal",
264
+ "ecommerce.backend.stores.columns.status": "Estado",
265
+ "ecommerce.backend.stores.create.description": "La tienda empieza como borrador. Después, añade su dominio y su canal de venta para publicarla.",
266
+ "ecommerce.backend.stores.create.submit": "Crear tienda",
267
+ "ecommerce.backend.stores.create.title": "Crear tienda",
268
+ "ecommerce.backend.stores.empty.description": "Un espacio de trabajo nuevo recibe automáticamente una tienda en borrador. Si este espacio de trabajo existía antes de activar el módulo de tiendas, ejecuta la acción de actualización «Crear la tienda predeterminada» desde el panel para crearla, o crea una tienda ahora.",
269
+ "ecommerce.backend.stores.empty.descriptionReadOnly": "Un espacio de trabajo nuevo recibe automáticamente una tienda en borrador. Si este espacio de trabajo existía antes de activar el módulo de tiendas, un administrador debe ejecutar la acción de actualización «Crear la tienda predeterminada» desde el panel.",
270
+ "ecommerce.backend.stores.empty.title": "Todavía no hay tiendas",
271
+ "ecommerce.backend.stores.entityPlural": "tiendas",
272
+ "ecommerce.backend.stores.errors.archive": "No se pudo archivar la tienda.",
273
+ "ecommerce.backend.stores.errors.create": "No se pudo crear la tienda.",
274
+ "ecommerce.backend.stores.errors.load": "No se pudieron cargar las tiendas.",
275
+ "ecommerce.backend.stores.filters.status": "Estado",
276
+ "ecommerce.backend.stores.flash.archived": "Tienda archivada",
277
+ "ecommerce.backend.stores.flash.created": "Tienda creada",
278
+ "ecommerce.backend.stores.form.code": "Código",
279
+ "ecommerce.backend.stores.form.codeHint": "Identificador interno, único en el espacio de trabajo. Letras minúsculas, dígitos, guiones y guiones bajos.",
280
+ "ecommerce.backend.stores.form.currency": "Moneda",
281
+ "ecommerce.backend.stores.form.currencyHint": "Código ISO de tres letras, por ejemplo EUR.",
282
+ "ecommerce.backend.stores.form.defaultLocale": "Idioma predeterminado",
283
+ "ecommerce.backend.stores.form.defaultLocaleHint": "Un código de idioma como en o pl-PL.",
284
+ "ecommerce.backend.stores.form.name": "Nombre",
285
+ "ecommerce.backend.stores.form.slug": "Slug",
286
+ "ecommerce.backend.stores.form.slugHint": "Nombre corto usado en las direcciones de la tienda, único en el espacio de trabajo. Letras minúsculas, dígitos y guiones.",
287
+ "ecommerce.backend.stores.form.supportedLocales": "Idiomas admitidos",
288
+ "ecommerce.backend.stores.form.supportedLocalesHint": "Idiomas en los que se puede mostrar la tienda. Debe incluir el idioma predeterminado.",
289
+ "ecommerce.backend.stores.search.placeholder": "Buscar por nombre, código o slug",
290
+ "ecommerce.backend.stores.status.active": "Activa",
291
+ "ecommerce.backend.stores.status.archived": "Archivada",
292
+ "ecommerce.backend.stores.status.draft": "Borrador",
293
+ "ecommerce.errors.brandingPermissionRequired": "No tienes permiso para definir la marca de la tienda.",
294
+ "ecommerce.errors.brandingRouteRequired": "La marca no se puede cambiar aquí. Guárdala mediante el endpoint de marca (PUT /api/ecommerce/stores/{id}/branding).",
295
+ "ecommerce.errors.channelBindingNotFound": "El vínculo de canal seleccionado no existe en esta organización.",
296
+ "ecommerce.errors.codeDuplicate": "Ya existe una tienda con este código.",
297
+ "ecommerce.errors.defaultChannelConflict": "Otra vinculación de canal de esta tienda se convirtió en predeterminada al mismo tiempo. Recarga e inténtalo de nuevo.",
298
+ "ecommerce.errors.domainBindingDuplicate": "Este dominio y prefijo de ruta ya sirven una tienda.",
299
+ "ecommerce.errors.domainBindingNotFound": "La vinculación de dominio seleccionada no existe en esta organización.",
300
+ "ecommerce.errors.domainMappingNotFound": "El dominio seleccionado no pertenece a esta organización.",
301
+ "ecommerce.errors.domainMappingsUnavailable": "Los dominios no están disponibles en este momento. Inténtalo más tarde.",
302
+ "ecommerce.errors.internal": "Algo salió mal. Inténtalo de nuevo.",
303
+ "ecommerce.errors.invalidJsonBody": "El cuerpo de la solicitud no es un JSON válido.",
304
+ "ecommerce.errors.operationBlocked": "Este cambio se ha bloqueado. Revisa la tienda e inténtalo de nuevo.",
305
+ "ecommerce.errors.organizationRequired": "Seleccione primero una organización.",
306
+ "ecommerce.errors.priceKindNotFound": "El tipo de precio seleccionado no existe en esta organización.",
307
+ "ecommerce.errors.primaryConflict": "Otra tienda se convirtió en principal al mismo tiempo. Recarga e inténtalo de nuevo.",
308
+ "ecommerce.errors.primaryDomainConflict": "Otra vinculación de dominio de esta tienda se convirtió en principal al mismo tiempo. Recarga e inténtalo de nuevo.",
309
+ "ecommerce.errors.salesChannelNotFound": "El canal de venta seleccionado no existe en esta organización.",
310
+ "ecommerce.errors.slugDuplicate": "Ya existe una tienda con este slug.",
311
+ "ecommerce.errors.storeNotFound": "La tienda seleccionada no existe en esta organización.",
312
+ "ecommerce.errors.unauthorized": "Inicia sesión para continuar.",
313
+ "ecommerce.module.title": "Tiendas",
314
+ "ecommerce.notifications.store.assortmentEmpty.body": "Los alcances del canal y del grupo de clientes no dejan productos visibles para estos compradores.",
315
+ "ecommerce.notifications.store.assortmentEmpty.title": "El surtido de la tienda está vacío para algunos compradores",
316
+ "ecommerce.notifications.store.channelBindingMissing.body": "La tienda no puede atender solicitudes hasta que se configure una vinculación de canal predeterminada.",
317
+ "ecommerce.notifications.store.channelBindingMissing.title": "La tienda no tiene un canal de venta predeterminado",
318
+ "ecommerce.search.badge.store": "Tienda",
319
+ "ecommerce.search.status.active": "Activa",
320
+ "ecommerce.search.status.archived": "Archivada",
321
+ "ecommerce.search.status.draft": "Borrador",
322
+ "ecommerce.validation.archivedStoreTerminal": "Una tienda archivada no se puede volver a abrir. Crea una tienda nueva en su lugar.",
323
+ "ecommerce.validation.backorderLeadTimeRequired": "Introduzca el plazo de entrega del pedido pendiente en días enteros (0 o más).",
324
+ "ecommerce.validation.borderRadiusInvalid": "El radio de las esquinas debe ser 0 o un valor en rem (hasta 5rem) o px (hasta 80px).",
325
+ "ecommerce.validation.brandingFieldUnknown": "Este ajuste de marca no existe.",
326
+ "ecommerce.validation.codeInvalid": "El código solo puede contener letras minúsculas, dígitos, guiones y guiones bajos.",
327
+ "ecommerce.validation.colorInvalid": "El color debe ser un valor OKLCH como oklch(0.3 0.15 270) o un valor hexadecimal como #1a2b3c.",
328
+ "ecommerce.validation.currencyCodeInvalid": "El código de moneda debe ser un código ISO de tres letras, por ejemplo EUR.",
329
+ "ecommerce.validation.defaultLocaleNotSupported": "El idioma predeterminado debe estar entre los idiomas admitidos.",
330
+ "ecommerce.validation.draftRequireAuthenticationInvalid": "El valor borrador de autenticación obligatoria debe ser true o false.",
331
+ "ecommerce.validation.draftScopeInvalid": "El alcance borrador solo puede contener ids de categorías, etiquetas y de productos, categorías y etiquetas excluidos.",
332
+ "ecommerce.validation.draftScopeJsonInvalid": "El alcance borrador debe ser un alcance de surtido codificado como JSON.",
333
+ "ecommerce.validation.fontNotAllowed": "Elige una fuente de la lista de fuentes disponibles.",
334
+ "ecommerce.validation.googleSiteVerificationInvalid": "Introduce el token de Google Search Console: solo letras, dígitos, guiones y guiones bajos, hasta 128 caracteres.",
335
+ "ecommerce.validation.localeInvalid": "El idioma debe ser un código de idioma como en o en-US.",
336
+ "ecommerce.validation.localesDuplicate": "Cada idioma admitido solo puede aparecer una vez.",
337
+ "ecommerce.validation.pathPrefixInvalid": "El prefijo de ruta solo puede contener letras minúsculas, dígitos, guiones y barras, por ejemplo /shop.",
338
+ "ecommerce.validation.slugInvalid": "El slug solo puede contener letras minúsculas, dígitos y guiones simples entre ellos.",
339
+ "ecommerce.validation.urlInvalid": "Introduce una URL http(s) válida o una ruta que empiece por /.",
340
+ "notifications.categories.ecommerce": "Comercio electrónico"
341
+ }