[Search] Add targeted EIS callouts and tours for ECH/Serverless users in Kibana#244626
[Search] Add targeted EIS callouts and tours for ECH/Serverless users in Kibana#244626seialkali merged 6 commits intoelastic:mainfrom
Conversation
bfb17af to
e5b9b4e
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds targeted promotional callouts and guided tours for the Elastic Inference Service (EIS) to enhance discovery among ECH/Serverless users in Kibana. The components are only displayed to cloud users and can be permanently dismissed via local storage.
Key changes:
- New reusable EIS promotional components (callout and tour) added to
@kbn/search-api-panelspackage - EIS callouts integrated into the index details mappings page and inference endpoint management page
- EIS tour added to the
.elser-2-elasticendpoint in the inference endpoint management table
Reviewed changes
Copilot reviewed 17 out of 18 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
x-pack/solutions/search/plugins/search_inference_endpoints/tsconfig.json |
Added dependencies for @kbn/search-api-panels and @kbn/cloud-plugin |
x-pack/solutions/search/plugins/search_inference_endpoints/public/types.ts |
Added CloudStart type to plugin dependencies |
x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/tabular_page.tsx |
Integrated EIS callout component and passed cloud state to endpoint info component |
x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/render_table_columns/render_endpoint/endpoint_info.tsx |
Added EIS tour component for .elser-2-elastic endpoint |
x-pack/solutions/search/plugins/search_inference_endpoints/common/translations.ts |
Added table caption translation for accessibility |
x-pack/platform/plugins/shared/index_management/public/application/services/documentation.ts |
Added EIS documentation link to documentation service |
x-pack/platform/plugins/shared/index_management/public/application/sections/home/index_list/details_page/details_page_mappings_content.tsx |
Integrated EIS callout on index details mappings page |
src/platform/packages/shared/kbn-search-api-panels/tsconfig.json |
Updated package type and added test dependencies |
src/platform/packages/shared/kbn-search-api-panels/translations.ts |
Added i18n translations for EIS promotional components |
src/platform/packages/shared/kbn-search-api-panels/kibana.jsonc |
Changed package type from shared-common to shared-browser |
src/platform/packages/shared/kbn-search-api-panels/index.tsx |
Exported new EIS promotional components |
src/platform/packages/shared/kbn-search-api-panels/hooks/use_show_eis_promotional_content.ts |
Created hook to manage promotional content visibility and local storage |
src/platform/packages/shared/kbn-search-api-panels/hooks/use_show_eis_promotional_content.test.ts |
Added unit tests for promotional content visibility hook |
src/platform/packages/shared/kbn-search-api-panels/components/eis_promotional_tour.tsx |
Created reusable EIS promotional tour component |
src/platform/packages/shared/kbn-search-api-panels/components/eis_promotional_tour.test.tsx |
Added unit tests for EIS promotional tour component |
src/platform/packages/shared/kbn-search-api-panels/components/eis_promotional_callout.tsx |
Created reusable EIS promotional callout component |
src/platform/packages/shared/kbn-search-api-panels/components/eis_promotional_callout.test.tsx |
Added unit tests for EIS promotional callout component |
| color="subdued" | ||
| > | ||
| <div style={{ position: 'absolute', top: 8, right: 8 }}> | ||
| <EuiButtonIcon iconType="cross" aria-label="Dismiss" onClick={onSkipTour} size="s" /> |
There was a problem hiding this comment.
[nitpick] The callback function is named onSkipTour but is being used for a dismiss/close action in a callout. Consider renaming to onDismiss or similar to better reflect its usage in this context, or update the variable name returned from useShowEisPromotionalContent hook to be more generic like onClose.
| <EuiFlexGroup direction="column" gutterSize="l"> | ||
| <EisPromotionalCallout | ||
| promoId="indexDetailsMappings" | ||
| isCloudEnabled={cloud?.isCloudEnabled ?? false} | ||
| ctaLink={documentationService.docLinks.enterpriseSearch.elasticInferenceService} | ||
| direction="column" | ||
| /> |
There was a problem hiding this comment.
[nitpick] The EuiFlexGroup wrapper should have a semantic grouping element or aria-label to improve screen reader context when the promotional callout is present, especially since it wraps both the promotional content and the existing informational panels.
⏳ Build in-progress, with failures
Failed CI StepsHistory
|
454702f to
d59dc09
Compare
sabarasaba
left a comment
There was a problem hiding this comment.
kibana management changes lgtm, didnt test locally
efegurkan
left a comment
There was a problem hiding this comment.
I have some comments, but they are not blocking this.
Feel free to merge.
LGTM
| } | ||
|
|
||
| export const EndpointInfo: React.FC<EndpointInfoProps> = ({ inferenceId, endpointInfo }) => ( | ||
| const EIS_TOUR_ENDPOINT = '.elser-2-elastic'; |
There was a problem hiding this comment.
nitpick: no need to worry about this in a Friday evening.
I would love to move this into a constants file.
i.e. x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/constants.ts
| data-telemetry-id={dataId} | ||
| data-test-subj={dataId} | ||
| title={EIS_PROMO_TOUR_TITLE} | ||
| maxWidth="400px" |
There was a problem hiding this comment.
This should be calculated through eui variables.
maxWidth={`${euiTheme.base * 25}px`}
|
|
||
| export const useShowEisPromotionalContent = ({ | ||
| promoId, | ||
| isCloudEnabled, |
There was a problem hiding this comment.
A thought: I think you can get the cloudEnabled part in this hook instead of getting it from args.
You may need to add cloud plugin as a dependency to this package but it may reduce passing isCloudEnabled around.
There was a problem hiding this comment.
@efegurkan I asked Sander about this and he said it wasn't possible because cloud plugin is in x-pack. I'm commenting here so you're aware, as I have another PR with a tour using isCloudEnabled prop.
|
Thanks @efegurkan! This only the beginning of this work 😅 so I'll implement your suggestions in my next PR. |
… in Kibana (elastic#244626) ## Summary This PR introduces promotional callouts and guided tours for the Elastic Inference Service (EIS) to enhance discovery and adoption among ECH/Serverless users. These callouts and tours have been added to targeted touchpoints within Kibana. To make these components shareable, the `kbn-search-api-panels` has been repurposed for the EIS promotional work and will eventually be renamed once the components originally in the package are moved/removed. **Acceptance criteria** - Callouts and tours should only be shown to ECH and Serverless users - Callouts displayed at: - Mappings tab of the index details page (above existing callouts) - Inference endpoint management page (below page header) - Callouts should have a `Get started` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Tour displayed at: - Inference endpoint management page over the .`elser-2-elastic` endpoint - Tour should have a `Learn more` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Each callout and tour maintains its own local storage key, which sets a value of `True` when the close/dismiss button is clicked and hides the component. ### Testing Instructions: **To know before testing:** - You can replicate a cloud user locally by changing the `isCloudEnabled` component prop value to `true` - You can run EIS locally by following the instructions here: [Search Inference FAQs - How can I run EIS locally in Kibana?](https://docs.elastic.dev/search-team/teams/inference/faq#how-can-i-run-eis-locally-in-kibana) **Callouts** - Navigate to the Mappings tab of an index details page. - As a ECH/Serverless user: - Confirm the EIS callout appears above the existing callouts - Click the `Get started` button and confirm it opens the EIS documentation in a new tab - Dismiss the callout and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1239" height="678" alt="Screenshot 2025-11-28 at 11 48 03" src="https://github.com/user-attachments/assets/17c80586-1f56-4867-83c6-3666901e48d9" /> </details> - As a self-managed user: - Confirm you are unable to see the callout - Navigate to the Inference endpoint management page. - Confirm the same steps above - <details> <summary>Screenshot</summary> <img width="1254" height="682" alt="Screenshot 2025-11-28 at 11 47 32" src="https://github.com/user-attachments/assets/3c15f582-32f5-40ce-b3b8-1982794e1084" /> </details> **Tours** - Navigate to the Inference endpoint management page - As a ECH/Serverless user: - Confirm the tour displays over the `.elser-2-elastic` endpoint - Click the `Learn more` button and confirm it opens the EIS documentation in a new tab - Dismiss the tour and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1247" height="678" alt="Screenshot 2025-11-28 at 12 03 25" src="https://github.com/user-attachments/assets/88a4809f-3b3b-451f-bff8-9e307bf544d7" /> </details> - As a self-managed user: - Confirm you are unable to see the tour **Local storage keys** - Confirm that dismissing each callout/tour sets a unique local storage key. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] ~[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials~ - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [ ] ~This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations.~ - [ ] ~[Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed~ - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) - [ ] ~Review the [backport guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing) and apply applicable `backport:*` labels.~ ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. ## Release Note Targeted EIS callouts and guided tours have been added to Kibana for ECH/Serverless users to improve discoverability of Elastic Inference Service endpoints. Users can dismiss callouts and tours, which will not reappear after dismissal. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
… in Kibana (elastic#244626) ## Summary This PR introduces promotional callouts and guided tours for the Elastic Inference Service (EIS) to enhance discovery and adoption among ECH/Serverless users. These callouts and tours have been added to targeted touchpoints within Kibana. To make these components shareable, the `kbn-search-api-panels` has been repurposed for the EIS promotional work and will eventually be renamed once the components originally in the package are moved/removed. **Acceptance criteria** - Callouts and tours should only be shown to ECH and Serverless users - Callouts displayed at: - Mappings tab of the index details page (above existing callouts) - Inference endpoint management page (below page header) - Callouts should have a `Get started` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Tour displayed at: - Inference endpoint management page over the .`elser-2-elastic` endpoint - Tour should have a `Learn more` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Each callout and tour maintains its own local storage key, which sets a value of `True` when the close/dismiss button is clicked and hides the component. ### Testing Instructions: **To know before testing:** - You can replicate a cloud user locally by changing the `isCloudEnabled` component prop value to `true` - You can run EIS locally by following the instructions here: [Search Inference FAQs - How can I run EIS locally in Kibana?](https://docs.elastic.dev/search-team/teams/inference/faq#how-can-i-run-eis-locally-in-kibana) **Callouts** - Navigate to the Mappings tab of an index details page. - As a ECH/Serverless user: - Confirm the EIS callout appears above the existing callouts - Click the `Get started` button and confirm it opens the EIS documentation in a new tab - Dismiss the callout and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1239" height="678" alt="Screenshot 2025-11-28 at 11 48 03" src="https://github.com/user-attachments/assets/17c80586-1f56-4867-83c6-3666901e48d9" /> </details> - As a self-managed user: - Confirm you are unable to see the callout - Navigate to the Inference endpoint management page. - Confirm the same steps above - <details> <summary>Screenshot</summary> <img width="1254" height="682" alt="Screenshot 2025-11-28 at 11 47 32" src="https://github.com/user-attachments/assets/3c15f582-32f5-40ce-b3b8-1982794e1084" /> </details> **Tours** - Navigate to the Inference endpoint management page - As a ECH/Serverless user: - Confirm the tour displays over the `.elser-2-elastic` endpoint - Click the `Learn more` button and confirm it opens the EIS documentation in a new tab - Dismiss the tour and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1247" height="678" alt="Screenshot 2025-11-28 at 12 03 25" src="https://github.com/user-attachments/assets/88a4809f-3b3b-451f-bff8-9e307bf544d7" /> </details> - As a self-managed user: - Confirm you are unable to see the tour **Local storage keys** - Confirm that dismissing each callout/tour sets a unique local storage key. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] ~[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials~ - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [ ] ~This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations.~ - [ ] ~[Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed~ - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) - [ ] ~Review the [backport guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing) and apply applicable `backport:*` labels.~ ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. ## Release Note Targeted EIS callouts and guided tours have been added to Kibana for ECH/Serverless users to improve discoverability of Elastic Inference Service endpoints. Users can dismiss callouts and tours, which will not reappear after dismissal. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
… in Kibana (elastic#244626) ## Summary This PR introduces promotional callouts and guided tours for the Elastic Inference Service (EIS) to enhance discovery and adoption among ECH/Serverless users. These callouts and tours have been added to targeted touchpoints within Kibana. To make these components shareable, the `kbn-search-api-panels` has been repurposed for the EIS promotional work and will eventually be renamed once the components originally in the package are moved/removed. **Acceptance criteria** - Callouts and tours should only be shown to ECH and Serverless users - Callouts displayed at: - Mappings tab of the index details page (above existing callouts) - Inference endpoint management page (below page header) - Callouts should have a `Get started` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Tour displayed at: - Inference endpoint management page over the .`elser-2-elastic` endpoint - Tour should have a `Learn more` CTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eis - Each callout and tour maintains its own local storage key, which sets a value of `True` when the close/dismiss button is clicked and hides the component. ### Testing Instructions: **To know before testing:** - You can replicate a cloud user locally by changing the `isCloudEnabled` component prop value to `true` - You can run EIS locally by following the instructions here: [Search Inference FAQs - How can I run EIS locally in Kibana?](https://docs.elastic.dev/search-team/teams/inference/faq#how-can-i-run-eis-locally-in-kibana) **Callouts** - Navigate to the Mappings tab of an index details page. - As a ECH/Serverless user: - Confirm the EIS callout appears above the existing callouts - Click the `Get started` button and confirm it opens the EIS documentation in a new tab - Dismiss the callout and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1239" height="678" alt="Screenshot 2025-11-28 at 11 48 03" src="https://github.com/user-attachments/assets/17c80586-1f56-4867-83c6-3666901e48d9" /> </details> - As a self-managed user: - Confirm you are unable to see the callout - Navigate to the Inference endpoint management page. - Confirm the same steps above - <details> <summary>Screenshot</summary> <img width="1254" height="682" alt="Screenshot 2025-11-28 at 11 47 32" src="https://github.com/user-attachments/assets/3c15f582-32f5-40ce-b3b8-1982794e1084" /> </details> **Tours** - Navigate to the Inference endpoint management page - As a ECH/Serverless user: - Confirm the tour displays over the `.elser-2-elastic` endpoint - Click the `Learn more` button and confirm it opens the EIS documentation in a new tab - Dismiss the tour and refresh the page to verify it does not reappear - <details> <summary>Screenshot</summary> <img width="1247" height="678" alt="Screenshot 2025-11-28 at 12 03 25" src="https://github.com/user-attachments/assets/88a4809f-3b3b-451f-bff8-9e307bf544d7" /> </details> - As a self-managed user: - Confirm you are unable to see the tour **Local storage keys** - Confirm that dismissing each callout/tour sets a unique local storage key. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] ~[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials~ - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] ~If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~ - [ ] ~This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations.~ - [ ] ~[Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed~ - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) - [ ] ~Review the [backport guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing) and apply applicable `backport:*` labels.~ ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. ## Release Note Targeted EIS callouts and guided tours have been added to Kibana for ECH/Serverless users to improve discoverability of Elastic Inference Service endpoints. Users can dismiss callouts and tours, which will not reappear after dismissal. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Summary
This PR introduces promotional callouts and guided tours for the Elastic Inference Service (EIS) to enhance discovery and adoption among ECH/Serverless users. These callouts and tours have been added to targeted touchpoints within Kibana.
To make these components shareable, the
kbn-search-api-panelshas been repurposed for the EIS promotional work and will eventually be renamed once the components originally in the package are moved/removed.Acceptance criteria
Get startedCTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eiselser-2-elasticendpointLearn moreCTA linking to: https://www.elastic.co/docs/explore-analyze/elastic-inference/eisTruewhen the close/dismiss button is clicked and hides the component.Testing Instructions:
To know before testing:
isCloudEnabledcomponent prop value totrueCallouts
Get startedbutton and confirm it opens the EIS documentation in a new tabScreenshot
Screenshot
Tours
.elser-2-elasticendpointLearn morebutton and confirm it opens the EIS documentation in a new tabScreenshot
Local storage keys
Checklist
Check the PR satisfies following conditions.
Reviewers should verify this PR satisfies this list as well.
Documentation was added for features that require explanation or tutorialsIf a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker listThis was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. Therelease_note:breakinglabel should be applied in these situations.Flaky Test Runner was used on any tests changedrelease_note:*label is applied per the guidelinesReview the backport guidelines and apply applicablebackport:*labels.Identify risks
Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss.
Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging.
Release Note
Targeted EIS callouts and guided tours have been added to Kibana for ECH/Serverless users to improve discoverability of Elastic Inference Service endpoints. Users can dismiss callouts and tours, which will not reappear after dismissal.