@coveo/atomic 3.34.0-pre.e940bd417f → 3.34.0-pre.f310961b1a
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/atomic.esm.js.map +1 -1
- package/dist/atomic/components/_index.d.ts +0 -2
- package/dist/atomic/components/_index.js +0 -1
- package/dist/atomic/components/analytics-config.js +1 -1
- package/dist/atomic/components/atomic-category-facet.js +1 -1
- package/dist/atomic/components/atomic-facet.js +1 -1
- package/dist/atomic/components/atomic-format-currency.js +1 -1
- package/dist/atomic/components/atomic-format-number.js +1 -1
- package/dist/atomic/components/atomic-format-unit.js +1 -1
- package/dist/atomic/components/atomic-numeric-facet.js +1 -1
- package/dist/atomic/components/atomic-quickview-modal2.js +23 -23
- package/dist/atomic/components/atomic-quickview-modal2.js.map +1 -1
- package/dist/atomic/components/atomic-quickview.js +1 -1
- package/dist/atomic/components/atomic-result-children.js +1 -1
- package/dist/atomic/components/atomic-result-fields-list.js +1 -1
- package/dist/atomic/components/atomic-result-link.js +1 -1
- package/dist/atomic/components/atomic-result-list.js +1 -1
- package/dist/atomic/components/atomic-result-table-placeholder2.js +1 -1
- package/dist/atomic/components/atomic-search-box-recent-queries2.js +1 -1
- package/dist/atomic/components/atomic-search-box.js +3 -3
- package/dist/atomic/components/atomic-smart-snippet-feedback-modal2.js +2 -2
- package/dist/atomic/components/atomic-sort-dropdown.js +2 -2
- package/dist/atomic/components/atomic-sort-expression.js +1 -1
- package/dist/atomic/components/atomic-tab-manager.js +1 -1
- package/dist/atomic/components/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.js +17 -32
- package/dist/atomic/components/components/common/suggestions/query-suggestions.js +11 -16
- package/dist/atomic/components/components/common/validate-props-controller/validate-props-controller.js +50 -0
- package/dist/atomic/components/components/search/atomic-relevance-inspector/atomic-relevance-inspector.js +100 -0
- package/dist/atomic/components/components/search/atomic-search-interface/atomic-search-interface.js +17 -24
- package/dist/atomic/components/components/search/index.js +1 -0
- package/dist/atomic/components/components/search/lazy-index.js +1 -0
- package/dist/atomic/components/global/environment.js +1 -1
- package/dist/atomic/components/index.js.map +1 -1
- package/dist/atomic/components/utils/compare-utils.js +49 -0
- package/dist/atomic/{p-475124d2.entry.js → p-01511388.entry.js} +2 -2
- package/dist/atomic/{p-69e92a57.entry.js → p-0963e828.entry.js} +2 -2
- package/dist/atomic/{p-60800b2f.entry.js → p-0ed76e65.entry.js} +2 -2
- package/dist/atomic/{p-16f6c1f3.entry.js → p-2fb49fe8.entry.js} +2 -2
- package/dist/atomic/{p-13391e75.entry.js → p-3549a469.entry.js} +2 -2
- package/dist/atomic/{p-5a710350.entry.js → p-40c1dfcb.entry.js} +2 -2
- package/dist/atomic/{p-7c3c5f07.entry.js → p-4f4c9a03.entry.js} +2 -2
- package/dist/atomic/p-4f4c9a03.entry.js.map +1 -0
- package/dist/atomic/{p-ca3dc59b.entry.js → p-52d5461a.entry.js} +2 -2
- package/dist/atomic/{p-7ec6dd3e.entry.js → p-65dd9017.entry.js} +2 -2
- package/dist/atomic/{p-f2bab68d.entry.js → p-691f5027.entry.js} +2 -2
- package/dist/atomic/{p-86bde026.entry.js → p-736f4d7e.entry.js} +2 -2
- package/dist/atomic/{p-3cbab25b.entry.js → p-7e971d15.entry.js} +2 -2
- package/dist/atomic/{p-4601eb93.entry.js → p-83d3857f.entry.js} +2 -2
- package/dist/atomic/{p-dbcef3a9.entry.js → p-87f69e53.entry.js} +2 -2
- package/dist/atomic/{p-e398835b.entry.js → p-b2b9e83f.entry.js} +2 -2
- package/dist/atomic/{p-8fdef8a3.entry.js → p-b313058c.entry.js} +2 -2
- package/dist/atomic/{p-0bdd730f.entry.js → p-b6ae0244.entry.js} +2 -2
- package/dist/atomic/{p-3a7a1a00.entry.js → p-bbfe727a.entry.js} +2 -2
- package/dist/atomic/{p-97ce3384.entry.js → p-be2a43f4.entry.js} +2 -2
- package/dist/atomic/{p-a5714bc4.entry.js → p-d211a422.entry.js} +2 -2
- package/dist/atomic/{p-fd06c36c.js → p-e515b613.js} +2 -2
- package/dist/atomic/{p-b7962aaf.entry.js → p-fdd095ae.entry.js} +2 -2
- package/dist/cjs/_loader.cjs.js +1 -1
- package/dist/cjs/{analytics-config-c743349f.js → analytics-config-475509d4.js} +2 -2
- package/dist/cjs/{analytics-config-c743349f.js.map → analytics-config-475509d4.js.map} +1 -1
- package/dist/cjs/atomic-category-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-currency.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-number.cjs.entry.js +1 -1
- package/dist/cjs/atomic-format-unit.cjs.entry.js +1 -1
- package/dist/cjs/atomic-insight-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-numeric-facet.cjs.entry.js +1 -1
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js +23 -23
- package/dist/cjs/atomic-quickview-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/atomic-quickview.cjs.entry.js +1 -1
- package/dist/cjs/atomic-recs-interface.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-children.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-fields-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-link.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-list.cjs.entry.js +1 -1
- package/dist/cjs/atomic-result-placeholder_8.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box-recent-queries.cjs.entry.js +1 -1
- package/dist/cjs/atomic-search-box.cjs.entry.js +3 -3
- package/dist/cjs/atomic-smart-snippet-feedback-modal.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-dropdown.cjs.entry.js +2 -2
- package/dist/cjs/atomic-sort-expression.cjs.entry.js +1 -1
- package/dist/cjs/atomic-tab-manager.cjs.entry.js +1 -1
- package/dist/cjs/atomic.cjs.js +1 -1
- package/dist/cjs/index-757bc886.js +0 -4
- package/dist/cjs/version.cjs.js +1 -1
- package/dist/esm/_loader.js +1 -1
- package/dist/esm/{analytics-config-e54a0c06.js → analytics-config-2d2e39ed.js} +2 -2
- package/dist/esm/{analytics-config-e54a0c06.js.map → analytics-config-2d2e39ed.js.map} +1 -1
- package/dist/esm/atomic-category-facet.entry.js +1 -1
- package/dist/esm/atomic-facet.entry.js +1 -1
- package/dist/esm/atomic-format-currency.entry.js +1 -1
- package/dist/esm/atomic-format-number.entry.js +1 -1
- package/dist/esm/atomic-format-unit.entry.js +1 -1
- package/dist/esm/atomic-insight-interface.entry.js +1 -1
- package/dist/esm/atomic-numeric-facet.entry.js +1 -1
- package/dist/esm/atomic-quickview-modal.entry.js +23 -23
- package/dist/esm/atomic-quickview-modal.entry.js.map +1 -1
- package/dist/esm/atomic-quickview.entry.js +1 -1
- package/dist/esm/atomic-recs-interface.entry.js +1 -1
- package/dist/esm/atomic-result-children.entry.js +1 -1
- package/dist/esm/atomic-result-fields-list.entry.js +1 -1
- package/dist/esm/atomic-result-link.entry.js +1 -1
- package/dist/esm/atomic-result-list.entry.js +1 -1
- package/dist/esm/atomic-result-placeholder_8.entry.js +1 -1
- package/dist/esm/atomic-search-box-recent-queries.entry.js +1 -1
- package/dist/esm/atomic-search-box.entry.js +3 -3
- package/dist/esm/atomic-smart-snippet-feedback-modal.entry.js +2 -2
- package/dist/esm/atomic-sort-dropdown.entry.js +2 -2
- package/dist/esm/atomic-sort-expression.entry.js +1 -1
- package/dist/esm/atomic-tab-manager.entry.js +1 -1
- package/dist/esm/atomic.js +1 -1
- package/dist/esm/index-3f35faca.js +0 -4
- package/dist/esm/version.js +1 -1
- package/dist/types/components/commerce/atomic-commerce-breadbox/atomic-commerce-breadbox.d.ts +2 -3
- package/dist/types/components/common/facets/facet-search/facet-search-input-guard.d.ts +1 -1
- package/dist/types/components/common/no-items/guard.d.ts +1 -1
- package/dist/types/components/common/refine-modal/guard.d.ts +1 -1
- package/dist/types/components/common/sort/sort-guard.d.ts +1 -1
- package/dist/types/components/common/validate-props-controller/validate-props-controller.d.ts +32 -0
- package/dist/types/components/search/atomic-relevance-inspector/atomic-relevance-inspector.d.ts +18 -8
- package/dist/types/components/search/atomic-search-interface/atomic-search-interface.d.ts +6 -3
- package/dist/types/components/search/index.d.ts +1 -0
- package/dist/types/components.d.ts +0 -53
- package/dist/types/directives/hierarchical-path.d.ts +1 -1
- package/dist/types/utils/compare-utils.d.ts +9 -0
- package/docs/atomic-docs.json +1 -88
- package/package.json +1 -1
- package/dist/atomic/components/atomic-relevance-inspector.d.ts +0 -11
- package/dist/atomic/components/atomic-relevance-inspector.js +0 -53
- package/dist/atomic/components/atomic-relevance-inspector.js.map +0 -1
- package/dist/atomic/p-7c3c5f07.entry.js.map +0 -1
- package/dist/atomic/p-de687bed.entry.js +0 -2
- package/dist/atomic/p-de687bed.entry.js.map +0 -1
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js +0 -38
- package/dist/cjs/atomic-relevance-inspector.cjs.entry.js.map +0 -1
- package/dist/esm/atomic-relevance-inspector.entry.js +0 -34
- package/dist/esm/atomic-relevance-inspector.entry.js.map +0 -1
- /package/dist/atomic/{p-475124d2.entry.js.map → p-01511388.entry.js.map} +0 -0
- /package/dist/atomic/{p-69e92a57.entry.js.map → p-0963e828.entry.js.map} +0 -0
- /package/dist/atomic/{p-60800b2f.entry.js.map → p-0ed76e65.entry.js.map} +0 -0
- /package/dist/atomic/{p-16f6c1f3.entry.js.map → p-2fb49fe8.entry.js.map} +0 -0
- /package/dist/atomic/{p-13391e75.entry.js.map → p-3549a469.entry.js.map} +0 -0
- /package/dist/atomic/{p-5a710350.entry.js.map → p-40c1dfcb.entry.js.map} +0 -0
- /package/dist/atomic/{p-ca3dc59b.entry.js.map → p-52d5461a.entry.js.map} +0 -0
- /package/dist/atomic/{p-7ec6dd3e.entry.js.map → p-65dd9017.entry.js.map} +0 -0
- /package/dist/atomic/{p-f2bab68d.entry.js.map → p-691f5027.entry.js.map} +0 -0
- /package/dist/atomic/{p-86bde026.entry.js.map → p-736f4d7e.entry.js.map} +0 -0
- /package/dist/atomic/{p-3cbab25b.entry.js.map → p-7e971d15.entry.js.map} +0 -0
- /package/dist/atomic/{p-4601eb93.entry.js.map → p-83d3857f.entry.js.map} +0 -0
- /package/dist/atomic/{p-dbcef3a9.entry.js.map → p-87f69e53.entry.js.map} +0 -0
- /package/dist/atomic/{p-e398835b.entry.js.map → p-b2b9e83f.entry.js.map} +0 -0
- /package/dist/atomic/{p-8fdef8a3.entry.js.map → p-b313058c.entry.js.map} +0 -0
- /package/dist/atomic/{p-0bdd730f.entry.js.map → p-b6ae0244.entry.js.map} +0 -0
- /package/dist/atomic/{p-3a7a1a00.entry.js.map → p-bbfe727a.entry.js.map} +0 -0
- /package/dist/atomic/{p-97ce3384.entry.js.map → p-be2a43f4.entry.js.map} +0 -0
- /package/dist/atomic/{p-a5714bc4.entry.js.map → p-d211a422.entry.js.map} +0 -0
- /package/dist/atomic/{p-fd06c36c.js.map → p-e515b613.js.map} +0 -0
- /package/dist/atomic/{p-b7962aaf.entry.js.map → p-fdd095ae.entry.js.map} +0 -0
package/docs/atomic-docs.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"timestamp": "2025-10-
|
2
|
+
"timestamp": "2025-10-06T18:24:24",
|
3
3
|
"compiler": {
|
4
4
|
"name": "@stencil/core",
|
5
5
|
"version": "4.20.0",
|
@@ -9175,88 +9175,6 @@
|
|
9175
9175
|
]
|
9176
9176
|
}
|
9177
9177
|
},
|
9178
|
-
{
|
9179
|
-
"filePath": "src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.tsx",
|
9180
|
-
"encapsulation": "shadow",
|
9181
|
-
"tag": "atomic-relevance-inspector",
|
9182
|
-
"docs": "The `atomic-relevance-inspector` component is used internally to offer insight on search page relevance, as well as information to help troubleshoot issues during development.",
|
9183
|
-
"docsTags": [],
|
9184
|
-
"usage": {},
|
9185
|
-
"props": [
|
9186
|
-
{
|
9187
|
-
"name": "bindings",
|
9188
|
-
"type": "CommonBindings<SearchEngine<{}>, SearchStore, AtomicSearchInterface> & NonceBindings",
|
9189
|
-
"complexType": {
|
9190
|
-
"original": "Bindings",
|
9191
|
-
"resolved": "CommonBindings<SearchEngine<{}>, SearchStore, AtomicSearchInterface> & NonceBindings",
|
9192
|
-
"references": {
|
9193
|
-
"Bindings": {
|
9194
|
-
"location": "import",
|
9195
|
-
"path": "../atomic-search-interface/atomic-search-interface",
|
9196
|
-
"id": "src/components/search/atomic-search-interface/atomic-search-interface.ts::Bindings"
|
9197
|
-
}
|
9198
|
-
}
|
9199
|
-
},
|
9200
|
-
"mutable": false,
|
9201
|
-
"reflectToAttr": false,
|
9202
|
-
"docs": "The Atomic interface bindings, namely the headless search engine and i18n instances.",
|
9203
|
-
"docsTags": [],
|
9204
|
-
"values": [
|
9205
|
-
{
|
9206
|
-
"type": "CommonBindings<SearchEngine<{}>, SearchStore, AtomicSearchInterface> & NonceBindings"
|
9207
|
-
}
|
9208
|
-
],
|
9209
|
-
"optional": false,
|
9210
|
-
"required": true
|
9211
|
-
},
|
9212
|
-
{
|
9213
|
-
"name": "open",
|
9214
|
-
"type": "boolean",
|
9215
|
-
"complexType": {
|
9216
|
-
"original": "boolean",
|
9217
|
-
"resolved": "boolean",
|
9218
|
-
"references": {}
|
9219
|
-
},
|
9220
|
-
"mutable": false,
|
9221
|
-
"attr": "open",
|
9222
|
-
"reflectToAttr": true,
|
9223
|
-
"docs": "",
|
9224
|
-
"docsTags": [],
|
9225
|
-
"default": "false",
|
9226
|
-
"values": [
|
9227
|
-
{
|
9228
|
-
"type": "boolean"
|
9229
|
-
}
|
9230
|
-
],
|
9231
|
-
"optional": false,
|
9232
|
-
"required": false
|
9233
|
-
}
|
9234
|
-
],
|
9235
|
-
"methods": [],
|
9236
|
-
"events": [
|
9237
|
-
{
|
9238
|
-
"event": "atomic/relevanceInspector/close",
|
9239
|
-
"detail": "any",
|
9240
|
-
"bubbles": true,
|
9241
|
-
"complexType": {
|
9242
|
-
"original": "any",
|
9243
|
-
"resolved": "any",
|
9244
|
-
"references": {}
|
9245
|
-
},
|
9246
|
-
"cancelable": true,
|
9247
|
-
"composed": true,
|
9248
|
-
"docs": "",
|
9249
|
-
"docsTags": []
|
9250
|
-
}
|
9251
|
-
],
|
9252
|
-
"listeners": [],
|
9253
|
-
"styles": [],
|
9254
|
-
"slots": [],
|
9255
|
-
"parts": [],
|
9256
|
-
"dependents": [],
|
9257
|
-
"dependencies": [],
|
9258
|
-
"dependencyGraph": {}
|
9259
|
-
},
|
9260
9178
|
{
|
9261
9179
|
"filePath": "src/components/search/atomic-result/atomic-result.tsx",
|
9262
9180
|
"encapsulation": "shadow",
|
@@ -15426,11 +15344,6 @@
|
|
15426
15344
|
"docstring": "",
|
15427
15345
|
"path": "src/utils/initialization-utils.tsx"
|
15428
15346
|
},
|
15429
|
-
"src/components/search/atomic-search-interface/atomic-search-interface.ts::Bindings": {
|
15430
|
-
"declaration": "export type Bindings = CommonBindings<\n SearchEngine,\n SearchStore,\n AtomicSearchInterface\n> &\n //TODO: KIT-4893 - Remove once atomic-quickview-modal migration is complete.\n NonceBindings;",
|
15431
|
-
"docstring": "",
|
15432
|
-
"path": "src/components/search/atomic-search-interface/atomic-search-interface.ts"
|
15433
|
-
},
|
15434
15347
|
"../headless/dist/definitions/index.d.ts::FoldedResult": {
|
15435
15348
|
"declaration": "any",
|
15436
15349
|
"docstring": "",
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@coveo/atomic",
|
3
3
|
"type": "module",
|
4
|
-
"version": "3.34.0-pre.
|
4
|
+
"version": "3.34.0-pre.f310961b1a",
|
5
5
|
"description": "A web-component library for building modern UIs interfacing with the Coveo platform",
|
6
6
|
"homepage": "https://docs.coveo.com/en/atomic/latest/",
|
7
7
|
"repository": {
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import type { Components, JSX } from "../../types/components";
|
2
|
-
|
3
|
-
interface AtomicRelevanceInspector extends Components.AtomicRelevanceInspector, HTMLElement {}
|
4
|
-
export const AtomicRelevanceInspector: {
|
5
|
-
prototype: AtomicRelevanceInspector;
|
6
|
-
new (): AtomicRelevanceInspector;
|
7
|
-
};
|
8
|
-
/**
|
9
|
-
* Used to define this component and all nested components recursively.
|
10
|
-
*/
|
11
|
-
export const defineCustomElement: () => void;
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
2
|
-
import { getOrganizationEndpoint } from '@coveo/headless';
|
3
|
-
import { B as Button } from './stencil-button.js';
|
4
|
-
|
5
|
-
const atomicRelevanceInspectorCss = "/*! tailwindcss v4.1.13 | 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 ::-webkit-calendar-picker-indicator {\n line-height: 1;\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-path: inset(50%);\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 .inset-0 {\n inset: calc(0.25rem * 0);\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-\\[auto\\] {\n aspect-ratio: 1 / 1;\n height: auto;\n }\n @supports not (aspect-ratio: 1 / 1) {\n .aspect-square-\\[auto\\] {\n height: auto;\n }\n }\n .aspect-square-\\[auto\\] {\n aspect-ratio: 1 / 1;\n height: auto;\n }\n @supports not (aspect-ratio: 1 / 1) {\n .aspect-square-\\[auto\\] {\n height: auto;\n }\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 .min-lines-2 {\n min-height: calc(var(--line-height) * 2);\n }\n .min-lines-2 {\n min-height: calc(var(--line-height) * 2);\n }\n .min-lines-3 {\n min-height: calc(var(--line-height) * 3);\n }\n .min-lines-3 {\n min-height: calc(var(--line-height) * 3);\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-\\[rgba\\(40\\,40\\,40\\,0\\.8\\)\\] {\n background-color: rgba(40,40,40,0.8);\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-4\\.5 {\n padding-block: calc(0.25rem * 4.5);\n }\n .py-5 {\n padding-block: calc(0.25rem * 5);\n }\n .py-6 {\n padding-block: calc(0.25rem * 6);\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-5 {\n padding-bottom: calc(0.25rem * 5);\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 .grayscale {\n --tw-grayscale: grayscale(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 .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, 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-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\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 .duration-500 {\n --tw-duration: 500ms;\n transition-duration: 500ms;\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 .\\[grid-area\\:modal\\] {\n grid-area: modal;\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 --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 --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 :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@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";
|
6
|
-
const AtomicRelevanceInspectorStyle0 = atomicRelevanceInspectorCss;
|
7
|
-
|
8
|
-
const AtomicRelevanceInspector$1 = /*@__PURE__*/ proxyCustomElement(class AtomicRelevanceInspector extends HTMLElement {
|
9
|
-
constructor() {
|
10
|
-
super();
|
11
|
-
this.__registerHost();
|
12
|
-
this.__attachShadow();
|
13
|
-
this.closeRelevanceInspector = createEvent(this, "atomic/relevanceInspector/close", 7);
|
14
|
-
this.open = false;
|
15
|
-
this.bindings = undefined;
|
16
|
-
this.open = false;
|
17
|
-
}
|
18
|
-
render() {
|
19
|
-
return (h("atomic-modal", { key: 'e809eacbd92d6aa2217113cc333e350d8a2d4d85', exportparts: "footer", isOpen: this.open, close: () => {
|
20
|
-
this.closeRelevanceInspector?.emit();
|
21
|
-
} }, h("p", { key: '263264d8fa09af2b69600ecaf18d61a126966d34', slot: "header" }, "Open the relevance inspector"), h("p", { key: 'cd9e787accfb369d1b7999e24947db72909eb037', slot: "body" }, "The Relevance Inspector will open in the Coveo Administration Console."), h("div", { key: '1bcea9f1ad1a48607c841c1279bf6c0cf12352d7', slot: "footer", class: "flex w-full items-center justify-end" }, h(Button, { key: '3fc7c82a1f993104ca889a93ceadbef6a244f524', style: "outline-primary", class: "mr-2 p-2", onClick: () => this.closeRelevanceInspector?.emit() }, "Ignore"), h("a", { key: '5ca578e81b6e3215165f512bb60440f0680cb73d', class: "btn-primary p-2", target: "_blank", href: this.adminHref, onClick: () => this.closeRelevanceInspector?.emit() }, "Open"))));
|
22
|
-
}
|
23
|
-
get adminHref() {
|
24
|
-
const { organizationId, environment } = this.bindings.engine.state.configuration;
|
25
|
-
const admin = getOrganizationEndpoint(organizationId, environment, 'admin');
|
26
|
-
const { searchResponseId } = this.bindings.engine.state.search;
|
27
|
-
return `${admin}/admin/#/${organizationId}/search/relevanceInspector/${searchResponseId}`;
|
28
|
-
}
|
29
|
-
static get style() { return AtomicRelevanceInspectorStyle0; }
|
30
|
-
}, [1, "atomic-relevance-inspector", {
|
31
|
-
"bindings": [16],
|
32
|
-
"open": [516]
|
33
|
-
}]);
|
34
|
-
function defineCustomElement$1() {
|
35
|
-
if (typeof customElements === "undefined") {
|
36
|
-
return;
|
37
|
-
}
|
38
|
-
const components = ["atomic-relevance-inspector"];
|
39
|
-
components.forEach(tagName => { switch (tagName) {
|
40
|
-
case "atomic-relevance-inspector":
|
41
|
-
if (!customElements.get(tagName)) {
|
42
|
-
customElements.define(tagName, AtomicRelevanceInspector$1);
|
43
|
-
}
|
44
|
-
break;
|
45
|
-
} });
|
46
|
-
}
|
47
|
-
|
48
|
-
const AtomicRelevanceInspector = AtomicRelevanceInspector$1;
|
49
|
-
const defineCustomElement = defineCustomElement$1;
|
50
|
-
|
51
|
-
export { AtomicRelevanceInspector, defineCustomElement };
|
52
|
-
|
53
|
-
//# sourceMappingURL=atomic-relevance-inspector.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"file":"atomic-relevance-inspector.js","mappings":";;;;AAAA,MAAM,2BAA2B,GAAG,0ljEAA0ljE,CAAC;AAC/njE,uCAAe,2BAA2B;;MCY7BA,0BAAwB;;;;;;QAMZ,SAAI,GAAG,KAAK,CAAC;;oBAAN,KAAK;;IAK5B,MAAM;QACX,QACE,qEACE,WAAW,EAAC,QAAQ,EACpB,MAAM,EAAE,IAAI,CAAC,IAAI,EACjB,KAAK,EAAE;gBACL,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC;aACtC,IAED,0DAAG,IAAI,EAAC,QAAQ,mCAAiC,EACjD,0DAAG,IAAI,EAAC,MAAM,6EAEV,EACJ,4DAAK,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,sCAAsC,IAC7D,EAAC,MAAM,qDACL,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAC,UAAU,EAChB,OAAO,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,aAG5C,EACT,0DACE,KAAK,EAAC,iBAAiB,EACvB,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAE,WAGjD,CACA,CACO,EACf;KACH;IAED,IAAY,SAAS;QACnB,MAAM,EAAC,cAAc,EAAE,WAAW,EAAC,GACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;QAE3C,MAAM,KAAK,GAAG,uBAAuB,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,EAAC,gBAAgB,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7D,OAAO,GAAG,KAAK,YAAY,cAAc,8BAA8B,gBAAgB,EAAE,CAAC;KAC3F;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AtomicRelevanceInspector"],"sources":["src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.pcss?tag=atomic-relevance-inspector&encapsulation=shadow","src/components/search/atomic-relevance-inspector/atomic-relevance-inspector.tsx"],"sourcesContent":["@import '../../../global/global.pcss';\n","import {getOrganizationEndpoint} from '@coveo/headless';\nimport {Component, h, Prop, Event, EventEmitter} from '@stencil/core';\nimport {Button} from '../../common/stencil-button';\nimport {Bindings} from '../atomic-search-interface/atomic-search-interface';\n\n/**\n * The `atomic-relevance-inspector` component is used internally to offer insight on search page relevance, as well as information to help troubleshoot issues during development.\n */\n@Component({\n tag: 'atomic-relevance-inspector',\n styleUrl: 'atomic-relevance-inspector.pcss',\n shadow: true,\n})\nexport class AtomicRelevanceInspector {\n /**\n * The Atomic interface bindings, namely the headless search engine and i18n instances.\n */\n @Prop() bindings!: Bindings;\n\n @Prop({reflect: true}) open = false;\n\n @Event({eventName: 'atomic/relevanceInspector/close'})\n closeRelevanceInspector: EventEmitter<null> | undefined;\n\n public render() {\n return (\n <atomic-modal\n exportparts=\"footer\"\n isOpen={this.open}\n close={() => {\n this.closeRelevanceInspector?.emit();\n }}\n >\n <p slot=\"header\">Open the relevance inspector</p>\n <p slot=\"body\">\n The Relevance Inspector will open in the Coveo Administration Console.\n </p>\n <div slot=\"footer\" class=\"flex w-full items-center justify-end\">\n <Button\n style=\"outline-primary\"\n class=\"mr-2 p-2\"\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Ignore\n </Button>\n <a\n class=\"btn-primary p-2\"\n target=\"_blank\"\n href={this.adminHref}\n onClick={() => this.closeRelevanceInspector?.emit()}\n >\n Open\n </a>\n </div>\n </atomic-modal>\n );\n }\n\n private get adminHref() {\n const {organizationId, environment} =\n this.bindings.engine.state.configuration;\n\n const admin = getOrganizationEndpoint(organizationId, environment, 'admin');\n const {searchResponseId} = this.bindings.engine.state.search;\n return `${admin}/admin/#/${organizationId}/search/relevanceInspector/${searchResponseId}`;\n }\n}\n"],"version":3}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["identifierKeywordsSection","QuickviewSidebar","props","words","minimized","numberOfWords","Object","values","length","minimizeButton","h","MinimizeButton","wordsLength","class","HighlightKeywordsCheckbox","Keywords","i18n","onMinimize","highlightKeywords","IconButton","partPrefix","icon","MinimizeIcon","style","title","t","ariaLabel","onClick","badge","undefined","ariaExpanded","toString","ariaControls","onHighlightKeywords","Fragment","StencilCheckbox","text","id","checked","highlightNone","onToggle","htmlFor","map","keyword","wordIsEnabled","keywords","enabled","key","backgroundColor","color","Intl","NumberFormat","language","notation","format","occurrences","FieldsetGroup","label","ArrowDown","disabled","navigateForward","ArrowUp","navigateBackward","tabIndex","ariaPressed","Remove","Add","indexIdentifier","documentIdentifierInIframe","writeDocument","documentWriter","content","open","write","close","scrollingElement","scrollTop","currentResultAlreadyWrittenToDocument","uniqueIdentifier","currentDocIdentifier","getElementById","textContent","ensureSameResultIsNotOverwritten","docIdentifier","createElement","display","setAttribute","body","appendChild","warnAboutLimitedUsageQuickview","logger","warn","QuickviewIframe","onSetIframeRef","sandbox","src","waitForIframeContentToBeWritten","Promise","resolve","setTimeout","ref","async","el","iframeRef","contentDocument","buildPreviewBar","previewBarId","bar","innerHTML","position","top","right","width","height","buildPreviewUnit","word","wordElement","docHeight","previewUnit","elementPosition","getBoundingClientRect","border","previewBorderColor","buildQuickviewPreviewBar","iframe","remove","scrollHeight","forEach","elements","rgbToHsv","r","g","b","max","Math","min","v","d","s","hsvToRgb","i","floor","f","p","q","round","HIGHLIGHT_PREFIX","QuickviewWordHighlight","constructor","stemmingInfoFromIndex","keywordElementInIframe","this","currentNavigationPosition","parsed","parseKeywordIdentifier","getText","keywordIdentifier","focusedColor","computeInvertedColor","computeSaturatedColor","addElement","push","highlightNavigation","putElementIntoView","isTaggedWord","element","nodeName","toLowerCase","currentElement","otherElements","filter","scrollIntoView","innerTextOfHTMLElement","getHighlightedInnerText","resolveOriginalTerm","trim","highlight","found","keys","find","originalTerm","originalTermMatch","stemmingExpansions","stemmingExpansionMatch","stemmingExpansion","getTextOfHTMLElement","children","Array","from","parts","substring","match","keywordTermPart","parseInt","innerText","extractRgb","newSaturation","rSaturated","gSaturated","bSaturated","rgbExtracted","getWordsHighlights","wordsHighlights","querySelectorAll","wordHTMLElementToHighlight","wordHighlight","alreadyScannedKeyword","atomicQuickviewModalCss","AtomicQuickviewModalStyle0","AtomicQuickviewModal","minimizeSidebar","watchHighlightKeywords","handleHighlightsScripts","componentWillLoad","bindings","store","isMobile","reset","result","interactiveResult","renderHeader","headerContent","buildInteractiveResult","engine","options","LinkWithItemAnalytics","href","clickUri","onSelect","select","onBeginDelayedSelect","beginDelayedSelect","onCancelPendingSelect","cancelPendingSelect","className","part","CloseIcon","onClose","slot","renderBody","minimize","quickviewSrc","quickviewUniqueIdentifier","termsToHighlight","renderFooter","Button","previousQuickview","emit","current","first","total","nextQuickview","modalCloseCallback","isOpen","highlightScriptId","state","resultPreview","contentURL","enableHighlights","removeDisableHighlightScript","enableHighlightsSpecificKeyword","identifier","disableHighlights","createDisableHighlightScript","disableHighlightsSpecificKeyword","doc","contentWindow","document","head","scriptId","createStyleElement","createTextNode","flatPhrasesToHighlight","phrasesToHighlight","search","response","entries","phrase","flatMap","keywordEntry","keywordStemming","requestId","uniqueId","render","fullscreen","exportparts","ATOMIC_MODAL_EXPORT_PARTS","__decorate","InitializeBindings"],"sources":["src/components/search/result-template-components/atomic-quickview-sidebar/atomic-quickview-sidebar.tsx","src/components/search/result-template-components/quickview-iframe/quickview-iframe.tsx","src/components/search/result-template-components/quickview-preview-bar/quickview-preview-bar.ts","src/utils/color-utils.ts","src/components/search/result-template-components/quickview-word-highlight/quickview-word-highlight.tsx","src/components/search/result-template-components/atomic-quickview-modal/atomic-quickview-modal.pcss?tag=atomic-quickview-modal&encapsulation=shadow","src/components/search/result-template-components/atomic-quickview-modal/atomic-quickview-modal.tsx"],"sourcesContent":["import {Fragment, FunctionalComponent, h} from '@stencil/core';\nimport {i18n} from 'i18next';\nimport Add from '../../../../images/add.svg';\nimport ArrowDown from '../../../../images/arrow-bottom-rounded.svg';\nimport ArrowUp from '../../../../images/arrow-top-rounded.svg';\nimport MinimizeIcon from '../../../../images/menu.svg';\nimport Remove from '../../../../images/remove.svg';\nimport {IconButton} from '../../../common/stencil-iconButton';\nimport {StencilCheckbox} from '../../../common/stencil-checkbox';\nimport {FieldsetGroup} from '../../../common/stencil-fieldset-group';\nimport type {HighlightKeywords} from '../atomic-quickview-modal/atomic-quickview-modal';\nimport {QuickviewWordHighlight} from '../quickview-word-highlight/quickview-word-highlight';\n\nconst identifierKeywordsSection = 'coveo-quickview-sidebar-keywords';\n\nexport interface QuickviewSidebarProps {\n words: Record<string, QuickviewWordHighlight>;\n i18n: i18n;\n highlightKeywords: HighlightKeywords;\n onHighlightKeywords: (highlight: HighlightKeywords) => void;\n minimized: boolean;\n onMinimize: (minimize: boolean) => void;\n}\n\nexport const QuickviewSidebar: FunctionalComponent<QuickviewSidebarProps> = (\n props\n) => {\n const {words, minimized} = props;\n const numberOfWords = Object.values(words).length;\n\n if (numberOfWords === 0) {\n return;\n }\n\n const minimizeButton = (\n <MinimizeButton {...props} wordsLength={numberOfWords} />\n );\n\n return (\n <div class=\"border-neutral h-full border-r p-4\">\n {minimized && minimizeButton}\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center\">\n <HighlightKeywordsCheckbox {...props} />\n </div>\n {!minimized && <div>{minimizeButton}</div>}\n </div>\n\n {!minimized && <Keywords {...props} words={words} />}\n </div>\n );\n};\n\nconst MinimizeButton: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'minimized' | 'onMinimize' | 'highlightKeywords'\n > & {wordsLength: number}\n> = ({i18n, minimized, onMinimize, highlightKeywords, wordsLength}) => (\n <IconButton\n partPrefix=\"sidebar-minimize\"\n icon={MinimizeIcon}\n style=\"text-transparent\"\n title={i18n.t('quickview-toggle-navigation')}\n ariaLabel={i18n.t('quickview-toggle-navigation')}\n onClick={() => onMinimize(!minimized)}\n badge={\n highlightKeywords && minimized ? <slot>{wordsLength}</slot> : undefined\n }\n class={`w-fit ${minimized ? '' : 'ml-auto'}`}\n ariaExpanded={(!minimized).toString()}\n ariaControls={identifierKeywordsSection}\n />\n);\n\nconst HighlightKeywordsCheckbox: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'highlightKeywords' | 'onHighlightKeywords' | 'minimized'\n >\n> = ({i18n, highlightKeywords, onHighlightKeywords, minimized}) => (\n <Fragment>\n <StencilCheckbox\n text={i18n.t('keywords-highlight')}\n class=\"mr-2\"\n id=\"atomic-quickview-sidebar-highlight-keywords\"\n checked={!highlightKeywords.highlightNone}\n onToggle={(checked) =>\n onHighlightKeywords({\n ...highlightKeywords,\n highlightNone: !checked,\n })\n }\n ></StencilCheckbox>\n {!minimized && (\n <label\n class=\"cursor-pointer font-bold whitespace-nowrap\"\n htmlFor=\"atomic-quickview-sidebar-highlight-keywords\"\n >\n {i18n.t('keywords-highlight')}\n </label>\n )}\n </Fragment>\n);\n\nconst Keywords: FunctionalComponent<\n Pick<\n QuickviewSidebarProps,\n 'i18n' | 'onHighlightKeywords' | 'highlightKeywords'\n > & {\n words: Record<string, QuickviewWordHighlight>;\n }\n> = ({words, i18n, highlightKeywords, onHighlightKeywords}) => {\n return (\n <div id={identifierKeywordsSection}>\n {Object.values(words).map((keyword) => {\n const wordIsEnabled =\n !highlightKeywords.highlightNone &&\n (highlightKeywords.keywords[keyword.text] === undefined ||\n highlightKeywords.keywords[keyword.text].enabled === true);\n\n return (\n <div\n key={keyword.text}\n class=\"my-4 flex w-100 items-center justify-between gap-x-2\"\n >\n <div\n class={`bg-background border-neutral flex grow items-center overflow-x-auto rounded-lg border ${\n !wordIsEnabled ? 'pointer-events-none opacity-50' : ''\n }`}\n >\n <div\n class=\"flex grow items-center border-r p-4\"\n aria-hidden=\"true\"\n >\n <div\n class=\"mr-2 h-5 w-5 flex-none\"\n style={{backgroundColor: keyword.color}}\n ></div>\n <div class=\"mr-2 grow whitespace-nowrap\">{keyword.text}</div>\n <div class=\"flex-none\">\n (\n {new Intl.NumberFormat(i18n.language, {\n notation: 'compact',\n }).format(keyword.occurrences)}\n )\n </div>\n </div>\n <FieldsetGroup\n label={i18n.t('quickview-navigate-keywords', {\n occurrences: keyword.occurrences,\n keyword: keyword.text,\n })}\n >\n <div class=\"flex px-2\">\n <IconButton\n partPrefix=\"sidebar-next\"\n icon={ArrowDown}\n disabled={!wordIsEnabled}\n style=\"text-transparent\"\n class=\"border-0\"\n ariaLabel={i18n.t('next')}\n title={i18n.t('next')}\n onClick={() => keyword.navigateForward()}\n />\n <IconButton\n partPrefix=\"sidebar-previous\"\n icon={ArrowUp}\n disabled={!wordIsEnabled}\n style=\"text-transparent\"\n class=\"border-0\"\n ariaLabel={i18n.t('previous')}\n title={i18n.t('previous')}\n onClick={() => keyword.navigateBackward()}\n />\n </div>\n </FieldsetGroup>\n </div>\n <IconButton\n partPrefix=\"sidebar-remove-word\"\n class={`${\n highlightKeywords.highlightNone\n ? 'pointer-events-none opacity-50'\n : ''\n }`}\n tabIndex={highlightKeywords.highlightNone ? '-1' : '0'}\n ariaPressed={(!wordIsEnabled).toString()}\n style=\"text-transparent\"\n icon={wordIsEnabled ? Remove : Add}\n ariaLabel={i18n.t('quickview-remove-word')}\n onClick={() => {\n onHighlightKeywords({\n ...highlightKeywords,\n keywords: {\n ...highlightKeywords.keywords,\n [keyword.text]: {\n enabled: !wordIsEnabled,\n indexIdentifier: keyword.indexIdentifier,\n },\n },\n });\n }}\n />\n </div>\n );\n })}\n </div>\n );\n};\n","import {SearchEngine} from '@coveo/headless';\nimport {FunctionalComponent, h} from '@stencil/core';\n\nconst documentIdentifierInIframe = 'CoveoDocIdentifier';\n\nconst writeDocument = (documentWriter: Document, content: string) => {\n documentWriter.open();\n documentWriter.write(content);\n documentWriter.close();\n if (documentWriter.scrollingElement) {\n documentWriter.scrollingElement.scrollTop = 0;\n }\n};\n\nconst currentResultAlreadyWrittenToDocument = (\n documentWriter: Document,\n uniqueIdentifier: string\n) => {\n const currentDocIdentifier = documentWriter.getElementById(\n documentIdentifierInIframe\n );\n\n return (\n currentDocIdentifier &&\n currentDocIdentifier.textContent === uniqueIdentifier\n );\n};\n\nconst ensureSameResultIsNotOverwritten = (\n documentWriter: Document,\n uniqueIdentifier: string\n) => {\n const docIdentifier = documentWriter.createElement('div');\n docIdentifier.style.display = 'none';\n docIdentifier.setAttribute('aria-hidden', 'true');\n docIdentifier.id = documentIdentifierInIframe;\n docIdentifier.textContent = uniqueIdentifier;\n documentWriter.body.appendChild(docIdentifier);\n};\n\nconst warnAboutLimitedUsageQuickview = (logger?: SearchEngine['logger']) => {\n logger?.warn(\n 'Quickview initialized in restricted mode due to incompatible sandboxing environment. Keywords hit navigation will be disabled.'\n );\n};\n\nexport const QuickviewIframe: FunctionalComponent<{\n title: string;\n content?: string;\n onSetIframeRef: (ref: HTMLIFrameElement) => void;\n uniqueIdentifier?: string;\n sandbox?: string;\n src?: string;\n logger?: SearchEngine['logger'];\n}> = ({title, onSetIframeRef, uniqueIdentifier, content, sandbox, src, logger}) => {\n // When a document is written with document.open/document.write/document.close\n // it is not synchronous and the content of the iframe is only available to be queried at the end of the current call stack.\n // This add a \"wait\" (setTimeout 0) before calling the `onSetIframeRef` from the parent modal quickview\n const waitForIframeContentToBeWritten = () => {\n return new Promise((resolve) => setTimeout(resolve));\n };\n\n return (\n <iframe\n title={title}\n src=\"about:blank\"\n class=\"h-full w-full\"\n sandbox={sandbox}\n ref={async (el) => {\n const iframeRef = el as HTMLIFrameElement;\n\n if (!uniqueIdentifier || !content) {\n return;\n }\n\n const documentWriter = iframeRef.contentDocument;\n if (!documentWriter) {\n if (src) {\n warnAboutLimitedUsageQuickview(logger);\n iframeRef.src = src;\n }\n\n return;\n }\n if (\n currentResultAlreadyWrittenToDocument(\n documentWriter,\n uniqueIdentifier\n )\n ) {\n return;\n }\n\n writeDocument(documentWriter, content);\n ensureSameResultIsNotOverwritten(documentWriter, uniqueIdentifier);\n\n await waitForIframeContentToBeWritten();\n onSetIframeRef(iframeRef);\n }}\n ></iframe>\n );\n};\n","import type {HighlightKeywords} from '../atomic-quickview-modal/atomic-quickview-modal';\nimport type {QuickviewWordHighlight} from '../quickview-word-highlight/quickview-word-highlight';\n\nconst buildPreviewBar = (documentWriter: Document) => {\n const previewBarId = 'CoveoPreviewBar';\n const bar =\n documentWriter.getElementById(previewBarId) ||\n documentWriter.createElement('div');\n\n bar.id = previewBarId;\n bar.innerHTML = '';\n bar.style.position = 'fixed';\n bar.style.top = '0';\n bar.style.right = '0';\n bar.style.width = '15px';\n bar.style.height = '100%';\n bar.setAttribute('aria-hidden', 'true');\n return bar;\n};\n\nconst buildPreviewUnit = (\n documentWriter: Document,\n word: QuickviewWordHighlight,\n wordElement: HTMLElement,\n docHeight: number,\n highlightKeywords: HighlightKeywords\n) => {\n const previewUnit = documentWriter.createElement('div');\n if (highlightKeywords.keywords[word.text]?.enabled === false) {\n previewUnit.style.display = 'none';\n return previewUnit;\n }\n\n const elementPosition = wordElement.getBoundingClientRect().top;\n\n previewUnit.style.position = 'absolute';\n previewUnit.style.top = `${(elementPosition / docHeight) * 100}%`;\n previewUnit.style.width = '100%';\n previewUnit.style.height = '1px';\n previewUnit.style.border = `1px solid ${word.previewBorderColor}`;\n previewUnit.style.backgroundColor = word.color;\n return previewUnit;\n};\n\nexport const buildQuickviewPreviewBar = (\n words: Record<string, QuickviewWordHighlight>,\n highlightKeywords: HighlightKeywords,\n iframe?: HTMLIFrameElement\n) => {\n if (!iframe) {\n return;\n }\n const documentWriter = iframe.contentDocument;\n if (!documentWriter) {\n return;\n }\n const bar = buildPreviewBar(documentWriter);\n if (highlightKeywords.highlightNone) {\n bar.remove();\n return;\n }\n const docHeight = documentWriter.body.scrollHeight;\n\n Object.values(words).forEach((word) => {\n word.elements.forEach((wordElement) => {\n const previewUnit = buildPreviewUnit(\n documentWriter,\n word,\n wordElement,\n docHeight,\n highlightKeywords\n );\n\n bar.appendChild(previewUnit);\n });\n });\n documentWriter.body.appendChild(bar);\n};\n","export const rgbToHsv = (r: number, g: number, b: number) => {\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h: number;\n const v = max;\n\n const d = max - min;\n const s = max === 0 ? 0 : d / max;\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n default:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return {h, s, v};\n};\n\nexport const hsvToRgb = (h: number, s: number, v: number) => {\n let r: number, g: number, b: number;\n\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n break;\n }\n\n return {\n r: Math.round(r),\n g: Math.round(g),\n b: Math.round(b),\n };\n};\n","import {TermsToHighlight} from '@coveo/headless';\nimport {hsvToRgb, rgbToHsv} from '../../../../utils/color-utils';\n\nexport const HIGHLIGHT_PREFIX = 'CoveoHighlight';\nexport class QuickviewWordHighlight {\n public text: string;\n public indexIdentifier: string;\n public occurrences = 0;\n public color: string;\n public focusedColor: string;\n public previewBorderColor: string;\n public elements: HTMLElement[] = [];\n\n private currentNavigationPosition = -1;\n\n constructor(\n private stemmingInfoFromIndex: TermsToHighlight,\n keywordElementInIframe: HTMLElement\n ) {\n const parsed = this.parseKeywordIdentifier(keywordElementInIframe);\n if (!parsed) {\n throw 'Invalid keyword identifier for quickview';\n }\n\n this.text = this.getText(keywordElementInIframe);\n this.indexIdentifier = `${parsed.keywordIdentifier}`;\n this.color = keywordElementInIframe.style.backgroundColor;\n this.focusedColor = this.computeInvertedColor();\n this.previewBorderColor = this.computeSaturatedColor();\n\n this.addElement(keywordElementInIframe);\n }\n\n public addElement(keywordElementInIframe: HTMLElement) {\n this.occurrences++;\n this.elements.push(keywordElementInIframe);\n }\n\n public navigateForward() {\n this.currentNavigationPosition++;\n if (this.currentNavigationPosition >= this.elements.length) {\n this.currentNavigationPosition = 0;\n }\n this.highlightNavigation();\n this.putElementIntoView();\n return this.elements[this.currentNavigationPosition];\n }\n\n public navigateBackward() {\n this.currentNavigationPosition--;\n if (this.currentNavigationPosition < 0) {\n this.currentNavigationPosition = this.elements.length - 1;\n }\n this.highlightNavigation();\n this.putElementIntoView();\n return this.elements[this.currentNavigationPosition];\n }\n\n private isTaggedWord(element: HTMLElement) {\n return element.nodeName.toLowerCase() === 'coveotaggedword';\n }\n\n private highlightNavigation() {\n const currentElement = this.elements[this.currentNavigationPosition];\n const otherElements = this.elements.filter((el) => el !== currentElement);\n currentElement.style.color = this.color;\n currentElement.style.backgroundColor = this.focusedColor;\n otherElements.forEach((element) => {\n element.style.color = '';\n element.style.backgroundColor = this.color;\n });\n }\n\n private putElementIntoView() {\n const element = this.elements[this.currentNavigationPosition];\n element.scrollIntoView();\n }\n\n private getText(element: HTMLElement) {\n const innerTextOfHTMLElement = this.getHighlightedInnerText(element);\n return this.resolveOriginalTerm(innerTextOfHTMLElement).trim();\n }\n\n private resolveOriginalTerm(highlight: string): string {\n // First try to find either an exact match between the highlight and the original non-stemmed keyword.\n // Otherwise try to find a match between the highlight and the stemming keyword expansions\n // If nothing is found (which should not normally happen...), simply return the highlight keyword as is.\n\n const found = Object.keys(this.stemmingInfoFromIndex).find(\n (originalTerm) => {\n const originalTermMatch =\n originalTerm.toLowerCase() === highlight.toLowerCase();\n if (originalTermMatch) {\n return true;\n }\n const stemmingExpansions = this.stemmingInfoFromIndex[originalTerm];\n if (!stemmingExpansions) {\n return false;\n }\n\n const stemmingExpansionMatch = stemmingExpansions.find(\n (stemmingExpansion) =>\n stemmingExpansion.toLowerCase() === highlight.toLowerCase()\n );\n return stemmingExpansionMatch;\n }\n );\n return found || highlight;\n }\n\n private getHighlightedInnerText(element: HTMLElement): string {\n if (!this.isTaggedWord(element)) {\n return this.getTextOfHTMLElement(element);\n }\n\n const children = Array.from(element.children) as HTMLElement[];\n if (children.length >= 1) {\n return this.getTextOfHTMLElement(children[0]);\n }\n\n return '';\n }\n\n private parseKeywordIdentifier(element: HTMLElement) {\n const parts = element.id\n .substring(HIGHLIGHT_PREFIX.length + 1)\n .match(/^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/);\n\n if (!parts || parts.length <= 3) {\n return null;\n }\n\n return {\n keywordIdentifier: parts[1],\n keywordTermPart: parseInt(parts[3], 10),\n };\n }\n\n private getTextOfHTMLElement(el: HTMLElement) {\n return el.innerText || el.textContent || '';\n }\n\n private computeInvertedColor() {\n const {r, g, b} = this.extractRgb();\n return `rgb(${255 - r}, ${255 - g}, ${255 - b})`;\n }\n\n private computeSaturatedColor() {\n const {r, g, b} = this.extractRgb();\n const {h, s, v} = rgbToHsv(r, g, b);\n let newSaturation = s * 2;\n if (newSaturation > 1) {\n newSaturation = 1;\n }\n const {\n r: rSaturated,\n g: gSaturated,\n b: bSaturated,\n } = hsvToRgb(h, newSaturation, v);\n return `rgb(${rSaturated}, ${gSaturated}, ${bSaturated})`;\n }\n\n private extractRgb() {\n const rgbExtracted = this.color.match(/\\d+/g);\n if (!rgbExtracted) {\n return {r: 255, g: 255, b: 255};\n }\n\n return {\n r: parseInt(rgbExtracted[0], 10),\n g: parseInt(rgbExtracted[1], 10),\n b: parseInt(rgbExtracted[2], 10),\n };\n }\n}\n\nexport const getWordsHighlights = (\n stemmingInfoFromIndex: TermsToHighlight,\n iframe?: HTMLIFrameElement\n) => {\n const wordsHighlights: Record<string, QuickviewWordHighlight> = {};\n if (!iframe) {\n return wordsHighlights;\n }\n\n iframe.contentDocument?.body\n .querySelectorAll(`[id^=\"${HIGHLIGHT_PREFIX}\"]`)\n .forEach((el) => {\n const wordHTMLElementToHighlight = el as HTMLElement;\n\n const wordHighlight = new QuickviewWordHighlight(\n stemmingInfoFromIndex,\n wordHTMLElementToHighlight\n );\n\n if (!wordHighlight.text) {\n return;\n }\n\n const alreadyScannedKeyword =\n wordsHighlights[wordHighlight.indexIdentifier];\n\n if (alreadyScannedKeyword) {\n alreadyScannedKeyword.addElement(wordHTMLElementToHighlight);\n } else {\n wordsHighlights[wordHighlight.indexIdentifier] = wordHighlight;\n }\n });\n\n return wordsHighlights;\n};\n","@import '../../../../global/global.pcss';\n@reference '../../../../utils/tailwind-utilities/link-style.css';\n\n.atomic-quickview-modal {\n &::part(backdrop) {\n grid-template-columns: 1fr max(80vw, 30rem) 1fr;\n }\n &::part(body),\n &::part(header),\n &::part(footer) {\n @apply max-w-full;\n }\n\n &::part(footer) {\n @apply flex justify-center;\n }\n\n &::part(body-wrapper) {\n @apply h-full overflow-hidden p-0;\n }\n\n &::part(body) {\n @apply h-full;\n }\n\n &::part(backdrop) {\n grid-template-rows: 1fr 100% 3fr;\n }\n\n &::part(header-wrapper) {\n @apply bg-neutral-light;\n }\n\n a {\n @apply link-style;\n }\n}\n","import {\n buildInteractiveResult,\n Result,\n InteractiveResult,\n TermsToHighlight,\n} from '@coveo/headless';\nimport {\n Component,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n Method,\n VNode,\n Fragment,\n} from '@stencil/core';\nimport CloseIcon from '../../../../images/close.svg';\nimport {\n InitializableComponent,\n InitializeBindings,\n} from '../../../../utils/initialization-utils';\nimport {ATOMIC_MODAL_EXPORT_PARTS} from '../../../common/atomic-modal/export-parts';\nimport {IconButton} from '../../../common/stencil-iconButton';\nimport {LinkWithItemAnalytics} from '../../../common/item-link/stencil-item-link';\nimport {Button} from '../../../common/stencil-button';\nimport {Bindings} from '../../atomic-search-interface/atomic-search-interface';\nimport {QuickviewSidebar} from '../atomic-quickview-sidebar/atomic-quickview-sidebar';\nimport {QuickviewIframe} from '../quickview-iframe/quickview-iframe';\nimport {buildQuickviewPreviewBar} from '../quickview-preview-bar/quickview-preview-bar';\nimport {\n getWordsHighlights,\n HIGHLIGHT_PREFIX,\n QuickviewWordHighlight,\n} from '../quickview-word-highlight/quickview-word-highlight';\n\nexport interface HighlightKeywords {\n highlightNone: boolean;\n keywords: {\n [text: string]: {\n indexIdentifier: string;\n enabled: boolean;\n };\n };\n}\n\n/**\n * The modal opened when clicking on a quickview button.\n * Do not use this component directly; use `atomic-quickview` instead.\n *\n * @part backdrop - The transparent backdrop hiding the content behind the modal.\n * @part container - The modal's outermost container with the outline and background.\n * @part header-wrapper - The wrapper around the header.\n * @part header - The header at the top of the modal.\n * @part header-ruler - The horizontal ruler underneath the header.\n * @part body-wrapper - The wrapper around the body.\n * @part body - The body of the modal, between the header and the footer.\n * @part footer-wrapper - The wrapper with a shadow or background color around the footer.\n * @part footer - The footer at the bottom of the modal.\n * @part quickview-modal-header-icon - The close icon of the modal.\n * @part quickview-modal-header-title - The title of the modal.\n */\n@Component({\n tag: 'atomic-quickview-modal',\n styleUrl: 'atomic-quickview-modal.pcss',\n shadow: true,\n})\nexport class AtomicQuickviewModal implements InitializableComponent {\n @InitializeBindings() public bindings!: Bindings;\n @State() public error!: Error;\n\n @State() private highlightKeywords: HighlightKeywords = {\n highlightNone: false,\n keywords: {},\n };\n @Watch('highlightKeywords')\n watchHighlightKeywords() {\n this.handleHighlightsScripts();\n }\n\n @Event({eventName: 'atomic/quickview/next'}) nextQuickview?: EventEmitter;\n @Event({eventName: 'atomic/quickview/previous'})\n previousQuickview?: EventEmitter;\n\n @State() private minimizeSidebar = false;\n @State() private words: Record<string, QuickviewWordHighlight> = {};\n private iframeRef?: HTMLIFrameElement;\n\n @Prop({mutable: true, reflect: false}) content?: string;\n @Prop({mutable: true, reflect: false}) result?: Result;\n @Prop() current?: number;\n @Prop() total?: number;\n @Prop() sandbox?: string;\n @Prop() modalCloseCallback?: () => void;\n\n private interactiveResult?: InteractiveResult;\n\n public componentWillLoad(): void {\n this.minimizeSidebar = this.bindings.store.isMobile();\n }\n\n @Method()\n public async reset() {\n this.highlightKeywords = {\n highlightNone: false,\n keywords: {},\n };\n this.minimizeSidebar = false;\n this.iframeRef = undefined;\n this.content = undefined;\n this.result = undefined;\n this.interactiveResult = undefined;\n }\n\n private renderHeader() {\n let headerContent: VNode | null = null;\n if (this.result) {\n this.interactiveResult = buildInteractiveResult(this.bindings.engine, {\n options: {result: this.result},\n });\n headerContent = (\n <Fragment>\n <LinkWithItemAnalytics\n href={this.result?.clickUri}\n onSelect={() => this.interactiveResult?.select()}\n onBeginDelayedSelect={() =>\n this.interactiveResult?.beginDelayedSelect()\n }\n onCancelPendingSelect={() =>\n this.interactiveResult?.cancelPendingSelect()\n }\n className=\"truncate\"\n part=\"quickview-modal-header-title\"\n >\n {this.result.title}\n </LinkWithItemAnalytics>\n <IconButton\n partPrefix=\"quickview-modal-header\"\n icon={CloseIcon}\n onClick={() => this.onClose()}\n ariaLabel={this.bindings.i18n.t('close')}\n style=\"text-transparent\"\n title={this.bindings.i18n.t('close')}\n />\n </Fragment>\n );\n }\n return (\n <div slot=\"header\" class=\"flex w-full items-center justify-between\">\n {headerContent}\n </div>\n );\n }\n\n private renderBody() {\n return (\n <div slot=\"body\" class=\"grid h-full grid-cols-[min-content_auto]\">\n <div\n class=\"h-full overflow-y-auto\"\n style={{backgroundColor: 'var(--atomic-neutral-light)'}}\n >\n <QuickviewSidebar\n words={this.words}\n i18n={this.bindings.i18n}\n highlightKeywords={this.highlightKeywords}\n onHighlightKeywords={(highlight) =>\n (this.highlightKeywords = highlight)\n }\n minimized={this.minimizeSidebar}\n onMinimize={(minimize) => (this.minimizeSidebar = minimize)}\n />\n </div>\n <div class=\"relative overflow-auto\">\n <QuickviewIframe\n title={this.result?.title ?? this.bindings.i18n.t('preview-modal-title')} \n logger={this.logger}\n src={this.quickviewSrc}\n sandbox={this.sandbox}\n uniqueIdentifier={this.quickviewUniqueIdentifier}\n content={this.content}\n onSetIframeRef={async (ref) => {\n this.iframeRef = ref;\n this.words = getWordsHighlights(\n this.termsToHighlight,\n this.iframeRef\n );\n this.handleHighlightsScripts();\n }}\n />\n {buildQuickviewPreviewBar(\n this.words,\n this.highlightKeywords,\n this.iframeRef\n )}\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n return (\n <div slot=\"footer\" class=\"flex items-center gap-2\">\n <Button\n class=\"p-2\"\n style=\"square-neutral\"\n onClick={() => this.previousQuickview?.emit()}\n disabled={this.current === 1}\n text={this.bindings.i18n.t('quickview-previous')}\n ></Button>\n <p class=\"text-center\">\n {this.bindings.i18n.t('showing-results-of', {\n first: this.current,\n total: this.total,\n })}\n </p>\n <Button\n class=\"p-2\"\n style=\"square-neutral\"\n onClick={() => this.nextQuickview?.emit()}\n disabled={this.current === this.total}\n text={this.bindings.i18n.t('quickview-next')}\n ></Button>\n </div>\n );\n }\n\n private onClose() {\n this.content = undefined;\n this.result = undefined;\n this.modalCloseCallback && this.modalCloseCallback();\n }\n\n private get isOpen() {\n return !!this.content && !!this.result;\n }\n\n private get highlightScriptId() {\n return 'CoveoDisableHighlightStyle';\n }\n\n private get logger() {\n return this.bindings.engine.logger;\n }\n\n private get quickviewSrc() {\n return this.bindings.engine.state.resultPreview?.contentURL;\n }\n\n private enableHighlights() {\n this.removeDisableHighlightScript();\n }\n\n private enableHighlightsSpecificKeyword(identifier: string) {\n this.removeDisableHighlightScript(identifier);\n }\n\n private disableHighlights() {\n this.createDisableHighlightScript();\n }\n\n private disableHighlightsSpecificKeyword(identifier: string) {\n this.createDisableHighlightScript(identifier);\n }\n\n private removeDisableHighlightScript(identifier?: string) {\n const doc = this.iframeRef?.contentWindow?.document;\n if (!doc) {\n return;\n }\n doc\n .getElementById(\n `${this.highlightScriptId}${identifier ? `:${identifier}` : ''}`\n )\n ?.remove();\n }\n\n private createDisableHighlightScript(identifier?: string) {\n const doc = this.iframeRef?.contentWindow?.document;\n if (!doc) {\n return;\n }\n\n const head = doc.head;\n const scriptId = `${this.highlightScriptId}${\n identifier ? `:${identifier}` : ''\n }`;\n const style =\n doc.getElementById(scriptId) || this.bindings.createStyleElement();\n style.setAttribute('id', scriptId);\n head.appendChild(style);\n style.appendChild(\n doc.createTextNode(`[id^=\"${HIGHLIGHT_PREFIX}${\n identifier ? `:${identifier}` : ''\n }\"] {\n background-color: inherit !important;\n color: inherit !important;\n }`)\n );\n }\n\n private get termsToHighlight() {\n const flatPhrasesToHighlight: TermsToHighlight = {};\n\n const phrasesToHighlight =\n this.bindings.engine.state.search.response.phrasesToHighlight;\n\n Object.entries(phrasesToHighlight).forEach(([phrase, keywords]) => {\n flatPhrasesToHighlight[phrase] = Object.entries(keywords).flatMap(\n ([keywordEntry, keywordStemming]) => {\n return [keywordEntry, ...keywordStemming];\n }\n );\n });\n\n return {\n ...this.bindings.engine.state.search.response.termsToHighlight,\n ...flatPhrasesToHighlight,\n };\n }\n\n private get requestId() {\n return this.bindings.engine.state.search.requestId;\n }\n\n private get quickviewUniqueIdentifier() {\n return this.result?.uniqueId + this.requestId;\n }\n\n private handleHighlightsScripts() {\n if (!this.highlightKeywords.highlightNone) {\n this.enableHighlights();\n } else {\n this.disableHighlights();\n }\n Object.values(this.highlightKeywords.keywords).forEach((word) => {\n if (word.enabled) {\n this.enableHighlightsSpecificKeyword(word.indexIdentifier);\n } else {\n this.disableHighlightsSpecificKeyword(word.indexIdentifier);\n }\n });\n }\n\n public render() {\n return (\n <atomic-modal\n fullscreen={this.bindings.store.isMobile()}\n class={'atomic-quickview-modal'}\n isOpen={this.isOpen}\n close={() => this.onClose()}\n exportparts={ATOMIC_MODAL_EXPORT_PARTS}\n >\n {this.renderHeader()}\n {this.renderBody()}\n {this.renderFooter()}\n </atomic-modal>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|