@coveo/atomic 3.33.2 → 3.33.3-pre.1386439450
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atomic/_atomic.esm.js +1 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/analytics-config.js.map +1 -1
- package/dist/atomic/components/atomic-insight-result2.js +1 -1
- package/dist/atomic/components/atomic-insight-result2.js.map +1 -1
- package/dist/atomic/components/atomic-recs-result2.js +1 -1
- package/dist/atomic/components/atomic-recs-result2.js.map +1 -1
- package/dist/atomic/components/atomic-result-placeholder2.js +1 -1
- package/dist/atomic/components/atomic-result-placeholder2.js.map +1 -1
- package/dist/atomic/components/atomic-result2.js +1 -1
- package/dist/atomic/components/atomic-result2.js.map +1 -1
- package/dist/atomic/components/components/commerce/atomic-product/atomic-product.tw.css.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-product-section-emphasized/atomic-product-section-emphasized.js +3 -2
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/p-3a3f7783.entry.js +2 -0
- package/dist/atomic/{p-29919fba.entry.js.map → p-3a3f7783.entry.js.map} +1 -1
- package/dist/atomic/p-6fcd89e5.entry.js +2 -0
- package/dist/atomic/{p-1f5473a6.entry.js.map → p-6fcd89e5.entry.js.map} +1 -1
- package/dist/atomic/p-7d59d46a.entry.js +2 -0
- package/dist/atomic/{p-9d9f201f.entry.js.map → p-7d59d46a.entry.js.map} +1 -1
- package/dist/atomic/{p-b16950ec.entry.js → p-7fb03e11.entry.js} +2 -2
- package/dist/atomic/p-8677b56e.entry.js +2 -0
- package/dist/atomic/{p-6f7c823d.entry.js.map → p-8677b56e.entry.js.map} +1 -1
- package/dist/atomic/{p-217c470c.entry.js → p-9c0533f1.entry.js} +2 -2
- package/dist/atomic/p-bed0de44.entry.js +2 -0
- package/dist/atomic/{p-64fc4340.entry.js.map → p-bed0de44.entry.js.map} +1 -1
- package/dist/atomic/{p-1315bbaf.js → p-ef7ad46a.js} +2 -2
- package/dist/atomic/{p-1315bbaf.js.map → p-ef7ad46a.js.map} +1 -1
- package/dist/cjs/{analytics-config-f2718cd7.js → analytics-config-b162450e.js} +2 -2
- package/dist/cjs/analytics-config-b162450e.js.map +1 -0
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-result.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-result.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-result.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-result.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-search-interface.cjs.entry.js +1 -1
- package/dist/cjs/version.cjs.js +2 -2
- package/dist/esm/{analytics-config-a2ebaf0d.js → analytics-config-ce2d1031.js} +2 -2
- package/dist/esm/analytics-config-ce2d1031.js.map +1 -0
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-insight-result.entry.js +1 -1
- package/dist/esm/atomic-insight-result.entry.js.map +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-recs-result.entry.js +1 -1
- package/dist/esm/atomic-recs-result.entry.js.map +1 -1
- package/dist/esm/atomic-result-placeholder_8.entry.js +1 -1
- package/dist/esm/atomic-result-placeholder_8.entry.js.map +1 -1
- package/dist/esm/atomic-result.entry.js +1 -1
- package/dist/esm/atomic-result.entry.js.map +1 -1
- package/dist/esm/atomic-search-interface.entry.js +1 -1
- package/dist/esm/version.js +2 -2
- package/docs/atomic-docs.json +1 -1
- package/package.json +3 -3
- package/dist/atomic/p-1f5473a6.entry.js +0 -2
- package/dist/atomic/p-29919fba.entry.js +0 -2
- package/dist/atomic/p-64fc4340.entry.js +0 -2
- package/dist/atomic/p-6f7c823d.entry.js +0 -2
- package/dist/atomic/p-9d9f201f.entry.js +0 -2
- package/dist/cjs/analytics-config-f2718cd7.js.map +0 -1
- package/dist/esm/analytics-config-a2ebaf0d.js.map +0 -1
- /package/dist/atomic/{p-b16950ec.entry.js.map → p-7fb03e11.entry.js.map} +0 -0
- /package/dist/atomic/{p-217c470c.entry.js.map → p-9c0533f1.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["atomicResultPlaceholderCss","AtomicResultPlaceholderStyle0","placeholderClasses","AtomicResultPlaceholder","renderExcerptLine","width","h","style","height","class","render","key","getItemDisplayClasses","this","display","density","imageSize","join","trim","Array","from","length","AtomicResultSectionActions","componentDidRender","hideEmptySection","host","AtomicResultSectionBadges","AtomicResultSectionBottomMetadata","AtomicResultSectionExcerpt","AtomicResultSectionTitle","AtomicResultSectionVisual","atomicResultTablePlaceholderCss","AtomicResultTablePlaceholderStyle0","AtomicResultTablePlaceholder","getClasses","rows"],"sources":["src/components/common/atomic-result-placeholder/atomic-result-placeholder.pcss?tag=atomic-result-placeholder&encapsulation=shadow","src/components/common/atomic-result-placeholder/atomic-result-placeholder.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-actions.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-badges.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-bottom-metadata.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-excerpt.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-title.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-visual.tsx","src/components/search/atomic-result-table-placeholder/atomic-result-table-placeholder.pcss?tag=atomic-result-table-placeholder&encapsulation=shadow","src/components/search/atomic-result-table-placeholder/atomic-result-table-placeholder.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n\n@import '../template-system/template-system.pcss';\n\n:host {\n @apply atomic-template-system;\n\n .result-root {\n &.display-grid {\n atomic-result-section-actions {\n display: none;\n }\n }\n\n .badge {\n width: 14rem;\n }\n\n .action {\n width: 10rem;\n }\n\n .title {\n display: grid;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n height: var(--line-height);\n width: 30rem;\n max-width: 100%;\n }\n\n .fields-placeholder {\n display: grid;\n grid-template-columns: repeat(auto-fill, min(11rem, 40%));\n grid-column-gap: 0.5rem;\n\n .field-value-placeholder {\n height: var(--font-size);\n margin: calc((var(--line-height) - var(--font-size)) / 2) 0;\n }\n }\n }\n}\n","import {Component, h, Prop} from '@stencil/core';\nimport {\n ItemDisplayLayout,\n ItemDisplayDensity,\n ItemDisplayImageSize,\n getItemDisplayClasses,\n} from '../../common/layout/display-options';\n\nconst placeholderClasses = 'block bg-neutral w-full h-full rounded';\n\n/**\n * The `atomic-result-placeholder` component provides an intermediate visual state that is rendered before the first results are available.\n * @internal\n */\n@Component({\n tag: 'atomic-result-placeholder',\n styleUrl: 'atomic-result-placeholder.pcss',\n shadow: true,\n})\nexport class AtomicResultPlaceholder {\n @Prop() display!: ItemDisplayLayout;\n @Prop() density!: ItemDisplayDensity;\n @Prop() imageSize!: ItemDisplayImageSize;\n\n private renderExcerptLine(width: string) {\n return (\n <div\n style={{\n height: 'var(--line-height)',\n width,\n }}\n >\n <div\n class={placeholderClasses}\n style={{height: 'var(--font-size)'}}\n ></div>\n </div>\n );\n }\n\n public render() {\n return (\n <div\n class={`result-root placeholder with-sections animate-pulse ${getItemDisplayClasses(\n this.display,\n this.density,\n this.imageSize\n )\n .join(' ')\n .trim()}`}\n >\n <atomic-result-section-visual>\n <div class={placeholderClasses}></div>\n </atomic-result-section-visual>\n <atomic-result-section-badges>\n <div class={`badge ${placeholderClasses}`}></div>\n </atomic-result-section-badges>\n <atomic-result-section-actions>\n <div class={`action ${placeholderClasses}`}></div>\n </atomic-result-section-actions>\n <atomic-result-section-title>\n <div class={`title ${placeholderClasses}`}></div>\n </atomic-result-section-title>\n <atomic-result-section-excerpt>\n {this.renderExcerptLine('100%')}\n {this.renderExcerptLine('95%')}\n {this.renderExcerptLine('98%')}\n </atomic-result-section-excerpt>\n <atomic-result-section-bottom-metadata>\n <div class=\"fields-placeholder\">\n {Array.from({length: 4}, () => (\n <div\n class={`field-value-placeholder ${placeholderClasses}`}\n ></div>\n ))}\n </div>\n </atomic-result-section-bottom-metadata>\n </div>\n );\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section allows the information seeker to perform an action on an item without having to view its details.\n * For example, in Commerce you can add an item to the cart directly or add it to a wish list to view at a later time.\n *\n * Behavior:\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * ** You should ensure that elements inside of it have `height: var(--line-height)`.\n * * Is a wrapping flexbox with a gap.\n * * May appear over, next to, or beneath the visual section.\n */\n@Component({\n tag: 'atomic-result-section-actions',\n shadow: false,\n})\nexport class AtomicResultSectionActions {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section provides badges that highlight special features of the item.\n *\n * Behavior:\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * ** You should ensure that elements inside of it have `height: var(--line-height)`.\n * * Is a wrapping flexbox with a gap.\n * * May appear over, next to, or beneath the visual section.\n */\n@Component({\n tag: 'atomic-result-section-badges',\n shadow: false,\n})\nexport class AtomicResultSectionBadges {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section displays additional descriptive information about the item.\n *\n * Behavior:\n * * Has a maximum height of two lines.\n * ** We recommend that you use `atomic-result-fields-list` to ensure that the fields in this section don’t overflow.\n * * Exposes the `--line-height` variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n * * Has a font weight.\n */\n@Component({\n tag: 'atomic-result-section-bottom-metadata',\n shadow: false,\n})\nexport class AtomicResultSectionBottomMetadata {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section contains an informative summary of the item's content.\n *\n * Behavior:\n * * Has a fixed height of one to three lines, depending on the layout and density.\n * * Ellipses overflowing text.\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n */\n@Component({\n tag: 'atomic-result-section-excerpt',\n shadow: false,\n})\nexport class AtomicResultSectionExcerpt {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section identifies the item by its name, and its main use is to make the result list scannable.\n * This is usually the page title.\n *\n * Behavior:\n * * Has a fixed height of two lines on grid layouts.\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n */\n@Component({\n tag: 'atomic-result-section-title',\n shadow: false,\n})\nexport class AtomicResultSectionTitle {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component, Prop} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\nimport {ItemDisplayImageSize} from '../../../common/layout/display-options';\n\n/**\n * This section provides visual information about the item.\n * For example, in Commerce, an image is a great shorthand for a product category.\n * An icon can quickly show the item type, or an avatar can help identify to whom it is related.\n *\n * Behavior:\n * * Has a fixed size that depends on the specified image size, the layout, the density, and the screen size.\n * ** When the image size is set to `icon`, this section stays very small.\n * ** You should ensure that elements inside of it take the available space.\n * * Always has a 1:1 aspect ratio.\n */\n@Component({\n tag: 'atomic-result-section-visual',\n shadow: false,\n})\nexport class AtomicResultSectionVisual {\n @Element() private host!: HTMLElement;\n\n /**\n * How large or small the visual section of results using this template should be.\n */\n @Prop({reflect: true}) public imageSize?: ItemDisplayImageSize;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","@import '../../../global/global.pcss';\n@import '../../common/item-list/styles/mixins.pcss';\n\n:host {\n display: grid;\n}\n\n.list-root.display-table {\n @apply atomic-result-table border-neutral rounded-xl border;\n\n thead tr,\n tbody tr:not(:last-child) {\n position: relative;\n\n &::after {\n content: ' ';\n display: block;\n position: absolute;\n height: 1px;\n bottom: 0;\n left: var(--padding);\n right: var(--padding);\n @apply bg-neutral;\n }\n }\n\n th,\n td {\n border-color: transparent;\n border-radius: initial;\n }\n\n th {\n background-color: transparent;\n }\n}\n","import {Component, h, Prop} from '@stencil/core';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n getItemDisplayClasses,\n} from '../../common/layout/display-options';\n\nconst placeholderClasses = 'block bg-neutral rounded';\n\n/**\n * The `atomic-result-table-placeholder` component provides an intermediate visual state that is rendered before the first results are available.\n * @internal\n */\n@Component({\n tag: 'atomic-result-table-placeholder',\n styleUrl: 'atomic-result-table-placeholder.pcss',\n shadow: true,\n})\nexport class AtomicResultTablePlaceholder {\n @Prop() density!: ItemDisplayDensity;\n @Prop() imageSize!: ItemDisplayImageSize;\n @Prop() rows!: number;\n\n private getClasses() {\n return getItemDisplayClasses('table', this.density, this.imageSize);\n }\n\n public render() {\n return (\n <table class={`list-root animate-pulse ${this.getClasses().join(' ')}`}>\n <thead>\n <tr>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '14.5rem'}}\n ></div>\n </th>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '9.75rem'}}\n ></div>\n </th>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '6.5rem'}}\n ></div>\n </th>\n </tr>\n </thead>\n <tbody>\n {Array.from({length: this.rows}, () => (\n <tr>\n <td>\n <div\n class={`mb-6 h-8 ${placeholderClasses}`}\n style={{width: '22.875rem'}}\n ></div>\n <div\n class={`mb-2 h-5 ${placeholderClasses}`}\n style={{width: '23.75rem'}}\n ></div>\n <div\n class={`h-5 ${placeholderClasses}`}\n style={{width: '11.5rem'}}\n ></div>\n </td>\n <td>\n <div\n class={`mt-1.5 h-5 ${placeholderClasses}`}\n style={{width: '11rem'}}\n ></div>\n </td>\n <td>\n <div\n class={`mt-1.5 h-5 ${placeholderClasses}`}\n style={{width: '4.875rem'}}\n ></div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n}\n"],"mappings":"0NAAA,MAAMA,EAA6B,4vktBACnC,MAAAC,EAAeD,ECOf,MAAME,EAAqB,yC,MAWdC,EAAuB,M,gGAK1B,iBAAAC,CAAkBC,GACxB,OACEC,EAAA,OACEC,MAAO,CACLC,OAAQ,qBACRH,UAGFC,EAAA,OACEG,MAAOP,EACPK,MAAO,CAACC,OAAQ,sB,CAMjB,MAAAE,GACL,OACEJ,EAAA,OAAAK,IAAA,2CACEF,MAAO,uDAAuDG,EAC5DC,KAAKC,QACLD,KAAKE,QACLF,KAAKG,WAEJC,KAAK,KACLC,UAEHZ,EAAA,gCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAOP,KAEdI,EAAA,gCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,SAASP,OAEvBI,EAAA,iCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,UAAUP,OAExBI,EAAA,+BAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,SAASP,OAEvBI,EAAA,iCAAAK,IAAA,4CACGE,KAAKT,kBAAkB,QACvBS,KAAKT,kBAAkB,OACvBS,KAAKT,kBAAkB,QAE1BE,EAAA,yCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAM,sBACRU,MAAMC,KAAK,CAACC,OAAQ,IAAI,IACvBf,EAAA,OACEG,MAAO,2BAA2BP,U,mBCvDrCoB,EAA0B,M,yBAG9B,kBAAAC,GACLC,EAAiBX,KAAKY,K,mCCLbC,EAAyB,M,yBAG7B,kBAAAH,GACLC,EAAiBX,KAAKY,K,mCCHbE,EAAiC,M,yBAGrC,kBAAAJ,GACLC,EAAiBX,KAAKY,K,mCCLbG,EAA0B,M,yBAG9B,kBAAAL,GACLC,EAAiBX,KAAKY,K,mCCJbI,EAAwB,M,yBAG5B,kBAAAN,GACLC,EAAiBX,KAAKY,K,mCCDbK,EAAyB,M,kDAQ7B,kBAAAP,GACLC,EAAiBX,KAAKY,K,6BC5B1B,MAAMM,EAAkC,205EACxC,MAAAC,EAAeD,ECMf,MAAM7B,EAAqB,2B,MAWd+B,EAA4B,M,6FAK/B,UAAAC,GACN,OAAOtB,EAAsB,QAASC,KAAKE,QAASF,KAAKG,U,CAGpD,MAAAN,GACL,OACEJ,EAAA,SAAAK,IAAA,2CAAOF,MAAO,2BAA2BI,KAAKqB,aAAajB,KAAK,QAC9DX,EAAA,SAAAK,IAAA,4CACEL,EAAA,MAAAK,IAAA,4CACEL,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAGnBC,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAGnBC,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,eAKvBC,EAAA,SAAAK,IAAA,4CACGQ,MAAMC,KAAK,CAACC,OAAQR,KAAKsB,OAAO,IAC/B7B,EAAA,UACEA,EAAA,UACEA,EAAA,OACEG,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,eAEjBC,EAAA,OACEG,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAEjBC,EAAA,OACEG,MAAO,OAAOP,IACdK,MAAO,CAACF,MAAO,cAGnBC,EAAA,UACEA,EAAA,OACEG,MAAO,cAAcP,IACrBK,MAAO,CAACF,MAAO,YAGnBC,EAAA,UACEA,EAAA,OACEG,MAAO,cAAcP,IACrBK,MAAO,CAACF,MAAO,mB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["atomicResultPlaceholderCss","AtomicResultPlaceholderStyle0","placeholderClasses","AtomicResultPlaceholder","renderExcerptLine","width","h","style","height","class","render","key","getItemDisplayClasses","this","display","density","imageSize","join","trim","Array","from","length","AtomicResultSectionActions","componentDidRender","hideEmptySection","host","AtomicResultSectionBadges","AtomicResultSectionBottomMetadata","AtomicResultSectionExcerpt","AtomicResultSectionTitle","AtomicResultSectionVisual","atomicResultTablePlaceholderCss","AtomicResultTablePlaceholderStyle0","AtomicResultTablePlaceholder","getClasses","rows"],"sources":["src/components/common/atomic-result-placeholder/atomic-result-placeholder.pcss?tag=atomic-result-placeholder&encapsulation=shadow","src/components/common/atomic-result-placeholder/atomic-result-placeholder.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-actions.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-badges.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-bottom-metadata.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-excerpt.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-title.tsx","src/components/search/result-template-components/atomic-result-sections/atomic-result-section-visual.tsx","src/components/search/atomic-result-table-placeholder/atomic-result-table-placeholder.pcss?tag=atomic-result-table-placeholder&encapsulation=shadow","src/components/search/atomic-result-table-placeholder/atomic-result-table-placeholder.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n\n@import '../template-system/template-system.pcss';\n\n:host {\n @apply atomic-template-system;\n\n .result-root {\n &.display-grid {\n atomic-result-section-actions {\n display: none;\n }\n }\n\n .badge {\n width: 14rem;\n }\n\n .action {\n width: 10rem;\n }\n\n .title {\n display: grid;\n grid-auto-flow: column;\n grid-gap: 0.5rem;\n height: var(--line-height);\n width: 30rem;\n max-width: 100%;\n }\n\n .fields-placeholder {\n display: grid;\n grid-template-columns: repeat(auto-fill, min(11rem, 40%));\n grid-column-gap: 0.5rem;\n\n .field-value-placeholder {\n height: var(--font-size);\n margin: calc((var(--line-height) - var(--font-size)) / 2) 0;\n }\n }\n }\n}\n","import {Component, h, Prop} from '@stencil/core';\nimport {\n ItemDisplayLayout,\n ItemDisplayDensity,\n ItemDisplayImageSize,\n getItemDisplayClasses,\n} from '../../common/layout/display-options';\n\nconst placeholderClasses = 'block bg-neutral w-full h-full rounded';\n\n/**\n * The `atomic-result-placeholder` component provides an intermediate visual state that is rendered before the first results are available.\n * @internal\n */\n@Component({\n tag: 'atomic-result-placeholder',\n styleUrl: 'atomic-result-placeholder.pcss',\n shadow: true,\n})\nexport class AtomicResultPlaceholder {\n @Prop() display!: ItemDisplayLayout;\n @Prop() density!: ItemDisplayDensity;\n @Prop() imageSize!: ItemDisplayImageSize;\n\n private renderExcerptLine(width: string) {\n return (\n <div\n style={{\n height: 'var(--line-height)',\n width,\n }}\n >\n <div\n class={placeholderClasses}\n style={{height: 'var(--font-size)'}}\n ></div>\n </div>\n );\n }\n\n public render() {\n return (\n <div\n class={`result-root placeholder with-sections animate-pulse ${getItemDisplayClasses(\n this.display,\n this.density,\n this.imageSize\n )\n .join(' ')\n .trim()}`}\n >\n <atomic-result-section-visual>\n <div class={placeholderClasses}></div>\n </atomic-result-section-visual>\n <atomic-result-section-badges>\n <div class={`badge ${placeholderClasses}`}></div>\n </atomic-result-section-badges>\n <atomic-result-section-actions>\n <div class={`action ${placeholderClasses}`}></div>\n </atomic-result-section-actions>\n <atomic-result-section-title>\n <div class={`title ${placeholderClasses}`}></div>\n </atomic-result-section-title>\n <atomic-result-section-excerpt>\n {this.renderExcerptLine('100%')}\n {this.renderExcerptLine('95%')}\n {this.renderExcerptLine('98%')}\n </atomic-result-section-excerpt>\n <atomic-result-section-bottom-metadata>\n <div class=\"fields-placeholder\">\n {Array.from({length: 4}, () => (\n <div\n class={`field-value-placeholder ${placeholderClasses}`}\n ></div>\n ))}\n </div>\n </atomic-result-section-bottom-metadata>\n </div>\n );\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section allows the information seeker to perform an action on an item without having to view its details.\n * For example, in Commerce you can add an item to the cart directly or add it to a wish list to view at a later time.\n *\n * Behavior:\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * ** You should ensure that elements inside of it have `height: var(--line-height)`.\n * * Is a wrapping flexbox with a gap.\n * * May appear over, next to, or beneath the visual section.\n */\n@Component({\n tag: 'atomic-result-section-actions',\n shadow: false,\n})\nexport class AtomicResultSectionActions {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section provides badges that highlight special features of the item.\n *\n * Behavior:\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * ** You should ensure that elements inside of it have `height: var(--line-height)`.\n * * Is a wrapping flexbox with a gap.\n * * May appear over, next to, or beneath the visual section.\n */\n@Component({\n tag: 'atomic-result-section-badges',\n shadow: false,\n})\nexport class AtomicResultSectionBadges {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section displays additional descriptive information about the item.\n *\n * Behavior:\n * * Has a maximum height of two lines.\n * ** We recommend that you use `atomic-result-fields-list` to ensure that the fields in this section don’t overflow.\n * * Exposes the `--line-height` variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n * * Has a font weight.\n */\n@Component({\n tag: 'atomic-result-section-bottom-metadata',\n shadow: false,\n})\nexport class AtomicResultSectionBottomMetadata {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section contains an informative summary of the item's content.\n *\n * Behavior:\n * * Has a fixed height of one to three lines, depending on the layout and density.\n * * Ellipses overflowing text.\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n */\n@Component({\n tag: 'atomic-result-section-excerpt',\n shadow: false,\n})\nexport class AtomicResultSectionExcerpt {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\n\n/**\n * This section identifies the item by its name, and its main use is to make the result list scannable.\n * This is usually the page title.\n *\n * Behavior:\n * * Has a fixed height of two lines on grid layouts.\n * * Exposes the `--line-height` CSS variable so child elements can adjust to the current line height.\n * * Has a defined CSS `color` property for text.\n */\n@Component({\n tag: 'atomic-result-section-title',\n shadow: false,\n})\nexport class AtomicResultSectionTitle {\n @Element() private host!: HTMLElement;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","import {Element, Component, Prop} from '@stencil/core';\nimport {hideEmptySection} from '../../../../utils/item-section-utils';\nimport {ItemDisplayImageSize} from '../../../common/layout/display-options';\n\n/**\n * This section provides visual information about the item.\n * For example, in Commerce, an image is a great shorthand for a product category.\n * An icon can quickly show the item type, or an avatar can help identify to whom it is related.\n *\n * Behavior:\n * * Has a fixed size that depends on the specified image size, the layout, the density, and the screen size.\n * ** When the image size is set to `icon`, this section stays very small.\n * ** You should ensure that elements inside of it take the available space.\n * * Always has a 1:1 aspect ratio.\n */\n@Component({\n tag: 'atomic-result-section-visual',\n shadow: false,\n})\nexport class AtomicResultSectionVisual {\n @Element() private host!: HTMLElement;\n\n /**\n * How large or small the visual section of results using this template should be.\n */\n @Prop({reflect: true}) public imageSize?: ItemDisplayImageSize;\n\n public componentDidRender() {\n hideEmptySection(this.host);\n }\n}\n","@import '../../../global/global.pcss';\n@import '../../common/item-list/styles/mixins.pcss';\n\n:host {\n display: grid;\n}\n\n.list-root.display-table {\n @apply atomic-result-table border-neutral rounded-xl border;\n\n thead tr,\n tbody tr:not(:last-child) {\n position: relative;\n\n &::after {\n content: ' ';\n display: block;\n position: absolute;\n height: 1px;\n bottom: 0;\n left: var(--padding);\n right: var(--padding);\n @apply bg-neutral;\n }\n }\n\n th,\n td {\n border-color: transparent;\n border-radius: initial;\n }\n\n th {\n background-color: transparent;\n }\n}\n","import {Component, h, Prop} from '@stencil/core';\nimport {\n ItemDisplayDensity,\n ItemDisplayImageSize,\n getItemDisplayClasses,\n} from '../../common/layout/display-options';\n\nconst placeholderClasses = 'block bg-neutral rounded';\n\n/**\n * The `atomic-result-table-placeholder` component provides an intermediate visual state that is rendered before the first results are available.\n * @internal\n */\n@Component({\n tag: 'atomic-result-table-placeholder',\n styleUrl: 'atomic-result-table-placeholder.pcss',\n shadow: true,\n})\nexport class AtomicResultTablePlaceholder {\n @Prop() density!: ItemDisplayDensity;\n @Prop() imageSize!: ItemDisplayImageSize;\n @Prop() rows!: number;\n\n private getClasses() {\n return getItemDisplayClasses('table', this.density, this.imageSize);\n }\n\n public render() {\n return (\n <table class={`list-root animate-pulse ${this.getClasses().join(' ')}`}>\n <thead>\n <tr>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '14.5rem'}}\n ></div>\n </th>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '9.75rem'}}\n ></div>\n </th>\n <th>\n <div\n class={`mt-2 h-8 ${placeholderClasses}`}\n style={{width: '6.5rem'}}\n ></div>\n </th>\n </tr>\n </thead>\n <tbody>\n {Array.from({length: this.rows}, () => (\n <tr>\n <td>\n <div\n class={`mb-6 h-8 ${placeholderClasses}`}\n style={{width: '22.875rem'}}\n ></div>\n <div\n class={`mb-2 h-5 ${placeholderClasses}`}\n style={{width: '23.75rem'}}\n ></div>\n <div\n class={`h-5 ${placeholderClasses}`}\n style={{width: '11.5rem'}}\n ></div>\n </td>\n <td>\n <div\n class={`mt-1.5 h-5 ${placeholderClasses}`}\n style={{width: '11rem'}}\n ></div>\n </td>\n <td>\n <div\n class={`mt-1.5 h-5 ${placeholderClasses}`}\n style={{width: '4.875rem'}}\n ></div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n}\n"],"mappings":"0NAAA,MAAMA,EAA6B,i94sBACnC,MAAAC,EAAeD,ECOf,MAAME,EAAqB,yC,MAWdC,EAAuB,M,gGAK1B,iBAAAC,CAAkBC,GACxB,OACEC,EAAA,OACEC,MAAO,CACLC,OAAQ,qBACRH,UAGFC,EAAA,OACEG,MAAOP,EACPK,MAAO,CAACC,OAAQ,sB,CAMjB,MAAAE,GACL,OACEJ,EAAA,OAAAK,IAAA,2CACEF,MAAO,uDAAuDG,EAC5DC,KAAKC,QACLD,KAAKE,QACLF,KAAKG,WAEJC,KAAK,KACLC,UAEHZ,EAAA,gCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAOP,KAEdI,EAAA,gCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,SAASP,OAEvBI,EAAA,iCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,UAAUP,OAExBI,EAAA,+BAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAO,SAASP,OAEvBI,EAAA,iCAAAK,IAAA,4CACGE,KAAKT,kBAAkB,QACvBS,KAAKT,kBAAkB,OACvBS,KAAKT,kBAAkB,QAE1BE,EAAA,yCAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CAAKF,MAAM,sBACRU,MAAMC,KAAK,CAACC,OAAQ,IAAI,IACvBf,EAAA,OACEG,MAAO,2BAA2BP,U,mBCvDrCoB,EAA0B,M,yBAG9B,kBAAAC,GACLC,EAAiBX,KAAKY,K,mCCLbC,EAAyB,M,yBAG7B,kBAAAH,GACLC,EAAiBX,KAAKY,K,mCCHbE,EAAiC,M,yBAGrC,kBAAAJ,GACLC,EAAiBX,KAAKY,K,mCCLbG,EAA0B,M,yBAG9B,kBAAAL,GACLC,EAAiBX,KAAKY,K,mCCJbI,EAAwB,M,yBAG5B,kBAAAN,GACLC,EAAiBX,KAAKY,K,mCCDbK,EAAyB,M,kDAQ7B,kBAAAP,GACLC,EAAiBX,KAAKY,K,6BC5B1B,MAAMM,EAAkC,205EACxC,MAAAC,EAAeD,ECMf,MAAM7B,EAAqB,2B,MAWd+B,EAA4B,M,6FAK/B,UAAAC,GACN,OAAOtB,EAAsB,QAASC,KAAKE,QAASF,KAAKG,U,CAGpD,MAAAN,GACL,OACEJ,EAAA,SAAAK,IAAA,2CAAOF,MAAO,2BAA2BI,KAAKqB,aAAajB,KAAK,QAC9DX,EAAA,SAAAK,IAAA,4CACEL,EAAA,MAAAK,IAAA,4CACEL,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAGnBC,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAGnBC,EAAA,MAAAK,IAAA,4CACEL,EAAA,OAAAK,IAAA,2CACEF,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,eAKvBC,EAAA,SAAAK,IAAA,4CACGQ,MAAMC,KAAK,CAACC,OAAQR,KAAKsB,OAAO,IAC/B7B,EAAA,UACEA,EAAA,UACEA,EAAA,OACEG,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,eAEjBC,EAAA,OACEG,MAAO,YAAYP,IACnBK,MAAO,CAACF,MAAO,cAEjBC,EAAA,OACEG,MAAO,OAAOP,IACdK,MAAO,CAACF,MAAO,cAGnBC,EAAA,UACEA,EAAA,OACEG,MAAO,cAAcP,IACrBK,MAAO,CAACF,MAAO,YAGnBC,EAAA,UACEA,EAAA,OACEG,MAAO,cAAcP,IACrBK,MAAO,CAACF,MAAO,mB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as n,s as t,h as r,g as e}from"./p-dc3df5ce.js";import{m as i}from"./p-05de7ca3.js";import{loadSearchConfigurationActions as a,loadQueryActions as o,EcommerceDefaultFieldsToInclude as l,loadFieldActions as s,buildSearchEngine as c,buildUrlManager as d,buildSearchStatus as h}from"@coveo/headless";import{g as w,d as m,c as p,a as g,b as u,C as v,i as b,m as f}from"./p-ef7ad46a.js";import{a as y,S as x}from"./p-946fe85f.js";import{A as k}from"./p-16f5daf9.js";import{D as z}from"./p-7dd93292.js";import{u as j,s as S,r as F,g as C,w as I,a as A}from"./p-5cafb3fe.js";import"./p-35e58270.js";import"./p-0462f723.js";import"./p-f284897c.js";import"@coveo/bueno";import"./p-0f506869.js";import"./p-c9074946.js";const E="atomic-search-interface";const L=`${E}-no-results`;const M=`${E}-error`;const P=`${E}-search-executed`;function T(n){return`only screen and (min-width: ${n})`}function q(n,t,r){switch(n.analytics?.analyticsMode){case"next":return w(n,t);default:return $(n,t,r)}}function $(n,t,r){const e=(t,e)=>H(t,e,r,n);const i={analyticsClientMiddleware:e,enabled:t,...p()};const a={...m()};if(n.analytics){return{...i,...n.analytics,analyticsClientMiddleware:e,...a}}return{...i,...a}}function H(n,t,r,e){let i=g(n,t,e);i=u(i);i=R(i,r);return i}function R(n,t){const r=t.getAllFacets();const e=(n,t)=>r[n]?r[n].label():t;if(n.facetState){n.facetState=n.facetState.map((n=>{const{id:t,title:r}=n;return{...n,title:e(t,r)}}))}if(n.customData?.facetTitle&&n.customData.facetId&&n.customData.facetTitle){n.customData.facetTitle=e(n.customData.facetId,n.customData.facetTitle)}return n}function U(){const n=A({loadingFlags:[],iconAssetsPath:"",resultList:undefined,mobileBreakpoint:z,facets:{},numericFacets:{},dateFacets:{},categoryFacets:{},facetElements:[],fieldsToInclude:[],sortOptions:[]});return{...n,unsetLoadingFlag(t){j(n,t)},setLoadingFlag(t){S(n,t)},isMobile(){return!window.matchMedia(T(n.state.mobileBreakpoint)).matches},registerFacet(t,r){F(n,t,r)},getFacetElements(){return C(n)},waitUntilAppLoaded(t){I(n,t)},getUniqueIDFromEngine(n){return n.state.search.response.searchUid},hasLoadingFlag(t){return n.state.loadingFlags.indexOf(t)!==-1},getAllFacets(){return{...n.state.facets,...n.state.dateFacets,...n.state.categoryFacets,...n.state.numericFacets}},addFieldsToInclude(t){const r=n.state.fieldsToInclude;n.state.fieldsToInclude=[...r,...t]}}}const D='/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer properties {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-content: "";\n }\n}\n@layer theme, base, components, utilities;\n@layer theme;\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, var(--atomic-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"));\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n }\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .\\@container {\n container-type: inline-size;\n }\n .pointer-events-auto {\n pointer-events: auto;\n }\n .pointer-events-none {\n pointer-events: none;\n }\n .collapse {\n visibility: collapse;\n }\n .invisible {\n visibility: hidden;\n }\n .visible {\n visibility: visible;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .static {\n position: static;\n }\n .sticky {\n position: sticky;\n }\n .-top-2 {\n top: calc(0.25rem * -2);\n }\n .-top-4 {\n top: calc(0.25rem * -4);\n }\n .top-0 {\n top: calc(0.25rem * 0);\n }\n .top-1\\/2 {\n top: calc(1/2 * 100%);\n }\n .top-6 {\n top: calc(0.25rem * 6);\n }\n .top-\\[4px\\] {\n top: 4px;\n }\n .top-full {\n top: 100%;\n }\n .top-px {\n top: 1px;\n }\n .-right-2 {\n right: calc(0.25rem * -2);\n }\n .right-0 {\n right: calc(0.25rem * 0);\n }\n .right-2 {\n right: calc(0.25rem * 2);\n }\n .right-6 {\n right: calc(0.25rem * 6);\n }\n .right-12 {\n right: calc(0.25rem * 12);\n }\n .right-20 {\n right: calc(0.25rem * 20);\n }\n .right-px {\n right: 1px;\n }\n .bottom-0 {\n bottom: calc(0.25rem * 0);\n }\n .bottom-1 {\n bottom: calc(0.25rem * 1);\n }\n .bottom-2 {\n bottom: calc(0.25rem * 2);\n }\n .bottom-px {\n bottom: 1px;\n }\n .left-0 {\n left: calc(0.25rem * 0);\n }\n .left-1 {\n left: calc(0.25rem * 1);\n }\n .left-2 {\n left: calc(0.25rem * 2);\n }\n .left-\\[15px\\] {\n left: 15px;\n }\n .isolate {\n isolation: isolate;\n }\n .z-0 {\n z-index: 0;\n }\n .z-1 {\n z-index: 1;\n }\n .z-10 {\n z-index: 10;\n }\n .z-9998 {\n z-index: 9998;\n }\n .z-9999 {\n z-index: 9999;\n }\n .order-last {\n order: 9999;\n }\n .col-span-2 {\n grid-column: span 2 / span 2;\n }\n .container {\n width: 100%;\n }\n @media (width >= 1024px) {\n .container {\n max-width: 1024px;\n }\n }\n @media (width >= 40rem) {\n .container {\n max-width: 40rem;\n }\n }\n @media (width >= 48rem) {\n .container {\n max-width: 48rem;\n }\n }\n @media (width >= 64rem) {\n .container {\n max-width: 64rem;\n }\n }\n @media (width >= 80rem) {\n .container {\n max-width: 80rem;\n }\n }\n @media (width >= 96rem) {\n .container {\n max-width: 96rem;\n }\n }\n .m-0 {\n margin: calc(0.25rem * 0);\n }\n .m-2 {\n margin: calc(0.25rem * 2);\n }\n .mx-0 {\n margin-inline: calc(0.25rem * 0);\n }\n .mx-0\\.5 {\n margin-inline: calc(0.25rem * 0.5);\n }\n .mx-1 {\n margin-inline: calc(0.25rem * 1);\n }\n .mx-6 {\n margin-inline: calc(0.25rem * 6);\n }\n .mx-16 {\n margin-inline: calc(0.25rem * 16);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-2 {\n margin-block: calc(0.25rem * 2);\n }\n .my-3 {\n margin-block: calc(0.25rem * 3);\n }\n .my-4 {\n margin-block: calc(0.25rem * 4);\n }\n .my-6 {\n margin-block: calc(0.25rem * 6);\n }\n .my-auto {\n margin-block: auto;\n }\n .mt-0 {\n margin-top: calc(0.25rem * 0);\n }\n .mt-1 {\n margin-top: calc(0.25rem * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(0.25rem * 1.5);\n }\n .mt-2 {\n margin-top: calc(0.25rem * 2);\n }\n .mt-2\\.5 {\n margin-top: calc(0.25rem * 2.5);\n }\n .mt-3 {\n margin-top: calc(0.25rem * 3);\n }\n .mt-4 {\n margin-top: calc(0.25rem * 4);\n }\n .mt-6 {\n margin-top: calc(0.25rem * 6);\n }\n .mt-7 {\n margin-top: calc(0.25rem * 7);\n }\n .mt-8 {\n margin-top: calc(0.25rem * 8);\n }\n .mt-10 {\n margin-top: calc(0.25rem * 10);\n }\n .mt-px {\n margin-top: 1px;\n }\n .mr-0 {\n margin-right: calc(0.25rem * 0);\n }\n .mr-0\\.5 {\n margin-right: calc(0.25rem * 0.5);\n }\n .mr-1 {\n margin-right: calc(0.25rem * 1);\n }\n .mr-1\\.5 {\n margin-right: calc(0.25rem * 1.5);\n }\n .mr-2 {\n margin-right: calc(0.25rem * 2);\n }\n .mr-3 {\n margin-right: calc(0.25rem * 3);\n }\n .mr-6 {\n margin-right: calc(0.25rem * 6);\n }\n .mb-0 {\n margin-bottom: calc(0.25rem * 0);\n }\n .mb-1 {\n margin-bottom: calc(0.25rem * 1);\n }\n .mb-2 {\n margin-bottom: calc(0.25rem * 2);\n }\n .mb-3 {\n margin-bottom: calc(0.25rem * 3);\n }\n .mb-4 {\n margin-bottom: calc(0.25rem * 4);\n }\n .mb-6 {\n margin-bottom: calc(0.25rem * 6);\n }\n .ml-0\\.5 {\n margin-left: calc(0.25rem * 0.5);\n }\n .ml-1 {\n margin-left: calc(0.25rem * 1);\n }\n .ml-2 {\n margin-left: calc(0.25rem * 2);\n }\n .ml-4 {\n margin-left: calc(0.25rem * 4);\n }\n .ml-6 {\n margin-left: calc(0.25rem * 6);\n }\n .ml-auto {\n margin-left: auto;\n }\n .box-border {\n box-sizing: border-box;\n }\n .box-content {\n box-sizing: content-box;\n }\n .line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n .line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n .line-clamp-3 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n }\n .line-clamp-4 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n }\n .line-clamp-none {\n overflow: visible;\n display: block;\n -webkit-box-orient: horizontal;\n -webkit-line-clamp: unset;\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .hidden {\n display: none;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .table {\n display: table;\n }\n .aspect-square {\n aspect-ratio: 1 / 1;\n }\n .size-\\[27px\\] {\n width: 27px;\n height: 27px;\n }\n .h-1 {\n height: calc(0.25rem * 1);\n }\n .h-2 {\n height: calc(0.25rem * 2);\n }\n .h-2\\.5 {\n height: calc(0.25rem * 2.5);\n }\n .h-3 {\n height: calc(0.25rem * 3);\n }\n .h-4 {\n height: calc(0.25rem * 4);\n }\n .h-5 {\n height: calc(0.25rem * 5);\n }\n .h-5\\/6 {\n height: calc(5/6 * 100%);\n }\n .h-6 {\n height: calc(0.25rem * 6);\n }\n .h-7 {\n height: calc(0.25rem * 7);\n }\n .h-8 {\n height: calc(0.25rem * 8);\n }\n .h-9 {\n height: calc(0.25rem * 9);\n }\n .h-10 {\n height: calc(0.25rem * 10);\n }\n .h-12 {\n height: calc(0.25rem * 12);\n }\n .h-\\[2\\.6rem\\] {\n height: 2.6rem;\n }\n .h-\\[9px\\] {\n height: 9px;\n }\n .h-auto {\n height: auto;\n }\n .h-full {\n height: 100%;\n }\n .max-h-96 {\n max-height: calc(0.25rem * 96);\n }\n .min-h-10 {\n min-height: calc(0.25rem * 10);\n }\n .w-0\\.5 {\n width: calc(0.25rem * 0.5);\n }\n .w-1 {\n width: calc(0.25rem * 1);\n }\n .w-1\\/2 {\n width: calc(1/2 * 100%);\n }\n .w-2 {\n width: calc(0.25rem * 2);\n }\n .w-2\\.5 {\n width: calc(0.25rem * 2.5);\n }\n .w-3 {\n width: calc(0.25rem * 3);\n }\n .w-3\\.5 {\n width: calc(0.25rem * 3.5);\n }\n .w-3\\/5 {\n width: calc(3/5 * 100%);\n }\n .w-4 {\n width: calc(0.25rem * 4);\n }\n .w-5 {\n width: calc(0.25rem * 5);\n }\n .w-5\\/6 {\n width: calc(5/6 * 100%);\n }\n .w-6 {\n width: calc(0.25rem * 6);\n }\n .w-7 {\n width: calc(0.25rem * 7);\n }\n .w-8 {\n width: calc(0.25rem * 8);\n }\n .w-9 {\n width: calc(0.25rem * 9);\n }\n .w-10 {\n width: calc(0.25rem * 10);\n }\n .w-12 {\n width: calc(0.25rem * 12);\n }\n .w-20 {\n width: calc(0.25rem * 20);\n }\n .w-26 {\n width: calc(0.25rem * 26);\n }\n .w-28 {\n width: calc(0.25rem * 28);\n }\n .w-32 {\n width: calc(0.25rem * 32);\n }\n .w-36 {\n width: calc(0.25rem * 36);\n }\n .w-44 {\n width: calc(0.25rem * 44);\n }\n .w-48 {\n width: calc(0.25rem * 48);\n }\n .w-60 {\n width: calc(0.25rem * 60);\n }\n .w-64 {\n width: calc(0.25rem * 64);\n }\n .w-72 {\n width: calc(0.25rem * 72);\n }\n .w-100 {\n width: calc(0.25rem * 100);\n }\n .w-\\[2\\.6rem\\] {\n width: 2.6rem;\n }\n .w-auto {\n width: auto;\n }\n .w-fit {\n width: fit-content;\n }\n .w-full {\n width: 100%;\n }\n .w-max {\n width: max-content;\n }\n .max-w-4\\/5 {\n max-width: calc(4/5 * 100%);\n }\n .max-w-60 {\n max-width: calc(0.25rem * 60);\n }\n .max-w-\\[30ch\\] {\n max-width: 30ch;\n }\n .max-w-full {\n max-width: 100%;\n }\n .max-w-lg {\n max-width: 32rem;\n }\n .max-w-max {\n max-width: max-content;\n }\n .min-w-0 {\n min-width: calc(0.25rem * 0);\n }\n .min-w-10 {\n min-width: calc(0.25rem * 10);\n }\n .min-w-20 {\n min-width: calc(0.25rem * 20);\n }\n .min-w-24 {\n min-width: calc(0.25rem * 24);\n }\n .min-w-full {\n min-width: 100%;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-none {\n flex: none;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .flex-grow {\n flex-grow: 1;\n }\n .grow {\n flex-grow: 1;\n }\n .basis-1\\/2 {\n flex-basis: calc(1/2 * 100%);\n }\n .basis-8 {\n flex-basis: calc(0.25rem * 8);\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-1\\/2 {\n --tw-translate-x: calc(1/2 * 100%);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1/2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .scale-75 {\n --tw-scale-x: 75%;\n --tw-scale-y: 75%;\n --tw-scale-z: 75%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .scale-100 {\n --tw-scale-x: 100%;\n --tw-scale-y: 100%;\n --tw-scale-z: 100%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n .rotate-180 {\n rotate: 180deg;\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .animate-pulse {\n animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n .animate-spin {\n animation: spin 1s linear infinite;\n }\n .cursor-\\[inherit\\] {\n cursor: inherit;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .resize {\n resize: both;\n }\n .resize-none {\n resize: none;\n }\n .list-outside {\n list-style-position: outside;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .list-none {\n list-style-type: none;\n }\n .appearance-none {\n appearance: none;\n }\n .grid-cols-\\[min-content_1fr\\] {\n grid-template-columns: min-content 1fr;\n }\n .grid-cols-\\[min-content_auto\\] {\n grid-template-columns: min-content auto;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-row {\n flex-direction: row;\n }\n .flex-nowrap {\n flex-wrap: nowrap;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .place-items-center {\n place-items: center;\n }\n .content-center {\n align-content: center;\n }\n .items-baseline {\n align-items: baseline;\n }\n .items-center {\n align-items: center;\n }\n .items-start {\n align-items: flex-start;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-0\\.5 {\n gap: calc(0.25rem * 0.5);\n }\n .gap-1 {\n gap: calc(0.25rem * 1);\n }\n .gap-2 {\n gap: calc(0.25rem * 2);\n }\n .gap-3 {\n gap: calc(0.25rem * 3);\n }\n .gap-4 {\n gap: calc(0.25rem * 4);\n }\n .gap-8 {\n gap: calc(0.25rem * 8);\n }\n :where(.space-y-1 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(0.25rem * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(0.25rem * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n .gap-x-1\\.5 {\n column-gap: calc(0.25rem * 1.5);\n }\n .gap-x-2 {\n column-gap: calc(0.25rem * 2);\n }\n .gap-x-4 {\n column-gap: calc(0.25rem * 4);\n }\n :where(.space-x-1\\.5 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(0.25rem * 1.5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(0.25rem * 1.5) * calc(1 - var(--tw-space-x-reverse)));\n }\n .gap-y-0\\.5 {\n row-gap: calc(0.25rem * 0.5);\n }\n :where(.divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n :where(.divide-neutral > :not(:last-child)) {\n border-color: var(--atomic-neutral);\n }\n .self-center {\n align-self: center;\n }\n .self-start {\n align-self: flex-start;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-x-auto {\n overflow-x: auto;\n }\n .overflow-x-clip {\n overflow-x: clip;\n }\n .overflow-x-scroll {\n overflow-x: scroll;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .overflow-y-visible {\n overflow-y: visible;\n }\n .scroll-smooth {\n scroll-behavior: smooth;\n }\n .rounded {\n border-radius: var(--atomic-border-radius);\n }\n .rounded-3xl {\n border-radius: 1.5rem;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--atomic-border-radius-lg);\n }\n .rounded-md {\n border-radius: var(--atomic-border-radius-md);\n }\n .rounded-none {\n border-radius: 0;\n }\n .rounded-sm {\n border-radius: var(--atomic-border-radius);\n }\n .rounded-xl {\n border-radius: var(--atomic-border-radius-xl);\n }\n .rounded-tl-none {\n border-top-left-radius: 0;\n }\n .rounded-r-none {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-gray-200 {\n border-color: oklch(0.928 0.006 264.531);\n }\n .border-neutral {\n border-color: var(--atomic-neutral);\n }\n .border-neutral-dark {\n border-color: var(--atomic-neutral-dark);\n }\n .border-neutral-dim {\n border-color: var(--atomic-neutral-dim);\n }\n .border-primary {\n border-color: var(--atomic-primary);\n }\n .border-primary-light {\n border-color: var(--atomic-primary-light);\n }\n .border-t-neutral {\n border-top-color: var(--atomic-neutral);\n }\n .border-b-neutral {\n border-bottom-color: var(--atomic-neutral);\n }\n .border-b-neutral-dim {\n border-bottom-color: var(--atomic-neutral-dim);\n }\n .border-l-neutral {\n border-left-color: var(--atomic-neutral);\n }\n .border-l-neutral-dim {\n border-left-color: var(--atomic-neutral-dim);\n }\n .bg-\\[\\#F1F2FF\\] {\n background-color: #F1F2FF;\n }\n .bg-background {\n background-color: var(--atomic-background);\n }\n .bg-error {\n background-color: var(--atomic-error);\n }\n .bg-gray-50 {\n background-color: oklch(0.985 0.002 247.839);\n }\n .bg-neutral {\n background-color: var(--atomic-neutral);\n }\n .bg-neutral-dark {\n background-color: var(--atomic-neutral-dark);\n }\n .bg-neutral-light {\n background-color: var(--atomic-neutral-light);\n }\n .bg-primary {\n background-color: var(--atomic-primary);\n }\n .bg-primary-background {\n background-color: var(--atomic-primary-background);\n }\n .bg-transparent {\n background-color: transparent;\n }\n .bg-white {\n background-color: #fff;\n }\n .bg-linear-to-l {\n --tw-gradient-position: to left;\n }\n @supports (background-image: linear-gradient(in lab, red, red)) {\n .bg-linear-to-l {\n --tw-gradient-position: to left in oklab;\n }\n }\n .bg-linear-to-l {\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .bg-linear-to-r {\n --tw-gradient-position: to right;\n }\n @supports (background-image: linear-gradient(in lab, red, red)) {\n .bg-linear-to-r {\n --tw-gradient-position: to right in oklab;\n }\n }\n .bg-linear-to-r {\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n .from-background\\/60 {\n --tw-gradient-from: color-mix(in srgb, #ffffff 60%, transparent);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .from-background\\/60 {\n --tw-gradient-from: color-mix(in oklab, var(--atomic-background) 60%, transparent);\n }\n }\n .from-background\\/60 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .from-more-results-progress-bar-color-from {\n --tw-gradient-from: var(\n --atomic-more-results-progress-bar-color-from,\n var(--atomic-primary-dark)\n );\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .to-more-results-progress-bar-color-to {\n --tw-gradient-to: var(\n --atomic-more-results-progress-bar-color-to,\n var(--atomic-primary-light)\n );\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n .fill-current {\n fill: currentcolor;\n }\n .stroke-\\[1\\.25\\] {\n stroke-width: 1.25;\n }\n .object-contain {\n object-fit: contain;\n }\n .p-0 {\n padding: calc(0.25rem * 0);\n }\n .p-1 {\n padding: calc(0.25rem * 1);\n }\n .p-2 {\n padding: calc(0.25rem * 2);\n }\n .p-2\\.5 {\n padding: calc(0.25rem * 2.5);\n }\n .p-3 {\n padding: calc(0.25rem * 3);\n }\n .p-3\\.5 {\n padding: calc(0.25rem * 3.5);\n }\n .p-4 {\n padding: calc(0.25rem * 4);\n }\n .p-6 {\n padding: calc(0.25rem * 6);\n }\n .p-7 {\n padding: calc(0.25rem * 7);\n }\n .p-8 {\n padding: calc(0.25rem * 8);\n }\n .px-1 {\n padding-inline: calc(0.25rem * 1);\n }\n .px-2 {\n padding-inline: calc(0.25rem * 2);\n }\n .px-2\\.5 {\n padding-inline: calc(0.25rem * 2.5);\n }\n .px-3 {\n padding-inline: calc(0.25rem * 3);\n }\n .px-4 {\n padding-inline: calc(0.25rem * 4);\n }\n .px-6 {\n padding-inline: calc(0.25rem * 6);\n }\n .px-9 {\n padding-inline: calc(0.25rem * 9);\n }\n .py-0\\.5 {\n padding-block: calc(0.25rem * 0.5);\n }\n .py-1 {\n padding-block: calc(0.25rem * 1);\n }\n .py-1\\.5 {\n padding-block: calc(0.25rem * 1.5);\n }\n .py-2 {\n padding-block: calc(0.25rem * 2);\n }\n .py-2\\.5 {\n padding-block: calc(0.25rem * 2.5);\n }\n .py-3 {\n padding-block: calc(0.25rem * 3);\n }\n .py-3\\.5 {\n padding-block: calc(0.25rem * 3.5);\n }\n .py-4 {\n padding-block: calc(0.25rem * 4);\n }\n .py-5 {\n padding-block: calc(0.25rem * 5);\n }\n .pt-0\\.5 {\n padding-top: calc(0.25rem * 0.5);\n }\n .pt-8 {\n padding-top: calc(0.25rem * 8);\n }\n .pr-2 {\n padding-right: calc(0.25rem * 2);\n }\n .pr-6 {\n padding-right: calc(0.25rem * 6);\n }\n .pr-24 {\n padding-right: calc(0.25rem * 24);\n }\n .pb-1 {\n padding-bottom: calc(0.25rem * 1);\n }\n .pb-3 {\n padding-bottom: calc(0.25rem * 3);\n }\n .pb-4 {\n padding-bottom: calc(0.25rem * 4);\n }\n .pb-6 {\n padding-bottom: calc(0.25rem * 6);\n }\n .pl-0 {\n padding-left: calc(0.25rem * 0);\n }\n .pl-1 {\n padding-left: calc(0.25rem * 1);\n }\n .pl-3 {\n padding-left: calc(0.25rem * 3);\n }\n .pl-7 {\n padding-left: calc(0.25rem * 7);\n }\n .pl-9 {\n padding-left: calc(0.25rem * 9);\n }\n .pl-10 {\n padding-left: calc(0.25rem * 10);\n }\n .text-center {\n text-align: center;\n }\n .text-left {\n text-align: left;\n }\n .align-baseline {\n vertical-align: baseline;\n }\n .align-bottom {\n vertical-align: bottom;\n }\n .align-middle {\n vertical-align: middle;\n }\n .font-sans {\n font-family: var(--atomic-font-family);\n }\n .set-font-size-sm {\n --font-size: var(--atomic-text-sm);\n font-size: var(--font-size);\n --line-height: calc(var(--font-size) * var(--atomic-line-height-ratio));\n line-height: var(--line-height);\n }\n .set-font-size-sm {\n --font-size: var(--atomic-text-sm);\n font-size: var(--font-size);\n --line-height: calc(var(--font-size) * var(--atomic-line-height-ratio));\n line-height: var(--line-height);\n }\n .text-2xl {\n font-size: var(--atomic-text-2xl);\n line-height: var(--tw-leading, calc(2 / 1.5));\n }\n .text-base {\n font-size: var(--atomic-text-base);\n line-height: var(--tw-leading, calc(1.5 / 1));\n }\n .text-lg {\n font-size: var(--atomic-text-lg);\n line-height: var(--tw-leading, calc(1.75 / 1.125));\n }\n .text-sm {\n font-size: var(--atomic-text-sm);\n line-height: var(--tw-leading, calc(1.25 / 0.875));\n }\n .text-xl {\n font-size: var(--atomic-text-xl);\n line-height: var(--tw-leading, calc(1.75 / 1.25));\n }\n .text-xs {\n font-size: 0.75rem;\n line-height: var(--tw-leading, calc(1 / 0.75));\n }\n .text-xs\\/\\[1rem\\] {\n font-size: 0.75rem;\n line-height: 1rem;\n }\n .leading-4 {\n --tw-leading: calc(0.25rem * 4);\n line-height: calc(0.25rem * 4);\n }\n .leading-5 {\n --tw-leading: calc(0.25rem * 5);\n line-height: calc(0.25rem * 5);\n }\n .leading-6 {\n --tw-leading: calc(0.25rem * 6);\n line-height: calc(0.25rem * 6);\n }\n .leading-8 {\n --tw-leading: calc(0.25rem * 8);\n line-height: calc(0.25rem * 8);\n }\n .leading-10 {\n --tw-leading: calc(0.25rem * 10);\n line-height: calc(0.25rem * 10);\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[calc\\(1\\/\\.75\\)\\] {\n --tw-leading: calc(1 / .75);\n line-height: calc(1 / .75);\n }\n .leading-\\[var\\(--line-height\\)\\] {\n --tw-leading: var(--line-height);\n line-height: var(--line-height);\n }\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .font-bold {\n --tw-font-weight: var(--atomic-font-bold);\n font-weight: var(--atomic-font-bold);\n }\n .font-light {\n --tw-font-weight: 300;\n font-weight: 300;\n }\n .font-medium {\n --tw-font-weight: 500;\n font-weight: 500;\n }\n .font-normal {\n --tw-font-weight: var(--atomic-font-normal);\n font-weight: var(--atomic-font-normal);\n }\n .font-semibold {\n --tw-font-weight: 600;\n font-weight: 600;\n }\n .break-words {\n overflow-wrap: break-word;\n }\n .break-all {\n word-break: break-all;\n }\n .break-keep {\n word-break: keep-all;\n }\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n .whitespace-normal {\n white-space: normal;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .text-\\[\\#54698D\\] {\n color: #54698D;\n }\n .text-\\[inherit\\] {\n color: inherit;\n }\n .text-black {\n color: #000;\n }\n .text-error {\n color: var(--atomic-error);\n }\n .text-gray-500 {\n color: oklch(0.551 0.027 264.364);\n }\n .text-gray-600 {\n color: oklch(0.446 0.03 256.802);\n }\n .text-gray-700 {\n color: oklch(0.373 0.034 259.733);\n }\n .text-gray-900 {\n color: oklch(0.21 0.034 264.665);\n }\n .text-green-600 {\n color: oklch(0.627 0.194 149.214);\n }\n .text-inline-code {\n color: var(--atomic-inline-code);\n }\n .text-neutral {\n color: var(--atomic-neutral);\n }\n .text-neutral-dark {\n color: var(--atomic-neutral-dark);\n }\n .text-on-background {\n color: var(--atomic-on-background);\n }\n .text-on-primary {\n color: var(--atomic-on-primary);\n }\n .text-primary {\n color: var(--atomic-primary);\n }\n .text-primary-light {\n color: var(--atomic-primary-light);\n }\n .text-rating-icon-active {\n color: var(--atomic-rating-icon-active-color, #f6ce3c);\n }\n .text-rating-icon-inactive {\n color: var(\n --atomic-rating-icon-inactive-color,\n var(--atomic-neutral)\n );\n }\n .text-success {\n color: var(--atomic-success);\n }\n .text-transparent {\n color: transparent;\n }\n .capitalize {\n text-transform: capitalize;\n }\n .lowercase {\n text-transform: lowercase;\n }\n .italic {\n font-style: italic;\n }\n .line-through {\n text-decoration-line: line-through;\n }\n .placeholder-neutral-dark::placeholder {\n color: var(--atomic-neutral-dark);\n }\n .opacity-0 {\n opacity: 0%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-inner-primary {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--atomic-primary));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0px 2px 8px var(--tw-shadow-color, rgba(229, 232, 232, 0.75));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-t-lg {\n --tw-shadow: 0px -2px 8px var(--tw-shadow-color, rgba(229, 232, 232, 0.75));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-3 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-primary {\n --tw-ring-color: var(--atomic-primary);\n }\n .ring-primary-light {\n --tw-ring-color: var(--atomic-primary-light);\n }\n .ring-ring-primary {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .outline-error {\n outline-color: var(--atomic-error);\n }\n .outline-neutral {\n outline-color: var(--atomic-neutral);\n }\n .outline-primary {\n outline-color: var(--atomic-primary);\n }\n .blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .invert {\n --tw-invert: invert(100%);\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .filter {\n filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);\n }\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));\n transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));\n }\n .transition-\\[visibility\\] {\n transition-property: visibility;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));\n transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));\n }\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));\n transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));\n }\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));\n transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));\n }\n .duration-200 {\n --tw-duration: 200ms;\n transition-duration: 200ms;\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: cubic-bezier(0.4, 0, 0.2, 1);\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n }\n .\\[scrollbar-gutter\\:stable_both-edges\\] {\n scrollbar-gutter: stable both-edges;\n }\n @media (hover: hover) {\n .group-hover\\:visible:is(:where(.group):hover *) {\n visibility: visible;\n }\n }\n @media (hover: hover) {\n .group-hover\\:text-error:is(:where(.group):hover *) {\n color: var(--atomic-error);\n }\n }\n @media (hover: hover) {\n .group-hover\\:text-primary:is(:where(.group):hover *) {\n color: var(--atomic-primary);\n }\n }\n @media (hover: hover) {\n .group-hover\\:text-primary-light:is(:where(.group):hover *) {\n color: var(--atomic-primary-light);\n }\n }\n .group-focus\\:text-primary:is(:where(.group):focus *) {\n color: var(--atomic-primary);\n }\n .group-focus\\:text-primary-light:is(:where(.group):focus *) {\n color: var(--atomic-primary-light);\n }\n .group-focus-visible\\:text-error:is(:where(.group):focus-visible *) {\n color: var(--atomic-error);\n }\n .group-focus-visible\\:text-primary:is(:where(.group):focus-visible *) {\n color: var(--atomic-primary);\n }\n .peer-focus-within\\:border-primary-light:is(:where(.peer):focus-within ~ *) {\n border-color: var(--atomic-primary-light);\n }\n .peer-focus-within\\:text-primary-light:is(:where(.peer):focus-within ~ *) {\n color: var(--atomic-primary-light);\n }\n @media (hover: hover) {\n .peer-hover\\:border-primary-light:is(:where(.peer):hover ~ *) {\n border-color: var(--atomic-primary-light);\n }\n }\n @media (hover: hover) {\n .peer-hover\\:text-error:is(:where(.peer):hover ~ *) {\n color: var(--atomic-error);\n }\n }\n @media (hover: hover) {\n .peer-hover\\:text-primary-light:is(:where(.peer):hover ~ *) {\n color: var(--atomic-primary-light);\n }\n }\n .before\\:inline::before {\n content: var(--tw-content);\n display: inline;\n }\n .before\\:content-\\[\\\'\\,\\\\00a0\\\'\\]::before {\n content: var(--tw-content);\n --tw-content: \',\\00a0\';\n content: var(--tw-content);\n }\n .after\\:absolute::after {\n content: var(--tw-content);\n position: absolute;\n }\n .after\\:-bottom-0\\.5::after {\n content: var(--tw-content);\n bottom: calc(0.25rem * -0.5);\n }\n .after\\:block::after {\n content: var(--tw-content);\n display: block;\n }\n .after\\:h-1::after {\n content: var(--tw-content);\n height: calc(0.25rem * 1);\n }\n .after\\:w-full::after {\n content: var(--tw-content);\n width: 100%;\n }\n .after\\:rounded::after {\n content: var(--tw-content);\n border-radius: var(--atomic-border-radius);\n }\n .after\\:bg-primary::after {\n content: var(--tw-content);\n background-color: var(--atomic-primary);\n }\n .focus-within\\:border-disabled:focus-within {\n border-color: var(--atomic-disabled);\n }\n .focus-within\\:border-primary:focus-within {\n border-color: var(--atomic-primary);\n }\n .focus-within\\:ring-3:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .focus-within\\:ring-neutral:focus-within {\n --tw-ring-color: var(--atomic-neutral);\n }\n .focus-within\\:ring-ring-primary:focus-within {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n @media (hover: hover) {\n .hover\\:border:hover {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n @media (hover: hover) {\n .hover\\:border-error:hover {\n border-color: var(--atomic-error);\n }\n }\n @media (hover: hover) {\n .hover\\:border-primary-light:hover {\n border-color: var(--atomic-primary-light);\n }\n }\n @media (hover: hover) {\n .hover\\:bg-error:hover {\n background-color: var(--atomic-error);\n }\n }\n @media (hover: hover) {\n .hover\\:bg-neutral-light:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n @media (hover: hover) {\n .hover\\:bg-primary-light:hover {\n background-color: var(--atomic-primary-light);\n }\n }\n @media (hover: hover) {\n .hover\\:bg-transparent:hover {\n background-color: transparent;\n }\n }\n @media (hover: hover) {\n .hover\\:fill-white:hover {\n fill: #fff;\n }\n }\n @media (hover: hover) {\n .hover\\:text-primary-light:hover {\n color: var(--atomic-primary-light);\n }\n }\n @media (hover: hover) {\n .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n }\n @media (hover: hover) {\n .hover\\:opacity-100:hover {\n opacity: 100%;\n }\n }\n @media (hover: hover) {\n .hover\\:shadow-sm:hover {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:opacity-100:focus {\n opacity: 100%;\n }\n .focus\\:outline-hidden:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n @media (forced-colors: active) {\n .focus\\:outline-hidden:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n .focus-visible\\:border:focus-visible {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .focus-visible\\:border-error:focus-visible {\n border-color: var(--atomic-error);\n }\n .focus-visible\\:border-primary:focus-visible {\n border-color: var(--atomic-primary);\n }\n .focus-visible\\:border-primary-light:focus-visible {\n border-color: var(--atomic-primary-light);\n }\n .focus-visible\\:bg-error:focus-visible {\n background-color: var(--atomic-error);\n }\n .focus-visible\\:bg-neutral-light:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .focus-visible\\:bg-primary-light:focus-visible {\n background-color: var(--atomic-primary-light);\n }\n .focus-visible\\:text-primary-light:focus-visible {\n color: var(--atomic-primary-light);\n }\n .focus-visible\\:underline:focus-visible {\n text-decoration-line: underline;\n }\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .focus-visible\\:outline-none:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n @media (width >= 40rem) {\n .sm\\:px-6 {\n padding-inline: calc(0.25rem * 6);\n }\n }\n .\\[part\\=\\"breadcrumb-button\\"\\]\\:visible:is(part="breadcrumb-button") {\n visibility: visible;\n }\n}\n@layer theme, base, components, utilities;\n@layer components {\n .input-primary {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n }\n @media (hover: hover) {\n .input-primary:hover {\n border-color: var(--atomic-primary-light);\n }\n }\n .input-primary:focus-visible {\n border-color: var(--atomic-primary);\n }\n .input-primary:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .input-primary:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .input-primary:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-radio {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n .btn-radio::before {\n content: var(--tw-content);\n --tw-content: attr(value);\n content: var(--tw-content);\n }\n .btn-primary {\n border-radius: var(--atomic-border-radius);\n background-color: var(--atomic-primary);\n color: var(--atomic-on-primary);\n }\n @media (hover: hover) {\n .btn-primary:hover {\n background-color: var(--atomic-primary-light);\n }\n }\n .btn-primary:focus-visible {\n background-color: var(--atomic-primary-light);\n }\n .btn-primary:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-primary:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-primary:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-primary:disabled {\n cursor: not-allowed;\n }\n .btn-primary:disabled {\n background-color: var(--atomic-disabled);\n }\n .btn-outline-primary {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-primary);\n }\n @media (hover: hover) {\n .btn-outline-primary:hover {\n border-color: var(--atomic-primary-light);\n }\n }\n @media (hover: hover) {\n .btn-outline-primary:hover {\n color: var(--atomic-primary-light);\n }\n }\n .btn-outline-primary:focus-visible {\n border-color: var(--atomic-primary);\n }\n .btn-outline-primary:focus-visible {\n color: var(--atomic-primary);\n }\n .btn-outline-primary:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-outline-primary:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-outline-primary:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-primary:disabled {\n cursor: not-allowed;\n }\n .btn-outline-primary:disabled {\n border-color: var(--atomic-neutral);\n }\n .btn-outline-primary:disabled {\n color: var(--atomic-neutral);\n }\n .btn-text-primary {\n border-radius: var(--atomic-border-radius);\n background-color: var(--atomic-background);\n color: var(--atomic-primary);\n }\n @media (hover: hover) {\n .btn-text-primary:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n .btn-text-primary:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .btn-text-primary:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-neutral {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-outline-neutral:hover {\n border-color: var(--atomic-primary);\n }\n }\n @media (hover: hover) {\n .btn-outline-neutral:hover {\n color: var(--atomic-primary);\n }\n }\n .btn-outline-neutral:focus-visible {\n border-color: var(--atomic-primary);\n }\n .btn-outline-neutral:focus-visible {\n color: var(--atomic-primary);\n }\n .btn-outline-neutral:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-outline-neutral:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-outline-neutral:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-neutral:disabled {\n cursor: not-allowed;\n }\n .btn-outline-neutral:disabled {\n border-color: var(--atomic-neutral);\n }\n .btn-outline-neutral:disabled {\n color: var(--atomic-on-background);\n }\n .btn-outline-neutral:disabled {\n opacity: 50%;\n }\n .btn-outline-bg-neutral {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-outline-bg-neutral:hover {\n border-color: var(--atomic-primary);\n }\n }\n @media (hover: hover) {\n .btn-outline-bg-neutral:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n @media (hover: hover) {\n .btn-outline-bg-neutral:hover {\n color: var(--atomic-primary);\n }\n }\n .btn-outline-bg-neutral:focus-visible {\n border-color: var(--atomic-primary);\n }\n .btn-outline-bg-neutral:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .btn-outline-bg-neutral:focus-visible {\n color: var(--atomic-primary);\n }\n .btn-outline-bg-neutral:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-outline-bg-neutral:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-outline-bg-neutral:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-bg-neutral:disabled {\n cursor: not-allowed;\n }\n .btn-outline-bg-neutral:disabled {\n border-color: var(--atomic-neutral);\n }\n .btn-outline-bg-neutral:disabled {\n color: var(--atomic-on-background);\n }\n .btn-outline-bg-neutral:disabled {\n opacity: 50%;\n }\n .btn-outline-bg-error {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-outline-bg-error:hover {\n border-color: var(--atomic-primary);\n }\n }\n @media (hover: hover) {\n .btn-outline-bg-error:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n @media (hover: hover) {\n .btn-outline-bg-error:hover {\n color: var(--atomic-primary);\n }\n }\n .btn-outline-bg-error:focus-visible {\n border-color: var(--atomic-primary);\n }\n .btn-outline-bg-error:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .btn-outline-bg-error:focus-visible {\n color: var(--atomic-primary);\n }\n .btn-outline-bg-error:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-outline-bg-error:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-outline-bg-error:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-bg-error:disabled {\n cursor: not-allowed;\n }\n .btn-outline-bg-error:disabled {\n border-color: var(--atomic-neutral);\n }\n .btn-outline-bg-error:disabled {\n color: var(--atomic-on-background);\n }\n .btn-outline-bg-error:disabled {\n opacity: 50%;\n }\n .btn-outline-error {\n border-radius: var(--atomic-border-radius);\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-outline-error:hover {\n border-color: var(--atomic-error);\n }\n }\n @media (hover: hover) {\n .btn-outline-error:hover {\n color: var(--atomic-error);\n }\n }\n .btn-outline-error:focus-visible {\n border-color: var(--atomic-error);\n }\n .btn-outline-error:focus-visible {\n color: var(--atomic-error);\n }\n .btn-outline-error:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .btn-outline-error:focus-visible {\n --tw-ring-color: var(--atomic-ring-primary);\n }\n .btn-outline-error:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-outline-error:disabled {\n cursor: not-allowed;\n }\n .btn-outline-error:disabled {\n border-color: var(--atomic-neutral);\n }\n .btn-outline-error:disabled {\n color: var(--atomic-on-background);\n }\n .btn-outline-error:disabled {\n opacity: 50%;\n }\n .btn-text-neutral {\n border-radius: var(--atomic-border-radius);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-text-neutral:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n @media (hover: hover) {\n .btn-text-neutral:hover {\n color: var(--atomic-primary);\n }\n }\n .btn-text-neutral:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .btn-text-neutral:focus-visible {\n color: var(--atomic-primary);\n }\n .btn-text-neutral:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-text-transparent {\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-text-transparent:hover {\n color: var(--atomic-primary-light);\n }\n }\n .btn-text-transparent:focus-visible {\n color: var(--atomic-primary-light);\n }\n .btn-square-neutral {\n border-style: var(--tw-border-style);\n border-width: 1px;\n border-color: var(--atomic-neutral);\n background-color: var(--atomic-background);\n color: var(--atomic-on-background);\n }\n @media (hover: hover) {\n .btn-square-neutral:hover {\n background-color: var(--atomic-neutral-light);\n }\n }\n .btn-square-neutral:focus-visible {\n background-color: var(--atomic-neutral-light);\n }\n .btn-square-neutral:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .btn-page {\n display: grid;\n height: calc(0.25rem * 10);\n width: calc(0.25rem * 10);\n place-items: center;\n border-style: var(--tw-border-style);\n border-width: 0px;\n font-size: var(--atomic-text-lg);\n line-height: var(--tw-leading, calc(1.75 / 1.125));\n }\n @media (hover: hover) {\n .btn-page:hover {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n }\n .btn-page:focus-visible {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .btn-page.selected {\n border-style: var(--tw-border-style);\n border-width: 2px;\n border-color: var(--atomic-primary);\n --tw-font-weight: var(--atomic-font-bold);\n font-weight: var(--atomic-font-bold);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n border-color: oklch(0.928 0.006 264.531);\n }\n :host {\n display: block;\n }\n :host, button, input, select {\n font-family: var(--atomic-font-family);\n font-size: var(--atomic-text-base);\n line-height: var(--tw-leading, calc(1.5 / 1));\n --tw-font-weight: var(--atomic-font-normal);\n font-weight: var(--atomic-font-normal);\n }\n button {\n cursor: pointer;\n }\n :host(.atomic-hidden) {\n display: none;\n }\n .ripple {\n position: absolute;\n pointer-events: none;\n transform: scale(0);\n border-radius: 50%;\n animation: ripple var(--animation-duration) linear;\n }\n .ripple-relative {\n position: relative;\n }\n .ripple-parent {\n overflow: hidden;\n }\n @keyframes ripple {\n to {\n transform: scale(4);\n opacity: 0;\n }\n }\n}\n@keyframes scaleUp {\n 0% {\n transform: scale(0.7) translateY(150vh);\n opacity: 0;\n }\n 100% {\n transform: scale(1) translateY(0px);\n opacity: 1;\n }\n}\n@keyframes slideDown {\n 0% {\n transform: translateY(0px);\n opacity: 1;\n }\n 100% {\n transform: translateY(150vh);\n opacity: 0;\n }\n}\n:host {\n display: block;\n height: inherit;\n width: inherit;\n}\n:host > slot {\n height: inherit;\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-scale-x {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-y {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-scale-z {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-gradient-position {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-via {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-to {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n@property --tw-gradient-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-via-stops {\n syntax: "*";\n inherits: false;\n}\n@property --tw-gradient-from-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 0%;\n}\n@property --tw-gradient-via-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 50%;\n}\n@property --tw-gradient-to-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-blur {\n syntax: "*";\n inherits: false;\n}\n@property --tw-brightness {\n syntax: "*";\n inherits: false;\n}\n@property --tw-contrast {\n syntax: "*";\n inherits: false;\n}\n@property --tw-grayscale {\n syntax: "*";\n inherits: false;\n}\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-invert {\n syntax: "*";\n inherits: false;\n}\n@property --tw-opacity {\n syntax: "*";\n inherits: false;\n}\n@property --tw-saturate {\n syntax: "*";\n inherits: false;\n}\n@property --tw-sepia {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-drop-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false;\n}\n@property --tw-duration {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ease {\n syntax: "*";\n inherits: false;\n}\n@property --tw-content {\n syntax: "*";\n initial-value: "";\n inherits: false;\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n@keyframes pulse {\n 50% {\n opacity: 0.5;\n }\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-content: "";\n }\n }\n}\n';const O=D;var Y=undefined&&undefined.__decorate||function(n,t,r,e){var i=arguments.length,a=i<3?t:e===null?e=Object.getOwnPropertyDescriptor(t,r):e,o;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")a=Reflect.decorate(n,t,r,e);else for(var l=n.length-1;l>=0;l--)if(o=n[l])a=(i<3?o(a):i>3?o(t,r,a):o(t,r))||a;return i>3&&a&&Object.defineProperty(t,r,a),a};const _="firstSearchExecuted";const Q=class{constructor(t){n(this,t);this.unsubscribeUrlManager=()=>{};this.unsubscribeSearchStatus=()=>{};this.initialized=false;this.relevanceInspectorIsOpen=false;this.fieldsToInclude="[]";this.analytics=true;this.language="en";this.reflectStateInUrl=true;this.scrollContainer="atomic-search-interface";this.languageAssetsPath="./lang";this.iconAssetsPath="./assets";this.enableRelevanceInspector=true;this.onHashChange=()=>{this.urlManager.synchronize(this.fragment)};this.error=undefined;this.relevanceInspectorIsOpen=false;this.fieldsToInclude="[]";this.pipeline=undefined;this.searchHub=undefined;this.analytics=true;this.timezone=undefined;this.logLevel=undefined;this.i18n=undefined;this.language="en";this.engine=undefined;this.reflectStateInUrl=true;this.scrollContainer="atomic-search-interface";this.languageAssetsPath="./lang";this.iconAssetsPath="./assets";this.enableRelevanceInspector=true;this.CspNonce=undefined;this.initRelevanceInspector();this.commonInterfaceHelper=new v(this,"CoveoAtomic");this.store=U();({promise:this.componentWillLoadCalledPromise,resolve:this.componentWillLoadResolver}=Promise.withResolvers());const{promise:r,resolve:e}=Promise.withResolvers();this.i18Initialized=r;this.i18n=b.createInstance(undefined,e)}connectedCallback(){this.store.setLoadingFlag(_);this.updateMobileBreakpoint()}componentWillLoad(){if(this.CspNonce){t(this.CspNonce)}this.initAriaLive();this.initFieldsToInclude();this.componentWillLoadResolver()}updateSearchConfiguration(n,t){if(!this.commonInterfaceHelper.engineIsCreated(this.engine)){return}if(this.engine.state[n]===t){return}const{updateSearchConfiguration:r}=a(this.engine);this.engine.dispatch(r({[n]:t}))}updateSearchHub(){this.updateSearchConfiguration("searchHub",this.searchHub??"default")}updatePipeline(){this.updateSearchConfiguration("pipeline",this.pipeline)}toggleAnalytics(){if(!this.commonInterfaceHelper.engineIsCreated(this.engine)){return}this.commonInterfaceHelper.onAnalyticsChange()}updateLanguage(){if(!this.commonInterfaceHelper.engineIsCreated(this.engine)){return}const{updateSearchConfiguration:n}=a(this.engine);this.engine.dispatch(n({locale:this.language}));return this.commonInterfaceHelper.onLanguageChange()}updateIconAssetsPath(){this.store.state.iconAssetsPath=this.iconAssetsPath}disconnectedCallback(){this.unsubscribeUrlManager();this.unsubscribeSearchStatus();window.removeEventListener("hashchange",this.onHashChange)}handleInitialization(n){this.commonInterfaceHelper.onComponentInitializing(n)}scrollToTop(){const n=document.querySelector(this.scrollContainer);if(!n){this.bindings.engine.logger.warn(`Could not find the scroll container with the selector "${this.scrollContainer}". This will prevent UX interactions that require a scroll from working correctly. Please check the CSS selector in the scrollContainer option`);return}n.scrollIntoView({behavior:"smooth"})}closeRelevanceInspector(){this.relevanceInspectorIsOpen=false}initialize(n){return this.internalInitialization((()=>this.initEngine(n)))}initializeWithSearchEngine(n){if(this.pipeline&&this.pipeline!==n.state.pipeline){console.warn(f("search","query pipeline"))}if(this.searchHub&&this.searchHub!==n.state.searchHub){console.warn(f("search","search hub"))}return this.internalInitialization((()=>this.engine=n))}async executeFirstSearch(){if(!this.commonInterfaceHelper.engineIsCreated(this.engine)){return}if(!this.initialized){console.error('You have to wait until the "initialize" promise is fulfilled before executing a search.',this.host);return}const n=new x;const t=n.getParsedJSON(y.STANDALONE_SEARCH_BOX_DATA,null);if(!t){this.engine.executeFirstSearch();return}n.removeItem(y.STANDALONE_SEARCH_BOX_DATA);const{updateQuery:r}=o(this.engine);const{value:e,enableQuerySyntax:i,analytics:a}=t;this.engine.dispatch(r({q:e,enableQuerySyntax:i}));this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(a)}get bindings(){return{engine:this.engine,i18n:this.i18n,store:this.store,interfaceElement:this.host,createStyleElement:()=>{const n=document.createElement("style");if(this.CspNonce){n.setAttribute("nonce",this.CspNonce)}return n},createScriptElement:()=>{const n=document.createElement("script");if(this.CspNonce){n.setAttribute("nonce",this.CspNonce)}return n}}}initFieldsToInclude(){const n=l.concat(this.fieldsToInclude);this.store.addFieldsToInclude(n)}registerFieldsToInclude(){this.engine?.dispatch(s(this.engine).registerFieldsToInclude(this.store.state.fieldsToInclude))}updateMobileBreakpoint(){const n=this.host.querySelector("atomic-search-layout")?.mobileBreakpoint;if(n){this.store.state.mobileBreakpoint=n}}initEngine(n){const t=this.getSearchConfiguration(n);const r=q(n,this.analytics,this.store);try{this.engine=c({configuration:{...n,search:t,analytics:r},loggerOptions:{level:this.logLevel}})}catch(n){this.error=n;throw n}}getSearchConfiguration(n){const t={searchHub:this.searchHub??"default",pipeline:this.pipeline,locale:this.language,timezone:this.timezone};if(n.search){return{...t,...n.search}}return t}get fragment(){return window.location.hash.slice(1)}initUrlManager(){if(!this.reflectStateInUrl){return}this.urlManager=d(this.engine,{initialState:{fragment:this.fragment}});this.unsubscribeUrlManager=this.urlManager.subscribe((()=>this.updateHash()));window.addEventListener("hashchange",this.onHashChange)}initAriaLive(){if(Array.from(this.host.children).some((n=>n.tagName==="ATOMIC-ARIA-LIVE"))){return}const n=document.createElement("atomic-aria-live");this.host.prepend(n)}initRelevanceInspector(){if(this.enableRelevanceInspector){this.host.addEventListener("dblclick",(n=>{if(n.altKey){this.relevanceInspectorIsOpen=!this.relevanceInspectorIsOpen}}))}}initSearchStatus(){this.searchStatus=h(this.engine);this.unsubscribeSearchStatus=this.searchStatus.subscribe((()=>{const n=!this.searchStatus.state.hasResults&&this.searchStatus.state.firstSearchExecuted&&!this.searchStatus.state.hasError;this.host.classList.toggle(L,n);this.host.classList.toggle(M,this.searchStatus.state.hasError);this.host.classList.toggle(P,this.searchStatus.state.firstSearchExecuted);if(this.searchStatus.state.firstSearchExecuted&&this.store.hasLoadingFlag(_)){this.store.unsetLoadingFlag(_)}}))}updateHash(){const n=this.urlManager.state.fragment;if(!this.searchStatus.state.firstSearchExecuted){history.replaceState(null,document.title,`#${n}`);this.bindings.engine.logger.info(`History replaceState #${n}`);return}history.pushState(null,document.title,`#${n}`);this.bindings.engine.logger.info(`History pushState #${n}`)}async internalInitialization(n){await this.componentWillLoadCalledPromise;await Promise.all([this.commonInterfaceHelper.onInitialization(n),this.i18Initialized]);await this.updateLanguage();i(this.host);this.pipeline=this.engine.state.pipeline;this.searchHub=this.engine.state.searchHub;this.initSearchStatus();this.initUrlManager();this.initialized=true}render(){return[this.engine&&this.enableRelevanceInspector&&r("atomic-relevance-inspector",{key:"231cd0cfefab344118212eafde247a835f7897b1",open:this.relevanceInspectorIsOpen,bindings:this.bindings}),r("slot",{key:"4a63f09668827eeb19f008ae47a93f015e48dfc5"})]}get host(){return e(this)}static get watchers(){return{searchHub:["updateSearchHub"],pipeline:["updatePipeline"],analytics:["toggleAnalytics"],language:["updateLanguage"],iconAssetsPath:["updateIconAssetsPath"]}}};Y([k()],Q.prototype,"fieldsToInclude",void 0);Q.style=O;export{Q as atomic_search_interface};
|
|
2
|
+
//# sourceMappingURL=p-7d59d46a.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["containerWebComponentTagName","noResultsSelector","errorSelector","firstSearchExecutedSelector","makeDesktopQuery","mobileBreakpoint","getAnalyticsConfig","searchEngineConfig","enabled","store","analytics","analyticsMode","getNextAnalyticsConfig","getLegacyAnalyticsConfig","analyticsClientMiddleware","event","payload","augmentAnalytics","defaultConfiguration","augmentAnalyticsConfigWithDocument","immutableConfiguration","augmentAnalyticsConfigWithAtomicVersion","config","result","augmentWithExternalMiddleware","augmentAnalyticsWithAtomicVersion","augmentAnalyticsWithFacetTitles","allFacets","getAllFacets","getAtomicFacetLabelOrOriginalTitle","facetId","originalTitle","label","facetState","map","analyticsFacetState","id","title","customData","facetTitle","createSearchStore","createBaseStore","loadingFlags","iconAssetsPath","resultList","undefined","DEFAULT_MOBILE_BREAKPOINT","facets","numericFacets","dateFacets","categoryFacets","facetElements","fieldsToInclude","sortOptions","unsetLoadingFlag","loadingFlag","setLoadingFlag","isMobile","window","matchMedia","state","matches","registerFacet","facetType","data","getFacetElements","waitUntilAppLoaded","callback","getUniqueIDFromEngine","engine","search","response","searchUid","hasLoadingFlag","indexOf","addFieldsToInclude","fields","currentFields","atomicSearchInterfaceCss","AtomicSearchInterfaceStyle0","FirstSearchExecutedFlag","AtomicSearchInterface","constructor","hostRef","this","unsubscribeUrlManager","unsubscribeSearchStatus","initialized","relevanceInspectorIsOpen","language","reflectStateInUrl","scrollContainer","languageAssetsPath","enableRelevanceInspector","onHashChange","urlManager","synchronize","fragment","initRelevanceInspector","commonInterfaceHelper","CommonAtomicInterfaceHelper","promise","componentWillLoadCalledPromise","resolve","componentWillLoadResolver","Promise","withResolvers","i18Initialized","i18n","i18next","createInstance","connectedCallback","updateMobileBreakpoint","componentWillLoad","CspNonce","setNonce","initAriaLive","initFieldsToInclude","updateSearchConfiguration","updatedProp","newValue","engineIsCreated","loadSearchConfigurationActions","dispatch","updateSearchHub","searchHub","updatePipeline","pipeline","toggleAnalytics","onAnalyticsChange","updateLanguage","locale","onLanguageChange","updateIconAssetsPath","disconnectedCallback","removeEventListener","handleInitialization","onComponentInitializing","scrollToTop","scrollContainerElement","document","querySelector","bindings","logger","warn","scrollIntoView","behavior","closeRelevanceInspector","initialize","options","internalInitialization","initEngine","initializeWithSearchEngine","console","mismatchedInterfaceAndEnginePropError","executeFirstSearch","error","host","safeStorage","SafeStorage","standaloneSearchBoxData","getParsedJSON","StorageItems","STANDALONE_SEARCH_BOX_DATA","removeItem","updateQuery","loadQueryActions","value","enableQuerySyntax","q","executeFirstSearchAfterStandaloneSearchBoxRedirect","interfaceElement","createStyleElement","styleTag","createElement","setAttribute","createScriptElement","EcommerceDefaultFieldsToInclude","concat","registerFieldsToInclude","loadFieldActions","breakpoint","searchConfig","getSearchConfiguration","analyticsConfig","buildSearchEngine","configuration","loggerOptions","level","logLevel","searchConfigFromProps","timezone","location","hash","slice","initUrlManager","buildUrlManager","initialState","subscribe","updateHash","addEventListener","Array","from","children","some","element","tagName","ariaLive","prepend","e","altKey","initSearchStatus","searchStatus","buildSearchStatus","hasNoResultsAfterInitialSearch","hasResults","firstSearchExecuted","hasError","classList","toggle","newFragment","history","replaceState","info","pushState","all","onInitialization","markParentAsReady","render","h","key","open","__decorate","ArrayProp"],"sources":["src/components/search/atomic-search-layout/search-layout.ts","src/components/search/atomic-search-interface/analytics-config.ts","src/components/search/atomic-search-interface/store.ts","src/components/search/atomic-search-interface/atomic-search-interface.pcss?tag=atomic-search-interface&encapsulation=shadow","src/components/search/atomic-search-interface/atomic-search-interface.tsx"],"sourcesContent":["import {buildCommonLayout} from '../../common/atomic-layout-section/layout';\n\nexport const layoutWebComponentTagName = 'atomic-search-layout';\nexport const containerWebComponentTagName = 'atomic-search-interface';\nexport const noResultsSelector = `${containerWebComponentTagName}-no-results`;\nexport const errorSelector = `${containerWebComponentTagName}-error`;\nexport const firstSearchExecutedSelector = `${containerWebComponentTagName}-search-executed`;\n\nexport function makeDesktopQuery(mobileBreakpoint: string) {\n return `only screen and (min-width: ${mobileBreakpoint})`;\n}\nexport function buildSearchLayout(\n element: HTMLElement,\n mobileBreakpoint: string\n) {\n return buildCommonLayout(\n element,\n mobileBreakpoint,\n layoutWebComponentTagName,\n containerWebComponentTagName,\n noResultsSelector,\n errorSelector,\n 'atomic-refine-toggle',\n 'atomic-sort-dropdown'\n );\n}\n","import type {\n AnalyticsConfiguration,\n SearchEngineConfiguration,\n} from '@coveo/headless';\nimport {\n type AnalyticsPayload,\n augmentAnalyticsConfigWithAtomicVersion,\n augmentAnalyticsConfigWithDocument,\n augmentAnalyticsWithAtomicVersion,\n augmentWithExternalMiddleware,\n getNextAnalyticsConfig,\n} from '../../common/interface/analytics-config';\nimport type {createSearchStore} from './store';\n\nexport function getAnalyticsConfig(\n searchEngineConfig: SearchEngineConfiguration,\n enabled: boolean,\n store: ReturnType<typeof createSearchStore>\n): AnalyticsConfiguration {\n switch (searchEngineConfig.analytics?.analyticsMode) {\n case 'next':\n return getNextAnalyticsConfig(searchEngineConfig, enabled);\n default:\n return getLegacyAnalyticsConfig(searchEngineConfig, enabled, store);\n }\n}\n\nfunction getLegacyAnalyticsConfig(\n searchEngineConfig: SearchEngineConfiguration,\n enabled: boolean,\n store: ReturnType<typeof createSearchStore>\n): AnalyticsConfiguration {\n const analyticsClientMiddleware = (\n event: string,\n payload: AnalyticsPayload\n ) => augmentAnalytics(event, payload, store, searchEngineConfig);\n\n const defaultConfiguration: AnalyticsConfiguration = {\n analyticsClientMiddleware,\n enabled,\n ...augmentAnalyticsConfigWithDocument(),\n };\n\n const immutableConfiguration: AnalyticsConfiguration = {\n ...augmentAnalyticsConfigWithAtomicVersion(),\n };\n\n if (searchEngineConfig.analytics) {\n return {\n ...defaultConfiguration,\n ...searchEngineConfig.analytics,\n analyticsClientMiddleware,\n ...immutableConfiguration,\n };\n }\n\n return {\n ...defaultConfiguration,\n ...immutableConfiguration,\n };\n}\n\nfunction augmentAnalytics(\n event: string,\n payload: AnalyticsPayload,\n store: ReturnType<typeof createSearchStore>,\n config: SearchEngineConfiguration\n) {\n let result = augmentWithExternalMiddleware(event, payload, config);\n result = augmentAnalyticsWithAtomicVersion(result);\n result = augmentAnalyticsWithFacetTitles(result, store);\n return result;\n}\n\nfunction augmentAnalyticsWithFacetTitles(\n payload: AnalyticsPayload,\n store: ReturnType<typeof createSearchStore>\n) {\n const allFacets = store.getAllFacets();\n const getAtomicFacetLabelOrOriginalTitle = (\n facetId: string,\n originalTitle: string\n ) => (allFacets[facetId] ? allFacets[facetId].label() : originalTitle);\n\n if (payload.facetState) {\n payload.facetState = payload.facetState.map(\n (analyticsFacetState: {id: string; title: string}) => {\n const {id, title: originalTitle} = analyticsFacetState;\n return {\n ...analyticsFacetState,\n title: getAtomicFacetLabelOrOriginalTitle(id, originalTitle),\n };\n }\n );\n }\n\n if (\n payload.customData?.facetTitle &&\n payload.customData.facetId &&\n payload.customData.facetTitle\n ) {\n payload.customData.facetTitle = getAtomicFacetLabelOrOriginalTitle(\n payload.customData.facetId,\n payload.customData.facetTitle\n );\n }\n return payload;\n}\n","import type {\n DateFacetValue,\n NumericFacetValue,\n SearchEngine,\n SortCriterion,\n} from '@coveo/headless';\nimport {DEFAULT_MOBILE_BREAKPOINT} from '../../../utils/replace-breakpoint';\nimport type {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../../common/facets/facet-common-store';\nimport {\n type BaseStore,\n createBaseStore,\n getFacetElements,\n type ResultListInfo,\n registerFacet,\n setLoadingFlag,\n unsetLoadingFlag,\n waitUntilAppLoaded,\n} from '../../common/interface/store';\nimport {makeDesktopQuery} from '../atomic-search-layout/search-layout';\n\nexport interface SortDropdownOption {\n tabs: {included: string[] | string; excluded: string[] | string};\n expression: string;\n criteria: SortCriterion[];\n label: string;\n}\n\ninterface FacetInfoMap {\n [facetId: string]:\n | FacetInfo\n | (FacetInfo & FacetValueFormat<NumericFacetValue>)\n | (FacetInfo & FacetValueFormat<DateFacetValue>);\n}\n\ninterface Data {\n loadingFlags: string[];\n iconAssetsPath: string;\n resultList: ResultListInfo | undefined;\n mobileBreakpoint: string;\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n facetElements: HTMLElement[];\n fieldsToInclude: string[];\n sortOptions: SortDropdownOption[];\n}\n\nexport type SearchStore = BaseStore<Data> & {\n unsetLoadingFlag(loadingFlag: string): void;\n setLoadingFlag(flag: string): void;\n isMobile(): boolean;\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ): void;\n getFacetElements(): HTMLElement[];\n waitUntilAppLoaded(callback: () => void): void;\n getUniqueIDFromEngine(engine: SearchEngine): string;\n hasLoadingFlag(loadingFlag: string): boolean;\n getAllFacets(): FacetInfoMap;\n addFieldsToInclude(fields: string[]): void;\n};\n\nexport function createSearchStore(): SearchStore {\n const store = createBaseStore<Data>({\n loadingFlags: [],\n iconAssetsPath: '',\n resultList: undefined,\n mobileBreakpoint: DEFAULT_MOBILE_BREAKPOINT,\n facets: {},\n numericFacets: {},\n dateFacets: {},\n categoryFacets: {},\n facetElements: [],\n fieldsToInclude: [],\n sortOptions: [],\n });\n\n return {\n ...store,\n\n unsetLoadingFlag(loadingFlag: string) {\n unsetLoadingFlag(store, loadingFlag);\n },\n\n setLoadingFlag(loadingFlag: string) {\n setLoadingFlag(store, loadingFlag);\n },\n\n isMobile() {\n return !window.matchMedia(makeDesktopQuery(store.state.mobileBreakpoint))\n .matches;\n },\n\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ) {\n registerFacet(store, facetType, data);\n },\n\n getFacetElements() {\n return getFacetElements(store);\n },\n\n waitUntilAppLoaded(callback: () => void) {\n waitUntilAppLoaded(store, callback);\n },\n\n getUniqueIDFromEngine(engine: SearchEngine): string {\n return engine.state.search.response.searchUid;\n },\n\n hasLoadingFlag(loadingFlag: string) {\n return store.state.loadingFlags.indexOf(loadingFlag) !== -1;\n },\n\n getAllFacets() {\n return {\n ...store.state.facets,\n ...store.state.dateFacets,\n ...store.state.categoryFacets,\n ...store.state.numericFacets,\n };\n },\n\n addFieldsToInclude(fields) {\n const currentFields = store.state.fieldsToInclude;\n store.state.fieldsToInclude = [...currentFields, ...fields];\n },\n };\n}\n","@import '../../../global/global.pcss';\n\n:host {\n display: block;\n height: inherit;\n width: inherit;\n & > slot {\n height: inherit;\n }\n}\n","import {markParentAsReady} from '@/src/utils/init-queue';\nimport {\n LogLevel,\n Unsubscribe,\n buildUrlManager,\n UrlManager,\n buildSearchEngine,\n SearchEngine,\n SearchEngineConfiguration,\n SearchStatus,\n buildSearchStatus,\n loadSearchConfigurationActions,\n loadQueryActions,\n EcommerceDefaultFieldsToInclude,\n loadFieldActions,\n} from '@coveo/headless';\nimport {\n Component,\n Prop,\n h,\n Listen,\n Method,\n Watch,\n Element,\n State,\n setNonce,\n} from '@stencil/core';\nimport i18next, {i18n} from 'i18next';\nimport {InitializeEvent} from '../../../utils/initialization-utils';\nimport {\n SafeStorage,\n StandaloneSearchBoxData,\n StorageItems,\n} from '../../../utils/local-storage-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {\n StencilBaseAtomicInterface,\n CommonAtomicInterfaceHelper,\n mismatchedInterfaceAndEnginePropError,\n} from '../../common/interface/interface-common-stencil';\nimport {\n errorSelector,\n firstSearchExecutedSelector,\n noResultsSelector,\n} from '../atomic-search-layout/search-layout';\nimport {getAnalyticsConfig} from './analytics-config';\nimport type {Bindings as _Bindings} from './interfaces';\nimport {createSearchStore, SearchStore} from './store';\n\nconst FirstSearchExecutedFlag = 'firstSearchExecuted';\nexport type InitializationOptions = SearchEngineConfiguration;\nexport type Bindings = _Bindings;\n\n/**\n * The `atomic-search-interface` component is the parent to all other atomic components in a search page. It handles the headless search engine and localization configurations.\n */\n@Component({\n tag: 'atomic-search-interface',\n styleUrl: 'atomic-search-interface.pcss',\n shadow: true,\n})\nexport class AtomicSearchInterface\n implements StencilBaseAtomicInterface<SearchEngine>\n{\n private urlManager!: UrlManager;\n private searchStatus!: SearchStatus;\n private unsubscribeUrlManager: Unsubscribe = () => {};\n private unsubscribeSearchStatus: Unsubscribe = () => {};\n private initialized = false;\n private store: SearchStore;\n private commonInterfaceHelper: CommonAtomicInterfaceHelper<SearchEngine>;\n\n @Element() public host!: HTMLAtomicSearchInterfaceElement;\n\n @State() public error?: Error;\n @State() relevanceInspectorIsOpen = false;\n\n /**\n * A list of non-default fields to include in the query results.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-search-interface fields-to-include='[\"fieldA\", \"fieldB\"]'></atomic-search-interface>\n * ```\n */\n @ArrayProp()\n @Prop({mutable: true})\n public fieldsToInclude: string[] | string = '[]';\n\n /**\n * The search interface [query pipeline](https://docs.coveo.com/en/180/).\n *\n * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine), the query pipeline should instead be configured in the target engine.\n */\n @Prop({reflect: true, mutable: true}) public pipeline?: string;\n\n /**\n * The search interface [search hub](https://docs.coveo.com/en/1342/).\n *\n * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine, the search hub should instead be configured in the target engine.\n */\n @Prop({reflect: true, mutable: true}) public searchHub?: string;\n\n /**\n * Whether analytics should be enabled.\n */\n @Prop({reflect: true}) public analytics = true;\n\n /**\n * The [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) identifier of the time zone to use to correctly interpret dates in the query expression, facets, and result items.\n * By default, the timezone will be [guessed](https://day.js.org/docs/en/timezone/guessing-user-timezone).\n *\n * Example: \"America/Montreal\"\n */\n @Prop({reflect: true}) public timezone?: string;\n\n /**\n * The severity level of the messages to log in the console.\n */\n @Prop({reflect: true}) public logLevel?: LogLevel;\n\n /**\n * The search interface i18next instance.\n */\n @Prop() public i18n: i18n;\n\n /**\n * The search interface language.\n */\n @Prop({reflect: true}) public language = 'en';\n\n /**\n * The search interface headless engine.\n */\n @Prop({mutable: true}) public engine?: SearchEngine;\n\n /**\n * Whether the state should be reflected in the URL parameters.\n */\n @Prop({reflect: true}) public reflectStateInUrl = true;\n\n /**\n * The CSS selector for the container where the interface will scroll back to.\n */\n @Prop({reflect: true}) public scrollContainer = 'atomic-search-interface';\n\n /**\n * The language assets path. By default, this will be a relative URL pointing to `./lang`.\n *\n * Example: \"/mypublicpath/languages\"\n *\n */\n @Prop({reflect: true}) public languageAssetsPath = './lang';\n\n /**\n * The icon assets path. By default, this will be a relative URL pointing to `./assets`.\n *\n * Example: \"/mypublicpath/icons\"\n *\n */\n @Prop({reflect: true}) public iconAssetsPath = './assets';\n\n /**\n * Whether the relevance inspector shortcut should be enabled for this interface.\n *\n * The relevance inspector can be opened by holding the Alt key (Option on Mac) while over the interface, and performing a double click.\n *\n * The relevance inspector allows to troubleshoot and debug queries.\n */\n @Prop({reflect: true}) public enableRelevanceInspector = true;\n\n /**\n * The value to set the [nonce](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) attribute to on inline script and style elements generated by this interface and its child components.\n * If your application is served with a Content Security Policy (CSP) that doesn't include the `script-src: 'unsafe-inline'` or `style-src: 'unsafe-inline'` directives,\n * you should ensure that your application server generates a new nonce on every page load and uses the generated value to set this prop and serve the corresponding CSP response headers\n * (i.e., script-src 'nonce-<YOUR_GENERATED_NONCE>' and style-src 'nonce-<YOUR_GENERATED_NONCE>').\n * Otherwise you may see console errors such as\n * - Refused to execute inline script because it violates the following Content Security Policy directive: [...]\n * - Refused to apply inline style because it violates the following Content Security Policy directive: [...].\n * @example:\n * ```html\n * <script nonce=\"<YOUR_GENERATED_NONCE>\">\n * import {setNonce} from '@coveo/atomic';\n * setNonce('<YOUR_GENERATED_NONCE>');\n * </script>\n * ```\n */\n @Prop({reflect: true}) public CspNonce?: string;\n\n private i18Initialized: Promise<void>;\n private componentWillLoadCalledPromise: Promise<void>;\n private componentWillLoadResolver: () => void;\n public constructor() {\n this.initRelevanceInspector();\n this.commonInterfaceHelper = new CommonAtomicInterfaceHelper(\n this,\n 'CoveoAtomic'\n );\n this.store = createSearchStore();\n ({\n promise: this.componentWillLoadCalledPromise,\n resolve: this.componentWillLoadResolver,\n } = Promise.withResolvers<void>());\n const {promise, resolve} = Promise.withResolvers<void>();\n this.i18Initialized = promise;\n this.i18n = i18next.createInstance(undefined, resolve);\n }\n\n public connectedCallback() {\n this.store.setLoadingFlag(FirstSearchExecutedFlag);\n this.updateMobileBreakpoint();\n }\n\n componentWillLoad() {\n if (this.CspNonce) {\n setNonce(this.CspNonce);\n }\n this.initAriaLive();\n this.initFieldsToInclude();\n this.componentWillLoadResolver();\n }\n\n public updateSearchConfiguration(\n updatedProp: 'searchHub' | 'pipeline',\n newValue: string | undefined\n ) {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n if (this.engine.state[updatedProp] === newValue) {\n return;\n }\n\n const {updateSearchConfiguration} = loadSearchConfigurationActions(\n this.engine\n );\n this.engine.dispatch(\n updateSearchConfiguration({\n [updatedProp]: newValue,\n })\n );\n }\n\n @Watch('searchHub')\n public updateSearchHub() {\n this.updateSearchConfiguration('searchHub', this.searchHub ?? 'default');\n }\n\n @Watch('pipeline')\n public updatePipeline() {\n this.updateSearchConfiguration('pipeline', this.pipeline);\n }\n\n @Watch('analytics')\n public toggleAnalytics() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n this.commonInterfaceHelper.onAnalyticsChange();\n }\n\n @Watch('language')\n public updateLanguage() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n const {updateSearchConfiguration} = loadSearchConfigurationActions(\n this.engine\n );\n this.engine.dispatch(\n updateSearchConfiguration({\n locale: this.language,\n })\n );\n return this.commonInterfaceHelper.onLanguageChange();\n }\n\n @Watch('iconAssetsPath')\n public updateIconAssetsPath() {\n this.store.state.iconAssetsPath = this.iconAssetsPath;\n }\n\n public disconnectedCallback() {\n this.unsubscribeUrlManager();\n this.unsubscribeSearchStatus();\n window.removeEventListener('hashchange', this.onHashChange);\n }\n\n @Listen('atomic/initializeComponent')\n public handleInitialization(event: InitializeEvent) {\n this.commonInterfaceHelper.onComponentInitializing(event);\n }\n\n @Listen('atomic/scrollToTop')\n public scrollToTop() {\n const scrollContainerElement = document.querySelector(this.scrollContainer);\n if (!scrollContainerElement) {\n this.bindings.engine.logger.warn(\n `Could not find the scroll container with the selector \"${this.scrollContainer}\". This will prevent UX interactions that require a scroll from working correctly. Please check the CSS selector in the scrollContainer option`\n );\n return;\n }\n\n scrollContainerElement.scrollIntoView({behavior: 'smooth'});\n }\n\n @Listen('atomic/relevanceInspector/close')\n public closeRelevanceInspector() {\n this.relevanceInspectorIsOpen = false;\n }\n\n /**\n * Initializes the connection with the headless search engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.\n */\n @Method() public initialize(options: InitializationOptions) {\n return this.internalInitialization(() => this.initEngine(options));\n }\n\n /**\n * Initializes the connection with an already preconfigured [headless search engine](https://docs.coveo.com/en/headless/latest/reference/modules/Search.html, as opposed to the `initialize` method, which will internally create a new search engine instance.\n * This bypasses the properties set on the component, such as analytics, searchHub, pipeline, language, timezone & logLevel.\n */\n @Method() public initializeWithSearchEngine(engine: SearchEngine) {\n if (this.pipeline && this.pipeline !== engine.state.pipeline) {\n console.warn(\n mismatchedInterfaceAndEnginePropError('search', 'query pipeline')\n );\n }\n if (this.searchHub && this.searchHub !== engine.state.searchHub) {\n console.warn(\n mismatchedInterfaceAndEnginePropError('search', 'search hub')\n );\n }\n return this.internalInitialization(() => (this.engine = engine));\n }\n\n /**\n *\n * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.\n */\n @Method() public async executeFirstSearch() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n if (!this.initialized) {\n console.error(\n 'You have to wait until the \"initialize\" promise is fulfilled before executing a search.',\n this.host\n );\n return;\n }\n\n const safeStorage = new SafeStorage();\n const standaloneSearchBoxData =\n safeStorage.getParsedJSON<StandaloneSearchBoxData | null>(\n StorageItems.STANDALONE_SEARCH_BOX_DATA,\n null\n );\n\n if (!standaloneSearchBoxData) {\n this.engine.executeFirstSearch();\n return;\n }\n\n safeStorage.removeItem(StorageItems.STANDALONE_SEARCH_BOX_DATA);\n const {updateQuery} = loadQueryActions(this.engine!);\n const {value, enableQuerySyntax, analytics} = standaloneSearchBoxData;\n this.engine!.dispatch(updateQuery({q: value, enableQuerySyntax}));\n this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics);\n }\n\n public get bindings(): Bindings {\n return {\n engine: this.engine!,\n i18n: this.i18n,\n store: this.store,\n interfaceElement: this.host,\n createStyleElement: () => {\n const styleTag = document.createElement('style');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n createScriptElement: () => {\n const styleTag = document.createElement('script');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n };\n }\n\n private initFieldsToInclude() {\n const fields = EcommerceDefaultFieldsToInclude.concat(this.fieldsToInclude);\n this.store.addFieldsToInclude(fields);\n }\n\n public registerFieldsToInclude() {\n this.engine?.dispatch(\n loadFieldActions(this.engine!).registerFieldsToInclude(\n this.store.state.fieldsToInclude\n )\n );\n }\n\n private updateMobileBreakpoint() {\n const breakpoint = this.host.querySelector(\n 'atomic-search-layout'\n )?.mobileBreakpoint;\n if (breakpoint) {\n this.store.state.mobileBreakpoint = breakpoint;\n }\n }\n\n private initEngine(options: InitializationOptions) {\n const searchConfig = this.getSearchConfiguration(options);\n const analyticsConfig = getAnalyticsConfig(\n options,\n this.analytics,\n this.store\n );\n try {\n this.engine = buildSearchEngine({\n configuration: {\n ...options,\n search: searchConfig,\n analytics: analyticsConfig,\n },\n loggerOptions: {\n level: this.logLevel,\n },\n });\n } catch (error) {\n this.error = error as Error;\n throw error;\n }\n }\n\n private getSearchConfiguration(options: InitializationOptions) {\n const searchConfigFromProps = {\n searchHub: this.searchHub ?? 'default',\n pipeline: this.pipeline,\n locale: this.language,\n timezone: this.timezone,\n };\n\n if (options.search) {\n return {\n ...searchConfigFromProps,\n ...options.search,\n };\n }\n\n return searchConfigFromProps;\n }\n\n private get fragment() {\n return window.location.hash.slice(1);\n }\n\n private initUrlManager() {\n if (!this.reflectStateInUrl) {\n return;\n }\n\n this.urlManager = buildUrlManager(this.engine!, {\n initialState: {fragment: this.fragment},\n });\n\n this.unsubscribeUrlManager = this.urlManager.subscribe(() =>\n this.updateHash()\n );\n\n window.addEventListener('hashchange', this.onHashChange);\n }\n\n private initAriaLive() {\n if (\n Array.from(this.host.children).some(\n (element) => element.tagName === 'ATOMIC-ARIA-LIVE'\n )\n ) {\n return;\n }\n const ariaLive = document.createElement('atomic-aria-live');\n this.host.prepend(ariaLive);\n }\n\n private initRelevanceInspector() {\n if (this.enableRelevanceInspector) {\n this.host.addEventListener('dblclick', (e) => {\n if (e.altKey) {\n this.relevanceInspectorIsOpen = !this.relevanceInspectorIsOpen;\n }\n });\n }\n }\n\n private initSearchStatus() {\n this.searchStatus = buildSearchStatus(this.engine!);\n this.unsubscribeSearchStatus = this.searchStatus.subscribe(() => {\n const hasNoResultsAfterInitialSearch =\n !this.searchStatus.state.hasResults &&\n this.searchStatus.state.firstSearchExecuted &&\n !this.searchStatus.state.hasError;\n\n this.host.classList.toggle(\n noResultsSelector,\n hasNoResultsAfterInitialSearch\n );\n\n this.host.classList.toggle(\n errorSelector,\n this.searchStatus.state.hasError\n );\n\n this.host.classList.toggle(\n firstSearchExecutedSelector,\n this.searchStatus.state.firstSearchExecuted\n );\n\n if (\n this.searchStatus.state.firstSearchExecuted &&\n this.store.hasLoadingFlag(FirstSearchExecutedFlag)\n ) {\n this.store.unsetLoadingFlag(FirstSearchExecutedFlag);\n }\n });\n }\n\n private updateHash() {\n const newFragment = this.urlManager.state.fragment;\n\n if (!this.searchStatus.state.firstSearchExecuted) {\n history.replaceState(null, document.title, `#${newFragment}`);\n this.bindings.engine.logger.info(`History replaceState #${newFragment}`);\n\n return;\n }\n\n history.pushState(null, document.title, `#${newFragment}`);\n this.bindings.engine.logger.info(`History pushState #${newFragment}`);\n }\n\n private onHashChange = () => {\n this.urlManager.synchronize(this.fragment);\n };\n\n private async internalInitialization(initEngine: () => void) {\n await this.componentWillLoadCalledPromise;\n await Promise.all([\n this.commonInterfaceHelper.onInitialization(initEngine),\n this.i18Initialized,\n ]);\n await this.updateLanguage();\n markParentAsReady(this.host);\n this.pipeline = this.engine!.state.pipeline;\n this.searchHub = this.engine!.state.searchHub;\n this.initSearchStatus();\n this.initUrlManager();\n this.initialized = true;\n }\n\n public render() {\n return [\n this.engine && this.enableRelevanceInspector && (\n <atomic-relevance-inspector\n open={this.relevanceInspectorIsOpen}\n bindings={this.bindings}\n ></atomic-relevance-inspector>\n ),\n <slot></slot>,\n ];\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["containerWebComponentTagName","noResultsSelector","errorSelector","firstSearchExecutedSelector","makeDesktopQuery","mobileBreakpoint","getAnalyticsConfig","searchEngineConfig","enabled","store","analytics","analyticsMode","getNextAnalyticsConfig","getLegacyAnalyticsConfig","analyticsClientMiddleware","event","payload","augmentAnalytics","defaultConfiguration","augmentAnalyticsConfigWithDocument","immutableConfiguration","augmentAnalyticsConfigWithAtomicVersion","config","result","augmentWithExternalMiddleware","augmentAnalyticsWithAtomicVersion","augmentAnalyticsWithFacetTitles","allFacets","getAllFacets","getAtomicFacetLabelOrOriginalTitle","facetId","originalTitle","label","facetState","map","analyticsFacetState","id","title","customData","facetTitle","createSearchStore","createBaseStore","loadingFlags","iconAssetsPath","resultList","undefined","DEFAULT_MOBILE_BREAKPOINT","facets","numericFacets","dateFacets","categoryFacets","facetElements","fieldsToInclude","sortOptions","unsetLoadingFlag","loadingFlag","setLoadingFlag","isMobile","window","matchMedia","state","matches","registerFacet","facetType","data","getFacetElements","waitUntilAppLoaded","callback","getUniqueIDFromEngine","engine","search","response","searchUid","hasLoadingFlag","indexOf","addFieldsToInclude","fields","currentFields","atomicSearchInterfaceCss","AtomicSearchInterfaceStyle0","FirstSearchExecutedFlag","AtomicSearchInterface","constructor","hostRef","this","unsubscribeUrlManager","unsubscribeSearchStatus","initialized","relevanceInspectorIsOpen","language","reflectStateInUrl","scrollContainer","languageAssetsPath","enableRelevanceInspector","onHashChange","urlManager","synchronize","fragment","initRelevanceInspector","commonInterfaceHelper","CommonAtomicInterfaceHelper","promise","componentWillLoadCalledPromise","resolve","componentWillLoadResolver","Promise","withResolvers","i18Initialized","i18n","i18next","createInstance","connectedCallback","updateMobileBreakpoint","componentWillLoad","CspNonce","setNonce","initAriaLive","initFieldsToInclude","updateSearchConfiguration","updatedProp","newValue","engineIsCreated","loadSearchConfigurationActions","dispatch","updateSearchHub","searchHub","updatePipeline","pipeline","toggleAnalytics","onAnalyticsChange","updateLanguage","locale","onLanguageChange","updateIconAssetsPath","disconnectedCallback","removeEventListener","handleInitialization","onComponentInitializing","scrollToTop","scrollContainerElement","document","querySelector","bindings","logger","warn","scrollIntoView","behavior","closeRelevanceInspector","initialize","options","internalInitialization","initEngine","initializeWithSearchEngine","console","mismatchedInterfaceAndEnginePropError","executeFirstSearch","error","host","safeStorage","SafeStorage","standaloneSearchBoxData","getParsedJSON","StorageItems","STANDALONE_SEARCH_BOX_DATA","removeItem","updateQuery","loadQueryActions","value","enableQuerySyntax","q","executeFirstSearchAfterStandaloneSearchBoxRedirect","interfaceElement","createStyleElement","styleTag","createElement","setAttribute","createScriptElement","EcommerceDefaultFieldsToInclude","concat","registerFieldsToInclude","loadFieldActions","breakpoint","searchConfig","getSearchConfiguration","analyticsConfig","buildSearchEngine","configuration","loggerOptions","level","logLevel","searchConfigFromProps","timezone","location","hash","slice","initUrlManager","buildUrlManager","initialState","subscribe","updateHash","addEventListener","Array","from","children","some","element","tagName","ariaLive","prepend","e","altKey","initSearchStatus","searchStatus","buildSearchStatus","hasNoResultsAfterInitialSearch","hasResults","firstSearchExecuted","hasError","classList","toggle","newFragment","history","replaceState","info","pushState","all","onInitialization","markParentAsReady","render","h","key","open","__decorate","ArrayProp"],"sources":["src/components/search/atomic-search-layout/search-layout.ts","src/components/search/atomic-search-interface/analytics-config.ts","src/components/search/atomic-search-interface/store.ts","src/components/search/atomic-search-interface/atomic-search-interface.pcss?tag=atomic-search-interface&encapsulation=shadow","src/components/search/atomic-search-interface/atomic-search-interface.tsx"],"sourcesContent":["import {buildCommonLayout} from '../../common/atomic-layout-section/layout';\n\nexport const layoutWebComponentTagName = 'atomic-search-layout';\nexport const containerWebComponentTagName = 'atomic-search-interface';\nexport const noResultsSelector = `${containerWebComponentTagName}-no-results`;\nexport const errorSelector = `${containerWebComponentTagName}-error`;\nexport const firstSearchExecutedSelector = `${containerWebComponentTagName}-search-executed`;\n\nexport function makeDesktopQuery(mobileBreakpoint: string) {\n return `only screen and (min-width: ${mobileBreakpoint})`;\n}\nexport function buildSearchLayout(\n element: HTMLElement,\n mobileBreakpoint: string\n) {\n return buildCommonLayout(\n element,\n mobileBreakpoint,\n layoutWebComponentTagName,\n containerWebComponentTagName,\n noResultsSelector,\n errorSelector,\n 'atomic-refine-toggle',\n 'atomic-sort-dropdown'\n );\n}\n","import type {\n AnalyticsConfiguration,\n SearchEngineConfiguration,\n} from '@coveo/headless';\nimport {\n type AnalyticsPayload,\n augmentAnalyticsConfigWithAtomicVersion,\n augmentAnalyticsConfigWithDocument,\n augmentAnalyticsWithAtomicVersion,\n augmentWithExternalMiddleware,\n getNextAnalyticsConfig,\n} from '../../common/interface/analytics-config';\nimport type {createSearchStore} from './store';\n\nexport function getAnalyticsConfig(\n searchEngineConfig: SearchEngineConfiguration,\n enabled: boolean,\n store: ReturnType<typeof createSearchStore>\n): AnalyticsConfiguration {\n switch (searchEngineConfig.analytics?.analyticsMode) {\n case 'next':\n return getNextAnalyticsConfig(searchEngineConfig, enabled);\n default:\n return getLegacyAnalyticsConfig(searchEngineConfig, enabled, store);\n }\n}\n\nfunction getLegacyAnalyticsConfig(\n searchEngineConfig: SearchEngineConfiguration,\n enabled: boolean,\n store: ReturnType<typeof createSearchStore>\n): AnalyticsConfiguration {\n const analyticsClientMiddleware = (\n event: string,\n payload: AnalyticsPayload\n ) => augmentAnalytics(event, payload, store, searchEngineConfig);\n\n const defaultConfiguration: AnalyticsConfiguration = {\n analyticsClientMiddleware,\n enabled,\n ...augmentAnalyticsConfigWithDocument(),\n };\n\n const immutableConfiguration: AnalyticsConfiguration = {\n ...augmentAnalyticsConfigWithAtomicVersion(),\n };\n\n if (searchEngineConfig.analytics) {\n return {\n ...defaultConfiguration,\n ...searchEngineConfig.analytics,\n analyticsClientMiddleware,\n ...immutableConfiguration,\n };\n }\n\n return {\n ...defaultConfiguration,\n ...immutableConfiguration,\n };\n}\n\nfunction augmentAnalytics(\n event: string,\n payload: AnalyticsPayload,\n store: ReturnType<typeof createSearchStore>,\n config: SearchEngineConfiguration\n) {\n let result = augmentWithExternalMiddleware(event, payload, config);\n result = augmentAnalyticsWithAtomicVersion(result);\n result = augmentAnalyticsWithFacetTitles(result, store);\n return result;\n}\n\nfunction augmentAnalyticsWithFacetTitles(\n payload: AnalyticsPayload,\n store: ReturnType<typeof createSearchStore>\n) {\n const allFacets = store.getAllFacets();\n const getAtomicFacetLabelOrOriginalTitle = (\n facetId: string,\n originalTitle: string\n ) => (allFacets[facetId] ? allFacets[facetId].label() : originalTitle);\n\n if (payload.facetState) {\n payload.facetState = payload.facetState.map(\n (analyticsFacetState: {id: string; title: string}) => {\n const {id, title: originalTitle} = analyticsFacetState;\n return {\n ...analyticsFacetState,\n title: getAtomicFacetLabelOrOriginalTitle(id, originalTitle),\n };\n }\n );\n }\n\n if (\n payload.customData?.facetTitle &&\n payload.customData.facetId &&\n payload.customData.facetTitle\n ) {\n payload.customData.facetTitle = getAtomicFacetLabelOrOriginalTitle(\n payload.customData.facetId,\n payload.customData.facetTitle\n );\n }\n return payload;\n}\n","import type {\n DateFacetValue,\n NumericFacetValue,\n SearchEngine,\n SortCriterion,\n} from '@coveo/headless';\nimport {DEFAULT_MOBILE_BREAKPOINT} from '../../../utils/replace-breakpoint';\nimport type {\n FacetInfo,\n FacetStore,\n FacetType,\n FacetValueFormat,\n} from '../../common/facets/facet-common-store';\nimport {\n type BaseStore,\n createBaseStore,\n getFacetElements,\n type ResultListInfo,\n registerFacet,\n setLoadingFlag,\n unsetLoadingFlag,\n waitUntilAppLoaded,\n} from '../../common/interface/store';\nimport {makeDesktopQuery} from '../atomic-search-layout/search-layout';\n\nexport interface SortDropdownOption {\n tabs: {included: string[] | string; excluded: string[] | string};\n expression: string;\n criteria: SortCriterion[];\n label: string;\n}\n\ninterface FacetInfoMap {\n [facetId: string]:\n | FacetInfo\n | (FacetInfo & FacetValueFormat<NumericFacetValue>)\n | (FacetInfo & FacetValueFormat<DateFacetValue>);\n}\n\ninterface Data {\n loadingFlags: string[];\n iconAssetsPath: string;\n resultList: ResultListInfo | undefined;\n mobileBreakpoint: string;\n facets: FacetStore<FacetInfo>;\n numericFacets: FacetStore<FacetInfo & FacetValueFormat<NumericFacetValue>>;\n dateFacets: FacetStore<FacetInfo & FacetValueFormat<DateFacetValue>>;\n categoryFacets: FacetStore<FacetInfo>;\n facetElements: HTMLElement[];\n fieldsToInclude: string[];\n sortOptions: SortDropdownOption[];\n}\n\nexport type SearchStore = BaseStore<Data> & {\n unsetLoadingFlag(loadingFlag: string): void;\n setLoadingFlag(flag: string): void;\n isMobile(): boolean;\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ): void;\n getFacetElements(): HTMLElement[];\n waitUntilAppLoaded(callback: () => void): void;\n getUniqueIDFromEngine(engine: SearchEngine): string;\n hasLoadingFlag(loadingFlag: string): boolean;\n getAllFacets(): FacetInfoMap;\n addFieldsToInclude(fields: string[]): void;\n};\n\nexport function createSearchStore(): SearchStore {\n const store = createBaseStore<Data>({\n loadingFlags: [],\n iconAssetsPath: '',\n resultList: undefined,\n mobileBreakpoint: DEFAULT_MOBILE_BREAKPOINT,\n facets: {},\n numericFacets: {},\n dateFacets: {},\n categoryFacets: {},\n facetElements: [],\n fieldsToInclude: [],\n sortOptions: [],\n });\n\n return {\n ...store,\n\n unsetLoadingFlag(loadingFlag: string) {\n unsetLoadingFlag(store, loadingFlag);\n },\n\n setLoadingFlag(loadingFlag: string) {\n setLoadingFlag(store, loadingFlag);\n },\n\n isMobile() {\n return !window.matchMedia(makeDesktopQuery(store.state.mobileBreakpoint))\n .matches;\n },\n\n registerFacet<T extends FacetType, U extends string>(\n facetType: T,\n data: Data[T][U] & {facetId: U; element: HTMLElement}\n ) {\n registerFacet(store, facetType, data);\n },\n\n getFacetElements() {\n return getFacetElements(store);\n },\n\n waitUntilAppLoaded(callback: () => void) {\n waitUntilAppLoaded(store, callback);\n },\n\n getUniqueIDFromEngine(engine: SearchEngine): string {\n return engine.state.search.response.searchUid;\n },\n\n hasLoadingFlag(loadingFlag: string) {\n return store.state.loadingFlags.indexOf(loadingFlag) !== -1;\n },\n\n getAllFacets() {\n return {\n ...store.state.facets,\n ...store.state.dateFacets,\n ...store.state.categoryFacets,\n ...store.state.numericFacets,\n };\n },\n\n addFieldsToInclude(fields) {\n const currentFields = store.state.fieldsToInclude;\n store.state.fieldsToInclude = [...currentFields, ...fields];\n },\n };\n}\n","@import '../../../global/global.pcss';\n\n:host {\n display: block;\n height: inherit;\n width: inherit;\n & > slot {\n height: inherit;\n }\n}\n","import {markParentAsReady} from '@/src/utils/init-queue';\nimport {\n LogLevel,\n Unsubscribe,\n buildUrlManager,\n UrlManager,\n buildSearchEngine,\n SearchEngine,\n SearchEngineConfiguration,\n SearchStatus,\n buildSearchStatus,\n loadSearchConfigurationActions,\n loadQueryActions,\n EcommerceDefaultFieldsToInclude,\n loadFieldActions,\n} from '@coveo/headless';\nimport {\n Component,\n Prop,\n h,\n Listen,\n Method,\n Watch,\n Element,\n State,\n setNonce,\n} from '@stencil/core';\nimport i18next, {i18n} from 'i18next';\nimport {InitializeEvent} from '../../../utils/initialization-utils';\nimport {\n SafeStorage,\n StandaloneSearchBoxData,\n StorageItems,\n} from '../../../utils/local-storage-utils';\nimport {ArrayProp} from '../../../utils/props-utils';\nimport {\n StencilBaseAtomicInterface,\n CommonAtomicInterfaceHelper,\n mismatchedInterfaceAndEnginePropError,\n} from '../../common/interface/interface-common-stencil';\nimport {\n errorSelector,\n firstSearchExecutedSelector,\n noResultsSelector,\n} from '../atomic-search-layout/search-layout';\nimport {getAnalyticsConfig} from './analytics-config';\nimport type {Bindings as _Bindings} from './interfaces';\nimport {createSearchStore, SearchStore} from './store';\n\nconst FirstSearchExecutedFlag = 'firstSearchExecuted';\nexport type InitializationOptions = SearchEngineConfiguration;\nexport type Bindings = _Bindings;\n\n/**\n * The `atomic-search-interface` component is the parent to all other atomic components in a search page. It handles the headless search engine and localization configurations.\n */\n@Component({\n tag: 'atomic-search-interface',\n styleUrl: 'atomic-search-interface.pcss',\n shadow: true,\n})\nexport class AtomicSearchInterface\n implements StencilBaseAtomicInterface<SearchEngine>\n{\n private urlManager!: UrlManager;\n private searchStatus!: SearchStatus;\n private unsubscribeUrlManager: Unsubscribe = () => {};\n private unsubscribeSearchStatus: Unsubscribe = () => {};\n private initialized = false;\n private store: SearchStore;\n private commonInterfaceHelper: CommonAtomicInterfaceHelper<SearchEngine>;\n\n @Element() public host!: HTMLAtomicSearchInterfaceElement;\n\n @State() public error?: Error;\n @State() relevanceInspectorIsOpen = false;\n\n /**\n * A list of non-default fields to include in the query results.\n *\n * Specify the property as an array using a JSON string representation:\n * ```html\n * <atomic-search-interface fields-to-include='[\"fieldA\", \"fieldB\"]'></atomic-search-interface>\n * ```\n */\n @ArrayProp()\n @Prop({mutable: true})\n public fieldsToInclude: string[] | string = '[]';\n\n /**\n * The search interface [query pipeline](https://docs.coveo.com/en/180/).\n *\n * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine), the query pipeline should instead be configured in the target engine.\n */\n @Prop({reflect: true, mutable: true}) public pipeline?: string;\n\n /**\n * The search interface [search hub](https://docs.coveo.com/en/1342/).\n *\n * If the search interface is initialized using [`initializeWithSearchEngine`](https://docs.coveo.com/en/atomic/latest/reference/components/atomic-search-interface/#initializewithsearchengine, the search hub should instead be configured in the target engine.\n */\n @Prop({reflect: true, mutable: true}) public searchHub?: string;\n\n /**\n * Whether analytics should be enabled.\n */\n @Prop({reflect: true}) public analytics = true;\n\n /**\n * The [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) identifier of the time zone to use to correctly interpret dates in the query expression, facets, and result items.\n * By default, the timezone will be [guessed](https://day.js.org/docs/en/timezone/guessing-user-timezone).\n *\n * Example: \"America/Montreal\"\n */\n @Prop({reflect: true}) public timezone?: string;\n\n /**\n * The severity level of the messages to log in the console.\n */\n @Prop({reflect: true}) public logLevel?: LogLevel;\n\n /**\n * The search interface i18next instance.\n */\n @Prop() public i18n: i18n;\n\n /**\n * The search interface language.\n */\n @Prop({reflect: true}) public language = 'en';\n\n /**\n * The search interface headless engine.\n */\n @Prop({mutable: true}) public engine?: SearchEngine;\n\n /**\n * Whether the state should be reflected in the URL parameters.\n */\n @Prop({reflect: true}) public reflectStateInUrl = true;\n\n /**\n * The CSS selector for the container where the interface will scroll back to.\n */\n @Prop({reflect: true}) public scrollContainer = 'atomic-search-interface';\n\n /**\n * The language assets path. By default, this will be a relative URL pointing to `./lang`.\n *\n * Example: \"/mypublicpath/languages\"\n *\n */\n @Prop({reflect: true}) public languageAssetsPath = './lang';\n\n /**\n * The icon assets path. By default, this will be a relative URL pointing to `./assets`.\n *\n * Example: \"/mypublicpath/icons\"\n *\n */\n @Prop({reflect: true}) public iconAssetsPath = './assets';\n\n /**\n * Whether the relevance inspector shortcut should be enabled for this interface.\n *\n * The relevance inspector can be opened by holding the Alt key (Option on Mac) while over the interface, and performing a double click.\n *\n * The relevance inspector allows to troubleshoot and debug queries.\n */\n @Prop({reflect: true}) public enableRelevanceInspector = true;\n\n /**\n * The value to set the [nonce](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) attribute to on inline script and style elements generated by this interface and its child components.\n * If your application is served with a Content Security Policy (CSP) that doesn't include the `script-src: 'unsafe-inline'` or `style-src: 'unsafe-inline'` directives,\n * you should ensure that your application server generates a new nonce on every page load and uses the generated value to set this prop and serve the corresponding CSP response headers\n * (i.e., script-src 'nonce-<YOUR_GENERATED_NONCE>' and style-src 'nonce-<YOUR_GENERATED_NONCE>').\n * Otherwise you may see console errors such as\n * - Refused to execute inline script because it violates the following Content Security Policy directive: [...]\n * - Refused to apply inline style because it violates the following Content Security Policy directive: [...].\n * @example:\n * ```html\n * <script nonce=\"<YOUR_GENERATED_NONCE>\">\n * import {setNonce} from '@coveo/atomic';\n * setNonce('<YOUR_GENERATED_NONCE>');\n * </script>\n * ```\n */\n @Prop({reflect: true}) public CspNonce?: string;\n\n private i18Initialized: Promise<void>;\n private componentWillLoadCalledPromise: Promise<void>;\n private componentWillLoadResolver: () => void;\n public constructor() {\n this.initRelevanceInspector();\n this.commonInterfaceHelper = new CommonAtomicInterfaceHelper(\n this,\n 'CoveoAtomic'\n );\n this.store = createSearchStore();\n ({\n promise: this.componentWillLoadCalledPromise,\n resolve: this.componentWillLoadResolver,\n } = Promise.withResolvers<void>());\n const {promise, resolve} = Promise.withResolvers<void>();\n this.i18Initialized = promise;\n this.i18n = i18next.createInstance(undefined, resolve);\n }\n\n public connectedCallback() {\n this.store.setLoadingFlag(FirstSearchExecutedFlag);\n this.updateMobileBreakpoint();\n }\n\n componentWillLoad() {\n if (this.CspNonce) {\n setNonce(this.CspNonce);\n }\n this.initAriaLive();\n this.initFieldsToInclude();\n this.componentWillLoadResolver();\n }\n\n public updateSearchConfiguration(\n updatedProp: 'searchHub' | 'pipeline',\n newValue: string | undefined\n ) {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n if (this.engine.state[updatedProp] === newValue) {\n return;\n }\n\n const {updateSearchConfiguration} = loadSearchConfigurationActions(\n this.engine\n );\n this.engine.dispatch(\n updateSearchConfiguration({\n [updatedProp]: newValue,\n })\n );\n }\n\n @Watch('searchHub')\n public updateSearchHub() {\n this.updateSearchConfiguration('searchHub', this.searchHub ?? 'default');\n }\n\n @Watch('pipeline')\n public updatePipeline() {\n this.updateSearchConfiguration('pipeline', this.pipeline);\n }\n\n @Watch('analytics')\n public toggleAnalytics() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n this.commonInterfaceHelper.onAnalyticsChange();\n }\n\n @Watch('language')\n public updateLanguage() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n const {updateSearchConfiguration} = loadSearchConfigurationActions(\n this.engine\n );\n this.engine.dispatch(\n updateSearchConfiguration({\n locale: this.language,\n })\n );\n return this.commonInterfaceHelper.onLanguageChange();\n }\n\n @Watch('iconAssetsPath')\n public updateIconAssetsPath() {\n this.store.state.iconAssetsPath = this.iconAssetsPath;\n }\n\n public disconnectedCallback() {\n this.unsubscribeUrlManager();\n this.unsubscribeSearchStatus();\n window.removeEventListener('hashchange', this.onHashChange);\n }\n\n @Listen('atomic/initializeComponent')\n public handleInitialization(event: InitializeEvent) {\n this.commonInterfaceHelper.onComponentInitializing(event);\n }\n\n @Listen('atomic/scrollToTop')\n public scrollToTop() {\n const scrollContainerElement = document.querySelector(this.scrollContainer);\n if (!scrollContainerElement) {\n this.bindings.engine.logger.warn(\n `Could not find the scroll container with the selector \"${this.scrollContainer}\". This will prevent UX interactions that require a scroll from working correctly. Please check the CSS selector in the scrollContainer option`\n );\n return;\n }\n\n scrollContainerElement.scrollIntoView({behavior: 'smooth'});\n }\n\n @Listen('atomic/relevanceInspector/close')\n public closeRelevanceInspector() {\n this.relevanceInspectorIsOpen = false;\n }\n\n /**\n * Initializes the connection with the headless search engine using options for `accessToken` (required), `organizationId` (required), `environment` (defaults to `prod`), and `renewAccessToken`.\n */\n @Method() public initialize(options: InitializationOptions) {\n return this.internalInitialization(() => this.initEngine(options));\n }\n\n /**\n * Initializes the connection with an already preconfigured [headless search engine](https://docs.coveo.com/en/headless/latest/reference/modules/Search.html, as opposed to the `initialize` method, which will internally create a new search engine instance.\n * This bypasses the properties set on the component, such as analytics, searchHub, pipeline, language, timezone & logLevel.\n */\n @Method() public initializeWithSearchEngine(engine: SearchEngine) {\n if (this.pipeline && this.pipeline !== engine.state.pipeline) {\n console.warn(\n mismatchedInterfaceAndEnginePropError('search', 'query pipeline')\n );\n }\n if (this.searchHub && this.searchHub !== engine.state.searchHub) {\n console.warn(\n mismatchedInterfaceAndEnginePropError('search', 'search hub')\n );\n }\n return this.internalInitialization(() => (this.engine = engine));\n }\n\n /**\n *\n * Executes the first search and logs the interface load event to analytics, after initializing connection to the headless search engine.\n */\n @Method() public async executeFirstSearch() {\n if (!this.commonInterfaceHelper.engineIsCreated(this.engine)) {\n return;\n }\n\n if (!this.initialized) {\n console.error(\n 'You have to wait until the \"initialize\" promise is fulfilled before executing a search.',\n this.host\n );\n return;\n }\n\n const safeStorage = new SafeStorage();\n const standaloneSearchBoxData =\n safeStorage.getParsedJSON<StandaloneSearchBoxData | null>(\n StorageItems.STANDALONE_SEARCH_BOX_DATA,\n null\n );\n\n if (!standaloneSearchBoxData) {\n this.engine.executeFirstSearch();\n return;\n }\n\n safeStorage.removeItem(StorageItems.STANDALONE_SEARCH_BOX_DATA);\n const {updateQuery} = loadQueryActions(this.engine!);\n const {value, enableQuerySyntax, analytics} = standaloneSearchBoxData;\n this.engine!.dispatch(updateQuery({q: value, enableQuerySyntax}));\n this.engine.executeFirstSearchAfterStandaloneSearchBoxRedirect(analytics);\n }\n\n public get bindings(): Bindings {\n return {\n engine: this.engine!,\n i18n: this.i18n,\n store: this.store,\n interfaceElement: this.host,\n createStyleElement: () => {\n const styleTag = document.createElement('style');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n createScriptElement: () => {\n const styleTag = document.createElement('script');\n if (this.CspNonce) {\n styleTag.setAttribute('nonce', this.CspNonce);\n }\n return styleTag;\n },\n };\n }\n\n private initFieldsToInclude() {\n const fields = EcommerceDefaultFieldsToInclude.concat(this.fieldsToInclude);\n this.store.addFieldsToInclude(fields);\n }\n\n public registerFieldsToInclude() {\n this.engine?.dispatch(\n loadFieldActions(this.engine!).registerFieldsToInclude(\n this.store.state.fieldsToInclude\n )\n );\n }\n\n private updateMobileBreakpoint() {\n const breakpoint = this.host.querySelector(\n 'atomic-search-layout'\n )?.mobileBreakpoint;\n if (breakpoint) {\n this.store.state.mobileBreakpoint = breakpoint;\n }\n }\n\n private initEngine(options: InitializationOptions) {\n const searchConfig = this.getSearchConfiguration(options);\n const analyticsConfig = getAnalyticsConfig(\n options,\n this.analytics,\n this.store\n );\n try {\n this.engine = buildSearchEngine({\n configuration: {\n ...options,\n search: searchConfig,\n analytics: analyticsConfig,\n },\n loggerOptions: {\n level: this.logLevel,\n },\n });\n } catch (error) {\n this.error = error as Error;\n throw error;\n }\n }\n\n private getSearchConfiguration(options: InitializationOptions) {\n const searchConfigFromProps = {\n searchHub: this.searchHub ?? 'default',\n pipeline: this.pipeline,\n locale: this.language,\n timezone: this.timezone,\n };\n\n if (options.search) {\n return {\n ...searchConfigFromProps,\n ...options.search,\n };\n }\n\n return searchConfigFromProps;\n }\n\n private get fragment() {\n return window.location.hash.slice(1);\n }\n\n private initUrlManager() {\n if (!this.reflectStateInUrl) {\n return;\n }\n\n this.urlManager = buildUrlManager(this.engine!, {\n initialState: {fragment: this.fragment},\n });\n\n this.unsubscribeUrlManager = this.urlManager.subscribe(() =>\n this.updateHash()\n );\n\n window.addEventListener('hashchange', this.onHashChange);\n }\n\n private initAriaLive() {\n if (\n Array.from(this.host.children).some(\n (element) => element.tagName === 'ATOMIC-ARIA-LIVE'\n )\n ) {\n return;\n }\n const ariaLive = document.createElement('atomic-aria-live');\n this.host.prepend(ariaLive);\n }\n\n private initRelevanceInspector() {\n if (this.enableRelevanceInspector) {\n this.host.addEventListener('dblclick', (e) => {\n if (e.altKey) {\n this.relevanceInspectorIsOpen = !this.relevanceInspectorIsOpen;\n }\n });\n }\n }\n\n private initSearchStatus() {\n this.searchStatus = buildSearchStatus(this.engine!);\n this.unsubscribeSearchStatus = this.searchStatus.subscribe(() => {\n const hasNoResultsAfterInitialSearch =\n !this.searchStatus.state.hasResults &&\n this.searchStatus.state.firstSearchExecuted &&\n !this.searchStatus.state.hasError;\n\n this.host.classList.toggle(\n noResultsSelector,\n hasNoResultsAfterInitialSearch\n );\n\n this.host.classList.toggle(\n errorSelector,\n this.searchStatus.state.hasError\n );\n\n this.host.classList.toggle(\n firstSearchExecutedSelector,\n this.searchStatus.state.firstSearchExecuted\n );\n\n if (\n this.searchStatus.state.firstSearchExecuted &&\n this.store.hasLoadingFlag(FirstSearchExecutedFlag)\n ) {\n this.store.unsetLoadingFlag(FirstSearchExecutedFlag);\n }\n });\n }\n\n private updateHash() {\n const newFragment = this.urlManager.state.fragment;\n\n if (!this.searchStatus.state.firstSearchExecuted) {\n history.replaceState(null, document.title, `#${newFragment}`);\n this.bindings.engine.logger.info(`History replaceState #${newFragment}`);\n\n return;\n }\n\n history.pushState(null, document.title, `#${newFragment}`);\n this.bindings.engine.logger.info(`History pushState #${newFragment}`);\n }\n\n private onHashChange = () => {\n this.urlManager.synchronize(this.fragment);\n };\n\n private async internalInitialization(initEngine: () => void) {\n await this.componentWillLoadCalledPromise;\n await Promise.all([\n this.commonInterfaceHelper.onInitialization(initEngine),\n this.i18Initialized,\n ]);\n await this.updateLanguage();\n markParentAsReady(this.host);\n this.pipeline = this.engine!.state.pipeline;\n this.searchHub = this.engine!.state.searchHub;\n this.initSearchStatus();\n this.initUrlManager();\n this.initialized = true;\n }\n\n public render() {\n return [\n this.engine && this.enableRelevanceInspector && (\n <atomic-relevance-inspector\n open={this.relevanceInspectorIsOpen}\n bindings={this.bindings}\n ></atomic-relevance-inspector>\n ),\n <slot></slot>,\n ];\n }\n}\n"],"mappings":"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","ignoreList":[]}
|