@coveo/atomic 3.61.4 → 3.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/custom-elements.json +886 -814
  2. package/dist/cjs/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.cjs +19 -7
  3. package/dist/cjs/components/common/atomic-generated-answer-content/atomic-generated-answer-content.cjs +23 -1
  4. package/dist/cjs/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.cjs +1 -1
  5. package/dist/cjs/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.cjs +3 -2
  6. package/dist/cjs/components/common/facets/category-facet/active-value.cjs +69 -0
  7. package/dist/cjs/components/common/facets/category-facet/selected-value.cjs +78 -0
  8. package/dist/cjs/components/common/facets/category-facet/value-link.cjs +5 -6
  9. package/dist/cjs/components/common/generated-answer/answer-announcement.cjs +73 -0
  10. package/dist/cjs/components/common/generated-answer/copy-button.cjs +2 -1
  11. package/dist/cjs/components/common/generated-answer/feedback-button.cjs +2 -1
  12. package/dist/cjs/components/common/generated-answer/generated-content/markdown-utils.cjs +1 -2
  13. package/dist/cjs/components/common/generated-answer/generated-content-container.cjs +6 -1
  14. package/dist/cjs/components/common/generated-answer/render-answer-content.cjs +5 -2
  15. package/dist/cjs/components/common/generated-answer/show-button.cjs +1 -0
  16. package/dist/cjs/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.cjs +3 -1
  17. package/dist/cjs/components/search/atomic-category-facet/atomic-category-facet.cjs +19 -8
  18. package/dist/cjs/components/search/atomic-generated-answer/atomic-generated-answer.cjs +8 -1
  19. package/dist/cjs/global/environment.cjs +1 -1
  20. package/dist/cjs/versions.cjs +1 -1
  21. package/dist/esm/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.js +19 -7
  22. package/dist/esm/components/common/atomic-generated-answer-content/atomic-generated-answer-content.js +23 -1
  23. package/dist/esm/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.js +1 -1
  24. package/dist/esm/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.js +3 -2
  25. package/dist/esm/components/common/facets/category-facet/active-value.js +31 -0
  26. package/dist/esm/components/common/facets/category-facet/selected-value.js +30 -0
  27. package/dist/esm/components/common/facets/category-facet/value-link.js +5 -6
  28. package/dist/esm/components/common/generated-answer/answer-announcement.js +32 -0
  29. package/dist/esm/components/common/generated-answer/copy-button.js +2 -1
  30. package/dist/esm/components/common/generated-answer/feedback-button.js +2 -1
  31. package/dist/esm/components/common/generated-answer/generated-content/markdown-utils.js +1 -2
  32. package/dist/esm/components/common/generated-answer/generated-content-container.js +6 -1
  33. package/dist/esm/components/common/generated-answer/render-answer-content.js +5 -2
  34. package/dist/esm/components/common/generated-answer/show-button.js +1 -0
  35. package/dist/esm/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +3 -1
  36. package/dist/esm/components/search/atomic-category-facet/atomic-category-facet.js +19 -8
  37. package/dist/esm/components/search/atomic-generated-answer/atomic-generated-answer.js +8 -1
  38. package/dist/esm/global/environment.js +1 -1
  39. package/dist/esm/versions.js +1 -1
  40. package/dist/types/components/commerce/atomic-commerce-category-facet/atomic-commerce-category-facet.d.ts +7 -1
  41. package/dist/types/components/common/atomic-generated-answer-content/atomic-generated-answer-content.d.ts +7 -0
  42. package/dist/types/components/common/facets/category-facet/active-value.d.ts +19 -0
  43. package/dist/types/components/common/facets/category-facet/selected-value.d.ts +22 -0
  44. package/dist/types/components/common/facets/category-facet/value-link.d.ts +0 -1
  45. package/dist/types/components/common/generated-answer/answer-announcement.d.ts +22 -0
  46. package/dist/types/components/common/generated-answer/generated-content-container.d.ts +1 -0
  47. package/dist/types/components/common/generated-answer/show-button.d.ts +1 -0
  48. package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +1 -0
  49. package/dist/types/components/search/atomic-category-facet/atomic-category-facet.d.ts +8 -2
  50. package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +2 -0
  51. package/package.json +9 -9
  52. package/dist/cjs/components/common/facets/category-facet/parent-value-link.cjs +0 -47
  53. package/dist/esm/components/common/facets/category-facet/parent-value-link.js +0 -9
  54. package/dist/types/components/common/facets/category-facet/parent-value-link.d.ts +0 -6
@@ -40,8 +40,15 @@ export declare class AtomicGeneratedAnswerContent extends LitElement {
40
40
  onCopyToClipboard: (answerId: string) => void;
41
41
  private copyState;
42
42
  private resetCopyTimeout?;
43
+ private ariaMessage;
44
+ private ariaErrorMessage;
45
+ private ariaCopyMessage;
46
+ private lastAnnouncedMessage?;
47
+ private hasObservedAnswer;
43
48
  disconnectedCallback(): void;
44
49
  render(): TemplateResult;
50
+ protected updated(): void;
51
+ private announceAnswerStatus;
45
52
  private renderFeedbackAndCopyButtons;
46
53
  private copyToClipboard;
47
54
  private scheduleCopyReset;
@@ -0,0 +1,19 @@
1
+ import type { i18n } from 'i18next';
2
+ import type { FunctionalComponentWithChildren } from '../../../../utils/functional-component-utils';
3
+ interface CategoryFacetActiveValueProps {
4
+ displayValue: string;
5
+ numberOfResults: number;
6
+ i18n: i18n;
7
+ searchQuery: string;
8
+ isLeafValue: boolean;
9
+ setRef: (el?: Element) => void;
10
+ }
11
+ /**
12
+ * Renders the deepest selected value of a category facet.
13
+ *
14
+ * The value is not interactive: it represents the filter that is already applied, and it is
15
+ * removed from the facet's clear button rather than by clicking it again. `tabindex="-1"`
16
+ * keeps it a valid target for the focus moved here once the query resolves.
17
+ */
18
+ export declare const renderCategoryFacetActiveValue: FunctionalComponentWithChildren<CategoryFacetActiveValueProps>;
19
+ export type { CategoryFacetActiveValueProps };
@@ -0,0 +1,22 @@
1
+ import type { i18n } from 'i18next';
2
+ import type { FunctionalComponent } from '../../../../utils/functional-component-utils';
3
+ import '../../atomic-icon/atomic-icon';
4
+ interface CategoryFacetSelectedValueProps {
5
+ /**
6
+ * The localized label of the deepest selected value.
7
+ */
8
+ displayValue: string;
9
+ /**
10
+ * The label of the facet, used to describe the clear button. It is localized by the component.
11
+ */
12
+ label: string;
13
+ i18n: i18n;
14
+ onClearFilters(): void;
15
+ }
16
+ /**
17
+ * Renders the deepest selected value of a category facet as a pill, next to a button that
18
+ * clears the facet. This is what removes the filter, since the selected value itself is not
19
+ * interactive once applied.
20
+ */
21
+ export declare const renderCategoryFacetSelectedValue: FunctionalComponent<CategoryFacetSelectedValueProps>;
22
+ export type { CategoryFacetSelectedValueProps };
@@ -5,7 +5,6 @@ export interface CategoryFacetValueLinkProps {
5
5
  numberOfResults: number;
6
6
  i18n: i18n;
7
7
  onClick: () => void;
8
- isParent: boolean;
9
8
  isSelected: boolean;
10
9
  searchQuery: string;
11
10
  isLeafValue: boolean;
@@ -0,0 +1,22 @@
1
+ import type { GeneratedAnswerBase } from '@coveo/headless';
2
+ import type { i18n } from 'i18next';
3
+ export interface AnswerAnnouncement {
4
+ message: string;
5
+ assertive: boolean;
6
+ }
7
+ type AnnounceableAnswer = Pick<GeneratedAnswerBase, 'answer' | 'cannotAnswer' | 'error' | 'isLoading' | 'isStreaming'>;
8
+ /**
9
+ * Computes the screen reader announcement describing the state of a single generated answer.
10
+ *
11
+ * The conversational rendering path holds one of these per conversation turn, so each answer
12
+ * reports its own state instead of relying on the top-level answer state.
13
+ */
14
+ export declare const getAnswerAnnouncement: (answer: AnnounceableAnswer | undefined, i18n: i18n) => AnswerAnnouncement;
15
+ /**
16
+ * Whether an answer has finished generating successfully.
17
+ *
18
+ * Used to stay silent when an already-completed answer is rendered for the first time, such as
19
+ * when earlier conversation turns are revealed.
20
+ */
21
+ export declare const isSettledAnswer: (answer: AnnounceableAnswer | undefined) => boolean;
22
+ export {};
@@ -3,5 +3,6 @@ export interface GeneratedContentContainerProps {
3
3
  answer?: string;
4
4
  answerContentFormat?: string;
5
5
  isStreaming: boolean;
6
+ id?: string;
6
7
  }
7
8
  export declare const renderGeneratedContentContainer: FunctionalComponentWithChildren<GeneratedContentContainerProps>;
@@ -4,6 +4,7 @@ import type { FunctionalComponent } from '../../../utils/functional-component-ut
4
4
  export interface ShowButtonProps {
5
5
  i18n: i18n;
6
6
  isCollapsed: boolean;
7
+ controlsId?: string;
7
8
  onClick: () => void;
8
9
  }
9
10
  export declare const renderShowButton: FunctionalComponent<ShowButtonProps>;
@@ -90,6 +90,7 @@ export declare class AtomicInsightGeneratedAnswer extends LitElement implements
90
90
  private copyError;
91
91
  private ariaMessage;
92
92
  private ariaErrorMessage;
93
+ private ariaCopyMessage;
93
94
  constructor();
94
95
  initialize(): void;
95
96
  disconnectedCallback(): void;
@@ -25,12 +25,17 @@ import type { InitializableComponent } from '../../../decorators/types';
25
25
  * @part search-result-path - The search result path.
26
26
  * @part search-highlight - The highlighted query inside the facet values.
27
27
  *
28
+ * @part selected-value - The row displaying the currently selected value and the button that clears the facet.
29
+ * @part selected-value-pill - The pill displaying the currently selected value.
30
+ * @part selected-value-clear-button - The button that clears the facet, displayed next to the selected value.
31
+ * @part selected-value-clear-button-icon - The icon of the button that clears the facet.
32
+ *
28
33
  * @part parents - The container surrounding the whole hierarchy of values.
29
34
  * @part sub-parents - The container surrounding a sub-hierarchy of values.
30
35
  * @part values - The container surrounding either the children of the active value or the values at the base.
31
- * @part all-categories-button - The "View all" button displayed first within the parents.
36
+ * @part all-categories-button - The "All Categories" button displayed first within the parents.
32
37
  * @part parent-button - The clickable parent button displayed first within sub-parents.
33
- * @part active-parent - The clickable active parent displayed first within the last sub-parents.
38
+ * @part active-parent - The currently selected value, displayed last within the parents. Not interactive.
34
39
  * @part value-link - The clickable value displayed first within values.
35
40
  * @part back-arrow - The back arrow displayed before the clickable parents.
36
41
  * @part value-label - The facet value label within a value button.
@@ -176,6 +181,7 @@ export declare class AtomicCategoryFacet extends LitElement implements Initializ
176
181
  private initializeDependenciesManager;
177
182
  private renderHeader;
178
183
  private renderSearchInput;
184
+ private renderSelectedValue;
179
185
  private renderValuesTree;
180
186
  private renderChild;
181
187
  private renderChildren;
@@ -136,12 +136,14 @@ export declare class AtomicGeneratedAnswer extends LitElement implements Initial
136
136
  private copyError;
137
137
  private ariaMessage;
138
138
  private ariaErrorMessage;
139
+ private ariaCopyMessage;
139
140
  constructor();
140
141
  initialize(): void;
141
142
  disconnectedCallback(): void;
142
143
  protected willUpdate(changedProperties: PropertyValueMap<this>): void;
143
144
  render(): import("lit-html").TemplateResult<1> | typeof nothing;
144
145
  onGeneratedAnswerStateUpdate: () => void;
146
+ private get shouldAnnounceAnswerStatus();
145
147
  private get hasNoAnswerGenerated();
146
148
  private get isAnswerVisible();
147
149
  private get toggleTooltip();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveo/atomic",
3
- "version": "3.61.4",
3
+ "version": "3.62.0",
4
4
  "description": "A web-component library for building modern UIs interfacing with the Coveo platform",
5
5
  "homepage": "https://docs.coveo.com/en/atomic/latest/",
6
6
  "license": "Apache-2.0",
@@ -55,10 +55,10 @@
55
55
  "./custom-elements-manifest": "./custom-elements.json"
56
56
  },
57
57
  "dependencies": {
58
- "@coveo/atomic-legacy": "0.1.5",
58
+ "@coveo/atomic-legacy": "0.1.7",
59
59
  "@coveo/bueno": "1.1.9",
60
- "@coveo/headless": "3.57.0",
61
- "@coveo/relay-event-types": "20.6.1",
60
+ "@coveo/headless": "3.57.2",
61
+ "@coveo/relay-event-types": "20.7.1",
62
62
  "@lit/context": "1.1.6",
63
63
  "@open-wc/lit-helpers": "0.7.0",
64
64
  "@popperjs/core": "2.11.8",
@@ -89,10 +89,10 @@
89
89
  "@tailwindcss/postcss": "4.3.3",
90
90
  "@tailwindcss/vite": "4.3.3",
91
91
  "@types/escape-html": "1.0.4",
92
- "@types/node": "24.13.3",
92
+ "@types/node": "24.13.6",
93
93
  "@vitest/browser-playwright": "4.1.11",
94
94
  "@wc-toolkit/storybook-helpers": "10.5.1",
95
- "chromatic": "18.7.3",
95
+ "chromatic": "18.9.4",
96
96
  "handlebars": "4.7.9",
97
97
  "lit-html": "3.3.3",
98
98
  "local-web-server": "5.4.0",
@@ -102,7 +102,7 @@
102
102
  "playwright": "1.62.1",
103
103
  "postcss": "8.5.28",
104
104
  "postcss-load-config": "6.0.1",
105
- "prettier": "3.9.6",
105
+ "prettier": "3.9.8",
106
106
  "publint": "0.3.24",
107
107
  "puppeteer": "25.9.0",
108
108
  "react": "19.2.8",
@@ -114,12 +114,12 @@
114
114
  "ts-dedent": "2.3.0",
115
115
  "ts-lit-plugin": "2.0.2",
116
116
  "typescript": "6.0.3",
117
- "vite": "8.2.2",
117
+ "vite": "8.3.0",
118
118
  "vitest": "4.1.11"
119
119
  },
120
120
  "peerDependencies": {
121
121
  "@coveo/bueno": "^1.1.9",
122
- "@coveo/headless": "^3.57.0",
122
+ "@coveo/headless": "^3.57.2",
123
123
  "typescript": ">=5.0.0"
124
124
  },
125
125
  "peerDependenciesMeta": {
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, getters, values)=>{
5
- var define = (defs, kind)=>{
6
- for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
- enumerable: true,
8
- [kind]: defs[key]
9
- });
10
- };
11
- define(getters, "get");
12
- define(values, "value");
13
- };
14
- })();
15
- (()=>{
16
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
- })();
18
- (()=>{
19
- __webpack_require__.r = (exports1)=>{
20
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
- value: 'Module'
22
- });
23
- Object.defineProperty(exports1, '__esModule', {
24
- value: true
25
- });
26
- };
27
- })();
28
- var __webpack_exports__ = {};
29
- __webpack_require__.r(__webpack_exports__);
30
- __webpack_require__.d(__webpack_exports__, {
31
- renderCategoryFacetParentValueLink: ()=>renderCategoryFacetParentValueLink
32
- });
33
- const external_value_link_cjs_namespaceObject = require("./value-link.cjs");
34
- const renderCategoryFacetParentValueLink = ({ props })=>(0, external_value_link_cjs_namespaceObject.renderCategoryFacetValueLink)({
35
- props: {
36
- ...props,
37
- isParent: true,
38
- isSelected: true
39
- }
40
- });
41
- exports.renderCategoryFacetParentValueLink = __webpack_exports__.renderCategoryFacetParentValueLink;
42
- for(var __rspack_i in __webpack_exports__)if (-1 === [
43
- "renderCategoryFacetParentValueLink"
44
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
45
- Object.defineProperty(exports, '__esModule', {
46
- value: true
47
- });
@@ -1,9 +0,0 @@
1
- import { renderCategoryFacetValueLink } from "./value-link.js";
2
- const renderCategoryFacetParentValueLink = ({ props })=>renderCategoryFacetValueLink({
3
- props: {
4
- ...props,
5
- isParent: true,
6
- isSelected: true
7
- }
8
- });
9
- export { renderCategoryFacetParentValueLink };
@@ -1,6 +0,0 @@
1
- import type { FunctionalComponentWithChildren } from '../../../../utils/functional-component-utils';
2
- import { type CategoryFacetValueLinkProps } from './value-link';
3
- interface CategoryFacetParentValueLinkProps extends Omit<CategoryFacetValueLinkProps, 'isParent' | 'isSelected'> {
4
- }
5
- export declare const renderCategoryFacetParentValueLink: FunctionalComponentWithChildren<CategoryFacetParentValueLinkProps>;
6
- export type { CategoryFacetParentValueLinkProps };