vviinn-widgets 2.198.0 → 2.199.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 (43) hide show
  1. package/dist/cjs/{customized-slots-BzqsGchC.js → customized-slots-ytZ5wdWN.js} +6 -2
  2. package/dist/cjs/{package-tfkS0Qj1.js → package-BN5u0I2T.js} +1 -1
  3. package/dist/cjs/vviinn-button_6.cjs.entry.js +3 -3
  4. package/dist/cjs/vviinn-camera_12.cjs.entry.js +2 -2
  5. package/dist/cjs/vviinn-carousel_10.cjs.entry.js +2 -2
  6. package/dist/cjs/vviinn-text-search.cjs.entry.js +1 -1
  7. package/dist/cjs/vviinn-vps-button.cjs.entry.js +1 -1
  8. package/dist/collection/components/customized-slots.js +6 -2
  9. package/dist/collection/components/vviinn-vpr-button/vviinn-vpr-button.js +16 -1
  10. package/dist/collection/components/vviinn-vpr-widget/vviinn-vpr-widget.js +73 -0
  11. package/dist/esm/{customized-slots-ZvDCa2Eu.js → customized-slots-CwvCP9fk.js} +6 -2
  12. package/dist/esm/{package-DiWvyInL.js → package-CnrbgDHX.js} +1 -1
  13. package/dist/esm/vviinn-button_6.entry.js +3 -3
  14. package/dist/esm/vviinn-camera_12.entry.js +2 -2
  15. package/dist/esm/vviinn-carousel_10.entry.js +2 -2
  16. package/dist/esm/vviinn-text-search.entry.js +1 -1
  17. package/dist/esm/vviinn-vps-button.entry.js +1 -1
  18. package/dist/storybook/helpers/generateHistogram.js +21 -0
  19. package/dist/storybook/helpers/index.js +1 -0
  20. package/dist/storybook/helpers/industryToken.js +2 -2
  21. package/dist/types/components/vviinn-vpr-button/vviinn-vpr-button.d.ts +15 -0
  22. package/dist/types/components/vviinn-vpr-widget/vviinn-vpr-widget.d.ts +12 -1
  23. package/dist/types/home/runner/work/widgets/widgets/.stencil/storybook/helpers/generateHistogram.d.ts +1 -0
  24. package/dist/types/home/runner/work/widgets/widgets/.stencil/storybook/helpers/index.d.ts +1 -0
  25. package/dist/vviinn-widgets/{p-937360db.entry.js → p-18d66994.entry.js} +1 -1
  26. package/dist/vviinn-widgets/{p-89a5a04e.entry.js → p-579027df.entry.js} +1 -1
  27. package/dist/vviinn-widgets/{p-9a96a901.entry.js → p-89fc6346.entry.js} +1 -1
  28. package/dist/vviinn-widgets/{p-DiWvyInL.js → p-CnrbgDHX.js} +1 -1
  29. package/dist/vviinn-widgets/{p-V-feYN6s.js → p-DWD1XfuU.js} +1 -1
  30. package/dist/vviinn-widgets/{p-6394a344.entry.js → p-b8e02161.entry.js} +1 -1
  31. package/dist/vviinn-widgets/{p-a11e1d2f.entry.js → p-e9327c3e.entry.js} +1 -1
  32. package/dist/vviinn-widgets/vviinn-widgets.esm.js +1 -1
  33. package/package.json +1 -1
  34. package/www/build/{p-937360db.entry.js → p-18d66994.entry.js} +1 -1
  35. package/www/build/{p-89a5a04e.entry.js → p-579027df.entry.js} +1 -1
  36. package/www/build/{p-70b5ea54.js → p-670c7e02.js} +1 -1
  37. package/www/build/{p-9a96a901.entry.js → p-89fc6346.entry.js} +1 -1
  38. package/www/build/{p-DiWvyInL.js → p-CnrbgDHX.js} +1 -1
  39. package/www/build/{p-V-feYN6s.js → p-DWD1XfuU.js} +1 -1
  40. package/www/build/{p-6394a344.entry.js → p-b8e02161.entry.js} +1 -1
  41. package/www/build/{p-a11e1d2f.entry.js → p-e9327c3e.entry.js} +1 -1
  42. package/www/build/vviinn-widgets.esm.js +1 -1
  43. package/www/index.html +1 -1
@@ -96,8 +96,12 @@ const replaceSlotContent = (content, target) => {
96
96
  const castAsHtmlElement = (element) => element;
97
97
  const getShadowRoots = (shadowRoot) => {
98
98
  const levelOne = shadowRoot;
99
- const levelTwo = levelOne && castAsHtmlElement(levelOne.lastChild).shadowRoot;
100
- const levelThree = levelTwo && castAsHtmlElement(levelTwo.lastChild).shadowRoot;
99
+ const levelTwo = (levelOne === null || levelOne === void 0 ? void 0 : levelOne.lastChild)
100
+ ? castAsHtmlElement(levelOne.lastChild).shadowRoot
101
+ : null;
102
+ const levelThree = (levelTwo === null || levelTwo === void 0 ? void 0 : levelTwo.lastChild)
103
+ ? castAsHtmlElement(levelTwo.lastChild).shadowRoot
104
+ : null;
101
105
  return { levelOne, levelTwo, levelThree };
102
106
  };
103
107
  const slotChangeListener = (component, element) => {
@@ -14,7 +14,7 @@ function fromString(s) {
14
14
  return s === "VPR" ? { _tag: "VPR" } : { _tag: "VCS" };
15
15
  }
16
16
 
17
- const version = "2.198.0";
17
+ const version = "2.199.0";
18
18
 
19
19
  exports.campaignTypeNames = campaignTypeNames;
20
20
  exports.fold = fold;
@@ -3,8 +3,8 @@
3
3
  var index = require('./index-OrE9ITel.js');
4
4
  var i18next = require('./i18next-DkN_8H9H.js');
5
5
  var search_store = require('./search.store-DHFf8KQS.js');
6
- var customizedSlots = require('./customized-slots-BzqsGchC.js');
7
- var _package = require('./package-tfkS0Qj1.js');
6
+ var customizedSlots = require('./customized-slots-ytZ5wdWN.js');
7
+ var _package = require('./package-BN5u0I2T.js');
8
8
  var SecondaryActionIcon = require('./SecondaryActionIcon-BZg-ADIW.js');
9
9
  var index$2 = require('./index-CF8yXqXJ.js');
10
10
  var index$1 = require('./index-DLEDOlRe.js');
@@ -514,7 +514,7 @@ const VviinnVprButton = class {
514
514
  }
515
515
  }
516
516
  render() {
517
- return (index.h(index.Host, { key: 'bf6e6f058b0fcb133df713d43d9603e50783dd7d', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, index.h("vviinn-button", { key: '829e3a82cc5345750696eddadfd307813b02464b', addStyle: this.addStyle, part: "vviinn-button" }, index.h("slot", { key: 'ad46d98bc63a6a4b5555151d8c366216d82299a8' }, this.campaignType === "VCS" ? (index.h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (index.h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
517
+ return (index.h(index.Host, { key: '642ab6be441bda4edae51d606480194487c073ec', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, index.h("vviinn-button", { key: '387943ce5bda1089940f1e8cb95b240fc15f827e', addStyle: this.addStyle, part: "vviinn-button" }, index.h("slot", { key: '0060b5f12f62b8bab2be66d9d35afd5341f1e09a' }, this.campaignType === "VCS" ? (index.h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (index.h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
518
518
  }
519
519
  handleClick() {
520
520
  const sidebar = document.createElement("vviinn-recommendations-sidebar");
@@ -3,13 +3,13 @@
3
3
  var index = require('./index-OrE9ITel.js');
4
4
  var Rectangle = require('./Rectangle-DfUOGfXS.js');
5
5
  var search_store = require('./search.store-DHFf8KQS.js');
6
- var customizedSlots = require('./customized-slots-BzqsGchC.js');
6
+ var customizedSlots = require('./customized-slots-ytZ5wdWN.js');
7
7
  var index$1 = require('./index-ClWQDYyW.js');
8
8
  var i18next = require('./i18next-DkN_8H9H.js');
9
9
  var cropperUtils = require('./cropperUtils-Bam-BTEk.js');
10
10
  var store = require('./store-CrCuJC55.js');
11
11
  var index$2 = require('./index-DLEDOlRe.js');
12
- var _package = require('./package-tfkS0Qj1.js');
12
+ var _package = require('./package-BN5u0I2T.js');
13
13
  var resources = require('./resources-CuHgJnvC.js');
14
14
  var index$3 = require('./index-CF8yXqXJ.js');
15
15
  var constants = require('./constants-DHaugTOE.js');
@@ -4,10 +4,10 @@ var index = require('./index-OrE9ITel.js');
4
4
  var search_store = require('./search.store-DHFf8KQS.js');
5
5
  var Rectangle = require('./Rectangle-DfUOGfXS.js');
6
6
  var i18next = require('./i18next-DkN_8H9H.js');
7
- var _package = require('./package-tfkS0Qj1.js');
7
+ var _package = require('./package-BN5u0I2T.js');
8
8
  var index$2 = require('./index-ClWQDYyW.js');
9
9
  var index$1 = require('./index-DLEDOlRe.js');
10
- var customizedSlots = require('./customized-slots-BzqsGchC.js');
10
+ var customizedSlots = require('./customized-slots-ytZ5wdWN.js');
11
11
  var index$3 = require('./index-CF8yXqXJ.js');
12
12
  var resources = require('./resources-CuHgJnvC.js');
13
13
  var store = require('./store-CrCuJC55.js');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-OrE9ITel.js');
4
4
  var search_store = require('./search.store-DHFf8KQS.js');
5
- var customizedSlots = require('./customized-slots-BzqsGchC.js');
5
+ var customizedSlots = require('./customized-slots-ytZ5wdWN.js');
6
6
  var i18next = require('./i18next-DkN_8H9H.js');
7
7
  var resources = require('./resources-CuHgJnvC.js');
8
8
  var Rectangle = require('./Rectangle-DfUOGfXS.js');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-OrE9ITel.js');
4
- var customizedSlots = require('./customized-slots-BzqsGchC.js');
4
+ var customizedSlots = require('./customized-slots-ytZ5wdWN.js');
5
5
  var constants = require('./constants-DHaugTOE.js');
6
6
  var index$1 = require('./index-DLEDOlRe.js');
7
7
  var i18next = require('./i18next-DkN_8H9H.js');
@@ -93,8 +93,12 @@ const replaceSlotContent = (content, target) => {
93
93
  const castAsHtmlElement = (element) => element;
94
94
  const getShadowRoots = (shadowRoot) => {
95
95
  const levelOne = shadowRoot;
96
- const levelTwo = levelOne && castAsHtmlElement(levelOne.lastChild).shadowRoot;
97
- const levelThree = levelTwo && castAsHtmlElement(levelTwo.lastChild).shadowRoot;
96
+ const levelTwo = (levelOne === null || levelOne === void 0 ? void 0 : levelOne.lastChild)
97
+ ? castAsHtmlElement(levelOne.lastChild).shadowRoot
98
+ : null;
99
+ const levelThree = (levelTwo === null || levelTwo === void 0 ? void 0 : levelTwo.lastChild)
100
+ ? castAsHtmlElement(levelTwo.lastChild).shadowRoot
101
+ : null;
98
102
  return { levelOne, levelTwo, levelThree };
99
103
  };
100
104
  export const slotChangeListener = (component, element) => {
@@ -16,6 +16,10 @@ import { addEventListenersWithSignal } from "../../dom";
16
16
  * @part image - Product Card image.
17
17
  * @part image-link - Anchor element around product image. Rendered only if "deeplink" property is filled.
18
18
  * @part image-picture - Picture element for image.
19
+ * @part image-placeholder - Placeholder shown when no image is available.
20
+ * @part image-container - Product Card's image container.
21
+ * @part content-container - Product Card's content container.
22
+ * @part basket-button-container - Product Card's basket button container.
19
23
  * @part deeplink - Anchor element around product title. Rendered only if "deeplink" property is filled.
20
24
  * @part price-amount-regular - Numeric part of the price.
21
25
  * @part price-amount-sale - Numeric part of the price.
@@ -27,6 +31,8 @@ import { addEventListenersWithSignal } from "../../dom";
27
31
  * @part price-regular - Block for a price if no sale price is presented.
28
32
  * @part price-sale - Block for sale price. Rendered only if the sale price is presented.
29
33
  * @part price-prefix - Block rendered before each price element (for ex. "from").
34
+ * @part product-card-actions - Product Card actions wrapper.
35
+ * @part product-card-actions-top - Product Card top actions wrapper.
30
36
  * @part carousel-button - Both carousel navigation buttons (generic part).
31
37
  * @part carousel-button-prev - The previous/back carousel navigation button.
32
38
  * @part carousel-button-next - The next/forward carousel navigation button.
@@ -40,6 +46,14 @@ import { addEventListenersWithSignal } from "../../dom";
40
46
  * @part energy-label-data-sheet-link - Data sheet link.
41
47
  * @part update-button-top - Update Button on the top (Set mode).
42
48
  * @part update-button-item - Update Button inside the Product Card (Set mode).
49
+ * @part discount-label - Discount label in Product Card (Set mode).
50
+ * @part discount-percentage - Discount percentage inside the Add to Basket button (Set mode).
51
+ * @part list-card - List card container.
52
+ * @part list-card-content-container - List card's content container.
53
+ * @part list-card-image-container - List card's image container.
54
+ * @part list-card-image-link - List card's image link.
55
+ * @part list-label - List card's label (e.g., "Category").
56
+ * @part list-title - List card's title.
43
57
  *
44
58
  * @part custom-label-0 - Custom label with index 0.
45
59
  * @part custom-label-1 - Custom label with index 1.
@@ -64,6 +78,7 @@ import { addEventListenersWithSignal } from "../../dom";
64
78
  * @slot vviinn-custom-label-2 - Custom label with index 2.
65
79
  * @slot vviinn-custom-label-3 - Custom label with index 3.
66
80
  * @slot vviinn-custom-label-4 - Custom label with index 4.
81
+ * @slot vviinn-image-placeholder-icon - Icon or content for the image placeholder.
67
82
  */
68
83
  export class VviinnVprButton {
69
84
  constructor() {
@@ -192,7 +207,7 @@ export class VviinnVprButton {
192
207
  }
193
208
  }
194
209
  render() {
195
- return (h(Host, { key: 'bf6e6f058b0fcb133df713d43d9603e50783dd7d', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, h("vviinn-button", { key: '829e3a82cc5345750696eddadfd307813b02464b', addStyle: this.addStyle, part: "vviinn-button" }, h("slot", { key: 'ad46d98bc63a6a4b5555151d8c366216d82299a8' }, this.campaignType === "VCS" ? (h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
210
+ return (h(Host, { key: '642ab6be441bda4edae51d606480194487c073ec', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, h("vviinn-button", { key: '387943ce5bda1089940f1e8cb95b240fc15f827e', addStyle: this.addStyle, part: "vviinn-button" }, h("slot", { key: '0060b5f12f62b8bab2be66d9d35afd5341f1e09a' }, this.campaignType === "VCS" ? (h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
196
211
  }
197
212
  handleClick() {
198
213
  const sidebar = document.createElement("vviinn-recommendations-sidebar");
@@ -30,6 +30,79 @@ import { getCustomLabels, getRecommendationsBody } from "../../recommendation";
30
30
  import { addIfNotEmpty } from "../../utils/collections/collectionsUtils";
31
31
  import { RESULTS_CALCULATED_COLUMNS_CSS_VAR } from "../vviinn-carousel/constants";
32
32
  import { DISCOVERY_WIDGET_IMAGE_RESOLUTION_WIDTH, PRODUCT_CARD_IMAGE_WIDTH, } from "../../widget/constants";
33
+ /**
34
+ * @part product-card - Product Card itself.
35
+ * @part title - Title inside Product Card.
36
+ * @part brand - Brand inside Product Card.
37
+ * @part product-type - Product Type inside Product Card.
38
+ * @part currency - Currency related to price.
39
+ * @part image - Product Card image.
40
+ * @part image-link - Anchor element around product image. Rendered only if "deeplink" property is filled.
41
+ * @part image-picture - Picture element for image.
42
+ * @part image-placeholder - Placeholder shown when no image is available.
43
+ * @part image-container - Product Card's image container.
44
+ * @part content-container - Product Card's content container.
45
+ * @part basket-button-container - Product Card's basket button container.
46
+ * @part deeplink - Anchor element around product title. Rendered only if "deeplink" property is filled.
47
+ * @part price-amount-sale - Numeric part of the price.
48
+ * @part price-amount-outdated - Numeric part of the price.
49
+ * @part price-amount-regular - Numeric part of the price.
50
+ * @part price-amount-base-sale - Numeric part of the base price.
51
+ * @part price-amount-base-outdated - Numeric part of the base price.
52
+ * @part price-amount-base-regular - Numeric part of the base price.
53
+ * @part price-outdated - Block for outdated price. Rendered when the product contains the sale price.
54
+ * @part price-regular - Block for a price if no sale price is presented.
55
+ * @part price-sale - Block for sale price. Rendered only if the sale price is presented.
56
+ * @part price-prefix - Block rendered before each price element (for ex. "from").
57
+ * @part product-card-actions - Product Card actions wrapper.
58
+ * @part product-card-actions-top - Product Card top actions wrapper.
59
+ * @part carousel-button - Both carousel navigation buttons (generic part).
60
+ * @part carousel-button-prev - The previous/back carousel navigation button.
61
+ * @part carousel-button-next - The next/forward carousel navigation button.
62
+ * @part recommendations-results - For internal usage only!
63
+ * @part recommendations-title - Title of the recommendations grid.
64
+ * @part recommendations-subtitle - Subtitle of the recommendations grid.
65
+ * @part basket-button - Add to Basket button.
66
+ * @part energy-label-container - Energy label container.
67
+ * @part energy-label-icon - Icon with an energy class.
68
+ * @part energy-label-product-type - Product type.
69
+ * @part energy-label-data-sheet-link - Data sheet link.
70
+ * @part update-button-top - Update Button on the top (Set mode).
71
+ * @part update-button-item - Update Button inside the Product Card (Set mode).
72
+ * @part discount-label - Discount label in Product Card (Set mode).
73
+ * @part discount-percentage - Discount percentage inside the Add to Basket button (Set mode).
74
+ * @part list-card - List card container.
75
+ * @part list-card-content-container - List card's content container.
76
+ * @part list-card-image-container - List card's image container.
77
+ * @part list-card-image-link - List card's image link.
78
+ * @part list-label - List card's label (e.g., "Category").
79
+ * @part list-title - List card's title.
80
+ *
81
+ * @part custom-label-0 - Custom label with index 0.
82
+ * @part custom-label-1 - Custom label with index 1.
83
+ * @part custom-label-2 - Custom label with index 2.
84
+ * @part custom-label-3 - Custom label with index 3.
85
+ * @part custom-label-4 - Custom label with index 4.
86
+ *
87
+ * @slot vviinn-recommendations-title - Recommendations title text.
88
+ * @slot vviinn-favorite-icon - Icon of Favorite button.
89
+ * @slot vviinn-favorite-icon-pressed - Icon of pressed Favorite button.
90
+ * @slot vviinn-basket-button-text - Text of Add to Basket button.
91
+ * @slot vviinn-basket-button-icon - Text of Add to Basket icon.
92
+ * @slot vviinn-basket-button-text-pressed - Text of pressed Add to Basket button.
93
+ * @slot vviinn-basket-button-icon-pressed - Icon of pressed Add to Basket button.
94
+ * @slot vviinn-energy-label-data-sheet-text - Text of the data sheet link for the energy label.
95
+ *
96
+ * @slot vviinn-recommendations-subtitle - Recommendations subtitle text (Set mode).
97
+ * @slot vviinn-update-button-text - Text of Update Button on the top (Set mode).
98
+ * @slot vviinn-update-button-icon - Icon of Update Button (Set mode).
99
+ * @slot vviinn-custom-label-0 - Custom label with index 0.
100
+ * @slot vviinn-custom-label-1 - Custom label with index 1.
101
+ * @slot vviinn-custom-label-2 - Custom label with index 2.
102
+ * @slot vviinn-custom-label-3 - Custom label with index 3.
103
+ * @slot vviinn-custom-label-4 - Custom label with index 4.
104
+ * @slot vviinn-image-placeholder-icon - Icon or content for the image placeholder.
105
+ */
33
106
  export class VviinnVprWidget {
34
107
  constructor() {
35
108
  /** Switch between carousel modes */
@@ -94,8 +94,12 @@ const replaceSlotContent = (content, target) => {
94
94
  const castAsHtmlElement = (element) => element;
95
95
  const getShadowRoots = (shadowRoot) => {
96
96
  const levelOne = shadowRoot;
97
- const levelTwo = levelOne && castAsHtmlElement(levelOne.lastChild).shadowRoot;
98
- const levelThree = levelTwo && castAsHtmlElement(levelTwo.lastChild).shadowRoot;
97
+ const levelTwo = (levelOne === null || levelOne === void 0 ? void 0 : levelOne.lastChild)
98
+ ? castAsHtmlElement(levelOne.lastChild).shadowRoot
99
+ : null;
100
+ const levelThree = (levelTwo === null || levelTwo === void 0 ? void 0 : levelTwo.lastChild)
101
+ ? castAsHtmlElement(levelTwo.lastChild).shadowRoot
102
+ : null;
99
103
  return { levelOne, levelTwo, levelThree };
100
104
  };
101
105
  const slotChangeListener = (component, element) => {
@@ -12,6 +12,6 @@ function fromString(s) {
12
12
  return s === "VPR" ? { _tag: "VPR" } : { _tag: "VCS" };
13
13
  }
14
14
 
15
- const version = "2.198.0";
15
+ const version = "2.199.0";
16
16
 
17
17
  export { fold as a, campaignTypeNames as c, fromString as f, version as v };
@@ -1,8 +1,8 @@
1
1
  import { h, r as registerInstance, H as Host, c as createEvent, g as getElement, F as Fragment } from './index-C5qrIvmr.js';
2
2
  import { i as instance } from './i18next-C7V-mvcq.js';
3
3
  import { g as getAcceptableFileFormatsForDisplay, a as addIfNotEmpty, b as searchState, u as useSearchStore } from './search.store-BtRgJeHn.js';
4
- import { s as slotChangeListener } from './customized-slots-ZvDCa2Eu.js';
5
- import { c as campaignTypeNames, v as version } from './package-DiWvyInL.js';
4
+ import { s as slotChangeListener } from './customized-slots-CwvCP9fk.js';
5
+ import { c as campaignTypeNames, v as version } from './package-CnrbgDHX.js';
6
6
  import { S as SecondaryActionIcon } from './SecondaryActionIcon-Co8n0aty.js';
7
7
  import { m as modalParts, c as carouselParts, p as productCardParts } from './index-DyZfzSpJ.js';
8
8
  import { a as SIDEBAR_ANIMATION_DURATION, P as PRODUCT_CARD_IMAGE_WIDTH, D as DISCOVERY_WIDGET_IMAGE_RESOLUTION_WIDTH, L as LOADING_CLASS_DELAY, b as addEventListenersWithSignal } from './index-DlCdKcyY.js';
@@ -512,7 +512,7 @@ const VviinnVprButton = class {
512
512
  }
513
513
  }
514
514
  render() {
515
- return (h(Host, { key: 'bf6e6f058b0fcb133df713d43d9603e50783dd7d', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, h("vviinn-button", { key: '829e3a82cc5345750696eddadfd307813b02464b', addStyle: this.addStyle, part: "vviinn-button" }, h("slot", { key: 'ad46d98bc63a6a4b5555151d8c366216d82299a8' }, this.campaignType === "VCS" ? (h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
515
+ return (h(Host, { key: '642ab6be441bda4edae51d606480194487c073ec', role: "button", tabindex: "0", "aria-label": this.getAriaLabel(), onClick: this.handleButtonClick, onKeyDown: this.handleKeyDown }, h("vviinn-button", { key: '387943ce5bda1089940f1e8cb95b240fc15f827e', addStyle: this.addStyle, part: "vviinn-button" }, h("slot", { key: '0060b5f12f62b8bab2be66d9d35afd5341f1e09a' }, this.campaignType === "VCS" ? (h(CrossSellingIcon, { width: this.iconSideSize, height: this.iconSideSize })) : (h(SimilarProductsIcon, { width: this.iconSideSize, height: this.iconSideSize }))))));
516
516
  }
517
517
  handleClick() {
518
518
  const sidebar = document.createElement("vviinn-recommendations-sidebar");
@@ -1,13 +1,13 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, g as getElement, F as Fragment } from './index-C5qrIvmr.js';
2
2
  import { _ as _functionExports, E as EitherExports, f as fromImage, b as isLeft, m as match, g as getOrElse, O as OptionExports } from './Rectangle-DM-Jf7YJ.js';
3
3
  import { t as toFile, e as makeUploadFileRequest, n as getImageSizes, d as makeVisualSearchRequest, u as useSearchStore, o as checkImageType, h as getAcceptableFileFormats, s as setTextSearchQuery, r as resetStore, a as addIfNotEmpty, m as makeTextSearchRequest, q as makeProductListingPageRequest, w as checkDeviceType, p as parseStringToExcluded } from './search.store-BtRgJeHn.js';
4
- import { s as slotChangeListener, p as productCardSlotNames, v as vprIconSlotName, S as SlotSkeleton } from './customized-slots-ZvDCa2Eu.js';
4
+ import { s as slotChangeListener, p as productCardSlotNames, v as vprIconSlotName, S as SlotSkeleton } from './customized-slots-CwvCP9fk.js';
5
5
  import { g as getRemoveFilterAriaLabel, F as FilterIconClose, P as PlusIcon, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, c as createWidgetEvent, a as createFilterEvent, v as v4, b as createAddToBasketEvent, d as createAddToWishlistEvent, e as createResultEventByType, f as createProductEventByType, h as getCustomLabels, t as triggerFilter, i as getIntervalLabel, j as triggerRemoveIntervalFilter, k as announceToScreenReader, s as syncRequestFilters, l as isSubFilterActive, m as RenderFilterButton, n as createImageSearchEvent } from './index-E1xSXX9S.js';
6
6
  import { i as instance } from './i18next-C7V-mvcq.js';
7
7
  import { M as MIN_SEARCH_AREA_SIZE, S as SUPPORTED_ASPECT_RATIO, a as MIN_IMAGE_SIDE_FOR_CROPPER, C as Cropper, c as cropperOptions, g as getCropBoxData, i as isCropBoxChangeMinimal, D as DEFAULT_IMAGE_SIZE } from './cropperUtils-BpgcCYJQ.js';
8
8
  import { u as updateGlobalState, t as trackEvent, g as globalState } from './store-CMhsm-nf.js';
9
9
  import { b as addEventListenersWithSignal, R as RESULTS_WIDGET_IMAGE_RESOLUTION_WIDTH, f as findSlotElements, g as getSlotNames, c as SCROLL_TO_DISCOVERY_DELAY, s as setElementInteractivity, S as SEARCH_WIDGET_IMAGE_RESOLUTION_WIDTH } from './index-DlCdKcyY.js';
10
- import { v as version, c as campaignTypeNames } from './package-DiWvyInL.js';
10
+ import { v as version, c as campaignTypeNames } from './package-CnrbgDHX.js';
11
11
  import { r as resources } from './resources-Cvip80t1.js';
12
12
  import { a as productCardsGridPart, p as productCardParts, l as listCardParts, b as contentCardParts, d as selectedFiltersParts, e as suggestionsParts, f as filtersParts, g as extendedFiltersParts, m as modalParts, s as searchBarParts, h as searchWidgetFilterParts, i as searchWidgetButtonParts } from './index-DyZfzSpJ.js';
13
13
  import { D as DEFAULT_EXAMPLE_IMAGE } from './constants-DOMXsA9W.js';
@@ -2,10 +2,10 @@ import { h, r as registerInstance, c as createEvent, F as Fragment, H as Host, g
2
2
  import { a as addIfNotEmpty, _ as _ArrayExports, u as useSearchStore } from './search.store-BtRgJeHn.js';
3
3
  import { W as has, X as tuple, _ as _functionExports, e as requireSemigroup, O as OptionExports, v as pipe$1, N as chainW, Y as makeRequest, L as fromEither, Z as getApiPath, $ as createInitPostRequest, a0 as Apply, a1 as TaskEitherExports, E as EitherExports } from './Rectangle-DM-Jf7YJ.js';
4
4
  import { i as instance } from './i18next-C7V-mvcq.js';
5
- import { c as campaignTypeNames, f as fromString, a as fold, v as version } from './package-DiWvyInL.js';
5
+ import { c as campaignTypeNames, f as fromString, a as fold, v as version } from './package-CnrbgDHX.js';
6
6
  import { S as SET_MODE_IMAGE_WIDTH_CSS_VAR, C as CONTENT_GROUP_CSS_CLASS, o as CAROUSEL_IMAGE_WIDTH_CSS_VAR, p as CAROUSEL_CONTENT_WIDTH_CSS_VAR, R as RESULTS_CALCULATED_COLUMNS_CSS_VAR, D as DEFAULT_COLUMNS_NUMBER, h as getCustomLabels, q as SCROLL_POSITION_TOLERANCE, r as triggerResetFilters, t as triggerFilter, k as announceToScreenReader, i as getIntervalLabel, u as isPriceFilter, l as isSubFilterActive, m as RenderFilterButton, s as syncRequestFilters, P as PlusIcon, v as v4, c as createWidgetEvent, e as createResultEventByType, b as createAddToBasketEvent, d as createAddToWishlistEvent, f as createProductEventByType, w as getRecommendationsBody } from './index-E1xSXX9S.js';
7
7
  import { P as PRODUCT_CARD_IMAGE_WIDTH, D as DISCOVERY_WIDGET_IMAGE_RESOLUTION_WIDTH, b as addEventListenersWithSignal, i as isElementInSelector, d as PRODUCT_CARD_IMAGE_RESOLUTION_WIDTH } from './index-DlCdKcyY.js';
8
- import { s as slotChangeListener, S as SlotSkeleton } from './customized-slots-ZvDCa2Eu.js';
8
+ import { s as slotChangeListener, S as SlotSkeleton } from './customized-slots-CwvCP9fk.js';
9
9
  import { j as energyLabelParts, g as extendedFiltersParts, f as filtersParts, k as imageParts, b as contentCardParts, l as listCardParts, p as productCardParts, n as priceRangeParts } from './index-DyZfzSpJ.js';
10
10
  import { r as resources } from './resources-Cvip80t1.js';
11
11
  import { g as globalState, t as trackEvent, u as updateGlobalState } from './store-CMhsm-nf.js';
@@ -1,6 +1,6 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-C5qrIvmr.js';
2
2
  import { s as setTextSearchQuery, m as makeTextSearchRequest, u as useSearchStore } from './search.store-BtRgJeHn.js';
3
- import { s as slotChangeListener } from './customized-slots-ZvDCa2Eu.js';
3
+ import { s as slotChangeListener } from './customized-slots-CwvCP9fk.js';
4
4
  import { i as instance } from './i18next-C7V-mvcq.js';
5
5
  import { r as resources } from './resources-Cvip80t1.js';
6
6
  import { _ as _functionExports, g as getOrElse } from './Rectangle-DM-Jf7YJ.js';
@@ -1,5 +1,5 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-C5qrIvmr.js';
2
- import { S as SlotSkeleton } from './customized-slots-ZvDCa2Eu.js';
2
+ import { S as SlotSkeleton } from './customized-slots-CwvCP9fk.js';
3
3
  import { D as DEFAULT_EXAMPLE_IMAGE } from './constants-DOMXsA9W.js';
4
4
  import { S as SEARCH_WIDGET_IMAGE_RESOLUTION_WIDTH, f as findSlotElements } from './index-DlCdKcyY.js';
5
5
  import { i as instance } from './i18next-C7V-mvcq.js';
@@ -0,0 +1,21 @@
1
+ export const generateHistogram = (start, end, frequencies) => {
2
+ const histogram = [];
3
+ const numIntervals = frequencies.length;
4
+ const step = (end - start) / numIntervals;
5
+ for (let i = 0; i < numIntervals; i++) {
6
+ const intervalStart = Math.round(start + i * step);
7
+ const intervalEnd = Math.round(start + (i + 1) * step);
8
+ histogram.push({
9
+ value: {
10
+ frequency: frequencies[i],
11
+ interval: {
12
+ start: intervalStart,
13
+ end: intervalEnd,
14
+ },
15
+ },
16
+ label: `[${intervalStart}-${intervalEnd})`,
17
+ active: true,
18
+ });
19
+ }
20
+ return histogram;
21
+ };
@@ -1 +1,2 @@
1
1
  export * from "./industryToken";
2
+ export * from "./generateHistogram";
@@ -5,7 +5,7 @@ const data = {
5
5
  token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOjgzLCJqdGkiOiI3ZTg2Y2I1YS00ZTFjLTRhYjctYjU2My1lN2FjMTYzZTYyZDIiLCJzY29wZXMiOlsidnByIiwidnBzIiwidnBjIl19.skAkdwLTQ0sfeqfMCHWRN3QmoNGjb6YEUr3Z5mt9wvXyl447EXTx7nYRIpCVSF6T65bo5BEbDsCyjCII5jpfNWVgmHzNWfm9ZZ1_4vPdl7QsdMfQ7RZ6zEdVwCGVkQr34OLmsrHrSwnVv22Lkf74X_0uEkh1AUZcyTC8lGzdV0rYaipBIg47yKx1MpK3QegaXwCNshuPPDbl9s_Y-tiGkBI2761fElDaEIXUkeWLvkwL3Y2pUO3CpfzDYdS6coS0blBq_yCfuw_u2bkJbakg2JOiGkFnUBA7bZcDaLhx7Yl7ofsVeObaRic77wJR9cIU4RVec26kPTXw2Wxi4sjfmg",
6
6
  productIdSimilarProducts: "590013-6",
7
7
  productIdCrossSelling: "598125",
8
- textSearchQuery: "Chair",
8
+ textSearchQuery: "Grey office chair with armrests",
9
9
  filterValue: "Möbel > Schränke & Regale",
10
10
  description: "company: 'vviinn', site: 'widgets.vviinn.com'",
11
11
  shopTheLookImageUrls: [
@@ -19,7 +19,7 @@ const data = {
19
19
  token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOjIwNywianRpIjoiMmU0OTY3OTgtYzk3NC00ODQ3LTkyYWItOTBkMTEyZGY5MTY2Iiwic2NvcGVzIjpbInZwciIsInZwcyIsInZwYyJdfQ.bH8WQkR3jBuDZ92F3WObgcKplh14ODZeiBCf5JDOJfucU75u4XaZOQrmsOaw1ouZbO9cW40sKw9ZICaP4Soi00AHrWPBGjuzZ0Yx17vwGFUtHgK5Zi9DAhd3R3PcRnbo7UIvUtANTGcExd5TQnrA07DtV99KThoQEYB2I8R8HXv46j-Abo2kHovd6fGwYC6FYT1QpXEsVa8QNZtcrB0yU1rK6da8aR5Nh3zYECIUL0ysdhRmOQxR_3zBUVrXJYB15vvOH4TjAG6jSMcvaLwzmmTzH9_A9kVLsP27cFK5YYoAx7_w0eBMhQv3yEaHrVXuMXQe2gFjvCat441_DvZWyg",
20
20
  productIdSimilarProducts: "4078868-1",
21
21
  productIdCrossSelling: "4017822-1",
22
- textSearchQuery: "taschen",
22
+ textSearchQuery: "Pink leather bag with gold hardware",
23
23
  filterValue: "Beauty > Düfte",
24
24
  description: "company: 'Vviinn Demo Company', site: 'Fashion Women 64K'",
25
25
  shopTheLookImageUrls: [
@@ -16,6 +16,10 @@ import { OneClickDiscoveryMode } from "../../widget/types";
16
16
  * @part image - Product Card image.
17
17
  * @part image-link - Anchor element around product image. Rendered only if "deeplink" property is filled.
18
18
  * @part image-picture - Picture element for image.
19
+ * @part image-placeholder - Placeholder shown when no image is available.
20
+ * @part image-container - Product Card's image container.
21
+ * @part content-container - Product Card's content container.
22
+ * @part basket-button-container - Product Card's basket button container.
19
23
  * @part deeplink - Anchor element around product title. Rendered only if "deeplink" property is filled.
20
24
  * @part price-amount-regular - Numeric part of the price.
21
25
  * @part price-amount-sale - Numeric part of the price.
@@ -27,6 +31,8 @@ import { OneClickDiscoveryMode } from "../../widget/types";
27
31
  * @part price-regular - Block for a price if no sale price is presented.
28
32
  * @part price-sale - Block for sale price. Rendered only if the sale price is presented.
29
33
  * @part price-prefix - Block rendered before each price element (for ex. "from").
34
+ * @part product-card-actions - Product Card actions wrapper.
35
+ * @part product-card-actions-top - Product Card top actions wrapper.
30
36
  * @part carousel-button - Both carousel navigation buttons (generic part).
31
37
  * @part carousel-button-prev - The previous/back carousel navigation button.
32
38
  * @part carousel-button-next - The next/forward carousel navigation button.
@@ -40,6 +46,14 @@ import { OneClickDiscoveryMode } from "../../widget/types";
40
46
  * @part energy-label-data-sheet-link - Data sheet link.
41
47
  * @part update-button-top - Update Button on the top (Set mode).
42
48
  * @part update-button-item - Update Button inside the Product Card (Set mode).
49
+ * @part discount-label - Discount label in Product Card (Set mode).
50
+ * @part discount-percentage - Discount percentage inside the Add to Basket button (Set mode).
51
+ * @part list-card - List card container.
52
+ * @part list-card-content-container - List card's content container.
53
+ * @part list-card-image-container - List card's image container.
54
+ * @part list-card-image-link - List card's image link.
55
+ * @part list-label - List card's label (e.g., "Category").
56
+ * @part list-title - List card's title.
43
57
  *
44
58
  * @part custom-label-0 - Custom label with index 0.
45
59
  * @part custom-label-1 - Custom label with index 1.
@@ -64,6 +78,7 @@ import { OneClickDiscoveryMode } from "../../widget/types";
64
78
  * @slot vviinn-custom-label-2 - Custom label with index 2.
65
79
  * @slot vviinn-custom-label-3 - Custom label with index 3.
66
80
  * @slot vviinn-custom-label-4 - Custom label with index 4.
81
+ * @slot vviinn-image-placeholder-icon - Icon or content for the image placeholder.
67
82
  */
68
83
  export declare class VviinnVprButton {
69
84
  el: HTMLElement;
@@ -6,6 +6,7 @@ import { ProductCardEvent, BasicEventData, ProductCardEventData, ChangedFiltersE
6
6
  import { Locale } from "../../locale";
7
7
  import { ResponseDynamicFilterItem } from "../../campaign/VPRCampaignService";
8
8
  export type UpdateButtonLocation = "onTop" | "onItem" | "topAndItem";
9
+ export type Mode = "pure-grid" | CarouselMode;
9
10
  /**
10
11
  * @part product-card - Product Card itself.
11
12
  * @part title - Title inside Product Card.
@@ -16,6 +17,9 @@ export type UpdateButtonLocation = "onTop" | "onItem" | "topAndItem";
16
17
  * @part image-link - Anchor element around product image. Rendered only if "deeplink" property is filled.
17
18
  * @part image-picture - Picture element for image.
18
19
  * @part image-placeholder - Placeholder shown when no image is available.
20
+ * @part image-container - Product Card's image container.
21
+ * @part content-container - Product Card's content container.
22
+ * @part basket-button-container - Product Card's basket button container.
19
23
  * @part deeplink - Anchor element around product title. Rendered only if "deeplink" property is filled.
20
24
  * @part price-amount-sale - Numeric part of the price.
21
25
  * @part price-amount-outdated - Numeric part of the price.
@@ -27,6 +31,8 @@ export type UpdateButtonLocation = "onTop" | "onItem" | "topAndItem";
27
31
  * @part price-regular - Block for a price if no sale price is presented.
28
32
  * @part price-sale - Block for sale price. Rendered only if the sale price is presented.
29
33
  * @part price-prefix - Block rendered before each price element (for ex. "from").
34
+ * @part product-card-actions - Product Card actions wrapper.
35
+ * @part product-card-actions-top - Product Card top actions wrapper.
30
36
  * @part carousel-button - Both carousel navigation buttons (generic part).
31
37
  * @part carousel-button-prev - The previous/back carousel navigation button.
32
38
  * @part carousel-button-next - The next/forward carousel navigation button.
@@ -42,6 +48,12 @@ export type UpdateButtonLocation = "onTop" | "onItem" | "topAndItem";
42
48
  * @part update-button-item - Update Button inside the Product Card (Set mode).
43
49
  * @part discount-label - Discount label in Product Card (Set mode).
44
50
  * @part discount-percentage - Discount percentage inside the Add to Basket button (Set mode).
51
+ * @part list-card - List card container.
52
+ * @part list-card-content-container - List card's content container.
53
+ * @part list-card-image-container - List card's image container.
54
+ * @part list-card-image-link - List card's image link.
55
+ * @part list-label - List card's label (e.g., "Category").
56
+ * @part list-title - List card's title.
45
57
  *
46
58
  * @part custom-label-0 - Custom label with index 0.
47
59
  * @part custom-label-1 - Custom label with index 1.
@@ -68,7 +80,6 @@ export type UpdateButtonLocation = "onTop" | "onItem" | "topAndItem";
68
80
  * @slot vviinn-custom-label-4 - Custom label with index 4.
69
81
  * @slot vviinn-image-placeholder-icon - Icon or content for the image placeholder.
70
82
  */
71
- export type Mode = "pure-grid" | CarouselMode;
72
83
  export declare class VviinnVprWidget implements ComponentInterface {
73
84
  el: HTMLElement;
74
85
  /** Vviinn customer's token (required) */
@@ -0,0 +1 @@
1
+ export declare const generateHistogram: (start: number, end: number, frequencies: number[]) => any[];
@@ -1 +1,2 @@
1
1
  export * from "./industryToken";
2
+ export * from "./generateHistogram";
@@ -1 +1 @@
1
- import{h as e,r as t,c as i,H as o,g as r}from"./p-C5qrIvmr.js";import{s,m as a,u as n}from"./p-OChFjzgO.js";import{s as c}from"./p-V-feYN6s.js";import{i as l}from"./p-C7V-mvcq.js";import{r as h}from"./p-Cvip80t1.js";import{_ as d,g as p}from"./p-DGkMd91j.js";import{s as f}from"./p-DyZfzSpJ.js";import{u as b,g}from"./p-BFKAtFxd.js";const x=()=>e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M20.6 4.57C17.39 4.19 16.88 3.68 16.42 0.37C16.38 0.15 16.22 0 16.01 0C15.8 0 15.63 0.15 15.59 0.37C15.12 3.66 14.63 4.13 11.41 4.57C11.17 4.61 11.01 4.77 11.01 5C11.01 5.23 11.17 5.39 11.41 5.42C14.63 5.81 15.14 6.31 15.59 9.62C15.63 9.84 15.8 10 16.01 10C16.22 10 16.39 9.84 16.42 9.62C16.89 6.31 17.39 5.81 20.6 5.42C20.84 5.38 21 5.22 21 5C21 4.78 20.83 4.6 20.6 4.57Z",fill:"#525252"}),e("path",{d:"M14 12C14 9.24 11.76 7 9 7C6.24 7 4 9.24 4 12C4 14.76 6.24 17 9 17C10.02 17 10.96 16.69 11.75 16.17L16.29 20.71L17.7 19.3L13.16 14.76C13.68 13.97 13.99 13.02 13.99 12.01L14 12ZM9 15C7.35 15 6 13.65 6 12C6 10.35 7.35 9 9 9C10.65 9 12 10.35 12 12C12 13.65 10.65 15 9 15Z",fill:"#525252"})),u=()=>e("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",width:"24",height:"24","aria-hidden":"true"},e("path",{d:"M12 14C11.1667 14 10.4583 13.7083 9.87501 13.125C9.29168 12.5417 9.00001 11.8333 9.00001 11V5C9.00001 4.16667 9.29168 3.45833 9.87501 2.875C10.4583 2.29167 11.1667 2 12 2C12.8333 2 13.5417 2.29167 14.125 2.875C14.7083 3.45833 15 4.16667 15 5V11C15 11.8333 14.7083 12.5417 14.125 13.125C13.5417 13.7083 12.8333 14 12 14ZM11 20V17.925C9.46668 17.7083 8.15418 17.0583 7.06251 15.975C5.97085 14.8917 5.30835 13.575 5.07501 12.025C5.04168 11.7417 5.11668 11.5 5.30001 11.3C5.48335 11.1 5.71668 11 6.00001 11C6.28335 11 6.52085 11.0958 6.71251 11.2875C6.90418 11.4792 7.03335 11.7167 7.10001 12C7.33335 13.1667 7.91251 14.125 8.83751 14.875C9.76251 15.625 10.8167 16 12 16C13.2 16 14.2583 15.6208 15.175 14.8625C16.0917 14.1042 16.6667 13.15 16.9 12C16.9667 11.7167 17.0958 11.4792 17.2875 11.2875C17.4792 11.0958 17.7167 11 18 11C18.2833 11 18.5167 11.1 18.7 11.3C18.8833 11.5 18.9583 11.7417 18.925 12.025C18.6917 13.5417 18.0333 14.85 16.95 15.95C15.8667 17.05 14.55 17.7083 13 17.925V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20Z",fill:"#161616"})),v=()=>{var e;const t=window,i=window.navigator,o=i.vendor,r=[void 0!==t.opr,i.userAgent.indexOf("Firefox")>-1,i.userAgent.indexOf("Edg")>-1].some((e=>!0===e)),s=void 0!==i.userAgentData?"Google Chrome"===(null===(e=i.userAgentData.brands[0])||void 0===e?void 0:e.brand):"Google Inc."===o;return{forbiddenBrowser:r,isChrome:s,isSafari:i.userAgent.indexOf("Safari")>-1&&!s}},m=class{constructor(e){t(this,e),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished"),this.vviinnFilterTriggered=i(this,"vviinnFilterTriggered"),this.vviinnTextSearchStarted=i(this,"vviinnTextSearchStarted"),this.widgetTextSearchFinished=i(this,"widgetTextSearchFinished"),this.vviinnSelectedFiltersReset=i(this,"vviinnSelectedFiltersReset"),this.mode="basic",this.placeholder="",this.showInWidget=!1,this.showOnFirstScreen=!1,this.isRecording=!1,this.showTooltip=!1,this.isShowPreloader=()=>"loading"===this.state.searchStatus&&"text"===this.state.searchType,this.isShowRecording=()=>this.isRecording,this.showRecording=()=>this.isRecording=!0,this.hideRecording=()=>this.isRecording=!1,this.setShowTooltip=e=>{this.showTooltip=e},this.tooltipText=(()=>{const{isSafari:e}=v();return e?"speechRecognition.tooltip.siri":"speechRecognition.tooltip.general"})(),this.getPlaceholderText=()=>this.isShowRecording()?l.t("speechRecognition.placeholder"):this.placeholder.length?this.placeholder:l.t("textSearchPlaceholder"),this.recognition=((e,t,i,o)=>{const r=(()=>{const e=window,t=e.webkitSpeechRecognition||e.SpeechRecognition;if(!t)return;const{forbiddenBrowser:i,isChrome:o,isSafari:r}=v();return i?void 0:o||r?t:void 0})();if(!r)return;const s=new r;let a;return s.interimResults=!1,s.maxAlternatives=1,s.continuous=!1,s.lang=e,s.onstart=()=>{t(),a=setTimeout((()=>{s.stop()}),1e4)},s.onspeechend=()=>{s.stop(),i(),clearTimeout(a)},s.onend=i,s.onresult=e=>{o(e.results[0][0].transcript)},s})(g.locale,(()=>{this.showRecording(),this.setShowTooltip(!1),clearTimeout(this.triggerTooltipStart)}),this.hideRecording,(e=>{s(this.storeName,e),this.handleTextSearch()})),this.trackTextSearch=()=>this.vviinnFilterTriggered.emit({kind:this.state.textSearchQuery,action:"select",customTrigger:"TPS",isTriggeredByVpsWidget:this.showInWidget}),this.handleSpeech=async()=>{this.isRecording?(this.recognition.stop(),this.hideRecording(),this.setShowTooltip(!1)):(this.recognition.start(),s(this.storeName,null),this.triggerTooltipStart=setTimeout((()=>{this.isRecording||(this.setShowTooltip(!0),this.triggerTooltipEnd=setTimeout((()=>{this.setShowTooltip(!1)}),5e3))}),1e3))},this.handleTextSearch=async()=>{const e=this.state.textSearchQuery;if(e&&(this.trackTextSearch(),this.vviinnTextSearchStarted.emit({query:e,isTriggeredByVpsWidget:this.showInWidget}),this.showInWidget&&this.showOnFirstScreen)){const t=d.pipe(await a(this.storeName,e),p((()=>null)),(e=>e));t&&(this.widgetTextSearchFinished.emit({query:e,requestId:t.requestId}),this.vviinnSelectedFiltersReset.emit({isTriggeredByVpsWidget:this.showInWidget}))}},this.handleButtonKeyDown=(e,t)=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t())}}connectedCallback(){b(this);const{state:e,storeName:t}=n(this.showInWidget);this.state=e,this.storeName=t}disconnectedCallback(){clearTimeout(this.triggerTooltipStart),clearTimeout(this.triggerTooltipEnd)}async componentWillLoad(){var e,t;await l.init({lng:g.locale,fallbackLng:"en",resources:h}),c(this,this.el),(null===(e=this.searchQuery)||void 0===e?void 0:e.length)>0&&s(this.storeName,this.searchQuery),!this.showInWidget&&(null===(t=this.searchQuery)||void 0===t?void 0:t.length)>0&&(this.vviinnTextSearchStarted.emit({query:this.searchQuery,isTriggeredByVpsWidget:this.showInWidget}),this.trackTextSearch())}handleInputChange(e){s(this.storeName,e.target.value)}handleKeyPress(e){"Enter"===e.key&&this.handleTextSearch()}render(){return e(o,{key:"388ede07fa9358da6fa026052863e83268fe73e7",exportparts:f},e("div",{key:"86dd0bf766d3f45c20b5fff3907db5f1989a91a0",class:"text-search-container",part:"text-search-container"},e("input",{key:"668debcca97abb541b90f27043a0eb7bd67f6a0c",class:"text-search-input",part:"text-search-input",type:"text",placeholder:this.getPlaceholderText(),value:this.state.textSearchQuery||"",onInput:e=>this.handleInputChange(e),onKeyUp:e=>this.handleKeyPress(e)}),"extended"===this.mode&&e("vviinn-vps-button",{key:"4a69dd8ac91b2e0cf0e83574944f472400da6511",token:g.token,locale:g.locale,apiPath:g.apiPath,addStyle:!1,showInWidget:!1,exportparts:"vviinn-button"}),"basic"===this.mode&&e("slot",{key:"1727c3375b18746c5754c3760ac38ef0cf78ca6c",name:"vviinn-text-search-actions"}),("extended"===this.mode||this.showInWidget)&&this.recognition&&e("button",{key:"75b909c41a05f77fe321bcc08bac7edd5f9ced31",class:"speech-button",part:"speech-button","aria-label":l.t("a11y.speechButton"),onClick:this.handleSpeech,onKeyDown:e=>this.handleButtonKeyDown(e,this.handleSpeech)},e(u,{key:"8e8cd4fc76217fb9b9b78175cc217809adb9931e"}),this.isShowRecording()&&e("span",{key:"e4cde027b86bcbb665092e31797b280a078092cc",class:"recording-indicator"})),e("button",{key:"7ba524a758731fd5712de61a9857134fa3a78479",class:"text-search-button",part:"text-search-button",onClick:this.handleTextSearch,onKeyDown:e=>this.handleButtonKeyDown(e,this.handleTextSearch),disabled:"loading"===this.state.searchStatus,"aria-label":l.t("a11y.textSearchButton")},this.isShowPreloader()?e("vviinn-preloader",null):e("slot",{name:"vviinn-text-search-icon"},e(x,null)))),this.showTooltip&&e("p",{key:"052e5d9d1ff094ebdc3e60f4691e27ca9c6c5631",class:"text-search-tooltip",part:"text-search-tooltip"},l.t(this.tooltipText)))}get el(){return r(this)}};m.style=':host{--font-family-base:Inter, system-ui, sans-serif;--font-family-mono:monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-size-display:32px;--font-size-title:24px;--font-size-headline:18px;--font-size-label-large:16px;--font-size-label:14px;--font-size-body-large:16px;--font-size-body:14px;--font-size-caption:12px;--line-height-display:40px;--line-height-title:32px;--line-height-headline:24px;--line-height-label-large:24px;--line-height-label:20px;--line-height-body-large:24px;--line-height-body:20px;--line-height-caption:16px;--letter-spacing-title:0px;--letter-spacing-headline:0px;--letter-spacing-label-large:0px;--letter-spacing-label:0px;--letter-spacing-body-large:0px;--letter-spacing-body:0px;--letter-spacing-caption:0px;--font-weight-400:400;--font-weight-500:500;--font-weight-600:600;--font-weight-700:700;--spacing-none:0px;--spacing-25:2px;--spacing-50:4px;--spacing-75:6px;--spacing-100:8px;--spacing-125:10px;--spacing-150:12px;--spacing-200:16px;--spacing-250:20px;--spacing-300:24px;--spacing-400:32px;--spacing-500:40px;--spacing-600:48px;--border-radius-none:0px;--border-radius-25:2px;--border-radius-50:4px;--border-radius-100:8px;--border-radius-150:12px;--border-radius-200:16px;--border-radius-300:24px;--border-radius-400:32px;--border-radius-full:9999px;--stroke-width-none:0px;--stroke-width-25:1px;--stroke-width-50:2px;--stroke-width-75:3px;--stroke-width-100:4px;--stroke-width-150:6px;--stroke-width-200:8px;--stroke-width-300:12px;--product-card-widget-min-width:135px;--product-card-results-min-width:250px;--image-set-mode-min-width:155px;--source-card-set-mode-max-width:500px;--filter-blur-none:0px;--filter-blur-100:8px;--filter-blur-150:12px;--filter-blur-200:16px;--color-bg-base:#ffffff;--color-bg-inverse:#161616;--color-border-00:#ffffff;--color-border-01:#f4f4f4;--color-border-02:#e0e0e0;--color-border-03:#c6c6c6;--color-border-inverse-00:#161616;--color-border-inverse-01:#393939;--color-field-01:#ffffff;--color-field-02:#f4f4f4;--color-icon-primary:#161616;--color-icon-secondary:#525252;--color-icon-helper:#8d8d8d;--color-icon-on-color:#ffffff;--color-icon-inverse:#ffffff;--color-icon-disabled:#16161640;--color-text-primary:#161616;--color-text-secondary:#707070;--color-text-helper:#8d8d8d;--color-text-placeholder:#a8a8a8;--color-text-on-color:#ffffff;--color-text-inverse:#ffffff;--color-text-disabled:#16161640;--button-bg-color-primary:#000000;--button-bg-color-primary-hover:#161616;--button-bg-color-primary-active:#1e1e1e;--button-bg-color-secondary:#f4f4f4;--button-bg-color-secondary-hover:#e0e0e0;--button-bg-color-secondary-active:#c6c6c6;--button-bg-color-ghost-hover:#f4f4f4;--button-bg-color-ghost-active:#eaeaea;--button-bg-color-frosted:#6f6f6f66;--button-bg-color-frosted-hover:#6f6f6f80;--button-bg-color-frosted-active:#6f6f6f99;--button-bg-color-disabled:#e0e0e0;--button-bg-color-positive:#dcfce7;--surface-bg-color-01:#f4f4f4;--surface-bg-color-01-hover:#eaeaea;--surface-bg-color-01-active:#e0e0e0;--surface-bg-color-02:#ffffff;--surface-bg-color-inverse:#262626;--surface-bg-color-inverse-hover:#303030;--surface-bg-color-inverse-active:#393939;--surface-bg-color-disabled:#e0e0e0;--surface-bg-color-shadow-01:#dddddd;--surface-bg-color-shadow-02:#c6c6c6;--chip-bg-color-primary:#161616;--chip-bg-color-primary-hover:#1e1e1e;--chip-bg-color-primary-active:#262626;--chip-bg-color-subtle:#f4f4f4;--chip-bg-color-subtle-hover:#eaeaea;--chip-bg-color-subtle-active:#e0e0e0;--chip-bg-color-outline-hover:#f4f4f4;--chip-bg-color-outline-active:#eaeaea;--label-bg-color-accent:#ff3944;--sidebar-animation-duration:0.5s;}:host{display:block;position:relative;width:100%;}.text-search-container{display:flex;align-items:center;gap:var(--spacing-50);width:100%;height:46px;border:1px solid var(--color-border-02);border-radius:8px;transition:border-color 0.2s;overflow:hidden;box-sizing:border-box}.text-search-container:focus-within{border-color:#8d8d8d}.text-search-input,.text-search-tooltip{font-size:16px;font-style:normal;font-weight:400;font-family:var(--font-family, var(--font-family-base))}.text-search-input{height:100%;padding-left:16px;box-sizing:border-box;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;flex-grow:2;width:150px}.text-search-input::-moz-placeholder{color:#a8a8a8}.text-search-input::placeholder{color:#a8a8a8}.text-search-input:focus,.text-search-input:active{border-color:#8d8d8d}vviinn-vps-button{height:100%}.text-search-button,.speech-button,vviinn-vps-button::part(vviinn-button){border:none;height:100%;display:flex;justify-content:center;align-items:center;cursor:pointer}.speech-button,vviinn-vps-button::part(vviinn-button){padding:0 8px}.upload-button-text{display:contents}.text-search-button{background-color:#f4f4f4;transition:background-color 0.2s;aspect-ratio:1 / 1;border-radius:0 7px 7px 0}.speech-button{background-color:transparent;position:relative}@keyframes recordingSpeech{0%{background-color:#ff0000;scale:1}100%{background-color:#ff8888;scale:1.5}}.recording-indicator{border-radius:50%;width:8px;height:8px;left:24px;top:24px;background-color:#ff0000;position:absolute;animation:recordingSpeech 1s infinite alternate ease-in-out}@keyframes fade-out{0%{opacity:0}20%{opacity:1}80%{opacity:1}100%{opacity:0;display:none}}.text-search-tooltip{position:absolute;right:0;top:80%;background:#f4f4f4;animation:fade-out 5s forwards;width:-moz-fit-content;width:fit-content;padding:24px;border-radius:8px;border:1px solid #8d8d8d;box-sizing:border-box}.text-search-button:not(:disabled):hover{background-color:#e0e0e0}.text-search-button:disabled{cursor:unset}vviinn-image-selector,::slotted([slot="vviinn-text-search-actions"]){margin:auto 8px}vviinn-preloader{--preloader-size:16px;display:flex;color:#525252}';export{m as vviinn_text_search}
1
+ import{h as e,r as t,c as i,H as o,g as r}from"./p-C5qrIvmr.js";import{s,m as a,u as n}from"./p-OChFjzgO.js";import{s as c}from"./p-DWD1XfuU.js";import{i as l}from"./p-C7V-mvcq.js";import{r as h}from"./p-Cvip80t1.js";import{_ as d,g as p}from"./p-DGkMd91j.js";import{s as f}from"./p-DyZfzSpJ.js";import{u as b,g}from"./p-BFKAtFxd.js";const x=()=>e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M20.6 4.57C17.39 4.19 16.88 3.68 16.42 0.37C16.38 0.15 16.22 0 16.01 0C15.8 0 15.63 0.15 15.59 0.37C15.12 3.66 14.63 4.13 11.41 4.57C11.17 4.61 11.01 4.77 11.01 5C11.01 5.23 11.17 5.39 11.41 5.42C14.63 5.81 15.14 6.31 15.59 9.62C15.63 9.84 15.8 10 16.01 10C16.22 10 16.39 9.84 16.42 9.62C16.89 6.31 17.39 5.81 20.6 5.42C20.84 5.38 21 5.22 21 5C21 4.78 20.83 4.6 20.6 4.57Z",fill:"#525252"}),e("path",{d:"M14 12C14 9.24 11.76 7 9 7C6.24 7 4 9.24 4 12C4 14.76 6.24 17 9 17C10.02 17 10.96 16.69 11.75 16.17L16.29 20.71L17.7 19.3L13.16 14.76C13.68 13.97 13.99 13.02 13.99 12.01L14 12ZM9 15C7.35 15 6 13.65 6 12C6 10.35 7.35 9 9 9C10.65 9 12 10.35 12 12C12 13.65 10.65 15 9 15Z",fill:"#525252"})),u=()=>e("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",width:"24",height:"24","aria-hidden":"true"},e("path",{d:"M12 14C11.1667 14 10.4583 13.7083 9.87501 13.125C9.29168 12.5417 9.00001 11.8333 9.00001 11V5C9.00001 4.16667 9.29168 3.45833 9.87501 2.875C10.4583 2.29167 11.1667 2 12 2C12.8333 2 13.5417 2.29167 14.125 2.875C14.7083 3.45833 15 4.16667 15 5V11C15 11.8333 14.7083 12.5417 14.125 13.125C13.5417 13.7083 12.8333 14 12 14ZM11 20V17.925C9.46668 17.7083 8.15418 17.0583 7.06251 15.975C5.97085 14.8917 5.30835 13.575 5.07501 12.025C5.04168 11.7417 5.11668 11.5 5.30001 11.3C5.48335 11.1 5.71668 11 6.00001 11C6.28335 11 6.52085 11.0958 6.71251 11.2875C6.90418 11.4792 7.03335 11.7167 7.10001 12C7.33335 13.1667 7.91251 14.125 8.83751 14.875C9.76251 15.625 10.8167 16 12 16C13.2 16 14.2583 15.6208 15.175 14.8625C16.0917 14.1042 16.6667 13.15 16.9 12C16.9667 11.7167 17.0958 11.4792 17.2875 11.2875C17.4792 11.0958 17.7167 11 18 11C18.2833 11 18.5167 11.1 18.7 11.3C18.8833 11.5 18.9583 11.7417 18.925 12.025C18.6917 13.5417 18.0333 14.85 16.95 15.95C15.8667 17.05 14.55 17.7083 13 17.925V20C13 20.2833 12.9042 20.5208 12.7125 20.7125C12.5208 20.9042 12.2833 21 12 21C11.7167 21 11.4792 20.9042 11.2875 20.7125C11.0958 20.5208 11 20.2833 11 20Z",fill:"#161616"})),v=()=>{var e;const t=window,i=window.navigator,o=i.vendor,r=[void 0!==t.opr,i.userAgent.indexOf("Firefox")>-1,i.userAgent.indexOf("Edg")>-1].some((e=>!0===e)),s=void 0!==i.userAgentData?"Google Chrome"===(null===(e=i.userAgentData.brands[0])||void 0===e?void 0:e.brand):"Google Inc."===o;return{forbiddenBrowser:r,isChrome:s,isSafari:i.userAgent.indexOf("Safari")>-1&&!s}},m=class{constructor(e){t(this,e),this.vviinnImageUploadFinished=i(this,"vviinnImageUploadFinished"),this.vviinnFilterTriggered=i(this,"vviinnFilterTriggered"),this.vviinnTextSearchStarted=i(this,"vviinnTextSearchStarted"),this.widgetTextSearchFinished=i(this,"widgetTextSearchFinished"),this.vviinnSelectedFiltersReset=i(this,"vviinnSelectedFiltersReset"),this.mode="basic",this.placeholder="",this.showInWidget=!1,this.showOnFirstScreen=!1,this.isRecording=!1,this.showTooltip=!1,this.isShowPreloader=()=>"loading"===this.state.searchStatus&&"text"===this.state.searchType,this.isShowRecording=()=>this.isRecording,this.showRecording=()=>this.isRecording=!0,this.hideRecording=()=>this.isRecording=!1,this.setShowTooltip=e=>{this.showTooltip=e},this.tooltipText=(()=>{const{isSafari:e}=v();return e?"speechRecognition.tooltip.siri":"speechRecognition.tooltip.general"})(),this.getPlaceholderText=()=>this.isShowRecording()?l.t("speechRecognition.placeholder"):this.placeholder.length?this.placeholder:l.t("textSearchPlaceholder"),this.recognition=((e,t,i,o)=>{const r=(()=>{const e=window,t=e.webkitSpeechRecognition||e.SpeechRecognition;if(!t)return;const{forbiddenBrowser:i,isChrome:o,isSafari:r}=v();return i?void 0:o||r?t:void 0})();if(!r)return;const s=new r;let a;return s.interimResults=!1,s.maxAlternatives=1,s.continuous=!1,s.lang=e,s.onstart=()=>{t(),a=setTimeout((()=>{s.stop()}),1e4)},s.onspeechend=()=>{s.stop(),i(),clearTimeout(a)},s.onend=i,s.onresult=e=>{o(e.results[0][0].transcript)},s})(g.locale,(()=>{this.showRecording(),this.setShowTooltip(!1),clearTimeout(this.triggerTooltipStart)}),this.hideRecording,(e=>{s(this.storeName,e),this.handleTextSearch()})),this.trackTextSearch=()=>this.vviinnFilterTriggered.emit({kind:this.state.textSearchQuery,action:"select",customTrigger:"TPS",isTriggeredByVpsWidget:this.showInWidget}),this.handleSpeech=async()=>{this.isRecording?(this.recognition.stop(),this.hideRecording(),this.setShowTooltip(!1)):(this.recognition.start(),s(this.storeName,null),this.triggerTooltipStart=setTimeout((()=>{this.isRecording||(this.setShowTooltip(!0),this.triggerTooltipEnd=setTimeout((()=>{this.setShowTooltip(!1)}),5e3))}),1e3))},this.handleTextSearch=async()=>{const e=this.state.textSearchQuery;if(e&&(this.trackTextSearch(),this.vviinnTextSearchStarted.emit({query:e,isTriggeredByVpsWidget:this.showInWidget}),this.showInWidget&&this.showOnFirstScreen)){const t=d.pipe(await a(this.storeName,e),p((()=>null)),(e=>e));t&&(this.widgetTextSearchFinished.emit({query:e,requestId:t.requestId}),this.vviinnSelectedFiltersReset.emit({isTriggeredByVpsWidget:this.showInWidget}))}},this.handleButtonKeyDown=(e,t)=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),t())}}connectedCallback(){b(this);const{state:e,storeName:t}=n(this.showInWidget);this.state=e,this.storeName=t}disconnectedCallback(){clearTimeout(this.triggerTooltipStart),clearTimeout(this.triggerTooltipEnd)}async componentWillLoad(){var e,t;await l.init({lng:g.locale,fallbackLng:"en",resources:h}),c(this,this.el),(null===(e=this.searchQuery)||void 0===e?void 0:e.length)>0&&s(this.storeName,this.searchQuery),!this.showInWidget&&(null===(t=this.searchQuery)||void 0===t?void 0:t.length)>0&&(this.vviinnTextSearchStarted.emit({query:this.searchQuery,isTriggeredByVpsWidget:this.showInWidget}),this.trackTextSearch())}handleInputChange(e){s(this.storeName,e.target.value)}handleKeyPress(e){"Enter"===e.key&&this.handleTextSearch()}render(){return e(o,{key:"388ede07fa9358da6fa026052863e83268fe73e7",exportparts:f},e("div",{key:"86dd0bf766d3f45c20b5fff3907db5f1989a91a0",class:"text-search-container",part:"text-search-container"},e("input",{key:"668debcca97abb541b90f27043a0eb7bd67f6a0c",class:"text-search-input",part:"text-search-input",type:"text",placeholder:this.getPlaceholderText(),value:this.state.textSearchQuery||"",onInput:e=>this.handleInputChange(e),onKeyUp:e=>this.handleKeyPress(e)}),"extended"===this.mode&&e("vviinn-vps-button",{key:"4a69dd8ac91b2e0cf0e83574944f472400da6511",token:g.token,locale:g.locale,apiPath:g.apiPath,addStyle:!1,showInWidget:!1,exportparts:"vviinn-button"}),"basic"===this.mode&&e("slot",{key:"1727c3375b18746c5754c3760ac38ef0cf78ca6c",name:"vviinn-text-search-actions"}),("extended"===this.mode||this.showInWidget)&&this.recognition&&e("button",{key:"75b909c41a05f77fe321bcc08bac7edd5f9ced31",class:"speech-button",part:"speech-button","aria-label":l.t("a11y.speechButton"),onClick:this.handleSpeech,onKeyDown:e=>this.handleButtonKeyDown(e,this.handleSpeech)},e(u,{key:"8e8cd4fc76217fb9b9b78175cc217809adb9931e"}),this.isShowRecording()&&e("span",{key:"e4cde027b86bcbb665092e31797b280a078092cc",class:"recording-indicator"})),e("button",{key:"7ba524a758731fd5712de61a9857134fa3a78479",class:"text-search-button",part:"text-search-button",onClick:this.handleTextSearch,onKeyDown:e=>this.handleButtonKeyDown(e,this.handleTextSearch),disabled:"loading"===this.state.searchStatus,"aria-label":l.t("a11y.textSearchButton")},this.isShowPreloader()?e("vviinn-preloader",null):e("slot",{name:"vviinn-text-search-icon"},e(x,null)))),this.showTooltip&&e("p",{key:"052e5d9d1ff094ebdc3e60f4691e27ca9c6c5631",class:"text-search-tooltip",part:"text-search-tooltip"},l.t(this.tooltipText)))}get el(){return r(this)}};m.style=':host{--font-family-base:Inter, system-ui, sans-serif;--font-family-mono:monospace;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-size-display:32px;--font-size-title:24px;--font-size-headline:18px;--font-size-label-large:16px;--font-size-label:14px;--font-size-body-large:16px;--font-size-body:14px;--font-size-caption:12px;--line-height-display:40px;--line-height-title:32px;--line-height-headline:24px;--line-height-label-large:24px;--line-height-label:20px;--line-height-body-large:24px;--line-height-body:20px;--line-height-caption:16px;--letter-spacing-title:0px;--letter-spacing-headline:0px;--letter-spacing-label-large:0px;--letter-spacing-label:0px;--letter-spacing-body-large:0px;--letter-spacing-body:0px;--letter-spacing-caption:0px;--font-weight-400:400;--font-weight-500:500;--font-weight-600:600;--font-weight-700:700;--spacing-none:0px;--spacing-25:2px;--spacing-50:4px;--spacing-75:6px;--spacing-100:8px;--spacing-125:10px;--spacing-150:12px;--spacing-200:16px;--spacing-250:20px;--spacing-300:24px;--spacing-400:32px;--spacing-500:40px;--spacing-600:48px;--border-radius-none:0px;--border-radius-25:2px;--border-radius-50:4px;--border-radius-100:8px;--border-radius-150:12px;--border-radius-200:16px;--border-radius-300:24px;--border-radius-400:32px;--border-radius-full:9999px;--stroke-width-none:0px;--stroke-width-25:1px;--stroke-width-50:2px;--stroke-width-75:3px;--stroke-width-100:4px;--stroke-width-150:6px;--stroke-width-200:8px;--stroke-width-300:12px;--product-card-widget-min-width:135px;--product-card-results-min-width:250px;--image-set-mode-min-width:155px;--source-card-set-mode-max-width:500px;--filter-blur-none:0px;--filter-blur-100:8px;--filter-blur-150:12px;--filter-blur-200:16px;--color-bg-base:#ffffff;--color-bg-inverse:#161616;--color-border-00:#ffffff;--color-border-01:#f4f4f4;--color-border-02:#e0e0e0;--color-border-03:#c6c6c6;--color-border-inverse-00:#161616;--color-border-inverse-01:#393939;--color-field-01:#ffffff;--color-field-02:#f4f4f4;--color-icon-primary:#161616;--color-icon-secondary:#525252;--color-icon-helper:#8d8d8d;--color-icon-on-color:#ffffff;--color-icon-inverse:#ffffff;--color-icon-disabled:#16161640;--color-text-primary:#161616;--color-text-secondary:#707070;--color-text-helper:#8d8d8d;--color-text-placeholder:#a8a8a8;--color-text-on-color:#ffffff;--color-text-inverse:#ffffff;--color-text-disabled:#16161640;--button-bg-color-primary:#000000;--button-bg-color-primary-hover:#161616;--button-bg-color-primary-active:#1e1e1e;--button-bg-color-secondary:#f4f4f4;--button-bg-color-secondary-hover:#e0e0e0;--button-bg-color-secondary-active:#c6c6c6;--button-bg-color-ghost-hover:#f4f4f4;--button-bg-color-ghost-active:#eaeaea;--button-bg-color-frosted:#6f6f6f66;--button-bg-color-frosted-hover:#6f6f6f80;--button-bg-color-frosted-active:#6f6f6f99;--button-bg-color-disabled:#e0e0e0;--button-bg-color-positive:#dcfce7;--surface-bg-color-01:#f4f4f4;--surface-bg-color-01-hover:#eaeaea;--surface-bg-color-01-active:#e0e0e0;--surface-bg-color-02:#ffffff;--surface-bg-color-inverse:#262626;--surface-bg-color-inverse-hover:#303030;--surface-bg-color-inverse-active:#393939;--surface-bg-color-disabled:#e0e0e0;--surface-bg-color-shadow-01:#dddddd;--surface-bg-color-shadow-02:#c6c6c6;--chip-bg-color-primary:#161616;--chip-bg-color-primary-hover:#1e1e1e;--chip-bg-color-primary-active:#262626;--chip-bg-color-subtle:#f4f4f4;--chip-bg-color-subtle-hover:#eaeaea;--chip-bg-color-subtle-active:#e0e0e0;--chip-bg-color-outline-hover:#f4f4f4;--chip-bg-color-outline-active:#eaeaea;--label-bg-color-accent:#ff3944;--sidebar-animation-duration:0.5s;}:host{display:block;position:relative;width:100%;}.text-search-container{display:flex;align-items:center;gap:var(--spacing-50);width:100%;height:46px;border:1px solid var(--color-border-02);border-radius:8px;transition:border-color 0.2s;overflow:hidden;box-sizing:border-box}.text-search-container:focus-within{border-color:#8d8d8d}.text-search-input,.text-search-tooltip{font-size:16px;font-style:normal;font-weight:400;font-family:var(--font-family, var(--font-family-base))}.text-search-input{height:100%;padding-left:16px;box-sizing:border-box;border:none;outline:none;overflow:hidden;text-overflow:ellipsis;flex-grow:2;width:150px}.text-search-input::-moz-placeholder{color:#a8a8a8}.text-search-input::placeholder{color:#a8a8a8}.text-search-input:focus,.text-search-input:active{border-color:#8d8d8d}vviinn-vps-button{height:100%}.text-search-button,.speech-button,vviinn-vps-button::part(vviinn-button){border:none;height:100%;display:flex;justify-content:center;align-items:center;cursor:pointer}.speech-button,vviinn-vps-button::part(vviinn-button){padding:0 8px}.upload-button-text{display:contents}.text-search-button{background-color:#f4f4f4;transition:background-color 0.2s;aspect-ratio:1 / 1;border-radius:0 7px 7px 0}.speech-button{background-color:transparent;position:relative}@keyframes recordingSpeech{0%{background-color:#ff0000;scale:1}100%{background-color:#ff8888;scale:1.5}}.recording-indicator{border-radius:50%;width:8px;height:8px;left:24px;top:24px;background-color:#ff0000;position:absolute;animation:recordingSpeech 1s infinite alternate ease-in-out}@keyframes fade-out{0%{opacity:0}20%{opacity:1}80%{opacity:1}100%{opacity:0;display:none}}.text-search-tooltip{position:absolute;right:0;top:80%;background:#f4f4f4;animation:fade-out 5s forwards;width:-moz-fit-content;width:fit-content;padding:24px;border-radius:8px;border:1px solid #8d8d8d;box-sizing:border-box}.text-search-button:not(:disabled):hover{background-color:#e0e0e0}.text-search-button:disabled{cursor:unset}vviinn-image-selector,::slotted([slot="vviinn-text-search-actions"]){margin:auto 8px}vviinn-preloader{--preloader-size:16px;display:flex;color:#525252}';export{m as vviinn_text_search}