Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Security Solution] Onboarding redesign #192247

Merged
merged 87 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from 85 commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
0c575b7
basic architecture implemented
semd Sep 6, 2024
e10f1da
onboarding new directory in public
semd Sep 9, 2024
07075cd
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Sep 9, 2024
ea54df3
adapt design
semd Sep 10, 2024
9c06848
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Sep 10, 2024
ec4cd42
implement card utils
semd Sep 10, 2024
bac2c8d
finish dashboard card and card callout
semd Sep 11, 2024
6d173ad
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Sep 12, 2024
c6c077b
onboarding sub-plugin finished
semd Sep 13, 2024
592913f
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Sep 13, 2024
b05711a
finish service refactor
semd Sep 13, 2024
00aabd9
move service
semd Sep 13, 2024
106019f
remove old implementation
semd Sep 13, 2024
220c015
add some tests and fix old dir references
semd Sep 13, 2024
1f3f871
test and translations fixed
semd Sep 16, 2024
1eae840
test
semd Sep 16, 2024
feba421
Merge branch 'main' into refactor/onboarding_hub_new_architecture
elasticmachine Sep 16, 2024
cfa7a0c
[CI] Auto-commit changed files from 'node scripts/eslint --no-cache -…
kibanamachine Sep 16, 2024
3c15ba6
some enhancements
semd Sep 18, 2024
41d6277
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Sep 18, 2024
6bfd445
Merge remote-tracking branch 'refs/remotes/origin/refactor/onboarding…
semd Sep 18, 2024
e87e10e
fix stuff
semd Sep 18, 2024
13b89d1
tests added for main hooks
semd Sep 19, 2024
794946c
fix test
semd Sep 19, 2024
b2a2873
add fleet integration
angorayc Sep 17, 2024
b226a3c
add installation status
angorayc Sep 17, 2024
c6b1992
installation status
angorayc Sep 18, 2024
5053567
clean up
angorayc Sep 20, 2024
e64e0aa
integration badge
angorayc Sep 20, 2024
f66bbd8
add customised cancellation link
angorayc Sep 24, 2024
a3ffd1e
agent still required
angorayc Sep 24, 2024
25943e0
display only 9 cards in the first tab
angorayc Sep 24, 2024
172345f
cancellation link
angorayc Sep 25, 2024
94fd73f
types
angorayc Sep 26, 2024
1800b07
add empty state styles
angorayc Sep 26, 2024
ef9d5ad
update complete badge
angorayc Sep 26, 2024
b6857c3
unit tests
angorayc Sep 27, 2024
ea3266f
update installStatus in IntegrationCardItem
angorayc Sep 27, 2024
80b6ee3
agentless available callout
angorayc Sep 27, 2024
2487395
update routes state
angorayc Sep 30, 2024
0ff541b
update onSave link in fleet
angorayc Sep 30, 2024
9621486
update unit tests
angorayc Sep 30, 2024
0856719
fix apm link
angorayc Oct 1, 2024
ca0da36
fixup
angorayc Oct 1, 2024
69c71cc
clean up
angorayc Oct 1, 2024
8da2fc8
update installation label
angorayc Oct 1, 2024
3733369
types
angorayc Oct 1, 2024
49e182e
add comments in fleet
angorayc Oct 3, 2024
03adb15
tests
angorayc Oct 3, 2024
97ebde6
code review
angorayc Oct 4, 2024
1be3165
search term behaviour
angorayc Oct 7, 2024
e833767
unit tests
angorayc Oct 7, 2024
94e1daa
feat: add new cards
agusruidiazgd Sep 23, 2024
b41ce90
improving cards
agusruidiazgd Sep 25, 2024
121afdf
add rules check complete function
agusruidiazgd Sep 30, 2024
046aebd
change dark theme styles feedback
agusruidiazgd Oct 1, 2024
7554939
adding tests
agusruidiazgd Oct 4, 2024
6712a29
mv withLazyHook
angorayc Oct 7, 2024
1c65dac
add static integration list
angorayc Oct 8, 2024
90e72ae
support custom sorting on integrations
angorayc Oct 8, 2024
18e3101
organizing code
agusruidiazgd Oct 8, 2024
506c929
add endpoint callout
angorayc Oct 8, 2024
c6d35d2
remove duplicated state
angorayc Oct 8, 2024
71edb9c
type casting
angorayc Oct 8, 2024
6679a43
improving ai connector flow
agusruidiazgd Oct 8, 2024
4d6d6dd
pr comments
agusruidiazgd Oct 9, 2024
b2c3e80
improve style in card_content_panel
agusruidiazgd Oct 9, 2024
ac65f75
n AI connectors added - complete status badge
agusruidiazgd Oct 9, 2024
92b7c71
missing style for ai connector
agusruidiazgd Oct 9, 2024
39b6af2
pr comments
agusruidiazgd Oct 9, 2024
cfd190c
update network sub category
angorayc Oct 9, 2024
f272a5b
design feedback
agusruidiazgd Oct 10, 2024
b16a1f7
Merge pull request #8 from angorayc/onboarding-fleet-integration
semd Oct 10, 2024
13b2178
solve conflicts
semd Oct 10, 2024
f59ae53
Merge pull request #9 from agusruidiazgd/feat/onboarding_hub_new_cards
semd Oct 10, 2024
a425490
solve conflicts
semd Oct 10, 2024
34e718b
some small improvements
semd Oct 10, 2024
55f82b4
update tests
angorayc Oct 10, 2024
a3e61e0
Merge pull request #10 from angorayc/refactor/onboarding_hub_new_arch…
semd Oct 10, 2024
dab0bc0
fixes
semd Oct 10, 2024
77e5a2e
Merge remote-tracking branch 'refs/remotes/origin/refactor/onboarding…
semd Oct 10, 2024
12dd431
types fixes
semd Oct 10, 2024
1e0d3e3
fix ess onboarding settings
semd Oct 10, 2024
90822a2
align fleet change
semd Oct 11, 2024
8de9db5
Merge remote-tracking branch 'upstream/main' into refactor/onboarding…
semd Oct 11, 2024
f64539e
address review comments
semd Oct 11, 2024
e33fb1a
fix type error
semd Oct 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions x-pack/plugins/security_solution/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ export const APP_NAME = 'Security' as const;
export const APP_ICON = 'securityAnalyticsApp' as const;
export const APP_ICON_SOLUTION = 'logoSecurity' as const;
export const APP_PATH = `/app/security` as const;
export const ADD_DATA_PATH = `/app/integrations/browse/security`;
export const ADD_THREAT_INTELLIGENCE_DATA_PATH = `/app/integrations/browse/threat_intel`;
export const APP_INTEGRATIONS_PATH = `/app/integrations` as const;
export const ADD_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/security`;
export const ADD_THREAT_INTELLIGENCE_DATA_PATH = `${APP_INTEGRATIONS_PATH}/browse/threat_intel`;
export const DEFAULT_BYTES_FORMAT = 'format:bytes:defaultPattern' as const;
export const DEFAULT_DATE_FORMAT = 'dateFormat' as const;
export const DEFAULT_DATE_FORMAT_TZ = 'dateFormat:tz' as const;
Expand Down Expand Up @@ -85,7 +86,7 @@ export const MANAGE_PATH = '/manage' as const;
export const TIMELINES_PATH = '/timelines' as const;
export const CASES_PATH = '/cases' as const;
export const OVERVIEW_PATH = '/overview' as const;
export const LANDING_PATH = '/get_started' as const;
export const ONBOARDING_PATH = '/get_started' as const;
export const DATA_QUALITY_PATH = '/data_quality' as const;
export const DETECTION_RESPONSE_PATH = '/detection_response' as const;
export const DETECTIONS_PATH = '/detections' as const;
Expand Down
9 changes: 7 additions & 2 deletions x-pack/plugins/security_solution/public/app/app_routes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ import type { RouteProps } from 'react-router-dom';
import { Redirect } from 'react-router-dom';
import { Routes, Route } from '@kbn/shared-ux-router';
import type { Capabilities } from '@kbn/core/public';
import { CASES_FEATURE_ID, CASES_PATH, LANDING_PATH, SERVER_APP_ID } from '../../common/constants';
import {
CASES_FEATURE_ID,
CASES_PATH,
ONBOARDING_PATH,
SERVER_APP_ID,
} from '../../common/constants';
import { NotFoundPage } from './404';
import type { StartServices } from '../types';

Expand All @@ -33,7 +38,7 @@ AppRoutes.displayName = 'AppRoutes';

export const RedirectRoute = React.memo<{ capabilities: Capabilities }>(({ capabilities }) => {
if (capabilities[SERVER_APP_ID].show === true) {
return <Redirect to={LANDING_PATH} />;
return <Redirect to={ONBOARDING_PATH} />;
}
if (capabilities[CASES_FEATURE_ID].read_cases === true) {
return <Redirect to={CASES_PATH} />;
Expand Down

This file was deleted.

6 changes: 3 additions & 3 deletions x-pack/plugins/security_solution/public/app_links.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { links as timelinesLinks } from './timelines/links';
import { links as casesLinks } from './cases/links';
import { links as managementLinks, getManagementFilteredLinks } from './management/links';
import { exploreLinks } from './explore/links';
import { gettingStartedLinks } from './overview/links';
import { onboardingLinks } from './onboarding/links';
import { findingsLinks } from './cloud_security_posture/links';
import type { StartPlugins } from './types';
import { dashboardsLinks } from './dashboards/links';
Expand All @@ -34,7 +34,7 @@ export const appLinks: AppLinkItems = Object.freeze([
indicatorsLinks,
exploreLinks,
rulesLinks,
gettingStartedLinks,
onboardingLinks,
managementLinks,
notesLink,
]);
Expand All @@ -55,7 +55,7 @@ export const getFilteredLinks = async (
indicatorsLinks,
exploreLinks,
rulesLinks,
gettingStartedLinks,
onboardingLinks,
managementFilteredLinks,
notesLink,
]);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import React, { useMemo } from 'react';
import { EuiLoadingSpinner, useEuiTheme, type EuiLoadingSpinnerProps } from '@elastic/eui';

interface CenteredLoadingSpinnerProps extends EuiLoadingSpinnerProps {
topOffset?: string;
}

export const CenteredLoadingSpinner = React.memo<CenteredLoadingSpinnerProps>(
semd marked this conversation as resolved.
Show resolved Hide resolved
({ topOffset, ...euiLoadingSpinnerProps }) => {
const { euiTheme } = useEuiTheme();
const style = useMemo(
() => ({
display: 'flex',
margin: `${euiTheme.size.xl} auto`,
...(topOffset && { marginTop: topOffset }),
}),
[topOffset, euiTheme]
);

return <EuiLoadingSpinner {...euiLoadingSpinnerProps} style={style} />;
}
);
CenteredLoadingSpinner.displayName = 'CenteredLoadingSpinner';
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
* 2.0.
*/

export const useProjectFeaturesUrl = jest.fn(() => 'mocked_user_name');
export { CenteredLoadingSpinner } from './centered_loading_spinner';
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { fireEvent, render } from '@testing-library/react';
import { EmptyPromptComponent } from './empty_prompt';
import { SecurityPageName } from '../../../../common';
import { useNavigateTo } from '../../lib/kibana';
import { AddIntegrationsSteps } from '../landing_page/onboarding/types';
import { OnboardingCardId } from '../../../onboarding/constants';

const mockNavigateTo = jest.fn();
const mockUseNavigateTo = useNavigateTo as jest.Mock;
Expand All @@ -37,7 +37,7 @@ describe('EmptyPromptComponent component', () => {
fireEvent.click(link);
expect(mockNavigateTo).toBeCalledWith({
deepLinkId: SecurityPageName.landing,
path: `#${AddIntegrationsSteps.connectToDataSources}`,
path: `#${OnboardingCardId.integrations}`,
});
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ import {
type EuiThemeComputed,
} from '@elastic/eui';
import { css } from '@emotion/react';
import { OnboardingCardId } from '../../../onboarding/constants';
import { SecurityPageName } from '../../../../common';

import * as i18n from './translations';
import endpointSvg from './images/endpoint1.svg';
import cloudSvg from './images/cloud1.svg';
import siemSvg from './images/siem1.svg';
import { useNavigateTo } from '../../lib/kibana';
import { VIDEO_SOURCE } from './constants';
import { AddIntegrationsSteps } from '../landing_page/onboarding/types';
import { ONBOARDING_VIDEO_SOURCE } from '../../constants';

const imgUrls = {
cloud: cloudSvg,
Expand Down Expand Up @@ -75,7 +75,7 @@ export const EmptyPromptComponent = memo(() => {
const navigateToAddIntegrations = useCallback(() => {
navigateTo({
deepLinkId: SecurityPageName.landing,
path: `#${AddIntegrationsSteps.connectToDataSources}`,
path: `#${OnboardingCardId.integrations}`,
});
}, [navigateTo]);

Expand Down Expand Up @@ -115,7 +115,7 @@ export const EmptyPromptComponent = memo(() => {
referrerPolicy="no-referrer"
sandbox="allow-scripts allow-same-origin"
scrolling="no"
src={VIDEO_SOURCE}
src={ONBOARDING_VIDEO_SOURCE}
title={i18n.SIEM_HEADER}
width="100%"
/>
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading