{"version":3,"file":"index.es.min3.js","sources":["../../../packages/coveo-search/src/experimental/ui/page/query-summary.tsx","../../../packages/coveo-search/src/experimental/ui/page/pagination.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/context.ts","../../../packages/coveo-search/src/experimental/ui/page/products/filters/commons.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/category.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/technology.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/price.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/machine-color.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/cup-size.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/intensity.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/roasting.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/tasting-notes.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/usage.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/product-filters.tsx","../../../packages/coveo-search/src/experimental/ui/page/no-results.tsx","../../../packages/coveo-search/src/experimental/ui/page/products/filters/breadcrumbs.tsx","../../../packages/coveo-search/src/experimental/ui/page/notifications.tsx","../../../packages/components/src/constants.mjs","../../../packages/helpers/src/assets/js/eventDispatch.js","../../../packages/coveo-search/src/experimental/ui/page/products/products.tsx","../../../packages/coveo-search/src/experimental/ui/page/articles.tsx","../../../packages/coveo-search/src/experimental/ui/page/faqs.tsx","../../../packages/coveo-search/src/experimental/ui/page/search-page.tsx","../../../packages/coveo-search/src/experimental/page-builder-host/search-page/props.ts","../../../packages/coveo-search/src/experimental/page-builder-host/search-page/custom-element.tsx"],"sourcesContent":["import { Fragment } from \"preact\";\nimport createMicroMarkup from \"../../../tools/micro-markup\";\nimport cssModule from \"./query-summary.module.css\"\nimport { usePageContext } from \".\";\nimport { useRef } from \"preact/hooks\";\nimport { useSignalEffect } from \"@preact/signals\";\n\nconst interpolation = {\n    escape: createMicroMarkup({\n        strong: []\n    })\n}\n\nconst QuerySummary = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n    const htmlRef = useRef<HTMLDivElement>(null)\n\n    useSignalEffect(()=> {\n        searchCtx.state.value;\n        htmlRef.current!.scrollIntoView({ behavior: \"smooth\", block: \"end\" })\n    })\n\n    return (\n        <div ref={htmlRef} class={cssModule[\"query-summary\"]}>\n            <div>\n                {searchCtx.i18n.t(\n                    searchCtx.store.q.value.query ? \"query-result-summary\" : \"result-summary\",\n                    { count: searchResult.status === \"fulfilled\" ? searchResult.value.totalCount : '⋯' as unknown as number }\n                )}\n            </div>\n            {searchCtx.store.q.value.query ? (\n                <div class={cssModule[\"query-term\"]}>\n                    {searchCtx.i18n.t(\"between-quotations\", { text: searchCtx.store.q.value.query })}\n                </div>\n            ) : null}\n            {searchResult.status === \"fulfilled\" && searchResult.value.queryCorrectedFrom ? (\n                <Fragment>\n                    <div dangerouslySetInnerHTML={{\n                        __html: searchCtx.i18n.t(\"no-results-for\", {\n                            query: `<strong>${searchResult.value.queryCorrectedFrom}</strong>`,\n                            interpolation\n                        })\n                    }} />\n                    <div dangerouslySetInnerHTML={{\n                        __html: searchCtx.i18n.t(\"query-auto-corrected-to\", {\n                            query: `<strong>${searchCtx.store.q.value.query}</strong>`,\n                            interpolation\n                        })\n                    }} />\n                </Fragment>\n            ) : null}\n        </div>\n    );\n}\n\nexport default QuerySummary\n","import cn from \"classnames\";\nimport cssModule from \"./pagination.module.css\"\nimport { LeftArrowIcon, RightArrowIcon } from \"../shared/icons\";\nimport { usePageContext } from \".\";\nimport { Signal, useComputed, useSignal, useSignalEffect } from \"@preact/signals\";\n\nconst buildPages = (totalPages: number, currentPage: number) => {\n\n    const result = [currentPage] as number[]\n\n    for (let i = currentPage + 1; i <= currentPage + 3 && i <= totalPages; i++) {\n        result.push(i)\n    }\n\n    for (let i = currentPage - 1; i >= 1 && i >= currentPage - 3; i--) {\n        result.unshift(i)\n    }\n\n    for (let i = result[0] - 1; i >= 1 && result.length < 7; i--) {\n        result.unshift(i)\n    }\n\n    for (let i = result[result.length - 1] + 1; i < totalPages && result.length < 7; i++) {\n        result.push(i)\n    }\n\n    const nullableResults = result as (null | number)[]\n\n    if (totalPages > nullableResults.length) {\n        const first = 0\n        const last = nullableResults.length - 1;\n\n        if (nullableResults[first] !== 1) {\n            nullableResults[first] = 1\n            nullableResults[first + 1] = null\n        }\n\n        if (nullableResults[last] !== totalPages) {\n            nullableResults[last] = totalPages\n            nullableResults[last - 1] = null\n        }\n    }\n\n    return nullableResults\n}\n\nconst PageEllipsis = () => {\n    return <div aria-hidden className={cn(cssModule[\"page-ellipsis\"])}>... </div>\n}\nconst NumPage = (props: { page: number | null, totalPages: number }) => {\n    const { i18n, useInternalLink, store, searchResults } = usePageContext()\n    const link = useInternalLink((s) => ({ ...s, page: props.page ?? 1 , action: \"pageChange\"}))\n    const currentPage = store.page.value === props.page\n\n    if (searchResults.value.status !== \"fulfilled\" || props.page === null) {\n        return <PageEllipsis />\n    }\n\n    return <a\n        className={cn(cssModule[\"page-number\"])}\n        href={currentPage ? undefined : link.value.url}\n        aria-disabled={currentPage}\n        onClick={currentPage ? undefined : link.value.handleClick}\n        aria-current={currentPage ? \"page\" : undefined}\n        aria-label={i18n.t(\"page-number\", { page: props.page })}\n    >\n        {props.page}\n    </a>\n}\n\n\nconst PrevArrow = () => {\n    const { i18n, useInternalLink, store, searchResults } = usePageContext()\n    const link = useInternalLink((s) => ({ ...s, page: Math.max(s.page - 1, 1), action: \"pageChange\" }))\n    const disabled = store.page.value <= 1\n    if (searchResults.value.status !== \"fulfilled\") {\n        return <a class={cssModule[\"page-arrow\"]}><LeftArrowIcon /></a>\n    }\n    return <a\n        href={disabled ? undefined : link.value.url}\n        aria-disabled={disabled}\n        onClick={disabled ? undefined : link.value.handleClick}\n        aria-label={i18n.t(\"previous\")}\n        class={cssModule[\"page-arrow\"]}\n        role=\"navigation\"\n    >\n        <LeftArrowIcon />\n    </a>\n}\n\nconst NextArrow = (props: { totalPages: number }) => {\n    const { i18n, useInternalLink, store, searchResults } = usePageContext()\n    const link = useInternalLink((s) => ({ ...s, page: Math.min(s.page + 1, props.totalPages), action: \"pageChange\" }))\n    const disabled = store.page.value >= props.totalPages\n\n    if (searchResults.value.status !== \"fulfilled\") {\n        return <a class={cssModule[\"page-arrow\"]}><RightArrowIcon /></a>\n    }\n\n    return <a\n        href={disabled ? undefined : link.value.url}\n        aria-disabled={disabled}\n        onClick={disabled ? undefined : link.value.handleClick}\n        aria-label={i18n.t(\"next\")}\n        class={cssModule[\"page-arrow\"]}\n        role=\"navigation\"\n    >\n        <RightArrowIcon />\n    </a>\n}\n\nconst Pagination = (props: { class?: string }) => {\n    const { i18n, store, searchResults } = usePageContext()\n\n    const totalPagesSig = useSignal(1);\n\n    useSignalEffect(() => {\n        if (searchResults.value.status !== \"fulfilled\") { return }\n        totalPagesSig.value = searchResults.value.value.totalPages;\n    })\n\n    if (searchResults.value.status === \"fulfilled\" && searchResults.value.value.results.length === 0) {\n        return null\n    }\n    return <nav\n        aria-busy={searchResults.value.status === \"pending\"}\n        className={cn(cssModule[\"pagination\"], props.class)}\n        aria-label={i18n.t(\"pagination\")}\n        role=\"navigation\"\n    >\n        <PrevArrow />\n        {buildPages(totalPagesSig.value, store.page.value).map((i) => <NumPage page={i} totalPages={totalPagesSig.value} />)}\n        <NextArrow totalPages={totalPagesSig.value} />\n    </nav>\n}\n\nexport default Pagination;\n","\nimport { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nimport { ReadonlySignal } from \"@preact/signals\";\nimport { type PageEngine } from \"../../../engine\";\nimport { AsyncValue, Fulfilled, Fulfills } from \"../../../shared/async-value\";\n\n\n\ntype ProductSearchResult = PageEngine[\"searchResults\"] extends ReadonlySignal<infer S> ? S extends Fulfilled<infer V> ? (V & { tab: \"Products\" }) : never: never\nexport type ProductPageEngine = PageEngine & { searchResults: ReadonlySignal<AsyncValue<ProductSearchResult>> }\n\nconst PreactContext = createContext<ProductPageEngine>(undefined as any as ProductPageEngine);\n\nexport const ProductPageContextProvider = PreactContext.Provider\nexport const ProductPageContextConsumer = PreactContext.Consumer;\nexport const useProductPageContext = () => useContext(PreactContext)\n","import { ComponentChildren } from \"preact\";\nimport { useCallback, useId, useMemo, useState } from \"preact/hooks\";\nimport { Signal, useComputed, useSignal } from \"@preact/signals\";\nimport cn from \"classnames\";\n\nimport cssModule from \"./products-filters.module.css\"\nimport { PageEngine, SearchResults } from \"../../../../engine\";\nimport { useProductPageContext } from \"../context\";\nimport { ChevronDownIcon, ChevronUpIcon, CloseIcon, FilterIcon } from \"../../../shared/icons\";\n\nexport type ChipOptionEntry<T> = {\n    value: T;\n    selected: boolean;\n    results?: number;\n}\n\nexport const isSelectedOrHasResults = <T extends any>(entry: Required<ChipOptionEntry<T>>) => {\n    return entry.selected || entry.results > 0\n}\n\nexport const isSelected = <T extends any>(entry: ChipOptionEntry<T>) => {\n    return entry.selected\n}\n\ntype ProductFilters = (SearchResults & { tab: \"Products\" })[\"filters\"]\n\nexport const useFilterCount = <F extends keyof ProductFilters>(field: F) => {\n    const { searchResults } = useProductPageContext()\n    return useComputed(() => {\n        if (searchResults.value.status !== \"fulfilled\") { return; }\n        return searchResults.value.value.filters[field].filter(({ selected }) => selected).length\n    })\n\n}\nexport const useVanillaConsolidated = <F extends keyof ProductFilters>(field: F) => {\n    const { searchResults, store } = useProductPageContext()\n    return useComputed((): ChipOptionEntry<ProductFilters[F][number][\"value\"]>[] => {\n        const searchResult = searchResults.value\n        const urlValues = store[field].value\n        if (searchResult.status !== \"fulfilled\") {\n            return urlValues.map((size) => ({ value: size, selected: true }))\n        }\n\n        return searchResult.value.filters[field].filter(isSelectedOrHasResults)\n    })\n}\n\nexport const useClearedLink = <F extends keyof ProductFilters>(field: F) => {\n    const { useInternalLink } = useProductPageContext()\n    return useInternalLink((state) => ({ ...state, [field]: [], page: 1, action: \"facetDeselectAll\" }))\n}\n\nexport const useToggleLink = <F extends keyof ProductFilters>(field: F, value: ProductFilters[F][number][\"value\"], selected: boolean) => {\n    const { useInternalLink } = useProductPageContext()\n    return useInternalLink((state) => {\n        const rest = state[field].filter(v => v !== value);\n        const nextValues = (state[field] as any[]).includes(value) ? rest : [...rest, value];\n        return ({ ...state, [field]: nextValues, page: 1, action: selected ? \"facetDeselect\" : \"facetSelect\" })\n    })\n}\n\nexport const useRemoveLink = <F extends keyof ProductFilters>(field: F, value: ProductFilters[F][number][\"value\"]) => {\n    const { useInternalLink } = useProductPageContext()\n    return useInternalLink((state) => {\n        const rest = state[field].filter(v => v !== value);\n        return ({ ...state, [field]: rest, page: 1, action: \"facetBreadcrumbDeselect\" })\n    })\n}\n\nexport type ChipOptionProps<T> = ChipOptionEntry<T> & {\n    label: string,\n    toggleLink: ReturnType<PageEngine[\"useInternalLink\"]>\n}\n\nexport const countSelected = <T extends { selected: boolean }>(list: T[]) => list.reduce((sum, { selected }) => sum + +selected, 0)\n\nexport const OptionChip = <F extends keyof ProductFilters, T extends any>(props: ChipOptionProps<T>) => {\n    const { searchResults, i18n } = useProductPageContext()\n    const searchResult = searchResults.value;\n\n    const busy = searchResult.status !== \"fulfilled\";\n\n    return <a\n        aria-label={props.results ? i18n.t(\"facet-value\", { value: props.label, count: props.results }) : undefined}\n        aria-busy={busy}\n        aria-pressed={props.selected}\n        role='button'\n        class={cssModule[\"filter-chip\"]}\n        href={busy ? undefined : props.toggleLink.value.url}\n        onClick={busy ? undefined : props.toggleLink.value.handleClick}\n    >\n        <span>{props.label}</span>\n        <span class={cssModule[\"count\"]}>({props.results ?? `...`})</span>\n    </a>\n}\n\nexport const BreadcrumbChip = <T extends any>(props: ChipOptionEntry<T> & {\n    label: string,\n    clearLink: ReturnType<PageEngine[\"useInternalLink\"]>,\n}) => {\n    const { searchResults, i18n } = useProductPageContext()\n    const searchResult = searchResults.value;\n    const busy = searchResult.status !== \"fulfilled\";\n\n    return <a\n        aria-label={i18n.t(\"remove-filter-on\", { value: props.label })}\n        aria-busy={busy}\n        aria-pressed\n        role='button'\n        class={cssModule[\"breadcrumb-chip\"]}\n        href={busy ? undefined : props.clearLink.value.url}\n        onClick={busy ? undefined : props.clearLink.value.handleClick}\n    >\n        <span>{props.label}</span>\n        <CloseIcon aria-hidden />\n    </a>\n}\n\nexport type ClearFacetButtonProps = {\n    count: Signal<number | undefined>\n    facetTitle: string,\n    clearedLink: ReturnType<PageEngine[\"useInternalLink\"]>,\n}\n\nexport const ClearFacetButton = (props: ClearFacetButtonProps) => {\n    const { i18n, } = useProductPageContext()\n    const count = props.count.value\n\n    if (count === undefined || count === 0) { return <a aria-hidden class={cssModule[\"clear-facet-filter\"]} /> }\n\n    const clearFacetLabel = i18n.t(\"clear-filters-for-facet\", { label: props.facetTitle, count })\n\n    return <a\n        class={cssModule[\"clear-facet-filter\"]}\n        href={props.clearedLink.value.url}\n        onClick={props.clearedLink.value.handleClick}\n        aria-label={clearFacetLabel}\n    >\n        <CloseIcon aria-hidden />\n        <span>{i18n.t(\"clear-filters\")}</span>\n    </a>\n}\n\nexport const FilterTrigger = (props: {\n    class?: string,\n    open: Signal<boolean>,\n    panelId: string,\n    triggerId: string,\n    filterCounter: Signal<{\n        available: number;\n        selected: number;\n    }>\n}) => {\n    const { i18n } = useProductPageContext()\n    if (props.filterCounter.value.available === 0) { return null }\n    return <button\n        class={cssModule[\"filters-trigger\"]}\n        id={props.triggerId}\n        aria-expanded={props.open.value}\n        aria-controls={props.panelId}\n        onClick={() => props.open.value = !props.open.peek()}\n    >\n        <FilterIcon />\n        <span>{i18n.t(\"filters\")}</span>\n        {props.filterCounter.value.selected > 0 &&\n            <span>{i18n.t(\"between-parentheses\", { text: props.filterCounter.value.selected })}</span>\n        }\n    </button>\n\n}\n\nexport const ClearAllButton = (props: {\n    filterCounter: Signal<{\n        available: number;\n        selected: number;\n    }>\n}) => {\n    const { i18n, useInternalLink } = useProductPageContext()\n    const link = useInternalLink(({ q, tab }, blankState) => ({ ...blankState, q, tab, page: 1, action: \"facetBreadcrumbsDeselectAll\" })).value\n    if (props.filterCounter.value.selected === 0) { return null }\n\n    return <a\n        class={cssModule[\"clear-facet-filter\"]}\n        href={link.url}\n        onClick={link.handleClick}\n        aria-label={i18n.t(\"clear-all-filters\")}\n        title={i18n.t(\"clear-all-filters\")}\n    >\n        <CloseIcon aria-hidden />\n        <span>{i18n.t(\"clear\")}</span>\n    </a>\n}\n\nexport type FacetFilterProps = ClearFacetButtonProps & { facetTitle: string, children: ComponentChildren, contentClass?: string, defaultExpanded?: boolean, hidden: boolean }\nexport const FacetFilter = (props: FacetFilterProps) => {\n    const { i18n } = useProductPageContext()\n    const { facetTitle, children, count, clearedLink } = props\n    const expanded = useSignal(props.defaultExpanded ?? false)\n    const triggerId = useId()\n    const contentId = useId()\n\n    const expandLabel = i18n.t(\"collapse-facet\", { label: facetTitle })\n    if (props.hidden) { return null }\n    return <div class={cssModule[\"filter-facet\"]}>\n        <button\n            onClick={() => expanded.value = !expanded.value}\n            class={cssModule[\"filter-title-button\"]}\n            id={triggerId}\n            aria-expanded={expanded}\n            aria-controls={contentId}\n            title={expandLabel}\n        >\n            {facetTitle}\n            {expanded.value ? <ChevronUpIcon aria-hidden /> : <ChevronDownIcon aria-hidden />}\n        </button>\n        <ClearFacetButton clearedLink={clearedLink} count={count} facetTitle={facetTitle} />\n        <div\n            class={cn(cssModule[\"filter-content\"], props.contentClass, !expanded.value && cssModule[\"filter-collapsed\"])}\n            id={contentId}\n            role=\"region\"\n            aria-labelledby={triggerId}\n        >\n            {children}\n        </div>\n    </div>\n}\n","import { Signal, useComputed, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, isSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useRemoveLink, useToggleLink } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { ProductCategories, ProductCategory } from \"../../../../engine\";\n\n\nconst CategoryChip = (props: ChipOptionEntry<ProductCategory>) => {\n    const { copywriting } = useProductPageContext()\n    const toggleLink = useToggleLink(\"prdCategories\", props.value, props.selected)\n\n    return <OptionChip\n        {...props}\n        label={copywriting.productCategories[props.value]}\n        toggleLink={toggleLink}\n    />\n}\n\nconst useCategoryFilterValues = () => {\n    const { searchResults, store } = useProductPageContext()\n    const consolidated = useComputed((): ChipOptionEntry<ProductCategory>[] => {\n        const searchResult = searchResults.value\n        const urlPrdCategories = store.prdCategories.value\n        if (searchResult.status !== \"fulfilled\") {\n            return ProductCategories.map((cat) => ({ value: cat, selected: urlPrdCategories.includes(cat) }))\n        }\n\n        return searchResult.value.filters.prdCategories.filter(isSelectedOrHasResults)\n    })\n    return consolidated\n}\n\nexport const CategoryFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n\n    const consolidated = useCategoryFilterValues()\n\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n\n    const count = useFilterCount(\"prdCategories\")\n\n    const clearedLink = useClearedLink(\"prdCategories\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        defaultExpanded\n        facetTitle={copywriting.productFiltersTitles.prdCategories}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <CategoryChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nCategoryFacet.field = \"prdCategories\" as const \n\nconst CategoryBreadcrumbChip = (props: ChipOptionEntry<ProductCategory>) => {\n    const { copywriting } = useProductPageContext()\n    const clearLink = useRemoveLink(\"prdCategories\", props.value)\n    return <BreadcrumbChip {...props} label={copywriting.productCategories[props.value]} clearLink={clearLink} />\n}\n\nexport const CategoryBreadcrumb = () => {\n    const values = useCategoryFilterValues().value.filter(isSelected)\n    return <>{values.map(entry => <CategoryBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\n\nCategoryBreadcrumb.field = \"prdCategories\" as const ","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useToggleLink, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { ProductTechnologies, ProductTechnology } from \"../../../../engine\";\n\n\nconst TechnologyChip = (props: ChipOptionEntry<ProductTechnology>) => {\n    const { copywriting } = useProductPageContext()\n    const toggleLink = useToggleLink(\"prdTechnologies\", props.value, props.selected)\n\n    return <OptionChip\n        {...props}\n        label={copywriting.productTechnologies[props.value]}\n        toggleLink={toggleLink}\n    />\n}\n\nconst useTechnologyFilterValues = () => {\n    const { searchResults, store } = useProductPageContext()\n    const consolidated = useComputed((): ChipOptionEntry<ProductTechnology>[] => {\n        const searchResult = searchResults.value\n        const urlPrdTechnologies = store.prdTechnologies.value\n        if (searchResult.status !== \"fulfilled\") {\n            return ProductTechnologies.map((tech) => ({ value: tech, selected: urlPrdTechnologies.includes(tech) }))\n        }\n\n        return searchResult.value.filters.prdTechnologies.filter(isSelectedOrHasResults)\n    })\n    return consolidated\n}\n\nexport const TechnologyFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n    const consolidated = useTechnologyFilterValues()\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const count = useFilterCount(\"prdTechnologies\")\n    const clearedLink = useClearedLink(\"prdTechnologies\")\n\n    return <FacetFilter\n        defaultExpanded\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdTechnologies}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <TechnologyChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nTechnologyFacet.field = \"prdTechnologies\" as const\n\nconst TechnologyBreadcrumbChip = (props: ChipOptionEntry<ProductTechnology>) => {\n    const { copywriting } = useProductPageContext()\n    const clearLink = useRemoveLink(\"prdTechnologies\", props.value)\n\n    return <BreadcrumbChip\n        {...props}\n        label={copywriting.productTechnologies[props.value]}\n        clearLink={clearLink}\n    />\n}\n\nexport const TechnologyBreadcrumb = () => {\n    const consolidated = useTechnologyFilterValues()\n    return <>{\n        consolidated.value.filter(isSelected).map(entry => <TechnologyBreadcrumbChip key={entry.value} {...entry} />)\n    }</>\n}\nTechnologyBreadcrumb.field = \"prdTechnologies\" as const\n","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport cn from \"classnames\";\n\nimport cssModule from \"./products-filters.module.css\"\nimport { ChipOptionEntry, FacetFilter, countSelected, isSelectedOrHasResults, useClearedLink, useFilterCount, useToggleLink, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\nimport { PriceRange } from \"../../../../engine\";\nimport { CheckIcon } from \"../../../shared/icons\";\n\nconst PriceLine = (props: ChipOptionEntry<PriceRange>) => {\n    const { priceRangeFilterOptions, searchResults, i18n } = useProductPageContext()\n\n    const searchResult = searchResults.value;\n\n    const link = useToggleLink(\"prdPriceRanges\", props.value, props.selected);\n\n    const label = priceRangeFilterOptions.find(({ range }) => range === props.value)!.label\n    const busy = searchResult.status !== \"fulfilled\";\n    return <a\n        class={cssModule[\"facet-list-item\"]}\n        aria-label={props.results ? i18n.t(\"facet-value\", { value: label, count: props.results }) : undefined}\n        aria-busy={busy}\n        aria-pressed={props.selected}\n        role='button'\n        href={busy ? undefined : link.value.url}\n        onClick={busy ? undefined : link.value.handleClick}\n    >\n        <span aria-hidden class={cn(cssModule[\"facet-list-item-check\"], props.selected && cssModule[\"selected\"])} >\n            {props.selected && <CheckIcon class={cssModule[\"facet-list-item-check-icon\"]} />}\n        </span>\n        <span>{label}</span>\n        <span class={cssModule[\"count\"]}>({props.results ?? `...`})</span>\n    </a>\n}\n\nconst usePriceFilterValues = () => {\n    const { searchResults, store, priceRangeFilterOptions } = useProductPageContext()\n    const consolidated = useComputed((): ChipOptionEntry<PriceRange>[] => {\n        const searchResult = searchResults.value\n        const prdPriceRanges = store.prdPriceRanges.value\n\n        if (searchResult.status !== \"fulfilled\") {\n            return priceRangeFilterOptions.map(({ range }) => ({ value: range, selected: prdPriceRanges.includes(range) }))\n        }\n\n        return searchResult.value.filters.prdPriceRanges.filter(isSelectedOrHasResults)\n\n    })\n    return consolidated\n}\n\nexport const PriceFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting, searchResults, store, priceRangeFilterOptions } = useProductPageContext()\n\n    const consolidated = useComputed((): ChipOptionEntry<PriceRange>[] => {\n        const searchResult = searchResults.value\n        const prdPriceRanges = store.prdPriceRanges.value\n\n        if (searchResult.status !== \"fulfilled\") {\n            return priceRangeFilterOptions.map(({ range }) => ({ value: range, selected: prdPriceRanges.includes(range) }))\n        }\n\n        return searchResult.value.filters.prdPriceRanges.filter(isSelectedOrHasResults)\n\n    })\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const count = useFilterCount(\"prdPriceRanges\")\n\n    const clearedLink = useClearedLink(\"prdPriceRanges\")\n\n    return <FacetFilter\n        defaultExpanded\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdPrice}\n        clearedLink={clearedLink}\n        contentClass={cssModule[\"facet-list\"]}\n        count={count}\n    >\n        {consolidated.value.map(entry => <PriceLine {...entry} />)}\n    </FacetFilter>\n}\nPriceFacet.field = \"prdPriceRanges\" as const\n\nconst PriceBreadcrumbChip = (props: ChipOptionEntry<PriceRange>) => {\n    const { priceRangeFilterOptions } = useProductPageContext()\n    const clearLink = useRemoveLink(\"prdPriceRanges\", props.value)\n    const label = priceRangeFilterOptions.find(({ range }) => range === props.value)!.label\n    return <BreadcrumbChip {...props} label={label} clearLink={clearLink} />\n}\n\nexport const PriceBreadcrumb = () => {\n    const consolidated = usePriceFilterValues()\n    return <>{\n        consolidated.value.filter(isSelected).map(entry => <PriceBreadcrumbChip key={entry.value} {...entry} />)\n    }</>\n}\nPriceBreadcrumb.field = \"prdPriceRanges\" as const\n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useRemoveLink, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\n\nconst MachineColorChip = (props: ChipOptionEntry<string>) => {\n    const toggleLink = useToggleLink(\"prdMachineColors\", props.value, props.selected)\n    return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const MachineColorFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n    const consolidated = useVanillaConsolidated(\"prdMachineColors\")\n    const count = useFilterCount(\"prdMachineColors\")\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const clearedLink = useClearedLink(\"prdMachineColors\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdMachineColors}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <MachineColorChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nMachineColorFacet.field = \"prdMachineColors\" as const \n\nconst MachineColorBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n    const clearLink = useRemoveLink(\"prdMachineColors\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const MachineColorBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdMachineColors\").value.filter(isSelected)\n    return <>{values.map(entry => <MachineColorBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nMachineColorBreadcrumb.field = \"prdMachineColors\" as const \n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\nconst CupSizeChip = (props: ChipOptionEntry<string>) => {\n    const toggleLink = useToggleLink(\"prdCupSizes\", props.value, props.selected)\n    return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const CupSizeFacet = (props: { counter: Signal<{ available: number, selected: number}> }) => {\n    const { copywriting } = useProductPageContext()\n    const consolidated = useVanillaConsolidated(\"prdCupSizes\")\n    const count = useFilterCount(\"prdCupSizes\")\n    useSignalEffect(()=> {\n         props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const clearedLink = useClearedLink(\"prdCupSizes\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdCupSizes}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <CupSizeChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nCupSizeFacet.field = \"prdCupSizes\" as const \n\nconst CupSizeBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n    const clearLink = useRemoveLink(\"prdCupSizes\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const CupSizeBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdCupSizes\").value.filter(isSelected)\n    return <>{values.map(entry => <CupSizeBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\n\nCupSizeBreadcrumb.field = \"prdCupSizes\" as const ","import { useComputed, Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, isSelected, useClearedLink, useFilterCount, useToggleLink,useRemoveLink, useVanillaConsolidated } from \"./commons\";;\nimport { useProductPageContext } from \"../context\";\n\n\nconst IntensityChip = (props: ChipOptionEntry<`${number}`>) => {\n    const toggleLink = useToggleLink(\"prdIntensities\", props.value, props.selected)\n    return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const IntensityFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n    const unsortedConsolidated = useVanillaConsolidated(\"prdIntensities\")\n    const consolidated = useComputed(() => {\n        return unsortedConsolidated.value.sort((a, b) => Number(a.value) - Number(b.value))\n    })\n    const count = useFilterCount(\"prdIntensities\")\n\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n\n    const clearedLink = useClearedLink(\"prdIntensities\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdIntensity}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <IntensityChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nIntensityFacet.field = \"prdIntensities\" as const \n\nconst IntensityBreadcrumbChip = (props: ChipOptionEntry<`${number}`>) => {\n    const clearLink = useRemoveLink(\"prdIntensities\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const IntensityBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdIntensities\").value.filter(isSelected)\n    return <>{values.map(entry => <IntensityBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nIntensityBreadcrumb.field = \"prdIntensities\" as const \n","import { Signal, useSignalEffect } from \"@preact/signals\";\nimport { ChipOptionEntry, FacetFilter, OptionChip, BreadcrumbChip, countSelected, useRemoveLink, isSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\nconst RoastingChip = (props: ChipOptionEntry<string>) => {\n    const { copywriting } = useProductPageContext()\n    const toggleLink = useToggleLink(\"prdRoasting\", props.value, props.selected)\n    return <OptionChip\n        {...props}\n        label={copywriting.productRoasting[props.value] ?? props.value}\n        toggleLink={toggleLink} />\n}\n\nexport const RoastingFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n\n    if (!copywriting.productFiltersTitles.prdRoasting) { return null }\n    const consolidated = useVanillaConsolidated(\"prdRoasting\")\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const count = useFilterCount(\"prdRoasting\")\n    const clearedLink = useClearedLink(\"prdRoasting\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdRoasting}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <RoastingChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nRoastingFacet.field = \"prdRoasting\" as const\n\nconst RoastingBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n    const clearLink = useRemoveLink(\"prdRoasting\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const RoastingBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdRoasting\").value.filter(isSelected)\n    return <>{values.map(entry => <RoastingBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nRoastingBreadcrumb.field = \"prdRoasting\" as const\n","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\nconst TastingNotesChip = (props: ChipOptionEntry<string>) => {\n    const toggleLink = useToggleLink(\"prdTastingNotes\", props.value, props.selected)\n\n    return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const TastingNotesFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n\n    if (!copywriting.productFiltersTitles.prdTastingNotes) { return null }\n    const consolidated = useVanillaConsolidated(\"prdTastingNotes\")\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const count = useFilterCount(\"prdTastingNotes\")\n    const clearedLink = useClearedLink(\"prdTastingNotes\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdTastingNotes}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <TastingNotesChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nTastingNotesFacet.field = \"prdTastingNotes\" as const\n\nconst TastingBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n    const clearLink = useRemoveLink(\"prdTastingNotes\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const TastingBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdTastingNotes\").value.filter(isSelected)\n    return <>{values.map(entry => <TastingBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nTastingBreadcrumb.field = \"prdTastingNotes\" as const","import { Signal, useSignalEffect } from \"@preact/signals\";\n\nimport { ChipOptionEntry, FacetFilter, OptionChip, countSelected, useClearedLink, useFilterCount, useToggleLink, useVanillaConsolidated, useRemoveLink, BreadcrumbChip, isSelected } from \"./commons\";\nimport { useProductPageContext } from \"../context\";\n\n\nconst UsagesChip = (props: ChipOptionEntry<string>) => {\n    const toggleLink = useToggleLink(\"prdTastingNotes\", props.value, props.selected)\n\n    return <OptionChip {...props} label={props.value} toggleLink={toggleLink} />\n}\n\nexport const UsagesFacet = (props: { counter: Signal<{ available: number, selected: number }> }) => {\n    const { copywriting } = useProductPageContext()\n\n    if (!copywriting.productFiltersTitles.prdUsages) { return null }\n    const consolidated = useVanillaConsolidated(\"prdUsages\")\n    useSignalEffect(() => {\n        props.counter.value = { selected: countSelected(consolidated.value), available: consolidated.value.length }\n    })\n    const count = useFilterCount(\"prdUsages\")\n    const clearedLink = useClearedLink(\"prdUsages\")\n\n    return <FacetFilter\n        hidden={consolidated.value.length === 0}\n        facetTitle={copywriting.productFiltersTitles.prdUsages}\n        clearedLink={clearedLink}\n        count={count}\n    >\n        {consolidated.value.map(entry => <UsagesChip key={entry.value} {...entry} />)}\n    </FacetFilter>\n}\nUsagesFacet.field = \"prdUsages\" as const\n\nconst UsageBreadcrumbChip = (props: ChipOptionEntry<string>) => {\n    const clearLink = useRemoveLink(\"prdUsages\", props.value)\n    return <BreadcrumbChip {...props} label={props.value} clearLink={clearLink} />\n}\n\nexport const UsageBreadcrumb = () => {\n    const values = useVanillaConsolidated(\"prdUsages\").value.filter(isSelected)\n    return <>{values.map(entry => <UsageBreadcrumbChip key={entry.value} {...entry} />)}</>\n}\nUsageBreadcrumb.field = \"prdUsages\" as const","import { Signal, useComputed, useSignal, useSignalEffect } from \"@preact/signals\";\nimport type { JSXInternal } from \"preact/src/jsx\";\nimport cn from \"classnames\";\nimport cssModule from \"./products-filters.module.css\"\n\nimport { CloseIcon } from \"../../../shared/icons\";\nimport { useProductPageContext } from \"../context\";\nimport { CategoryFacet } from \"./category\";\nimport { TechnologyFacet } from \"./technology\";\nimport { PriceFacet } from \"./price\";\nimport { MachineColorFacet } from \"./machine-color\";\nimport { CupSizeFacet } from \"./cup-size\";\nimport { IntensityFacet } from \"./intensity\";\nimport { RoastingFacet } from \"./roasting\";\nimport { TastingNotesFacet } from \"./tasting-notes\";\nimport { FacetOrdering } from \"../../../../engine\";\nimport { UsagesFacet } from \"./usage\";\n\ntype FacetConstructor<F> = {\n    (props: { counter: Signal<{ available: number; selected: number; }> }): JSXInternal.Element | null;\n    field: F;\n}\n\ntype MapIntoConstructors<D> = { [K in keyof D]: FacetConstructor<D[K]> }\n\nconst facetConstructors = [\n    CategoryFacet,\n    TechnologyFacet,\n    PriceFacet,\n    MachineColorFacet,\n    CupSizeFacet,\n    IntensityFacet,\n    RoastingFacet,\n    TastingNotesFacet,\n    UsagesFacet,\n] as const satisfies MapIntoConstructors<FacetOrdering>\n\nconst ProductFilters = (props: {\n    class?: string,\n    open: Signal<boolean>,\n    panelId: string,\n    triggerId: string,\n    filterCounter: Signal<{ available: number; selected: number; }>\n}) => {\n    const { i18n } = useProductPageContext()\n    const counters = facetConstructors.map(() => useSignal({ available: 0, selected: 0 }))\n\n    useSignalEffect(() => {\n        props.filterCounter.value = {\n            available: counters.reduce((sum, sig) => sum + sig.value.available, 0),\n            selected: counters.reduce((sum, sig) => sum + sig.value.selected, 0),\n        }\n\n        return () => {\n            props.filterCounter.value = { available: 0, selected: 0 }\n        }\n    })\n\n    return <div\n        id={props.panelId}\n        aria-labelledby={props.triggerId}\n        class={cn(cssModule[\"product-filters\"], props.class, props.open.value && props.filterCounter.value.available > 0 && cssModule[\"filters-open\"])}\n    >\n        <div class={cssModule[\"mobile-bar\"]}>\n            <h2 class={cssModule[\"mobile-title\"]}>{i18n.t(\"sort-and-filter\")}</h2>\n            <button\n                aria-expanded={props.open}\n                aria-controls={props.panelId}\n                onClick={() => props.open.value = !props.open.peek()}\n                aria-label={i18n.t(\"close\")}\n                class={cn(cssModule[\"mobile-close\"])}\n            >\n                <CloseIcon />\n            </button>\n        </div>\n        {facetConstructors.map((Facet, i) => <Facet counter={counters[i]} />)}\n    </div>\n}\n\nexport default ProductFilters","\nimport { usePageContext } from \"./context\"\nimport cssModule from \"./no-results.module.css\"\nimport createMicroMarkup from \"../../../tools/micro-markup\";\n\nconst microMarkup = createMicroMarkup({\n    strong: []\n});\n\nconst NoResults = () => {\n    const { i18n, store } = usePageContext()\n\n    return <>\n        {store.q.value ?\n            <h2\n                class={cssModule[\"no-results\"]}\n                dangerouslySetInnerHTML={{\n                    __html: i18n.t(\"no-results-for\", {\n                        query: `<strong>${i18n.t(\"between-quotations\", { text: store.q.value.query })}</strong>`,\n                        interpolation: { escape: microMarkup }\n                    })\n                }} />\n            : <h2 class={cssModule[\"no-results\"]}>{i18n.t(\"no-results\")}</h2>\n        }\n        <div class={cssModule[\"no-results-tips\"]}>\n            {i18n.t(\"search-tips\")}\n        </div>\n    </>\n}\n\nexport default NoResults;\n","\nimport cn from \"classnames\";\nimport type { JSXInternal } from \"preact/src/jsx\";\nimport cssModule from \"./products-filters.module.css\"\nimport { CategoryBreadcrumb } from \"./category\";\nimport { TechnologyBreadcrumb } from \"./technology\";\nimport { PriceBreadcrumb } from \"./price\";\nimport { MachineColorBreadcrumb } from \"./machine-color\";\nimport { CupSizeBreadcrumb } from \"./cup-size\";\nimport { IntensityBreadcrumb } from \"./intensity\";\nimport { RoastingBreadcrumb } from \"./roasting\";\nimport { TastingBreadcrumb } from \"./tasting-notes\";\nimport { UsageBreadcrumb } from \"./usage\";\n\nimport { FacetOrdering } from \"../../../../engine\";\n\ntype BreadCrumbConstructor<F> = {\n    (): JSXInternal.Element | null;\n    field: F;\n}\n\ntype MapIntoConstructors<D> = { [K in keyof D]: BreadCrumbConstructor<D[K]> }\n\nconst breadcrumbConstructors = [\n    CategoryBreadcrumb,\n    TechnologyBreadcrumb,\n    PriceBreadcrumb,\n    MachineColorBreadcrumb,\n    CupSizeBreadcrumb,\n    IntensityBreadcrumb,\n    RoastingBreadcrumb,\n    TastingBreadcrumb,\n    UsageBreadcrumb,\n] as const satisfies MapIntoConstructors<FacetOrdering>\n\nconst FilterBreadcrumbs = (props: { class?: string }) => {\n    return <div class={cn(props.class, cssModule[\"breadcrumb-section\"])}>\n        {breadcrumbConstructors.map(Breadcrumb => <Breadcrumb />)}\n    </div>\n}\n\nexport default FilterBreadcrumbs","\nimport cn from \"classnames\";\nimport cssModule from \"./notifications.module.css\"\n\nimport { usePageContext } from \".\";\nimport { escapeForFaq } from \"../../shared/escape-for-faqs\";\n\nconst Notifications = (props: { class?: string }) => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n\n    if (searchResult.status !== \"fulfilled\") { return null }\n    const notifications = searchResult.value.notifications\n    return <div class={cn(props.class)}>\n        {notifications.map(message => <div\n            class={cssModule[\"notification\"]}\n            dangerouslySetInnerHTML={{ __html: escapeForFaq(message) }}\n        />)}\n    </div>\n}\n\nexport default Notifications\n","export const MAX_WIDTH_CONTAINER = 1160\n\nexport const BREAKPOINT_XL = 1920\nexport const BREAKPOINT_TABLET = 1024\nexport const BREAKPOINT_L = 996\nexport const BREAKPOINT_M = 768\nexport const BREAKPOINT_S = 750\nexport const BREAKPOINT_XS = 375\n\nexport const CTA_PRIMARY = 'primary'\nexport const CTA_PRIMARY_TRANSPARENT = 'primary_transparent'\nexport const CTA_SUBTLE = 'subtle'\nexport const CTA_LINK = 'link'\nexport const CTA_LINK_UNDERLINE = 'link-underline'\nexport const CTA_LINK_GOLD = 'link-gold'\nexport const CTA_LINK_ADD_TO_CART_SMALL = 'AddToCart_small'\nexport const CTA_LINK_ADD_TO_CART_LARGE = 'AddToCart_large'\n\nexport const EVENT_TAB_CHANGE = 'EVENT_TAB_CHANGE'\n\nexport const EVENT_VIDEO = 'WEB_COMPONENT_VIDEO'\nexport const EVENT_POPIN_OPEN = 'WEB_COMPONENT_POPIN_OPEN'\nexport const EVENT_POPIN_OPENED = 'WEB_COMPONENT_POPIN_OPENED'\nexport const EVENT_POPIN_CLOSE = 'WEB_COMPONENT_POPIN_CLOSE'\nexport const EVENT_POPIN_CLOSED = 'WEB_COMPONENT_POPIN_CLOSED'\nexport const EVENT_POPIN_CLOSE_CLICK = 'WEB_COMPONENT_POPIN_CLOSE_CLICK'\nexport const EVENT_POPIN_KEY_DOWN = 'keydown'\nexport const EVENT_POPIN_FORM_TOGGLE_TITLE = 'WEB_COMPONENT_POPIN_FORM_TOGGLE_TITLE'\nexport const EVENT_CTA_CLICK = 'WEB_COMPONENT_CTA_CLICK'\nexport const EVENT_HERO_REORDER_OPEN = 'WEB_COMPONENT_HERO_REORDER_OPEN'\nexport const EVENT_HERO_REORDER_CLOSE = 'WEB_COMPONENT_HERO_REORDER_CLOSE'\nexport const EVENT_QUICKVIEW_OPEN = 'WEB_COMPONENT_QUICKVIEW_OPEN'\nexport const EVENT_QS_OPEN = 'WEB_COMPONENT_QS_OPEN'\nexport const EVENT_QS_OPENED = 'WEB_COMPONENT_QS_OPENED'\nexport const EVENT_QS_CLOSE = 'WEB_COMPONENT_QS_CLOSE'\nexport const EVENT_QS_CLOSED = 'WEB_COMPONENT_QS_CLOSED'\nexport const EVENT_QS_CLOSE_CLICK = 'WEB_COMPONENT_QS_CLOSE_CLICK'\nexport const EVENT_QS_KEY_DOWN = 'keydown'\nexport const EVENT_ADD_TO_CART = 'WEB_COMPONENT_ADD_TO_CART'\nexport const EVENT_CART_UPDATED = 'WEB_COMPONENT_CART_UPDATED'\nexport const EVENT_VIDEO_TOGGLE = 'WEB_COMPONENT_VIDEO_TOGGLE'\nexport const VIDEO_ON_HOVER = 'VIDEO_ON_HOVER'\nexport const VIDEO_ON_OUT = 'VIDEO_ON_OUT'\nexport const EVENT_DETAIL_OPEN = 'WEB_COMPONENT_DETAIL_OPEN'\nexport const EVENT_SLIDER_READY = 'WEB_COMPONENT_SLIDER_READY'\nexport const EVENT_SLIDE_CHANGE = 'WEB_COMPONENT_SLIDE_CHANGE'\nexport const EVENT_OVERLAY_OPEN = 'WEB_COMPONENT_OVERLAY_OPEN'\nexport const EVENT_OVERLAY_CLOSE = 'WEB_COMPONENT_OVERLAY_CLOSE'\nexport const EVENT_OVERLAY_CLICKED = 'WEB_COMPONENT_OVERLAY_CLICKED'\nexport const EVENT_OPEN_PRODUCT_AR_CLICKED = 'OPEN_PRODUCT_AR_CLICKED'\nexport const EVENT_SORT_BY_CHANGE = 'WEB_COMPONENT_SORT_BY_CHANGE'\n\nexport const EVENT_BUBBLE_SELECTED = 'EVENT_BUBBLE_SELECTED'\nexport const EVENT_RECO_TOOL_OPTION_CLICKED = 'EVENT_RECO_TOOL_OPTION_CLICKED'\nexport const WEB_COMPONENT_PROJECTS_LOADED = 'WEB_COMPONENT_PROJECTS_LOADED'\nexport const WEB_COMPONENT_ANCHOR_LOADED = 'WEB_COMPONENT_ANCHOR_LOADED'\n\nexport const EVENT_SWIPED_UP = 'swiped-up'\nexport const EVENT_SWIPED_DOWN = 'swiped-down'\nexport const EVENT_SWIPED_LEFT = 'swiped-left'\nexport const EVENT_SWIPED_RIGHT = 'swiped-right'\n\nexport const EVENT_HEADER_POSITION_CHANGED = 'EVENT_HEADER_POSITION_CHANGED'\n\nexport const keys = { ESC: 'Escape' }\n\nexport const ADD_TO_CART_MODIFIER_MINI = 'mini'\nexport const ADD_TO_CART_MODIFIER_DEFAULT = ADD_TO_CART_MODIFIER_MINI\n\nexport const COFFEE_ORIGINAL = 'original'\nexport const COFFEE_VERTUO = 'vertuo'\nexport const COFFEE_PRO = 'pro'\nexport const COFFEE_OL = 'OL'\nexport const COFFEE_VL = 'VL'\nexport const INTENSITY_MAX_OL = 14\nexport const INTENSITY_MAX_VL = 12\nexport const DEFAULT_BUBBLE_ICON = ''\n\nexport const NUMBER_PRODUCTS_SLIDER = 8\nexport const NUMBER_FEATURES_PDP = 8\n\nexport const ALIGNMENT = ['center', 'left', 'right']\nexport const POSITION = ['top', 'right', 'bottom', 'left']\nexport const TRANSLATION_ADD_TO_CART = 'Add to cart'\nexport const TRANSLATION_UPDATE_BASKET = 'Update basket'\n\nexport const TIME_INSTANT = 1\nexport const TIME_FAST = 300\nexport const TIME_MEDIUM = 600\nexport const TIME_SLOW = 1200\n\nexport const APP_APPLE_LINK = {\n    default: 'https://apps.apple.com/us/app/nespresso/id342879434',\n    us: 'https://apps.apple.com/us/app/nespresso-new/id1609639566',\n    uk: 'https://apps.apple.com/gb/app/nespresso-new/id1609639566',\n    kr: 'https://apps.apple.com/kr/app/%EB%84%A4%EC%8A%A4%ED%94%84%EB%A0%88%EC%86%8C-%EB%B6%80%ED%8B%B0%ED%81%AC/id1609639566'\n}\nexport const APP_ANDROID_LINK =\n    'https://play.google.com/store/apps/details?id=com.nespresso.activities'\nexport const APP_HUAWEI_LINK = 'https://appgallery.huawei.com/app/C102571517'\n\nexport const SRC_PAGE_PLP = 'plp'\nexport const SRC_PAGE_PDP = 'pdp'\n\nexport const PLP_TYPE_COFFEE = 'coffee'\nexport const PLP_TYPE_MACHINE = 'machine'\nexport const PLP_TYPE_ACCESSORY = 'accessory'\nexport const CALLEO_API_DOMAIN = 'https://www.contact.nespresso.com/'\n\n// SCSS RELATED\n// Todo : should be shared by JS and SCSS\nexport const BROWSER_CONTEXT = 16 // 1rem = 16px\nexport const COLOR_WHITE_1000 = '#FFFFFF' // Do not change for #FFF shortcut, it will break slider-natural gradients !\n\nexport const CONTRAST_DARK = 'dark'\nexport const CONTRAST_LIGHT = 'light'\n\nexport const B2B_CONTACT_FORM_POPIN_ID = 'b2b-contact-form-popin-id'\nexport const B2B_CONTACT_FORM_POPIN_SRC_SEARCH = 'coveo-search'\n\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO = 'sku-main-info'\n\nexport const B2B_CONTACT_FORM_POPIN_SRC_SKU_MAIN_INFO_AUTO = 'sku-main-info-auto'\n\nexport const ASPECT_RATIO_16_9 = '16/9'\nexport const ASPECT_RATIO_1_1 = '1/1'\n\nexport const NESPRESSO_PRODUCTION_DOMAIN = 'https://www.nespresso.com'\nexport const NESPRESSO_ROLLOUT_DOMAIN = 'https://nc2-env-rollout.nespresso.com'\n\nexport const EVENT_QUIZ_ON_GO_BACK = 'WEB_COMPONENT_EVENT_QUIZ_ON_GO_BACK'\nexport const EVENT_QUIZ_SUBMIT = 'WEB_COMPONENT_EVENT_QUIZ_SUBMIT'\n","export const dispatchEvent = ({ eventName, args, element }) => {\n    // Use the provided element or fallback to window if available\n    if (!element) {\n        if (typeof window !== 'undefined') {\n            element = window\n        } else {\n            throw new Error(\n                '`element` is not provided and `window` is unavailable. Provide a valid element to dispatch the event.'\n            )\n        }\n    }\n\n    let event\n    if (args) {\n        event = new CustomEvent(eventName, { detail: args, bubbles: true })\n    } else {\n        if (typeof Event === 'function') {\n            event = new Event(eventName)\n        } else {\n            event = document.createEvent('Event')\n            event.initEvent(eventName, true, true)\n        }\n    }\n    element.dispatchEvent(event)\n}\n\nexport const readEvent = e => {\n    if (!e.detail) {\n        return\n    }\n    return e.detail\n}\n","import { useErrorBoundary, useId, useMemo, useState } from 'preact/hooks'\nimport { Signal, useComputed, useSignal, useSignalEffect } from '@preact/signals'\nimport cn from 'classnames'\nimport cssModule from './products.module.css'\nimport createMicroMarkup from '../../../../tools/micro-markup'\nimport Pagination from '../pagination'\nimport ProductFilters from './filters/product-filters'\nimport { PageEngine, ProductResult, useProductImpressionTracking } from '../../../engine'\nimport { usePageContext } from '..'\nimport { ProductPageContextProvider, ProductPageEngine, useProductPageContext } from './context'\nimport NoResults from '../no-results'\nimport { ClearAllButton, FilterTrigger } from './filters/commons'\nimport FilterBreadcrumb from './filters/breadcrumbs'\nimport Notifications from '../notifications'\nimport { breakpoint } from '../../../shared/breakpoints'\nimport { CAPSULE_TECHNOLOGY_B2B } from '../../../../search-bar/constants'\nimport { displayPrice, showPriceSection } from '../../../../config'\nimport createImPolicyQuery from '@kissui/helpers/src/createImPolicyQuery'\n\nimport {\n    B2B_CONTACT_FORM_POPIN_ID,\n    B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n    EVENT_POPIN_OPEN\n} from '@kissui/components/src/constants.mjs'\nimport { dispatchEvent } from '@kissui/helpers/src/assets/js/eventDispatch'\n\nconst microMarkup = createMicroMarkup({\n    strong: []\n})\n\ntype OptProps = {\n    useProductClickTracking: (result: ProductResult) => () => void\n    conjunctionFormatter: Intl.ListFormat\n    i18n: PageEngine['i18n']\n    priceFormatter: PageEngine['priceFormatter']\n    displaySleevePrice: boolean\n    buttonShape: 'square' | 'round'\n}\n\ntype Props = OptProps & { result: ProductResult }\n\nconst CupSize = (props: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n    const cupSizesWithVolume = props.result.cupSizes.map(({ label, volume }) => {\n        if (!volume) {\n            return label\n        }\n        return props.i18n.t('cup-volume-format', {\n            volume: volume,\n            cup_size: label,\n            defaultValue: `${label} (${volume})`\n        })\n    })\n\n    return (\n        <div class={cssModule['metadata-section']}>\n            <div>{props.conjunctionFormatter.format(cupSizesWithVolume)}</div>\n        </div>\n    )\n}\n\nconst ImageSection = ({ result }: Props) => {\n    const width = 112\n\n    const imageUrl = useMemo(() => {\n        const imPolicyQuery = createImPolicyQuery(Math.ceil(width))\n        return `${result.imageUrl}${imPolicyQuery}`\n    }, [width, result.imageUrl])\n\n    return (\n        <div class={cssModule['image-section']}>\n            <img\n                key={result.imageUrl}\n                src={imageUrl}\n                alt={result.title}\n                loading={'lazy'}\n                width={width}\n            />\n        </div>\n    )\n}\n\nconst TypeSection = ({ result, conjunctionFormatter }: Props) => {\n    return (\n        <div class={cssModule['type-section']}>\n            {result.prdTechnologies.length === 1\n                ? `${conjunctionFormatter.format(result.prdTechnologies)} - ${result.category}`\n                : result.category}\n        </div>\n    )\n}\n\nconst TitleSection = ({ result, trackProductClick }: Props & { trackProductClick: () => void }) => {\n    return (\n        <a onClick={trackProductClick} href={result.url} class={cssModule['title-section']}>\n            {result.title}\n        </a>\n    )\n}\n\nconst PreviousPrice = ({ result, priceFormatter, i18n }: Props) => {\n    if (!result.previousPrice) {\n        return null\n    }\n\n    return (\n        <span\n            class={cssModule['text']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t('previous_price', {\n                    previous_price: `<span class=\"${cn(\n                        cssModule['text'],\n                        cssModule['strikethrough-price']\n                    )}\">${priceFormatter.short(result.previousPrice)}</span>`\n                })\n            }}\n        />\n    )\n}\n\nconst Price = ({ priceFormatter, result }: Props) => {\n    return <div class={cssModule['price']}>{priceFormatter.short(result.price)}</div>\n}\n\nconst SleevePrice = ({\n    result,\n    i18n,\n    priceFormatter,\n    displaySleevePrice\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n    let price_per_sleeve_text = 'price_per_sleeve'\n    if (result.prdTechnologies[0] === CAPSULE_TECHNOLOGY_B2B) {\n        price_per_sleeve_text = 'price_per_sleeve_b2b'\n    }\n\n    if (!displaySleevePrice || result.sleeveMainPrice) {\n        return null\n    }\n    return (\n        <div\n            class={cssModule['price-meta-data']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t(price_per_sleeve_text, {\n                    sleeve_price: priceFormatter.short(result.price * result.salesMultiple),\n                    sleeve_size: result.salesMultiple,\n                    interpolation: { escape: microMarkup }\n                })\n            }}\n        />\n    )\n}\n\nconst SleevePricePerWeight = ({\n    result,\n    i18n,\n    priceFormatter\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n    if (!result.capsuleNetWeightG) {\n        return null\n    }\n    const netWeightKg = result.capsuleNetWeightG / 1000\n    const pricePerKG = result.price / netWeightKg\n\n    return (\n        <div\n            class={cssModule['price-meta-data']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t('price_per_kilo', {\n                    price_per_kilo: priceFormatter.short(pricePerKG),\n                    interpolation: { escape: microMarkup }\n                })\n            }}\n        />\n    )\n}\n\nconst SleeveBundlePricePerWeight = ({\n    result,\n    i18n,\n    priceFormatter\n}: Props & { result: { categoryId: 'Capsule'; bundled: true } }) => {\n    if (!result.capsuleNetWeightG) {\n        return null\n    }\n    const netWeightKg = result.capsuleNetWeightG / 1000\n    const pricePerCapsule = result.price / result.capsules\n    const pricePerKG = pricePerCapsule / netWeightKg\n\n    return (\n        <div\n            class={cssModule['price-meta-data']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t('price_per_kilo', {\n                    price_per_kilo: priceFormatter.short(pricePerKG),\n                    interpolation: { escape: microMarkup }\n                })\n            }}\n        />\n    )\n}\n\nconst SleeveDescription = ({\n    result,\n    i18n\n}: Props & { result: { categoryId: 'Capsule'; bundled: false } }) => {\n    if (!result.sleeveMainPrice) {\n        return null\n    }\n    return (\n        <div\n            class={cssModule['price-meta-data']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t('sleeve_description', {\n                    sleeves: i18n.t('sleeves', { count: 1 }),\n                    capsules: i18n.t('capsules', { count: result.salesMultiple })\n                })\n            }}\n        />\n    )\n}\n\nconst estimatedSleeves = (capsules: number) => {\n    if (capsules % 10 === 0) {\n        return capsules / 10\n    }\n    return Math.floor(capsules / 7)\n}\n\nconst SleeveBundleDescription = ({\n    result,\n    i18n\n}: Props & { result: { categoryId: 'Capsule'; bundled: true } }) => {\n    if (!result.sleeveMainPrice) {\n        return null\n    }\n\n    return (\n        <div\n            class={cssModule['price-meta-data']}\n            dangerouslySetInnerHTML={{\n                __html: i18n.t('sleeve_description', {\n                    sleeves: i18n.t('sleeves', { count: estimatedSleeves(result.capsules) }),\n                    capsules: i18n.t('capsules', { count: result.capsules })\n                })\n            }}\n        />\n    )\n}\n\nconst SleevePricingSection = (\n    props: Props & { result: { categoryId: 'Capsule'; bundled: false } }\n) => {\n    return (\n        <div class={cssModule['price-section']}>\n            <PreviousPrice {...props} />\n            <Price {...props} />\n            <SleevePrice {...props} />\n            <SleeveDescription {...props} />\n            <SleevePricePerWeight {...props} />\n        </div>\n    )\n}\n\nconst SleeveBundlePricingSection = (\n    props: Props & { result: { categoryId: 'Capsule'; bundled: true } }\n) => {\n    return (\n        <div class={cssModule['price-section']}>\n            <PreviousPrice {...props} />\n            <Price {...props} />\n            <SleeveBundleDescription {...props} />\n            <SleeveBundlePricePerWeight {...props} />\n        </div>\n    )\n}\n\nconst PricingSection = (props: Props) => {\n    return (\n        <div class={cssModule['price-section']}>\n            <PreviousPrice {...props} />\n            <Price {...props} />\n        </div>\n    )\n}\n\nconst CTASection = ({ result, i18n, buttonShape }: Props) => {\n    const buttonId = 'coveo_add_to_cart_' + result.sku\n    const addToCartData = JSON.stringify({\n        sku: result.sku,\n        size: 'small',\n        label_add_to_cart: i18n.t('cta_add_to_cart'),\n        label_update_cart: i18n.t('cta_update_cart'),\n        quantity_selector: {\n            a11y_qs_label: i18n.t('qs_label'),\n            a11y_qs_description: i18n.t('qs_description'),\n            a11y_predefined_quantity: i18n.t('qs_predefined_quantity'),\n            a11y_predefined_description: i18n.t('qs_predefined_description'),\n            a11y_add_label: i18n.t('qs_add'),\n            a11y_custom_quantity: i18n.t('qs_custom_quantity'),\n            a11y_custom_description: i18n.t('qs_custom_description'),\n            label_choose_quantity: i18n.t('qs_choose_quantity'),\n            label_button_ok: i18n.t('qs_button_ok'),\n            quantities: result.quantities,\n            step: result.salesMultiple,\n            max: 9990\n        }\n    })\n\n    return (\n        <div class={cssModule['actions-section']}>\n            <nb-add-to-cart-standalone\n                onClick={(evt: Event) => {\n                    evt.stopPropagation()\n                    evt.preventDefault()\n                }}\n                key={buttonId}\n                class={cssModule[`cta-${buttonShape}`]}\n                data={addToCartData}\n            />\n        </div>\n    )\n}\n\nconst CTAContactSection = ({ result, i18n }: Props) => {\n    const ctaData = JSON.stringify({\n        variation: 'primary',\n        size: '32'\n    })\n\n    const handleContactUsClick = (event: any) => {\n        const skuArgs = {\n            id: B2B_CONTACT_FORM_POPIN_ID,\n            srcComponent: B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n            productName: result.title\n        }\n\n        dispatchEvent({ eventName: EVENT_POPIN_OPEN, args: skuArgs, element: event.target })\n    }\n\n    return (\n        <div class={cssModule['actions-section']}>\n            <nb-cta class={cssModule['contact']} data={ctaData} onClick={handleContactUsClick}>\n                {i18n.t('contact-us')}\n            </nb-cta>\n        </div>\n    )\n}\n\nconst CTAViewDetails = ({ result, i18n }: Props) => {\n    const ctaData = JSON.stringify({\n        variation: 'primary',\n        size: '32',\n        link: result.url\n    })\n\n    return (\n        <div class={cssModule['actions-section']}>\n            <nb-cta class={cssModule['view-details']} data={ctaData}>\n                {i18n.t('view-details')}\n            </nb-cta>\n        </div>\n    )\n}\n\nconst CapsuleItem = (props: Props & { result: { categoryId: 'Capsule' } }) => {\n    const { country } = useProductPageContext()\n    const trackedNode = useProductImpressionTracking<HTMLDivElement>(props.result)\n    const trackProductClick = props.useProductClickTracking(props.result)\n    return (\n        <div ref={trackedNode} class={cssModule['product-item']}>\n            <ImageSection {...props} />\n            <TypeSection {...props} />\n            <TitleSection trackProductClick={trackProductClick} {...props} />\n            {!props.result.bundled && (\n                <CupSize {...(props as typeof props & { result: { bundled: false } })} />\n            )}\n\n            {showPriceSection(props.result) && displayPrice(props.result) ? (\n                props.result.bundled ? (\n                    <SleeveBundlePricingSection\n                        {...(props as typeof props & { result: { bundled: true } })}\n                    />\n                ) : (\n                    <SleevePricingSection\n                        {...(props as typeof props & { result: { bundled: false } })}\n                    />\n                )\n            ) : null}\n            {isCountryInListToEnableViewDetailsCTA(country) ? (\n                <CTAViewDetails {...props} />\n            ) : showPriceSection(props.result) && displayPrice(props.result) ? (\n                <CTASection {...props} />\n            ) : (\n                <CTAContactSection {...props} />\n            )}\n        </div>\n    )\n}\n\nfunction isCountryInListToEnableViewDetailsCTA(country: string) {\n    const countryList = ['mx', 'pro_mx']\n    return countryList.includes(country)\n}\nconst MachineColorsBubble = ({\n    activeMachineSku,\n    sku,\n    colorCss\n}: {\n    sku: string\n    colorCss: string\n    activeMachineSku: Signal<string>\n}) => {\n    const selected = sku === activeMachineSku.value\n    return (\n        <button\n            onClick={() => {\n                activeMachineSku.value = sku\n            }}\n            class={cn(\n                cssModule['color'],\n                selected && cssModule['selected'],\n                colorCss === '#ffffff' && cssModule['white']\n            )}\n            style={{ 'background-color': colorCss }}>\n            {selected ? <div class={cssModule['white-circle']} /> : null}\n        </button>\n    )\n}\n\nconst MachineColorsSection = ({\n    result,\n    activeMachineSku\n}: Props & { result: { categoryId: 'Machine' }; activeMachineSku: Signal<string> }) => {\n    return (\n        <div>\n            <div class={cssModule['machine-colors']}>\n                {result.machineGroup.map(subProps => (\n                    <MachineColorsBubble\n                        sku={subProps.sku}\n                        colorCss={subProps.colorCss}\n                        activeMachineSku={activeMachineSku}\n                    />\n                ))}\n            </div>\n        </div>\n    )\n}\n\nconst MachineItem = ({\n    buttonShape,\n    displaySleevePrice,\n    priceFormatter,\n    conjunctionFormatter,\n    i18n,\n    result,\n    useProductClickTracking,\n    ...props\n}: Props & { result: { categoryId: 'Machine' } }) => {\n    const activeMachineSku = useSignal(result.machineGroup[0].sku)\n    const { country } = useProductPageContext()\n    const forwardProps = {\n        useProductClickTracking,\n        result: {\n            ...result.machineGroup.find(d => d.sku === activeMachineSku.value)!,\n            machineGroup: result.machineGroup\n        },\n        buttonShape,\n        displaySleevePrice,\n        priceFormatter,\n        conjunctionFormatter,\n        i18n\n    }\n    const trackProductClick = useProductClickTracking(forwardProps.result)\n    const trackedNode = useProductImpressionTracking<HTMLDivElement>(forwardProps.result)\n\n    const handleContactUsClick = (event: any) => {\n        const skuArgs = {\n            id: B2B_CONTACT_FORM_POPIN_ID,\n            srcComponent: B2B_CONTACT_FORM_POPIN_SRC_SEARCH,\n            productName: result.title\n        }\n\n        dispatchEvent({ eventName: EVENT_POPIN_OPEN, args: skuArgs, element: event.target })\n    }\n\n    return (\n        <div ref={trackedNode} class={cssModule['product-item']}>\n            <ImageSection {...forwardProps} />\n            <TypeSection {...forwardProps} />\n            <TitleSection trackProductClick={trackProductClick} {...forwardProps} />\n            <MachineColorsSection {...forwardProps} activeMachineSku={activeMachineSku} />\n            {showPriceSection(forwardProps.result) && displayPrice(forwardProps.result) ? (\n                <PricingSection {...forwardProps} />\n            ) : null}\n\n            {isCountryInListToEnableViewDetailsCTA(country) ? (\n                <CTAViewDetails\n                    result={result}\n                    useProductClickTracking={useProductClickTracking}\n                    conjunctionFormatter={conjunctionFormatter}\n                    i18n={i18n}\n                    priceFormatter={priceFormatter}\n                    displaySleevePrice={displaySleevePrice}\n                    buttonShape={buttonShape}\n                />\n            ) : showPriceSection(forwardProps.result) && displayPrice(forwardProps.result) ? (\n                <CTASection {...forwardProps} />\n            ) : (\n                <CTAContactSection {...forwardProps} />\n            )}\n        </div>\n    )\n}\n\nconst AccessoryItem = (props: Props & { result: { categoryId: 'Accessory' } }) => {\n    const trackedNode = useProductImpressionTracking<HTMLDivElement>(props.result)\n    const trackProductClick = props.useProductClickTracking(props.result)\n    const { country } = useProductPageContext()\n    return (\n        <div ref={trackedNode} class={cssModule['product-item']}>\n            <ImageSection {...props} />\n            <TypeSection {...props} />\n            <TitleSection trackProductClick={trackProductClick} {...props} />\n            {showPriceSection(props.result) && displayPrice(props.result) ? (\n                <PricingSection {...props} />\n            ) : null}\n            {isCountryInListToEnableViewDetailsCTA(country) ? (\n                <CTAViewDetails {...props} />\n            ) : showPriceSection(props.result) && displayPrice(props.result) ? (\n                <CTASection {...props} />\n            ) : (\n                <CTAContactSection {...props} />\n            )}\n        </div>\n    )\n}\n\nconst ProductItem = ({ result, ...props }: OptProps & { result: ProductResult | Error }) => {\n    const [error, setError] = useState<unknown>(undefined)\n    useErrorBoundary(setError)\n    if (error || result instanceof Error) {\n        console.error(error || result)\n        return <div class={cssModule['product-item']}></div>\n    }\n    if (result.categoryId === 'Capsule') {\n        return <CapsuleItem {...props} result={result} />\n    }\n    if (result.categoryId === 'Machine') {\n        return <MachineItem {...props} result={result} />\n    }\n    return <AccessoryItem {...props} result={result} />\n}\nconst ProductPlaceholder = () => (\n    <div class={cn(cssModule['product-item'], cssModule['product-placeholder'])}></div>\n)\n\nconst Products = (props: {\n    products: (ProductResult | Error)[]\n    useProductClickTracking: Props['useProductClickTracking']\n}) => {\n    const searchCtx = useProductPageContext()\n    const conjunctionFormatter = useMemo(\n        () => new Intl.ListFormat(searchCtx.locale, { style: 'short', type: 'conjunction' }),\n        [searchCtx.locale]\n    )\n    const buttonShape = searchCtx.addToCartShape\n    return (\n        <>\n            {props.products.map(result => (\n                <ProductItem\n                    result={result}\n                    useProductClickTracking={props.useProductClickTracking}\n                    buttonShape={buttonShape}\n                    displaySleevePrice={searchCtx.displaySleevePrice}\n                    priceFormatter={searchCtx.priceFormatter}\n                    i18n={searchCtx.i18n}\n                    conjunctionFormatter={conjunctionFormatter}\n                />\n            ))}\n        </>\n    )\n}\n\nconst ProductsContainer = (props: { class: string }) => {\n    const { i18n, store, buildUseProductTracking, ...searchCtx } = useProductPageContext()\n    const searchResult = searchCtx.searchResults.value\n\n    if (searchResult.status === 'rejected') {\n        return null\n    }\n\n    if (searchResult.status === 'pending') {\n        return (\n            <div class={cn(props.class, cssModule['product-list'])}>\n                {Array.from({ length: 15 }, () => (\n                    <ProductPlaceholder />\n                ))}\n            </div>\n        )\n    }\n\n    if (searchResult.value.results.length === 0) {\n        return (\n            <div class={props.class}>\n                <NoResults />\n            </div>\n        )\n    }\n\n    return (\n        <div class={cn(props.class, cssModule['product-list'])}>\n            <Products\n                useProductClickTracking={buildUseProductTracking(searchResult.value)}\n                products={searchResult.value.results}\n            />\n        </div>\n    )\n}\n\nconst Recommendations = () => {\n    const { buildUseProductTracking, searchResults, copywriting } = useProductPageContext()\n    const searchResult = searchResults.value\n    const titleId = useId()\n    if (searchResult.status !== 'fulfilled') {\n        return null\n    }\n\n    if (\n        !searchResult.value.recommendation ||\n        searchResult.value.recommendation.results.length === 0\n    ) {\n        return null\n    }\n\n    return (\n        <div class={cssModule['recommendation-results']}>\n            <h2 id={titleId} class={cssModule['recommendation-label']}>\n                {copywriting.recommendationLabel}\n            </h2>\n            <div aria-labelledby={titleId} class={cn(cssModule['product-list'])}>\n                <Products\n                    useProductClickTracking={buildUseProductTracking(\n                        searchResult.value.recommendation\n                    )}\n                    products={searchResult.value.recommendation.results}\n                />\n            </div>\n        </div>\n    )\n}\n\nconst ProductsPanel = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n    const filterOpen = useSignal(breakpoint.peek() === 'desktop')\n\n    useSignalEffect(() => {\n        if (breakpoint.value !== 'mobile') {\n            return\n        }\n        filterOpen.value = false\n    })\n\n    const filterPanelId = useId()\n    const filterTriggerId = useId()\n    const filterCounter = useSignal({ selected: 0, available: 0 })\n    const filtersAvailable = useComputed(() => filterCounter.value.available > 0)\n    const filtersCollapsed = useComputed(() => !filterOpen.value || !filtersAvailable.value)\n    if (searchCtx.store.tab.value !== 'Products') {\n        return null\n    }\n\n    return (\n        <ProductPageContextProvider value={searchCtx as ProductPageEngine}>\n            <div\n                aria-busy={searchResult.status === 'pending'}\n                class={cn(\n                    cssModule['product-panel'],\n                    filtersCollapsed.value && cssModule['expanded']\n                )}>\n                <Notifications class={cssModule['notifications-section']} />\n                <div\n                    class={cn(\n                        cssModule['filters-trigger-section'],\n                        !filtersAvailable.value && cssModule['hidden']\n                    )}>\n                    <FilterTrigger\n                        filterCounter={filterCounter}\n                        panelId={filterPanelId}\n                        triggerId={filterTriggerId}\n                        open={filterOpen}\n                    />\n                </div>\n                <div\n                    class={cn(\n                        cssModule['filters-breadcrumbs-section'],\n                        !filtersAvailable.value && cssModule['hidden']\n                    )}>\n                    <ClearAllButton filterCounter={filterCounter} />\n                    <FilterBreadcrumb class={cssModule['filters-breadcrumb']} />\n                </div>\n                <ProductFilters\n                    filterCounter={filterCounter}\n                    panelId={filterPanelId}\n                    triggerId={filterTriggerId}\n                    open={filterOpen}\n                    class={cn(cssModule['filters'])}\n                />\n                <ProductsContainer class={cn(cssModule['product-results'])} />\n                <Recommendations />\n                <Pagination class={cssModule['pagination']} />\n            </div>\n        </ProductPageContextProvider>\n    )\n}\n\nexport default ProductsPanel\n","import { useErrorBoundary, useId, useState } from 'preact/hooks'\nimport cn from 'classnames'\n\nimport cssModule from './articles.module.css'\nimport { ArticleThumbnailIcon } from '../shared/icons'\nimport { ArticleResult } from '../../engine'\nimport Pagination from './pagination'\nimport { usePageContext } from '.'\nimport NoResults from './no-results'\nimport Notifications from './notifications'\n\nconst ArticleItem = ({\n    useArticleTracking,\n    result\n}: {\n    result: ArticleResult | Error\n    useArticleTracking: (result: ArticleResult) => () => void\n}) => {\n    const [error, setError] = useState<unknown>(undefined)\n    useErrorBoundary(setError)\n    if (error || result instanceof Error) {\n        console.error(error || result)\n        return <div class={cssModule['article-item']}></div>\n    }\n    const titleId = useId()\n    const handleArticleTracking = useArticleTracking(result)\n    return (\n        <a\n            onClick={handleArticleTracking}\n            href={result.url}\n            rel=\"noopener noreferrer\"\n            class={cssModule['article-item']}\n            aria-labelledby={titleId}>\n            {result.imageUrl ? (\n                <div class={cssModule['article-image']}>\n                    <div class={cssModule['container']}>\n                        <img src={result.imageUrl} alt={result.title} />\n                    </div>\n                </div>\n            ) : (\n                <div class={cssModule['article-thumbnail']}>\n                    <ArticleThumbnailIcon width=\"80\" height=\"81\" />\n                </div>\n            )}\n            <div class={cssModule['article-title-section']}>\n                {result.category ? (\n                    <p class={cssModule['article-category']}>{result.category}</p>\n                ) : null}\n                <p id={titleId} class={cssModule['article-title']}>\n                    {result.title}\n                </p>\n            </div>\n        </a>\n    )\n}\n\nconst ArticlePlaceholder = () => {\n    return (\n        <div aria-hidden class={cn(cssModule['article-item'], cssModule['article-placeholder'])} />\n    )\n}\n\nconst Articles = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n\n    if (searchResult.status !== 'fulfilled') {\n        return (\n            <div class={cn(cssModule['article-list'])}>\n                {Array.from({ length: 15 }, () => (\n                    <ArticlePlaceholder />\n                ))}\n            </div>\n        )\n    }\n\n    const articleResults = searchResult.value.results as (ArticleResult | Error)[]\n    const useArticleTracking = searchCtx.buildUseArticleTracking(searchResult.value)\n    if (articleResults.length === 0) {\n        return (\n            <div>\n                <NoResults />\n            </div>\n        )\n    }\n\n    return (\n        <div class={cn(cssModule['article-list'])}>\n            {articleResults.map(result => (\n                <ArticleItem useArticleTracking={useArticleTracking} result={result} />\n            ))}\n        </div>\n    )\n}\n\nconst ArticlesPanel = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n    if (searchCtx.store.tab.value !== 'Articles') {\n        return null\n    }\n    return (\n        <div aria-busy={searchResult.status === 'pending'} class={cssModule['article-container']}>\n            <Notifications />\n            <Articles />\n            <Pagination />\n        </div>\n    )\n}\n\nexport default ArticlesPanel\n","import { useErrorBoundary, useId, useMemo, useState } from 'preact/hooks'\nimport cn from 'classnames'\nimport cssModule from './faqs.module.css'\nimport { escapeForFaq } from '../../shared/escape-for-faqs'\nimport { ChevronDownIcon, ChevronUpIcon } from '../shared/icons'\nimport { FAQResult } from '../../engine'\nimport Pagination from './pagination'\nimport { usePageContext } from '.'\nimport NoResults from './no-results'\nimport Notifications from './notifications'\n\nconst FaqItem = (props: FAQResult | Error) => {\n    const [error, setError] = useState<unknown>(undefined)\n    useErrorBoundary(setError)\n    if (error || props instanceof Error) {\n        console.error(error || props)\n        return <div class={cssModule['faq-item']}></div>\n    }\n    const [expanded, setExpanded] = useState(false)\n    const triggerId = useId()\n    const contentId = useId()\n    return (\n        <div class={cssModule['faq-item']}>\n            <button\n                type=\"button\"\n                onClick={() => setExpanded(e => !e)}\n                id={triggerId}\n                aria-expanded={expanded}\n                aria-controls={contentId}\n                class={cssModule['faq-question']}>\n                <span>{props.faqQuestion}</span>\n                {expanded ? <ChevronDownIcon aria-hidden /> : <ChevronUpIcon aria-hidden />}\n            </button>\n            <div\n                id={contentId}\n                role=\"region\"\n                aria-labelledby={triggerId}\n                class={cn(cssModule['faq-answer'], !expanded && cssModule['faq-answer-collapsed'])}\n                dangerouslySetInnerHTML={{ __html: escapeForFaq(props.faqAnswer) }}\n            />\n        </div>\n    )\n}\n\nconst FaqPlaceholder = () => {\n    const filler = useMemo(() => ' '.repeat(20 + 80 * Math.random()), [])\n    return (\n        <div aria-hidden class={cssModule['faq-item']}>\n            <div class={cn(cssModule['faq-question'], cssModule['faq-item-placeholder'])}>\n                <span>{filler}</span>\n            </div>\n        </div>\n    )\n}\n\nconst FAQs = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n\n    if (searchResult.status !== 'fulfilled') {\n        return (\n            <>\n                {Array.from({ length: 15 }, () => (\n                    <FaqPlaceholder />\n                ))}\n            </>\n        )\n    }\n\n    const faqResults = searchResult.value.results as (FAQResult | Error)[]\n    if (faqResults.length === 0) {\n        return <NoResults />\n    }\n    return (\n        <>\n            {faqResults.map(props => (\n                <FaqItem {...props} />\n            ))}\n        </>\n    )\n}\n\nconst FAQsPanel = () => {\n    const searchCtx = usePageContext()\n    const searchResult = searchCtx.searchResults.value\n    if (searchCtx.store.tab.value !== 'FAQs') {\n        return null\n    }\n    return (\n        <div\n            class={cssModule['faq-container']}\n            aria-busy={searchResult.status === 'pending'}>\n            <Notifications />\n            <div class={cssModule['faq-list']}>\n                <FAQs />\n            </div>\n            <Pagination />\n        </div>\n    )\n}\n\nexport default FAQsPanel\n","import cn from 'classnames'\nimport { useId } from 'preact/hooks'\nimport cssModule from './search-page.module.css'\nimport QueryBreadcrumb from './query-summary'\nimport Products from './products/products'\nimport Articles from './articles'\nimport FAQs from './faqs'\nimport { Tab } from '../../engine/shared/types'\nimport { usePageContext } from '.'\n\nconst TabElement = (props: { tab: Tab; panelId: string; id: string }) => {\n    const {\n        searchResults,\n        useInternalLink,\n        store,\n        copywriting: { tabTitles }\n    } = usePageContext()\n    const searchResult = searchResults.value\n    const link = useInternalLink((s, blankState) => ({\n        ...blankState,\n        q: s.q,\n        tab: props.tab,\n        action: 'tabChange'\n    }))\n    const selected = store.tab.value === props.tab\n    return (\n        <div class={cssModule['tab']}>\n            <a\n                id={props.id}\n                aria-current={selected}\n                role=\"tab\"\n                href={selected ? undefined : link.value.url}\n                aria-disabled={!selected}\n                onClick={selected ? undefined : link.value.handleClick}\n                class={cn(cssModule['tab-link'], selected && cssModule['selected'])}>\n                {`${tabTitles[props.tab.toLocaleLowerCase() as Lowercase<typeof props.tab>]} `}\n                {searchResult.status === 'fulfilled' ? (\n                    <span>({searchResult.value.tabGroup[props.tab]})</span>\n                ) : null}\n            </a>\n        </div>\n    )\n}\n\nconst SearchPage = () => {\n    const tabs = [\n        { label: 'Products' as Tab, content: <Products /> },\n        { label: 'Articles' as Tab, content: <Articles /> },\n        { label: 'FAQs' as Tab, content: <FAQs /> }\n    ]\n\n    return (\n        <>\n            <div class={cssModule['search-header']}>\n                <QueryBreadcrumb />\n                <div role=\"tablist\" class={cssModule['tabs']}>\n                    {tabs.map((tab, index) => {\n                        const tabId = `tab-${index}`\n                        const panelId = `panel-${index}`\n                        return (\n                            <TabElement key={tabId} tab={tab.label} id={tabId} panelId={panelId} />\n                        )\n                    })}\n                </div>\n            </div>\n\n            {tabs.map((tab, index) => {\n                const tabId = `tab-${index}`\n                const panelId = `panel-${index}`\n                return (\n                    <section key={panelId} aria-labelledby={tabId} role=\"tabpanel\">\n                        {tab.content}\n                    </section>\n                )\n            })}\n        </>\n    )\n}\n\nexport default SearchPage\n","import createProps from \"@kissui/helpers/src/props.helpers\";\nimport { BarProps, PageProps,  anomalousUSMikDevices  } from \"../../engine\";\n\nexport type HostProps = {\n    copywriting: {\n        cup_sizes_volumes: { cup_size: string; volume: string }[];\n        recs_label: string;\n        facet_titles: {\n            nes_prd_roast?: string;\n            nes_prd_categories: string;\n            nes_prd_technology: string;\n            nes_prd_price: string;\n            nes_prd_color: string;\n            nes_prd_cup_size: string;\n            nes_prd_intensity: string;\n            nes_prd_tasting_notes: string;\n            nes_prd_usage: string;\n        };\n        tabs_titles: {\n            products: string;\n            articles: string;\n            faqs: string;\n        };\n        facet_filters_overrides: {\n            nes_article_category: {\n                recipes: string;\n                machine_assistance: string;\n            };\n            nes_prd_categories: {\n                machine: string;\n                accessory: string;\n                capsule: string;\n            };\n            nes_prd_technology: {\n                vertuo: string;\n                original: string;\n                pro: string;\n            };\n            nes_prd_roast?: {\n                1: string,\n                2: string,\n                3: string,\n                4: string,\n                5: string,\n            }\n        };\n    };\n    options: {\n        add_to_cart_shape: \"square\" | \"round\";\n        display_recommendations: boolean;\n        display_sleeve_price: boolean;\n        /**\n         * This is now handled by coveo, as per market request\n         * @deprecated\n         */\n        sleeve_main_price: boolean;\n        colors_to_shades: string; // JSON<Record<string, string>>;\n        price_ranges: Array<{\n            /**\n             * @example\n             * ```\n             * \"0:1000\"\n             * ```\n             */\n            range: `${number}:${number}`;\n            label: string\n        }>;\n    };\n};\n\nexport const initPageProps = (pageAttr: NamedNodeMap) => {\n    const pageProps = createProps<HostProps>(pageAttr);\n\n    const colorToShade = JSON.parse(\n        pageProps.options?.colors_to_shades ?? \"{}\"\n    ) as Record<string, string>;\n\n    const shadeToColors = Object.entries(colorToShade)\n        .reduce((shadeColor, [color, shade]) => {\n            shadeColor[shade] ??= [];\n            shadeColor[shade].push(color);\n            return shadeColor;\n        }, {} as Record<string, string[]>);\n\n    const { nes_article_category, nes_prd_categories, nes_prd_technology, nes_prd_roast } = pageProps.copywriting.facet_filters_overrides\n\n    return {\n        shadeToColors,\n        displayRecommendations: pageProps.options.display_recommendations,\n        displaySleevePrice: pageProps.options.display_sleeve_price,\n        sleeveMainPrice: pageProps.options.sleeve_main_price,\n        addToCartShape: pageProps.options.add_to_cart_shape,\n        cupSizesVolumes: Object.freeze(pageProps.copywriting.cup_sizes_volumes.map(({ cup_size, volume }) => Object.freeze({ cupSize: cup_size, volume }))),\n        priceRangeFilterOptions: Object.freeze(pageProps.options.price_ranges.map(v => Object.freeze(v))),\n        copywriting: {\n            tabTitles: pageProps.copywriting.tabs_titles,\n            recommendationLabel: pageProps.copywriting.recs_label,\n            articleCategories: {\n                \"Recipes\": nes_article_category.recipes,\n                \"Machine Assistance\": nes_article_category.machine_assistance\n            },\n            productTechnologies: {\n                \"Vertuo\": nes_prd_technology.vertuo,\n                \"Original\": nes_prd_technology.original,\n                \"Pro\": nes_prd_technology.pro,\n                [anomalousUSMikDevices]: anomalousUSMikDevices,\n            },\n            productCategories: {\n                \"Capsule\": nes_prd_categories.capsule,\n                \"Machine\": nes_prd_categories.machine,\n                \"Accessory\": nes_prd_categories.accessory,\n            },\n            productRoasting:  nes_prd_roast || {},\n            productFiltersTitles: {\n                prdCategories: pageProps.copywriting.facet_titles.nes_prd_categories,\n                prdTechnologies: pageProps.copywriting.facet_titles.nes_prd_technology,\n                prdPrice: pageProps.copywriting.facet_titles.nes_prd_price,\n                prdMachineColors: pageProps.copywriting.facet_titles.nes_prd_color,\n                prdCupSizes:  pageProps.copywriting.facet_titles.nes_prd_cup_size,\n                prdIntensity:  pageProps.copywriting.facet_titles.nes_prd_intensity,\n                prdRoasting: pageProps.copywriting.facet_titles.nes_prd_roast,\n                prdTastingNotes: pageProps.copywriting.facet_titles.nes_prd_tasting_notes,\n                prdUsages: pageProps.copywriting.facet_titles.nes_prd_usage,\n            } as const\n        },\n    } as const satisfies Omit<PageProps, keyof BarProps>\n}\n","import SearchPage from '../../ui/page/search-page';\nimport { SearchBarHost } from '../search-bar';\nimport { initPageProps } from './props';\n\nexport class SearchPageHost extends HTMLElement {\n  private static rendered = false\n  connectedCallback() {\n    if (SearchPageHost.rendered) { return }\n\n    const mountPoint = document.createElement(\"div\")\n\n    this.parentElement!.parentElement!.appendChild(mountPoint)\n\n    SearchBarHost.renderSearchPage(SearchPage, mountPoint, initPageProps(this.attributes))\n\n    SearchPageHost.rendered = true\n  }\n}\n\ncustomElements.get(\"nb-search-page\") || customElements.define(\"nb-search-page\", SearchPageHost)\n"],"names":["interpolation","escape","createMicroMarkup","strong","QuerySummary","searchCtx","usePageContext","searchResult","searchResults","value","htmlRef","useRef","useSignalEffect","state","current","scrollIntoView","behavior","block","_jsxs","ref","class","cssModule","children","_jsx","i18n","t","store","q","query","count","status","totalCount","text","queryCorrectedFrom","Fragment","dangerouslySetInnerHTML","__html","buildPages","totalPages","currentPage","result","i","push","unshift","length","nullableResults","last","first","PageEllipsis","className","cn","NumPage","props","useInternalLink","link","s","page","action","href","undefined","url","onClick","handleClick","PrevArrow","Math","max","disabled","LeftArrowIcon","role","NextArrow","min","RightArrowIcon","Pagination","totalPagesSig","useSignal","results","map","PreactContext","createContext","ProductPageContextProvider","Provider","Consumer","useProductPageContext","useContext","isSelectedOrHasResults","entry","selected","isSelected","useFilterCount","field","useComputed","filters","filter","useVanillaConsolidated","urlValues","size","useClearedLink","useToggleLink","rest","v","nextValues","includes","useRemoveLink","countSelected","list","reduce","sum","OptionChip","busy","label","toggleLink","BreadcrumbChip","clearLink","CloseIcon","ClearFacetButton","clearFacetLabel","facetTitle","clearedLink","FilterTrigger","filterCounter","available","id","triggerId","open","panelId","peek","FilterIcon","ClearAllButton","tab","blankState","title","FacetFilter","expanded","defaultExpanded","useId","contentId","expandLabel","hidden","ChevronUpIcon","ChevronDownIcon","contentClass","CategoryChip","copywriting","productCategories","useCategoryFilterValues","consolidated","urlPrdCategories","prdCategories","ProductCategories","cat","CategoryFacet","counter","productFiltersTitles","CategoryBreadcrumbChip","CategoryBreadcrumb","values","_Fragment","TechnologyChip","productTechnologies","useTechnologyFilterValues","urlPrdTechnologies","prdTechnologies","ProductTechnologies","tech","TechnologyFacet","TechnologyBreadcrumbChip","TechnologyBreadcrumb","PriceLine","priceRangeFilterOptions","find","range","CheckIcon","usePriceFilterValues","prdPriceRanges","PriceFacet","prdPrice","PriceBreadcrumbChip","PriceBreadcrumb","MachineColorChip","MachineColorFacet","prdMachineColors","MachineColorBreadcrumbChip","MachineColorBreadcrumb","CupSizeChip","CupSizeFacet","prdCupSizes","CupSizeBreadcrumbChip","CupSizeBreadcrumb","IntensityChip","IntensityFacet","unsortedConsolidated","sort","a","b","Number","prdIntensity","IntensityBreadcrumbChip","IntensityBreadcrumb","RoastingChip","productRoasting","RoastingFacet","prdRoasting","RoastingBreadcrumbChip","RoastingBreadcrumb","TastingNotesChip","TastingNotesFacet","prdTastingNotes","TastingBreadcrumbChip","TastingBreadcrumb","UsagesChip","UsagesFacet","prdUsages","UsageBreadcrumbChip","UsageBreadcrumb","facetConstructors","ProductFilters","counters","sig","Facet","microMarkup","NoResults","breadcrumbConstructors","FilterBreadcrumbs","Breadcrumb","Notifications","notifications","message","escapeForFaq","EVENT_POPIN_OPEN","B2B_CONTACT_FORM_POPIN_ID","B2B_CONTACT_FORM_POPIN_SRC_SEARCH","dispatchEvent","eventName","args","element","window","Error","event","CustomEvent","detail","bubbles","Event","document","createEvent","initEvent","CupSize","cupSizesWithVolume","cupSizes","volume","cup_size","defaultValue","conjunctionFormatter","format","ImageSection","imageUrl","useMemo","imPolicyQuery","createImPolicyQuery","ceil","width","src","alt","loading","TypeSection","category","TitleSection","trackProductClick","PreviousPrice","priceFormatter","previousPrice","previous_price","short","Price","price","SleevePrice","displaySleevePrice","price_per_sleeve_text","CAPSULE_TECHNOLOGY_B2B","sleeveMainPrice","sleeve_price","salesMultiple","sleeve_size","SleevePricePerWeight","capsuleNetWeightG","netWeightKg","pricePerKG","price_per_kilo","SleeveBundlePricePerWeight","capsules","SleeveDescription","sleeves","estimatedSleeves","floor","SleeveBundleDescription","SleevePricingSection","SleeveBundlePricingSection","PricingSection","CTASection","buttonShape","buttonId","sku","addToCartData","JSON","stringify","label_add_to_cart","label_update_cart","quantity_selector","a11y_qs_label","a11y_qs_description","a11y_predefined_quantity","a11y_predefined_description","a11y_add_label","a11y_custom_quantity","a11y_custom_description","label_choose_quantity","label_button_ok","quantities","step","evt","stopPropagation","preventDefault","data","CTAContactSection","ctaData","variation","handleContactUsClick","skuArgs","srcComponent","productName","target","CTAViewDetails","CapsuleItem","country","trackedNode","useProductImpressionTracking","useProductClickTracking","bundled","showPriceSection","displayPrice","isCountryInListToEnableViewDetailsCTA","countryList","MachineColorsBubble","activeMachineSku","colorCss","style","MachineColorsSection","machineGroup","subProps","MachineItem","forwardProps","d","AccessoryItem","ProductItem","error","setError","useState","useErrorBoundary","categoryId","ProductPlaceholder","Products","Intl","ListFormat","locale","type","addToCartShape","products","ProductsContainer","buildUseProductTracking","Array","from","Recommendations","titleId","recommendation","recommendationLabel","ProductsPanel","filterOpen","breakpoint","filterPanelId","filterTriggerId","filtersAvailable","filtersCollapsed","FilterBreadcrumb","ArticleItem","useArticleTracking","handleArticleTracking","rel","ArticleThumbnailIcon","height","ArticlePlaceholder","Articles","articleResults","buildUseArticleTracking","ArticlesPanel","FaqItem","setExpanded","e","faqQuestion","faqAnswer","FaqPlaceholder","filler","repeat","random","FAQs","faqResults","FAQsPanel","TabElement","tabTitles","toLocaleLowerCase","tabGroup","SearchPage","tabs","content","QueryBreadcrumb","index","tabId","initPageProps","pageAttr","pageProps","createProps","colorToShade","parse","options","colors_to_shades","shadeToColors","Object","entries","shadeColor","color","shade","nes_article_category","nes_prd_categories","nes_prd_technology","nes_prd_roast","facet_filters_overrides","displayRecommendations","display_recommendations","display_sleeve_price","sleeve_main_price","add_to_cart_shape","cupSizesVolumes","freeze","cup_sizes_volumes","cupSize","price_ranges","tabs_titles","recs_label","articleCategories","recipes","machine_assistance","vertuo","original","pro","anomalousUSMikDevices","capsule","machine","accessory","facet_titles","nes_prd_price","nes_prd_color","nes_prd_cup_size","nes_prd_intensity","nes_prd_tasting_notes","nes_prd_usage","SearchPageHost","HTMLElement","connectedCallback","rendered","mountPoint","createElement","parentElement","appendChild","SearchBarHost","renderSearchPage","attributes","_SearchPageHost","customElements","get","define"],"mappings":"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"}