@coveo/atomic 3.62.0 → 3.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/custom-elements.json +12960 -12663
  2. package/dist/cjs/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.cjs +1 -0
  3. package/dist/cjs/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.cjs +1 -1
  4. package/dist/cjs/components/commerce/atomic-commerce-facet/atomic-commerce-facet.cjs +1 -1
  5. package/dist/cjs/components/commerce/atomic-commerce-interface/atomic-commerce-interface.cjs +25 -4
  6. package/dist/cjs/components/commerce/atomic-commerce-pager/atomic-commerce-pager.cjs +3 -2
  7. package/dist/cjs/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.cjs +1 -1
  8. package/dist/cjs/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.cjs +25 -4
  9. package/dist/cjs/components/commerce/atomic-product-field-condition/atomic-product-field-condition.cjs +1 -4
  10. package/dist/cjs/components/commerce/atomic-product-template/atomic-product-template.cjs +15 -1
  11. package/dist/cjs/components/common/facets/facet-search/facet-search-aria-live.cjs +21 -8
  12. package/dist/cjs/components/common/interface/i18n.cjs +6 -2
  13. package/dist/cjs/components/common/interface/interface-controller.cjs +8 -4
  14. package/dist/cjs/components/common/pager/pager-fit-controller.cjs +72 -0
  15. package/dist/cjs/components/common/query-error/icon.cjs +7 -26
  16. package/dist/cjs/components/common/query-error/icons.cjs +68 -0
  17. package/dist/cjs/components/common/template-controller/template-utils.cjs +9 -0
  18. package/dist/cjs/components/insight/atomic-insight-facet/atomic-insight-facet.cjs +1 -1
  19. package/dist/cjs/components/insight/atomic-insight-pager/atomic-insight-pager.cjs +3 -2
  20. package/dist/cjs/components/insight/atomic-insight-result-children-template/atomic-insight-result-children-template.cjs +1 -5
  21. package/dist/cjs/components/insight/atomic-insight-result-template/atomic-insight-result-template.cjs +15 -1
  22. package/dist/cjs/components/insight/atomic-insight-smart-snippet/atomic-insight-smart-snippet.cjs +3 -3
  23. package/dist/cjs/components/recommendations/atomic-recs-result-template/atomic-recs-result-template.cjs +15 -1
  24. package/dist/cjs/components/search/atomic-category-facet/atomic-category-facet.cjs +1 -1
  25. package/dist/cjs/components/search/atomic-color-facet/atomic-color-facet.cjs +1 -1
  26. package/dist/cjs/components/search/atomic-facet/atomic-facet.cjs +1 -1
  27. package/dist/cjs/components/search/atomic-field-condition/atomic-field-condition.cjs +1 -4
  28. package/dist/cjs/components/search/atomic-pager/atomic-pager.cjs +3 -2
  29. package/dist/cjs/components/search/atomic-result-children-template/atomic-result-children-template.cjs +15 -1
  30. package/dist/cjs/components/search/atomic-result-date/atomic-result-date.cjs +11 -16
  31. package/dist/cjs/components/search/atomic-result-template/atomic-result-template.cjs +15 -1
  32. package/dist/cjs/components/search/atomic-results-per-page/atomic-results-per-page.cjs +1 -1
  33. package/dist/cjs/decorators/bind-state.cjs +38 -8
  34. package/dist/cjs/decorators/with-tailwind-styles.cjs +2 -1
  35. package/dist/cjs/generated/dayjs-locales-data.cjs +43 -43
  36. package/dist/cjs/global/environment.cjs +1 -1
  37. package/dist/cjs/utils/dayjs-locales.cjs +23 -9
  38. package/dist/cjs/utils/field-utils.cjs +5 -1
  39. package/dist/cjs/utils/init-queue.cjs +6 -4
  40. package/dist/cjs/utils/locale-utils.cjs +50 -0
  41. package/dist/cjs/utils/replace-breakpoint-utils.cjs +9 -4
  42. package/dist/cjs/versions.cjs +1 -1
  43. package/dist/esm/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +1 -0
  44. package/dist/esm/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +1 -1
  45. package/dist/esm/components/commerce/atomic-commerce-facet/atomic-commerce-facet.js +1 -1
  46. package/dist/esm/components/commerce/atomic-commerce-interface/atomic-commerce-interface.js +25 -4
  47. package/dist/esm/components/commerce/atomic-commerce-pager/atomic-commerce-pager.js +3 -2
  48. package/dist/esm/components/commerce/atomic-commerce-products-per-page/atomic-commerce-products-per-page.js +1 -1
  49. package/dist/esm/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.js +25 -4
  50. package/dist/esm/components/commerce/atomic-commerce-search-box/atomic-commerce-search-box.js +1 -1
  51. package/dist/esm/components/commerce/atomic-product-field-condition/atomic-product-field-condition.js +2 -5
  52. package/dist/esm/components/commerce/atomic-product-template/atomic-product-template.js +16 -2
  53. package/dist/esm/components/common/facets/facet-search/facet-search-aria-live.js +21 -8
  54. package/dist/esm/components/common/interface/i18n.js +6 -2
  55. package/dist/esm/components/common/interface/interface-controller.js +8 -4
  56. package/dist/esm/components/common/pager/pager-fit-controller.js +34 -0
  57. package/dist/esm/components/common/query-error/icon.js +5 -23
  58. package/dist/esm/components/common/query-error/icons.js +17 -0
  59. package/dist/esm/components/common/template-controller/template-utils.js +7 -1
  60. package/dist/esm/components/insight/atomic-insight-facet/atomic-insight-facet.js +1 -1
  61. package/dist/esm/components/insight/atomic-insight-pager/atomic-insight-pager.js +3 -2
  62. package/dist/esm/components/insight/atomic-insight-result-children/atomic-insight-result-children.js +1 -1
  63. package/dist/esm/components/insight/atomic-insight-result-children-template/atomic-insight-result-children-template.js +2 -6
  64. package/dist/esm/components/insight/atomic-insight-result-template/atomic-insight-result-template.js +16 -2
  65. package/dist/esm/components/insight/atomic-insight-smart-snippet/atomic-insight-smart-snippet.js +3 -3
  66. package/dist/esm/components/recommendations/atomic-recs-result-template/atomic-recs-result-template.js +16 -2
  67. package/dist/esm/components/search/atomic-category-facet/atomic-category-facet.js +1 -1
  68. package/dist/esm/components/search/atomic-color-facet/atomic-color-facet.js +1 -1
  69. package/dist/esm/components/search/atomic-facet/atomic-facet.js +1 -1
  70. package/dist/esm/components/search/atomic-field-condition/atomic-field-condition.js +2 -5
  71. package/dist/esm/components/search/atomic-pager/atomic-pager.js +3 -2
  72. package/dist/esm/components/search/atomic-result-children-template/atomic-result-children-template.js +16 -2
  73. package/dist/esm/components/search/atomic-result-date/atomic-result-date.js +10 -15
  74. package/dist/esm/components/search/atomic-result-template/atomic-result-template.js +16 -2
  75. package/dist/esm/components/search/atomic-results-per-page/atomic-results-per-page.js +1 -1
  76. package/dist/esm/components/search/atomic-search-box/atomic-search-box.js +1 -1
  77. package/dist/esm/decorators/bind-state.js +38 -8
  78. package/dist/esm/decorators/with-tailwind-styles.js +2 -1
  79. package/dist/esm/generated/dayjs-locales-data.js +43 -43
  80. package/dist/esm/global/environment.js +1 -1
  81. package/dist/esm/utils/dayjs-locales.js +23 -9
  82. package/dist/esm/utils/field-utils.js +5 -1
  83. package/dist/esm/utils/init-queue.js +6 -4
  84. package/dist/esm/utils/locale-utils.js +12 -0
  85. package/dist/esm/utils/replace-breakpoint-utils.js +9 -4
  86. package/dist/esm/versions.js +1 -1
  87. package/dist/lang/cs.json +1 -1
  88. package/dist/lang/da.json +1 -1
  89. package/dist/lang/de.json +1 -1
  90. package/dist/lang/el.json +1 -1
  91. package/dist/lang/es.json +1 -1
  92. package/dist/lang/fi.json +1 -1
  93. package/dist/lang/hu.json +1 -1
  94. package/dist/lang/id.json +1 -1
  95. package/dist/lang/it.json +1 -1
  96. package/dist/lang/ja.json +1 -1
  97. package/dist/lang/ko.json +1 -1
  98. package/dist/lang/nl.json +1 -1
  99. package/dist/lang/no.json +1 -1
  100. package/dist/lang/pl.json +1 -1
  101. package/dist/lang/pt-BR.json +1 -1
  102. package/dist/lang/pt.json +1 -1
  103. package/dist/lang/ru.json +1 -1
  104. package/dist/lang/sv.json +1 -1
  105. package/dist/lang/th.json +1 -1
  106. package/dist/lang/tr.json +1 -1
  107. package/dist/lang/zh-CN.json +1 -1
  108. package/dist/lang/zh-TW.json +1 -1
  109. package/dist/lang/zh.json +1 -1
  110. package/dist/types/components/commerce/atomic-commerce-interface/atomic-commerce-interface.d.ts +17 -0
  111. package/dist/types/components/commerce/atomic-commerce-pager/atomic-commerce-pager.d.ts +1 -0
  112. package/dist/types/components/commerce/atomic-commerce-recommendation-interface/atomic-commerce-recommendation-interface.d.ts +13 -0
  113. package/dist/types/components/commerce/atomic-product-template/atomic-product-template.d.ts +12 -0
  114. package/dist/types/components/common/atomic-smart-snippet-source/atomic-smart-snippet-source.d.ts +4 -4
  115. package/dist/types/components/common/facets/facet-search/facet-search-aria-live.d.ts +7 -1
  116. package/dist/types/components/common/interface/i18n.d.ts +9 -5
  117. package/dist/types/components/common/pager/pager-fit-controller.d.ts +21 -0
  118. package/dist/types/components/common/query-error/icon.d.ts +6 -0
  119. package/dist/types/components/common/query-error/icons.d.ts +5 -0
  120. package/dist/types/components/common/suggestions/suggestion-manager.d.ts +1 -1
  121. package/dist/types/components/common/suggestions/suggestions-types.d.ts +1 -1
  122. package/dist/types/components/common/template-controller/template-utils.d.ts +7 -0
  123. package/dist/types/components/insight/atomic-insight-interface/atomic-insight-interface.d.ts +4 -0
  124. package/dist/types/components/insight/atomic-insight-pager/atomic-insight-pager.d.ts +1 -0
  125. package/dist/types/components/insight/atomic-insight-result-children-template/atomic-insight-result-children-template.d.ts +4 -4
  126. package/dist/types/components/insight/atomic-insight-result-template/atomic-insight-result-template.d.ts +12 -0
  127. package/dist/types/components/recommendations/atomic-recs-interface/atomic-recs-interface.d.ts +4 -0
  128. package/dist/types/components/recommendations/atomic-recs-result-template/atomic-recs-result-template.d.ts +12 -0
  129. package/dist/types/components/search/atomic-pager/atomic-pager.d.ts +1 -0
  130. package/dist/types/components/search/atomic-result-children-template/atomic-result-children-template.d.ts +12 -0
  131. package/dist/types/components/search/atomic-result-date/atomic-result-date.d.ts +3 -0
  132. package/dist/types/components/search/atomic-result-template/atomic-result-template.d.ts +12 -0
  133. package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +4 -0
  134. package/dist/types/utils/dayjs-locales.d.ts +1 -1
  135. package/dist/types/utils/field-utils.d.ts +1 -1
  136. package/dist/types/utils/init-queue.d.ts +3 -2
  137. package/dist/types/utils/locale-utils.d.ts +7 -0
  138. package/docs/adr/0001-group-shared-modules-in-one-cdn-chunk.md +147 -0
  139. package/package.json +6 -6
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ function withCountry(language, country) {
31
+ if (!country) return language;
32
+ try {
33
+ if (new Intl.Locale(language).region) return language;
34
+ return new Intl.Locale(language, {
35
+ region: country
36
+ }).toString();
37
+ } catch {
38
+ return language;
39
+ }
40
+ }
41
+ __webpack_require__.d(__webpack_exports__, {
42
+ withCountry: ()=>withCountry
43
+ });
44
+ exports.withCountry = __webpack_exports__.withCountry;
45
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
46
+ "withCountry"
47
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
48
+ Object.defineProperty(exports, '__esModule', {
49
+ value: true
50
+ });
@@ -38,11 +38,16 @@ function replaceMediaQuery(style, mobileBreakpoint) {
38
38
  return style.replace(regex, `(width >= ${mobileBreakpoint})`);
39
39
  }
40
40
  function replaceStyleSheet(element, mobileBreakpoint) {
41
- const stylesheets = element.shadowRoot?.adoptedStyleSheets;
42
- if (!stylesheets || !stylesheets.length) return;
43
- const stylesheet = stylesheets[0];
41
+ const shadowRoot = element.shadowRoot;
42
+ const [stylesheet, ...otherStylesheets] = shadowRoot?.adoptedStyleSheets ?? [];
43
+ if (!shadowRoot || !stylesheet) return;
44
44
  const style = Object.values(stylesheet.cssRules).map((rule)=>rule.cssText).join('');
45
- stylesheet.replaceSync(replaceMediaQuery(style, mobileBreakpoint));
45
+ const replacedStylesheet = new CSSStyleSheet();
46
+ replacedStylesheet.replaceSync(replaceMediaQuery(style, mobileBreakpoint));
47
+ shadowRoot.adoptedStyleSheets = [
48
+ replacedStylesheet,
49
+ ...otherStylesheets
50
+ ];
46
51
  }
47
52
  function replateStyleContent(element, breakpoint) {
48
53
  const styleTag = element.shadowRoot?.querySelector('style');
@@ -32,7 +32,7 @@ __webpack_require__.d(__webpack_exports__, {
32
32
  headlessVersion: ()=>package_json_namespaceObject.version
33
33
  });
34
34
  const package_json_namespaceObject = require("@coveo/headless/package.json");
35
- const atomicVersion = "3.62.0";
35
+ const atomicVersion = "3.64.0";
36
36
  exports.atomicVersion = __webpack_exports__.atomicVersion;
37
37
  exports.headlessVersion = __webpack_exports__.headlessVersion;
38
38
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -47,6 +47,7 @@ class AtomicCommerceBreadbox extends LitElement {
47
47
  this.adaptBreadcrumbs();
48
48
  }
49
49
  disconnectedCallback() {
50
+ super.disconnectedCallback();
50
51
  this.resizeObserver?.disconnect();
51
52
  }
52
53
  get breadcrumbs() {
@@ -42,7 +42,7 @@ function _ts_metadata(metadataKey, metadataValue) {
42
42
  class AtomicCommerceCategoryFacet extends LitElement {
43
43
  initialize() {
44
44
  this.validateFacet();
45
- this.facet && announceFacetSearchResultsWithAriaLive(this.facet, this.displayName, (msg)=>{
45
+ this.facet && announceFacetSearchResultsWithAriaLive(this, this.facet, this.displayName, (msg)=>{
46
46
  this.facetSearchAriaMessage.message = msg;
47
47
  }, this.bindings.i18n);
48
48
  }
@@ -196,7 +196,7 @@ class AtomicCommerceFacet extends LitElement {
196
196
  if (!this.headerFocus) this.headerFocus = new FocusTargetController(this, this.bindings);
197
197
  }
198
198
  initAriaLive() {
199
- announceFacetSearchResultsWithAriaLive(this.facet, this.displayName, (msg)=>{
199
+ announceFacetSearchResultsWithAriaLive(this, this.facet, this.displayName, (msg)=>{
200
200
  this.ariaLiveRegion.message = msg;
201
201
  }, this.bindings.i18n);
202
202
  }
@@ -16,6 +16,7 @@ import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-com
16
16
  import { markParentAsReady } from "../../../utils/init-queue.js";
17
17
  import { waitForAtomicChildrenToBeDefined } from "../../../utils/initialization-common-utils.js";
18
18
  import { SafeStorage, StorageItems } from "../../../utils/local-storage-utils.js";
19
+ import { withCountry } from "../../../utils/locale-utils.js";
19
20
  import { getAnalyticsConfig } from "./analytics-config.js";
20
21
  import { createCommerceStore } from "./store.js";
21
22
  function _ts_decorate(decorators, target, key, desc) {
@@ -72,7 +73,7 @@ class AtomicCommerceInterface extends ChildrenUpdateCompleteMixin(LitElement) {
72
73
  }
73
74
  updateLocale(language, country, currency) {
74
75
  if (!this.interfaceController.engineIsCreated(this.engine) || !this.context) return;
75
- language && this.interfaceController.onLanguageChange(language);
76
+ if (language || country && this.localizeWithCountry) this.interfaceController.onLanguageChange(this.getLocale(language || this.context.state.language, country || this.context.state.country));
76
77
  if (this.isNewLocale(language, country, currency)) {
77
78
  const { setContext } = loadContextActions(this.engine);
78
79
  this.engine.dispatch(setContext({
@@ -97,7 +98,11 @@ class AtomicCommerceInterface extends ChildrenUpdateCompleteMixin(LitElement) {
97
98
  if (!this.interfaceController.engineIsCreated(this.engine) || !this.language || !this.context) return;
98
99
  this.engine.logger.warn('The `language` property will be removed in the next major version of Atomic (v4). Rather than using this property, set the initial language through the engine configuration when calling `initialize` or `initializeWithEngine`, and update the language as needed using the `updateLocale` method.');
99
100
  this.context.setLanguage(this.language);
100
- return this.interfaceController.onLanguageChange();
101
+ return this.interfaceController.onLanguageChange(this.getLocale(this.language, this.context.state.country));
102
+ }
103
+ toggleLocalizeWithCountry() {
104
+ if (!this.context) return;
105
+ this.interfaceController.onLanguageChange(this.getLocale(this.context.state.language, this.context.state.country));
101
106
  }
102
107
  updateIconAssetsPath() {
103
108
  this.store.state.iconAssetsPath = this.iconAssetsPath;
@@ -138,7 +143,10 @@ class AtomicCommerceInterface extends ChildrenUpdateCompleteMixin(LitElement) {
138
143
  }
139
144
  initLanguage() {
140
145
  if (!this.context || this.language) return;
141
- this.interfaceController.onLanguageChange(this.context.state.language);
146
+ this.interfaceController.onLanguageChange(this.getLocale(this.context.state.language, this.context.state.country));
147
+ }
148
+ getLocale(language, country) {
149
+ return this.localizeWithCountry ? withCountry(language, country) : language;
142
150
  }
143
151
  initRequestStatus() {
144
152
  this.searchOrListing = 'product-listing' === this.type ? buildProductListing(this.engine) : buildSearch(this.engine);
@@ -202,7 +210,7 @@ class AtomicCommerceInterface extends ChildrenUpdateCompleteMixin(LitElement) {
202
210
  this.bindings.engine.logger.info(`History pushState #${newFragment}`);
203
211
  }
204
212
  constructor(){
205
- super(), this.bindings = {}, this.unsubscribeUrlManager = ()=>{}, this.unsubscribeSummary = ()=>{}, this.initialized = false, this.interfaceController = new InterfaceController(this, 'CoveoAtomic', VERSION), this.type = 'search', this.analytics = true, this.reflectStateInUrl = true, this.disableStateReflectionInUrl = false, this.scrollContainer = 'atomic-commerce-interface', this.languageAssetsPath = './lang', this.iconAssetsPath = './assets', this.handleInitialization = (event)=>{
213
+ super(), this.bindings = {}, this.unsubscribeUrlManager = ()=>{}, this.unsubscribeSummary = ()=>{}, this.initialized = false, this.interfaceController = new InterfaceController(this, 'CoveoAtomic', VERSION), this.type = 'search', this.analytics = true, this.localizeWithCountry = false, this.reflectStateInUrl = true, this.disableStateReflectionInUrl = false, this.scrollContainer = 'atomic-commerce-interface', this.languageAssetsPath = './lang', this.iconAssetsPath = './assets', this.handleInitialization = (event)=>{
206
214
  this.interfaceController.onComponentInitializing(event);
207
215
  }, this.onHashChange = ()=>{
208
216
  this.urlManager.synchronize(this.fragment);
@@ -264,6 +272,13 @@ _ts_decorate([
264
272
  }),
265
273
  _ts_metadata("design:type", String)
266
274
  ], AtomicCommerceInterface.prototype, "language", void 0);
275
+ _ts_decorate([
276
+ property({
277
+ type: Boolean,
278
+ attribute: 'localize-with-country',
279
+ reflect: true
280
+ })
281
+ ], AtomicCommerceInterface.prototype, "localizeWithCountry", void 0);
267
282
  _ts_decorate([
268
283
  property({
269
284
  type: Object,
@@ -319,6 +334,12 @@ _ts_decorate([
319
334
  _ts_metadata("design:paramtypes", []),
320
335
  _ts_metadata("design:returntype", void 0)
321
336
  ], AtomicCommerceInterface.prototype, "updateLanguage", null);
337
+ _ts_decorate([
338
+ watch('localizeWithCountry'),
339
+ _ts_metadata("design:type", Function),
340
+ _ts_metadata("design:paramtypes", []),
341
+ _ts_metadata("design:returntype", void 0)
342
+ ], AtomicCommerceInterface.prototype, "toggleLocalizeWithCountry", null);
322
343
  _ts_decorate([
323
344
  watch('iconAssetsPath'),
324
345
  _ts_metadata("design:type", Function),
@@ -7,6 +7,7 @@ import { when } from "lit/directives/when.js";
7
7
  import { createAppLoadedListener } from "../../common/interface/store.js";
8
8
  import { renderPageButtons, renderPagerNextButton, renderPagerPageButton, renderPagerPreviousButton } from "../../common/pager/pager-buttons.js";
9
9
  import { renderPagerNavigation } from "../../common/pager/pager-navigation.js";
10
+ import { PagerFitController } from "../../common/pager/pager-fit-controller.js";
10
11
  import { getCurrentPagesRange } from "../../common/pager/pager-utils.js";
11
12
  import { ValidatePropsController } from "../../common/validate-props-controller/validate-props-controller.js";
12
13
  import { bindStateToController } from "../../../decorators/bind-state.js";
@@ -38,7 +39,7 @@ class AtomicCommercePager extends LitElement {
38
39
  });
39
40
  }
40
41
  render() {
41
- const pagesRange = getCurrentPagesRange(this.pagerState.page, this.numberOfPages, this.pagerState.totalPages - 1);
42
+ const pagesRange = getCurrentPagesRange(this.pagerState.page, this.pagerFit.getNumberOfPagesToDisplay(this.numberOfPages), this.pagerState.totalPages - 1);
42
43
  return html`
43
44
  ${when(this.pagerState.totalPages > 1 && this.isAppLoaded, ()=>html`
44
45
  ${renderPagerNavigation({
@@ -109,7 +110,7 @@ class AtomicCommercePager extends LitElement {
109
110
  });
110
111
  }
111
112
  constructor(){
112
- super(), this.isAppLoaded = false, this.numberOfPages = 5, this.previousButtonIcon = arrow_left_rounded, this.nextButtonIcon = arrow_right_rounded, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-pager');
113
+ super(), this.isAppLoaded = false, this.numberOfPages = 5, this.previousButtonIcon = arrow_left_rounded, this.nextButtonIcon = arrow_right_rounded, this.ariaMessage = new AriaLiveRegionController(this, 'atomic-pager'), this.pagerFit = new PagerFitController(this);
113
114
  new ValidatePropsController(this, ()=>({
114
115
  numberOfPages: this.numberOfPages
115
116
  }), AtomicCommercePager.propsSchema);
@@ -48,7 +48,7 @@ class AtomicCommerceProductsPerPage extends LitElement {
48
48
  render() {
49
49
  return html`
50
50
  ${when(!this.summaryState.hasError && this.summaryState.hasProducts && this.isAppLoaded, ()=>html`
51
- <div class="flex items-center">
51
+ <div class="flex flex-wrap items-center">
52
52
  ${renderLabel()(html`${this.label}`)}
53
53
  ${renderFieldsetGroup({
54
54
  props: {
@@ -10,6 +10,7 @@ import { withTailwindStyles } from "../../../decorators/with-tailwind-styles.js"
10
10
  import { ChildrenUpdateCompleteMixin } from "../../../mixins/children-update-complete-mixin.js";
11
11
  import { markParentAsReady } from "../../../utils/init-queue.js";
12
12
  import { waitForAtomicChildrenToBeDefined } from "../../../utils/initialization-common-utils.js";
13
+ import { withCountry } from "../../../utils/locale-utils.js";
13
14
  import { bindingsContext } from "../../common/context/bindings-context.js";
14
15
  import { augmentAnalyticsConfigWithAtomicVersion } from "../../common/interface/analytics-config.js";
15
16
  import { InterfaceController } from "../../common/interface/interface-controller.js";
@@ -40,7 +41,7 @@ class AtomicCommerceRecommendationInterface extends ChildrenUpdateCompleteMixin(
40
41
  }
41
42
  updateLocale(language, country, currency) {
42
43
  if (!this.interfaceController.engineIsCreated(this.engine) || !this.context) return;
43
- language && this.interfaceController.onLanguageChange(language);
44
+ if (language || country && this.localizeWithCountry) this.interfaceController.onLanguageChange(this.getLocale(language || this.context.state.language, country || this.context.state.country));
44
45
  if (this.isNewLocale(language, country, currency)) {
45
46
  const { setContext } = loadContextActions(this.engine);
46
47
  this.engine.dispatch(setContext({
@@ -63,11 +64,15 @@ class AtomicCommerceRecommendationInterface extends ChildrenUpdateCompleteMixin(
63
64
  updateIconAssetsPath() {
64
65
  this.store.state.iconAssetsPath = this.iconAssetsPath;
65
66
  }
67
+ toggleLocalizeWithCountry() {
68
+ if (!this.context) return;
69
+ this.interfaceController.onLanguageChange(this.getLocale(this.context.state.language, this.context.state.country));
70
+ }
66
71
  async updateLanguage() {
67
72
  if (!this.interfaceController.engineIsCreated(this.engine) || !this.language || !this.context) return;
68
73
  this.engine.logger.warn('The `language` property will be removed in the next major version of Atomic (v4). Rather than using this property, set the initial language through the engine configuration when calling `initializeWithEngine`, and update the language as needed using the `updateLocale` method.');
69
74
  this.context.setLanguage(this.language);
70
- return this.interfaceController.onLanguageChange();
75
+ return this.interfaceController.onLanguageChange(this.getLocale(this.language, this.context.state.country));
71
76
  }
72
77
  disconnectedCallback() {
73
78
  super.disconnectedCallback();
@@ -108,14 +113,17 @@ class AtomicCommerceRecommendationInterface extends ChildrenUpdateCompleteMixin(
108
113
  }
109
114
  initLanguage() {
110
115
  if (!this.context || this.language) return;
111
- this.interfaceController.onLanguageChange(this.context.state.language);
116
+ this.interfaceController.onLanguageChange(this.getLocale(this.context.state.language, this.context.state.country));
117
+ }
118
+ getLocale(language, country) {
119
+ return this.localizeWithCountry ? withCountry(language, country) : language;
112
120
  }
113
121
  isNewLocale(language, country, currency) {
114
122
  if (!this.context) return false;
115
123
  return language && language !== this.context.state.language || country && country !== this.context.state.country || currency && currency !== this.context.state.currency;
116
124
  }
117
125
  constructor(){
118
- super(), this.bindings = {}, this.interfaceController = new InterfaceController(this, 'CoveoAtomic', VERSION), this.scrollContainer = 'atomic-commerce-recommendation-interface', this.languageAssetsPath = './lang', this.iconAssetsPath = './assets', this.analytics = true, this.handleInitialization = (event)=>{
126
+ super(), this.bindings = {}, this.interfaceController = new InterfaceController(this, 'CoveoAtomic', VERSION), this.scrollContainer = 'atomic-commerce-recommendation-interface', this.languageAssetsPath = './lang', this.iconAssetsPath = './assets', this.localizeWithCountry = false, this.analytics = true, this.handleInitialization = (event)=>{
119
127
  this.interfaceController.onComponentInitializing(event);
120
128
  };
121
129
  this.store = createCommerceRecommendationStore();
@@ -183,6 +191,13 @@ _ts_decorate([
183
191
  }),
184
192
  _ts_metadata("design:type", String)
185
193
  ], AtomicCommerceRecommendationInterface.prototype, "language", void 0);
194
+ _ts_decorate([
195
+ property({
196
+ type: Boolean,
197
+ attribute: 'localize-with-country',
198
+ reflect: true
199
+ })
200
+ ], AtomicCommerceRecommendationInterface.prototype, "localizeWithCountry", void 0);
186
201
  _ts_decorate([
187
202
  property({
188
203
  type: Boolean,
@@ -203,6 +218,12 @@ _ts_decorate([
203
218
  _ts_metadata("design:paramtypes", []),
204
219
  _ts_metadata("design:returntype", void 0)
205
220
  ], AtomicCommerceRecommendationInterface.prototype, "updateIconAssetsPath", null);
221
+ _ts_decorate([
222
+ watch('localizeWithCountry'),
223
+ _ts_metadata("design:type", Function),
224
+ _ts_metadata("design:paramtypes", []),
225
+ _ts_metadata("design:returntype", void 0)
226
+ ], AtomicCommerceRecommendationInterface.prototype, "toggleLocalizeWithCountry", null);
206
227
  _ts_decorate([
207
228
  watch('language'),
208
229
  _ts_metadata("design:type", Function),
@@ -398,7 +398,7 @@ AtomicCommerceSearchBox.shadowRootOptions = {
398
398
  ...LitElement.shadowRootOptions,
399
399
  delegatesFocus: true
400
400
  };
401
- AtomicCommerceSearchBox.styles = css`/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme;@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,var(--atomic-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"));font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{display:block}:host,button,input,select{font-family:var(--atomic-font-family);font-size:var(--atomic-text-base);line-height:var(--tw-leading,1.5);--tw-font-weight:var(--atomic-font-normal);font-weight:var(--atomic-font-normal)}button{cursor:pointer}:host(.atomic-hidden){display:none}.ripple{pointer-events:none;animation:ripple var(--animation-duration) linear;border-radius:50%;position:absolute;transform:scale(0)}.ripple-relative{position:relative}.ripple-parent{overflow:hidden}@keyframes ripple{to{opacity:0;transform:scale(4)}}}@layer components{.input-primary{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--atomic-neutral);background-color:var(--atomic-background)}@media (hover:hover){.input-primary:hover{border-color:var(--atomic-primary-light)}}.input-primary:focus-visible{border-color:var(--atomic-primary);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-radio{appearance:none}.btn-radio:before{--tw-content:attr(value);content:var(--tw-content)}.btn-primary{border-radius:var(--atomic-border-radius);background-color:var(--atomic-primary);color:var(--atomic-on-primary)}@media (hover:hover){.btn-primary:hover{background-color:var(--atomic-primary-light)}}.btn-primary:focus-visible{background-color:var(--atomic-primary-light);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-primary:disabled{cursor:not-allowed;background-color:var(--atomic-disabled)}.btn-outline-primary{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--atomic-neutral);background-color:var(--atomic-background);color:var(--atomic-primary)}@media (hover:hover){.btn-outline-primary:hover{border-color:var(--atomic-primary-light);color:var(--atomic-primary-light)}}.btn-outline-primary:focus-visible{border-color:var(--atomic-primary);color:var(--atomic-primary);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-outline-primary:disabled{cursor:not-allowed;border-color:var(--atomic-neutral);color:var(--atomic-neutral)}.btn-text-primary{border-radius:var(--atomic-border-radius);background-color:var(--atomic-background);color:var(--atomic-primary)}@media (hover:hover){.btn-text-primary:hover{background-color:var(--atomic-neutral-light)}}.btn-text-primary:focus-visible{background-color:var(--atomic-neutral-light);--tw-outline-style:none;outline-style:none}.btn-outline-neutral{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;border-color:var(--atomic-neutral);background-color:var(--atomic-background);color:var(--atomic-on-background)}@media (hover:hover){.btn-outline-neutral:hover{border-color:var(--atomic-primary);color:var(--atomic-primary)}}.btn-outline-neutral:focus-visible{border-color:var(--atomic-primary);color:var(--atomic-primary);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-outline-neutral:disabled{cursor:not-allowed;opacity:.5}.btn-outline-bg-neutral,.btn-outline-neutral:disabled{border-color:var(--atomic-neutral);color:var(--atomic-on-background)}.btn-outline-bg-neutral{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;background-color:var(--atomic-background)}@media (hover:hover){.btn-outline-bg-neutral:hover{border-color:var(--atomic-primary);background-color:var(--atomic-neutral-light);color:var(--atomic-primary)}}.btn-outline-bg-neutral:focus-visible{border-color:var(--atomic-primary);background-color:var(--atomic-neutral-light);color:var(--atomic-primary);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-outline-bg-neutral:disabled{cursor:not-allowed;opacity:.5}.btn-outline-bg-error,.btn-outline-bg-neutral:disabled{border-color:var(--atomic-neutral);color:var(--atomic-on-background)}.btn-outline-bg-error{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;background-color:var(--atomic-background)}@media (hover:hover){.btn-outline-bg-error:hover{border-color:var(--atomic-primary);background-color:var(--atomic-neutral-light);color:var(--atomic-primary)}}.btn-outline-bg-error:focus-visible{border-color:var(--atomic-primary);background-color:var(--atomic-neutral-light);color:var(--atomic-primary);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-outline-bg-error:disabled{cursor:not-allowed;opacity:.5}.btn-outline-bg-error:disabled,.btn-outline-error{border-color:var(--atomic-neutral);color:var(--atomic-on-background)}.btn-outline-error{border-radius:var(--atomic-border-radius);border-style:var(--tw-border-style);border-width:1px;background-color:var(--atomic-background)}@media (hover:hover){.btn-outline-error:hover{border-color:var(--atomic-error);color:var(--atomic-error)}}.btn-outline-error:focus-visible{border-color:var(--atomic-error);color:var(--atomic-error);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--atomic-ring-primary);--tw-outline-style:none;outline-style:none}.btn-outline-error:disabled{cursor:not-allowed;border-color:var(--atomic-neutral);color:var(--atomic-on-background);opacity:.5}.btn-text-neutral{border-radius:var(--atomic-border-radius);background-color:var(--atomic-background);color:var(--atomic-on-background)}@media (hover:hover){.btn-text-neutral:hover{background-color:var(--atomic-neutral-light);color:var(--atomic-primary)}}.btn-text-neutral:focus-visible{background-color:var(--atomic-neutral-light);color:var(--atomic-primary);--tw-outline-style:none;outline-style:none}.btn-text-transparent{color:var(--atomic-on-background)}@media (hover:hover){.btn-text-transparent:hover{color:var(--atomic-primary-light)}}.btn-text-transparent:focus-visible{color:var(--atomic-primary-light)}.btn-square-neutral{border-style:var(--tw-border-style);border-width:1px;border-color:var(--atomic-neutral);background-color:var(--atomic-background);color:var(--atomic-on-background)}@media (hover:hover){.btn-square-neutral:hover{background-color:var(--atomic-neutral-light)}}.btn-square-neutral:focus-visible{background-color:var(--atomic-neutral-light);--tw-outline-style:none;outline-style:none}.btn-page{border-style:var(--tw-border-style);width:2.5rem;height:2.5rem;font-size:var(--atomic-text-lg);line-height:var(--tw-leading,1.55556);border-width:0;place-items:center;display:grid}@media (hover:hover){.btn-page:hover{border-style:var(--tw-border-style);border-width:1px}}.btn-page:focus-visible{border-style:var(--tw-border-style);border-width:1px}.btn-page.selected{border-style:var(--tw-border-style);border-width:2px;border-color:var(--atomic-primary);--tw-font-weight:var(--atomic-font-bold);font-weight:var(--atomic-font-bold)}}@layer utilities{.\\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.-top-2{top:-.5rem}.-top-4{top:-1rem}.top-0{top:0}.top-1\\/2{top:50%}.top-\\[4px\\]{top:4px}.top-full{top:100%}.top-px{top:1px}.-right-2{right:-.5rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-6{right:1.5rem}.right-12{right:3rem}.right-px{right:1px}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-px{bottom:1px}.left-0{left:0}.left-1{left:.25rem}.left-2{left:.5rem}.left-\\[15px\\]{left:15px}.isolate{isolation:isolate}.z-0{z-index:0}.z-1{z-index:1}.z-10{z-index:10}.z-9998{z-index:9998}.z-9999{z-index:9999}.order-last{order:9999}.col-span-2{grid-column:span 2/span 2}.row-span-2{grid-row:span 2/span 2}.container{width:100%}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (min-width:1024px){.container\\!{max-width:1024px!important}}@media (min-width:40rem){.container\\!{max-width:40rem!important}}@media (min-width:48rem){.container\\!{max-width:48rem!important}}@media (min-width:64rem){.container\\!{max-width:64rem!important}}@media (min-width:80rem){.container\\!{max-width:80rem!important}}@media (min-width:96rem){.container\\!{max-width:96rem!important}}.m-0{margin:0}.m-2{margin:.5rem}.mx-0{margin-inline:0}.mx-0\\.5{margin-inline:.125rem}.mx-1{margin-inline:.25rem}.mx-6{margin-inline:1.5rem}.mx-16{margin-inline:4rem}.mx-auto{margin-inline:auto}.-my-2{margin-block:-.5rem}.my-1\\.5{margin-block:.375rem}.my-2{margin-block:.5rem}.my-3{margin-block:.75rem}.my-4{margin-block:1rem}.my-6{margin-block:1.5rem}.my-auto{margin-block:auto}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-2\\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-6{margin-right:1.5rem}.mr-auto{margin-right:auto}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-0\\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.box-content{box-sizing:content-box}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-none{-webkit-line-clamp:unset;-webkit-box-orient:horizontal;display:block;overflow:visible}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-column{display:table-column}.aspect-square-\\[auto\\]{aspect-ratio:1;height:auto}@supports not (aspect-ratio:1/1){.aspect-square-\\[auto\\]{height:auto}}.aspect-square{aspect-ratio:1}.size-\\[27px\\]{width:27px;height:27px}.h-1{height:.25rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-5\\/6{height:83.3333%}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-\\[1lh\\]{height:1lh}.h-\\[2\\.6rem\\]{height:2.6rem}.h-\\[9px\\]{height:9px}.h-auto{height:auto}.h-full{height:100%}.max-h-96{max-height:24rem}.min-h-3{min-height:.75rem}.min-h-5{min-height:1.25rem}.min-h-10{min-height:2.5rem}.min-lines-2{min-height:calc(var(--line-height)*2)}.min-lines-3{min-height:calc(var(--line-height)*3)}.w-0\\.5{width:.125rem}.w-1{width:.25rem}.w-1\\/2{width:50%}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-3\\/5{width:60%}.w-4{width:1rem}.w-5{width:1.25rem}.w-5\\/6{width:83.3333%}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-20{width:5rem}.w-26{width:6.5rem}.w-32{width:8rem}.w-36{width:9rem}.w-48{width:12rem}.w-60{width:15rem}.w-64{width:16rem}.w-72{width:18rem}.w-100{width:25rem}.w-\\[2\\.6rem\\]{width:2.6rem}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-4\\/5{max-width:80%}.max-w-60{max-width:15rem}.max-w-\\[30ch\\]{max-width:30ch}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:max-content}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.min-w-20{min-width:5rem}.min-w-24{min-width:6rem}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink{flex-shrink:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.basis-1\\/2{flex-basis:50%}.basis-8{flex-basis:2rem}.-translate-x-1\\/2{--tw-translate-x:-50%}.-translate-x-1\\/2,.translate-x-1\\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1\\/2{--tw-translate-x:50%}.-translate-y-1\\/2{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%}.scale-100,.scale-75{scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.cursor-\\[inherit\\]{cursor:inherit}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.\\[scrollbar-gutter\\:stable_both-edges\\]{scrollbar-gutter:stable both-edges}.list-outside{list-style-position:outside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-\\[10px_1fr\\]{grid-template-columns:10px 1fr}.grid-cols-\\[min-content_1fr\\]{grid-template-columns:min-content 1fr}.grid-cols-\\[min-content_auto\\]{grid-template-columns:min-content auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-center{align-content:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem*var(--tw-space-y-reverse));margin-block-end:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.gap-x-1\\.5{column-gap:.375rem}.gap-x-2{column-gap:.5rem}.gap-x-3{column-gap:.75rem}.gap-x-4{column-gap:1rem}:where(.space-x-1\\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(.375rem*var(--tw-space-x-reverse));margin-inline-end:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.gap-y-0\\.5{row-gap:.125rem}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral>:not(:last-child)){border-color:var(--atomic-neutral)}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:var(--atomic-border-radius)}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--atomic-border-radius-lg)}.rounded-md{border-radius:var(--atomic-border-radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--atomic-border-radius)}.rounded-xl{border-radius:var(--atomic-border-radius-xl)}.rounded-tl-none{border-top-left-radius:0}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.border{border-width:1px}.border,.border-0{border-style:var(--tw-border-style)}.border-0{border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-error{border-color:var(--atomic-error)}.border-gray-200{border-color:oklch(92.8% .006 264.531)}.border-neutral{border-color:var(--atomic-neutral)}.border-neutral-dark{border-color:var(--atomic-neutral-dark)}.border-neutral-dim{border-color:var(--atomic-neutral-dim)}.border-primary{border-color:var(--atomic-primary)}.border-primary-light{border-color:var(--atomic-primary-light)}.border-b-neutral-dim{border-bottom-color:var(--atomic-neutral-dim)}.border-l-neutral-dim{border-left-color:var(--atomic-neutral-dim)}.bg-\\[\\#F1F2FF\\]{background-color:#f1f2ff}.bg-\\[rgba\\(40\\,40\\,40\\,0\\.8\\)\\]{background-color:#282828cc}.bg-background{background-color:var(--atomic-background)}.bg-error{background-color:var(--atomic-error)}.bg-gray-50{background-color:oklch(98.5% .002 247.839)}.bg-neutral{background-color:var(--atomic-neutral)}.bg-neutral-dark{background-color:var(--atomic-neutral-dark)}.bg-neutral-dim{background-color:var(--atomic-neutral-dim)}.bg-neutral-light{background-color:var(--atomic-neutral-light)}.bg-primary{background-color:var(--atomic-primary)}.bg-success{background-color:var(--atomic-success)}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.bg-linear-to-l{--tw-gradient-position:to left}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-background\\/60{--tw-gradient-from:#fff9}@supports (color:color-mix(in lab,red,red)){.from-background\\/60{--tw-gradient-from:color-mix(in oklab, var(--atomic-background) 60%, transparent)}}.from-background\\/60,.from-more-results-progress-bar-color-from{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-more-results-progress-bar-color-from{--tw-gradient-from:var(--atomic-more-results-progress-bar-color-from,var(--atomic-primary-dark))}.to-more-results-progress-bar-color-to{--tw-gradient-to:var(--atomic-more-results-progress-bar-color-to,var(--atomic-primary-light));--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.stroke-\\[1\\.25\\]{stroke-width:1.25px}.object-contain{object-fit:contain}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\\.5{padding:.875rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:1.75rem}.px-9{padding-inline:2.25rem}.py-0\\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-1\\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-2\\.5{padding-block:.625rem}.py-3{padding-block:.75rem}.py-3\\.5{padding-block:.875rem}.py-4{padding-block:1rem}.py-4\\.5{padding-block:1.125rem}.py-5{padding-block:1.25rem}.py-6{padding-block:1.5rem}.pt-0\\.5{padding-top:.125rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-24{padding-right:6rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-7{padding-left:1.75rem}.pl-9{padding-left:2.25rem}.pl-10{padding-left:2.5rem}.text-center{text-align:center}.text-left{text-align:left}.align-baseline{vertical-align:baseline}.align-bottom{vertical-align:bottom}.align-middle{vertical-align:middle}.font-sans{font-family:var(--atomic-font-family)}.set-font-size-sm{--font-size:var(--atomic-text-sm);font-size:var(--font-size);--line-height:calc(var(--font-size)*var(--atomic-line-height-ratio));line-height:var(--line-height)}.text-2xl{font-size:var(--atomic-text-2xl);line-height:var(--tw-leading,1.33333)}.text-base{font-size:var(--atomic-text-base);line-height:var(--tw-leading,1.5)}.text-lg{font-size:var(--atomic-text-lg);line-height:var(--tw-leading,1.55556)}.text-sm{font-size:var(--atomic-text-sm);line-height:var(--tw-leading,1.42857)}.text-xl{font-size:var(--atomic-text-xl);line-height:var(--tw-leading,1.4)}.text-xs{font-size:.75rem;line-height:var(--tw-leading,1.33333)}.text-xs\\/\\[1rem\\]{font-size:.75rem;line-height:1rem}.leading-4{--tw-leading:1rem;line-height:1rem}.leading-5{--tw-leading:1.25rem;line-height:1.25rem}.leading-6{--tw-leading:1.5rem;line-height:1.5rem}.leading-8{--tw-leading:2rem;line-height:2rem}.leading-10{--tw-leading:2.5rem;line-height:2.5rem}.leading-\\[1\\.5\\]{--tw-leading:1.5;line-height:1.5}.leading-\\[calc\\(1\\/\\.75\\)\\]{--tw-leading:1.33333;line-height:1.33333}.leading-\\[var\\(--line-height\\)\\]{--tw-leading:var(--line-height);line-height:var(--line-height)}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--atomic-font-bold);font-weight:var(--atomic-font-bold)}.font-light{--tw-font-weight:300;font-weight:300}.font-medium{--tw-font-weight:500;font-weight:500}.font-normal{--tw-font-weight:var(--atomic-font-normal);font-weight:var(--atomic-font-normal)}.font-semibold{--tw-font-weight:600;font-weight:600}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#54698D\\]{color:#54698d}.text-\\[inherit\\]{color:inherit}.text-black{color:#000}.text-error{color:var(--atomic-error)}.text-gray-500{color:oklch(55.1% .027 264.364)}.text-gray-600{color:oklch(44.6% .03 256.802)}.text-gray-700{color:oklch(37.3% .034 259.733)}.text-gray-900{color:oklch(21% .034 264.665)}.text-green-600{color:oklch(62.7% .194 149.214)}.text-inline-code{color:var(--atomic-inline-code)}.text-neutral{color:var(--atomic-neutral)}.text-neutral-dark{color:var(--atomic-neutral-dark)}.text-on-background{color:var(--atomic-on-background)}.text-on-primary{color:var(--atomic-on-primary)}.text-primary{color:var(--atomic-primary)}.text-primary-light{color:var(--atomic-primary-light)}.text-rating-icon-active{color:var(--atomic-rating-icon-active-color,#f6ce3c)}.text-rating-icon-inactive{color:var(--atomic-rating-icon-inactive-color,var(--atomic-neutral))}.text-red-600{color:oklch(57.7% .245 27.325)}.text-success{color:var(--atomic-success)}.text-transparent{color:#0000}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.placeholder-neutral-dark::placeholder{color:var(--atomic-neutral-dark)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-inner-primary{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner-primary{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--atomic-primary))}.shadow-lg{--tw-shadow:0px 2px 8px var(--tw-shadow-color,#e5e8e8bf)}.shadow-lg,.shadow-t-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-t-lg{--tw-shadow:0px -2px 8px var(--tw-shadow-color,#e5e8e8bf)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring,.ring-1,.ring-3{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-3{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring-primary{--tw-ring-color:var(--atomic-primary)}.ring-ring-primary{--tw-ring-color:var(--atomic-ring-primary)}.outline{outline-width:1px}.outline,.outline-2{outline-style:var(--tw-outline-style)}.outline-2{outline-width:2px}.outline-error{outline-color:var(--atomic-error)}.outline-neutral{outline-color:var(--atomic-neutral)}.outline-primary{outline-color:var(--atomic-primary)}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events}.transition,.transition-\\[visibility\\]{transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.transition-\\[visibility\\]{transition-property:visibility}.transition-all{transition-property:all}.transition-all,.transition-colors{transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:cubic-bezier(.4, 0, .2, 1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.outline-none{--tw-outline-style:none;outline-style:none}.\\[grid-area\\:modal\\]{grid-area:modal}@media (hover:hover){.group-hover\\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\\:bg-neutral-dark:is(:where(.group):hover *){background-color:var(--atomic-neutral-dark)}.group-hover\\:text-error:is(:where(.group):hover *){color:var(--atomic-error)}.group-hover\\:text-primary:is(:where(.group):hover *){color:var(--atomic-primary)}.group-hover\\:text-primary-light:is(:where(.group):hover *){color:var(--atomic-primary-light)}}.group-focus\\:text-primary:is(:where(.group):focus *){color:var(--atomic-primary)}.group-focus\\:text-primary-light:is(:where(.group):focus *){color:var(--atomic-primary-light)}.group-focus-visible\\:text-error:is(:where(.group):focus-visible *){color:var(--atomic-error)}.group-focus-visible\\:text-primary:is(:where(.group):focus-visible *){color:var(--atomic-primary)}.group-has-\\[button\\:hover\\]\\/title\\:bg-neutral-dark:is(:where(.group\\/title):has(:is(button:hover)) *){background-color:var(--atomic-neutral-dark)}.peer-focus-within\\:border-primary-light:is(:where(.peer):focus-within~*){border-color:var(--atomic-primary-light)}.peer-focus-within\\:text-primary-light:is(:where(.peer):focus-within~*){color:var(--atomic-primary-light)}@media (hover:hover){.peer-hover\\:border-primary-light:is(:where(.peer):hover~*){border-color:var(--atomic-primary-light)}.peer-hover\\:text-error:is(:where(.peer):hover~*){color:var(--atomic-error)}.peer-hover\\:text-primary-light:is(:where(.peer):hover~*){color:var(--atomic-primary-light)}}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-\\[-8px\\]:before{content:var(--tw-content);top:-8px}.before\\:left-0:before{content:var(--tw-content);left:0}.before\\:inline:before{content:var(--tw-content);display:inline}.before\\:h-\\[8px\\]:before{content:var(--tw-content);height:8px}.before\\:w-px:before{content:var(--tw-content);width:1px}.before\\:bg-neutral:before{content:var(--tw-content);background-color:var(--atomic-neutral)}.before\\:transition-colors:before{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.before\\:duration-150:before{content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s}.before\\:content-\\[\\'\\'\\]:before{--tw-content:"";content:var(--tw-content)}.before\\:content-\\[\\'\\,\\\\00a0\\'\\]:before{--tw-content:", ";content:var(--tw-content)}@media (hover:hover){.group-hover\\:before\\:bg-neutral-dark:is(:where(.group):hover *):before{content:var(--tw-content);background-color:var(--atomic-neutral-dark)}}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:-bottom-0\\.5:after{content:var(--tw-content);bottom:-.125rem}.after\\:bottom-\\[-8px\\]:after{content:var(--tw-content);bottom:-8px}.after\\:left-0:after{content:var(--tw-content);left:0}.after\\:block:after{content:var(--tw-content);display:block}.after\\:h-1:after{content:var(--tw-content);height:.25rem}.after\\:h-\\[8px\\]:after{content:var(--tw-content);height:8px}.after\\:w-full:after{content:var(--tw-content);width:100%}.after\\:w-px:after{content:var(--tw-content);width:1px}.after\\:rounded:after{content:var(--tw-content);border-radius:var(--atomic-border-radius)}.after\\:bg-neutral:after{content:var(--tw-content);background-color:var(--atomic-neutral)}.after\\:bg-primary:after{content:var(--tw-content);background-color:var(--atomic-primary)}.after\\:transition-colors:after{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}.after\\:duration-150:after{content:var(--tw-content);--tw-duration:.15s;transition-duration:.15s}.after\\:content-\\[\\'\\'\\]:after{--tw-content:"";content:var(--tw-content)}@media (hover:hover){.group-hover\\:after\\:bg-neutral-dark:is(:where(.group):hover *):after{content:var(--tw-content);background-color:var(--atomic-neutral-dark)}}.focus-within\\:border-disabled:focus-within{border-color:var(--atomic-disabled)}.focus-within\\:border-primary:focus-within{border-color:var(--atomic-primary)}.focus-within\\:ring-3:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-within\\:ring-neutral:focus-within{--tw-ring-color:var(--atomic-neutral)}.focus-within\\:ring-ring-primary:focus-within{--tw-ring-color:var(--atomic-ring-primary)}@media (hover:hover){.hover\\:border:hover{border-style:var(--tw-border-style);border-width:1px}.hover\\:border-error:hover{border-color:var(--atomic-error)}.hover\\:border-primary-light:hover{border-color:var(--atomic-primary-light)}.hover\\:bg-error:hover{background-color:var(--atomic-error)}.hover\\:bg-neutral:hover{background-color:var(--atomic-neutral)}.hover\\:bg-neutral-dark:hover{background-color:var(--atomic-neutral-dark)}.hover\\:bg-neutral-light:hover{background-color:var(--atomic-neutral-light)}.hover\\:bg-primary-light:hover{background-color:var(--atomic-primary-light)}.hover\\:bg-transparent:hover{background-color:#0000}.hover\\:fill-white:hover{fill:#fff}.hover\\:text-error:hover{color:var(--atomic-error)}.hover\\:text-primary:hover{color:var(--atomic-primary)}.hover\\:text-primary-light:hover{color:var(--atomic-primary-light)}.hover\\:text-success:hover{color:var(--atomic-success)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:opacity-100:focus{opacity:1}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\\:border:focus-visible{border-style:var(--tw-border-style);border-width:1px}.focus-visible\\:border-error:focus-visible{border-color:var(--atomic-error)}.focus-visible\\:border-primary:focus-visible{border-color:var(--atomic-primary)}.focus-visible\\:border-primary-light:focus-visible{border-color:var(--atomic-primary-light)}.focus-visible\\:bg-error:focus-visible{background-color:var(--atomic-error)}.focus-visible\\:bg-neutral-light:focus-visible{background-color:var(--atomic-neutral-light)}.focus-visible\\:bg-primary-light:focus-visible{background-color:var(--atomic-primary-light)}.focus-visible\\:text-primary:focus-visible{color:var(--atomic-primary)}.focus-visible\\:text-primary-light:focus-visible{color:var(--atomic-primary-light)}.focus-visible\\:underline:focus-visible{text-decoration-line:underline}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-primary:focus-visible{--tw-ring-color:var(--atomic-primary)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:bg-primary\\/60:disabled{background-color:#126ce099}@supports (color:color-mix(in lab,red,red)){.disabled\\:bg-primary\\/60:disabled{background-color:color-mix(in oklab,var(--atomic-primary) 60%,transparent)}}.disabled\\:opacity-100:disabled{opacity:1}@media (min-width:1024px){.desktop\\:mt-2{margin-top:.5rem}}@media (min-width:40rem){.sm\\:px-6{padding-inline:1.5rem}}.\\[part\\=\\"breadcrumb-button\\"\\]\\:visible:is(){visibility:visible}}.loading{--tw-gradient-from:var(--atomic-primary-dark);--tw-gradient-to:var(--atomic-primary-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.loading:after{content:"";background-color:var(--atomic-background);border-radius:3.40282e+38px;width:83.3333%;height:83.3333%;position:absolute}[part=textarea-expander]:after{content:attr(data-replicated-value) " ";visibility:hidden}[part=textarea-expander]>[part=textarea]{-ms-overflow-style:none;scrollbar-width:none}[part=textarea-expander]>[part=textarea]::-webkit-scrollbar{display:none}[part=textarea-expander]:after,[part=textarea-expander]>[part=textarea]{z-index:10;resize:none;height:100%;font-size:var(--atomic-text-lg);line-height:var(--tw-leading,1.55556);white-space:nowrap;color:var(--atomic-neutral-dark);--tw-outline-style:none;background-color:#0000;outline-style:none;flex-grow:1;grid-area:1/1/2/2;padding-block:.875rem;padding-inline:1rem;overflow:hidden}[part=textarea-expander].expanded:after,[part=textarea-expander].expanded>[part=textarea]{white-space:pre-wrap;max-height:8em;overflow-y:auto}[part~=instant-results-item]{padding:.75rem}[part~=instant-results-show-all]{border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:var(--atomic-neutral);box-sizing:content-box;justify-content:center;margin-top:auto;padding-block:.25rem}[part~=instant-results-show-all] button{background-color:#0000}[part~=suggestions-left]+[part~=suggestions-right]{border-left-style:var(--tw-border-style);border-left-width:1px;border-left-color:var(--atomic-neutral)}[part~=suggestions-wrapper]{flex-direction:column}@media (min-width:1024px){[part~=suggestions-wrapper]{flex-direction:row}}:host{z-index:10;position:relative}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}`;
401
+ AtomicCommerceSearchBox.styles = css`/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-border-style:solid}}}.loading{--tw-gradient-from:var(--atomic-primary-dark);--tw-gradient-to:var(--atomic-primary-light);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.loading:after{content:"";background-color:var(--atomic-background);border-radius:3.40282e+38px;width:83.3333%;height:83.3333%;position:absolute}[part=textarea-expander]:after{content:attr(data-replicated-value) " ";visibility:hidden}[part=textarea-expander]>[part=textarea]{-ms-overflow-style:none;scrollbar-width:none}[part=textarea-expander]>[part=textarea]::-webkit-scrollbar{display:none}[part=textarea-expander]:after,[part=textarea-expander]>[part=textarea]{z-index:10;resize:none;height:100%;font-size:var(--atomic-text-lg);line-height:var(--tw-leading,1.55556);white-space:nowrap;color:var(--atomic-neutral-dark);--tw-outline-style:none;background-color:#0000;outline-style:none;flex-grow:1;grid-area:1/1/2/2;padding-block:.875rem;padding-inline:1rem;overflow:hidden}[part=textarea-expander].expanded:after,[part=textarea-expander].expanded>[part=textarea]{white-space:pre-wrap;max-height:8em;overflow-y:auto}[part~=instant-results-item]{padding:.75rem}[part~=instant-results-show-all]{border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:var(--atomic-neutral);box-sizing:content-box;justify-content:center;margin-top:auto;padding-block:.25rem}[part~=instant-results-show-all] button{background-color:#0000}[part~=suggestions-left]+[part~=suggestions-right]{border-left-style:var(--tw-border-style);border-left-width:1px;border-left-color:var(--atomic-neutral)}[part~=suggestions-wrapper]{flex-direction:column}@media (min-width:1024px){[part~=suggestions-wrapper]{flex-direction:row}}:host{z-index:10;position:relative}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}`;
402
402
  _ts_decorate([
403
403
  state(),
404
404
  _ts_metadata("design:type", "u" < typeof CommerceBindings ? Object : CommerceBindings)
@@ -2,7 +2,7 @@ import { ProductTemplatesHelpers } from "@coveo/headless/commerce";
2
2
  import { LitElement, html, nothing } from "lit";
3
3
  import { customElement, property, state } from "lit/decorators.js";
4
4
  import { createProductContextController } from "../product-template-component-utils/context/product-context-controller.js";
5
- import { makeDefinedConditions, makeMatchConditions } from "../../common/template-controller/template-utils.js";
5
+ import { makeFieldConditions } from "../../common/template-controller/template-utils.js";
6
6
  import { bindings } from "../../../decorators/bindings.js";
7
7
  import { errorGuard } from "../../../decorators/error-guard.js";
8
8
  import { LightDomMixin } from "../../../mixins/light-dom.js";
@@ -19,10 +19,7 @@ function _ts_metadata(metadataKey, metadataValue) {
19
19
  class AtomicProductFieldCondition extends LightDomMixin(LitElement) {
20
20
  initialize() {}
21
21
  get conditions() {
22
- return [
23
- ...makeDefinedConditions(this.ifDefined, this.ifNotDefined, ProductTemplatesHelpers),
24
- ...makeMatchConditions(this.mustMatch, this.mustNotMatch, ProductTemplatesHelpers)
25
- ];
22
+ return makeFieldConditions(this, ProductTemplatesHelpers);
26
23
  }
27
24
  render() {
28
25
  const product = this.productController.item;
@@ -2,7 +2,7 @@ import { ProductTemplatesHelpers } from "@coveo/headless/commerce";
2
2
  import { LitElement, nothing } from "lit";
3
3
  import { customElement, property, state } from "lit/decorators.js";
4
4
  import { ProductTemplateController } from "../../common/product-template/product-template-controller.js";
5
- import { makeMatchConditions } from "../../common/template-controller/template-utils.js";
5
+ import { makeFieldConditions } from "../../common/template-controller/template-utils.js";
6
6
  import { errorGuard } from "../../../decorators/error-guard.js";
7
7
  import { mapProperty } from "../../../utils/props-utils.js";
8
8
  import "../atomic-product/atomic-product.js";
@@ -19,7 +19,7 @@ function _ts_metadata(metadataKey, metadataValue) {
19
19
  class AtomicProductTemplate extends LitElement {
20
20
  connectedCallback() {
21
21
  super.connectedCallback();
22
- this.productTemplateController.matchConditions = makeMatchConditions(this.mustMatch, this.mustNotMatch, ProductTemplatesHelpers);
22
+ this.productTemplateController.matchConditions = makeFieldConditions(this, ProductTemplatesHelpers);
23
23
  }
24
24
  async getTemplate() {
25
25
  return this.productTemplateController.getTemplate(this.conditions);
@@ -50,6 +50,20 @@ _ts_decorate([
50
50
  }),
51
51
  _ts_metadata("design:type", Array)
52
52
  ], AtomicProductTemplate.prototype, "conditions", void 0);
53
+ _ts_decorate([
54
+ property({
55
+ type: String,
56
+ attribute: 'if-defined'
57
+ }),
58
+ _ts_metadata("design:type", String)
59
+ ], AtomicProductTemplate.prototype, "ifDefined", void 0);
60
+ _ts_decorate([
61
+ property({
62
+ type: String,
63
+ attribute: 'if-not-defined'
64
+ }),
65
+ _ts_metadata("design:type", String)
66
+ ], AtomicProductTemplate.prototype, "ifNotDefined", void 0);
53
67
  _ts_decorate([
54
68
  mapProperty({
55
69
  splitValues: true,
@@ -1,13 +1,26 @@
1
1
  import { shouldUpdateFacetSearchComponent } from "./facet-search-utils.js";
2
- function announceFacetSearchResultsWithAriaLive(facet, label, setAriaLive, i18n) {
2
+ function announceFacetSearchResultsWithAriaLive(host, facet, label, setAriaLive, i18n) {
3
3
  let prevState = facet.state.facetSearch;
4
- facet.subscribe(()=>{
5
- const nextState = facet.state.facetSearch;
6
- if (shouldUpdateFacetSearchComponent(nextState, prevState) && nextState.query) setAriaLive(i18n.t('facet-search-results-count', {
7
- count: nextState.values.length,
8
- label
9
- }));
10
- prevState = nextState;
4
+ let unsubscribe;
5
+ host.addController({
6
+ hostConnected () {
7
+ if (unsubscribe) return;
8
+ let subscribing = true;
9
+ unsubscribe = facet.subscribe(()=>{
10
+ const nextState = facet.state.facetSearch;
11
+ if (!subscribing && shouldUpdateFacetSearchComponent(nextState, prevState) && nextState.query) setAriaLive(i18n.t('facet-search-results-count', {
12
+ count: nextState.values.length,
13
+ label
14
+ }));
15
+ prevState = nextState;
16
+ });
17
+ subscribing = false;
18
+ },
19
+ hostDisconnected () {
20
+ if (host.isConnected) return;
21
+ unsubscribe?.();
22
+ unsubscribe = void 0;
23
+ }
11
24
  });
12
25
  }
13
26
  export { announceFacetSearchResultsWithAriaLive };
@@ -30,9 +30,13 @@ function i18nBackendOptions(atomicInterface) {
30
30
  }
31
31
  };
32
32
  }
33
- function loadTranslations(atomicInterface, language) {
33
+ async function loadTranslations(atomicInterface, language) {
34
+ const { languageUtils } = atomicInterface.i18n.services;
35
+ const languages = languageUtils.toResolveHierarchy(languageUtils.formatLanguageCode(language), false);
36
+ await Promise.all(languages.filter(isI18nLocaleAvailable).map((lng)=>loadTranslationBundle(atomicInterface, lng)));
37
+ }
38
+ function loadTranslationBundle(atomicInterface, lng) {
34
39
  const { i18n } = atomicInterface;
35
- const lng = language.split('-')[0];
36
40
  return new Promise((resolve)=>{
37
41
  new i18next_http_backend(i18n.services, i18nBackendOptions(atomicInterface)).read(lng, i18nTranslationNamespace, (_error, data)=>{
38
42
  if (data) i18n.addResourceBundle(lng, i18nTranslationNamespace, data, true, false);
@@ -21,8 +21,10 @@ class InterfaceController {
21
21
  this.host.updateIconAssetsPath();
22
22
  initEngine();
23
23
  if (this.host.registerFieldsToInclude) this.host.registerFieldsToInclude();
24
- loadDayjsLocale(this.host.language || 'en');
25
- await this.i18nPromise;
24
+ await Promise.all([
25
+ this.i18nPromise,
26
+ loadDayjsLocale(this.host.language || 'en')
27
+ ]);
26
28
  this.initComponents();
27
29
  }
28
30
  onAnalyticsChange() {
@@ -35,8 +37,10 @@ class InterfaceController {
35
37
  const language = newLanguage ?? this.host.language;
36
38
  const languageWithFallback = language ?? 'en';
37
39
  const { i18n } = this.host;
38
- loadDayjsLocale(languageWithFallback);
39
- loadTranslations(this.host, languageWithFallback).then(()=>{
40
+ Promise.all([
41
+ loadDayjsLocale(languageWithFallback),
42
+ loadTranslations(this.host, languageWithFallback)
43
+ ]).then(()=>{
40
44
  i18n.changeLanguage(language);
41
45
  });
42
46
  }
@@ -0,0 +1,34 @@
1
+ class PagerFitController {
2
+ hostConnected() {
3
+ this.resizeObserver = new ResizeObserver(()=>requestAnimationFrame(()=>this.reset()));
4
+ this.resizeObserver.observe(document.documentElement);
5
+ if (this.host.parentElement) this.resizeObserver.observe(this.host.parentElement);
6
+ }
7
+ hostDisconnected() {
8
+ this.resizeObserver?.disconnect();
9
+ }
10
+ hostUpdated() {
11
+ const root = this.host.shadowRoot;
12
+ const previousButton = root?.querySelector('[part="previous-button"]');
13
+ const nextButton = root?.querySelector('[part="next-button"]');
14
+ const pageButtonCount = root?.querySelectorAll('[part~="page-button"]').length ?? 0;
15
+ const isWrapping = !!previousButton && !!nextButton && nextButton.offsetTop > previousButton.offsetTop;
16
+ if (isWrapping && pageButtonCount > 1) {
17
+ this.maxPages = pageButtonCount - 1;
18
+ queueMicrotask(()=>this.host.requestUpdate());
19
+ }
20
+ }
21
+ getNumberOfPagesToDisplay(numberOfPages) {
22
+ return Math.min(numberOfPages, this.maxPages);
23
+ }
24
+ reset() {
25
+ this.maxPages = 1 / 0;
26
+ this.host.requestUpdate();
27
+ }
28
+ constructor(host){
29
+ this.host = host;
30
+ this.maxPages = 1 / 0;
31
+ host.addController(this);
32
+ }
33
+ }
34
+ export { PagerFitController };