[8.19] [Security Solution] Solution navigation architecture revision (#217890)#221923
Merged
semd merged 16 commits intoelastic:8.19from May 30, 2025
Merged
[8.19] [Security Solution] Solution navigation architecture revision (#217890)#221923semd merged 16 commits intoelastic:8.19from
semd merged 16 commits intoelastic:8.19from
Conversation
…c#217890) ## Summary This PR updates and simplifies the general architecture of the Security Solution links, removing unnecessary code. The new architecture leverages the static `navigationTree` files. This approach was discussed and agreed with @tsullivan (Shared-UX team) and introduced in [this PR](elastic#215969). With these changes, the `navigationTree` becomes the SSoT (Single Source of Truth) for the links hierarchy. This is done by registering the Security Solution plugin `deepLinks` using the regular `ApplicationLinks` information, but following the same hierarchy as the `navigationTree`. This ensures consistency across the app and keeps the code DRY. >[!note] These changes only affect the new _Solution navigation_. The _Classic navigation_ remains unchanged and isolated, as it is expected to be deprecated and removed in the near future. ### Architecture change - The "links switchers", which were functions to programmatically change the links hierarchy, have been removed. - The `NavigationLinks` from which we were generating the `navigationTree` programatically have also been dropped. - The SecuritySolution plugin `deepLinks` are now generated using the `ApplicationLinks` for the link configuration (title, path...) and the current `navigationTree` for the hierarchy. #### Previous architecture  #### New architecture  >[!important] The landing pages (Rules, Explore, Assets...) were made inaccessible recently by the shared-ux team ([PR](elastic#210893)) in the new Solution navigation as part of an effort to unify with the rest of solutions. This fact also helped simplify the architecture. >[!tip] We have multiple static `navigationTree` definitions, which are used depending on the serverless product tier. Right now, we have the "default" `navigationTree` used in the _essentials_ and _complete_ tiers, and the "AI" `navigationTree` used in the new _searchAiLake_ tier. This approach ensures consistency for the links' locations across Kibana: the "left navigation", the "breadcrumbs", and the "global search" will always be aligned. ### Screenshots #### ECH navigations | Classic nav | Solution nav | |-|-| |<img width="248" alt="classic" src="https://github.com/user-attachments/assets/bb9e722e-316e-4c04-9978-068c35680382" />|<img width="248" alt="solution_nav" src="https://github.com/user-attachments/assets/a993ce49-b780-4405-b829-4d36023ae627" />| #### Serverless navigations | Regular tiers | AI for SOC | |-|-| |<img width="248" alt="regular_serverless_nav" src="https://github.com/user-attachments/assets/d782bf49-6c76-4414-a807-35245a5e9883" />|<img width="248" alt="ai_nav" src="https://github.com/user-attachments/assets/25d9950d-77c8-4d44-ab53-4b07423713af" />| #### Example of hierarchy for the `Endpoints` page: ##### Classic nav  ##### Solution nav  ### Other changes - `NavLinks` are no longer used by the Solution navigation and have been deprecated. They are only used in the Classic navigation now and will be removed along with it. - `ExternalPageNames` are no longer used and have been removed. - `ApplicationLinks` observables moved to a singleton class. - Link-related hooks have been moved to their own `links_hooks.ts` file. ### Next steps When the Classic navigation is deprecated, we'll be able to: - Define a flat structure of `ApplicationLinks` and remove the concept of `category` in them. - Remove Classic Security navigation components. - Remove all the landing pages and their components in the navigation package. The [docs](https://docs.elastic.dev/security-solution/dev-docs/app-links) will be updated once this is merged. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> (cherry picked from commit c9f2f7c) # Conflicts: # src/platform/packages/shared/deeplinks/security/deep_links.ts # x-pack/platform/plugins/private/translations/translations/fr-FR.json # x-pack/platform/plugins/private/translations/translations/ja-JP.json # x-pack/platform/plugins/private/translations/translations/zh-CN.json # x-pack/solutions/observability/plugins/logs_explorer/.storybook/__mocks__/package_icon.tsx # x-pack/solutions/security/packages/navigation/src/constants.ts # x-pack/solutions/security/packages/navigation/src/i18n_strings.ts # x-pack/solutions/security/packages/navigation/src/navigation_tree/ml_navigation_tree.ts # x-pack/solutions/security/plugins/security_solution/public/app/links/app_links.ts # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/categories.ts # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_links.ts # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/assets_translations.ts # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/lazy_icons.tsx # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_links.ts # x-pack/solutions/security/plugins/security_solution/public/app/solution_navigation/links/sections/ml_translations.ts # x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.test.tsx # x-pack/solutions/security/plugins/security_solution/public/common/components/security_route_page_wrapper/index.tsx # x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline.test.tsx # x-pack/solutions/security/plugins/security_solution/public/common/utils/timeline/use_show_timeline_for_path.ts # x-pack/solutions/security/plugins/security_solution/public/configurations/routes.tsx # x-pack/solutions/security/plugins/security_solution/public/detections/pages/alert_summary/index.tsx # x-pack/solutions/security/plugins/security_solution/public/lazy_sub_plugins.tsx # x-pack/solutions/security/plugins/security_solution/tsconfig.json # x-pack/solutions/security/plugins/security_solution_ess/public/navigation/__snapshots__/side_navigation.test.tsx.snap # x-pack/solutions/security/plugins/security_solution_ess/public/navigation/side_navigation.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/common/lazy_icons.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/__snapshots__/side_navigation.test.tsx.snap # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/callout.test.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/callout.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/icon.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/translations.ts # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/index.ts # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/navigation.test.ts # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/security_side_navigation.tsx # x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/side_navigation.ts # x-pack/test/security_solution_cypress/cypress/screens/serverless_security_header.ts
Contributor
Author
|
@elasticmachine merge upstream |
…90' into backport/8.19/pr-217890
angorayc
approved these changes
May 29, 2025
tomsonpl
approved these changes
May 29, 2025
Contributor
Author
|
@elasticmachine merge upstream |
Contributor
💛 Build succeeded, but was flaky
Failed CI StepsMetrics [docs]Module Count
Public APIs missing comments
Async chunks
Public APIs missing exports
Page load bundle
Unknown metric groupsAPI count
async chunk count
ESLint disabled line counts
Total ESLint disabled count
History
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport
This will backport the following commits from
mainto8.19:Questions ?
Please refer to the Backport tool documentation