From 65c4cf0eae424224b8aa5a5c96c2465c0cc655b1 Mon Sep 17 00:00:00 2001 From: Agustina Nahir Ruidiaz Date: Mon, 19 Aug 2024 15:17:46 +0200 Subject: [PATCH 01/13] data ingestion hub header cards + links --- .../onboarding/onboarding_page_service.ts | 7 ++ .../data_ingestion_hub_header/cards.ts | 68 ++++++++++++++++ .../data_ingestion_hub_header_card.test.ts | 10 +++ .../data_ingestion_hub_header_card.tsx | 48 ++++++++++++ .../data_ingestion_hub_header/index.tsx | 74 +++++++++++------- .../data_ingestion_hub_header/translations.ts | 71 +++++++++++++++++ .../onboarding/hooks/use_user_settings_url.ts | 14 ++++ .../images/dark_data_ingestion_hub_demo.png | Bin 0 -> 9548 bytes .../dark_data_ingestion_hub_teammates.png | Bin 0 -> 10901 bytes .../images/dark_data_ingestion_hub_video.png | Bin 0 -> 5298 bytes .../images/data_ingestion_hub_demo.png | Bin 0 -> 6826 bytes .../images/data_ingestion_hub_teammates.png | Bin 0 -> 10464 bytes .../images/data_ingestion_hub_video.png | Bin 0 -> 6645 bytes .../data_ingestion_hub_header_card.styles.ts | 63 +++++++++++++++ .../public/onboarding/onboarding.ts | 9 ++- .../public/plugin.ts | 3 + 16 files changed, 338 insertions(+), 29 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/cards.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/translations.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/hooks/use_user_settings_url.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/dark_data_ingestion_hub_demo.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/dark_data_ingestion_hub_teammates.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/dark_data_ingestion_hub_video.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_demo.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_teammates.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_video.png create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/styles/data_ingestion_hub_header_card.styles.ts diff --git a/x-pack/plugins/security_solution/public/app/components/onboarding/onboarding_page_service.ts b/x-pack/plugins/security_solution/public/app/components/onboarding/onboarding_page_service.ts index ea5beab4608d2..a3bf536525cd7 100644 --- a/x-pack/plugins/security_solution/public/app/components/onboarding/onboarding_page_service.ts +++ b/x-pack/plugins/security_solution/public/app/components/onboarding/onboarding_page_service.ts @@ -13,22 +13,26 @@ import type { StepId } from '../../../common/components/landing_page/onboarding/ export class OnboardingPageService { private productTypesSubject$: BehaviorSubject; private projectsUrlSubject$: BehaviorSubject; + private userSettingsUrlSubject$: BehaviorSubject; private projectFeaturesUrlSubject$: BehaviorSubject; private availableStepsSubject$: BehaviorSubject; public productTypes$: Observable; public projectsUrl$: Observable; + public userSettingsUrl$: Observable; public projectFeaturesUrl$: Observable; public availableSteps$: Observable; constructor() { this.productTypesSubject$ = new BehaviorSubject(undefined); this.projectsUrlSubject$ = new BehaviorSubject(undefined); + this.userSettingsUrlSubject$ = new BehaviorSubject(undefined); this.projectFeaturesUrlSubject$ = new BehaviorSubject(undefined); this.availableStepsSubject$ = new BehaviorSubject([]); this.productTypes$ = this.productTypesSubject$.asObservable(); this.projectsUrl$ = this.projectsUrlSubject$.asObservable(); + this.userSettingsUrl$ = this.userSettingsUrlSubject$.asObservable(); this.projectFeaturesUrl$ = this.projectFeaturesUrlSubject$.asObservable(); this.availableSteps$ = this.availableStepsSubject$.asObservable(); } @@ -39,6 +43,9 @@ export class OnboardingPageService { setProjectFeaturesUrl(projectFeaturesUrl: string | undefined) { this.projectFeaturesUrlSubject$.next(projectFeaturesUrl); } + setUserSettingsUrl(userSettingsUrl: string | undefined) { + this.userSettingsUrlSubject$.next(userSettingsUrl); + } setProjectsUrl(projectsUrl: string | undefined) { this.projectsUrlSubject$.next(projectsUrl); } diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/cards.ts b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/cards.ts new file mode 100644 index 0000000000000..28c72bd9066c1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/cards.ts @@ -0,0 +1,68 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import video from '../images/data_ingestion_hub_video.png'; +import darkVideo from '../images/dark_data_ingestion_hub_video.png'; +import teammates from '../images/data_ingestion_hub_teammates.png'; +import darkTeammates from '../images/dark_data_ingestion_hub_teammates.png'; +import demo from '../images/data_ingestion_hub_demo.png'; +import darkDemo from '../images/dark_data_ingestion_hub_demo.png'; +import * as i18n from './translations'; +import { useUserSettingsUrl } from '../hooks/use_user_settings_url'; + +export interface Card { + icon: string; + key: string; + title: string; + description: string; + link: { + title: string; + href: string | undefined; + }; +} + +export const useDataIngestionHubHeaderCards: () => Card[] = () => { + const { colorMode } = useEuiTheme(); + const isDarkMode = colorMode === 'DARK'; + const userSettingsUrl = useUserSettingsUrl(); + + const cards = [ + { + icon: isDarkMode ? darkVideo : video, + key: 'video', + title: i18n.DATA_INGESTION_HUB_HEADER_VIDEO_TITLE, + description: i18n.DATA_INGESTION_HUB_HEADER_VIDEO_DESCRIPTION, + link: { + title: i18n.DATA_INGESTION_HUB_HEADER_VIDEO_LINK_TITLE, + href: 'https://docs.elastic.co/integrations/elastic-security-intro', + }, + }, + { + icon: isDarkMode ? darkTeammates : teammates, + key: 'teammates', + title: i18n.DATA_INGESTION_HUB_HEADER_TEAMMATES_TITLE, + description: i18n.DATA_INGESTION_HUB_HEADER_TEAMMATES_DESCRIPTION, + link: { + title: i18n.DATA_INGESTION_HUB_HEADER_TEAMMATES_LINK_TITLE, + href: userSettingsUrl, + }, + }, + { + icon: isDarkMode ? darkDemo : demo, + key: 'demo', + title: i18n.DATA_INGESTION_HUB_HEADER_DEMO_TITLE, + description: i18n.DATA_INGESTION_HUB_HEADER_DEMO_DESCRIPTION, + link: { + title: i18n.DATA_INGESTION_HUB_HEADER_DEMO_LINK_TITLE, + href: 'https://www.elastic.co/demo-gallery?solutions=security&features=null', + }, + }, + ]; + + return cards; +}; diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.ts b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.ts new file mode 100644 index 0000000000000..222b7424aa859 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.ts @@ -0,0 +1,10 @@ +/* + * 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. + */ + +describe('', () => { + test('', () => {}); +}); diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.tsx b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.tsx new file mode 100644 index 0000000000000..6ff36e37d5165 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.tsx @@ -0,0 +1,48 @@ +/* + * 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 from 'react'; +import { EuiCard, EuiLink, EuiTitle } from '@elastic/eui'; +import type { Card } from './cards'; +import { useDataIngestionHubHeaderCardStyles } from '../styles/data_ingestion_hub_header_card.styles'; + +interface DataIngestionHubHeaderComponentCardProps { + card: Card; +} + +const DataIngestionHubHeaderCardComponent: React.FC = ( + props +) => { + const { card } = props; + + const IMAGE_WIDTH = 64; + + const { cardStyle, cardTitleStyle, cardLinkStyle, cardDescriptionStyle } = + useDataIngestionHubHeaderCardStyles(); + + return ( + {}} + className={cardStyle} + layout="horizontal" + titleSize="xs" + icon={{card.title}} + title={ + +

{card.title}

+
+ } + description={

{card.description}

} + > + + {card.link.title} + +
+ ); +}; + +export const DataIngestionHubHeaderCard = React.memo(DataIngestionHubHeaderCardComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/index.tsx b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/index.tsx index 167029c5cc431..c38323716faaa 100644 --- a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/index.tsx @@ -15,9 +15,12 @@ import { } from '../translations'; import { useCurrentUser } from '../../../../lib/kibana'; import { useDataIngestionHubHeaderStyles } from '../styles/data_ingestion_hub_header.styles'; +import { useDataIngestionHubHeaderCards } from './cards'; +import { DataIngestionHubHeaderCard } from './data_ingestion_hub_header_card'; const DataIngestionHubHeaderComponent: React.FC = () => { const userName = useCurrentUser(); + const cards = useDataIngestionHubHeaderCards(); const { headerContentStyles, @@ -34,34 +37,49 @@ const DataIngestionHubHeaderComponent: React.FC = () => { const headerDescriptionClassNames = classnames('eui-displayBlock', headerDescriptionStyles); return ( - - - - {name && ( - - {GET_STARTED_PAGE_TITLE(name)} - - )} - -

{GET_STARTED_DATA_INGESTION_HUB_SUBTITLE}

- - - {GET_STARTED_DATA_INGESTION_HUB_DESCRIPTION} - -
-
+ <> + + + + {name && ( + + {GET_STARTED_PAGE_TITLE(name)} + + )} + +

{GET_STARTED_DATA_INGESTION_HUB_SUBTITLE}

+ + + {GET_STARTED_DATA_INGESTION_HUB_DESCRIPTION} + +
+
+ + + {cards.map((card) => ( + + + + ))} + + ); }; diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/translations.ts b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/translations.ts new file mode 100644 index 0000000000000..a989a2750f1c1 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/translations.ts @@ -0,0 +1,71 @@ +/* + * 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 { i18n } from '@kbn/i18n'; + +export const DATA_INGESTION_HUB_HEADER_VIDEO_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.video.title', + { + defaultMessage: 'Watch 2 minute overview video', + } +); + +export const DATA_INGESTION_HUB_HEADER_VIDEO_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.video.description', + { + defaultMessage: 'Get acquainted with Elastic Security', + } +); + +export const DATA_INGESTION_HUB_HEADER_VIDEO_LINK_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.video.link.title', + { + defaultMessage: 'Watch video', + } +); + +export const DATA_INGESTION_HUB_HEADER_DEMO_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.demo.title', + { + defaultMessage: 'See Elastic Security in action', + } +); + +export const DATA_INGESTION_HUB_HEADER_DEMO_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.demo.description', + { + defaultMessage: 'Explore the demo, no setup required!', + } +); + +export const DATA_INGESTION_HUB_HEADER_DEMO_LINK_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.demo.link.title', + { + defaultMessage: 'Explore Demo', + } +); + +export const DATA_INGESTION_HUB_HEADER_TEAMMATES_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.teammates.title', + { + defaultMessage: 'Add teammates', + } +); + +export const DATA_INGESTION_HUB_HEADER_TEAMMATES_DESCRIPTION = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.teammates.description', + { + defaultMessage: 'Increase collaboration across your org', + } +); + +export const DATA_INGESTION_HUB_HEADER_TEAMMATES_LINK_TITLE = i18n.translate( + 'xpack.securitySolution.onboarding.dataIngestionHubHeader.teammates.link.title', + { + defaultMessage: 'Add users', + } +); diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/hooks/use_user_settings_url.ts b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/hooks/use_user_settings_url.ts new file mode 100644 index 0000000000000..a55b682805e66 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/hooks/use_user_settings_url.ts @@ -0,0 +1,14 @@ +/* + * 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 { useObservable } from 'react-use'; +import { useKibana } from '../../../../lib/kibana'; + +export const useUserSettingsUrl = () => { + const { userSettingsUrl$ } = useKibana().services.onboarding; + return useObservable(userSettingsUrl$, undefined); +}; diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/dark_data_ingestion_hub_demo.png b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/dark_data_ingestion_hub_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..506f7fa2ecfbdc0b62230b57dd4876cdce25d66d GIT binary patch literal 9548 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_demo.png b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..661363b4538884eaf8468895dd47c2ba646486c2 GIT binary patch literal 6826 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_teammates.png b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/images/data_ingestion_hub_teammates.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5e65d738bb69d86e3320d1bbf713660001ae4f GIT binary patch literal 10464 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 literal 0 HcmV?d00001 diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/styles/data_ingestion_hub_header_card.styles.ts b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/styles/data_ingestion_hub_header_card.styles.ts new file mode 100644 index 0000000000000..35c69821080eb --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/styles/data_ingestion_hub_header_card.styles.ts @@ -0,0 +1,63 @@ +/* + * 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 { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/css'; +import { useMemo } from 'react'; + +export const useDataIngestionHubHeaderCardStyles = () => { + const { euiTheme, colorMode } = useEuiTheme(); + const isDarkMode = colorMode === 'DARK'; + + const cardStyle = useMemo(() => { + const cardBaseStyle = { minWidth: '315px' }; + return isDarkMode + ? css({ + ...cardBaseStyle, + backgroundColor: `${euiTheme.colors.lightestShade}`, + boxShadow: 'none', + border: `1px solid ${euiTheme.colors.mediumShade}`, + }) + : css(cardBaseStyle); + }, [isDarkMode, euiTheme]); + + const dataIngestionHubHeaderCardStyles = useMemo(() => { + return { + cardStyle, + cardTitleStyle: css({ + fontSize: `${euiTheme.base * 0.875}px`, + fontWeight: euiTheme.font.weight.semiBold, + lineHeight: euiTheme.size.l, + color: euiTheme.colors.title, + }), + cardDescriptionStyle: css({ + fontSize: '12.25px', + fontWeight: euiTheme.font.weight.regular, + lineHeight: `${euiTheme.base * 1.25}px`, + color: euiTheme.colors.darkestShade, + }), + cardLinkStyle: css({ + fontSize: euiTheme.size.m, + fontWeight: euiTheme.font.weight.medium, + lineHeight: euiTheme.size.base, + }), + }; + }, [ + cardStyle, + euiTheme.base, + euiTheme.colors.darkestShade, + euiTheme.colors.title, + euiTheme.font.weight.medium, + euiTheme.font.weight.regular, + euiTheme.font.weight.semiBold, + euiTheme.size.base, + euiTheme.size.l, + euiTheme.size.m, + ]); + + return dataIngestionHubHeaderCardStyles; +}; diff --git a/x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts b/x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts index 3bcde37f4c75d..49a8325126d24 100644 --- a/x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts +++ b/x-pack/plugins/security_solution_ess/public/onboarding/onboarding.ts @@ -15,7 +15,14 @@ import { import type { Services } from '../common/services'; export const setOnboardingSettings = (services: Services) => { - const { securitySolution } = services; + const { + securitySolution, + application: { getUrlForApp }, + } = services; + + securitySolution.setOnboardingPageSettings.setUserSettingsUrl( + getUrlForApp('management', { path: 'security/users' }) + ); securitySolution.setOnboardingPageSettings.setAvailableSteps([ OverviewSteps.getToKnowElasticSecurity, diff --git a/x-pack/plugins/security_solution_serverless/public/plugin.ts b/x-pack/plugins/security_solution_serverless/public/plugin.ts index 8ea73d406cb3e..40e58473126c8 100644 --- a/x-pack/plugins/security_solution_serverless/public/plugin.ts +++ b/x-pack/plugins/security_solution_serverless/public/plugin.ts @@ -78,6 +78,9 @@ export class SecuritySolutionServerlessPlugin securitySolution.setOnboardingPageSettings.setProjectsUrl( getCloudUrl('projects', services.cloud) ); + securitySolution.setOnboardingPageSettings.setUserSettingsUrl( + getCloudUrl('usersAndRoles', services.cloud) + ); setOnboardingSettings(services); startNavigation(services); From eb8ef05ebabdf14abdafe9b58329a471c32bcb7b Mon Sep 17 00:00:00 2001 From: Agustina Nahir Ruidiaz Date: Mon, 2 Sep 2024 10:39:09 +0200 Subject: [PATCH 02/13] cards + video --- .../content/data_ingestion_hub_video.tsx | 77 +++++++++++++ .../{cards.ts => cards.tsx} | 26 +++-- .../data_ingestion_hub_header_card.styles.ts | 12 +- .../data_ingestion_hub_header_card.test.ts | 10 -- .../data_ingestion_hub_header_card.test.tsx | 105 ++++++++++++++++++ .../data_ingestion_hub_header_card.tsx | 35 ++++-- .../data_ingestion_hub_video_modal.styles.ts | 28 +++++ .../data_ingestion_hub_video_modal.tsx | 75 +++++++++++++ .../index.styles.ts} | 0 .../data_ingestion_hub_header/index.test.tsx | 50 +++++++-- .../data_ingestion_hub_header/index.tsx | 49 +++++++- .../data_ingestion_hub_header/translations.ts | 22 ++++ .../landing_page/onboarding/onboarding.tsx | 23 +++- 13 files changed, 468 insertions(+), 44 deletions(-) create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/card_step/content/data_ingestion_hub_video.tsx rename x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/{cards.ts => cards.tsx} (75%) rename x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/{styles => data_ingestion_hub_header}/data_ingestion_hub_header_card.styles.ts (87%) delete mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_header_card.test.tsx create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_video_modal.styles.ts create mode 100644 x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/data_ingestion_hub_header/data_ingestion_hub_video_modal.tsx rename x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/{styles/data_ingestion_hub_header.styles.ts => data_ingestion_hub_header/index.styles.ts} (100%) diff --git a/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/card_step/content/data_ingestion_hub_video.tsx b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/card_step/content/data_ingestion_hub_video.tsx new file mode 100644 index 0000000000000..a980683f2328b --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/components/landing_page/onboarding/card_step/content/data_ingestion_hub_video.tsx @@ -0,0 +1,77 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiIcon, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; +import React, { useCallback } from 'react'; +import { VIDEO_SOURCE } from '../../../../empty_prompt/constants'; +import { WATCH_VIDEO_BUTTON_TITLE } from '../../translations'; + +const VIDEO_CONTENT_HEIGHT = 309; + +const DataIngestionHubVideoComponent: React.FC = () => { + const ref = React.useRef(null); + const [isVideoPlaying, setIsVideoPlaying] = React.useState(false); + const { euiTheme } = useEuiTheme(); + + const onVideoClicked = useCallback(() => { + setIsVideoPlaying(true); + }, []); + + return ( +
+
+ {isVideoPlaying && ( + + + + + + )} + {!isVideoPlaying && ( +